From 3bd487acd9018d7c9f1276977e9df408c5362cba Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Fri, 11 Jul 2014 09:35:39 +0200 Subject: [PATCH] Imported Bugzilla 3.5.3. --- Bugzilla.pm | 69 +- Bugzilla/Attachment.pm | 2 +- Bugzilla/Attachment/CVS/Entries | 2 +- Bugzilla/Attachment/CVS/Tag | 2 +- Bugzilla/Auth.pm | 56 +- Bugzilla/Auth/CVS/Entries | 4 +- Bugzilla/Auth/CVS/Tag | 2 +- Bugzilla/Auth/Login/CVS/Entries | 8 +- Bugzilla/Auth/Login/CVS/Tag | 2 +- Bugzilla/Auth/Login/Cookie.pm | 2 +- Bugzilla/Auth/Login/Env.pm | 1 + Bugzilla/Auth/Login/Stack.pm | 2 +- Bugzilla/Auth/Persist/CVS/Entries | 2 +- Bugzilla/Auth/Persist/CVS/Tag | 2 +- Bugzilla/Auth/Persist/Cookie.pm | 2 +- Bugzilla/Auth/Verify/CVS/Entries | 8 +- Bugzilla/Auth/Verify/CVS/Tag | 2 +- Bugzilla/Auth/Verify/DB.pm | 46 +- Bugzilla/Auth/Verify/LDAP.pm | 33 +- Bugzilla/Auth/Verify/Stack.pm | 2 +- Bugzilla/Bug.pm | 235 +- Bugzilla/BugMail.pm | 2 +- Bugzilla/CGI.pm | 18 +- Bugzilla/CVS/Entries | 75 +- Bugzilla/CVS/Tag | 2 +- Bugzilla/Comment.pm | 113 +- Bugzilla/Config.pm | 34 +- Bugzilla/Config/Admin.pm | 2 +- Bugzilla/Config/Advanced.pm | 57 + Bugzilla/Config/Attachment.pm | 2 +- Bugzilla/Config/Auth.pm | 2 +- Bugzilla/Config/BugChange.pm | 2 +- Bugzilla/Config/BugFields.pm | 2 +- Bugzilla/Config/BugMove.pm | 2 +- Bugzilla/Config/CVS/Entries | 36 +- Bugzilla/Config/CVS/Tag | 2 +- Bugzilla/Config/Common.pm | 11 +- Bugzilla/Config/Core.pm | 69 +- Bugzilla/Config/DependencyGraph.pm | 2 +- Bugzilla/Config/General.pm | 82 + Bugzilla/Config/GroupSecurity.pm | 2 +- Bugzilla/Config/LDAP.pm | 2 +- Bugzilla/Config/MTA.pm | 2 +- Bugzilla/Config/PatchViewer.pm | 2 +- Bugzilla/Config/Query.pm | 2 +- Bugzilla/Config/RADIUS.pm | 2 +- Bugzilla/Config/ShadowDB.pm | 2 +- Bugzilla/Config/UserMatch.pm | 2 +- Bugzilla/Constants.pm | 18 +- Bugzilla/DB.pm | 8 + Bugzilla/DB/CVS/Entries | 8 +- Bugzilla/DB/CVS/Tag | 2 +- Bugzilla/DB/Mysql.pm | 8 +- Bugzilla/DB/Oracle.pm | 4 + Bugzilla/DB/Pg.pm | 16 +- Bugzilla/DB/Schema.pm | 38 +- Bugzilla/DB/Schema/CVS/Entries | 6 +- Bugzilla/DB/Schema/CVS/Tag | 2 +- Bugzilla/Error.pm | 4 +- Bugzilla/Extension.pm | 786 + Bugzilla/Field/CVS/Entries | 2 +- Bugzilla/Field/CVS/Tag | 2 +- Bugzilla/Flag.pm | 6 +- Bugzilla/Group.pm | 187 +- Bugzilla/Hook.pm | 352 +- Bugzilla/Install.pm | 7 + Bugzilla/Install/CVS/Entries | 12 +- Bugzilla/Install/CVS/Tag | 2 +- Bugzilla/Install/DB.pm | 167 +- Bugzilla/Install/Filesystem.pm | 164 +- Bugzilla/Install/Requirements.pm | 51 +- Bugzilla/Install/Util.pm | 302 +- Bugzilla/Job/CVS/Entries | 2 +- Bugzilla/Job/CVS/Tag | 2 +- Bugzilla/JobQueue.pm | 4 +- Bugzilla/JobQueue/CVS/Entries | 2 +- Bugzilla/JobQueue/CVS/Tag | 2 +- Bugzilla/Mailer.pm | 3 +- Bugzilla/Migrate/CVS/Entries | 2 +- Bugzilla/Migrate/CVS/Tag | 2 +- Bugzilla/Object.pm | 12 +- Bugzilla/Product.pm | 44 +- Bugzilla/Search.pm | 19 +- Bugzilla/Search/CVS/Entries | 4 +- Bugzilla/Search/CVS/Tag | 2 +- Bugzilla/Search/Quicksearch.pm | 259 +- Bugzilla/Status.pm | 33 - Bugzilla/Template.pm | 157 +- Bugzilla/Template/CVS/Entries | 1 + Bugzilla/Template/CVS/Tag | 2 +- Bugzilla/Template/Context.pm | 104 + Bugzilla/Template/Plugin/CVS/Entries | 6 +- Bugzilla/Template/Plugin/CVS/Tag | 2 +- Bugzilla/Template/Plugin/Hook.pm | 117 +- Bugzilla/Token.pm | 4 +- Bugzilla/User.pm | 288 +- Bugzilla/User/CVS/Entries | 2 +- Bugzilla/User/CVS/Tag | 2 +- Bugzilla/User/Setting/CVS/Entries | 6 +- Bugzilla/User/Setting/CVS/Tag | 2 +- Bugzilla/Util.pm | 27 +- Bugzilla/WebService/Bug.pm | 511 +- Bugzilla/WebService/Bugzilla.pm | 39 +- Bugzilla/WebService/CVS/Entries | 16 +- Bugzilla/WebService/CVS/Tag | 2 +- Bugzilla/WebService/Server/CVS/Entries | 4 +- Bugzilla/WebService/Server/CVS/Tag | 2 +- Bugzilla/Whine/CVS/Entries | 3 +- Bugzilla/Whine/CVS/Tag | 2 +- Bugzilla/Whine/Query.pm | 136 + CVS/Entries | 142 +- CVS/Tag | 2 +- attachment.cgi | 73 +- buglist.cgi | 4 +- checksetup.pl | 2 +- colchange.cgi | 2 +- contrib/.cvsignore | 1 + contrib/CVS/Entries | 31 +- contrib/CVS/Tag | 2 +- contrib/bugzilla-submit/CVS/Entries | 8 +- contrib/bugzilla-submit/CVS/Tag | 2 +- contrib/cmdline/CVS/Entries | 14 +- contrib/cmdline/CVS/Tag | 2 +- contrib/console.pl | 186 + contrib/extension-convert.pl | 303 + docs/CVS/Entries | 4 +- docs/CVS/Tag | 2 +- docs/bugzilla.ent | 2 +- docs/en/CVS/Entries | 6 +- docs/en/CVS/Tag | 2 +- docs/en/html/Bugzilla-Guide.html | 477 +- docs/en/html/about.html | 8 +- docs/en/html/administration.html | 4 +- docs/en/html/api/Bugzilla.html | 14 +- docs/en/html/api/Bugzilla/Auth.html | 17 + docs/en/html/api/Bugzilla/Extension.html | 535 + docs/en/html/api/Bugzilla/Group.html | 52 + docs/en/html/api/Bugzilla/Hook.html | 378 +- .../html/api/Bugzilla/Install/Filesystem.html | 9 + docs/en/html/api/Bugzilla/Product.html | 4 +- docs/en/html/api/Bugzilla/Status.html | 13 - .../api/Bugzilla/Template/Plugin/Hook.html | 10 +- docs/en/html/api/Bugzilla/User.html | 66 + docs/en/html/api/Bugzilla/WebService/Bug.html | 487 +- .../api/Bugzilla/WebService/Bugzilla.html | 66 +- docs/en/html/api/Bugzilla/Whine/Query.html | 126 + docs/en/html/api/contrib/console.html | 64 + .../html/api/contrib/extension-convert.html | 38 + docs/en/html/api/email_in.html | 32 +- docs/en/html/api/extensions/create.html | 38 + docs/en/html/api/index.html | 113 +- docs/en/html/attachments.html | 4 +- docs/en/html/bug_page.html | 4 +- docs/en/html/bug_status_workflow.html | 4 +- docs/en/html/bugreports.html | 4 +- docs/en/html/classifications.html | 4 +- docs/en/html/cmdline-bugmail.html | 4 +- docs/en/html/cmdline.html | 4 +- docs/en/html/components.html | 4 +- docs/en/html/configuration.html | 4 +- docs/en/html/conventions.html | 4 +- docs/en/html/copyright.html | 6 +- docs/en/html/credits.html | 4 +- docs/en/html/cust-change-permissions.html | 14 +- docs/en/html/cust-hooks.html | 530 - docs/en/html/cust-skins.html | 16 +- docs/en/html/cust-templates.html | 30 +- docs/en/html/custom-fields.html | 4 +- docs/en/html/customization.html | 38 +- docs/en/html/disclaimer.html | 4 +- docs/en/html/edit-values.html | 4 +- docs/en/html/extensions.html | 163 + docs/en/html/extraconfig.html | 4 +- docs/en/html/flags-overview.html | 4 +- docs/en/html/flags.html | 4 +- docs/en/html/general-advice.html | 4 +- docs/en/html/gfdl-0.html | 4 +- docs/en/html/gfdl-1.html | 4 +- docs/en/html/gfdl-10.html | 4 +- docs/en/html/gfdl-2.html | 4 +- docs/en/html/gfdl-3.html | 4 +- docs/en/html/gfdl-4.html | 4 +- docs/en/html/gfdl-5.html | 4 +- docs/en/html/gfdl-6.html | 4 +- docs/en/html/gfdl-7.html | 4 +- docs/en/html/gfdl-8.html | 4 +- docs/en/html/gfdl-9.html | 4 +- docs/en/html/gfdl-howto.html | 6 +- docs/en/html/gfdl.html | 6 +- docs/en/html/glossary.html | 8 +- docs/en/html/groups.html | 4 +- docs/en/html/hintsandtips.html | 4 +- docs/en/html/index.html | 18 +- docs/en/html/install-perlmodules-manual.html | 4 +- docs/en/html/installation.html | 8 +- docs/en/html/installing-bugzilla.html | 4 +- docs/en/html/integration.html | 8 +- docs/en/html/keywords.html | 4 +- docs/en/html/lifecycle.html | 4 +- docs/en/html/milestones.html | 4 +- docs/en/html/modules-manual-download.html | 4 +- docs/en/html/modules-manual-instructions.html | 4 +- docs/en/html/modules-manual-optional.html | 4 +- docs/en/html/multiple-bz-dbs.html | 4 +- docs/en/html/myaccount.html | 4 +- docs/en/html/newversions.html | 6 +- docs/en/html/nonroot.html | 4 +- docs/en/html/os-specific.html | 4 +- docs/en/html/parameters.html | 4 +- docs/en/html/paranoid-security.html | 4 +- docs/en/html/patches.html | 4 +- docs/en/html/products.html | 4 +- docs/en/html/query.html | 4 +- docs/en/html/quips.html | 4 +- docs/en/html/reporting.html | 4 +- docs/en/html/sanitycheck.html | 4 +- docs/en/html/security-bugzilla.html | 4 +- docs/en/html/security-os.html | 4 +- docs/en/html/security-webserver.html | 4 +- docs/en/html/security.html | 4 +- docs/en/html/timetracking.html | 4 +- docs/en/html/trbl-dbdsponge.html | 4 +- docs/en/html/trbl-index.html | 4 +- docs/en/html/trbl-passwd-encryption.html | 4 +- docs/en/html/trbl-perlmodule.html | 4 +- docs/en/html/trbl-relogin-everyone.html | 8 +- docs/en/html/trbl-testserver.html | 4 +- docs/en/html/troubleshooting.html | 4 +- docs/en/html/upgrade.html | 6 +- docs/en/html/useradmin.html | 4 +- docs/en/html/userpreferences.html | 4 +- docs/en/html/using-intro.html | 4 +- docs/en/html/using.html | 4 +- docs/en/html/versions.html | 4 +- docs/en/html/voting.html | 4 +- docs/en/html/whining.html | 4 +- docs/en/images/CVS/Entries | 12 +- docs/en/images/CVS/Tag | 2 +- docs/en/images/callouts/CVS/Entries | 6 +- docs/en/images/callouts/CVS/Tag | 2 +- docs/en/pdf/Bugzilla-Guide.pdf | 15081 ++++++++-------- docs/en/txt/Bugzilla-Guide.txt | 208 +- docs/en/xml/Bugzilla-Guide.xml | 6 +- docs/en/xml/CVS/Entries | 30 +- docs/en/xml/CVS/Tag | 2 +- docs/en/xml/bugzilla.ent | 2 +- docs/en/xml/customization.xml | 256 +- docs/lib/CVS/Tag | 2 +- docs/lib/Pod/CVS/Tag | 2 +- docs/lib/Pod/Simple/CVS/Tag | 2 +- docs/lib/Pod/Simple/HTML/CVS/Entries | 2 +- docs/lib/Pod/Simple/HTML/CVS/Tag | 2 +- docs/lib/Pod/Simple/HTMLBatch/CVS/Entries | 2 +- docs/lib/Pod/Simple/HTMLBatch/CVS/Tag | 2 +- editcomponents.cgi | 4 +- editflagtypes.cgi | 12 +- editgroups.cgi | 156 +- editparams.cgi | 2 +- editproducts.cgi | 42 +- editusers.cgi | 7 +- editwhines.cgi | 57 +- email_in.pl | 168 +- enter_bug.cgi | 11 +- extensions/BmpConvert/CVS/Entries | 4 + extensions/BmpConvert/CVS/Repository | 1 + .../{bmp_convert => BmpConvert}/CVS/Root | 0 extensions/BmpConvert/CVS/Tag | 1 + .../Config.pm} | 25 +- extensions/BmpConvert/Extension.pm | 57 + .../{bmp_convert => BmpConvert}/disabled | 0 extensions/CVS/Entries | 5 +- extensions/CVS/Tag | 2 +- extensions/Example/CVS/Entries | 5 + extensions/Example/CVS/Repository | 1 + .../{bmp_convert/code => Example}/CVS/Root | 0 extensions/Example/CVS/Tag | 1 + extensions/Example/Config.pm | 42 + extensions/Example/Extension.pm | 473 + extensions/{example => Example}/disabled | 0 extensions/Example/lib/Auth/CVS/Entries | 3 + extensions/Example/lib/Auth/CVS/Repository | 1 + .../{example => Example/lib/Auth}/CVS/Root | 0 extensions/Example/lib/Auth/CVS/Tag | 1 + .../lib/Auth/Login.pm} | 2 +- .../lib/Auth/Verify.pm} | 2 +- extensions/Example/lib/CVS/Entries | 4 + extensions/Example/lib/CVS/Repository | 1 + .../{example/code => Example/lib}/CVS/Root | 0 extensions/Example/lib/CVS/Tag | 1 + .../lib/Config.pm} | 2 +- .../lib/Util.pm} | 11 +- .../lib/WebService.pm} | 2 +- .../{example => Example}/template/CVS/Entries | 0 extensions/Example/template/CVS/Repository | 1 + .../Bugzilla => Example/template}/CVS/Root | 0 extensions/Example/template/CVS/Tag | 1 + extensions/Example/template/en/CVS/Entries | 1 + extensions/Example/template/en/CVS/Repository | 1 + .../lib => Example/template/en}/CVS/Root | 0 extensions/Example/template/en/CVS/Tag | 1 + .../template/en/default/CVS/Entries | 2 + .../template/en/default/CVS/Repository | 1 + .../template/en/default}/CVS/Root | 0 .../Example/template/en/default/CVS/Tag | 1 + .../template/en/default/admin/CVS/Entries | 0 .../template/en/default/admin/CVS/Repository | 1 + .../template/en/default/admin}/CVS/Root | 0 .../Example/template/en/default/admin/CVS/Tag | 1 + .../en/default/admin/params/CVS/Entries | 2 + .../en/default/admin/params/CVS/Repository | 1 + .../en/default/admin/params}/CVS/Root | 0 .../template/en/default/admin/params/CVS/Tag | 1 + .../en/default/admin/params/example.html.tmpl | 0 .../template/en/default/hook}/CVS/Entries | 1 - .../template/en/default/hook/CVS/Repository | 1 + .../template/en/default/hook}/CVS/Root | 0 .../Example/template/en/default/hook/CVS/Tag | 1 + .../en/default/hook}/admin/CVS/Entries | 0 .../en/default/hook/admin/CVS/Repository | 1 + .../template/en/default/hook/admin}/CVS/Root | 0 .../template/en/default/hook/admin/CVS/Tag | 1 + .../hook/admin/sanitycheck/CVS/Entries | 2 + .../hook/admin/sanitycheck/CVS/Repository | 1 + .../default/hook/admin/sanitycheck}/CVS/Root | 0 .../en/default/hook/admin/sanitycheck/CVS/Tag | 1 + .../sanitycheck/messages-statuses.html.tmpl | 0 .../en/default/hook/global/CVS/Entries | 2 + .../en/default/hook/global/CVS/Repository | 1 + .../template/en/default/hook/global}/CVS/Root | 0 .../template/en/default/hook/global/CVS/Tag | 1 + .../hook}/global/user-error-errors.html.tmpl | 0 .../template/en/default/pages/CVS/Entries | 2 + .../template/en/default/pages/CVS/Repository | 1 + .../template/en/default/pages/CVS/Root | 0 .../Example/template/en/default/pages/CVS/Tag | 1 + .../en/default/pages/example.html.tmpl | 0 .../template/en/default/setup/CVS/Entries | 2 + .../template/en/default/setup/CVS/Repository | 1 + .../template/en/default/setup}/CVS/Root | 0 .../Example/template/en/default/setup/CVS/Tag | 1 + .../template/en/default/setup/strings.txt.pl} | 23 +- extensions/bmp_convert/CVS/Entries | 3 - extensions/bmp_convert/CVS/Repository | 1 - extensions/bmp_convert/CVS/Tag | 1 - extensions/bmp_convert/code/CVS/Entries | 2 - extensions/bmp_convert/code/CVS/Repository | 1 - extensions/bmp_convert/code/CVS/Tag | 1 - .../code/attachment-process_data.pl | 48 - extensions/bmp_convert/info.pl | 27 - extensions/create.pl | 85 + extensions/example/CVS/Entries | 5 - extensions/example/CVS/Repository | 1 - extensions/example/CVS/Tag | 1 - extensions/example/code/CVS/Entries | 28 - extensions/example/code/CVS/Repository | 1 - extensions/example/code/CVS/Tag | 1 - .../example/code/attachment-process_data.pl | 42 - extensions/example/code/auth-login_methods.pl | 27 - .../example/code/auth-verify_methods.pl | 27 - extensions/example/code/bug-columns.pl | 27 - extensions/example/code/bug-end_of_create.pl | 35 - .../code/bug-end_of_create_validators.pl | 37 - extensions/example/code/bug-end_of_update.pl | 56 - extensions/example/code/bug-fields.pl | 27 - extensions/example/code/bug-format_comment.pl | 45 - extensions/example/code/buglist-columns.pl | 26 - extensions/example/code/colchange-columns.pl | 27 - extensions/example/code/config-add_panels.pl | 25 - .../example/code/config-modify_panels.pl | 32 - extensions/example/code/config.pl | 26 - extensions/example/code/flag-end_of_update.pl | 42 - .../code/install-before_final_checks.pl | 28 - .../example/code/object-before_create.pl | 33 - extensions/example/code/object-before_set.pl | 34 - .../code/object-end_of_create_validators.pl | 34 - .../example/code/page-before_template.pl | 33 - .../example/code/product-confirm_delete.pl | 26 - extensions/example/code/sanitycheck-check.pl | 44 - extensions/example/code/sanitycheck-repair.pl | 38 - .../example/code/template-before_process.pl | 33 - extensions/example/info.pl | 41 - extensions/example/lib/Bugzilla/CVS/Entries | 2 - .../example/lib/Bugzilla/CVS/Repository | 1 - extensions/example/lib/Bugzilla/CVS/Tag | 1 - .../example/lib/Bugzilla/ExampleHook.pm | 43 - extensions/example/lib/CVS/Entries | 5 - extensions/example/lib/CVS/Repository | 1 - extensions/example/lib/CVS/Tag | 1 - extensions/example/template/CVS/Repository | 1 - extensions/example/template/CVS/Tag | 1 - extensions/example/template/en/CVS/Repository | 1 - extensions/example/template/en/CVS/Tag | 1 - .../example/template/en/admin/CVS/Repository | 1 - extensions/example/template/en/admin/CVS/Tag | 1 - .../template/en/admin/sanitycheck/CVS/Entries | 2 - .../en/admin/sanitycheck/CVS/Repository | 1 - .../template/en/admin/sanitycheck/CVS/Tag | 1 - .../template/en/default/CVS/Repository | 1 - .../example/template/en/default/CVS/Tag | 1 - .../template/en/default/admin/CVS/Repository | 1 - .../example/template/en/default/admin/CVS/Tag | 1 - .../en/default/admin/params/CVS/Entries | 2 - .../en/default/admin/params/CVS/Repository | 1 - .../template/en/default/admin/params/CVS/Tag | 1 - .../template/en/default/pages/CVS/Entries | 2 - .../template/en/default/pages/CVS/Repository | 1 - .../example/template/en/default/pages/CVS/Tag | 1 - .../example/template/en/global/CVS/Entries | 2 - .../example/template/en/global/CVS/Repository | 1 - extensions/example/template/en/global/CVS/Tag | 1 - images/CVS/Entries | 4 +- images/CVS/Tag | 2 +- importxml.pl | 4 +- js/CVS/Entries | 21 +- js/CVS/Tag | 2 +- js/flag.js | 75 + js/yui/CVS/Entries | 6 +- js/yui/CVS/Tag | 2 +- lib/CVS/Entries | 2 +- lib/CVS/Tag | 2 +- mod_perl.pl | 27 +- page.cgi | 2 +- post_bug.cgi | 31 +- process_bug.cgi | 91 +- query.cgi | 2 +- request.cgi | 2 +- sanitycheck.cgi | 7 +- skins/CVS/Entries | 2 +- skins/CVS/Tag | 2 +- skins/contrib/CVS/Tag | 2 +- skins/contrib/Dusk/.cvsignore | 1 + skins/contrib/Dusk/CVS/Entries | 8 +- skins/contrib/Dusk/CVS/Tag | 2 +- skins/contrib/Dusk/index/CVS/Entries | 6 +- skins/contrib/Dusk/index/CVS/Tag | 2 +- skins/standard/CVS/Entries | 35 +- skins/standard/CVS/Tag | 2 +- skins/standard/IE-fixes.css | 4 + skins/standard/dependency-tree/CVS/Entries | 8 +- skins/standard/dependency-tree/CVS/Tag | 2 +- skins/standard/global.css | 22 +- skins/standard/global/CVS/Entries | 14 +- skins/standard/global/CVS/Tag | 2 +- skins/standard/index/CVS/Entries | 6 +- skins/standard/index/CVS/Tag | 2 +- skins/standard/reports.css | 89 + skins/standard/show_bug.css | 20 + skins/standard/yui/CVS/Entries | 4 +- skins/standard/yui/CVS/Tag | 2 +- t/.cvsignore | 1 + t/008filter.t | 2 +- t/CVS/Entries | 25 +- t/CVS/Tag | 2 +- t/Support/CVS/Entries | 6 +- t/Support/CVS/Tag | 2 +- t/Support/Files.pm | 1 + template/CVS/Entries | 2 +- template/CVS/Tag | 2 +- template/en/CVS/Entries | 3 +- template/en/CVS/Tag | 2 +- template/en/default/CVS/Entries | 13 +- 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 | 4 +- template/en/default/account/auth/CVS/Tag | 2 +- template/en/default/account/email/CVS/Entries | 10 +- 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 | 12 +- template/en/default/account/prefs/CVS/Tag | 2 +- template/en/default/admin/CVS/Entries | 8 +- template/en/default/admin/CVS/Tag | 2 +- .../default/admin/classifications/CVS/Entries | 12 +- .../en/default/admin/classifications/CVS/Tag | 2 +- .../en/default/admin/components/CVS/Entries | 12 +- template/en/default/admin/components/CVS/Tag | 2 +- .../default/admin/custom_fields/CVS/Entries | 10 +- .../en/default/admin/custom_fields/CVS/Tag | 2 +- .../en/default/admin/fieldvalues/CVS/Entries | 12 +- template/en/default/admin/fieldvalues/CVS/Tag | 2 +- .../fieldvalues/confirm-delete.html.tmpl | 2 +- .../en/default/admin/flag-type/CVS/Entries | 6 +- template/en/default/admin/flag-type/CVS/Tag | 2 +- template/en/default/admin/groups/CVS/Entries | 10 +- template/en/default/admin/groups/CVS/Tag | 2 +- .../en/default/admin/groups/delete.html.tmpl | 117 +- .../en/default/admin/keywords/CVS/Entries | 8 +- template/en/default/admin/keywords/CVS/Tag | 2 +- .../en/default/admin/milestones/CVS/Entries | 12 +- template/en/default/admin/milestones/CVS/Tag | 2 +- template/en/default/admin/params/CVS/Entries | 40 +- template/en/default/admin/params/CVS/Tag | 2 +- .../default/admin/params/advanced.html.tmpl | 50 + .../en/default/admin/params/core.html.tmpl | 68 +- .../default/admin/params/editparams.html.tmpl | 2 +- .../en/default/admin/params/general.html.tmpl | 86 + .../en/default/admin/products/CVS/Entries | 16 +- template/en/default/admin/products/CVS/Tag | 2 +- .../admin/products/confirm-delete.html.tmpl | 5 + .../default/admin/products/create.html.tmpl | 4 +- .../admin/products/edit-common.html.tmpl | 75 +- .../en/default/admin/products/edit.html.tmpl | 1 + .../admin/products/groupcontrol/CVS/Entries | 6 +- .../admin/products/groupcontrol/CVS/Tag | 2 +- .../default/admin/products/updated.html.tmpl | 37 +- .../en/default/admin/sanitycheck/CVS/Entries | 4 +- template/en/default/admin/sanitycheck/CVS/Tag | 2 +- .../en/default/admin/settings/CVS/Entries | 2 +- template/en/default/admin/settings/CVS/Tag | 2 +- template/en/default/admin/users/CVS/Entries | 16 +- template/en/default/admin/users/CVS/Tag | 2 +- .../en/default/admin/versions/CVS/Entries | 12 +- template/en/default/admin/versions/CVS/Tag | 2 +- .../en/default/admin/workflow/CVS/Entries | 4 +- template/en/default/admin/workflow/CVS/Tag | 2 +- template/en/default/attachment/CVS/Entries | 32 +- template/en/default/attachment/CVS/Tag | 2 +- .../en/default/attachment/create.html.tmpl | 5 +- .../en/default/attachment/created.html.tmpl | 16 +- template/en/default/attachment/edit.html.tmpl | 2 + .../en/default/attachment/updated.html.tmpl | 20 +- template/en/default/bug/CVS/Entries | 31 +- template/en/default/bug/CVS/Tag | 2 +- template/en/default/bug/activity/CVS/Entries | 4 +- template/en/default/bug/activity/CVS/Tag | 2 +- .../en/default/bug/activity/table.html.tmpl | 4 + template/en/default/bug/comments.html.tmpl | 22 +- template/en/default/bug/create/CVS/Entries | 16 +- template/en/default/bug/create/CVS/Tag | 2 +- .../en/default/bug/create/create.html.tmpl | 30 +- .../en/default/bug/create/created.html.tmpl | 7 +- template/en/default/bug/edit.html.tmpl | 344 +- .../en/default/bug/format_comment.txt.tmpl | 21 +- template/en/default/bug/knob.html.tmpl | 123 +- template/en/default/bug/process/CVS/Entries | 12 +- template/en/default/bug/process/CVS/Tag | 2 +- .../en/default/bug/process/header.html.tmpl | 8 +- template/en/default/bug/show-header.html.tmpl | 50 + template/en/default/bug/show.html.tmpl | 24 +- template/en/default/bug/show.xml.tmpl | 3 + template/en/default/bug/votes/CVS/Entries | 6 +- template/en/default/bug/votes/CVS/Tag | 2 +- template/en/default/email/CVS/Entries | 11 +- template/en/default/email/CVS/Tag | 2 +- template/en/default/email/lockout.txt.tmpl | 39 + .../en/default/email/newchangedmail.txt.tmpl | 4 +- template/en/default/email/whine.txt.tmpl | 6 +- template/en/default/extensions/CVS/Entries | 7 + template/en/default/extensions/CVS/Repository | 1 + .../extensions}/CVS/Root | 0 template/en/default/extensions/CVS/Tag | 1 + template/en/default/extensions/config.pm.tmpl | 41 + .../en/default/extensions/extension.pm.tmpl | 46 + .../default/extensions/hook-readme.txt.tmpl | 27 + .../en/default/extensions/license.txt.tmpl | 47 + .../default/extensions/name-readme.txt.tmpl | 38 + template/en/default/extensions/util.pm.tmpl | 42 + template/en/default/filterexceptions.pl | 4 - template/en/default/flag/CVS/Entries | 2 +- template/en/default/flag/CVS/Tag | 2 +- template/en/default/flag/list.html.tmpl | 56 +- template/en/default/global/CVS/Entries | 58 +- template/en/default/global/CVS/Tag | 2 +- .../en/default/global/code-error.html.tmpl | 52 +- .../global/confirm-user-match.html.tmpl | 26 +- template/en/default/global/messages.html.tmpl | 7 +- .../en/default/global/user-error.html.tmpl | 80 +- template/en/default/index.html.tmpl | 2 +- template/en/default/list/CVS/Entries | 24 +- template/en/default/list/CVS/Tag | 2 +- .../en/default/list/edit-multiple.html.tmpl | 2 + template/en/default/list/table.html.tmpl | 17 +- template/en/default/pages/CVS/Entries | 18 +- template/en/default/pages/CVS/Tag | 2 +- .../en/default/pages/release-notes.html.tmpl | 35 + template/en/default/reports/CVS/Entries | 46 +- template/en/default/reports/CVS/Tag | 2 +- .../en/default/reports/components.html.tmpl | 55 +- template/en/default/request/CVS/Entries | 4 +- template/en/default/request/CVS/Tag | 2 +- template/en/default/request/queue.html.tmpl | 17 +- template/en/default/search/CVS/Entries | 26 +- template/en/default/search/CVS/Tag | 2 +- template/en/default/search/form.html.tmpl | 38 +- template/en/default/setup/CVS/Entries | 2 +- template/en/default/setup/CVS/Tag | 2 +- template/en/default/setup/strings.txt.pl | 6 +- template/en/default/welcome-admin.html.tmpl | 9 +- template/en/default/whine/CVS/Entries | 8 +- template/en/default/whine/CVS/Tag | 2 +- template/en/default/whine/mail.html.tmpl | 6 +- template/en/default/whine/mail.txt.tmpl | 6 +- template/en/extension/CVS/Entries | 2 - template/en/extension/CVS/Repository | 1 - template/en/extension/CVS/Tag | 1 - template/en/extension/filterexceptions.pl | 42 - userprefs.cgi | 2 +- whine.pl | 1 - 600 files changed, 16831 insertions(+), 13648 deletions(-) create mode 100644 Bugzilla/Config/Advanced.pm create mode 100644 Bugzilla/Config/General.pm create mode 100644 Bugzilla/Extension.pm create mode 100644 Bugzilla/Template/Context.pm create mode 100644 Bugzilla/Whine/Query.pm create mode 100644 contrib/.cvsignore create mode 100644 contrib/console.pl create mode 100644 contrib/extension-convert.pl create mode 100644 docs/en/html/api/Bugzilla/Extension.html create mode 100644 docs/en/html/api/Bugzilla/Whine/Query.html create mode 100644 docs/en/html/api/contrib/console.html create mode 100644 docs/en/html/api/contrib/extension-convert.html create mode 100644 docs/en/html/api/extensions/create.html delete mode 100644 docs/en/html/cust-hooks.html create mode 100644 docs/en/html/extensions.html create mode 100644 extensions/BmpConvert/CVS/Entries create mode 100644 extensions/BmpConvert/CVS/Repository rename extensions/{bmp_convert => BmpConvert}/CVS/Root (100%) create mode 100644 extensions/BmpConvert/CVS/Tag rename extensions/{example/code/mailer-before_send.pl => BmpConvert/Config.pm} (65%) create mode 100644 extensions/BmpConvert/Extension.pm rename extensions/{bmp_convert => BmpConvert}/disabled (100%) create mode 100644 extensions/Example/CVS/Entries create mode 100644 extensions/Example/CVS/Repository rename extensions/{bmp_convert/code => Example}/CVS/Root (100%) create mode 100644 extensions/Example/CVS/Tag create mode 100644 extensions/Example/Config.pm create mode 100644 extensions/Example/Extension.pm rename extensions/{example => Example}/disabled (100%) create mode 100644 extensions/Example/lib/Auth/CVS/Entries create mode 100644 extensions/Example/lib/Auth/CVS/Repository rename extensions/{example => Example/lib/Auth}/CVS/Root (100%) create mode 100644 extensions/Example/lib/Auth/CVS/Tag rename extensions/{example/lib/AuthLogin.pm => Example/lib/Auth/Login.pm} (95%) rename extensions/{example/lib/AuthVerify.pm => Example/lib/Auth/Verify.pm} (94%) create mode 100644 extensions/Example/lib/CVS/Entries create mode 100644 extensions/Example/lib/CVS/Repository rename extensions/{example/code => Example/lib}/CVS/Root (100%) create mode 100644 extensions/Example/lib/CVS/Tag rename extensions/{example/lib/ConfigExample.pm => Example/lib/Config.pm} (95%) rename extensions/{example/code/webservice-error_codes.pl => Example/lib/Util.pm} (85%) rename extensions/{example/lib/WSExample.pm => Example/lib/WebService.pm} (95%) rename extensions/{example => Example}/template/CVS/Entries (100%) create mode 100644 extensions/Example/template/CVS/Repository rename extensions/{example/lib/Bugzilla => Example/template}/CVS/Root (100%) create mode 100644 extensions/Example/template/CVS/Tag create mode 100644 extensions/Example/template/en/CVS/Entries create mode 100644 extensions/Example/template/en/CVS/Repository rename extensions/{example/lib => Example/template/en}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/CVS/Tag rename extensions/{example => Example}/template/en/default/CVS/Entries (51%) create mode 100644 extensions/Example/template/en/default/CVS/Repository rename extensions/{example/template => Example/template/en/default}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/CVS/Tag rename extensions/{example => Example}/template/en/default/admin/CVS/Entries (100%) create mode 100644 extensions/Example/template/en/default/admin/CVS/Repository rename extensions/{example/template/en => Example/template/en/default/admin}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/admin/CVS/Tag create mode 100644 extensions/Example/template/en/default/admin/params/CVS/Entries create mode 100644 extensions/Example/template/en/default/admin/params/CVS/Repository rename extensions/{example/template/en/admin => Example/template/en/default/admin/params}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/admin/params/CVS/Tag rename extensions/{example => Example}/template/en/default/admin/params/example.html.tmpl (100%) rename extensions/{example/template/en => Example/template/en/default/hook}/CVS/Entries (64%) create mode 100644 extensions/Example/template/en/default/hook/CVS/Repository rename extensions/{example/template/en/admin/sanitycheck => Example/template/en/default/hook}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/hook/CVS/Tag rename extensions/{example/template/en => Example/template/en/default/hook}/admin/CVS/Entries (100%) create mode 100644 extensions/Example/template/en/default/hook/admin/CVS/Repository rename extensions/{example/template/en/default => Example/template/en/default/hook/admin}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/hook/admin/CVS/Tag create mode 100644 extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Entries create mode 100644 extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Repository rename extensions/{example/template/en/default/admin => Example/template/en/default/hook/admin/sanitycheck}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Tag rename extensions/{example/template/en => Example/template/en/default/hook}/admin/sanitycheck/messages-statuses.html.tmpl (100%) create mode 100644 extensions/Example/template/en/default/hook/global/CVS/Entries create mode 100644 extensions/Example/template/en/default/hook/global/CVS/Repository rename extensions/{example/template/en/default/admin/params => Example/template/en/default/hook/global}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/hook/global/CVS/Tag rename extensions/{example/template/en => Example/template/en/default/hook}/global/user-error-errors.html.tmpl (100%) create mode 100644 extensions/Example/template/en/default/pages/CVS/Entries create mode 100644 extensions/Example/template/en/default/pages/CVS/Repository rename extensions/{example => Example}/template/en/default/pages/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/pages/CVS/Tag rename extensions/{example => Example}/template/en/default/pages/example.html.tmpl (100%) create mode 100644 extensions/Example/template/en/default/setup/CVS/Entries create mode 100644 extensions/Example/template/en/default/setup/CVS/Repository rename extensions/{example/template/en/global => Example/template/en/default/setup}/CVS/Root (100%) create mode 100644 extensions/Example/template/en/default/setup/CVS/Tag rename extensions/{example/code/webservice.pl => Example/template/en/default/setup/strings.txt.pl} (62%) delete mode 100644 extensions/bmp_convert/CVS/Entries delete mode 100644 extensions/bmp_convert/CVS/Repository delete mode 100644 extensions/bmp_convert/CVS/Tag delete mode 100644 extensions/bmp_convert/code/CVS/Entries delete mode 100644 extensions/bmp_convert/code/CVS/Repository delete mode 100644 extensions/bmp_convert/code/CVS/Tag delete mode 100644 extensions/bmp_convert/code/attachment-process_data.pl delete mode 100644 extensions/bmp_convert/info.pl create mode 100644 extensions/create.pl delete mode 100644 extensions/example/CVS/Entries delete mode 100644 extensions/example/CVS/Repository delete mode 100644 extensions/example/CVS/Tag delete mode 100644 extensions/example/code/CVS/Entries delete mode 100644 extensions/example/code/CVS/Repository delete mode 100644 extensions/example/code/CVS/Tag delete mode 100644 extensions/example/code/attachment-process_data.pl delete mode 100644 extensions/example/code/auth-login_methods.pl delete mode 100644 extensions/example/code/auth-verify_methods.pl delete mode 100644 extensions/example/code/bug-columns.pl delete mode 100644 extensions/example/code/bug-end_of_create.pl delete mode 100644 extensions/example/code/bug-end_of_create_validators.pl delete mode 100644 extensions/example/code/bug-end_of_update.pl delete mode 100644 extensions/example/code/bug-fields.pl delete mode 100644 extensions/example/code/bug-format_comment.pl delete mode 100644 extensions/example/code/buglist-columns.pl delete mode 100644 extensions/example/code/colchange-columns.pl delete mode 100644 extensions/example/code/config-add_panels.pl delete mode 100644 extensions/example/code/config-modify_panels.pl delete mode 100644 extensions/example/code/config.pl delete mode 100644 extensions/example/code/flag-end_of_update.pl delete mode 100644 extensions/example/code/install-before_final_checks.pl delete mode 100644 extensions/example/code/object-before_create.pl delete mode 100644 extensions/example/code/object-before_set.pl delete mode 100644 extensions/example/code/object-end_of_create_validators.pl delete mode 100644 extensions/example/code/page-before_template.pl delete mode 100644 extensions/example/code/product-confirm_delete.pl delete mode 100644 extensions/example/code/sanitycheck-check.pl delete mode 100644 extensions/example/code/sanitycheck-repair.pl delete mode 100644 extensions/example/code/template-before_process.pl delete mode 100644 extensions/example/info.pl delete mode 100644 extensions/example/lib/Bugzilla/CVS/Entries delete mode 100644 extensions/example/lib/Bugzilla/CVS/Repository delete mode 100644 extensions/example/lib/Bugzilla/CVS/Tag delete mode 100644 extensions/example/lib/Bugzilla/ExampleHook.pm delete mode 100644 extensions/example/lib/CVS/Entries delete mode 100644 extensions/example/lib/CVS/Repository delete mode 100644 extensions/example/lib/CVS/Tag delete mode 100644 extensions/example/template/CVS/Repository delete mode 100644 extensions/example/template/CVS/Tag delete mode 100644 extensions/example/template/en/CVS/Repository delete mode 100644 extensions/example/template/en/CVS/Tag delete mode 100644 extensions/example/template/en/admin/CVS/Repository delete mode 100644 extensions/example/template/en/admin/CVS/Tag delete mode 100644 extensions/example/template/en/admin/sanitycheck/CVS/Entries delete mode 100644 extensions/example/template/en/admin/sanitycheck/CVS/Repository delete mode 100644 extensions/example/template/en/admin/sanitycheck/CVS/Tag delete mode 100644 extensions/example/template/en/default/CVS/Repository delete mode 100644 extensions/example/template/en/default/CVS/Tag delete mode 100644 extensions/example/template/en/default/admin/CVS/Repository delete mode 100644 extensions/example/template/en/default/admin/CVS/Tag delete mode 100644 extensions/example/template/en/default/admin/params/CVS/Entries delete mode 100644 extensions/example/template/en/default/admin/params/CVS/Repository delete mode 100644 extensions/example/template/en/default/admin/params/CVS/Tag delete mode 100644 extensions/example/template/en/default/pages/CVS/Entries delete mode 100644 extensions/example/template/en/default/pages/CVS/Repository delete mode 100644 extensions/example/template/en/default/pages/CVS/Tag delete mode 100644 extensions/example/template/en/global/CVS/Entries delete mode 100644 extensions/example/template/en/global/CVS/Repository delete mode 100644 extensions/example/template/en/global/CVS/Tag create mode 100644 js/flag.js create mode 100644 skins/standard/reports.css create mode 100644 t/.cvsignore create mode 100644 template/en/default/admin/params/advanced.html.tmpl create mode 100644 template/en/default/admin/params/general.html.tmpl create mode 100644 template/en/default/bug/show-header.html.tmpl create mode 100644 template/en/default/email/lockout.txt.tmpl create mode 100644 template/en/default/extensions/CVS/Entries create mode 100644 template/en/default/extensions/CVS/Repository rename template/en/{extension => default/extensions}/CVS/Root (100%) create mode 100644 template/en/default/extensions/CVS/Tag create mode 100644 template/en/default/extensions/config.pm.tmpl create mode 100644 template/en/default/extensions/extension.pm.tmpl create mode 100644 template/en/default/extensions/hook-readme.txt.tmpl create mode 100644 template/en/default/extensions/license.txt.tmpl create mode 100644 template/en/default/extensions/name-readme.txt.tmpl create mode 100644 template/en/default/extensions/util.pm.tmpl delete mode 100644 template/en/extension/CVS/Entries delete mode 100644 template/en/extension/CVS/Repository delete mode 100644 template/en/extension/CVS/Tag delete mode 100644 template/en/extension/filterexceptions.pl diff --git a/Bugzilla.pm b/Bugzilla.pm index 3c547b980..9f4e81cb6 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -40,9 +40,11 @@ use Bugzilla::Constants; use Bugzilla::Auth; use Bugzilla::Auth::Persist::Cookie; use Bugzilla::CGI; +use Bugzilla::Extension; use Bugzilla::DB; use Bugzilla::Install::Localconfig qw(read_localconfig); use Bugzilla::Install::Requirements qw(OPTIONAL_MODULES); +use Bugzilla::Install::Util; use Bugzilla::Template; use Bugzilla::User; use Bugzilla::Error; @@ -55,9 +57,6 @@ use File::Spec::Functions; use DateTime::TimeZone; use Safe; -# This creates the request cache for non-mod_perl installations. -our $_request_cache = {}; - ##################################################################### # Constants ##################################################################### @@ -171,8 +170,6 @@ sub init_page { } } -init_page() if !$ENV{MOD_PERL}; - ##################################################################### # Subroutines and Methods ##################################################################### @@ -193,6 +190,27 @@ sub template_inner { return $class->request_cache->{"template_inner_$lang"}; } +our $extension_packages; +sub extensions { + my ($class) = @_; + my $cache = $class->request_cache; + if (!$cache->{extensions}) { + # Under mod_perl, mod_perl.pl populates $extension_packages for us. + if (!$extension_packages) { + $extension_packages = Bugzilla::Extension->load_all(); + } + my @extensions; + foreach my $package (@$extension_packages) { + my $extension = $package->new(); + if ($extension->enabled) { + push(@extensions, $extension); + } + } + $cache->{extensions} = \@extensions; + } + return $cache->{extensions}; +} + sub feature { my ($class, $feature) = @_; my $cache = $class->request_cache; @@ -386,12 +404,17 @@ sub job_queue { sub dbh { my $class = shift; # If we're not connected, then we must want the main db - $class->request_cache->{dbh} ||= $class->request_cache->{dbh_main} - = Bugzilla::DB::connect_main(); + $class->request_cache->{dbh} ||= $class->dbh_main; return $class->request_cache->{dbh}; } +sub dbh_main { + my $class = shift; + $class->request_cache->{dbh_main} ||= Bugzilla::DB::connect_main(); + return $class->request_cache->{dbh_main}; +} + sub languages { my $class = shift; return $class->request_cache->{languages} @@ -487,7 +510,7 @@ sub switch_to_shadow_db { if ($class->params->{'shadowdb'}) { $class->request_cache->{dbh_shadow} = Bugzilla::DB::connect_shadow(); } else { - $class->request_cache->{dbh_shadow} = request_cache()->{dbh_main}; + $class->request_cache->{dbh_shadow} = $class->dbh_main; } } @@ -501,11 +524,8 @@ sub switch_to_shadow_db { sub switch_to_main_db { my $class = shift; - $class->request_cache->{dbh} = $class->request_cache->{dbh_main}; - # We have to return $class->dbh instead of {dbh} as - # {dbh_main} may be undefined if no connection to the main DB - # has been established yet. - return $class->dbh; + $class->request_cache->{dbh} = $class->dbh_main; + return $class->dbh_main; } sub get_fields { @@ -536,12 +556,6 @@ sub has_flags { return $class->request_cache->{has_flags}; } -sub hook_args { - my ($class, $args) = @_; - $class->request_cache->{hook_args} = $args if $args; - return $class->request_cache->{hook_args}; -} - sub local_timezone { my $class = shift; @@ -552,6 +566,12 @@ sub local_timezone { return $class->request_cache->{local_timezone}; } +# This creates the request cache for non-mod_perl installations. +# This is identical to Install::Util::_cache so that things loaded +# into Install::Util::_cache during installation can be read out +# of request_cache later in installation. +our $_request_cache = $Bugzilla::Install::Util::_cache; + sub request_cache { if ($ENV{MOD_PERL}) { require Apache2::RequestUtil; @@ -584,6 +604,8 @@ sub END { _cleanup() unless $ENV{MOD_PERL}; } +init_page() if !$ENV{MOD_PERL}; + 1; __END__ @@ -796,6 +818,10 @@ used to automatically answer or skip prompts. The current database handle. See L<DBI>. +=item C<dbh_main> + +The main database handle. See L<DBI>. + =item C<languages> Currently installed languages. @@ -815,11 +841,6 @@ The current Parameters of Bugzilla, as a hashref. If C<data/params> does not exist, then we return an empty hashref. If C<data/params> is unreadable or is not valid perl, we C<die>. -=item C<hook_args> - -If you are running inside a code hook (see L<Bugzilla::Hook>) this -is how you get the arguments passed to the hook. - =item C<local_timezone> Returns the local timezone of the Bugzilla installation, diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index 42372393c..f3210425f 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -561,7 +561,7 @@ sub _check_data { $data = <$fh>; } } - Bugzilla::Hook::process('attachment-process_data', { data => \$data, + Bugzilla::Hook::process('attachment_process_data', { data => \$data, attributes => $params }); # Do not validate the size if we have a filehandle. It will be checked later. diff --git a/Bugzilla/Attachment/CVS/Entries b/Bugzilla/Attachment/CVS/Entries index d0faa439d..79a2d2082 100644 --- a/Bugzilla/Attachment/CVS/Entries +++ b/Bugzilla/Attachment/CVS/Entries @@ -1,2 +1,2 @@ -/PatchReader.pm/1.6/Sun Jun 29 17:35:28 2008//TBUGZILLA-3_5_2 +/PatchReader.pm/1.6/Sun Jun 29 17:35:28 2008//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Attachment/CVS/Tag b/Bugzilla/Attachment/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Attachment/CVS/Tag +++ b/Bugzilla/Attachment/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Auth.pm b/Bugzilla/Auth.pm index 8e18f8699..b1da319a4 100644 --- a/Bugzilla/Auth.pm +++ b/Bugzilla/Auth.pm @@ -32,6 +32,9 @@ use fields qw( use Bugzilla::Constants; use Bugzilla::Error; +use Bugzilla::Mailer; +use Bugzilla::Util qw(datetime_from); +use Bugzilla::User::Setting (); use Bugzilla::Auth::Login::Stack; use Bugzilla::Auth::Verify::Stack; use Bugzilla::Auth::Persist::Cookie; @@ -162,7 +165,10 @@ sub _handle_login_result { # the password was just wrong. (This makes it harder for a cracker # to find account names by brute force) elsif ($fail_code == AUTH_LOGINFAILED or $fail_code == AUTH_NO_SUCH_USER) { - ThrowUserError("invalid_username_or_password"); + my $remaining_attempts = MAX_LOGIN_ATTEMPTS + - ($result->{failure_count} || 0); + ThrowUserError("invalid_username_or_password", + { remaining => $remaining_attempts }); } # The account may be disabled elsif ($fail_code == AUTH_DISABLED) { @@ -173,6 +179,40 @@ sub _handle_login_result { ThrowUserError("account_disabled", {'disabled_reason' => $result->{user}->disabledtext}); } + elsif ($fail_code == AUTH_LOCKOUT) { + my $attempts = $user->account_ip_login_failures; + + # We want to know when the account will be unlocked. This is + # determined by the 5th-from-last login failure (or more/less than + # 5th, if MAX_LOGIN_ATTEMPTS is not 5). + my $determiner = $attempts->[scalar(@$attempts) - MAX_LOGIN_ATTEMPTS]; + my $unlock_at = datetime_from($determiner->{login_time}, + Bugzilla->local_timezone); + $unlock_at->add(minutes => LOGIN_LOCKOUT_INTERVAL); + + # If we were *just* locked out, notify the maintainer about the + # lockout. + if ($result->{just_locked_out}) { + # We're sending to the maintainer, who may be not a Bugzilla + # account, but just an email address. So we use the + # installation's default language for sending the email. + my $default_settings = Bugzilla::User::Setting::get_defaults(); + my $template = Bugzilla->template_inner($default_settings->{lang}); + my $vars = { + locked_user => $user, + attempts => $attempts, + unlock_at => $unlock_at, + }; + my $message; + $template->process('email/lockout.txt.tmpl', $vars, \$message) + || ThrowTemplateError($template->error); + MessageToMTA($message); + } + + $unlock_at->set_time_zone($user->timezone); + ThrowUserError('account_locked', + { ip_addr => $determiner->{ip_addr}, unlock_at => $unlock_at }); + } # If we get here, then we've run out of options, which shouldn't happen. else { ThrowCodeError("authres_unhandled", { value => $fail_code }); @@ -234,6 +274,11 @@ various fields to be used in the error message. An incorrect username or password was given. +The hashref may also contain a C<failure_count> element, which specifies +how many times the account has failed to log in within the lockout +period (see L</AUTH_LOCKOUT>). This is used to warn the user when +he is getting close to being locked out. + =head2 C<AUTH_NO_SUCH_USER> This is an optional more-specific version of C<AUTH_LOGINFAILED>. @@ -251,6 +296,15 @@ should never be communicated to the user, for security reasons. The user successfully logged in, but their account has been disabled. Usually this is throw only by C<Bugzilla::Auth::login>. +=head2 C<AUTH_LOCKOUT> + +The user's account is locked out after having failed to log in too many +times within a certain period of time (as specified by +L<Bugzilla::Constants/LOGIN_LOCKOUT_INTERVAL>). + +The hashref will also contain a C<user> element, representing the +L<Bugzilla::User> whose account is locked out. + =head1 LOGIN TYPES The C<login> function (below) can do different types of login, depending diff --git a/Bugzilla/Auth/CVS/Entries b/Bugzilla/Auth/CVS/Entries index b3d6ed21f..46970953c 100644 --- a/Bugzilla/Auth/CVS/Entries +++ b/Bugzilla/Auth/CVS/Entries @@ -1,5 +1,5 @@ -/Login.pm/1.1/Fri May 12 02:41:05 2006//TBUGZILLA-3_5_2 -/Verify.pm/1.7/Wed May 23 18:05:49 2007//TBUGZILLA-3_5_2 +/Login.pm/1.1/Fri May 12 02:41:05 2006//TBUGZILLA-3_5_3 +/Verify.pm/1.7/Wed May 23 18:05:49 2007//TBUGZILLA-3_5_3 D/Login//// D/Persist//// D/Verify//// diff --git a/Bugzilla/Auth/CVS/Tag b/Bugzilla/Auth/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Auth/CVS/Tag +++ b/Bugzilla/Auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Auth/Login/CVS/Entries b/Bugzilla/Auth/Login/CVS/Entries index db68b145f..552919700 100644 --- a/Bugzilla/Auth/Login/CVS/Entries +++ b/Bugzilla/Auth/Login/CVS/Entries @@ -1,5 +1,5 @@ -/CGI.pm/1.14/Mon Nov 9 19:15:29 2009//TBUGZILLA-3_5_2 -/Cookie.pm/1.6/Sun Oct 18 23:34:57 2009//TBUGZILLA-3_5_2 -/Env.pm/1.4/Mon Jul 3 21:42:46 2006//TBUGZILLA-3_5_2 -/Stack.pm/1.3/Fri Apr 17 21:57:12 2009//TBUGZILLA-3_5_2 +/CGI.pm/1.14/Mon Nov 9 19:15:29 2009//TBUGZILLA-3_5_3 +/Cookie.pm/1.7/Thu Dec 31 12:53:20 2009//TBUGZILLA-3_5_3 +/Env.pm/1.5/Thu Dec 31 12:16:37 2009//TBUGZILLA-3_5_3 +/Stack.pm/1.4/Tue Nov 24 06:09:43 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Auth/Login/CVS/Tag b/Bugzilla/Auth/Login/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Auth/Login/CVS/Tag +++ b/Bugzilla/Auth/Login/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Auth/Login/Cookie.pm b/Bugzilla/Auth/Login/Cookie.pm index 0b002168e..570988f7e 100644 --- a/Bugzilla/Auth/Login/Cookie.pm +++ b/Bugzilla/Auth/Login/Cookie.pm @@ -35,7 +35,7 @@ sub get_login_info { my $cgi = Bugzilla->cgi; my $dbh = Bugzilla->dbh; - my $ip_addr = $cgi->remote_addr(); + my $ip_addr = remote_ip(); my $login_cookie = $cgi->cookie("Bugzilla_logincookie"); my $user_id = $cgi->cookie("Bugzilla_login"); diff --git a/Bugzilla/Auth/Login/Env.pm b/Bugzilla/Auth/Login/Env.pm index 180e79ba7..1f2739a88 100644 --- a/Bugzilla/Auth/Login/Env.pm +++ b/Bugzilla/Auth/Login/Env.pm @@ -29,6 +29,7 @@ use Bugzilla::Error; use constant can_logout => 0; use constant can_login => 0; +use constant requires_persistence => 0; use constant requires_verification => 0; sub get_login_info { diff --git a/Bugzilla/Auth/Login/Stack.pm b/Bugzilla/Auth/Login/Stack.pm index a5752f22b..bef9171c9 100644 --- a/Bugzilla/Auth/Login/Stack.pm +++ b/Bugzilla/Auth/Login/Stack.pm @@ -35,7 +35,7 @@ sub new { my $list = shift; my %methods = map { $_ => "Bugzilla/Auth/Login/$_.pm" } split(',', $list); lock_keys(%methods); - Bugzilla::Hook::process('auth-login_methods', { modules => \%methods }); + Bugzilla::Hook::process('auth_login_methods', { modules => \%methods }); $self->{_stack} = []; foreach my $login_method (split(',', $list)) { diff --git a/Bugzilla/Auth/Persist/CVS/Entries b/Bugzilla/Auth/Persist/CVS/Entries index 1dda973ad..20bf577bb 100644 --- a/Bugzilla/Auth/Persist/CVS/Entries +++ b/Bugzilla/Auth/Persist/CVS/Entries @@ -1,2 +1,2 @@ -/Cookie.pm/1.12/Mon Nov 9 19:15:29 2009//TBUGZILLA-3_5_2 +/Cookie.pm/1.13/Thu Dec 31 12:53:20 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Auth/Persist/CVS/Tag b/Bugzilla/Auth/Persist/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Auth/Persist/CVS/Tag +++ b/Bugzilla/Auth/Persist/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Auth/Persist/Cookie.pm b/Bugzilla/Auth/Persist/Cookie.pm index 1e1b3a871..232212075 100644 --- a/Bugzilla/Auth/Persist/Cookie.pm +++ b/Bugzilla/Auth/Persist/Cookie.pm @@ -52,7 +52,7 @@ sub persist_login { my $ip_addr; if ($input_params->{'Bugzilla_restrictlogin'}) { - $ip_addr = $cgi->remote_addr; + $ip_addr = remote_ip(); # The IP address is valid, at least for comparing with itself in a # subsequent login trick_taint($ip_addr); diff --git a/Bugzilla/Auth/Verify/CVS/Entries b/Bugzilla/Auth/Verify/CVS/Entries index f78d6258a..5d0ccdf78 100644 --- a/Bugzilla/Auth/Verify/CVS/Entries +++ b/Bugzilla/Auth/Verify/CVS/Entries @@ -1,5 +1,5 @@ -/DB.pm/1.10/Fri Jan 2 09:11:50 2009//TBUGZILLA-3_5_2 -/LDAP.pm/1.18/Mon Oct 20 18:35:51 2008//TBUGZILLA-3_5_2 -/RADIUS.pm/1.1/Thu Aug 2 22:38:37 2007//TBUGZILLA-3_5_2 -/Stack.pm/1.3/Fri Apr 17 21:57:19 2009//TBUGZILLA-3_5_2 +/DB.pm/1.11/Sun Dec 13 20:46:26 2009//TBUGZILLA-3_5_3 +/LDAP.pm/1.19/Tue Jan 5 08:32:53 2010//TBUGZILLA-3_5_3 +/RADIUS.pm/1.1/Thu Aug 2 22:38:37 2007//TBUGZILLA-3_5_3 +/Stack.pm/1.4/Tue Nov 24 06:09:43 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Auth/Verify/CVS/Tag b/Bugzilla/Auth/Verify/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Auth/Verify/CVS/Tag +++ b/Bugzilla/Auth/Verify/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Auth/Verify/DB.pm b/Bugzilla/Auth/Verify/DB.pm index 695671a31..d8794472e 100644 --- a/Bugzilla/Auth/Verify/DB.pm +++ b/Bugzilla/Auth/Verify/DB.pm @@ -41,37 +41,51 @@ sub check_credentials { my $dbh = Bugzilla->dbh; my $username = $login_data->{username}; - my $user_id = login_to_id($username); + my $user = new Bugzilla::User({ name => $username }); - return { failure => AUTH_NO_SUCH_USER } unless $user_id; + return { failure => AUTH_NO_SUCH_USER } unless $user; - $login_data->{bz_username} = $username; - my $password = $login_data->{password}; + $login_data->{user} = $user; + $login_data->{bz_username} = $user->login; + + if ($user->account_is_locked_out) { + return { failure => AUTH_LOCKOUT, user => $user }; + } - trick_taint($username); - my ($real_password_crypted) = $dbh->selectrow_array( - "SELECT cryptpassword FROM profiles WHERE userid = ?", - undef, $user_id); + my $password = $login_data->{password}; + my $real_password_crypted = $user->cryptpassword; # Using the internal crypted password as the salt, # crypt the password the user entered. my $entered_password_crypted = bz_crypt($password, $real_password_crypted); - - return { failure => AUTH_LOGINFAILED } - if $entered_password_crypted ne $real_password_crypted; + + if ($entered_password_crypted ne $real_password_crypted) { + # Record the login failure + $user->note_login_failure(); + + # Immediately check if we are locked out + if ($user->account_is_locked_out) { + return { failure => AUTH_LOCKOUT, user => $user, + just_locked_out => 1 }; + } + + return { failure => AUTH_LOGINFAILED, + failure_count => scalar(@{ $user->account_ip_login_failures }), + }; + } # The user's credentials are okay, so delete any outstanding - # password tokens they may have generated. - Bugzilla::Token::DeletePasswordTokens($user_id, "user_logged_in"); + # password tokens or login failures they may have generated. + Bugzilla::Token::DeletePasswordTokens($user->id, "user_logged_in"); + $user->clear_login_failures(); # If their old password was using crypt() or some different hash # than we're using now, convert the stored password to using # whatever hashing system we're using now. my $current_algorithm = PASSWORD_DIGEST_ALGORITHM; if ($real_password_crypted !~ /{\Q$current_algorithm\E}$/) { - my $new_crypted = bz_crypt($password); - $dbh->do('UPDATE profiles SET cryptpassword = ? WHERE userid = ?', - undef, $new_crypted, $user_id); + $user->set_password($password); + $user->update(); } return $login_data; diff --git a/Bugzilla/Auth/Verify/LDAP.pm b/Bugzilla/Auth/Verify/LDAP.pm index b5904301d..cdc802ca0 100644 --- a/Bugzilla/Auth/Verify/LDAP.pm +++ b/Bugzilla/Auth/Verify/LDAP.pm @@ -56,7 +56,7 @@ sub check_credentials { # just appending the Base DN to the uid isn't sufficient to get the # user's DN. For servers which don't work this way, there will still # be no harm done. - $self->_bind_ldap_anonymously(); + $self->_bind_ldap_for_search(); # Now, we verify that the user exists, and get a LDAP Distinguished # Name for the user. @@ -76,12 +76,35 @@ sub check_credentials { return { failure => AUTH_LOGINFAILED } if $pw_result->code; # And now we fill in the user's details. + + # First try the search as the (already bound) user in question. + my $user_entry; + my $error_string; my $detail_result = $self->ldap->search(_bz_search_params($username)); + if ($detail_result->code) { + # Stash away the original error, just in case + $error_string = $detail_result->error; + } else { + $user_entry = $detail_result->shift_entry; + } + + # If that failed (either because the search failed, or returned no + # results) then try re-binding as the initial search user, but only + # if the LDAPbinddn parameter is set. + if (!$user_entry && Bugzilla->params->{"LDAPbinddn"}) { + $self->_bind_ldap_for_search(); + + $detail_result = $self->ldap->search(_bz_search_params($username)); + if (!$detail_result->code) { + $user_entry = $detail_result->shift_entry; + } + } + + # If we *still* don't have anything in $user_entry then give up. return { failure => AUTH_ERROR, error => "ldap_search_error", - details => {errstr => $detail_result->error, username => $username} - } if $detail_result->code; + details => {errstr => $error_string, username => $username} + } if !$user_entry; - my $user_entry = $detail_result->shift_entry; my $mail_attr = Bugzilla->params->{"LDAPmailattribute"}; if ($mail_attr) { @@ -128,7 +151,7 @@ sub _bz_search_params { . Bugzilla->params->{"LDAPfilter"} . ')'); } -sub _bind_ldap_anonymously { +sub _bind_ldap_for_search { my ($self) = @_; my $bind_result; if (Bugzilla->params->{"LDAPbinddn"}) { diff --git a/Bugzilla/Auth/Verify/Stack.pm b/Bugzilla/Auth/Verify/Stack.pm index c23b532fd..2df3fcd25 100644 --- a/Bugzilla/Auth/Verify/Stack.pm +++ b/Bugzilla/Auth/Verify/Stack.pm @@ -30,7 +30,7 @@ sub new { my $self = $class->SUPER::new(@_); my %methods = map { $_ => "Bugzilla/Auth/Verify/$_.pm" } split(',', $list); lock_keys(%methods); - Bugzilla::Hook::process('auth-verify_methods', { modules => \%methods }); + Bugzilla::Hook::process('auth_verify_methods', { modules => \%methods }); $self->{_stack} = []; foreach my $verify_method (split(',', $list)) { diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm index c27f23823..fd28b5b82 100644 --- a/Bugzilla/Bug.pm +++ b/Bugzilla/Bug.pm @@ -107,7 +107,7 @@ sub DB_COLUMNS { $dbh->sql_date_format('deadline', '%Y-%m-%d') . ' AS deadline', @custom_names); - Bugzilla::Hook::process("bug-columns", { columns => \@columns }); + Bugzilla::Hook::process("bug_columns", { columns => \@columns }); return @columns; } @@ -122,6 +122,9 @@ use constant REQUIRED_CREATE_FIELDS => qw( # There are also other, more complex validators that are called # from run_create_validators. sub VALIDATORS { + my $cache = Bugzilla->request_cache; + return $cache->{bug_validators} if defined $cache->{bug_validators}; + my $validators = { alias => \&_check_alias, bug_file_loc => \&_check_bug_file_loc, @@ -163,7 +166,8 @@ sub VALIDATORS { $validators->{$field->name} = $validator; } - return $validators; + $cache->{bug_validators} = $validators; + return $cache->{bug_validators}; }; use constant UPDATE_VALIDATORS => { @@ -236,6 +240,27 @@ use constant UPDATE_COMMENT_COLUMNS => qw( # activity table. use constant MAX_LINE_LENGTH => 254; +# This maps the names of internal Bugzilla bug fields to things that would +# make sense to somebody who's not intimately familiar with the inner workings +# of Bugzilla. (These are the field names that the WebService and email_in.pl +# use.) +use constant FIELD_MAP => { + creation_time => 'creation_ts', + description => 'comment', + id => 'bug_id', + last_change_time => 'delta_ts', + platform => 'rep_platform', + severity => 'bug_severity', + status => 'bug_status', + summary => 'short_desc', + url => 'bug_file_loc', + whiteboard => 'status_whiteboard', + + # These are special values for the WebService Bug.search method. + limit => 'LIMIT', + offset => 'OFFSET', +}; + ##################################################################### sub new { @@ -543,7 +568,7 @@ sub create { $dbh->do('INSERT INTO longdescs (' . join(',', @columns) . ") VALUES ($qmarks)", undef, @values); - Bugzilla::Hook::process('bug-end_of_create', { bug => $bug, + Bugzilla::Hook::process('bug_end_of_create', { bug => $bug, timestamp => $timestamp, }); @@ -557,7 +582,6 @@ sub create { return $bug; } - sub run_create_validators { my $class = shift; my $params = $class->SUPER::run_create_validators(@_); @@ -613,39 +637,12 @@ sub run_create_validators { delete $params->{lastdiffed}; delete $params->{bug_id}; - Bugzilla::Hook::process('bug-end_of_create_validators', + Bugzilla::Hook::process('bug_end_of_create_validators', { params => $params }); return $params; } -sub set_all { - my ($self, $args) = @_; - - # For security purposes, and because lots of other checks depend on it, - # we set the product first before anything else. - my $product_change = 0; - if ($args->{product}) { - my $changed = $self->set_product($args->{product}, - { component => $args->{component}, - version => $args->{version}, - target_milestone => $args->{target_milestone}, - change_confirmed => $args->{confirm_product_change}, - other_bugs => $args->{other_bugs}, - }); - # that will be used later to check strict isolation - $product_change = $changed; - } - - # add/remove groups - $self->remove_group($_) foreach @{$args->{remove_group}}; - $self->add_group($_) foreach @{$args->{add_group}}; - - # this is temporary until all related code is moved from - # process_bug.cgi to set_all - return $product_change; -} - sub update { my $self = shift; @@ -870,7 +867,7 @@ sub update { $changes->{'dup_id'} = [$old_dup || undef, $cur_dup || undef]; } - Bugzilla::Hook::process('bug-end_of_update', { bug => $self, + Bugzilla::Hook::process('bug_end_of_update', { bug => $self, timestamp => $delta_ts, changes => $changes, }); @@ -1090,7 +1087,7 @@ sub _check_bug_status { my $old_status; # Note that this is undef for new bugs. if (ref $invocant) { - @valid_statuses = @{$invocant->status->can_change_to}; + @valid_statuses = @{$invocant->statuses_available}; $product = $invocant->product_obj; $old_status = $invocant->status; my $comments = $invocant->{added_comments} || []; @@ -1098,12 +1095,9 @@ sub _check_bug_status { } else { @valid_statuses = @{Bugzilla::Status->can_change_to()}; - } - - if (!$product->votes_to_confirm) { - # UNCONFIRMED becomes an invalid status if votes_to_confirm is 0, - # even if you are in editbugs. - @valid_statuses = grep {$_->name ne 'UNCONFIRMED'} @valid_statuses; + if (!$product->allows_unconfirmed) { + @valid_statuses = grep {$_->name ne 'UNCONFIRMED'} @valid_statuses; + } } # Check permissions for users filing new bugs. @@ -1134,9 +1128,13 @@ sub _check_bug_status { } } } + # Time to validate the bug status. $new_status = Bugzilla::Status->check($new_status) unless ref($new_status); - if (!grep {$_->name eq $new_status->name} @valid_statuses) { + # We skip this check if we are changing from a status to itself. + if ( (!$old_status || $old_status->id != $new_status->id) + && !grep {$_->name eq $new_status->name} @valid_statuses) + { ThrowUserError('illegal_bug_status_transition', { old => $old_status, new => $new_status }); } @@ -1168,6 +1166,9 @@ sub _check_cc { my ($invocant, $component, $ccs) = @_; return [map {$_->id} @{$component->initial_cc}] unless $ccs; + # Allow comma-separated input as well as arrayrefs. + $ccs = [split(/[\s,]+/, $ccs)] if !ref $ccs; + my %cc_ids; foreach my $person (@$ccs) { next unless $person; @@ -1732,6 +1733,17 @@ sub _check_freetext_field { sub _check_multi_select_field { my ($invocant, $values, $field) = @_; + + # Allow users (mostly email_in.pl) to specify multi-selects as + # comma-separated values. + if (defined $values and !ref $values) { + # We don't split on spaces because multi-select values can and often + # do have spaces in them. (Theoretically they can have commas in them + # too, but that's much less common and people should be able to work + # around it pretty cleanly, if they want to use email_in.pl.) + $values = [split(',', $values)]; + } + return [] if !$values; my @checked_values; foreach my $value (@$values) { @@ -1779,7 +1791,7 @@ sub fields { # Custom Fields map { $_->name } Bugzilla->active_custom_fields ); - Bugzilla::Hook::process("bug-fields", {'fields' => \@fields} ); + Bugzilla::Hook::process('bug_fields', {'fields' => \@fields} ); return @fields; } @@ -1865,6 +1877,7 @@ sub set_component { } sub set_custom_field { my ($self, $field, $value) = @_; + if (ref $value eq 'ARRAY' && $field->type != FIELD_TYPE_MULTI_SELECT) { $value = $value->[0]; } @@ -1938,7 +1951,6 @@ sub set_product { $self->{_old_product_name} = $old_product->name; # Delete fields that depend upon the old Product value. delete $self->{choices}; - delete $self->{milestoneurl}; $product_changed = 1; } @@ -2132,6 +2144,8 @@ sub set_status { my $old_status = $self->status; $self->set('bug_status', $status); delete $self->{'status'}; + delete $self->{'statuses_available'}; + delete $self->{'choices'}; my $new_status = $self->status; if ($new_status->is_open) { @@ -2645,11 +2659,6 @@ sub isopened { return is_open_state($self->{bug_status}) ? 1 : 0; } -sub isunconfirmed { - my $self = shift; - return ($self->bug_status eq 'UNCONFIRMED') ? 1 : 0; -} - sub keywords { my ($self) = @_; return join(', ', (map { $_->name } @{$self->keyword_objects})); @@ -2678,6 +2687,7 @@ sub comments { my $count = 0; foreach my $comment (@{ $self->{'comments'} }) { $comment->{count} = $count++; + $comment->{bug} = $self; } } my @comments = @{ $self->{'comments'} }; @@ -2702,15 +2712,6 @@ sub comments { return \@comments; } -sub milestoneurl { - my ($self) = @_; - return $self->{'milestoneurl'} if exists $self->{'milestoneurl'}; - return '' if $self->{'error'}; - - $self->{'milestoneurl'} = $self->product_obj->milestone_url; - return $self->{'milestoneurl'}; -} - sub product { my ($self) = @_; return $self->{product} if exists $self->{product}; @@ -2769,6 +2770,36 @@ sub status { return $self->{'status'}; } +sub statuses_available { + my $self = shift; + return [] if $self->{'error'}; + return $self->{'statuses_available'} + if defined $self->{'statuses_available'}; + + my @statuses = @{ $self->status->can_change_to }; + + # UNCONFIRMED is only a valid status if it is enabled in this product. + if (!$self->product_obj->allows_unconfirmed) { + @statuses = grep { $_->name ne 'UNCONFIRMED' } @statuses; + } + + my @available; + foreach my $status (@statuses) { + # Make sure this is a legal status transition + next if !$self->check_can_change_field( + 'bug_status', $self->status->name, $status->name); + push(@available, $status); + } + + # If this bug has an inactive status set, it should still be in the list. + if (!grep($_->name eq $self->status->name, @available)) { + unshift(@available, $self->status); + } + + $self->{'statuses_available'} = \@available; + return $self->{'statuses_available'}; +} + sub show_attachment_flags { my ($self) = @_; return $self->{'show_attachment_flags'} @@ -2922,9 +2953,10 @@ sub choices { } my %choices = ( - product => \@products, - component => $self->product_obj->components, - version => $self->product_obj->versions, + bug_status => $self->statuses_available, + product => \@products, + component => $self->product_obj->components, + version => $self->product_obj->versions, target_milestone => $self->product_obj->milestones, ); @@ -2973,37 +3005,6 @@ sub bug_alias_to_id { # Subroutines ##################################################################### -sub update_comment { - my ($self, $comment_id, $new_comment) = @_; - - # Some validation checks. - if ($self->{'error'}) { - ThrowCodeError("bug_error", { bug => $self }); - } - detaint_natural($comment_id) - || ThrowCodeError('bad_arg', {argument => 'comment_id', function => 'update_comment'}); - - # The comment ID must belong to this bug. - my @current_comment_obj = grep {$_->id == $comment_id} @{$self->comments}; - scalar(@current_comment_obj) - || ThrowCodeError('bad_arg', {argument => 'comment_id', function => 'update_comment'}); - - # If the new comment is undefined, then there is nothing to update. - # To delete a comment, an empty string should be passed. - return unless defined $new_comment; - $new_comment =~ s/\s*$//s; # Remove trailing whitespaces. - $new_comment =~ s/\r\n?/\n/g; # Handle Windows and Mac-style line endings. - trick_taint($new_comment); - - # We assume _check_comment() has already been called earlier. - Bugzilla->dbh->do('UPDATE longdescs SET thetext = ? WHERE comment_id = ?', - undef, ($new_comment, $comment_id)); - $self->_sync_fulltext(); - - # Update the comment object with this new text. - $current_comment_obj[0]->{'thetext'} = $new_comment; -} - # Represents which fields from the bugs table are handled by process_bug.cgi. sub editable_bug_fields { my @fields = Bugzilla->dbh->bz_table_columns('bugs'); @@ -3207,6 +3208,25 @@ sub LogActivityEntry { } } +# Convert WebService API and email_in.pl field names to internal DB field +# names. +sub map_fields { + my ($params) = @_; + + my %field_values; + foreach my $field (keys %$params) { + my $field_name = FIELD_MAP->{$field} || $field; + $field_values{$field_name} = $params->{$field}; + } + + # This protects the WebService Bug.search method. + unless (Bugzilla->user->is_timetracker) { + delete @field_values{qw(estimated_time remaining_time deadline)}; + } + + return \%field_values; +} + # 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: @@ -3327,7 +3347,10 @@ sub CheckIfVotedConfirmed { my $bug = new Bugzilla::Bug($id); my $ret = 0; - if (!$bug->everconfirmed && $bug->votes >= $bug->product_obj->votes_to_confirm) { + if (!$bug->everconfirmed + and $bug->product_obj->votes_to_confirm + and $bug->votes >= $bug->product_obj->votes_to_confirm) + { $bug->add_comment('', { type => CMT_POPULAR_VOTES }); if ($bug->bug_status eq 'UNCONFIRMED') { @@ -3427,12 +3450,7 @@ sub check_can_change_field { } # *Only* users with (product-specific) "canconfirm" privs can confirm bugs. - if ($field eq 'canconfirm' - || ($field eq 'everconfirmed' && $newvalue) - || ($field eq 'bug_status' - && $oldvalue eq 'UNCONFIRMED' - && is_open_state($newvalue))) - { + if ($self->_changes_everconfirmed($field, $oldvalue, $newvalue)) { $$PrivilegesRequired = 3; return $user->in_group('canconfirm', $self->{'product_id'}); } @@ -3508,6 +3526,24 @@ sub check_can_change_field { return 0; } +# A helper for check_can_change_field +sub _changes_everconfirmed { + my ($self, $field, $old, $new) = @_; + return 1 if $field eq 'everconfirmed'; + if ($field eq 'bug_status') { + if ($self->everconfirmed) { + # Moving a confirmed bug to UNCONFIRMED will change everconfirmed. + return 1 if $new eq 'UNCONFIRMED'; + } + else { + # Moving an unconfirmed bug to an open state that isn't + # UNCONFIRMED will confirm the bug. + return 1 if (is_open_state($new) and $new ne 'UNCONFIRMED'); + } + } + return 0; +} + # # Field Validation # @@ -3602,8 +3638,7 @@ sub _validate_attribute { my @valid_attributes = ( # Miscellaneous properties and methods. qw(error groups product_id component_id - comments milestoneurl attachments - isopened isunconfirmed + comments milestoneurl attachments isopened flag_types num_attachment_flag_types show_attachment_flags any_flags_requesteeble), diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm index 2aff7daf4..f7af921eb 100644 --- a/Bugzilla/BugMail.pm +++ b/Bugzilla/BugMail.pm @@ -612,7 +612,7 @@ sub sendMail { my $vars = { isnew => $isnew, - to => $user->email, + to_user => $user, bugid => $id, alias => Bugzilla->params->{'usebugaliases'} ? $values{'alias'} : "", classification => $values{'classification'}, diff --git a/Bugzilla/CGI.pm b/Bugzilla/CGI.pm index bebff2d63..6e9dfd0ce 100644 --- a/Bugzilla/CGI.pm +++ b/Bugzilla/CGI.pm @@ -110,6 +110,7 @@ sub new { sub canonicalise_query { my ($self, @exclude) = @_; + $self->convert_old_params(); # Reconstruct the URL by concatenating the sorted param=value pairs my @parameters; foreach my $key (sort($self->param())) { @@ -134,6 +135,17 @@ sub canonicalise_query { return join("&", @parameters); } +sub convert_old_params { + my $self = shift; + + # bugidtype is now bug_id_type. + if ($self->param('bugidtype')) { + my $value = $self->param('bugidtype') eq 'exclude' ? 'nowords' : 'anyexact'; + $self->param('bug_id_type', $value); + $self->delete('bugidtype'); + } +} + sub clean_search_url { my $self = shift; # Delete any empty URL parameter. @@ -153,9 +165,6 @@ sub clean_search_url { } } - # Delete certain parameters if the associated parameter is empty. - $self->delete('bugidtype') if !$self->param('bug_id'); - # Delete leftovers from the login form $self->delete('Bugzilla_remember', 'GoAheadAndLogIn'); @@ -173,7 +182,8 @@ sub clean_search_url { # chfieldto is set to "Now" by default in query.cgi. But if none # of the other chfield parameters are set, it's meaningless. if (!defined $self->param('chfieldfrom') && !$self->param('chfield') - && !defined $self->param('chfieldvalue')) + && !defined $self->param('chfieldvalue') && $self->param('chfieldto') + && lc($self->param('chfieldto')) eq 'now') { $self->delete('chfieldto'); } diff --git a/Bugzilla/CVS/Entries b/Bugzilla/CVS/Entries index 5c64cb5d6..6cca434ae 100644 --- a/Bugzilla/CVS/Entries +++ b/Bugzilla/CVS/Entries @@ -1,40 +1,41 @@ -/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-3_5_2 -/Attachment.pm/1.66/Mon Sep 28 17:24:41 2009//TBUGZILLA-3_5_2 -/Auth.pm/1.21/Tue Jan 20 20:09:46 2009//TBUGZILLA-3_5_2 -/Bug.pm/1.300/Wed Nov 18 07:15:23 2009//TBUGZILLA-3_5_2 -/BugMail.pm/1.131/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 -/CGI.pm/1.51/Mon Nov 9 19:15:28 2009//TBUGZILLA-3_5_2 -/Chart.pm/1.18/Mon Aug 17 22:59:52 2009//TBUGZILLA-3_5_2 -/Classification.pm/1.14/Sun Jan 4 23:15:28 2009//TBUGZILLA-3_5_2 -/Comment.pm/1.1/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 -/Component.pm/1.17/Sat Apr 11 23:33:26 2009//TBUGZILLA-3_5_2 -/Config.pm/1.80/Fri Oct 9 06:15:31 2009//TBUGZILLA-3_5_2 -/Constants.pm/1.119/Thu Nov 19 02:14:26 2009//TBUGZILLA-3_5_2 -/DB.pm/1.131/Wed Nov 18 07:08:33 2009//TBUGZILLA-3_5_2 -/Error.pm/1.25/Tue Mar 31 06:37:55 2009//TBUGZILLA-3_5_2 -/Field.pm/1.47/Sun Nov 1 19:49:24 2009//TBUGZILLA-3_5_2 -/Flag.pm/1.104/Tue Oct 27 23:08:40 2009//TBUGZILLA-3_5_2 -/FlagType.pm/1.39/Wed Sep 17 03:47:36 2008//TBUGZILLA-3_5_2 -/Group.pm/1.25/Wed Jul 22 19:29:37 2009//TBUGZILLA-3_5_2 -/Hook.pm/1.37/Wed Nov 18 07:17:51 2009//TBUGZILLA-3_5_2 -/Install.pm/1.23/Mon Aug 3 05:14:39 2009//TBUGZILLA-3_5_2 -/JobQueue.pm/1.3/Tue Nov 10 21:19:47 2009//TBUGZILLA-3_5_2 -/Keyword.pm/1.8/Tue Aug 11 04:34:21 2009//TBUGZILLA-3_5_2 -/Mailer.pm/1.28/Fri Oct 9 04:31:10 2009//TBUGZILLA-3_5_2 -/Migrate.pm/1.3/Tue Nov 17 21:16:08 2009//TBUGZILLA-3_5_2 -/Milestone.pm/1.12/Fri Jan 18 15:56:54 2008//TBUGZILLA-3_5_2 -/Object.pm/1.40/Wed Nov 18 07:17:51 2009//TBUGZILLA-3_5_2 -/Product.pm/1.40/Sat Oct 24 05:24:53 2009//TBUGZILLA-3_5_2 -/Search.pm/1.177/Mon Nov 9 20:54:50 2009//TBUGZILLA-3_5_2 -/Series.pm/1.20/Sun Oct 4 21:00:25 2009//TBUGZILLA-3_5_2 -/Status.pm/1.12/Thu Aug 6 14:59:37 2009//TBUGZILLA-3_5_2 -/Template.pm/1.115/Thu Nov 19 02:09:45 2009//TBUGZILLA-3_5_2 -/Token.pm/1.58/Mon Feb 9 19:18:59 2009//TBUGZILLA-3_5_2 -/Update.pm/1.11/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_2 -/User.pm/1.196/Tue Nov 10 01:36:03 2009//TBUGZILLA-3_5_2 -/Util.pm/1.97/Wed Nov 18 18:23:32 2009//TBUGZILLA-3_5_2 -/Version.pm/1.15/Fri Apr 10 09:36:45 2009//TBUGZILLA-3_5_2 -/WebService.pm/1.20/Mon Nov 9 19:15:28 2009//TBUGZILLA-3_5_2 +/.cvsignore/1.1/Mon Aug 26 22:24:55 2002//TBUGZILLA-3_5_3 +/Attachment.pm/1.67/Tue Nov 24 06:09:42 2009//TBUGZILLA-3_5_3 +/Auth.pm/1.23/Sun Dec 13 21:11:13 2009//TBUGZILLA-3_5_3 +/Bug.pm/1.308/Mon Feb 1 00:19:55 2010//TBUGZILLA-3_5_3 +/BugMail.pm/1.132/Tue Jan 5 07:05:59 2010//TBUGZILLA-3_5_3 +/CGI.pm/1.53/Sun Jan 31 17:52:38 2010//TBUGZILLA-3_5_3 +/Chart.pm/1.18/Mon Aug 17 22:59:52 2009//TBUGZILLA-3_5_3 +/Classification.pm/1.14/Sun Jan 4 23:15:28 2009//TBUGZILLA-3_5_3 +/Comment.pm/1.3/Sun Dec 13 20:56:44 2009//TBUGZILLA-3_5_3 +/Component.pm/1.17/Sat Apr 11 23:33:26 2009//TBUGZILLA-3_5_3 +/Config.pm/1.83/Mon Feb 1 00:47:55 2010//TBUGZILLA-3_5_3 +/Constants.pm/1.125/Mon Feb 1 01:04:01 2010//TBUGZILLA-3_5_3 +/DB.pm/1.132/Thu Dec 31 12:48:21 2009//TBUGZILLA-3_5_3 +/Error.pm/1.27/Thu Dec 31 12:53:19 2009//TBUGZILLA-3_5_3 +/Extension.pm/1.8/Tue Dec 1 05:33:04 2009//TBUGZILLA-3_5_3 +/Field.pm/1.47/Sun Nov 1 19:49:24 2009//TBUGZILLA-3_5_3 +/Flag.pm/1.106/Sun Jan 31 23:33:31 2010//TBUGZILLA-3_5_3 +/FlagType.pm/1.39/Wed Sep 17 03:47:36 2008//TBUGZILLA-3_5_3 +/Group.pm/1.26/Thu Dec 31 12:48:22 2009//TBUGZILLA-3_5_3 +/Hook.pm/1.47/Thu Dec 17 05:27:10 2009//TBUGZILLA-3_5_3 +/Install.pm/1.24/Thu Dec 31 12:37:49 2009//TBUGZILLA-3_5_3 +/JobQueue.pm/1.4/Sun Nov 22 22:24:08 2009//TBUGZILLA-3_5_3 +/Keyword.pm/1.8/Tue Aug 11 04:34:21 2009//TBUGZILLA-3_5_3 +/Mailer.pm/1.30/Fri Dec 4 14:46:45 2009//TBUGZILLA-3_5_3 +/Migrate.pm/1.3/Tue Nov 17 21:16:08 2009//TBUGZILLA-3_5_3 +/Milestone.pm/1.12/Fri Jan 18 15:56:54 2008//TBUGZILLA-3_5_3 +/Object.pm/1.44/Tue Nov 24 06:09:42 2009//TBUGZILLA-3_5_3 +/Product.pm/1.44/Thu Dec 17 23:31:54 2009//TBUGZILLA-3_5_3 +/Search.pm/1.181/Sun Jan 31 17:52:39 2010//TBUGZILLA-3_5_3 +/Series.pm/1.20/Sun Oct 4 21:00:25 2009//TBUGZILLA-3_5_3 +/Status.pm/1.13/Sat Dec 12 21:55:15 2009//TBUGZILLA-3_5_3 +/Template.pm/1.124/Thu Jan 7 15:04:09 2010//TBUGZILLA-3_5_3 +/Token.pm/1.59/Thu Dec 31 12:53:19 2009//TBUGZILLA-3_5_3 +/Update.pm/1.11/Sat Oct 24 05:21:07 2009//TBUGZILLA-3_5_3 +/User.pm/1.202/Sun Jan 31 23:33:32 2010//TBUGZILLA-3_5_3 +/Util.pm/1.100/Tue Jan 5 07:05:59 2010//TBUGZILLA-3_5_3 +/Version.pm/1.15/Fri Apr 10 09:36:45 2009//TBUGZILLA-3_5_3 +/WebService.pm/1.20/Mon Nov 9 19:15:28 2009//TBUGZILLA-3_5_3 D/Attachment//// D/Auth//// D/Config//// diff --git a/Bugzilla/CVS/Tag b/Bugzilla/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/CVS/Tag +++ b/Bugzilla/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Comment.pm b/Bugzilla/Comment.pm index 7072dbbee..e81819652 100644 --- a/Bugzilla/Comment.pm +++ b/Bugzilla/Comment.pm @@ -24,6 +24,7 @@ package Bugzilla::Comment; use base qw(Bugzilla::Object); +use Bugzilla::Attachment; use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::Util; @@ -45,20 +46,67 @@ use constant DB_COLUMNS => qw( extra_data ); +use constant UPDATE_COLUMNS => qw( + type + extra_data +); + use constant DB_TABLE => 'longdescs'; use constant ID_FIELD => 'comment_id'; use constant LIST_ORDER => 'bug_when'; +use constant VALIDATORS => { + type => \&_check_type, +}; + +use constant UPDATE_VALIDATORS => { + extra_data => \&_check_extra_data, +}; + +######################### +# Database Manipulation # +######################### + +sub update { + my $self = shift; + my $changes = $self->SUPER::update(@_); + $self->bug->_sync_fulltext(); + return $changes; +} + ############################### #### Accessors ###### ############################### sub already_wrapped { return $_[0]->{'already_wrapped'}; } -sub body { return $_[0]->{'thetext'}; } -sub bug_id { return $_[0]->{'bug_id'}; } -sub creation_ts { return $_[0]->{'bug_when'}; } +sub body { return $_[0]->{'thetext'}; } +sub bug_id { return $_[0]->{'bug_id'}; } +sub creation_ts { return $_[0]->{'bug_when'}; } sub is_private { return $_[0]->{'isprivate'}; } sub work_time { return $_[0]->{'work_time'}; } +sub type { return $_[0]->{'type'}; } +sub extra_data { return $_[0]->{'extra_data'} } + +sub bug { + my $self = shift; + require Bugzilla::Bug; + $self->{bug} ||= new Bugzilla::Bug($self->bug_id); + return $self->{bug}; +} + +sub is_about_attachment { + my ($self) = @_; + return 1 if ($self->type == CMT_ATTACHMENT_CREATED + or $self->type == CMT_ATTACHMENT_UPDATED); + return 0; +} + +sub attachment { + my ($self) = @_; + return undef if not $self->is_about_attachment; + $self->{attachment} ||= new Bugzilla::Attachment($self->extra_data); + return $self->{attachment}; +} sub author { my $self = shift; @@ -81,6 +129,65 @@ sub body_full { return $body; } +############ +# Mutators # +############ + +sub set_extra_data { $_[0]->set('extra_data', $_[1]); } + +sub set_type { + my ($self, $type, $extra_data) = @_; + $self->set('type', $type); + $self->set_extra_data($extra_data); +} + +############## +# Validators # +############## + +sub _check_extra_data { + my ($invocant, $extra_data, $type) = @_; + $type = $invocant->type if ref $invocant; + if ($type == CMT_NORMAL or $type == CMT_POPULAR_VOTES) { + if (defined $extra_data) { + ThrowCodeError('comment_extra_data_not_allowed', + { type => $type, extra_data => $extra_data }); + } + } + else { + if (!defined $extra_data) { + ThrowCodeError('comment_extra_data_required', { type => $type }); + } + if ($type == CMT_MOVED_TO) { + $extra_data = Bugzilla::User->check($extra_data)->login; + } + elsif ($type == CMT_ATTACHMENT_CREATED + or $type == CMT_ATTACHMENT_UPDATED) + { + my $attachment = Bugzilla::Attachment->check({ + id => $extra_data }); + $extra_data = $attachment->id; + } + else { + my $original = $extra_data; + detaint_natural($extra_data) + or ThrowCodeError('comment_extra_data_not_numeric', + { type => $type, extra_data => $original }); + } + } + + return $extra_data; +} + +sub _check_type { + my ($invocant, $type) = @_; + $type ||= CMT_NORMAL; + my $original = $type; + detaint_natural($type) + or ThrowCodeError('comment_type_invalid', { type => $original }); + return $type; +} + 1; __END__ diff --git a/Bugzilla/Config.pm b/Bugzilla/Config.pm index cab18b5a1..a7184866f 100644 --- a/Bugzilla/Config.pm +++ b/Bugzilla/Config.pm @@ -35,6 +35,7 @@ use strict; use base qw(Exporter); use Bugzilla::Constants; use Bugzilla::Hook; +use Bugzilla::Install::Filesystem qw(fix_file_permissions); use Data::Dumper; use File::Temp; @@ -68,7 +69,7 @@ sub _load_params { } # This hook is also called in editparams.cgi. This call here is required # to make SetParam work. - Bugzilla::Hook::process('config-modify_panels', + Bugzilla::Hook::process('config_modify_panels', { panels => \%hook_panels }); } # END INIT CODE @@ -84,7 +85,7 @@ sub param_panels { $param_panels->{$module} = "Bugzilla::Config::$module" unless $module eq 'Common'; } # Now check for any hooked params - Bugzilla::Hook::process('config-add_panels', + Bugzilla::Hook::process('config_add_panels', { panel_modules => $param_panels }); return $param_panels; } @@ -220,7 +221,7 @@ sub update_params { # --- REMOVE OLD PARAMS --- my %oldparams; - # Remove any old params, put them in old-params.txt + # Remove any old params foreach my $item (keys %$param) { if (!grep($_ eq $item, map ($_->{'name'}, @param_list))) { $oldparams{$item} = $param->{$item}; @@ -228,13 +229,16 @@ sub update_params { } } + # Write any old parameters to old-params.txt + my $datadir = bz_locations()->{'datadir'}; + my $old_param_file = "$datadir/old-params.txt"; if (scalar(keys %oldparams)) { - my $op_file = new IO::File('old-params.txt', '>>', 0600) - || die "old-params.txt: $!"; + my $op_file = new IO::File($old_param_file, '>>', 0600) + || die "Couldn't create $old_param_file: $!"; print "The following parameters are no longer used in Bugzilla,", " and so have been\nmoved from your parameters file into", - " old-params.txt:\n"; + " $old_param_file:\n"; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; @@ -297,29 +301,13 @@ sub write_params { rename $tmpname, $param_file or die "Can't rename $tmpname to $param_file: $!"; - ChmodDataFile($param_file, 0666); + fix_file_permissions($param_file); # And now we have to reset the params cache so that Bugzilla will re-read # them. delete Bugzilla->request_cache->{params}; } -# Some files in the data directory must be world readable if and only if -# we don't have a webserver group. Call this function to do this. -# This will become a private function once all the datafile handling stuff -# moves into this package - -# This sub is not perldoc'd for that reason - noone should know about it -sub ChmodDataFile { - my ($file, $mask) = @_; - my $perm = 0770; - if ((stat(bz_locations()->{'datadir'}))[2] & 0002) { - $perm = 0777; - } - $perm = $perm & $mask; - chmod $perm,$file; -} - sub read_param_file { my %params; my $datadir = bz_locations()->{'datadir'}; diff --git a/Bugzilla/Config/Admin.pm b/Bugzilla/Config/Admin.pm index d4e822816..e6141cf9e 100644 --- a/Bugzilla/Config/Admin.pm +++ b/Bugzilla/Config/Admin.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::Admin::sortkey = "01"; +our $sortkey = 200; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/Advanced.pm b/Bugzilla/Config/Advanced.pm new file mode 100644 index 000000000..1acf76f38 --- /dev/null +++ b/Bugzilla/Config/Advanced.pm @@ -0,0 +1,57 @@ +# -*- 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> +# Max Kanat-Alexander <mkanat@bugzilla.org> + +package Bugzilla::Config::Advanced; +use strict; + +our $sortkey = 1700; + +use constant get_param_list => ( + { + name => 'cookiedomain', + type => 't', + default => '' + }, + + { + name => 'inbound_proxies', + type => 't', + default => '' + }, + + { + name => 'proxy_url', + type => 't', + default => '' + }, +); + +1; diff --git a/Bugzilla/Config/Attachment.pm b/Bugzilla/Config/Attachment.pm index 3468f084c..ed4c4e459 100644 --- a/Bugzilla/Config/Attachment.pm +++ b/Bugzilla/Config/Attachment.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::Attachment::sortkey = "025"; +our $sortkey = 400; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/Auth.pm b/Bugzilla/Config/Auth.pm index 1af808eaa..c7d921ed5 100644 --- a/Bugzilla/Config/Auth.pm +++ b/Bugzilla/Config/Auth.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::Auth::sortkey = "02"; +our $sortkey = 300; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/BugChange.pm b/Bugzilla/Config/BugChange.pm index 0e518b689..4e197c5e9 100644 --- a/Bugzilla/Config/BugChange.pm +++ b/Bugzilla/Config/BugChange.pm @@ -36,7 +36,7 @@ use strict; use Bugzilla::Config::Common; use Bugzilla::Status; -$Bugzilla::Config::BugChange::sortkey = "03"; +our $sortkey = 500; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/BugFields.pm b/Bugzilla/Config/BugFields.pm index c7f7f6e5a..9f3ddc9ab 100644 --- a/Bugzilla/Config/BugFields.pm +++ b/Bugzilla/Config/BugFields.pm @@ -36,7 +36,7 @@ use strict; use Bugzilla::Config::Common; use Bugzilla::Field; -$Bugzilla::Config::BugFields::sortkey = "04"; +our $sortkey = 600; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/BugMove.pm b/Bugzilla/Config/BugMove.pm index 87f6cbd73..2d973d8ca 100644 --- a/Bugzilla/Config/BugMove.pm +++ b/Bugzilla/Config/BugMove.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::BugMove::sortkey = "05"; +our $sortkey = 700; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/CVS/Entries b/Bugzilla/Config/CVS/Entries index 950fc4285..c449f2d9b 100644 --- a/Bugzilla/Config/CVS/Entries +++ b/Bugzilla/Config/CVS/Entries @@ -1,18 +1,20 @@ -/Admin.pm/1.4/Tue Dec 16 21:22:02 2008//TBUGZILLA-3_5_2 -/Attachment.pm/1.8/Thu Aug 13 21:32:16 2009//TBUGZILLA-3_5_2 -/Auth.pm/1.4/Sun Oct 18 23:34:58 2009//TBUGZILLA-3_5_2 -/BugChange.pm/1.7/Wed Dec 10 18:40:00 2008//TBUGZILLA-3_5_2 -/BugFields.pm/1.7/Fri Apr 17 22:27:38 2009//TBUGZILLA-3_5_2 -/BugMove.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 -/Common.pm/1.29/Sat Oct 24 05:21:08 2009//TBUGZILLA-3_5_2 -/Core.pm/1.11/Fri Oct 9 04:31:11 2009//TBUGZILLA-3_5_2 -/DependencyGraph.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 -/GroupSecurity.pm/1.9/Tue Mar 31 19:16:58 2009//TBUGZILLA-3_5_2 -/LDAP.pm/1.2/Fri Jun 2 11:52:48 2006//TBUGZILLA-3_5_2 -/MTA.pm/1.17/Wed Dec 24 03:43:40 2008//TBUGZILLA-3_5_2 -/PatchViewer.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 -/Query.pm/1.7/Mon Jul 20 04:10:55 2009//TBUGZILLA-3_5_2 -/RADIUS.pm/1.1/Thu Aug 2 22:38:39 2007//TBUGZILLA-3_5_2 -/ShadowDB.pm/1.1/Wed Oct 12 08:51:53 2005//TBUGZILLA-3_5_2 -/UserMatch.pm/1.2/Tue Mar 31 19:24:23 2009//TBUGZILLA-3_5_2 +/Admin.pm/1.5/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/Advanced.pm/1.2/Thu Dec 31 12:53:21 2009//TBUGZILLA-3_5_3 +/Attachment.pm/1.9/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/Auth.pm/1.5/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/BugChange.pm/1.8/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/BugFields.pm/1.8/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/BugMove.pm/1.2/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/Common.pm/1.30/Sun Dec 13 20:46:26 2009//TBUGZILLA-3_5_3 +/Core.pm/1.14/Thu Dec 31 12:37:50 2009//TBUGZILLA-3_5_3 +/DependencyGraph.pm/1.2/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/General.pm/1.1/Thu Dec 31 12:37:50 2009//TBUGZILLA-3_5_3 +/GroupSecurity.pm/1.10/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/LDAP.pm/1.3/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/MTA.pm/1.18/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/PatchViewer.pm/1.2/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/Query.pm/1.8/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/RADIUS.pm/1.2/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/ShadowDB.pm/1.2/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 +/UserMatch.pm/1.3/Sun Dec 13 20:49:07 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Config/CVS/Tag b/Bugzilla/Config/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Config/CVS/Tag +++ b/Bugzilla/Config/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm index 95866b032..6924761f3 100644 --- a/Bugzilla/Config/Common.pm +++ b/Bugzilla/Config/Common.pm @@ -34,6 +34,7 @@ package Bugzilla::Config::Common; use strict; +use Email::Address; use Socket; use Bugzilla::Util; @@ -50,7 +51,7 @@ use base qw(Exporter); check_user_verify_class check_mail_delivery_method check_notification check_utf8 check_bug_status check_smtp_auth check_theschwartz_available - check_maxattachmentsize + check_maxattachmentsize check_email ); # Checking functions for the various values @@ -94,6 +95,14 @@ sub check_regexp { return $@; } +sub check_email { + my ($value) = @_; + if ($value !~ $Email::Address::mailbox) { + return "must be a valid email address."; + } + return ""; +} + sub check_sslbase { my $url = shift; if ($url ne '') { diff --git a/Bugzilla/Config/Core.pm b/Bugzilla/Config/Core.pm index 91426b30a..1548dcd9c 100644 --- a/Bugzilla/Config/Core.pm +++ b/Bugzilla/Config/Core.pm @@ -35,17 +35,9 @@ 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' - }, +our $sortkey = 100; +use constant get_param_list => ( { name => 'urlbase', type => 't', @@ -53,31 +45,17 @@ sub get_param_list { checker => \&check_urlbase }, - { - name => 'docs_urlbase', - type => 't', - default => 'docs/%lang%/html/', - checker => \&check_url - }, - - { - name => 'sslbase', - type => 't', - default => '', - checker => \&check_sslbase - }, - { name => 'ssl_redirect', type => 'b', default => 0 }, - { - name => 'cookiedomain', + name => 'sslbase', type => 't', - default => '' + default => '', + checker => \&check_sslbase }, { @@ -85,41 +63,6 @@ sub get_param_list { type => 't', default => '/' }, - - { - name => 'utf8', - type => 'b', - default => '0', - checker => \&check_utf8 - }, - - { - name => 'shutdownhtml', - type => 'l', - default => '' - }, - - { - name => 'announcehtml', - type => 'l', - default => '' - }, - - { - name => 'proxy_url', - type => 't', - default => '' - }, - - { - name => 'upgrade_notification', - type => 's', - choices => ['development_snapshot', 'latest_stable_release', - 'stable_branch_release', 'disabled'], - default => 'latest_stable_release', - checker => \&check_notification - } ); - return @param_list; -} +); 1; diff --git a/Bugzilla/Config/DependencyGraph.pm b/Bugzilla/Config/DependencyGraph.pm index db784c135..b217bfb06 100644 --- a/Bugzilla/Config/DependencyGraph.pm +++ b/Bugzilla/Config/DependencyGraph.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::DependencyGraph::sortkey = "06"; +our $sortkey = 800; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/General.pm b/Bugzilla/Config/General.pm new file mode 100644 index 000000000..3a6b827ed --- /dev/null +++ b/Bugzilla/Config/General.pm @@ -0,0 +1,82 @@ +# -*- 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> +# Max Kanat-Alexander <mkanat@bugzilla.org> + +package Bugzilla::Config::General; +use strict; +use Bugzilla::Config::Common; + +our $sortkey = 150; + +use constant get_param_list => ( + { + name => 'maintainer', + type => 't', + default => '', + checker => \&check_email + }, + + { + name => 'docs_urlbase', + type => 't', + default => 'docs/%lang%/html/', + checker => \&check_url + }, + + { + name => 'utf8', + type => 'b', + default => '0', + checker => \&check_utf8 + }, + + { + name => 'shutdownhtml', + type => 'l', + default => '' + }, + + { + name => 'announcehtml', + type => 'l', + default => '' + }, + + { + name => 'upgrade_notification', + type => 's', + choices => ['development_snapshot', 'latest_stable_release', + 'stable_branch_release', 'disabled'], + default => 'latest_stable_release', + checker => \&check_notification + }, +); + +1; diff --git a/Bugzilla/Config/GroupSecurity.pm b/Bugzilla/Config/GroupSecurity.pm index f0038f153..f7f717379 100644 --- a/Bugzilla/Config/GroupSecurity.pm +++ b/Bugzilla/Config/GroupSecurity.pm @@ -36,7 +36,7 @@ use strict; use Bugzilla::Config::Common; use Bugzilla::Group; -$Bugzilla::Config::GroupSecurity::sortkey = "07"; +our $sortkey = 900; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/LDAP.pm b/Bugzilla/Config/LDAP.pm index a9b46382e..e47f92308 100644 --- a/Bugzilla/Config/LDAP.pm +++ b/Bugzilla/Config/LDAP.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::LDAP::sortkey = "09"; +our $sortkey = 1000; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/MTA.pm b/Bugzilla/Config/MTA.pm index c7843e286..b1e3ab1a4 100644 --- a/Bugzilla/Config/MTA.pm +++ b/Bugzilla/Config/MTA.pm @@ -36,7 +36,7 @@ use strict; use Bugzilla::Config::Common; use Email::Send; -$Bugzilla::Config::MTA::sortkey = "10"; +our $sortkey = 1200; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/PatchViewer.pm b/Bugzilla/Config/PatchViewer.pm index 8de04ef76..6bd9557a9 100644 --- a/Bugzilla/Config/PatchViewer.pm +++ b/Bugzilla/Config/PatchViewer.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::PatchViewer::sortkey = "11"; +our $sortkey = 1300; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/Query.pm b/Bugzilla/Config/Query.pm index 6479db8ce..808a9a102 100644 --- a/Bugzilla/Config/Query.pm +++ b/Bugzilla/Config/Query.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::Query::sortkey = "12"; +our $sortkey = 1400; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/RADIUS.pm b/Bugzilla/Config/RADIUS.pm index 6701d6f08..bc072a9c4 100644 --- a/Bugzilla/Config/RADIUS.pm +++ b/Bugzilla/Config/RADIUS.pm @@ -25,7 +25,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::RADIUS::sortkey = "09"; +our $sortkey = 1100; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/ShadowDB.pm b/Bugzilla/Config/ShadowDB.pm index f9af4fb6d..a605b2363 100644 --- a/Bugzilla/Config/ShadowDB.pm +++ b/Bugzilla/Config/ShadowDB.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::ShadowDB::sortkey = "13"; +our $sortkey = 1500; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Config/UserMatch.pm b/Bugzilla/Config/UserMatch.pm index 9e19f1d2b..f97cfeab2 100644 --- a/Bugzilla/Config/UserMatch.pm +++ b/Bugzilla/Config/UserMatch.pm @@ -35,7 +35,7 @@ use strict; use Bugzilla::Config::Common; -$Bugzilla::Config::UserMatch::sortkey = "14"; +our $sortkey = 1600; sub get_param_list { my $class = shift; diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm index 31d00473e..82c377402 100644 --- a/Bugzilla/Constants.pm +++ b/Bugzilla/Constants.pm @@ -55,6 +55,7 @@ use File::Basename; AUTH_LOGINFAILED AUTH_DISABLED AUTH_NO_SUCH_USER + AUTH_LOCKOUT USER_PASSWORD_MIN_LENGTH @@ -91,6 +92,8 @@ use File::Basename; CMT_HAS_DUPE CMT_POPULAR_VOTES CMT_MOVED_TO + CMT_ATTACHMENT_CREATED + CMT_ATTACHMENT_UPDATED THROW_ERROR @@ -148,6 +151,8 @@ use File::Basename; MAX_TOKEN_AGE MAX_LOGINCOOKIE_AGE + MAX_LOGIN_ATTEMPTS + LOGIN_LOCKOUT_INTERVAL SAFE_PROTOCOLS LEGAL_CONTENT_TYPES @@ -173,7 +178,7 @@ use File::Basename; # CONSTANTS # # Bugzilla version -use constant BUGZILLA_VERSION => "3.5.2"; +use constant BUGZILLA_VERSION => "3.5.3"; # These are unique values that are unlikely to match a string or a number, # to be used in criteria for match() functions and other things. They start @@ -226,9 +231,10 @@ use constant AUTH_ERROR => 2; use constant AUTH_LOGINFAILED => 3; use constant AUTH_DISABLED => 4; use constant AUTH_NO_SUCH_USER => 5; +use constant AUTH_LOCKOUT => 6; # The minimum length a password must have. -use constant USER_PASSWORD_MIN_LENGTH => 3; +use constant USER_PASSWORD_MIN_LENGTH => 6; use constant LOGIN_OPTIONAL => 0; use constant LOGIN_NORMAL => 1; @@ -276,6 +282,8 @@ use constant CMT_DUPE_OF => 1; use constant CMT_HAS_DUPE => 2; use constant CMT_POPULAR_VOTES => 3; use constant CMT_MOVED_TO => 4; +use constant CMT_ATTACHMENT_CREATED => 5; +use constant CMT_ATTACHMENT_UPDATED => 6; # Determine whether a validation routine should return 0 or throw # an error when the validation fails. @@ -371,6 +379,12 @@ use constant MAX_TOKEN_AGE => 3; # How many days a logincookie will remain valid if not used. use constant MAX_LOGINCOOKIE_AGE => 30; +# Maximum failed logins to lock account for this IP +use constant MAX_LOGIN_ATTEMPTS => 5; +# If the maximum login attempts occur during this many minutes, the +# account is locked. +use constant LOGIN_LOCKOUT_INTERVAL => 30; + # Protocols which are considered as safe. use constant SAFE_PROTOCOLS => ('afs', 'cid', 'ftp', 'gopher', 'http', 'https', 'irc', 'mid', 'news', 'nntp', 'prospero', 'telnet', diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm index 7e40c1627..830d2835e 100644 --- a/Bugzilla/DB.pm +++ b/Bugzilla/DB.pm @@ -837,6 +837,14 @@ sub bz_drop_table { } } +sub bz_fk_info { + my ($self, $table, $column) = @_; + my $col_info = $self->bz_column_info($table, $column); + return undef if !$col_info; + my $fk = $col_info->{REFERENCES}; + return $fk; +} + sub bz_rename_column { my ($self, $table, $old_name, $new_name) = @_; diff --git a/Bugzilla/DB/CVS/Entries b/Bugzilla/DB/CVS/Entries index fd3b3e025..c909445e2 100644 --- a/Bugzilla/DB/CVS/Entries +++ b/Bugzilla/DB/CVS/Entries @@ -1,5 +1,5 @@ -/Mysql.pm/1.79/Sun Sep 20 22:33:32 2009//TBUGZILLA-3_5_2 -/Oracle.pm/1.25/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_2 -/Pg.pm/1.32/Mon Aug 17 21:31:37 2009//TBUGZILLA-3_5_2 -/Schema.pm/1.124/Sun Oct 18 23:34:59 2009//TBUGZILLA-3_5_2 +/Mysql.pm/1.80/Sun Jan 31 23:39:14 2010//TBUGZILLA-3_5_3 +/Oracle.pm/1.26/Sun Dec 13 21:13:27 2009//TBUGZILLA-3_5_3 +/Pg.pm/1.33/Sun Jan 31 18:04:46 2010//TBUGZILLA-3_5_3 +/Schema.pm/1.130/Thu Dec 31 13:01:47 2009//TBUGZILLA-3_5_3 D/Schema//// diff --git a/Bugzilla/DB/CVS/Tag b/Bugzilla/DB/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/DB/CVS/Tag +++ b/Bugzilla/DB/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index da3e301a9..daf34d04e 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -68,9 +68,13 @@ sub new { $dsn .= ";port=$port" if $port; $dsn .= ";mysql_socket=$sock" if $sock; - my $attrs = { mysql_enable_utf8 => Bugzilla->params->{'utf8'} }; + my %attrs = ( + mysql_enable_utf8 => Bugzilla->params->{'utf8'}, + # Needs to be explicitly specified for command-line processes. + mysql_auto_reconnect => 1, + ); - my $self = $class->db_new($dsn, $user, $pass, $attrs); + my $self = $class->db_new($dsn, $user, $pass, \%attrs); # This makes sure that if the tables are encoded as UTF-8, we # return their data correctly. diff --git a/Bugzilla/DB/Oracle.pm b/Bugzilla/DB/Oracle.pm index 4f19269a6..801823372 100644 --- a/Bugzilla/DB/Oracle.pm +++ b/Bugzilla/DB/Oracle.pm @@ -347,6 +347,10 @@ sub adjust_statement { # Oracle need no 'AS' $nonstring =~ s/\bAS\b//ig; + + # Take the first 4000 chars for comparison + $nonstring =~ s/\(\s*(longdescs_\d+\.thetext|attachdata_\d+\.thedata)/ + \(DBMS_LOB.SUBSTR\($1, 4000, 1\)/ig; # Look for a LIMIT clause ($limit) = ($nonstring =~ m(/\* LIMIT (\d*) \*/)o); diff --git a/Bugzilla/DB/Pg.pm b/Bugzilla/DB/Pg.pm index 585c0884b..b31d186bb 100644 --- a/Bugzilla/DB/Pg.pm +++ b/Bugzilla/DB/Pg.pm @@ -100,13 +100,25 @@ sub sql_group_concat { return "array_to_string(array_accum($text), $separator)"; } +sub sql_istring { + my ($self, $string) = @_; + + return "LOWER(${string}::text)"; +} + +sub sql_position { + my ($self, $fragment, $text) = @_; + + return "POSITION($fragment IN ${text}::text)"; +} + sub sql_regexp { my ($self, $expr, $pattern, $nocheck, $real_pattern) = @_; $real_pattern ||= $pattern; $self->bz_check_regexp($real_pattern) if !$nocheck; - return "$expr ~* $pattern"; + return "${expr}::text ~* $pattern"; } sub sql_not_regexp { @@ -115,7 +127,7 @@ sub sql_not_regexp { $self->bz_check_regexp($real_pattern) if !$nocheck; - return "$expr !~* $pattern" + return "${expr}::text !~* $pattern" } sub sql_limit { diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index c5003f798..8bee5dfe1 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -23,6 +23,7 @@ # Lance Larsh <lance.larsh@oracle.com> # Dennis Melentyev <dennis.melentyev@infopulse.com.ua> # Akamai Technologies <bugzilla-dev@akamai.com> +# Elliotte Martin <emartin@everythingsolved.com> package Bugzilla::DB::Schema; @@ -284,9 +285,9 @@ use constant ABSTRACT_SCHEMA => { NOTNULL => 1, DEFAULT => 'TRUE'}, cclist_accessible => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'TRUE'}, - estimated_time => {TYPE => 'decimal(5,2)', + estimated_time => {TYPE => 'decimal(7,2)', NOTNULL => 1, DEFAULT => '0'}, - remaining_time => {TYPE => 'decimal(5,2)', + remaining_time => {TYPE => 'decimal(7,2)', NOTNULL => 1, DEFAULT => '0'}, deadline => {TYPE => 'DATETIME'}, alias => {TYPE => 'varchar(20)'}, @@ -394,7 +395,7 @@ use constant ABSTRACT_SCHEMA => { REFERENCES => {TABLE => 'profiles', COLUMN => 'userid'}}, bug_when => {TYPE => 'DATETIME', NOTNULL => 1}, - work_time => {TYPE => 'decimal(5,2)', NOTNULL => 1, + work_time => {TYPE => 'decimal(7,2)', NOTNULL => 1, DEFAULT => '0'}, thetext => {TYPE => 'LONGTEXT', NOTNULL => 1}, isprivate => {TYPE => 'BOOLEAN', NOTNULL => 1, @@ -609,10 +610,12 @@ use constant ABSTRACT_SCHEMA => { DEFAULT => '0'}, grant_group_id => {TYPE => 'INT3', REFERENCES => {TABLE => 'groups', - COLUMN => 'id'}}, + COLUMN => 'id', + DELETE => 'SET NULL'}}, request_group_id => {TYPE => 'INT3', REFERENCES => {TABLE => 'groups', - COLUMN => 'id'}}, + COLUMN => 'id', + DELETE => 'SET NULL'}}, ], }, @@ -982,6 +985,25 @@ use constant ABSTRACT_SCHEMA => { ], }, + login_failure => { + FIELDS => [ + user_id => {TYPE => 'INT3', NOTNULL => 1, + REFERENCES => {TABLE => 'profiles', + COLUMN => 'userid', + DELETE => 'CASCADE'}}, + login_time => {TYPE => 'DATETIME', NOTNULL => 1}, + ip_addr => {TYPE => 'varchar(40)', NOTNULL => 1}, + ], + INDEXES => [ + # We do lookups by every item in the table simultaneously, but + # having an index with all three items would be the same size as + # the table. So instead we have an index on just the smallest item, + # to speed lookups. + login_failure_user_id_idx => ['user_id'], + ], + }, + + # "tokens" stores the tokens users receive when a password or email # change is requested. Tokens provide an extra measure of security # for these changes. @@ -1194,8 +1216,6 @@ use constant ABSTRACT_SCHEMA => { COLUMN => 'id', DELETE => 'CASCADE'}}, description => {TYPE => 'MEDIUMTEXT'}, - milestoneurl => {TYPE => 'TINYTEXT', NOTNULL => 1, - DEFAULT => "''"}, isactive => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 1}, votesperuser => {TYPE => 'INT2', NOTNULL => 1, @@ -1206,6 +1226,8 @@ use constant ABSTRACT_SCHEMA => { DEFAULT => 0}, defaultmilestone => {TYPE => 'varchar(20)', NOTNULL => 1, DEFAULT => "'---'"}, + allows_unconfirmed => {TYPE => 'BOOLEAN', NOTNULL => 1, + DEFAULT => 'FALSE'}, ], INDEXES => [ products_name_idx => {FIELDS => ['name'], @@ -1635,7 +1657,7 @@ sub _initialize { if exists $abstract_schema->{$table}; } unlock_keys(%$abstract_schema); - Bugzilla::Hook::process('db_schema-abstract_schema', + Bugzilla::Hook::process('db_schema_abstract_schema', { schema => $abstract_schema }); unlock_hash(%$abstract_schema); } diff --git a/Bugzilla/DB/Schema/CVS/Entries b/Bugzilla/DB/Schema/CVS/Entries index 503934930..5c6f54574 100644 --- a/Bugzilla/DB/Schema/CVS/Entries +++ b/Bugzilla/DB/Schema/CVS/Entries @@ -1,4 +1,4 @@ -/Mysql.pm/1.23/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_2 -/Oracle.pm/1.12/Sat Oct 24 05:31:42 2009//TBUGZILLA-3_5_2 -/Pg.pm/1.16/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_2 +/Mysql.pm/1.23/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_3 +/Oracle.pm/1.12/Sat Oct 24 05:31:42 2009//TBUGZILLA-3_5_3 +/Pg.pm/1.16/Sat Oct 24 05:30:16 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/DB/Schema/CVS/Tag b/Bugzilla/DB/Schema/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/DB/Schema/CVS/Tag +++ b/Bugzilla/DB/Schema/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Error.pm b/Bugzilla/Error.pm index 661c72f74..4e312b3ed 100644 --- a/Bugzilla/Error.pm +++ b/Bugzilla/Error.pm @@ -64,7 +64,7 @@ sub _throw_error { for (1..75) { $mesg .= "-"; }; $mesg .= "\n[$$] " . time2str("%D %H:%M:%S ", time()); $mesg .= "$name $error "; - $mesg .= "$ENV{REMOTE_ADDR} " if $ENV{REMOTE_ADDR}; + $mesg .= remote_ip(); $mesg .= Bugzilla->user->login; $mesg .= (' actually ' . Bugzilla->sudoer->login) if Bugzilla->sudoer; $mesg .= "\n"; @@ -107,7 +107,7 @@ sub _throw_error { # Clone the hash so we aren't modifying the constant. my %error_map = %{ WS_ERROR_CODE() }; require Bugzilla::Hook; - Bugzilla::Hook::process('webservice-error_codes', + Bugzilla::Hook::process('webservice_error_codes', { error_map => \%error_map }); my $code = $error_map{$error}; if (!$code) { diff --git a/Bugzilla/Extension.pm b/Bugzilla/Extension.pm new file mode 100644 index 000000000..793ae6043 --- /dev/null +++ b/Bugzilla/Extension.pm @@ -0,0 +1,786 @@ +# -*- 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 Everything Solved, Inc. +# Portions created by the Initial Developers are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +package Bugzilla::Extension; +use strict; + +use Bugzilla::Constants; +use Bugzilla::Error; +use Bugzilla::Install::Util qw( + extension_code_files extension_template_directory + extension_package_directory); + +use File::Basename; +use File::Spec; + +#################### +# Subclass Methods # +#################### + +sub new { + my ($class, $params) = @_; + $params ||= {}; + bless $params, $class; + return $params; +} + +####################################### +# Class (Bugzilla::Extension) Methods # +####################################### + +sub load { + my ($class, $extension_file, $config_file) = @_; + my $package; + + # This is needed during checksetup.pl, because Extension packages can + # only be loaded once (they return "1" the second time they're loaded, + # instead of their name). During checksetup.pl, extensions are loaded + # once by Bugzilla::Install::Requirements, and then later again via + # Bugzilla->extensions (because of hooks). + my $map = Bugzilla->request_cache->{extension_requirement_package_map}; + + if ($config_file) { + if ($map and defined $map->{$config_file}) { + $package = $map->{$config_file}; + } + else { + my $name = require $config_file; + if ($name =~ /^\d+$/) { + ThrowCodeError('extension_must_return_name', + { extension => $config_file, + returned => $name }); + } + $package = "${class}::$name"; + } + + __do_call($package, 'modify_inc', $config_file); + } + + if ($map and defined $map->{$extension_file}) { + $package = $map->{$extension_file}; + $package->modify_inc($extension_file) if !$config_file; + } + else { + my $name = require $extension_file; + if ($name =~ /^\d+$/) { + ThrowCodeError('extension_must_return_name', + { extension => $extension_file, returned => $name }); + } + $package = "${class}::$name"; + $package->modify_inc($extension_file) if !$config_file; + } + + $class->_validate_package($package, $extension_file); + return $package; +} + +sub _validate_package { + my ($class, $package, $extension_file) = @_; + + # For extensions from data/extensions/additional, we don't have a file + # name, so we fake it. + if (!$extension_file) { + $extension_file = $package; + $extension_file =~ s/::/\//g; + $extension_file .= '.pm'; + } + + if (!eval { $package->NAME }) { + ThrowCodeError('extension_no_name', + { filename => $extension_file, package => $package }); + } + + if (!$package->isa($class)) { + ThrowCodeError('extension_must_be_subclass', + { filename => $extension_file, + package => $package, + class => $class }); + } +} + +sub load_all { + my $class = shift; + my ($file_sets, $extra_packages) = extension_code_files(); + my @packages; + foreach my $file_set (@$file_sets) { + my $package = $class->load(@$file_set); + push(@packages, $package); + } + + # Extensions from data/extensions/additional + foreach my $package (@$extra_packages) { + # Don't load an "additional" extension if we already have an extension + # loaded with that name. + next if grep($_ eq $package, @packages); + # Untaint the package name + $package =~ /([\w:]+)/; + $package = $1; + eval("require $package") || die $@; + $package->_validate_package($package); + push(@packages, $package); + } + + return \@packages; +} + +# Modifies @INC so that extensions can use modules like +# "use Bugzilla::Extension::Foo::Bar", when Bar.pm is in the lib/ +# directory of the extension. +sub modify_inc { + my ($class, $file) = @_; + + __do_call($class, 'package_dir', $file); + unshift(@INC, sub { __do_call($class, 'my_inc', @_) }); +} + +# This is what gets put into @INC by modify_inc. +sub my_inc { + my ($class, undef, $file) = @_; + + # This avoids infinite recursion in case anything inside of this function + # does a "require". (I know for sure that File::Spec->case_tolerant does + # a "require" on Windows, for example.) + return if $file !~ /^Bugzilla/; + + my $lib_dir = __do_call($class, 'lib_dir'); + my @class_parts = split('::', $class); + my ($vol, $dir, $file_name) = File::Spec->splitpath($file); + my @dir_parts = File::Spec->splitdir($dir); + # File::Spec::Win32 (any maybe other OSes) add an empty directory at the + # end of @dir_parts. + @dir_parts = grep { $_ ne '' } @dir_parts; + # Validate that this is a sub-package of Bugzilla::Extension::Foo ($class). + for (my $i = 0; $i < scalar(@class_parts); $i++) { + return if !@dir_parts; + if (File::Spec->case_tolerant) { + return if lc($class_parts[$i]) ne lc($dir_parts[0]); + } + else { + return if $class_parts[$i] ne $dir_parts[0]; + } + shift(@dir_parts); + } + # For Bugzilla::Extension::Foo::Bar, this would look something like + # extensions/Example/lib/Bar.pm + my $resolved_path = File::Spec->catfile($lib_dir, @dir_parts, $file_name); + open(my $fh, '<', $resolved_path); + return $fh; +} + +#################### +# Instance Methods # +#################### + +use constant enabled => 1; + +sub lib_dir { + my $invocant = shift; + my $package_dir = __do_call($invocant, 'package_dir'); + return File::Spec->catdir($package_dir, 'lib'); +} + +sub template_dir { return extension_template_directory(@_); } +sub package_dir { return extension_package_directory(@_); } + +###################### +# Helper Subroutines # +###################### + +# In order to not conflict with extensions' private subroutines, any helpers +# here should start with a double underscore. + +# This is for methods that can optionally be overridden in Config.pm. +# It falls back to the local implementation if $class cannot do +# the method. This is necessary because Config.pm is not a subclass of +# Bugzilla::Extension. +sub __do_call { + my ($class, $method, @args) = @_; + if ($class->can($method)) { + return $class->$method(@args); + } + my $function_ref; + { no strict 'refs'; $function_ref = \&{$method}; } + return $function_ref->($class, @args); +} + +1; + +__END__ + +=head1 NAME + +Bugzilla::Extension - Base class for Bugzilla Extensions. + +=head1 SYNOPSIS + +The following would be in F<extensions/Foo/Extension.pm> or +F<extensions/Foo.pm>: + + package Bugzilla::Extension::Foo + use strict; + use base qw(Bugzilla::Extension); + + our $VERSION = '0.02'; + use constant NAME => 'Foo'; + + sub some_hook_name { ... } + + __PACKAGE__->NAME; + +Custom templates would go into F<extensions/Foo/template/en/default/>. +L<Template hooks|/Template Hooks> would go into +F<extensions/Foo/template/en/default/hook/>. + +=head1 DESCRIPTION + +This is the base class for all Bugzilla extensions. + +=head1 WRITING EXTENSIONS + +The L</SYNOPSIS> above gives a pretty good overview of what's basically +required to write an extension. This section gives more information +on exactly how extensions work and how you write them. + +=head2 Using F<extensions/create.pl> + +There is a script, L<extensions::create>, that will set up the framework +of a new extension for you. To use it, pick a name for your extension +and, in the base bugzilla directory, do: + +C<extensions/create.pl NAME> + +But replace C<NAME> with the name you picked for your extension. That +will create a new directory in the F<extensions/> directory with the name +of your extension. The directory will contain a full framework for +a new extension, with helpful comments in each file describing things +about them. + +=head2 Example Extension + +There is a sample extension in F<extensions/Example/> that demonstrates +most of the things described in this document, so if you find the +documentation confusing, try just reading the code instead. + +=head2 Where Extension Code Goes + +Extension code lives under the F<extensions/> directory in Bugzilla. + +There are two ways to write extensions: + +=over + +=item 1 + +If your extension will have only code and no templates or other files, +you can create a simple C<.pm> file in the F<extensions/> directory. + +For example, if you wanted to create an extension called "Foo" using this +method, you would put your code into a file called F<extensions/Foo.pm>. + +=item 2 + +If you plan for your extension to have templates and other files, you +can create a whole directory for your extension, and the main extension +code would go into a file called F<Extension.pm> in that directory. + +For example, if you wanted to create an extension called "Foo" using this +method, you would put your code into a file called +F<extensions/Foo/Extension.pm>. + +=back + +=head2 The Extension C<NAME>. + +The "name" of an extension shows up in several places: + +=over + +=item 1 + +The name of the package: + +C<package Bugzilla::Extension::Foo;> + +=item 2 + +In a C<NAME> constant that B<must> be defined for every extension: + +C<< use constant NAME => 'Foo'; >> + +=item 3 + +At the very end of the file: + +C<< __PACKAGE__->NAME; >> + +You'll notice that though most Perl packages end with C<1;>, Bugzilla +Extensions must B<always> end with C<< __PACKAGE__->NAME; >>. + +=back + +The name must be identical in all of those locations. + +=head2 Hooks + +In L<Bugzilla::Hook>, there is a L<list of hooks|Bugzilla::Hook/HOOKS>. +These are the various areas of Bugzilla that an extension can "hook" into, +which allow your extension to perform code during that point in Bugzilla's +execution. + +If your extension wants to implement a hook, all you have to do is +write a subroutine in your hook package that has the same name as +the hook. The subroutine will be called as a method on your extension, +and it will get the arguments specified in the hook's documentation as +named parameters in a hashref. + +For example, here's an implementation of a hook named C<foo_start> +that gets an argument named C<bar>: + + sub foo_start { + my ($self, $args) = @_; + my $bar = $args->{bar}; + print "I got $bar!\n"; + } + +And that would go into your extension's code file--the file that was +described in the L</Where Extension Code Goes> section above. + +During your subroutine, you may want to know what values were passed +as CGI arguments to the current script, or what arguments were passed to +the current WebService method. You can get that data via +<Bugzilla/input_params>. + +=head3 Adding New Hooks To Bugzilla + +If you need a new hook for your extension and you want that hook to be +added to Bugzilla itself, see our development process at +L<http://wiki.mozilla.org/Bugzilla:Developers>. + +In order for a new hook to be accepted into Bugzilla, it has to work, +it must have documentation in L<Bugzilla::Hook>, and it must have example +code in F<extensions/Example/Extension.pm>. + +One question that is often asked about new hooks is, "Is this the most +flexible way to implement this hook?" That is, the more power extension +authors get from a hook, the more likely it is to be accepted into Bugzilla. +Hooks that only hook a very specific part of Bugzilla will not be accepted +if their functionality can be accomplished equally well with a more generic +hook. + +=head2 If Your Extension Requires Certain Perl Modules + +If there are certain Perl modules that your extension requires in order +to run, there is a way you can tell Bugzilla this, and then L<checksetup> +will make sure that those modules are installed, when you run L<checksetup>. + +To do this, you need to specify a constant called C<REQUIRED_MODULES> +in your extension. This constant has the same format as +L<Bugzilla::Install::Requirements/REQUIRED_MODULES>. + +If there are optional modules that add additional functionality to your +application, you can specify them in a constant called OPTIONAL_MODULES, +which has the same format as +L<Bugzilla::Install::Requirements/OPTIONAL_MODULES>. + +=head3 If Your Extension Needs Certain Modules In Order To Compile + +If your extension needs a particular Perl module in order to +I<compile>, then you have a "chicken and egg" problem--in order to +read C<REQUIRED_MODULES>, we have to compile your extension. In order +to compile your extension, we need to already have the modules in +C<REQUIRED_MODULES>! + +To get around this problem, Bugzilla allows you to have an additional +file, besides F<Extension.pm>, called F<Config.pm>, that contains +just C<REQUIRED_MODULES>. If you have a F<Config.pm>, it must also +contain the C<NAME> constant, instead of your main F<Extension.pm> +containing the C<NAME> constant. + +The contents of the file would look something like this for an extension +named C<Foo>: + + package Bugzilla::Extension::Foo; + use strict; + use constant NAME => 'Foo'; + use constant REQUIRED_MODULES => [ + { + package => 'Some-Package', + module => 'Some::Module', + version => 0, + } + ]; + __PACKAGE__->NAME; + +Note that it is I<not> a subclass of C<Bugzilla::Extension>, because +at the time that module requirements are being checked in L<checksetup>, +C<Bugzilla::Extension> cannot be loaded. Also, just like F<Extension.pm>, +it ends with C<< __PACKAGE__->NAME; >>. Note also that it has the exact +same C<package> name as F<Extension.pm>. + +This file may not use any Perl modules other than L<Bugzilla::Constants>, +L<Bugzilla::Install::Util>, L<Bugzilla::Install::Requirements>, and +modules that ship with Perl itself. + +If you want to define both C<REQUIRED_MODULES> and C<OPTIONAL_MODULES>, +they must both be in F<Config.pm> or both in F<Extension.pm>. + +Every time your extension is loaded by Bugzilla, F<Config.pm> will be +read and then F<Extension.pm> will be read, so your methods in F<Extension.pm> +will have access to everything in F<Config.pm>. Don't define anything +with an identical name in both files, or Perl may throw a warning that +you are redefining things. + +This method of setting C<REQUIRED_MODULES> is of course not available if +your extension is a single file named C<Foo.pm>. + +If any of this is confusing, just look at the code of the Example extension. +It uses this method to specify requirements. + +=head2 Libraries + +Extensions often want to have their own Perl modules. Your extension +can load any Perl module in its F<lib/> directory. (So, if your extension is +F<extensions/Foo/>, then your Perl modules go into F<extensions/Foo/lib/>.) + +However, the C<package> name of your libraries will not work quite +like normal Perl modules do. F<extensions/Foo/lib/Bar.pm> is +loaded as C<Bugzilla::Extension::Foo::Bar>. Or, to say it another way, +C<use Bugzilla::Extension::Foo::Bar;> loads F<extensions/Foo/lib/Bar.pm>, +which should have C<package Bugzilla::Extension::Foo::Bar;> as its package +name. + +This allows any place in Bugzilla to load your modules, which is important +for some hooks. It even allows other extensions to load your modules. It +even allows you to install your modules into the global Perl install +as F<Bugzilla/Extension/Foo/Bar.pm>, if you'd like, which helps allow CPAN +distribution of Bugzilla extensions. + +B<Note:> If you want to C<use> or C<require> a module that's in +F<extensions/Foo/lib/> at the top level of your F<Extension.pm>, +you must have a F<Config.pm> (see above) with at least the C<NAME> +constant defined in it. + +=head2 Templates + +Extensions store templates in a C<template> subdirectory of the extension. +(Obviously, this isn't available for extensions that aren't a directory.) + +The format of this directory is exactly like the normal layout of Bugzilla's +C<template> directory--in fact, your extension's C<template> directory +becomes part of Bugzilla's template "search path" as described in +L<Bugzilla::Install::Util/template_include_path>. + +You can actually include templates in your extension without having any +C<.pm> files in your extension at all, if you want. (That is, it's entirely +valid to have an extension that's just template files and no code files.) + +Bugzilla's templates are written in a language called Template Toolkit. +You can find out more about Template Toolkit at L<http://template-toolkit.org>. + +There are two ways to extend or modify Bugzilla's templates: you can use +template hooks (described below) or you can override existing templates +entirely (described further down). + +=head2 Template Hooks + +Templates can be extended using a system of "hooks" that add new UI elements +to a particular area of Bugzilla without modifying the code of the existing +templates. This is the recommended way for extensions to modify the user +interface of Bugzilla. + +=head3 Which Templates Can Be Hooked + +There is no list of template hooks like there is for standard code hooks. +To find what places in the user interface can be hooked, search for the +string C<Hook.process> in Bugzilla's templates (in the +F<template/en/default/> directory). That will also give you the name of +the hooks--the first argument to C<Hook.process> is the name of the hook. +(A later section in this document explains how to use that name). + +For example, if you see C<Hook.process("additional_header")>, that means +the name of the hook is C<additional_header>. + +=head3 Where Template Hooks Go + +To extend templates in your extension using template hooks, you put files into +the F<template/en/default/hook> directory of your extension. So, if you had an +extension called "Foo", your template extensions would go into +F<extensions/Foo/template/en/default/hook/>. + +(Note that the base F<template/en/default/hook> directory in Bugzilla itself +also works, although you would never use that for an extension that you +intended to distribute.) + +The files that go into this directory have a certain name, based on the +name of the template that is being hooked, and the name of the hook. +For example, let's imagine that you have an extension named "Foo", +and you want to use the C<additional_header> hook in +F<template/en/default/global/header.html.tmpl>. Your code would go into +F<extensions/Foo/template/en/default/hook/global/header-additional_header.html.tmpl>. Any code you put into that file will happen at the point that +C<Hook.process("additional_header")> is called in +F<template/en/default/global/header.html.tmpl>. + +As you can see, template extension file names follow a pattern. The +pattern looks like: + + <templates>/hook/<template path>/<template name>-<hook name>.<template type>.tmpl + +=over + +=item <templates> + +This is the full path to the template directory, like +F<extensions/Foo/template/en/default>. This works much like normal templates +do, in the sense that template extensions in C<custom> override template +extensions in C<default> for your extension, templates for different languages +can be supplied, etc. Template extensions are searched for and run in the +order described in L<Bugzilla::Install::Util/template_include_path>. + +The difference between normal templates and template hooks is that hooks +will be run for I<every> extension, whereas for normal templates, Bugzilla +just takes the first one it finds and stops searching. So while a template +extension in the C<custom> directory may override the same-named template +extension in the C<default> directory I<within your Bugzilla extension>, +it will not override the same-named template extension in the C<default> +directory of another Bugzilla extension. + +=item <template path> + +This is the part of the path (excluding the filename) that comes after +F<template/en/default/> in a template's path. So, for +F<template/en/default/global/header.html.tmpl>, this would simply be +C<global>. + +=item <template name> + +This is the file name of the template, before the C<.html.tmpl> part. +So, for F<template/en/default/global/header.html.tmpl>, this would be +C<header>. + +=item <hook name> + +This is the name of the hook--what you saw in C<Hook.process> inside +of the template you want to hook. In our example, this is +C<additioanl_header>. + +=item <template type> + +This is what comes after the template name but before C<.tmpl> in the +template's path. In most cases this is C<html>, but sometimes it's +C<none>, C<txt>, C<js>, or various other formats, indicating what +type of output the template has. + +=back + +=head3 Adding New Template Hooks to Bugzilla + +Adding new template hooks is just like adding code hooks (see +L</Adding New Hooks To Bugzilla>) except that you don't have to +document them, and including example code is optional. + +=head2 Overriding Existing Templates + +Sometimes you don't want to extend a template, you just want to replace +it entirely with your extension's template, or you want to add an entirely +new template to Bugzilla for your extension to use. + +To replace the F<template/en/default/global/banner.html.tmpl> template +in an extension named "Foo", create a file called +F<extensions/Foo/template/en/default/global/banner.html.tmpl>. Note that this +is very similar to the path for a template hook, except that it excludes +F<hook/>, and the template is named I<exactly> like the standard Bugzilla +template. + +You can also use this method to add entirely new templates. If you have +an extension named "Foo", and you add a file named +F<extensions/Foo/template/en/default/foo/bar.html.tmpl>, you can load +that in your code using C<< $template->process('foo/bar.html.tmpl') >>. + +=head3 A Warning About Extensions That You Want To Distribute + +You should never override an existing Bugzilla template in an +extension that you plan to distribute to others, because only one extension +can override any given template, and which extension will "win" that war +if there are multiple extensions installed is totally undefined. + +However, adding new templates in an extension that you want to distribute +is fine, though you have to be careful about how you name them, because +any templates with an identical path and name (say, both called +F<global/stuff.html.tmpl>) will conflict. The usual way to work around +this is to put all your custom templates into a template path that's +named after your extension (since the name of your extension has to be +unique anyway). So if your extension was named Foo, your custom templates +would go into F<extensions/Foo/template/en/default/foo/>. The only +time that doesn't work is with the C<page_before_template> extension, in which +case your templates should probably be in a directory like +F<extensions/Foo/template/en/default/page/foo/> so as not to conflict with +other pages that other extensions might add. + +=head2 Disabling Your Extension + +If you want your extension to be totally ignored by Bugzilla (it will +not be compiled or seen to exist at all), then create a file called +C<disabled> in your extension's directory. (If your extension is just +a file, like F<extensions/Foo.pm>, you cannot use this method to disable +your extension, and will just have to remove it from the directory if you +want to totally disable it.) Note that if you are running under mod_perl, +you may have to restart your web server for this to take effect. + +If you want your extension to be compiled and have L<checksetup> check +for its module pre-requisites, but you don't want the module to be used +by Bugzilla, then you should make your extension's L</enabled> method +return C<0> or some false value. + +=head1 DISTRIBUTING EXTENSIONS + +If you've made an extension and you want to publish it, the first +thing you'll want to do is package up your extension's code and +then put a link to it in the appropriate section of +L<http://wiki.mozilla.org/Bugzilla:Addons>. + +=head2 Distributing on CPAN + +If you want a centralized distribution point that makes it easy +for Bugzilla users to install your extension, it is possible to +distribute your Bugzilla Extension through CPAN. + +The details of making a standard CPAN module are too much to +go into here, but a lot of it is covered in L<perlmodlib> +and on L<http://www.cpan.org/> among other places. + +When you distribute your extension via CPAN, your F<Extension.pm> +should simply install itself as F<Bugzilla/Extension/Foo.pm>, +where C<Foo> is the name of your module. You do not need a separate +F<Config.pm> file, because CPAN itself will handle installing +the prerequisites of your module, so Bugzilla doesn't have to +worry about it. + +=head3 Templates in extensions distributed on CPAN + +If your extension is F</usr/lib/perl5/Bugzilla/Extension/Foo.pm>, +then Bugzilla will look for templates in the directory +F</usr/lib/perl5/Bugzilla/Extension/Foo/template/>. + +You can change this behavior by overriding the L</template_dir> +or L</package_dir> methods described lower down in this document. + +=head3 Using an extension distributed on CPAN + +There is a file named F<data/extensions/additional> in Bugzilla. +This is a plain-text file. Each line is the name of a module, +like C<Bugzilla::Extension::Foo>. In addition to the extensions +in the F<extensions/> directory, each module listed in this file +will be loaded as a Bugzilla Extension whenever Bugzilla loads or +uses extensions. + +=head1 GETTING HELP WITH WRITING EXTENSIONS + +If you are an extension author and you'd like some assistance from other +extension authors or the Bugzilla development team, you can use the +normal support channels described at L<http://www.bugzilla.org/support/>. + +=head1 ADDITIONAL CONSTANTS + +In addition to C<NAME>, there are some other constants you might +want to define: + +=head2 C<$VERSION> + +This should be a string that describes what version of your extension +this is. Something like C<1.0>, C<1.3.4> or a similar string. + +There are no particular restrictions on the format of version numbers, +but you should probably keep them to just numbers and periods, in the +interest of other software that parses version numbers. + +By default, this will be C<undef> if you don't define it. + +=head1 SUBCLASS METHODS + +In addition to hooks, there are a few methods that your extension can +define to modify its behavior, if you want: + +=head2 Class Methods + +These methods are called on your extension's class. (Like +C<< Bugzilla::Extension::Foo->some_method >>). + +=head3 C<new> + +Once every request, this method is called on your extension in order +to create an "instance" of it. (Extensions are treated like objects--they +are instantiated once per request in Bugzilla, and then methods are +called on the object.) + +=head2 Instance Methods + +These are called on an instantiated Extension object. + +=head3 C<enabled> + +This should return C<1> if this extension's hook code should be run +by Bugzilla, and C<0> otherwise. + +=head3 C<package_dir> + +This returns the directory that your extension is located in. + +If this is an extension that was installed via CPAN, the directory will +be the path to F<Bugzilla/Extension/Foo/>, if C<Foo.pm> is the name of your +extension. + +If you want to override this method, and you have a F<Config.pm>, you must +override this method in F<Config.pm>. + +=head3 C<template_dir> + +The directory that your package's templates are in. + +This defaults to the C<template> subdirectory of the L</package_dir>. + +If you want to override this method, and you have a F<Config.pm>, you must +override this method in F<Config.pm>. + +=head3 C<lib_dir> + +The directory where your extension's libraries are. + +This defaults to the C<lib> subdirectory of the L</package_dir>. + +If you want to override this method, and you have a F<Config.pm>, you must +override this method in F<Config.pm>. + +=head1 BUGZILLA::EXTENSION CLASS METHODS + +These are used internally by Bugzilla to load and set up extensions. +If you are an extension author, you don't need to care about these. + +=head2 C<load> + +Takes two arguments, the path to F<Extension.pm> and the path to F<Config.pm>, +for an extension. Loads the extension's code packages into memory using +C<require>, does some sanity-checking on the extension, and returns the +package name of the loaded extension. + +=head2 C<load_all> + +Calls L</load> for every enabled extension installed into Bugzilla, +and returns an arrayref of all the package names that were loaded. diff --git a/Bugzilla/Field/CVS/Entries b/Bugzilla/Field/CVS/Entries index bafcb1cfc..7bc6e4bd5 100644 --- a/Bugzilla/Field/CVS/Entries +++ b/Bugzilla/Field/CVS/Entries @@ -1,2 +1,2 @@ -/Choice.pm/1.13/Thu Jul 23 21:33:54 2009//TBUGZILLA-3_5_2 +/Choice.pm/1.13/Thu Jul 23 21:33:54 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Field/CVS/Tag b/Bugzilla/Field/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Field/CVS/Tag +++ b/Bugzilla/Field/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm index 8315a3ef6..d33b14d31 100644 --- a/Bugzilla/Flag.pm +++ b/Bugzilla/Flag.pm @@ -533,7 +533,7 @@ sub update_flags { my @new_summaries = $class->snapshot($self->flags); my @changes = $class->update_activity(\@old_summaries, \@new_summaries); - Bugzilla::Hook::process('flag-end_of_update', { object => $self, + Bugzilla::Hook::process('flag_end_of_update', { object => $self, timestamp => $timestamp, old_flags => \@old_summaries, new_flags => \@new_summaries, @@ -790,9 +790,9 @@ sub extract_flags_from_cgi { my ($class, $bug, $attachment, $vars, $skip) = @_; my $cgi = Bugzilla->cgi; - my $match_status = Bugzilla::User::match_field($cgi, { + my $match_status = Bugzilla::User::match_field({ '^requestee(_type)?-(\d+)$' => { 'type' => 'multi' }, - }, $skip); + }, undef, $skip); $vars->{'match_field'} = 'requestee'; if ($match_status == USER_MATCH_FAILED) { diff --git a/Bugzilla/Group.pm b/Bugzilla/Group.pm index 2e8a975d2..c936593bc 100644 --- a/Bugzilla/Group.pm +++ b/Bugzilla/Group.pm @@ -84,19 +84,47 @@ sub user_regexp { return $_[0]->{'userregexp'}; } sub is_active { return $_[0]->{'isactive'}; } sub icon_url { return $_[0]->{'icon_url'}; } +sub bugs { + my $self = shift; + return $self->{bugs} if exists $self->{bugs}; + my $bug_ids = Bugzilla->dbh->selectcol_arrayref( + 'SELECT bug_id FROM bug_group_map WHERE group_id = ?', + undef, $self->id); + require Bugzilla::Bug; + $self->{bugs} = Bugzilla::Bug->new_from_list($bug_ids); + return $self->{bugs}; +} + sub members_direct { my ($self) = @_; - return $self->{members_direct} if defined $self->{members_direct}; + $self->{members_direct} ||= $self->_get_members(GRANT_DIRECT); + return $self->{members_direct}; +} + +sub members_non_inherited { + my ($self) = @_; + $self->{members_non_inherited} ||= $self->_get_members(); + return $self->{members_non_inherited}; +} + +# A helper for members_direct and members_non_inherited +sub _get_members { + my ($self, $grant_type) = @_; my $dbh = Bugzilla->dbh; + my $grant_clause = $grant_type ? "AND grant_type = $grant_type" : ""; my $user_ids = $dbh->selectcol_arrayref( - "SELECT user_group_map.user_id + "SELECT DISTINCT user_id FROM user_group_map - WHERE user_group_map.group_id = ? - AND grant_type = " . GRANT_DIRECT . " - AND isbless = 0", undef, $self->id); + WHERE isbless = 0 $grant_clause AND group_id = ?", undef, $self->id); require Bugzilla::User; - $self->{members_direct} = Bugzilla::User->new_from_list($user_ids); - return $self->{members_direct}; + return Bugzilla::User->new_from_list($user_ids); +} + +sub flag_types { + my $self = shift; + require Bugzilla::FlagType; + $self->{flag_types} ||= Bugzilla::FlagType::match({ group => $self->id }); + return $self->{flag_types}; } sub grant_direct { @@ -131,6 +159,30 @@ sub granted_by_direct { return $self->{granted_by_direct}->{$type}; } +sub products { + my $self = shift; + return $self->{products} if exists $self->{products}; + my $product_data = Bugzilla->dbh->selectall_arrayref( + 'SELECT product_id, entry, membercontrol, othercontrol, + canedit, editcomponents, editbugs, canconfirm + FROM group_control_map WHERE group_id = ?', {Slice=>{}}, + $self->id); + my @ids = map { $_->{product_id} } @$product_data; + require Bugzilla::Product; + my $products = Bugzilla::Product->new_from_list(\@ids); + my %data_map = map { $_->{product_id} => $_ } @$product_data; + my @retval; + foreach my $product (@$products) { + # Data doesn't need to contain product_id--we already have + # the product object. + delete $data_map{$product->id}->{product_id}; + push(@retval, { controls => $data_map{$product->id}, + product => $product }); + } + $self->{products} = \@retval; + return $self->{products}; +} + ############################### #### Methods #### ############################### @@ -165,6 +217,66 @@ sub update { return $changes; } +sub check_remove { + my ($self, $params) = @_; + + # System groups cannot be deleted! + if (!$self->is_bug_group) { + ThrowUserError("system_group_not_deletable", { name => $self->name }); + } + + # Groups having a special role cannot be deleted. + my @special_groups; + foreach my $special_group (GROUP_PARAMS) { + if ($self->name eq Bugzilla->params->{$special_group}) { + push(@special_groups, $special_group); + } + } + if (scalar(@special_groups)) { + ThrowUserError('group_has_special_role', + { name => $self->name, + groups => \@special_groups }); + } + + return if $params->{'test_only'}; + + my $cantdelete = 0; + + my $users = $self->members_non_inherited; + if (scalar(@$users) && !$params->{'remove_from_users'}) { + $cantdelete = 1; + } + + my $bugs = $self->bugs; + if (scalar(@$bugs) && !$params->{'remove_from_bugs'}) { + $cantdelete = 1; + } + + my $products = $self->products; + if (scalar(@$products) && !$params->{'remove_from_products'}) { + $cantdelete = 1; + } + + my $flag_types = $self->flag_types; + if (scalar(@$flag_types) && !$params->{'remove_from_flags'}) { + $cantdelete = 1; + } + + ThrowUserError('group_cannot_delete', { group => $self }) if $cantdelete; +} + +sub remove_from_db { + my $self = shift; + my $dbh = Bugzilla->dbh; + $self->check_remove(@_); + $dbh->do('DELETE FROM whine_schedules + WHERE mailto_type = ? AND mailto = ?', + undef, MAILTO_GROUP, $self->id); + # All the other tables will be handled by foreign keys when we + # drop the main "groups" row. + $self->SUPER::remove_from_db(@_); +} + # Add missing entries in bug_group_map for bugs created while # a mandatory group was disabled and which is now enabled again. sub _enforce_mandatory { @@ -224,20 +336,6 @@ sub _rederive_regexp { } } -sub members_non_inherited { - my ($self) = @_; - return $self->{members_non_inherited} - if exists $self->{members_non_inherited}; - - my $member_ids = Bugzilla->dbh->selectcol_arrayref( - 'SELECT DISTINCT user_id FROM user_group_map - WHERE isbless = 0 AND group_id = ?', - undef, $self->id) || []; - require Bugzilla::User; - $self->{members_non_inherited} = Bugzilla::User->new_from_list($member_ids); - return $self->{members_non_inherited}; -} - sub flatten_group_membership { my ($self, @groups) = @_; @@ -414,6 +512,53 @@ be a member of this group. =over +=item C<check_remove> + +=over + +=item B<Description> + +Determines whether it's OK to remove this group from the database, and +throws an error if it's not OK. + +=item B<Params> + +=over + +=item C<test_only> + +C<boolean> If you want to only check if the group can be deleted I<at all>, +under any circumstances, specify C<test_only> to just do the most basic tests +(the other parameters will be ignored in this situation, as those tests won't +be run). + +=item C<remove_from_users> + +C<boolean> True if it would be OK to remove all users who are in this group +from this group. + +=item C<remove_from_bugs> + +C<boolean> True if it would be OK to remove all bugs that are in this group +from this group. + +=item C<remove_from_flags> + +C<boolean> True if it would be OK to stop all flagtypes that reference +this group from referencing this group (e.g., as their grantgroup or +requestgroup). + +=item C<remove_from_products> + +C<boolean> True if it would be OK to remove this group from all group controls +on products. + +=back + +=item B<Returns> (nothing) + +=back + =item C<members_non_inherited> Returns an arrayref of L<Bugzilla::User> objects representing people who are diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index b35a338d6..44b5c3c58 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -18,86 +18,39 @@ # Rights Reserved. # # Contributor(s): Zach Lipton <zach@zachlipton.com> -# +# Max Kanat-Alexander <mkanat@bugzilla.org> package Bugzilla::Hook; use strict; -use Bugzilla::Constants; -use Bugzilla::Util; -use Bugzilla::Error; - -use Scalar::Util qw(blessed); - -BEGIN { - if ($ENV{MOD_PERL}) { - require ModPerl::Const; - import ModPerl::Const -compile => 'EXIT'; - } - else { - # Create a fake constant. We have to do this in a string eval, - # otherwise this will always be defined. - eval('sub ModPerl::EXIT;'); - } -} - sub process { my ($name, $args) = @_; - - # get a list of all extensions - my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*"); - - # check each extension to see if it uses the hook - # if so, invoke the extension source file: - foreach my $extension (@extensions) { - # all of these variables come directly from code or directory names. - # If there's malicious data here, we have much bigger issues to - # worry about, so we can safely detaint them: - trick_taint($extension); - # Skip CVS directories and any hidden files/dirs. - next if $extension =~ m{/CVS$} || $extension =~ m{/\.[^/]+$}; - next if -e "$extension/disabled"; - if (-e $extension.'/code/'.$name.'.pl') { - Bugzilla->hook_args($args); - # Allow extensions to load their own libraries. - local @INC = ("$extension/lib", @INC); - do($extension.'/code/'.$name.'.pl'); - if ($@) { - if ($ENV{MOD_PERL} and blessed $@ and $@ == ModPerl::EXIT) { - exit; - } - else { - ThrowCodeError('extension_invalid', - { errstr => $@, name => $name, - extension => $extension }); - } - } - # Flush stored data. - Bugzilla->hook_args({}); + + _entering($name); + + foreach my $extension (@{ Bugzilla->extensions }) { + if ($extension->can($name)) { + $extension->$name($args); } } + + _leaving($name); } -sub enabled_plugins { - my $extdir = bz_locations()->{'extensionsdir'}; - my @extensions = glob("$extdir/*"); - my %enabled; - foreach my $extension (@extensions) { - trick_taint($extension); - my $extname = $extension; - $extname =~ s{^\Q$extdir\E/}{}; - next if $extname eq 'CVS' || $extname =~ /^\./; - next if -e "$extension/disabled"; - # Allow extensions to load their own libraries. - local @INC = ("$extension/lib", @INC); - $enabled{$extname} = do("$extension/info.pl"); - ThrowCodeError('extension_invalid', - { errstr => $@, name => 'version', - extension => $extension }) if $@; +sub in { + my $hook_name = shift; + my $currently_in = Bugzilla->request_cache->{hook_stack}->[-1] || ''; + return $hook_name eq $currently_in ? 1 : 0; +} - } +sub _entering { + my ($hook_name) = @_; + my $hook_stack = Bugzilla->request_cache->{hook_stack} ||= []; + push(@$hook_stack, $hook_name); +} - return \%enabled; +sub _leaving { + pop @{ Bugzilla->request_cache->{hook_stack} }; } 1; @@ -122,39 +75,16 @@ hooks. When a piece of standard Bugzilla code wants to allow an extension to perform additional functions, it uses Bugzilla::Hook's L</process> subroutine to invoke any extension code if installed. -There is a sample extension in F<extensions/example/> that demonstrates -most of the things described in this document, as well as many of the -hooks available. +The implementation of extensions is described in L<Bugzilla::Extension>. =head2 How Hooks Work -When a hook named C<HOOK_NAME> is run, Bugzilla will attempt to invoke any -source files named F<extensions/*/code/HOOK_NAME.pl>. - -So, for example, if your extension is called "testopia", and you -want to have code run during the L</install-update_db> hook, you -would have a file called F<extensions/testopia/code/install-update_db.pl> -that contained perl code to run during that hook. +When a hook named C<HOOK_NAME> is run, Bugzilla looks through all +enabled L<extensions|Bugzilla::Extension> for extensions that implement +a subroutined named C<HOOK_NAME>. -=head2 Arguments Passed to Hooks - -Some L<hooks|/HOOKS> have params that are passed to them. - -These params are accessible through L<Bugzilla/hook_args>. -That returns a hashref. Very frequently, if you want your -hook to do anything, you have to modify these variables. - -You may also want to use L<Bugzilla/input_params> to get parameters -that were passed to the current CGI script or WebService method. - -=head2 Versioning Extensions - -Every extension must have a file in its root called F<info.pl>. -This file must return a hash when called with C<do>. -The hash must contain a 'version' key with the current version of the -extension. Extension authors can also add any extra infomration to this hash if -required, by adding a new key beginning with x_ which will not be used the -core Bugzilla code. +See L<Bugzilla::Extension> for more details about how an extension +can run code during a hook. =head1 SUBROUTINES @@ -194,7 +124,7 @@ This describes what hooks exist in Bugzilla currently. They are mostly in alphabetical order, but some related hooks are near each other instead of being alphabetical. -=head2 attachment-process_data +=head2 attachment_process_data This happens at the very beginning process of the attachment creation. You can edit the attachment content itself as well as all attributes @@ -212,7 +142,7 @@ L<Bugzilla::Attachment/create>. The data it contains hasn't been checked yet. =back -=head2 auth-login_methods +=head2 auth_login_methods This allows you to add new login types to Bugzilla. (See L<Bugzilla::Auth::Login>.) @@ -243,16 +173,16 @@ login methods that weren't passed to L<Bugzilla::Auth/login>.) =back -=head2 auth-verify_methods +=head2 auth_verify_methods -This works just like L</auth-login_methods> except it's for +This works just like L</auth_login_methods> except it's for login verification methods (See L<Bugzilla::Auth::Verify>.) It also -takes a C<modules> parameter, just like L</auth-login_methods>. +takes a C<modules> parameter, just like L</auth_login_methods>. -=head2 bug-columns +=head2 bug_columns This allows you to add new fields that will show up in every L<Bugzilla::Bug> -object. Note that you will also need to use the L</bug-fields> hook in +object. Note that you will also need to use the L</bug_fields> hook in conjunction with this hook to make this work. Params: @@ -264,7 +194,7 @@ your column name(s) onto the array. =back -=head2 bug-end_of_create +=head2 bug_end_of_create This happens at the end of L<Bugzilla::Bug/create>, after all other changes are made to the database. This occurs inside a database transaction. @@ -280,7 +210,7 @@ values. =back -=head2 bug-end_of_create_validators +=head2 bug_end_of_create_validators This happens during L<Bugzilla::Bug/create>, after all parameters have been validated, but before anything has been inserted into the database. @@ -295,7 +225,7 @@ A hashref. The validated parameters passed to C<create>. =back -=head2 bug-end_of_update +=head2 bug_end_of_update This happens at the end of L<Bugzilla::Bug/update>, after all other changes are made to the database. This generally occurs inside a database transaction. @@ -314,13 +244,13 @@ C<$changes-E<gt>{field} = [old, new]> =back -=head2 bug-fields +=head2 bug_fields Allows the addition of database fields from the bugs table to the standard list of allowable fields in a L<Bugzilla::Bug> object, so that you can call the field as a method. -Note: You should add here the names of any fields you added in L</bug-columns>. +Note: You should add here the names of any fields you added in L</bug_columns>. Params: @@ -331,7 +261,7 @@ your column name(s) onto the array. =back -=head2 bug-format_comment +=head2 bug_format_comment Allows you to do custom parsing on comments before they are displayed. You do this by returning two regular expressions: one that matches the section you @@ -396,7 +326,7 @@ the summary line). =back -=head2 buglist-columns +=head2 buglist_columns This happens in buglist.cgi after the standard columns have been defined and right before the display column determination. It gives you the opportunity @@ -424,7 +354,7 @@ The definition is structured as: =back -=head2 colchange-columns +=head2 colchange_columns This happens in F<colchange.cgi> right after the list of possible display columns have been defined and gives you the opportunity to add additional @@ -435,12 +365,11 @@ Params: =over =item C<columns> - An arrayref containing an array of column IDs. Any IDs -added by this hook must have been defined in the the buglist-columns hook. -See L</buglist-columns>. +added by this hook must have been defined in the the L</buglist_columns> hook. =back -=head2 config-add_panels +=head2 config_add_panels If you want to add new panels to the Parameters administrative interface, this is where you do it. @@ -461,7 +390,7 @@ extension.) =back -=head2 config-modify_panels +=head2 config_modify_panels This is how you modify already-existing panels in the Parameters administrative interface. For example, if you wanted to add a new @@ -481,11 +410,13 @@ C<get_param_list> for that module. You can modify C<params> and your changes will be reflected in the interface. Adding new keys to C<panels> will have no effect. You should use -L</config-add_panels> if you want to add new panels. +L</config_add_panels> if you want to add new panels. =back -=head2 enter_bug-entrydefaultvars +=head2 enter_bug_entrydefaultvars + +B<DEPRECATED> - Use L</template_before_process> instead. This happens right before the template is loaded on enter_bug.cgi. @@ -497,7 +428,7 @@ Params: =back -=head2 flag-end_of_update +=head2 flag_end_of_update This happens at the end of L<Bugzilla::Flag/update_flags>, after all other changes are made to the database and after emails are sent. It gives you a before/after @@ -523,7 +454,7 @@ changed flags, and search for a specific condition like C<added eq 'review-'>. =back -=head2 install-before_final_checks +=head2 install_before_final_checks Allows execution of custom code before the final checks are done in checksetup.pl. @@ -538,44 +469,20 @@ A flag that indicates whether or not checksetup is running in silent mode. =back -=head2 install-requirements - -Because of the way Bugzilla installation works, there can't be a normal -hook during the time that F<checksetup.pl> checks what modules are -installed. (C<Bugzilla::Hook> needs to have those modules installed--it's -a chicken-and-egg problem.) - -So instead of the way hooks normally work, this hook just looks for two -subroutines (or constants, since all constants are just subroutines) in -your file, called C<OPTIONAL_MODULES> and C<REQUIRED_MODULES>, -which should return arrayrefs in the same format as C<OPTIONAL_MODULES> and -C<REQUIRED_MODULES> in L<Bugzilla::Install::Requirements>. - -These subroutines will be passed an arrayref that contains the current -Bugzilla requirements of the same type, in case you want to modify -Bugzilla's requirements somehow. (Probably the most common would be to -alter a version number or the "feature" element of C<OPTIONAL_MODULES>.) - -F<checksetup.pl> will add these requirements to its own. - -Please remember--if you put something in C<REQUIRED_MODULES>, then -F<checksetup.pl> B<cannot complete> unless the user has that module -installed! So use C<OPTIONAL_MODULES> whenever you can. - -=head2 install-update_db +=head2 install_update_db This happens at the very end of all the tables being updated during an installation or upgrade. If you need to modify your custom schema, do it here. No params are passed. -=head2 db_schema-abstract_schema +=head2 db_schema_abstract_schema This allows you to add tables to Bugzilla. Note that we recommend that you prefix the names of your tables with some word, so that they don't conflict with any future Bugzilla tables. If you wish to add new I<columns> to existing Bugzilla tables, do that -in L</install-update_db>. +in L</install_update_db>. Params: @@ -588,7 +495,7 @@ database when run. =back -=head2 mailer-before_send +=head2 mailer_before_send Called right before L<Bugzilla::Mailer> sends a message to the MTA. @@ -598,9 +505,12 @@ Params: =item C<email> - The C<Email::MIME> object that's about to be sent. +=item C<mailer_args> - An arrayref that's passed as C<mailer_args> to +L<Email::Send/new>. + =back -=head2 object-before_create +=head2 object_before_create This happens at the beginning of L<Bugzilla::Object/create>. @@ -620,7 +530,7 @@ A hashref. The set of named parameters passed to C<create>. =back -=head2 object-before_set +=head2 object_before_set Called during L<Bugzilla::Object/set>, before any actual work is done. You can use this to perform actions before a value is changed for @@ -646,7 +556,7 @@ The value being set on the object. =back -=head2 object-end_of_create_validators +=head2 object_end_of_create_validators Called at the end of L<Bugzilla::Object/run_create_validators>. You can use this to run additional validation when creating an object. @@ -671,7 +581,55 @@ validated by the C<VALIDATORS> specified for the object. =back -=head2 page-before_template +=head2 object_end_of_set_all + +This happens at the end of L<Bugzilla::Object/set_all>. This is a +good place to call custom set_ functions on objects, or to make changes +to an object before C<update()> is called. + +Params: + +=over + +=item C<object> + +The L<Bugzilla::Object> which is being updated. You will probably want to +do something like C<< if ($object->isa('Some::Class')) >> in your code to +limit your changes to only certain subclasses of Bugzilla::Object. + +=item C<params> + +A hashref. The set of named parameters passed to C<set_all>. + +=back + +=head2 object_end_of_update + +Called during L<Bugzilla::Object/update>, after changes are made +to the database, but while still inside a transaction. + +Params: + +=over + +=item C<object> + +The object that C<update> was called on. You will probably want to +do something like C<< if ($object->isa('Some::Class')) >> in your code to +limit your changes to only certain subclasses of Bugzilla::Object. + +=item C<old_object> + +The object as it was before it was updated. + +=item C<changes> + +The fields that have been changed, in the same format that +L<Bugzilla::Object/update> returns. + +=back + +=head2 page_before_template This is a simple way to add your own pages to Bugzilla. This hooks C<page.cgi>, which loads templates from F<template/en/default/pages>. For example, @@ -698,7 +656,9 @@ your template. =back -=head2 product-confirm_delete +=head2 product_confirm_delete + +B<DEPRECATED> - Use L</template_before_process> instead. Called before displaying the confirmation message when deleting a product. @@ -710,7 +670,7 @@ Params: =back -=head2 sanitycheck-check +=head2 sanitycheck_check This hook allows for extra sanity checks to be added, for use by F<sanitycheck.cgi>. @@ -724,7 +684,22 @@ to the user. (F<sanitycheck.cgi>'s C<Status>) =back -=head2 sanitycheck-repair +=head2 product_end_of_create + +Called right after a new product has been created, allowing additional +changes to be made to the new product's attributes. This occurs inside of +a database transaction, so if the hook throws an error all previous +changes will be rolled back including the creation of the new product. + +Params: + +=over + +=item C<product> - The new L<Bugzilla::Product> object that was just created. + +=back + +=head2 sanitycheck_repair This hook allows for extra sanity check repairs to be made, for use by F<sanitycheck.cgi>. @@ -738,13 +713,46 @@ to the user. (F<sanitycheck.cgi>'s C<Status>) =back -=head2 template-before_process +=head2 template_before_create + +This hook allows you to modify the configuration of L<Bugzilla::Template> +objects before they are created. For example, you could add a new +global template variable this way. + +Params: + +=over + +=item C<config> + +A hashref--the configuration that will be passed to L<Template/new>. +See L<http://template-toolkit.org/docs/modules/Template.html#section_CONFIGURATION_SUMMARY> +for information on how this configuration variable is structured (or just +look at the code for C<create> in L<Bugzilla::Template>.) + +=back + +=head2 template_before_process + +This hook is called any time Bugzilla processes a template file, including +calls to C<< $template->process >>, C<PROCESS> statements in templates, +and C<INCLUDE> statements in templates. It is not called when templates +process a C<BLOCK>, only when they process a file. This hook allows you to define additional variables that will be available to -the template being processed. You probably want to restrict your hook -to operating only if a certain file is being loaded (which is why you -get a C<file> argument below). Otherwise, modifying the C<vars> argument -will affect every single template in Bugzilla. +the template being processed, or to modify the variables that are currently +in the template. It works exactly as though you inserted code to modify +template variables at the top of a template. + +You probably want to restrict this hook to operating only if a certain +file is being processed (which is why you get a C<file> argument +below). Otherwise, modifying the C<vars> argument will affect every single +template in Bugzilla. + +B<Note:> This hook is not called if you are already in this hook. +(That is, it won't call itself recursively.) This prevents infinite +recursion in situations where this hook needs to process a template +(such as if this hook throws an error). Params: @@ -752,20 +760,22 @@ Params: =item C<vars> -The template vars hashref--these are the values that get passed to the -template. Adding new keys to this hashref will cause those new values -to also get passed to the template. +This is the entire set of variables that the current template can see. +Technically, this is a L<Template::Stash> object, but you can just +use it like a hashref if you want. -=item C<file> +=item C<file> -The name of the template being processed. This is relative -to the main template directory for the language (i.e. for +The name of the template file being processed. This is relative to the +main template directory for the language (i.e. for F<template/en/default/bug/show.html.tmpl>, this variable will contain C<bug/show.html.tmpl>). -=item C<template> +=item C<context> -The L<Bugzilla::Template> object that C<process> was called on. +A L<Template::Context> object. Usually you will not have to use this, but +if you need information about the template itself (other than just its +name), you can get it from here. =back @@ -802,7 +812,7 @@ plugins). =back -=head2 webservice-error_codes +=head2 webservice_error_codes If your webservice extension throws custom errors, you can set numeric codes for those errors here. @@ -820,3 +830,7 @@ A hash that maps the names of errors (like C<invalid_param>) to numbers. See L<Bugzilla::WebService::Constants/WS_ERROR_CODE> for an example. =back + +=head1 SEE ALSO + +L<Bugzilla::Extension> diff --git a/Bugzilla/Install.pm b/Bugzilla/Install.pm index a32063ca7..10804ab70 100644 --- a/Bugzilla/Install.pm +++ b/Bugzilla/Install.pm @@ -27,6 +27,7 @@ package Bugzilla::Install; use strict; use Bugzilla::Component; +use Bugzilla::Config qw(:admin); use Bugzilla::Constants; use Bugzilla::Error; use Bugzilla::Group; @@ -310,6 +311,12 @@ sub make_admin { $group_insert->execute($user->id, $editusers->id, 0, GRANT_DIRECT); }; + # If there is no maintainer set, make this user the maintainer. + if (!Bugzilla->params->{'maintainer'}) { + SetParam('maintainer', $user->email); + write_params(); + } + print "\n", get_text('install_admin_created', { user => $user }), "\n"; } diff --git a/Bugzilla/Install/CVS/Entries b/Bugzilla/Install/CVS/Entries index 959a04086..03b19e048 100644 --- a/Bugzilla/Install/CVS/Entries +++ b/Bugzilla/Install/CVS/Entries @@ -1,7 +1,7 @@ -/CPAN.pm/1.2/Sun Dec 23 05:43:44 2007//TBUGZILLA-3_5_2 -/DB.pm/1.74/Sun Nov 1 19:49:25 2009//TBUGZILLA-3_5_2 -/Filesystem.pm/1.40/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_2 -/Localconfig.pm/1.18/Wed Sep 30 11:42:54 2009//TBUGZILLA-3_5_2 -/Requirements.pm/1.74/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 -/Util.pm/1.20/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 +/CPAN.pm/1.2/Sun Dec 23 05:43:44 2007//TBUGZILLA-3_5_3 +/DB.pm/1.83/Thu Dec 31 13:01:48 2009//TBUGZILLA-3_5_3 +/Filesystem.pm/1.47/Mon Feb 1 00:47:55 2010//TBUGZILLA-3_5_3 +/Localconfig.pm/1.18/Wed Sep 30 11:42:54 2009//TBUGZILLA-3_5_3 +/Requirements.pm/1.76/Thu Nov 26 02:02:07 2009//TBUGZILLA-3_5_3 +/Util.pm/1.26/Sun Jan 31 17:38:19 2010//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Install/CVS/Tag b/Bugzilla/Install/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Install/CVS/Tag +++ b/Bugzilla/Install/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 51d258227..f6d6edcb1 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -459,8 +459,10 @@ sub update_table_definitions { _move_data_nomail_into_db(); # The products table lacked sensible defaults. - $dbh->bz_alter_column('products', 'milestoneurl', - {TYPE => 'TINYTEXT', NOTNULL => 1, DEFAULT => "''"}); + if ($dbh->bz_column_info('products', 'milestoneurl')) { + $dbh->bz_alter_column('products', 'milestoneurl', + {TYPE => 'TINYTEXT', NOTNULL => 1, DEFAULT => "''"}); + } if ($dbh->bz_column_info('products', 'disallownew')){ $dbh->bz_alter_column('products', 'disallownew', {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 0}); @@ -586,11 +588,19 @@ sub update_table_definitions { # 2009-11-01 LpSolit@gmail.com - Bug 525025 _fix_invalid_custom_field_names(); + _set_attachment_comment_types(); + + $dbh->bz_drop_column('products', 'milestoneurl'); + + _add_allows_unconfirmed_to_product_table(); + _convert_flagtypes_fks_to_set_null(); + _fix_decimal_types(); + ################################################################ # New --TABLE-- changes should go *** A B O V E *** this point # ################################################################ - Bugzilla::Hook::process('install-update_db'); + Bugzilla::Hook::process('install_update_db'); # We do this here because otherwise the foreign key from # products.classification_id to classifications.id will fail @@ -621,8 +631,6 @@ sub _update_pre_checksetup_bugzillas { {TYPE => 'BOOLEAN', NOTNULL => 1}, 0); } - $dbh->bz_add_column('products', 'milestoneurl', - {TYPE => 'TINYTEXT', NOTNULL => 1}, ''); $dbh->bz_add_column('components', 'initialqacontact', {TYPE => 'TINYTEXT'}); $dbh->bz_add_column('components', 'description', @@ -2815,13 +2823,13 @@ sub _move_data_nomail_into_db { SET disable_mail = 1 WHERE userid = ?'); foreach my $user_to_check (keys %nomail) { - my $uid; - if ($uid = Bugzilla::User::login_to_id($user_to_check)) { - my $user = new Bugzilla::User($uid); - print "\tDisabling email for user ", $user->email, "\n"; - $query->execute($user->id); - delete $nomail{$user->email}; - } + my $uid = $dbh->selectrow_array( + 'SELECT userid FROM profiles WHERE login_name = ?', + undef, $user_to_check); + next if !$uid; + print "\tDisabling email for user $user_to_check\n"; + $query->execute($uid); + delete $nomail{$user_to_check}; } # If there are any nomail entries remaining, move them to nomail.bad @@ -3136,18 +3144,33 @@ sub _add_foreign_keys_to_multiselects { } } +# This subroutine is used in multiple places (for times when we update +# the text of comments), so it takes an argument, $bug_ids, which causes +# it to update bugs_fulltext for those bug_ids instead of populating the +# whole table. sub _populate_bugs_fulltext { + my $bug_ids = shift; my $dbh = Bugzilla->dbh; my $fulltext = $dbh->selectrow_array('SELECT 1 FROM bugs_fulltext ' . $dbh->sql_limit(1)); - # We only populate the table if it's empty... - if (!$fulltext) { - # ... and if there are bugs in the bugs table. - my $bug_ids = $dbh->selectcol_arrayref('SELECT bug_id FROM bugs'); + # We only populate the table if it's empty or if we've been given a + # set of bug ids. + if ($bug_ids or !$fulltext) { + $bug_ids ||= $dbh->selectcol_arrayref('SELECT bug_id FROM bugs'); + # If there are no bugs in the bugs table, there's nothing to populate. return if !@$bug_ids; - print "Populating bugs_fulltext..."; - print " (this can take a long time.)\n"; + my $where = ""; + if ($fulltext) { + print "Updating bugs_fulltext...\n"; + $where = "WHERE " . $dbh->sql_in('bugs.bug_id', $bug_ids); + $dbh->do("DELETE FROM bugs_fulltext WHERE " + . $dbh->sql_in('bug_id', $bug_ids)); + } + else { + print "Populating bugs_fulltext..."; + print " (this can take a long time.)\n"; + } my $newline = $dbh->quote("\n"); $dbh->do( q{INSERT INTO bugs_fulltext (bug_id, short_desc, comments, @@ -3155,12 +3178,13 @@ sub _populate_bugs_fulltext { SELECT bugs.bug_id, bugs.short_desc, } . $dbh->sql_group_concat('longdescs.thetext', $newline) . ', ' . $dbh->sql_group_concat('nopriv.thetext', $newline) . - q{ FROM bugs + qq{ FROM bugs LEFT JOIN longdescs ON bugs.bug_id = longdescs.bug_id LEFT JOIN longdescs AS nopriv ON longdescs.comment_id = nopriv.comment_id - AND nopriv.isprivate = 0 } + AND nopriv.isprivate = 0 + $where } . $dbh->sql_group_by('bugs.bug_id', 'bugs.short_desc')); } } @@ -3235,6 +3259,109 @@ sub _fix_invalid_custom_field_names { } } +sub _set_attachment_comment_type { + my ($type, $string) = @_; + my $dbh = Bugzilla->dbh; + # We check if there are any comments of this type already, first, + # because this is faster than a full LIKE search on the comments, + # and currently this will run every time we run checksetup. + my $test = $dbh->selectrow_array( + "SELECT 1 FROM longdescs WHERE type = $type " . $dbh->sql_limit(1)); + return [] if $test; + my %comments = @{ $dbh->selectcol_arrayref( + "SELECT comment_id, thetext FROM longdescs + WHERE thetext LIKE '$string%'", + {Columns=>[1,2]}) }; + my @comment_ids = keys %comments; + return [] if !scalar @comment_ids; + my $what = "update"; + if ($type == CMT_ATTACHMENT_CREATED) { + $what = "creation"; + } + print "Setting the type field on attachment $what comments...\n"; + my $sth = $dbh->prepare( + 'UPDATE longdescs SET thetext = ?, type = ?, extra_data = ? + WHERE comment_id = ?'); + my $count = 0; + my $total = scalar @comment_ids; + foreach my $id (@comment_ids) { + $count++; + my $text = $comments{$id}; + next if $text !~ /^\Q$string\E(\d+)/; + my $attachment_id = $1; + my @lines = split("\n", $text); + if ($type == CMT_ATTACHMENT_CREATED) { + # Now we have to remove the text up until we find a line that's + # just a single newline, because the old "Created an attachment" + # text included the attachment description underneath it, and in + # Bugzillas before 2.20, that could be wrapped into multiple lines, + # in the database. + while (1) { + my $line = shift @lines; + last if (!defined $line or trim($line) eq ''); + } + } + else { + # However, the "From update of attachment" line is always just + # one line--the first line of the comment. + shift @lines; + } + $text = join("\n", @lines); + $sth->execute($text, $type, $attachment_id, $id); + indicate_progress({ total => $total, current => $count, + every => 25 }); + } + return \@comment_ids; +} + +sub _set_attachment_comment_types { + my $dbh = Bugzilla->dbh; + $dbh->bz_start_transaction(); + my $created_ids = _set_attachment_comment_type( + CMT_ATTACHMENT_CREATED, 'Created an attachment (id='); + my $updated_ids = _set_attachment_comment_type( + CMT_ATTACHMENT_UPDATED, '(From update of attachment '); + $dbh->bz_commit_transaction(); + return unless (@$created_ids or @$updated_ids); + + my @comment_ids = (@$created_ids, @$updated_ids); + + my $bug_ids = $dbh->selectcol_arrayref( + 'SELECT DISTINCT bug_id FROM longdescs WHERE ' + . $dbh->sql_in('comment_id', \@comment_ids)); + _populate_bugs_fulltext($bug_ids); +} + +sub _add_allows_unconfirmed_to_product_table { + my $dbh = Bugzilla->dbh; + if (!$dbh->bz_column_info('products', 'allows_unconfirmed')) { + $dbh->bz_add_column('products', 'allows_unconfirmed', + { TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE' }); + $dbh->do('UPDATE products SET allows_unconfirmed = 1 + WHERE votestoconfirm > 0'); + } +} + +sub _convert_flagtypes_fks_to_set_null { + my $dbh = Bugzilla->dbh; + foreach my $column (qw(request_group_id grant_group_id)) { + my $fk = $dbh->bz_fk_info('flagtypes', $column); + if ($fk and !defined $fk->{DELETE}) { + # checksetup will re-create the FK with the appropriate definition + # at the end of its table upgrades, so we just drop it here. + $dbh->bz_drop_fk('flagtypes', $column); + } + } +} + +sub _fix_decimal_types { + my $dbh = Bugzilla->dbh; + my $type = {TYPE => 'decimal(7,2)', NOTNULL => 1, DEFAULT => '0'}; + $dbh->bz_alter_column('bugs', 'estimated_time', $type); + $dbh->bz_alter_column('bugs', 'remaining_time', $type); + $dbh->bz_alter_column('longdescs', 'work_time', $type); +} + 1; __END__ diff --git a/Bugzilla/Install/Filesystem.pm b/Bugzilla/Install/Filesystem.pm index 6c18d0213..44c34718e 100644 --- a/Bugzilla/Install/Filesystem.pm +++ b/Bugzilla/Install/Filesystem.pm @@ -36,6 +36,7 @@ use Bugzilla::Util; use File::Find; use File::Path; use File::Basename; +use File::Copy qw(move); use IO::File; use POSIX (); @@ -44,8 +45,15 @@ our @EXPORT = qw( update_filesystem create_htaccess fix_all_file_permissions + fix_file_permissions ); +use constant HT_DEFAULT_DENY => <<EOT; +# nothing in this directory is retrievable unless overridden by an .htaccess +# in a subdirectory +deny from all +EOT + # This looks like a constant because it effectively is, but # it has to call other subroutines and read the current filesystem, # so it's defined as a sub. This is not exported, so it doesn't have @@ -123,13 +131,16 @@ sub FILESYSTEM { "$localconfig.old" => { perms => $owner_readable }, - 'docs/makedocs.pl' => { perms => $owner_executable }, + 'contrib/README' => { perms => $owner_readable }, + 'contrib/*/README' => { perms => $owner_readable }, + 'docs/makedocs.pl' => { perms => $owner_executable }, 'docs/style.css' => { perms => $ws_readable }, 'docs/*/rel_notes.txt' => { perms => $ws_readable }, 'docs/*/README.docs' => { perms => $owner_readable }, "$datadir/bugzilla-update.xml" => { perms => $ws_writeable }, "$datadir/params" => { perms => $ws_writeable }, - "$datadir/mailer.testfile" => { perms => $ws_writeable }, + "$datadir/old-params.txt" => { perms => $owner_readable }, + "$extensionsdir/create.pl" => { perms => $owner_executable }, ); # Directories that we want to set the perms on, but not @@ -188,6 +199,8 @@ sub FILESYSTEM { dirs => $owner_dir_readable }, 'docs/*/xml' => { files => $owner_readable, dirs => $owner_dir_readable }, + 'contrib' => { files => $owner_executable, + dirs => $owner_dir_readable, }, ); # --- FILES TO CREATE --- # @@ -197,6 +210,7 @@ sub FILESYSTEM { my %create_dirs = ( $datadir => $ws_dir_full_control, "$datadir/mining" => $ws_dir_readable, + "$datadir/extensions" => $ws_dir_readable, $attachdir => $ws_dir_writeable, $extensionsdir => $ws_dir_readable, graphs => $ws_dir_writeable, @@ -207,7 +221,16 @@ sub FILESYSTEM { # The name of each file, pointing at its default permissions and # default contents. - my %create_files = (); + my %create_files = ( + "$datadir/extensions/additional" => { perms => $ws_readable, + contents => '' }, + # We create this file so that it always has the right owner + # and permissions. Otherwise, the webserver creates it as + # owned by itself, which can cause problems if jobqueue.pl + # or something else is not running as the webserver or root. + "$datadir/mailer.testfile" => { perms => $ws_writeable, + contents => '' }, + ); # Each standard stylesheet has an associated custom stylesheet that # we create. Also, we create placeholders for standard stylesheets @@ -244,21 +267,19 @@ EOT # Because checksetup controls the .htaccess creation separately # by a localconfig variable, these go in a separate variable from # %create_files. - my $ht_default_deny = <<EOT; -# nothing in this directory is retrievable unless overridden by an .htaccess -# in a subdirectory -deny from all -EOT - my %htaccess = ( "$attachdir/.htaccess" => { perms => $ws_readable, - contents => $ht_default_deny }, + contents => HT_DEFAULT_DENY }, "$libdir/Bugzilla/.htaccess" => { perms => $ws_readable, - contents => $ht_default_deny }, + contents => HT_DEFAULT_DENY }, "$extlib/.htaccess" => { perms => $ws_readable, - contents => $ht_default_deny }, + contents => HT_DEFAULT_DENY }, "$templatedir/.htaccess" => { perms => $ws_readable, - contents => $ht_default_deny }, + contents => HT_DEFAULT_DENY }, + 'contrib/.htaccess' => { perms => $ws_readable, + contents => HT_DEFAULT_DENY }, + 't/.htaccess' => { perms => $ws_readable, + contents => HT_DEFAULT_DENY }, '.htaccess' => { perms => $ws_readable, contents => <<EOT # Don't allow people to retrieve non-cgi executable files or our private data @@ -342,6 +363,19 @@ sub update_filesystem { } } + # Move the testfile if we can't write to it, so that we can re-create + # it with the correct permissions below. + my $testfile = "$datadir/mailer.testfile"; + if (-e $testfile and !-w $testfile) { + _rename_file($testfile, "$testfile.old"); + } + + # If old-params.txt exists in the root directory, move it to datadir. + my $oldparamsfile = "old_params.txt"; + if (-e $oldparamsfile) { + _rename_file($oldparamsfile, "$datadir/$oldparamsfile"); + } + _create_files(%files); if ($params->{index_html}) { _create_files(%{$fs->{index_html}}); @@ -437,6 +471,17 @@ sub create_htaccess { } } +sub _rename_file { + my ($from, $to) = @_; + print "Renaming $from to $to...\n"; + if (-e $to) { + warn "$to already exists, not moving\n"; + } + else { + move($from, $to) or warn $!; + } +} + # A helper for the above functions. sub _create_files { my (%files) = @_; @@ -533,12 +578,20 @@ sub _update_old_charts { } } +sub fix_file_permissions { + my ($file) = @_; + return if ON_WINDOWS; + my $perms = FILESYSTEM()->{all_files}->{$file}->{perms}; + # Note that _get_owner_and_group is always silent here. + my ($owner_id, $group_id) = _get_owner_and_group(); + _fix_perms($file, $owner_id, $group_id, $perms); +} sub fix_all_file_permissions { my ($output) = @_; - my $ws_group = Bugzilla->localconfig->{'webservergroup'}; - my $group_id = _check_web_server_group($ws_group, $output); + # _get_owner_and_group also checks that the webservergroup is valid. + my ($owner_id, $group_id) = _get_owner_and_group($output); return if ON_WINDOWS; @@ -549,30 +602,18 @@ sub fix_all_file_permissions { print get_text('install_file_perms_fix') . "\n" if $output; - my $owner_id = POSIX::getuid(); - $group_id = POSIX::getgid() unless defined $group_id; - foreach my $dir (sort keys %dirs) { next unless -d $dir; _fix_perms($dir, $owner_id, $group_id, $dirs{$dir}); } - foreach my $dir (sort keys %recurse_dirs) { - next unless -d $dir; - # Set permissions on the directory itself. - my $perms = $recurse_dirs{$dir}; - _fix_perms($dir, $owner_id, $group_id, $perms->{dirs}); - # Now recurse through the directory and set the correct permissions - # on subdirectories and files. - find({ no_chdir => 1, wanted => sub { - my $name = $File::Find::name; - if (-d $name) { - _fix_perms($name, $owner_id, $group_id, $perms->{dirs}); - } - else { - _fix_perms($name, $owner_id, $group_id, $perms->{files}); - } - }}, $dir); + foreach my $pattern (sort keys %recurse_dirs) { + my $perms = $recurse_dirs{$pattern}; + # %recurse_dirs supports globs + foreach my $dir (glob $pattern) { + next unless -d $dir; + _fix_perms_recursively($dir, $owner_id, $group_id, $perms); + } } foreach my $file (sort keys %files) { @@ -588,6 +629,16 @@ sub fix_all_file_permissions { _fix_cvs_dirs($owner_id, '.'); } +sub _get_owner_and_group { + my ($output) = @_; + my $group_id = _check_web_server_group($output); + return () if ON_WINDOWS; + + my $owner_id = POSIX::getuid(); + $group_id = POSIX::getgid() unless defined $group_id; + return ($owner_id, $group_id); +} + # A helper for fix_all_file_permissions sub _fix_cvs_dirs { my ($owner_id, $dir) = @_; @@ -595,8 +646,13 @@ sub _fix_cvs_dirs { find({ no_chdir => 1, wanted => sub { my $name = $File::Find::name; if ($File::Find::dir =~ /\/CVS/ || $_ eq '.cvsignore' - || (-d $name && $_ eq 'CVS')) { - _fix_perms($name, $owner_id, $owner_gid, 0700); + || (-d $name && $_ =~ /CVS$/)) + { + my $perms = 0600; + if (-d $name) { + $perms = 0700; + } + _fix_perms($name, $owner_id, $owner_gid, $perms); } }}, $dir); } @@ -604,17 +660,39 @@ sub _fix_cvs_dirs { sub _fix_perms { my ($name, $owner, $group, $perms) = @_; #printf ("Changing $name to %o\n", $perms); - chown $owner, $group, $name - or warn install_string('chown_failed', { path => $name, - error => $! }) . "\n"; + + # The webserver should never try to chown files. + if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) { + chown $owner, $group, $name + or warn install_string('chown_failed', { path => $name, + error => $! }) . "\n"; + } chmod $perms, $name or warn install_string('chmod_failed', { path => $name, error => $! }) . "\n"; } +sub _fix_perms_recursively { + my ($dir, $owner_id, $group_id, $perms) = @_; + # Set permissions on the directory itself. + _fix_perms($dir, $owner_id, $group_id, $perms->{dirs}); + # Now recurse through the directory and set the correct permissions + # on subdirectories and files. + find({ no_chdir => 1, wanted => sub { + my $name = $File::Find::name; + if (-d $name) { + _fix_perms($name, $owner_id, $group_id, $perms->{dirs}); + } + else { + _fix_perms($name, $owner_id, $group_id, $perms->{files}); + } + }}, $dir); +} + sub _check_web_server_group { - my ($group, $output) = @_; + my ($output) = @_; + my $group = Bugzilla->localconfig->{'webservergroup'}; my $filename = bz_locations()->{'localconfig'}; my $group_id; @@ -698,4 +776,10 @@ Params: C<$output> - C<true> if you want this function to print Returns: nothing +=item C<fix_file_permissions> + +Given the name of a file, its permissions will be fixed according to +how they are supposed to be set in Bugzilla's current configuration. +If it fails to set the permissions, a warning will be printed to STDERR. + =back diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm index 1fa53de9b..dfdeafb70 100644 --- a/Bugzilla/Install/Requirements.pm +++ b/Bugzilla/Install/Requirements.pm @@ -26,7 +26,8 @@ package Bugzilla::Install::Requirements; use strict; use Bugzilla::Constants; -use Bugzilla::Install::Util qw(vers_cmp install_string); +use Bugzilla::Install::Util qw(vers_cmp install_string + extension_requirement_packages); use List::Util qw(max); use Safe; use Term::ANSIColor; @@ -138,9 +139,9 @@ sub REQUIRED_MODULES { }, ); - my $all_modules = _get_extension_requirements( - 'REQUIRED_MODULES', \@modules); - return $all_modules; + my $extra_modules = _get_extension_requirements('REQUIRED_MODULES'); + push(@modules, @$extra_modules); + return \@modules; }; sub OPTIONAL_MODULES { @@ -154,7 +155,8 @@ sub OPTIONAL_MODULES { { package => 'Chart', module => 'Chart::Lines', - version => '1.0', + # Versions below 2.1 cannot be detected accurately. + version => '2.1', feature => [qw(new_charts old_charts)], }, { @@ -291,9 +293,9 @@ sub OPTIONAL_MODULES { }, ); - my $all_modules = _get_extension_requirements( - 'OPTIONAL_MODULES', \@modules); - return $all_modules; + my $extra_modules = _get_extension_requirements('OPTIONAL_MODULES'); + push(@modules, @$extra_modules); + return \@modules; }; # This maps features to the files that require that feature in order @@ -312,31 +314,20 @@ use constant FEATURE_FILES => ( updates => ['Bugzilla/Update.pm'], ); -# This implements the install-requirements hook described in Bugzilla::Hook. +# This implements the REQUIRED_MODULES and OPTIONAL_MODULES stuff +# described in in Bugzilla::Extension. sub _get_extension_requirements { - my ($function, $base_modules) = @_; - my @all_modules; - # get a list of all extensions - my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*"); - foreach my $extension (@extensions) { - my $file = "$extension/code/install-requirements.pl"; - if (-e $file) { - my $safe = new Safe; - # This is a very liberal Safe. - $safe->permit(qw(:browse require entereval caller)); - $safe->rdo($file); - if ($@) { - warn $@; - next; - } - my $modules = eval { &{$safe->varglob($function)}($base_modules) }; - next unless $modules; - push(@all_modules, @$modules); + my ($function) = @_; + + my $packages = extension_requirement_packages(); + my @modules; + foreach my $package (@$packages) { + if ($package->can($function)) { + my $extra_modules = $package->$function; + push(@modules, @$extra_modules); } } - - unshift(@all_modules, @$base_modules); - return \@all_modules; + return \@modules; }; sub check_requirements { diff --git a/Bugzilla/Install/Util.pm b/Bugzilla/Install/Util.pm index effb39ee8..1c6d5c4ee 100644 --- a/Bugzilla/Install/Util.pm +++ b/Bugzilla/Install/Util.pm @@ -37,6 +37,10 @@ use base qw(Exporter); our @EXPORT_OK = qw( bin_loc get_version_and_os + extension_code_files + extension_package_directory + extension_requirement_packages + extension_template_directory indicate_progress install_string include_languages @@ -77,6 +81,152 @@ sub get_version_and_os { os_ver => $os_details[3] }; } +sub _extension_paths { + my $dir = bz_locations()->{'extensionsdir'}; + my @extension_items = glob("$dir/*"); + my @paths; + foreach my $item (@extension_items) { + my $basename = basename($item); + # Skip CVS directories and any hidden files/dirs. + next if ($basename eq 'CVS' or $basename =~ /^\./); + if (-d $item) { + if (!-e "$item/disabled") { + push(@paths, $item); + } + } + elsif ($item =~ /\.pm$/i) { + push(@paths, $item); + } + } + return @paths; +} + +sub extension_code_files { + my ($requirements_only) = @_; + my @files; + foreach my $path (_extension_paths()) { + my @load_files; + if (-d $path) { + my $extension_file = "$path/Extension.pm"; + my $config_file = "$path/Config.pm"; + if (-e $extension_file) { + push(@load_files, $extension_file); + } + if (-e $config_file) { + push(@load_files, $config_file); + } + + # Don't load Extension.pm if we just want Config.pm and + # we found both. + if ($requirements_only and scalar(@load_files) == 2) { + shift(@load_files); + } + } + else { + push(@load_files, $path); + } + next if !scalar(@load_files); + # We know that these paths are safe, because they came from + # extensionsdir and we checked them specifically for their format. + # Also, the only thing we ever do with them is pass them to "require". + trick_taint($_) foreach @load_files; + push(@files, \@load_files); + } + + my @additional; + my $datadir = bz_locations()->{'datadir'}; + my $addl_file = "$datadir/extensions/additional"; + if (-e $addl_file) { + open(my $fh, '<', $addl_file) || die "$addl_file: $!"; + @additional = map { trim($_) } <$fh>; + close($fh); + } + return (\@files, \@additional); +} + +# Used by _get_extension_requirements in Bugzilla::Install::Requirements. +sub extension_requirement_packages { + # If we're in a .cgi script or some time that's not the requirements phase, + # just use Bugzilla->extensions. This avoids running the below code during + # a normal Bugzilla page, which is important because the below code + # doesn't actually function right if it runs after + # Bugzilla::Extension->load_all (because stuff has already been loaded). + # (This matters because almost every page calls Bugzilla->feature, which + # calls OPTIONAL_MODULES, which calls this method.) + if (eval { Bugzilla->extensions }) { + return Bugzilla->extensions; + } + my $packages = _cache()->{extension_requirement_packages}; + return $packages if $packages; + $packages = []; + my %package_map; + + my ($file_sets, $extra_packages) = extension_code_files('requirements only'); + foreach my $file_set (@$file_sets) { + my $file = shift @$file_set; + my $name = require $file; + if ($name =~ /^\d+$/) { + die install_string('extension_must_return_name', + { file => $file, returned => $name }); + } + my $package = "Bugzilla::Extension::$name"; + if ($package->can('package_dir')) { + $package->package_dir($file); + } + else { + extension_package_directory($package, $file); + } + $package_map{$file} = $package; + push(@$packages, $package); + } + foreach my $package (@$extra_packages) { + eval("require $package") || die $@; + push(@$packages, $package); + } + + _cache()->{extension_requirement_packages} = $packages; + # Used by Bugzilla::Extension->load if it's called after this method + # (which only happens during checksetup.pl, currently). + _cache()->{extension_requirement_package_map} = \%package_map; + return $packages; +} + +# Used in this file and in Bugzilla::Extension. +sub extension_template_directory { + my $extension = shift; + my $class = ref($extension) || $extension; + my $base_dir = extension_package_directory($class); + return "$base_dir/template"; +} + +# For extensions that are in the extensions/ dir, this both sets and fetches +# the name of the directory that stores an extension's "stuff". We need this +# when determining the template directory for extensions (or other things +# that are relative to the extension's base directory). +sub extension_package_directory { + my ($invocant, $file) = @_; + my $class = ref($invocant) || $invocant; + + my $var; + { no strict 'refs'; $var = \${"${class}::EXTENSION_PACKAGE_DIR"}; } + if ($file) { + $$var = dirname($file); + } + my $value = $$var; + + # This is for extensions loaded from data/extensions/additional. + if (!$value) { + my $short_path = $class; + $short_path =~ s/::/\//g; + $short_path .= ".pm"; + my $long_path = $INC{$short_path}; + die "$short_path is not in \%INC" if !$long_path; + $value = $long_path; + $value =~ s/\.pm//; + } + return $value; +} + sub indicate_progress { my ($params) = @_; my $current = $params->{current}; @@ -91,8 +241,8 @@ sub indicate_progress { sub install_string { my ($string_id, $vars) = @_; - _cache()->{template_include_path} ||= template_include_path(); - my $path = _cache()->{template_include_path}; + _cache()->{install_string_path} ||= template_include_path(); + my $path = _cache()->{install_string_path}; my $string_template; # Find the first template that defines this string. @@ -132,10 +282,10 @@ sub include_languages { # function in Bugzilla->request_cache. This is done to improve the # performance of the template processing. my $to_be_cached = 0; - if (exists $ENV{'SERVER_SOFTWARE'} and not @_) { - my $cache = Bugzilla->request_cache; + if (not @_) { + my $cache = _cache(); if (exists $cache->{include_languages}) { - return @{$cache->{include_languages}} + return @{ $cache->{include_languages} }; } $to_be_cached = 1; } @@ -200,34 +350,84 @@ sub include_languages { # Cache the result if we are in CGI mode and called without parameter # (see the comment at the top of this function). if ($to_be_cached) { - my $cache = Bugzilla->request_cache; - $cache->{include_languages} = \@usedlanguages; + _cache()->{include_languages} = \@usedlanguages; } return @usedlanguages; } + +# Used by template_include_path +sub _template_lang_directories { + my ($languages, $templatedir) = @_; -sub template_include_path { - my @usedlanguages = include_languages(@_); - # Now, we add template directories in the order they will be searched: - + my @add = qw(custom default); + my $project = bz_locations->{'project'}; + unshift(@add, $project) if $project; + + my @result; + foreach my $lang (@$languages) { + foreach my $dir (@add) { + my $full_dir = "$templatedir/$lang/$dir"; + if (-d $full_dir) { + trick_taint($full_dir); + push(@result, $full_dir); + } + } + } + return @result; +} + +# Used by template_include_path. +sub _template_base_directories { # First, we add extension template directories, because extension templates # override standard templates. Extensions may be localized in the same way # that Bugzilla templates are localized. - my @include_path; - my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*"); - foreach my $extension (@extensions) { - next if -e "$extension/disabled"; - foreach my $lang (@usedlanguages) { - _add_language_set(\@include_path, $lang, "$extension/template"); + # + # We use extension_requirement_packages instead of Bugzilla->extensions + # because this fucntion is called during the requirements phase of + # installation (so Bugzilla->extensions isn't available). + my $extensions = extension_requirement_packages(); + my @template_dirs; + foreach my $extension (@$extensions) { + my $dir; + # If there's a template_dir method available in the extension + # package, then call it. Note that this has to be defined in + # Config.pm for extensions that have a Config.pm, to be effective + # during the Requirements phase of checksetup.pl. + if ($extension->can('template_dir')) { + $dir = $extension->template_dir; + } + else { + $dir = extension_template_directory($extension); + } + if (-d $dir) { + push(@template_dirs, $dir); } } - - # Then, we add normal template directories, sorted by language. - foreach my $lang (@usedlanguages) { - _add_language_set(\@include_path, $lang); + + push(@template_dirs, bz_locations()->{'templatedir'}); + return \@template_dirs; +} + +sub template_include_path { + my ($params) = @_; + my @used_languages = include_languages(@_); + # Now, we add template directories in the order they will be searched: + my $template_dirs = _template_base_directories(); + + my @include_path; + foreach my $template_dir (@$template_dirs) { + my @lang_dirs = _template_lang_directories(\@used_languages, + $template_dir); + # Hooks get each set of extension directories separately. + if ($params->{hook}) { + push(@include_path, \@lang_dirs); + } + # Whereas everything else just gets a whole INCLUDE_PATH. + else { + push(@include_path, @lang_dirs); + } } - return \@include_path; } @@ -289,24 +489,6 @@ sub _get_string_from_file { return $strings{$string_id}; } -# Used by template_include_path. -sub _add_language_set { - my ($array, $lang, $templatedir) = @_; - - $templatedir ||= bz_locations()->{'templatedir'}; - my @add = ("$templatedir/$lang/custom", "$templatedir/$lang/default"); - - my $project = bz_locations->{'project'}; - unshift(@add, "$templatedir/$lang/$project") if $project; - - foreach my $dir (@add) { - if (-d $dir) { - trick_taint($dir); - push(@$array, $dir); - } - } -} - # Make an ordered list out of a HTTP Accept-Language header (see RFC 2616, 14.4) # We ignore '*' and <language-range>;q=0 # For languages with the same priority q the order remains unchanged. @@ -366,15 +548,38 @@ sub init_console { eval { ON_WINDOWS && require Win32::Console::ANSI; }; $ENV{'ANSI_COLORS_DISABLED'} = 1 if ($@ || !-t *STDOUT); $ENV{'HTTP_ACCEPT_LANGUAGE'} ||= get_console_locale(); + prevent_windows_dialog_boxes(); +} + +sub prevent_windows_dialog_boxes { + # This code comes from http://bugs.activestate.com/show_bug.cgi?id=82183 + # and prevents Perl modules from popping up dialog boxes, particularly + # during checksetup (since loading DBD::Oracle during checksetup when + # Oracle isn't installed causes a scary popup and pauses checksetup). + # + # Win32::API ships with ActiveState by default, though there could + # theoretically be a Windows installation without it, I suppose. + if (ON_WINDOWS and eval { require Win32::API }) { + # Call kernel32.SetErrorMode with arguments that mean: + # "The system does not display the critical-error-handler message box. + # Instead, the system sends the error to the calling process." and + # "A child process inherits the error mode of its parent process." + my $SetErrorMode = Win32::API->new('kernel32', 'SetErrorMode', + 'I', 'I'); + my $SEM_FAILCRITICALERRORS = 0x0001; + my $SEM_NOGPFAULTERRORBOX = 0x0002; + $SetErrorMode->Call($SEM_FAILCRITICALERRORS | $SEM_NOGPFAULTERRORBOX); + } } # This is like request_cache, but it's used only by installation code -# for setup.cgi and things like that. +# for checksetup.pl and things like that. our $_cache = {}; sub _cache { - if ($ENV{MOD_PERL}) { - require Apache2::RequestUtil; - return Apache2::RequestUtil->request->pnotes(); + # If the normal request_cache is available (which happens any time + # after the requirements phase) then we should use that. + if (eval { Bugzilla->request_cache; }) { + return Bugzilla->request_cache; } return $_cache; } @@ -391,6 +596,15 @@ sub trick_taint { return (defined($_[0])); } +sub trim { + my ($str) = @_; + if ($str) { + $str =~ s/^\s+//g; + $str =~ s/\s+$//g; + } + return $str; +} + __END__ =head1 NAME diff --git a/Bugzilla/Job/CVS/Entries b/Bugzilla/Job/CVS/Entries index f409cb5ae..1268285fa 100644 --- a/Bugzilla/Job/CVS/Entries +++ b/Bugzilla/Job/CVS/Entries @@ -1,2 +1,2 @@ -/Mailer.pm/1.3/Thu Sep 10 23:46:21 2009//TBUGZILLA-3_5_2 +/Mailer.pm/1.3/Thu Sep 10 23:46:21 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Job/CVS/Tag b/Bugzilla/Job/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Job/CVS/Tag +++ b/Bugzilla/Job/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/JobQueue.pm b/Bugzilla/JobQueue.pm index 9e7172e2b..1046cf2c3 100644 --- a/Bugzilla/JobQueue.pm +++ b/Bugzilla/JobQueue.pm @@ -43,9 +43,11 @@ sub new { } my $lc = Bugzilla->localconfig; + # We need to use the main DB as TheSchwartz module is going + # to write to it. my $self = $class->SUPER::new( databases => [{ - dsn => Bugzilla->dbh->{private_bz_dsn}, + dsn => Bugzilla->dbh_main->{private_bz_dsn}, user => $lc->{db_user}, pass => $lc->{db_pass}, prefix => 'ts_', diff --git a/Bugzilla/JobQueue/CVS/Entries b/Bugzilla/JobQueue/CVS/Entries index 03c14906f..3230838f8 100644 --- a/Bugzilla/JobQueue/CVS/Entries +++ b/Bugzilla/JobQueue/CVS/Entries @@ -1,2 +1,2 @@ -/Runner.pm/1.5/Fri Sep 4 21:20:27 2009//TBUGZILLA-3_5_2 +/Runner.pm/1.5/Fri Sep 4 21:20:27 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/JobQueue/CVS/Tag b/Bugzilla/JobQueue/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/JobQueue/CVS/Tag +++ b/Bugzilla/JobQueue/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 83ae5a600..fb9c5a7ca 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -171,7 +171,8 @@ sub MessageToMTA { Debug => Bugzilla->params->{'smtp_debug'}; } - Bugzilla::Hook::process('mailer-before_send', { email => $email }); + Bugzilla::Hook::process('mailer_before_send', + { email => $email, mailer_args => \@args }); if ($method eq "Test") { my $filename = bz_locations()->{'datadir'} . '/mailer.testfile'; diff --git a/Bugzilla/Migrate/CVS/Entries b/Bugzilla/Migrate/CVS/Entries index f006dcc16..2be81d048 100644 --- a/Bugzilla/Migrate/CVS/Entries +++ b/Bugzilla/Migrate/CVS/Entries @@ -1,2 +1,2 @@ -/Gnats.pm/1.1/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_2 +/Gnats.pm/1.1/Sat Oct 24 05:30:17 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Migrate/CVS/Tag b/Bugzilla/Migrate/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Migrate/CVS/Tag +++ b/Bugzilla/Migrate/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Object.pm b/Bugzilla/Object.pm index 0630a78d4..92353b6a0 100644 --- a/Bugzilla/Object.pm +++ b/Bugzilla/Object.pm @@ -279,7 +279,7 @@ sub set { superclass => __PACKAGE__, function => 'Bugzilla::Object->set' }); - Bugzilla::Hook::process('object-before_set', + Bugzilla::Hook::process('object_before_set', { object => $self, field => $field, value => $value }); @@ -303,6 +303,8 @@ sub set_all { my $method = "set_$key"; $self->$method($params->{$key}); } + Bugzilla::Hook::process('object_end_of_set_all', { object => $self, + params => $params }); } sub update { @@ -346,6 +348,10 @@ sub update { $dbh->do("UPDATE $table SET $columns WHERE $id_field = ?", undef, @values, $self->id) if @values; + Bugzilla::Hook::process('object_end_of_update', + { object => $self, old_object => $old_self, + changes => \%changes }); + $dbh->bz_commit_transaction(); if (wantarray) { @@ -406,7 +412,7 @@ sub check_required_create_fields { # This hook happens here so that even subclasses that don't call # SUPER::create are still affected by the hook. - Bugzilla::Hook::process('object-before_create', { class => $class, + Bugzilla::Hook::process('object_before_create', { class => $class, params => $params }); foreach my $field ($class->REQUIRED_CREATE_FIELDS) { @@ -439,7 +445,7 @@ sub run_create_validators { $field_values{$field} = $value; } - Bugzilla::Hook::process('object-end_of_create_validators', + Bugzilla::Hook::process('object_end_of_create_validators', { class => $class, params => \%field_values }); return \%field_values; diff --git a/Bugzilla/Product.pm b/Bugzilla/Product.pm index 7feaa4862..0228aca02 100644 --- a/Bugzilla/Product.pm +++ b/Bugzilla/Product.pm @@ -30,6 +30,7 @@ use Bugzilla::Status; use Bugzilla::Install::Requirements; use Bugzilla::Mailer; use Bugzilla::Series; +use Bugzilla::Hook; # Currently, we only implement enough of the Bugzilla::Field::Choice # interface to control the visibility of other fields. @@ -52,12 +53,12 @@ use constant DB_COLUMNS => qw( name classification_id description - milestoneurl isactive votesperuser maxvotesperbug votestoconfirm defaultmilestone + allows_unconfirmed ); use constant REQUIRED_CREATE_FIELDS => qw( @@ -70,20 +71,20 @@ use constant UPDATE_COLUMNS => qw( name description defaultmilestone - milestoneurl isactive votesperuser maxvotesperbug votestoconfirm + allows_unconfirmed ); use constant VALIDATORS => { + allows_unconfirmed => \&Bugzilla::Object::check_boolean, classification => \&_check_classification, name => \&_check_name, description => \&_check_description, version => \&_check_version, defaultmilestone => \&_check_default_milestone, - milestoneurl => \&_check_milestone_url, isactive => \&Bugzilla::Object::check_boolean, votesperuser => \&_check_votes_per_user, maxvotesperbug => \&_check_votes_per_bug, @@ -123,6 +124,8 @@ sub create { $product->_create_bug_group() if Bugzilla->params->{'makeproductgroups'}; $product->_create_series() if $create_series; + Bugzilla::Hook::process('product_end_of_create', { product => $product }); + $dbh->bz_commit_transaction(); return $product; } @@ -376,7 +379,7 @@ sub update { } sub remove_from_db { - my $self = shift; + my ($self, $params) = @_; my $user = Bugzilla->user; my $dbh = Bugzilla->dbh; @@ -399,8 +402,31 @@ sub remove_from_db { } } - # XXX - This line can go away as soon as bug 427455 is fixed. - $dbh->do("DELETE FROM group_control_map WHERE product_id = ?", undef, $self->id); + if ($params->{delete_series}) { + my $series_ids = + $dbh->selectcol_arrayref('SELECT series_id + FROM series + INNER JOIN series_categories + ON series_categories.id = series.category + WHERE series_categories.name = ?', + undef, $self->name); + + $dbh->do('DELETE FROM series WHERE ' . $dbh->sql_in('series_id', $series_ids)); + + # If no subcategory uses this product name, completely purge it. + my $in_use = + $dbh->selectrow_array('SELECT 1 + FROM series + INNER JOIN series_categories + ON series_categories.id = series.subcategory + WHERE series_categories.name = ? ' . + $dbh->sql_limit(1), + undef, $self->name); + if (!$in_use) { + $dbh->do('DELETE FROM series_categories WHERE name = ?', undef, $self->name); + } + } + $dbh->do("DELETE FROM products WHERE id = ?", undef, $self->id); $dbh->bz_commit_transaction(); @@ -604,11 +630,11 @@ sub _create_series { sub set_name { $_[0]->set('name', $_[1]); } sub set_description { $_[0]->set('description', $_[1]); } sub set_default_milestone { $_[0]->set('defaultmilestone', $_[1]); } -sub set_milestone_url { $_[0]->set('milestoneurl', $_[1]); } sub set_is_active { $_[0]->set('isactive', $_[1]); } sub set_votes_per_user { $_[0]->set('votesperuser', $_[1]); } sub set_votes_per_bug { $_[0]->set('maxvotesperbug', $_[1]); } sub set_votes_to_confirm { $_[0]->set('votestoconfirm', $_[1]); } +sub set_allows_unconfirmed { $_[0]->set('allows_unconfirmed', $_[1]); } sub set_group_controls { my ($self, $group, $settings) = @_; @@ -860,8 +886,8 @@ sub flag_types { #### Accessors ###### ############################### +sub allows_unconfirmed { return $_[0]->{'allows_unconfirmed'}; } sub description { return $_[0]->{'description'}; } -sub milestone_url { return $_[0]->{'milestoneurl'}; } sub is_active { return $_[0]->{'isactive'}; } sub votes_per_user { return $_[0]->{'votesperuser'}; } sub max_votes_per_bug { return $_[0]->{'maxvotesperbug'}; } @@ -914,13 +940,13 @@ Bugzilla::Product - Bugzilla product class. my $id = $product->id; my $name = $product->name; my $description = $product->description; - my $milestoneurl = $product->milestone_url; my isactive = $product->is_active; 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; + my $allows_unconfirmed = $product->allows_unconfirmed; =head1 DESCRIPTION diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 4aaf7e14c..43b95f293 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -170,7 +170,7 @@ sub COLUMNS { # The short_short_desc column is identical to short_desc $columns{'short_short_desc'} = $columns{'short_desc'}; - Bugzilla::Hook::process("buglist-columns", { columns => \%columns }); + Bugzilla::Hook::process('buglist_columns', { columns => \%columns }); $cache->{search_columns} = \%columns; return $cache->{search_columns}; @@ -194,6 +194,7 @@ sub init { my $self = shift; my @fields = @{ $self->{'fields'} || [] }; my $params = $self->{'params'}; + $params->convert_old_params(); $self->{'user'} ||= Bugzilla->user; my $user = $self->{'user'}; @@ -290,21 +291,16 @@ sub init { } } - if ($params->param('bug_id')) { - my $type = "anyexact"; - if ($params->param('bugidtype') && $params->param('bugidtype') eq 'exclude') { - $type = "nowords"; - } - push(@specialchart, ["bug_id", $type, join(',', $params->param('bug_id'))]); - } - # If the user has selected all of either status or resolution, change to # selecting none. This is functionally equivalent, but quite a lot faster. # Also, if the status is __open__ or __closed__, translate those # into their equivalent lists of open and closed statuses. if ($params->param('bug_status')) { my @bug_statuses = $params->param('bug_status'); - my @legal_statuses = @{get_legal_field_values('bug_status')}; + # Also include inactive bug statuses, as you can query them. + my @legal_statuses = + map {$_->name} @{Bugzilla::Field->new({name => 'bug_status'})->legal_values}; + if (scalar(@bug_statuses) == scalar(@legal_statuses) || $bug_statuses[0] eq "__all__") { @@ -322,7 +318,8 @@ sub init { if ($params->param('resolution')) { my @resolutions = $params->param('resolution'); - my $legal_resolutions = get_legal_field_values('resolution'); + # Also include inactive resolutions, as you can query them. + my $legal_resolutions = Bugzilla::Field->new({name => 'resolution'})->legal_values; if (scalar(@resolutions) == scalar(@$legal_resolutions)) { $params->delete('resolution'); } diff --git a/Bugzilla/Search/CVS/Entries b/Bugzilla/Search/CVS/Entries index 0810b2a52..43f9b1882 100644 --- a/Bugzilla/Search/CVS/Entries +++ b/Bugzilla/Search/CVS/Entries @@ -1,3 +1,3 @@ -/Quicksearch.pm/1.26/Tue Sep 22 00:29:39 2009//TBUGZILLA-3_5_2 -/Saved.pm/1.9/Fri Aug 21 21:33:10 2009//TBUGZILLA-3_5_2 +/Quicksearch.pm/1.29/Sun Jan 31 17:52:39 2010//TBUGZILLA-3_5_3 +/Saved.pm/1.9/Fri Aug 21 21:33:10 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Search/CVS/Tag b/Bugzilla/Search/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Search/CVS/Tag +++ b/Bugzilla/Search/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm index fc86c7a58..e3dcc7e89 100644 --- a/Bugzilla/Search/Quicksearch.pm +++ b/Bugzilla/Search/Quicksearch.pm @@ -33,70 +33,83 @@ use Bugzilla::Util; use base qw(Exporter); @Bugzilla::Search::Quicksearch::EXPORT = qw(quicksearch); -# Word renamings +# Custom mappings for some fields. use constant 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", - "group" => "bug_group", - "flag" => "flagtypes.name", - "requestee" => "requestees.login_name", - "req" => "requestees.login_name", - "setter" => "setters.login_name", - "set" => "setters.login_name", - # Attachments - "attachment" => "attachments.description", - "attachmentdesc" => "attachments.description", - "attachdesc" => "attachments.description", - "attachmentdata" => "attach_data.thedata", - "attachdata" => "attach_data.thedata", - "attachmentmimetype" => "attachments.mimetype", - "attachmimetype" => "attachments.mimetype" + # Status, Resolution, Platform, OS, Priority, Severity + "status" => "bug_status", + "platform" => "rep_platform", + "os" => "op_sys", + "severity" => "bug_severity", + + # People: AssignedTo, Reporter, QA Contact, CC, etc. + "assignee" => "assigned_to", + + # Product, Version, Component, Target Milestone + "milestone" => "target_milestone", + + # Summary, Description, URL, Status whiteboard, Keywords + "summary" => "short_desc", + "description" => "longdesc", + "comment" => "longdesc", + "url" => "bug_file_loc", + "whiteboard" => "status_whiteboard", + "sw" => "status_whiteboard", + "kw" => "keywords", + "group" => "bug_group", + + # Flags + "flag" => "flagtypes.name", + "requestee" => "requestees.login_name", + "setter" => "setters.login_name", + + # Attachments + "attachment" => "attachments.description", + "attachmentdesc" => "attachments.description", + "attachdesc" => "attachments.description", + "attachmentdata" => "attach_data.thedata", + "attachdata" => "attach_data.thedata", + "attachmentmimetype" => "attachments.mimetype", + "attachmimetype" => "attachments.mimetype" +}; + +sub FIELD_MAP { + my $cache = Bugzilla->request_cache; + return $cache->{quicksearch_fields} if $cache->{quicksearch_fields}; + + # Get all the fields whose names don't contain periods. (Fields that + # contain periods are always handled in MAPPINGS.) + my @db_fields = grep { $_->name !~ /\./ } + Bugzilla->get_fields({ obsolete => 0 }); + my %full_map = (%{ MAPPINGS() }, map { $_->name => $_->name } @db_fields); + + # Eliminate the fields that start with bug_ or rep_, because those are + # handled by the MAPPINGS instead, and we don't want too many names + # for them. (Also, otherwise "rep" doesn't match "reporter".) + # + # Remove "status_whiteboard" because we have "whiteboard" for it in + # the mappings, and otherwise "stat" can't match "status". + # + # Also, don't allow searching the _accessible stuff via quicksearch + # (both because it's unnecessary and because otherwise + # "reporter_accessible" and "reporter" both match "rep". + delete @full_map{qw(rep_platform bug_status bug_file_loc bug_group + bug_severity bug_status + status_whiteboard + cclist_accessible reporter_accessible)}; + + $cache->{quicksearch_fields} = \%full_map; + + return $cache->{quicksearch_fields}; +} + +# Certain fields, when specified like "field:value" get an operator other +# than "substring" +use constant FIELD_OPERATOR => { + content => 'matches', + owner_idle_time => 'greaterthan', }; # We might want to put this into localconfig or somewhere -use constant PLATFORMS => ('pc', 'sun', 'macintosh', 'mac'); -use constant OPSYSTEMS => ('windows', 'win', 'linux'); use constant PRODUCT_EXCEPTIONS => ( 'row', # [Browser] # ^^^ @@ -137,7 +150,7 @@ sub quicksearch { my @words = splitString($searchstring); _handle_status_and_resolution(\@words); - my @unknownFields; + my (@unknownFields, %ambiguous_fields); # Loop over all main-level QuickSearch words. foreach my $qsword (@words) { @@ -151,7 +164,8 @@ sub quicksearch { # Split by '|' to get all operands for a boolean OR. foreach my $or_operand (split(/\|/, $qsword)) { if (!_handle_field_names($or_operand, $negate, - \@unknownFields)) + \@unknownFields, + \%ambiguous_fields)) { # Having ruled out the special cases, we may now split # by comma, which is another legal boolean OR indicator. @@ -170,9 +184,10 @@ sub quicksearch { } # foreach (@words) # Inform user about any unknown fields - if (scalar(@unknownFields)) { + if (scalar(@unknownFields) || scalar(keys %ambiguous_fields)) { ThrowUserError("quicksearch_unknown_field", - { fields => \@unknownFields }); + { unknown => \@unknownFields, + ambiguous => \%ambiguous_fields }); } # Make sure we have some query terms left @@ -217,7 +232,7 @@ sub _bug_numbers_only { # List of bug numbers. $cgi->param('bug_id', $searchstring); $cgi->param('order', 'bugs.bug_id'); - $cgi->param('bugidtype', 'include'); + $cgi->param('bug_id_type', 'include'); } } @@ -256,22 +271,6 @@ sub _handle_status_and_resolution { 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_resolutions)) { - 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; @@ -309,10 +308,6 @@ sub _handle_special_first_chars { my $baseWord = substr($qsword, 1); my @subWords = split(/[\|,]/, $baseWord); - if ($firstChar eq '+') { - addChart('short_desc', 'substring', $_, $negate) foreach (@subWords); - return 1; - } if ($firstChar eq '#') { addChart('short_desc', 'substring', $baseWord, $negate); addChart('content', 'matches', $baseWord, $negate); @@ -342,7 +337,7 @@ sub _handle_special_first_chars { } sub _handle_field_names { - my ($or_operand, $negate, $unknownFields) = @_; + my ($or_operand, $negate, $unknownFields, $ambiguous_fields) = @_; # votes:xx ("at least xx votes") if ($or_operand =~ /^votes:([0-9]+)$/) { @@ -363,14 +358,21 @@ sub _handle_field_names { my @fields = split(/,/, $1); my @values = split(/,/, $2); foreach my $field (@fields) { + my $translated = _translate_field_name($field); # Skip and record any unknown fields - if (!defined(MAPPINGS->{$field})) { + if (!defined $translated) { push(@$unknownFields, $field); next; } - $field = MAPPINGS->{$field}; - foreach (@values) { - addChart($field, 'substring', $_, $negate); + # If we got back an array, that means the substring is + # ambiguous and could match more than field name + elsif (ref $translated) { + $ambiguous_fields->{$field} = $translated; + next; + } + foreach my $value (@values) { + my $operator = FIELD_OPERATOR->{$translated} || 'substring'; + addChart($translated, $operator, $value, $negate); } } return 1; @@ -379,29 +381,69 @@ sub _handle_field_names { return 0; } -sub _special_field_syntax { - my ($word, $negate) = @_; - # Platform and operating system - if (grep { lc($word) eq $_ } PLATFORMS - or grep { lc($word) eq $_ } OPSYSTEMS) - { - addChart('rep_platform', 'substring', $word, $negate); - addChart('op_sys', 'substring', $word, $negate); - return 1; +sub _translate_field_name { + my $field = shift; + $field = lc($field); + my $field_map = FIELD_MAP; + + # If the field exactly matches a mapping, just return right now. + return $field_map->{$field} if exists $field_map->{$field}; + + # Check if we match, as a starting substring, exactly one field. + my @field_names = keys %$field_map; + my @matches = grep { $_ =~ /^\Q$field\E/ } @field_names; + # Eliminate duplicates that are actually the same field + # (otherwise "assi" matches both "assignee" and "assigned_to", and + # the lines below fail when they shouldn't.) + my %match_unique = map { $field_map->{$_} => $_ } @matches; + @matches = values %match_unique; + + if (scalar(@matches) == 1) { + return $field_map->{$matches[0]}; + } + elsif (scalar(@matches) > 1) { + return \@matches; + } + + # Check if we match exactly one custom field, ignoring the cf_ on the + # custom fields (to allow people to type things like "build" for + # "cf_build"). + my %cfless; + foreach my $name (@field_names) { + my $no_cf = $name; + if ($no_cf =~ s/^cf_//) { + if ($field eq $no_cf) { + return $field_map->{$name}; + } + $cfless{$no_cf} = $name; + } } - - # Priority - my $legal_priorities = get_legal_field_values('priority'); - if (grep { lc($_) eq lc($word) } @$legal_priorities) { - addChart('priority', 'equals', $word, $negate); - return 1; + + # See if we match exactly one substring of any of the cf_-less fields. + my @cfless_matches = grep { $_ =~ /^\Q$field\E/ } (keys %cfless); + + if (scalar(@cfless_matches) == 1) { + my $match = $cfless_matches[0]; + my $actual_field = $cfless{$match}; + return $field_map->{$actual_field}; + } + elsif (scalar(@matches) > 1) { + return \@matches; } + return undef; +} + +sub _special_field_syntax { + my ($word, $negate) = @_; + # P1-5 Syntax if ($word =~ m/^P(\d+)(?:-(\d+))?$/i) { my $start = $1 - 1; $start = 0 if $start < 0; my $end = $2 - 1; + + my $legal_priorities = get_legal_field_values('priority'); $end = scalar(@$legal_priorities) - 1 if $end > (scalar @$legal_priorities - 1); my $prios = $legal_priorities->[$start]; @@ -412,13 +454,6 @@ sub _special_field_syntax { return 1; } - # Severity - my $legal_severities = get_legal_field_values('bug_severity'); - if (grep { lc($word) eq substr($_, 0, 3)} @$legal_severities) { - addChart('bug_severity', 'substring', $word, $negate); - return 1; - } - # Votes (votes>xx) if ($word =~ m/^votes>([0-9]+)$/) { addChart('votes', 'greaterthan', $1, $negate); diff --git a/Bugzilla/Status.pm b/Bugzilla/Status.pm index 4720dc129..4d1281e7e 100644 --- a/Bugzilla/Status.pm +++ b/Bugzilla/Status.pm @@ -176,28 +176,6 @@ sub can_change_to { return $self->{'can_change_to'}; } -sub can_change_from { - my $self = shift; - my $dbh = Bugzilla->dbh; - - if (!defined $self->{'can_change_from'}) { - my $old_status_ids = $dbh->selectcol_arrayref('SELECT old_status - FROM status_workflow - INNER JOIN bug_status - ON id = old_status - WHERE isactive = 1 - AND new_status = ? - AND old_status IS NOT NULL', - undef, $self->id); - - # Allow the bug status to remain unchanged. - push(@$old_status_ids, $self->id); - $self->{'can_change_from'} = Bugzilla::Status->new_from_list($old_status_ids); - } - - return $self->{'can_change_from'}; -} - sub comment_required_on_change_from { my ($self, $old_status) = @_; my ($cond, $values) = $self->_status_condition($old_status); @@ -300,17 +278,6 @@ below. Returns: A list of Bugzilla::Status objects. -=item C<can_change_from> - - Description: Returns the list of active statuses a bug can be changed from - given the new bug status. If the bug status is available on - bug creation, this method doesn't return this information. - You have to call C<can_change_to> instead. - - Params: none. - - Returns: A list of Bugzilla::Status objects. - =item C<comment_required_on_change_from> =over diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 17429a2e2..c6da645b2 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -36,6 +36,7 @@ use strict; use Bugzilla::Bug; use Bugzilla::Constants; +use Bugzilla::Hook; use Bugzilla::Install::Requirements; use Bugzilla::Install::Util qw(install_string template_include_path include_languages); @@ -49,7 +50,7 @@ use Bugzilla::Token; use Cwd qw(abs_path); use MIME::Base64; use Date::Format (); -use File::Basename qw(dirname); +use File::Basename qw(basename dirname); use File::Find; use File::Path qw(rmtree mkpath); use File::Spec; @@ -79,19 +80,6 @@ sub _load_constants { return \%constants; } -# Overload Template::Process in order to add a hook to allow additional -# variables to be made available by an extension -sub process { - my $self = shift; - my ($file, $vars) = @_; - - Bugzilla::Hook::process("template-before_process", - { vars => $vars, file => $file, - template => $self }); - - return $self->SUPER::process(@_); -} - # 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 @@ -168,11 +156,6 @@ sub quoteUrls { my $chr1 = chr(1); $text =~ s/\0/$chr1\0/g; - # If the comment is already wrapped, we should ignore newlines when - # looking for matching regexps. Else we should take them into account. - my $s = ($comment && $comment->already_wrapped) - ? qr/\s/ : qr/[[:blank:]]/; - # However, note that adding the title (for buglinks) can affect things # In particular, attachment matches go before bug titles, so that titles # with 'attachment 1' don't double match. @@ -187,7 +170,7 @@ sub quoteUrls { my $tmp; my @hook_regexes; - Bugzilla::Hook::process('bug-format_comment', + Bugzilla::Hook::process('bug_format_comment', { text => \$text, bug => $bug, regexes => \@hook_regexes, comment => $comment }); @@ -241,13 +224,8 @@ sub quoteUrls { $text =~ s~\b(mailto:|)?([\w\.\-\+\=]+\@[\w\-]+(?:\.[\w\-]+)+)\b ~<a href=\"mailto:$2\">$1$2</a>~igx; - # attachment links - handle both cases separately for simplicity - $text =~ s~((?:^Created\ an\ |\b)attachment\s*\(id=(\d+)\)(\s\[edit\])?) - ~($things[$count++] = get_attachment_link($2, $1)) && - ("\0\0" . ($count-1) . "\0\0") - ~egmx; - - $text =~ s~\b(attachment$s*\#?$s*(\d+)) + # attachment links + $text =~ s~\b(attachment\s*\#?\s*(\d+)) ~($things[$count++] = get_attachment_link($2, $1)) && ("\0\0" . ($count-1) . "\0\0") ~egmxi; @@ -260,9 +238,9 @@ sub quoteUrls { # Also, we can't use $bug_re?$comment_re? because that will match the # empty string my $bug_word = get_text('term', { term => 'bug' }); - my $bug_re = qr/\Q$bug_word\E$s*\#?$s*(\d+)/i; - my $comment_re = qr/comment$s*\#?$s*(\d+)/i; - $text =~ s~\b($bug_re(?:$s*,?$s*$comment_re)?|$comment_re) + my $bug_re = qr/\Q$bug_word\E\s*\#?\s*(\d+)/i; + my $comment_re = qr/comment\s*\#?\s*(\d+)/i; + $text =~ s~\b($bug_re(?:\s*,?\s*$comment_re)?|$comment_re) ~ # We have several choices. $1 here is the link, and $2-4 are set # depending on which part matched (defined($2) ? get_bug_link($2, $1, { comment_num => $3 }) : @@ -460,19 +438,12 @@ sub create { my $class = shift; my %opts = @_; - # checksetup.pl will call us once for any template/lang directory. - # We need a possibility to reset the cache, so that no files from - # the previous language pollute the action. - if ($opts{'clean_cache'}) { - delete Bugzilla->request_cache->{template_include_path_}; - } - - # IMPORTANT - If you make any configuration changes here, make sure to - # make them in t/004.template.t and checksetup.pl. + # IMPORTANT - If you make any FILTER changes here, make sure to + # make them in t/004.template.t also, if required. - return $class->new({ + my $config = { # Colon-separated list of directories containing templates. - INCLUDE_PATH => [\&getTemplateIncludePath], + INCLUDE_PATH => $opts{'include_path'} || getTemplateIncludePath(), # Remove white-space before template directives (PRE_CHOMP) and at the # beginning and end of templates and template blocks (TRIM) for better @@ -481,10 +452,18 @@ sub create { PRE_CHOMP => 1, TRIM => 1, + # Bugzilla::Template::Plugin::Hook uses the absolute (in mod_perl) + # or relative (in mod_cgi) paths of hook files to explicitly compile + # a specific file. Also, these paths may be absolute at any time + # if a packager has modified bz_locations() to contain absolute + # paths. + ABSOLUTE => 1, + RELATIVE => $ENV{MOD_PERL} ? 0 : 1, + COMPILE_DIR => bz_locations()->{'datadir'} . "/template", # Initialize templates (f.e. by loading plugins like Hook). - PRE_PROCESS => "global/initialize.none.tmpl", + PRE_PROCESS => ["global/initialize.none.tmpl"], ENCODING => Bugzilla->params->{'utf8'} ? 'UTF-8' : undef, @@ -797,13 +776,18 @@ sub create { return \@optional; }, }, + }; - }) || die("Template creation failed: " . $class->error()); + local $Template::Config::CONTEXT = 'Bugzilla::Template::Context'; + + Bugzilla::Hook::process('template_before_create', { config => $config }); + my $template = $class->new($config) + || die("Template creation failed: " . $class->error()); + return $template; } # Used as part of the two subroutines below. -our (%_templates_to_precompile, $_current_path); - +our %_templates_to_precompile; sub precompile_templates { my ($output) = @_; @@ -831,33 +815,18 @@ sub precompile_templates { print install_string('template_precompile') if $output; - my $templatedir = bz_locations()->{'templatedir'}; - # Don't hang on templates which use the CGI library - eval("use CGI qw(-no_debug)"); - - my $dir_reader = new IO::Dir($templatedir) || die "$templatedir: $!"; - my @language_dirs = grep { /^[a-z-]+$/i } $dir_reader->read; - $dir_reader->close; - - foreach my $dir (@language_dirs) { - next if ($dir eq 'CVS'); - -d "$templatedir/$dir/default" || -d "$templatedir/$dir/custom" - || next; - local $ENV{'HTTP_ACCEPT_LANGUAGE'} = $dir; - my $template = Bugzilla::Template->create(clean_cache => 1); - - # Precompile all the templates found in all the directories. + my $paths = template_include_path({ use_languages => Bugzilla->languages }); + + foreach my $dir (@$paths) { + my $template = Bugzilla::Template->create(include_path => [$dir]); + %_templates_to_precompile = (); - foreach my $subdir (qw(custom extension default), bz_locations()->{'project'}) { - next unless $subdir; # If 'project' is empty. - $_current_path = File::Spec->catdir($templatedir, $dir, $subdir); - next unless -d $_current_path; - # Traverse the template hierarchy. - find({ wanted => \&_precompile_push, no_chdir => 1 }, $_current_path); - } + # Traverse the template hierarchy. + find({ wanted => \&_precompile_push, no_chdir => 1 }, $dir); # The sort isn't totally necessary, but it makes debugging easier # by making the templates always be compiled in the same order. foreach my $file (sort keys %_templates_to_precompile) { + $file =~ s{^\Q$dir\E/}{}; # Compile the template but throw away the result. This has the side- # effect of writing the compiled version to disk. $template->context->template($file); @@ -867,28 +836,17 @@ sub precompile_templates { # Under mod_perl, we look for templates using the absolute path of the # template directory, which causes Template Toolkit to look for their # *compiled* versions using the full absolute path under the data/template - # directory. (Like data/template/var/www/html/mod_perl/.) To avoid + # directory. (Like data/template/var/www/html/bugzilla/.) To avoid # re-compiling templates under mod_perl, we symlink to the # already-compiled templates. This doesn't work on Windows. if (!ON_WINDOWS) { - my $abs_root = dirname(abs_path($templatedir)); - my $todir = "$datadir/template$abs_root"; - mkpath($todir); - # We use abs2rel so that the symlink will look like - # "../../../../template" which works, while just - # "data/template/template/" doesn't work. - my $fromdir = File::Spec->abs2rel("$datadir/template/template", $todir); - # We eval for systems that can't symlink at all, where "symlink" - # throws a fatal error. - eval { symlink($fromdir, "$todir/template") - or warn "Failed to symlink from $fromdir to $todir: $!" }; + # We do these separately in case they're in different locations. + _do_template_symlink(bz_locations()->{'templatedir'}); + _do_template_symlink(bz_locations()->{'extensionsdir'}); } # If anything created a Template object before now, clear it out. delete Bugzilla->request_cache->{template}; - # This is the single variable used to precompile templates, - # which needs to be cleared as well. - delete Bugzilla->request_cache->{template_include_path_}; print install_string('done') . "\n" if $output; } @@ -899,11 +857,40 @@ sub _precompile_push { return if (-d $name); return if ($name =~ /\/CVS\//); return if ($name !~ /\.tmpl$/); - - $name =~ s/\Q$_current_path\E\///; $_templates_to_precompile{$name} = 1; } +# Helper for precompile_templates +sub _do_template_symlink { + my $dir_to_symlink = shift; + + my $abs_path = abs_path($dir_to_symlink); + + # If $dir_to_symlink is already an absolute path (as might happen + # with packagers who set $libpath to an absolute path), then we don't + # need to do this symlink. + return if ($abs_path eq $dir_to_symlink); + + my $abs_root = dirname($abs_path); + my $dir_name = basename($abs_path); + my $datadir = bz_locations()->{'datadir'}; + my $container = "$datadir/template$abs_root"; + mkpath($container); + my $target = "$datadir/template/$dir_name"; + # Check if the directory exists, because if there are no extensions, + # there won't be an "data/template/extensions" directory to link to. + if (-d $target) { + # We use abs2rel so that the symlink will look like + # "../../../../template" which works, while just + # "data/template/template/" doesn't work. + my $relative_target = File::Spec->abs2rel($target, $container); + + my $link_name = "$container/$dir_name"; + symlink($relative_target, $link_name) + or warn "Could not make $link_name a symlink to $relative_target: $!"; + } +} + 1; __END__ diff --git a/Bugzilla/Template/CVS/Entries b/Bugzilla/Template/CVS/Entries index 78d1dc1d7..7b6b4354b 100644 --- a/Bugzilla/Template/CVS/Entries +++ b/Bugzilla/Template/CVS/Entries @@ -1 +1,2 @@ +/Context.pm/1.1/Thu Dec 17 05:27:11 2009//TBUGZILLA-3_5_3 D/Plugin//// diff --git a/Bugzilla/Template/CVS/Tag b/Bugzilla/Template/CVS/Tag index 1cec2e2b3..66fbcb3ad 100644 --- a/Bugzilla/Template/CVS/Tag +++ b/Bugzilla/Template/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Template/Context.pm b/Bugzilla/Template/Context.pm new file mode 100644 index 000000000..7923603e5 --- /dev/null +++ b/Bugzilla/Template/Context.pm @@ -0,0 +1,104 @@ +# -*- 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 ITA Software. +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +# This exists to implement the template-before_process hook. +package Bugzilla::Template::Context; +use strict; +use base qw(Template::Context); + +use Bugzilla::Hook; +use Scalar::Util qw(blessed); + +sub process { + my $self = shift; + # We don't want to run the template_before_process hook for + # template hooks (but we do want it to run if a hook calls + # PROCESS inside itself). The problem is that the {component}->{name} of + # hooks is unreliable--sometimes it starts with ./ and it's the + # full path to the hook template, and sometimes it's just the relative + # name (like hook/global/field-descs-end.none.tmpl). Also, calling + # template_before_process for hook templates doesn't seem too useful, + # because that's already part of the extension and they should be able + # to modify their hook if they want (or just modify the variables in the + # calling template). + if (not delete $self->{bz_in_hook}) { + $self->{bz_in_process} = 1; + } + my $result = $self->SUPER::process(@_); + delete $self->{bz_in_process}; + return $result; +} + +# This method is called by Template-Toolkit exactly once per template or +# block (look at a compiled template) so this is an ideal place for us to +# modify the variables before a template or block runs. +# +# We don't do it during Context::process because at that time +# our stash hasn't been set correctly--the parameters we were passed +# in the PROCESS or INCLUDE directive haven't been set, and if we're +# in an INCLUDE, the stash is not yet localized during process(). +sub stash { + my $self = shift; + my $stash = $self->SUPER::stash(@_); + + my $name = $stash->{component}->{name}; + my $pre_process = $self->config->{PRE_PROCESS}; + + # Checking bz_in_process tells us that we were indeed called as part of a + # Context::process, and not at some other point. + # + # Checking $name makes sure that we're processing a file, and not just a + # block, by checking that the name has a period in it. We don't allow + # blocks because their names are too unreliable--an extension could have + # a block with the same name, or multiple files could have a same-named + # block, and then your extension would malfunction. + # + # We also make sure that we don't run, ever, during the PRE_PROCESS + # templates, because if somebody calls Throw*Error globally inside of + # template_before_process, that causes an infinite recursion into + # the PRE_PROCESS templates (because Bugzilla, while inside + # global/intialize.none.tmpl, loads the template again to create the + # template object for Throw*Error). + # + # Checking Bugzilla::Hook::in prevents infinite recursion on this hook. + if ($self->{bz_in_process} and $name =~ /\./ + and !grep($_ eq $name, @$pre_process) + and !Bugzilla::Hook::in('template_before_process')) + { + Bugzilla::Hook::process("template_before_process", + { vars => $stash, context => $self, + file => $name }); + } + + # This prevents other calls to stash() that might somehow happen + # later in the file from also triggering the hook. + delete $self->{bz_in_process}; + + return $stash; +} + +# We need a DESTROY sub for the same reason that Bugzilla::CGI does. +sub DESTROY { + my $self = shift; + $self->SUPER::DESTROY(@_); +}; + +1; diff --git a/Bugzilla/Template/Plugin/CVS/Entries b/Bugzilla/Template/Plugin/CVS/Entries index eee338b12..4cbc553d8 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-3_5_2 -/Hook.pm/1.12/Mon Oct 6 16:30:56 2008//TBUGZILLA-3_5_2 -/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-3_5_2 +/Bugzilla.pm/1.2/Fri Feb 7 07:19:15 2003//TBUGZILLA-3_5_3 +/Hook.pm/1.16/Thu Dec 17 05:27:11 2009//TBUGZILLA-3_5_3 +/User.pm/1.1/Wed Aug 4 18:08:21 2004//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Template/Plugin/CVS/Tag b/Bugzilla/Template/Plugin/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Template/Plugin/CVS/Tag +++ b/Bugzilla/Template/Plugin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Template/Plugin/Hook.pm b/Bugzilla/Template/Plugin/Hook.pm index 99ece0880..e993060dd 100644 --- a/Bugzilla/Template/Plugin/Hook.pm +++ b/Bugzilla/Template/Plugin/Hook.pm @@ -20,91 +20,88 @@ # Contributor(s): Myk Melez <myk@mozilla.org> # Zach Lipton <zach@zachlipton.com> # Elliotte Martin <everythingsolved.com> -# +# Max Kanat-Alexander <mkanat@bugzilla.org> package Bugzilla::Template::Plugin::Hook; - use strict; +use base qw(Template::Plugin); use Bugzilla::Constants; -use Bugzilla::Install::Util qw(include_languages); -use Bugzilla::Template; +use Bugzilla::Install::Util qw(include_languages template_include_path); use Bugzilla::Util; use Bugzilla::Error; -use File::Spec; -use base qw(Template::Plugin); - -sub load { - my ($class, $context) = @_; - return $class; -} +use File::Spec; sub new { my ($class, $context) = @_; return bless { _CONTEXT => $context }, $class; } +sub _context { return $_[0]->{_CONTEXT} } + sub process { my ($self, $hook_name, $template) = @_; - $template ||= $self->{_CONTEXT}->stash->{component}->{name}; - - my @hooks; + my $context = $self->_context(); + $template ||= $context->stash->{component}->{name}; # sanity check: if (!$template =~ /[\w\.\/\-_\\]+/) { - ThrowCodeError('template_invalid', { name => $template}); + ThrowCodeError('template_invalid', { name => $template }); } - # also get extension hook files that live in extensions/: - # parse out the parts of the template name - my ($vol, $subpath, $filename) = File::Spec->splitpath($template); - $subpath = $subpath || ''; - $filename =~ m/(.*)\.(.*)\.tmpl/; - my $templatename = $1; + my (undef, $path, $filename) = File::Spec->splitpath($template); + $path ||= ''; + $filename =~ m/(.+)\.(.+)\.tmpl$/; + my $template_name = $1; my $type = $2; - # munge the filename to create the extension hook filename: - my $extensiontemplate = $subpath.'/'.$templatename.'-'.$hook_name.'.'.$type.'.tmpl'; - my @extensions = glob(bz_locations()->{'extensionsdir'} . "/*"); - my @usedlanguages = include_languages({use_languages => Bugzilla->languages}); - foreach my $extension (@extensions) { - next if -e "$extension/disabled"; - foreach my $language (@usedlanguages) { - my $file = $extension.'/template/'.$language.'/'.$extensiontemplate; + + # Hooks are named like this: + my $extension_template = "$path$template_name-$hook_name.$type.tmpl"; + + # Get the hooks out of the cache if they exist. Otherwise, read them + # from the disk. + my $cache = Bugzilla->request_cache->{template_plugin_hook_cache} ||= {}; + my $lang = $cache->{language} || ''; + $cache->{"${lang}__$extension_template"} + ||= $self->_get_hooks($extension_template); + + # process() accepts an arrayref of templates, so we just pass the whole + # arrayref. + $context->{bz_in_hook} = 1; # See Bugzilla::Template::Context + return $context->process($cache->{"${lang}__$extension_template"}); +} + +sub _get_hooks { + my ($self, $extension_template) = @_; + + my $template_sets = _template_hook_include_path(); + my @hooks; + foreach my $dir_set (@$template_sets) { + foreach my $template_dir (@$dir_set) { + my $file = "$template_dir/hook/$extension_template"; if (-e $file) { - # tt is stubborn and won't take a template file not in its - # include path, so we open a filehandle and give it to process() - # so the hook gets invoked: - open (my $fh, $file); - push(@hooks, $fh); + my $template = $self->_context->template($file); + push(@hooks, $template); + # Don't run the hook for more than one language. + last; } } } - my $paths = $self->{_CONTEXT}->{LOAD_TEMPLATES}->[0]->paths; - - # we keep this too since you can still put hook templates in - # template/en/custom/hook - foreach my $path (@$paths) { - my @files = glob("$path/hook/$template/$hook_name/*.tmpl"); - - # Have to remove the templates path (INCLUDE_PATH) from the - # file path since the template processor auto-adds it back. - @files = map($_ =~ /^$path\/(.*)$/ ? $1 : {}, @files); - - # Add found files to the list of hooks, but removing duplicates, - # which can happen when there are identical hooks or duplicate - # directories in the INCLUDE_PATH (the latter probably being a TT bug). - foreach my $file (@files) { - push(@hooks, $file) unless grep($file eq $_, @hooks); - } - } + return \@hooks; +} - my $output; - foreach my $hook (@hooks) { - $output .= $self->{_CONTEXT}->process($hook); - } - return $output; +sub _template_hook_include_path { + my $cache = Bugzilla->request_cache; + my $language = $cache->{language} || ''; + my $cache_key = "template_plugin_hook_include_path_$language"; + $cache->{$cache_key} ||= template_include_path({ + use_languages => Bugzilla->languages, + only_language => $language, + hook => 1, + }); + return $cache->{$cache_key}; } 1; @@ -165,8 +162,4 @@ Output from processing template extension. L<Template::Plugin> -L<http://www.bugzilla.org/docs/tip/html/customization.html> - -L<http://bugzilla.mozilla.org/show_bug.cgi?id=229658> - -L<http://bugzilla.mozilla.org/show_bug.cgi?id=298341> +L<http://wiki.mozilla.org/Bugzilla:Writing_Extensions> diff --git a/Bugzilla/Token.pm b/Bugzilla/Token.pm index 4aee0561e..2cd9e3f9c 100644 --- a/Bugzilla/Token.pm +++ b/Bugzilla/Token.pm @@ -142,7 +142,7 @@ sub IssuePasswordToken { ThrowUserError('too_soon_for_new_token', {'type' => 'password'}) if $too_soon; - my ($token, $token_ts) = _create_token($user->id, 'password', $::ENV{'REMOTE_ADDR'}); + my ($token, $token_ts) = _create_token($user->id, 'password', remote_ip()); # Mail the user the token along with instructions for using it. my $template = Bugzilla->template_inner($user->settings->{'lang'}->{'value'}); @@ -283,7 +283,7 @@ sub Cancel { my $user = new Bugzilla::User($userid); $vars->{'emailaddress'} = $userid ? $user->email : $eventdata; - $vars->{'remoteaddress'} = $::ENV{'REMOTE_ADDR'}; + $vars->{'remoteaddress'} = remote_ip(); $vars->{'token'} = $token; $vars->{'tokentype'} = $tokentype; $vars->{'issuedate'} = $issuedate; diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index 0fc2db336..59324383f 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -247,6 +247,15 @@ sub is_disabled { $_[0]->disabledtext ? 1 : 0; } sub showmybugslink { $_[0]->{showmybugslink}; } sub email_disabled { $_[0]->{disable_mail}; } sub email_enabled { !($_[0]->{disable_mail}); } +sub cryptpassword { + my $self = shift; + # We don't store it because we never want it in the object (we + # don't want to accidentally dump even the hash somewhere). + my ($pw) = Bugzilla->dbh->selectrow_array( + 'SELECT cryptpassword FROM profiles WHERE userid = ?', + undef, $self->id); + return $pw; +} sub set_authorizer { my ($self, $authorizer) = @_; @@ -716,7 +725,14 @@ sub can_enter_product { my $dbh = Bugzilla->dbh; $warn ||= 0; - if (!defined $input) { + $input = trim($input) if !ref $input; + if (!defined $input or $input eq '') { + return unless $warn == THROW_ERROR; + ThrowUserError('object_not_specified', + { class => 'Bugzilla::Product' }); + } + + if (!scalar @{ $self->get_enterable_products }) { return unless $warn == THROW_ERROR; ThrowUserError('no_products'); } @@ -1108,57 +1124,15 @@ sub match { return \@users; } -# match_field() is a CGI wrapper for the match() function. -# -# Here's what it does: -# -# 1. Accepts a list of fields along with whether they may take multiple values -# 2. Takes the values of those fields from the first parameter, a $cgi object -# and passes them to match() -# 3. Checks the results of the match and displays confirmation or failure -# messages as appropriate. -# -# The confirmation screen functions the same way as verify-new-product and -# confirm-duplicate, by rolling all of the state information into a -# form which is passed back, but in this case the searched fields are -# replaced with the search results. -# -# The act of displaying the confirmation or failure messages means it must -# throw a template and terminate. When confirmation is sent, all of the -# searchable fields have been replaced by exact fields and the calling script -# is executed as normal. -# -# You also have the choice of *never* displaying the confirmation screen. -# In this case, match_field will return one of the three USER_MATCH -# constants described in the POD docs. To make match_field behave this -# way, pass in MATCH_SKIP_CONFIRM as the third argument. -# -# match_field must be called early in a script, before anything external is -# done with the form data. -# -# In order to do a simple match without dealing with templates, confirmation, -# or globals, simply calling Bugzilla::User::match instead will be -# sufficient. - -# How to call it: -# -# Bugzilla::User::match_field($cgi, { -# 'field_name' => { 'type' => fieldtype }, -# 'field_name2' => { 'type' => fieldtype }, -# [...] -# }); -# -# fieldtype can be either 'single' or 'multi'. -# - sub match_field { - my $cgi = shift; # CGI object to look up fields in my $fields = shift; # arguments as a hash + my $data = shift || Bugzilla->input_params; # hash to look up fields in my $behavior = shift || 0; # A constant that tells us how to act my $matches = {}; # the values sent to the template my $matchsuccess = 1; # did the match fail? my $need_confirm = 0; # whether to display confirmation screen my $match_multiple = 0; # whether we ever matched more than one user + my @non_conclusive_fields; # fields which don't have a unique user. my $params = Bugzilla->params; @@ -1176,7 +1150,8 @@ sub match_field { $expanded_fields->{$field_pattern} = $fields->{$field_pattern}; } else { - my @field_names = grep(/$field_pattern/, $cgi->param()); + my @field_names = grep(/$field_pattern/, keys %$data); + foreach my $field_name (@field_names) { $expanded_fields->{$field_name} = { type => $fields->{$field_pattern}->{'type'} }; @@ -1202,7 +1177,7 @@ sub match_field { # No need to look for a valid requestee if the flag(type) # has been deleted (may occur in race conditions). delete $expanded_fields->{$field_name}; - $cgi->delete($field_name); + delete $data->{$field_name}; } } } @@ -1211,35 +1186,19 @@ sub match_field { $fields = $expanded_fields; for my $field (keys %{$fields}) { + #Concatenate login names, so that we have a common way to handle them. + my $raw_field; + if (ref $data->{$field}) { + $raw_field = join(" ", @{$data->{$field}}); + } + else { + $raw_field = $data->{$field}; + } + $raw_field = clean_text($raw_field || ''); - # Tolerate fields that do not exist. - # - # This is so that fields like qa_contact can be specified in the code - # and it won't break if the CGI object does not know about them. - # - # It has the side-effect that if a bad field name is passed it will be - # quietly ignored rather than raising a code error. - - next if !defined $cgi->param($field); - - # We need to move the query to $raw_field, where it will be split up, - # modified by the search, and put back into the CGI environment - # incrementally. - - my $raw_field = join(" ", $cgi->param($field)); - - # When we add back in values later, it matters that we delete - # the field here, and not set it to '', so that we will add - # things to an empty list, and not to a list containing one - # empty string. - # If the field accepts only one match (type eq "single") and - # no match or more than one match is found for this field, - # we will set it back to '' so that the field remains defined - # outside this function (it was if we came here; else we would - # have returned earlier above). - # If the field accepts several matches (type eq "multi") and no match - # is found, we leave this field undefined (= empty array). - $cgi->delete($field); + # Tolerate fields that do not exist (in case you specify + # e.g. the QA contact, and it's currently not in use). + next unless ($raw_field && $raw_field ne ''); my @queries = (); @@ -1247,16 +1206,14 @@ sub match_field { # into @queries, or in the case of fields which only accept single # entries, we simply use the verbatim text. - $raw_field =~ s/^\s+|\s+$//sg; # trim leading/trailing space - # single field if ($fields->{$field}->{'type'} eq 'single') { - @queries = ($raw_field) unless $raw_field =~ /^\s*$/; + @queries = ($raw_field); # multi-field } elsif ($fields->{$field}->{'type'} eq 'multi') { - @queries = split(/[\s,]+/, $raw_field); + @queries = split(/[\s,;]+/, $raw_field); } else { @@ -1272,35 +1229,22 @@ sub match_field { $limit = $params->{'maxusermatches'} + 1; } + my @logins; for my $query (@queries) { - my $users = match( $query, # match string $limit, # match limit 1 # exclude_disabled ); - # skip confirmation for exact matches - if ((scalar(@{$users}) == 1) - && (lc(@{$users}[0]->login) eq lc($query))) - - { - $cgi->append(-name=>$field, - -values=>[@{$users}[0]->login]); - - next; - } - - $matches->{$field}->{$query}->{'users'} = $users; - $matches->{$field}->{$query}->{'status'} = 'success'; - # here is where it checks for multiple matches - if (scalar(@{$users}) == 1) { # exactly one match + push(@logins, @{$users}[0]->login); - $cgi->append(-name=>$field, - -values=>[@{$users}[0]->login]); + # skip confirmation for exact matches + next if (lc(@{$users}[0]->login) eq lc($query)); + $matches->{$field}->{$query}->{'status'} = 'success'; $need_confirm = 1 if $params->{'confirmuniqueusermatch'}; } @@ -1308,6 +1252,7 @@ sub match_field { && ($params->{'maxusermatches'} != 1)) { $need_confirm = 1; $match_multiple = 1; + push(@non_conclusive_fields, $field); if (($params->{'maxusermatches'}) && (scalar(@{$users}) > $params->{'maxusermatches'})) @@ -1315,23 +1260,31 @@ sub match_field { $matches->{$field}->{$query}->{'status'} = 'trunc'; pop @{$users}; # take the last one out } + else { + $matches->{$field}->{$query}->{'status'} = 'success'; + } } else { # everything else fails $matchsuccess = 0; # fail + push(@non_conclusive_fields, $field); $matches->{$field}->{$query}->{'status'} = 'fail'; $need_confirm = 1; # confirmation screen shows failures } + + $matches->{$field}->{$query}->{'users'} = $users; } - # Above, we deleted the field before adding matches. If no match - # or more than one match has been found for a field expecting only - # one match (type eq "single"), we set it back to '' so - # that the caller of this function can still check whether this + + # If no match or more than one match has been found for a field + # expecting only one match (type eq "single"), we set it back to '' + # so that the caller of this function can still check whether this # field was defined or not (and it was if we came here). - if (!defined $cgi->param($field) - && $fields->{$field}->{'type'} eq 'single') { - $cgi->param($field, ''); + if ($fields->{$field}->{'type'} eq 'single') { + $data->{$field} = $logins[0] || ''; + } + else { + $data->{$field} = \@logins; } } @@ -1347,22 +1300,24 @@ 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); + if ($behavior == MATCH_SKIP_CONFIRM || !$need_confirm) { + return wantarray ? ($retval, \@non_conclusive_fields) : $retval; + } my $template = Bugzilla->template; + my $cgi = Bugzilla->cgi; my $vars = {}; - $vars->{'script'} = Bugzilla->cgi->url(-relative => 1); # for self-referencing URLs + $vars->{'script'} = $cgi->url(-relative => 1); # for self-referencing URLs $vars->{'fields'} = $fields; # fields being matched $vars->{'matches'} = $matches; # matches that were made $vars->{'matchsuccess'} = $matchsuccess; # continue or fail $vars->{'matchmultiple'} = $match_multiple; - print Bugzilla->cgi->header(); + print $cgi->header(); $template->process("global/confirm-user-match.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } @@ -1390,7 +1345,6 @@ sub wants_bug_mail { my $self = shift; my ($bug_id, $relationship, $fieldDiffs, $comments, $dependencyText, $changer, $bug_is_new) = @_; - my $comments_concatenated = join("\n", map { $_->body } @$comments); # Make a list of the events which have happened during this bug change, # from the point of view of this user. @@ -1439,7 +1393,7 @@ sub wants_bug_mail { } } - if ($comments_concatenated =~ /Created an attachment \(/) { + if (grep { $_->type == CMT_ATTACHMENT_CREATED } @$comments) { $events{+EVT_ATTACHMENT} = 1; } elsif (defined($$comments[0])) { @@ -1649,6 +1603,54 @@ sub create { return $user; } +########################### +# Account Lockout Methods # +########################### + +sub account_is_locked_out { + my $self = shift; + my $login_failures = scalar @{ $self->account_ip_login_failures }; + return $login_failures >= MAX_LOGIN_ATTEMPTS ? 1 : 0; +} + +sub note_login_failure { + my $self = shift; + my $ip_addr = remote_ip(); + trick_taint($ip_addr); + Bugzilla->dbh->do("INSERT INTO login_failure (user_id, ip_addr, login_time) + VALUES (?, ?, LOCALTIMESTAMP(0))", + undef, $self->id, $ip_addr); + delete $self->{account_ip_login_failures}; +} + +sub clear_login_failures { + my $self = shift; + my $ip_addr = remote_ip(); + trick_taint($ip_addr); + Bugzilla->dbh->do( + 'DELETE FROM login_failure WHERE user_id = ? AND ip_addr = ?', + undef, $self->id, $ip_addr); + delete $self->{account_ip_login_failures}; +} + +sub account_ip_login_failures { + my $self = shift; + my $dbh = Bugzilla->dbh; + my $time = $dbh->sql_interval(LOGIN_LOCKOUT_INTERVAL, 'MINUTE'); + my $ip_addr = remote_ip(); + trick_taint($ip_addr); + $self->{account_ip_login_failures} ||= Bugzilla->dbh->selectall_arrayref( + "SELECT login_time, ip_addr, user_id FROM login_failure + WHERE user_id = ? AND login_time > LOCALTIMESTAMP(0) - $time + AND ip_addr = ? + ORDER BY login_time", {Slice => {}}, $self->id, $ip_addr); + return $self->{account_ip_login_failures}; +} + +############### +# Subroutines # +############### + sub is_available_username { my ($username, $old_username) = @_; @@ -1842,6 +1844,29 @@ groups. =back +=head2 Account Lockout + +=over + +=item C<account_is_locked_out> + +Returns C<1> if the account has failed to log in too many times recently, +and thus is locked out for a period of time. Returns C<0> otherwise. + +=item C<account_ip_login_failures> + +Returns an arrayref of hashrefs, that contains information about the recent +times that this account has failed to log in from the current remote IP. +The hashes contain C<ip_addr>, C<login_time>, and C<user_id>. + +=item C<note_login_failure> + +This notes that this account has failed to log in, and stores the fact +in the database. The storing happens immediately, it does not wait for +you to call C<update>. + +=back + =head2 Other Methods =over @@ -2210,6 +2235,49 @@ Untaints C<$passwd1> if successful. If a second password is passed in, this function also verifies that the two passwords match. +=item C<match_field($data, $fields, $behavior)> + +=over + +=item B<Description> + +Wrapper for the C<match()> function. + +=item B<Params> + +=over + +=item C<$fields> - A hashref with field names as keys and a hash as values. +Each hash is of the form { 'type' => 'single|multi' }, which specifies +whether the field can take a single login name only or several. + +=item C<$data> (optional) - A hashref with field names as keys and field values +as values. If undefined, C<Bugzilla-E<gt>input_params> is used. + +=item C<$behavior> (optional) - If set to C<MATCH_SKIP_CONFIRM>, no confirmation +screen is displayed. In that case, the fields which don't match a unique user +are left undefined. If not set, a confirmation screen is displayed if at +least one field doesn't match any login name or match more than one. + +=back + +=item B<Returns> + +If the third parameter is set to C<MATCH_SKIP_CONFIRM>, the function returns +either C<USER_MATCH_SUCCESS> if all fields can be set unambiguously, +C<USER_MATCH_FAILED> if at least one field doesn't match any user account, +or C<USER_MATCH_MULTIPLE> if some fields match more than one user account. + +If the third parameter is not set, then if all fields could be set +unambiguously, nothing is returned, else a confirmation page is displayed. + +=item B<Note> + +This function must be called early in a script, before anything external +is done with the data. + +=back + =back =head1 SEE ALSO diff --git a/Bugzilla/User/CVS/Entries b/Bugzilla/User/CVS/Entries index dcbb8208e..c596ab044 100644 --- a/Bugzilla/User/CVS/Entries +++ b/Bugzilla/User/CVS/Entries @@ -1,2 +1,2 @@ -/Setting.pm/1.13/Fri Sep 5 23:01:18 2008//TBUGZILLA-3_5_2 +/Setting.pm/1.13/Fri Sep 5 23:01:18 2008//TBUGZILLA-3_5_3 D/Setting//// diff --git a/Bugzilla/User/CVS/Tag b/Bugzilla/User/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/User/CVS/Tag +++ b/Bugzilla/User/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/User/Setting/CVS/Entries b/Bugzilla/User/Setting/CVS/Entries index c1a7d472f..9418465d1 100644 --- a/Bugzilla/User/Setting/CVS/Entries +++ b/Bugzilla/User/Setting/CVS/Entries @@ -1,4 +1,4 @@ -/Lang.pm/1.1/Tue Aug 21 20:47:54 2007//TBUGZILLA-3_5_2 -/Skin.pm/1.4/Tue Aug 14 21:54:34 2007//TBUGZILLA-3_5_2 -/Timezone.pm/1.1/Wed Aug 27 02:32:15 2008//TBUGZILLA-3_5_2 +/Lang.pm/1.1/Tue Aug 21 20:47:54 2007//TBUGZILLA-3_5_3 +/Skin.pm/1.4/Tue Aug 14 21:54:34 2007//TBUGZILLA-3_5_3 +/Timezone.pm/1.1/Wed Aug 27 02:32:15 2008//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/User/Setting/CVS/Tag b/Bugzilla/User/Setting/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/User/Setting/CVS/Tag +++ b/Bugzilla/User/Setting/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index 48ac06502..437979c85 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -35,7 +35,7 @@ use base qw(Exporter); detaint_signed html_quote url_quote xml_quote css_class_quote html_light_quote url_decode - i_am_cgi correct_urlbase + i_am_cgi correct_urlbase remote_ip lsearch do_ssl_redirect_if_required use_attachbase diff_arrays trim wrap_hard wrap_comment find_wrap_point @@ -54,6 +54,7 @@ use DateTime; use DateTime::TimeZone; use Digest; use Email::Address; +use List::Util qw(first); use Scalar::Util qw(tainted); use Template::Filters; use Text::Wrap; @@ -277,7 +278,25 @@ sub correct_urlbase { my $urlbase = Bugzilla->params->{'urlbase'}; my $sslbase = Bugzilla->params->{'sslbase'}; - return ($ssl && $sslbase) ? $sslbase : $urlbase; + if (!$sslbase) { + return $urlbase; + } + elsif ($ssl) { + return $sslbase; + } + else { + # Return what the user currently uses. + return (uc($ENV{HTTPS} || '') eq 'ON') ? $sslbase : $urlbase; + } +} + +sub remote_ip { + my $ip = $ENV{'REMOTE_ADDR'} || '127.0.0.1'; + my @proxies = split(/[\s,]+/, Bugzilla->params->{'inbound_proxies'}); + if (first { $_ eq $ip } @proxies) { + $ip = $ENV{'HTTP_X_FORWARDED_FOR'} if $ENV{'HTTP_X_FORWARDED_FOR'}; + } + return $ip; } sub use_attachbase { @@ -394,8 +413,8 @@ sub wrap_hard { sub format_time { my ($date, $format, $timezone) = @_; - # If $format is undefined, try to guess the correct date format. - if (!defined($format)) { + # If $format is not set, try to guess the correct date format. + if (!$format) { if (!ref $date && $date =~ /^(\d{4})[-\.](\d{2})[-\.](\d{2}) (\d{2}):(\d{2})(:(\d{2}))?$/) { diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm index 006fa0fee..6051a1d1c 100644 --- a/Bugzilla/WebService/Bug.pm +++ b/Bugzilla/WebService/Bug.pm @@ -17,6 +17,7 @@ # Mads Bondo Dydensborg <mbd@dbc.dk> # Tsahi Asher <tsahi_75@yahoo.com> # Noura Elhawary <nelhawar@redhat.com> +# Frank Becker <Frank@Frank-Becker.de> package Bugzilla::WebService::Bug; @@ -32,29 +33,14 @@ use Bugzilla::WebService::Util qw(filter validate); use Bugzilla::Bug; use Bugzilla::BugMail; use Bugzilla::Util qw(trim); +use Bugzilla::Version; +use Bugzilla::Milestone; +use Bugzilla::Status; ############# # Constants # ############# -# This maps the names of internal Bugzilla bug fields to things that would -# make sense to somebody who's not intimately familiar with the inner workings -# of Bugzilla. (These are the field names that the WebService uses.) -use constant FIELD_MAP => { - creation_time => 'creation_ts', - description => 'comment', - id => 'bug_id', - last_change_time => 'delta_ts', - platform => 'rep_platform', - severity => 'bug_severity', - status => 'bug_status', - summary => 'short_desc', - url => 'bug_file_loc', - whiteboard => 'status_whiteboard', - limit => 'LIMIT', - offset => 'OFFSET', -}; - use constant PRODUCT_SPECIFIC_FIELDS => qw(version target_milestone component); use constant DATE_FIELDS => { @@ -77,6 +63,145 @@ BEGIN { # Methods # ########### +sub fields { + my ($self, $params) = validate(@_, 'ids', 'names'); + + my @fields; + if (defined $params->{ids}) { + my $ids = $params->{ids}; + foreach my $id (@$ids) { + my $loop_field = Bugzilla::Field->check({ id => $id }); + push(@fields, $loop_field); + } + } + + if (defined $params->{names}) { + my $names = $params->{names}; + foreach my $field_name (@$names) { + my $loop_field = Bugzilla::Field->check($field_name); + push(@fields, $loop_field); + } + } + + if (!defined $params->{ids} + and !defined $params->{names}) + { + @fields = @{Bugzilla::Field->match({obsolete => 0})}; + } + + my @fields_out; + foreach my $field (@fields) { + my $visibility_field = $field->visibility_field + ? $field->visibility_field->name : undef; + my $visibility_value = $field->visibility_value + ? $field->visibility_value->name : undef; + my $value_field = $field->value_field + ? $field->value_field->name : undef; + + my @values; + if ( ($field->is_select and $field->name ne 'product') + or grep($_ eq $field->name, PRODUCT_SPECIFIC_FIELDS)) + { + @values = @{ $self->_legal_field_values({ field => $field }) }; + } + + if (grep($_ eq $field->name, PRODUCT_SPECIFIC_FIELDS)) { + $value_field = 'product'; + } + + push (@fields_out, filter $params, { + id => $self->type('int', $field->id), + type => $self->type('int', $field->type), + is_custom => $self->type('boolean', $field->custom), + name => $self->type('string', $field->name), + display_name => $self->type('string', $field->description), + is_on_bug_entry => $self->type('boolean', $field->enter_bug), + visibility_field => $self->type('string', $visibility_field), + visibility_values => [$self->type('string', $visibility_value)], + value_field => $self->type('string', $value_field), + values => \@values, + }); + } + + return { fields => \@fields_out }; +} + +sub _legal_field_values { + my ($self, $params) = @_; + my $field = $params->{field}; + my $field_name = $field->name; + my $user = Bugzilla->user; + + my @result; + if (grep($_ eq $field_name, PRODUCT_SPECIFIC_FIELDS)) { + my @list; + if ($field_name eq 'version') { + @list = Bugzilla::Version->get_all; + } + elsif ($field_name eq 'component') { + @list = Bugzilla::Component->get_all; + } + else { + @list = Bugzilla::Milestone->get_all; + } + + foreach my $value (@list) { + my $sortkey = $field_name eq 'target_milestone' + ? $value->sortkey : 0; + # XXX This is very slow for large numbers of values. + my $product_name = $value->product->name; + if ($user->can_see_product($product_name)) { + push(@result, { + name => $self->type('string', $value->name), + sortkey => $self->type('int', $sortkey), + visibility_values => [$self->type('string', $product_name)], + }); + } + } + } + + elsif ($field_name eq 'bug_status') { + my @status_all = Bugzilla::Status->get_all; + foreach my $status (@status_all) { + my @can_change_to; + foreach my $change_to (@{ $status->can_change_to }) { + # There's no need to note that a status can transition + # to itself. + next if $change_to->id == $status->id; + my %change_to_hash = ( + name => $self->type('string', $change_to->name), + comment_required => $self->type('boolean', + $change_to->comment_required_on_change_from($status)), + ); + push(@can_change_to, \%change_to_hash); + } + + push (@result, { + name => $self->type('string', $status->name), + is_open => $self->type('boolean', $status->is_open), + sortkey => $self->type('int', $status->sortkey), + can_change_to => \@can_change_to, + }); + } + } + + else { + my @values = Bugzilla::Field::Choice->type($field)->get_all(); + foreach my $value (@values) { + my $visibility_value = $value->visibility_value; + my $vis_val_name = $visibility_value ? $visibility_value->name + : undef; + push(@result, { + name => $self->type('string', $value->name), + sortkey => $self->type('int' , $value->sortkey), + visibility_values => [$self->type('string', $vis_val_name)], + }); + } + } + + return \@result; +} + sub comments { my ($self, $params) = validate(@_, 'ids', 'comment_ids'); @@ -139,6 +264,8 @@ sub comments { # Helper for Bug.comments sub _translate_comment { my ($self, $comment, $filters) = @_; + my $attach_id = $comment->is_about_attachment ? $comment->extra_data + : undef; return filter $filters, { id => $self->type('int', $comment->id), bug_id => $self->type('int', $comment->bug_id), @@ -146,6 +273,7 @@ sub _translate_comment { time => $self->type('dateTime', $comment->creation_ts), is_private => $self->type('boolean', $comment->is_private), text => $self->type('string', $comment->body_full), + attachment_id => $self->type('int', $attach_id), }; } @@ -248,7 +376,7 @@ sub search { { param => 'limit', function => 'Bug.search()' }); } - $params = _map_fields($params); + $params = Bugzilla::Bug::map_fields($params); delete $params->{WHERE}; # Do special search types for certain fields. @@ -283,7 +411,7 @@ sub search { sub create { my ($self, $params) = @_; Bugzilla->login(LOGIN_REQUIRED); - $params = _map_fields($params); + $params = Bugzilla::Bug::map_fields($params); my $bug = Bugzilla::Bug->create($params); Bugzilla::BugMail::Send($bug->bug_id, { changer => $bug->reporter->login }); return { id => $self->type('int', $bug->bug_id) }; @@ -291,7 +419,8 @@ sub create { sub legal_values { my ($self, $params) = @_; - my $field = FIELD_MAP->{$params->{field}} || $params->{field}; + my $field = Bugzilla::Bug::FIELD_MAP->{$params->{field}} + || $params->{field}; my @global_selects = Bugzilla->get_fields( {type => [FIELD_TYPE_SINGLE_SELECT, FIELD_TYPE_MULTI_SELECT]}); @@ -350,9 +479,13 @@ sub add_comment { Bugzilla->user->can_edit_product($bug->product_id) || ThrowUserError("product_edit_denied", {product => $bug->product}); - + + # Backwards-compatibility for versions before 3.6 + if (defined $params->{private}) { + $params->{is_private} = delete $params->{private}; + } # Append comment - $bug->add_comment($comment, { isprivate => $params->{private}, + $bug->add_comment($comment, { isprivate => $params->{is_private}, work_time => $params->{work_time} }); # Capture the call to bug->update (which creates the new comment) in @@ -421,21 +554,44 @@ sub update_see_also { } sub attachments { - my ($self, $params) = validate(@_, 'ids'); + my ($self, $params) = validate(@_, 'ids', 'attachment_ids'); + + if (!(defined $params->{ids} + or defined $params->{attachment_ids})) + { + ThrowCodeError('param_required', + { function => 'Bug.attachments', + params => ['ids', 'attachment_ids'] }); + } - my $ids = $params->{ids}; - defined $ids || ThrowCodeError('param_required', { param => 'ids' }); + my $ids = $params->{ids} || []; + my $attach_ids = $params->{attachment_ids} || []; - my %attachments; + my %bugs; foreach my $bug_id (@$ids) { my $bug = Bugzilla::Bug->check($bug_id); - $attachments{$bug->id} = []; + $bugs{$bug->id} = []; foreach my $attach (@{$bug->attachments}) { - push @{$attachments{$bug->id}}, + push @{$bugs{$bug->id}}, $self->_attachment_to_hash($attach, $params); } } - return { bugs => \%attachments }; + + my %attachments; + foreach my $attach (@{Bugzilla::Attachment->new_from_list($attach_ids)}) { + Bugzilla::Bug->check($attach->bug_id); + if ($attach->isprivate && !Bugzilla->user->is_insider) { + ThrowUserError('auth_failure', {action => 'access', + object => 'attachment', + attach_id => $attach->id}); + } + $attachments{$attach->id} = + $self->_attachment_to_hash($attach, $params); + } + + $bugs{attachments} = \%attachments; + + return { bugs => \%bugs }; } ############################## @@ -513,24 +669,6 @@ sub _attachment_to_hash { }; } -# Convert WebService API field names to internal DB field names. -# Used by create() and search(). -sub _map_fields { - my ($params) = @_; - - my %field_values; - foreach my $field (keys %$params) { - my $field_name = FIELD_MAP->{$field} || $field; - $field_values{$field_name} = $params->{$field}; - } - - unless (Bugzilla->user->is_timetracker) { - delete @field_values{qw(estimated_time remaining_time deadline)}; - } - - return \%field_values; -} - 1; __END__ @@ -554,9 +692,198 @@ and what B<STABLE>, B<UNSTABLE>, and B<EXPERIMENTAL> mean. =over +=item C<fields> + +B<UNSTABLE> + +=over + +=item B<Description> + +Get information about valid bug fields, including the lists of legal values +for each field. + +=item B<Params> + +You can pass either field ids or field names. + +B<Note>: If neither C<ids> nor C<names> is specified, then all +non-obsolete fields will be returned. + +In addition to the parameters below, this method also accepts the +standard L<include_fields|Bugzilla::WebService/include_fields> and +L<exclude_fields|Bugzilla::WebService/exclude_fields> arguments. + +=over + +=item C<ids> (array) - An array of integer field ids. + +=item C<names> (array) - An array of strings representing field names. + +=back + +=item B<Returns> + +A hash containing a single element, C<fields>. This is an array of hashes, +containing the following keys: + +=over + +=item C<id> + +C<int> An integer id uniquely idenfifying this field in this installation only. + +=item C<type> + +C<int> The number of the fieldtype. The following values are defined: + +=over + +=item C<0> Unknown + +=item C<1> Free Text + +=item C<2> Drop Down + +=item C<3> Multiple-Selection Box + +=item C<4> Large Text Box + +=item C<5> Date/Time + +=item C<6> Bug Id + +=item C<7> Bug URLs ("See Also") + +=back + +=item C<is_custom> + +C<boolean> True when this is a custom field, false otherwise. + +=item C<name> + +C<string> The internal name of this field. This is a unique identifier for +this field. If this is not a custom field, then this name will be the same +across all Bugzilla installations. + +=item C<display_name> + +C<string> The name of the field, as it is shown in the user interface. + +=item C<is_on_bug_entry> + +C<boolean> For custom fields, this is true if the field is shown when you +enter a new bug. For standard fields, this is currently always false, +even if the field shows up when entering a bug. (To know whether or not +a standard field is valid on bug entry, see L</create>.) + +=item C<visibility_field> + +C<string> The name of a field that controls the visibility of this field +in the user interface. This field only appears in the user interface when +the named field is equal to one of the values in C<visibility_values>. +Can be null. + +=item C<visibility_values> + +C<array> of C<string>s This field is only shown when C<visibility_field> +matches one of these values. When C<visibility_field> is null, +then this is an empty array. + +=item C<value_field> + +C<string> The name of the field that controls whether or not particular +values of the field are shown in the user interface. Can be null. + +=item C<values> + +This is an array of hashes, representing the legal values for +select-type (drop-down and multiple-selection) fields. This is also +populated for the C<component>, C<version>, and C<target_milestone> +fields, but not for the C<product> field (you must use +L<Product.get_accessible_products|Bugzilla::WebService::Product/get_accessible_products> +for that. + +For fields that aren't select-type fields, this will simply be an empty +array. + +Each hash has the following keys: + +=over + +=item C<name> + +C<string> The actual value--this is what you would specify for this +field in L</create>, etc. + +=item C<sortkey> + +C<int> Values, when displayed in a list, are sorted first by this integer +and then secondly by their name. + +=item C<visibility_values> + +If C<value_field> is defined for this field, then this value is only shown +if the C<value_field> is set to one of the values listed in this array. +Note that for per-product fields, C<value_field> is set to C<'product'> +and C<visibility_values> will reflect which product(s) this value appears in. + +=item C<is_open> + +C<boolean> For C<bug_status> values, determines whether this status +specifies that the bug is "open" (true) or "closed" (false). This item +is only included for the C<bug_status> field. + +=item C<can_change_to> + +For C<bug_status> values, this is an array of hashes that determines which +statuses you can transition to from this status. (This item is only included +for the C<bug_status> field.) + +Each hash contains the following items: + +=over + +=item C<name> + +the name of the new status + +=item C<comment_required> + +this C<boolean> True if a comment is required when you change a bug into +this status using this transition. + +=back + +=back + +=back + +=item B<Errors> + +=over + +=item 51 (Invalid Field Name or Id) + +You specified an invalid field name or id. + +=back + +=item B<History> + +=over + +=item Added in Bugzilla B<3.6>. + +=back + +=back + + =item C<legal_values> -B<EXPERIMENTAL> +B<DEPRECATED> - Use L</fields> instead. =over @@ -614,26 +941,68 @@ B<EXPERIMENTAL> =item B<Description> -Gets information about all attachments from a bug. +It allows you to get data about attachments, given a list of bugs +and/or attachment ids. B<Note>: Private attachments will only be returned if you are in the insidergroup or if you are the submitter of the attachment. =item B<Params> +B<Note>: At least one of C<ids> or C<attachment_ids> is required. + =over =item C<ids> See the description of the C<ids> parameter in the L</get> method. +=item C<attachment_ids> + +C<array> An array of integer attachment ids. + =back =item B<Returns> -A hash containing a single element, C<bugs>. This is a hash of hashes. -Each hash has the numeric bug id as a key, and contains the following -items: +A hash containing two elements: C<bugs> and C<attachments>. The return +value looks like this: + + { + bugs => { + 1345 => { + attachments => [ + { (attachment) }, + { (attachment) } + ] + }, + 9874 => { + attachments => [ + { (attachment) }, + { (attachment) } + ] + + }, + }, + + attachments => { + 234 => { (attachment) }, + 123 => { (attachment) }, + } + } + +The attachments of any bugs that you specified in the C<ids> argument in +input are returned in C<bugs> on output. C<bugs> is a hash that has integer +bug IDs for keys and contains a single key, C<attachments>. That key points +to an arrayref that contains attachments as a hash. (Fields for attachments +are described below.) + +For any attachments that you specified directly in C<attachment_ids>, they +are returned in C<attachments> on output. This is a hash where the attachment +ids point directly to hashes describing the individual attachment. + +The fields for each attachment (where it says C<(attachment)> in the +diagram above) are: =over @@ -693,7 +1062,18 @@ C<string> The login name of the user that created the attachment. =item B<Errors> -This method can throw all the same errors as L</get>. +This method can throw all the same errors as L</get>. In addition, +it can also throw the following error: + +=over + +=item 304 (Auth Failure, Attachment is Private) + +You specified the id of a private attachment in the C<attachment_ids> +argument, and you are not in the "insider group" that can see +private attachments. + +=back =item B<History> @@ -786,6 +1166,11 @@ C<int> The globally unique ID for the comment. C<int> The ID of the bug that this comment is on. +=item attachment_id + +C<int> If the comment was made on an attachment, this will be the +ID of that attachment. Otherwise it will be null. + =item text C<string> The actual text of the comment. @@ -826,6 +1211,16 @@ that id. =back +=item B<History> + +=over + +=item Added in Bugzilla B<3.4>. + +=item C<attachment_id> was added to the return value in Bugzilla B<3.6>. + +=back + =back @@ -1501,8 +1896,8 @@ comment to. If this is empty or all whitespace, an error will be thrown saying that you did not set the C<comment> parameter. -=item C<private> (boolean) - If set to true, the comment is private, otherwise -it is assumed to be public. +=item C<is_private> (boolean) - If set to true, the comment is private, +otherwise it is assumed to be public. =item C<work_time> (double) - Adds this many hours to the "Hours Worked" on the bug. If you are not in the time tracking group, this value will @@ -1549,6 +1944,10 @@ You tried to add a private comment, but don't have the necessary rights. =item Modified to throw an error if you try to add a private comment but can't, in Bugzilla B<3.4>. +=item Before Bugzilla B<3.6>, the C<is_private> argument was called +C<private>, and you can still call it C<private> for backwards-compatibility +purposes if you wish. + =back =back diff --git a/Bugzilla/WebService/Bugzilla.pm b/Bugzilla/WebService/Bugzilla.pm index b1ab8f34f..6e74900b9 100644 --- a/Bugzilla/WebService/Bugzilla.pm +++ b/Bugzilla/WebService/Bugzilla.pm @@ -21,7 +21,6 @@ package Bugzilla::WebService::Bugzilla; use strict; use base qw(Bugzilla::WebService); use Bugzilla::Constants; -use Bugzilla::Hook; use DateTime; @@ -38,15 +37,14 @@ sub version { sub extensions { my $self = shift; - my $extensions = Bugzilla::Hook::enabled_plugins(); - foreach my $name (keys %$extensions) { - my $info = $extensions->{$name}; - foreach my $data (keys %$info) { - $extensions->{$name}->{$data} = - $self->type('string', $info->{$data}); - } + + my %retval; + foreach my $extension (@{ Bugzilla->extensions }) { + my $version = $extension->VERSION || 0; + my $name = $extension->NAME; + $retval{$name}->{version} = $self->type('string', $version); } - return { extensions => $extensions }; + return { extensions => \%retval }; } sub timezone { @@ -135,10 +133,21 @@ in this Bugzilla. =item B<Returns> -A hash with a single item, C<extesions>. This points to a hash. I<That> hash -contains the names of extensions as keys, and information about the extension -as values. One of the values that must be returned is the 'version' of the -extension +A hash with a single item, C<extensions>. This points to a hash. I<That> hash +contains the names of extensions as keys, and the values are a hash. +That hash contains a single key C<version>, which is the version of the +extension, or C<0> if the extension hasn't defined a version. + +The return value looks something like this: + + extensions => { + Example => { + version => '3.6', + }, + BmpConvert => { + version => '1.0', + }, + } =item B<History> @@ -146,6 +155,10 @@ extension =item Added in Bugzilla B<3.2>. +=item As of Bugzilla B<3.6>, the names of extensions are canonical names +that the extensions define themselves. Before 3.6, the names of the +extensions depended on the directory they were in on the Bugzilla server. + =back =back diff --git a/Bugzilla/WebService/CVS/Entries b/Bugzilla/WebService/CVS/Entries index 418551f46..9dec82112 100644 --- a/Bugzilla/WebService/CVS/Entries +++ b/Bugzilla/WebService/CVS/Entries @@ -1,9 +1,9 @@ -/Bug.pm/1.46/Tue Nov 10 21:21:53 2009//TBUGZILLA-3_5_2 -/Bugzilla.pm/1.11/Fri Jan 9 19:13:32 2009//TBUGZILLA-3_5_2 -/Constants.pm/1.29/Fri Sep 11 16:10:35 2009//TBUGZILLA-3_5_2 -/Product.pm/1.8/Mon Jan 26 20:40:22 2009//TBUGZILLA-3_5_2 -/README/1.1/Tue Mar 31 06:37:57 2009//TBUGZILLA-3_5_2 -/Server.pm/1.3/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_2 -/User.pm/1.16/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_2 -/Util.pm/1.4/Mon Nov 9 18:27:52 2009//TBUGZILLA-3_5_2 +/Bug.pm/1.52/Thu Dec 17 05:13:55 2009//TBUGZILLA-3_5_3 +/Bugzilla.pm/1.12/Thu Dec 17 21:51:41 2009//TBUGZILLA-3_5_3 +/Constants.pm/1.29/Fri Sep 11 16:10:35 2009//TBUGZILLA-3_5_3 +/Product.pm/1.8/Mon Jan 26 20:40:22 2009//TBUGZILLA-3_5_3 +/README/1.1/Tue Mar 31 06:37:57 2009//TBUGZILLA-3_5_3 +/Server.pm/1.3/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_3 +/User.pm/1.16/Mon Nov 9 19:15:30 2009//TBUGZILLA-3_5_3 +/Util.pm/1.4/Mon Nov 9 18:27:52 2009//TBUGZILLA-3_5_3 D/Server//// diff --git a/Bugzilla/WebService/CVS/Tag b/Bugzilla/WebService/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/WebService/CVS/Tag +++ b/Bugzilla/WebService/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/WebService/Server/CVS/Entries b/Bugzilla/WebService/Server/CVS/Entries index 2eb516b62..083f3b2b1 100644 --- a/Bugzilla/WebService/Server/CVS/Entries +++ b/Bugzilla/WebService/Server/CVS/Entries @@ -1,3 +1,3 @@ -/JSONRPC.pm/1.4/Wed Nov 18 07:09:49 2009//TBUGZILLA-3_5_2 -/XMLRPC.pm/1.9/Tue Nov 10 21:19:47 2009//TBUGZILLA-3_5_2 +/JSONRPC.pm/1.4/Wed Nov 18 07:09:49 2009//TBUGZILLA-3_5_3 +/XMLRPC.pm/1.9/Tue Nov 10 21:19:47 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/WebService/Server/CVS/Tag b/Bugzilla/WebService/Server/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/WebService/Server/CVS/Tag +++ b/Bugzilla/WebService/Server/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Whine/CVS/Entries b/Bugzilla/Whine/CVS/Entries index f9e91f002..ee487fc76 100644 --- a/Bugzilla/Whine/CVS/Entries +++ b/Bugzilla/Whine/CVS/Entries @@ -1,2 +1,3 @@ -/Schedule.pm/1.1/Mon Nov 9 18:35:40 2009//TBUGZILLA-3_5_2 +/Query.pm/1.1/Sat Dec 12 22:15:43 2009//TBUGZILLA-3_5_3 +/Schedule.pm/1.1/Mon Nov 9 18:35:40 2009//TBUGZILLA-3_5_3 D diff --git a/Bugzilla/Whine/CVS/Tag b/Bugzilla/Whine/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/Bugzilla/Whine/CVS/Tag +++ b/Bugzilla/Whine/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/Bugzilla/Whine/Query.pm b/Bugzilla/Whine/Query.pm new file mode 100644 index 000000000..11215759b --- /dev/null +++ b/Bugzilla/Whine/Query.pm @@ -0,0 +1,136 @@ +# -*- 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 Eric Black. +# Portions created by the Initial Developer are Copyright (C) 2009 +# Eric Black. All Rights Reserved. +# +# Contributor(s): Eric Black <black.eric@gmail.com> + +package Bugzilla::Whine::Query; + +use strict; + +use base qw(Bugzilla::Object); + +use Bugzilla::Constants; +use Bugzilla::Search::Saved; + +############# +# Constants # +############# + +use constant DB_TABLE => 'whine_queries'; + +use constant DB_COLUMNS => qw( + id + eventid + query_name + sortkey + onemailperbug + title +); + +use constant NAME_FIELD => 'id'; +use constant LIST_ORDER => 'sortkey'; + +#################### +# Simple Accessors # +#################### +sub eventid { return $_[0]->{'eventid'}; } +sub sortkey { return $_[0]->{'sortkey'}; } +sub one_email_per_bug { return $_[0]->{'onemailperbug'}; } +sub title { return $_[0]->{'title'}; } +sub name { return $_[0]->{'query_name'}; } + + +1; + +__END__ + +=head1 NAME + +Bugzilla::Whine::Query - A query object used by L<Bugzilla::Whine>. + +=head1 SYNOPSIS + + use Bugzilla::Whine::Query; + + my $query = new Bugzilla::Whine::Query($id); + + my $event_id = $query->eventid; + my $id = $query->id; + my $query_name = $query->name; + my $sortkey = $query->sortkey; + my $one_email_per_bug = $query->one_email_per_bug; + my $title = $query->title; + +=head1 DESCRIPTION + +This module exists to represent a query for a L<Bugzilla::Whine::Event>. +Each event, which are groups of schedules and queries based on how the +user configured the event, may have zero or more queries associated +with it. Additionally, the queries are selected from the user's saved +searches, or L<Bugzilla::Search::Saved> object with a matching C<name> +attribute for the user. + +This is an implementation of L<Bugzilla::Object>, and so has all the +same methods available as L<Bugzilla::Object>, in addition to what is +documented below. + +=head1 METHODS + +=head2 Constructors + +=over + +=item C<new> + +Does not accept a bare C<name> argument. Instead, accepts only an id. + +See also: L<Bugzilla::Object/new>. + +=back + + +=head2 Accessors + +These return data about the object, without modifying the object. + +=over + +=item C<event_id> + +The L<Bugzilla::Whine::Event> object id for this object. + +=item C<name> + +The L<Bugzilla::Search::Saved> query object name for this object. + +=item C<sortkey> + +The relational sorting key as compared with other L<Bugzilla::Whine::Query> +objects. + +=item C<one_email_per_bug> + +Returns a numeric 1(C<true>) or 0(C<false>) to represent whether this +L<Bugzilla::Whine::Query> object is supposed to be mailed as a list of +bugs or one email per bug. + +=item C<title> + +The title of this object as it appears in the user forms and emails. + +=back diff --git a/CVS/Entries b/CVS/Entries index a480300a6..f90c67dd9 100644 --- a/CVS/Entries +++ b/CVS/Entries @@ -1,74 +1,74 @@ -/.cvsignore/1.8/Fri Oct 19 07:58:48 2007//TBUGZILLA-3_5_2 -/Bugzilla.pm/1.83/Wed Nov 18 07:01:40 2009//TBUGZILLA-3_5_2 -/README/1.53/Wed Jul 29 08:18:52 2009//TBUGZILLA-3_5_2 -/admin.cgi/1.2/Fri Oct 19 06:46:10 2007//TBUGZILLA-3_5_2 -/attachment.cgi/1.163/Sat Oct 24 05:22:45 2009//TBUGZILLA-3_5_2 -/buglist.cgi/1.408/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 -/bugzilla.dtd/1.16/Mon Oct 26 16:16:21 2009//TBUGZILLA-3_5_2 -/chart.cgi/1.32/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_2 -/checksetup.pl/1.564/Wed Aug 12 13:05:26 2009//TBUGZILLA-3_5_2 -/colchange.cgi/1.70/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 -/collectstats.pl/1.71/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_2 -/config.cgi/1.33/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 -/createaccount.cgi/1.57/Sun Nov 11 22:03:16 2007//TBUGZILLA-3_5_2 -/describecomponents.cgi/1.40/Thu May 21 08:43:23 2009//TBUGZILLA-3_5_2 -/describekeywords.cgi/1.22/Sun Jan 25 12:42:51 2009//TBUGZILLA-3_5_2 -/duplicates.cgi/1.64/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_2 -/editclassifications.cgi/1.33/Fri Jan 2 13:59:22 2009//TBUGZILLA-3_5_2 -/editcomponents.cgi/1.87/Sat Apr 11 23:33:24 2009//TBUGZILLA-3_5_2 -/editfields.cgi/1.12/Thu Jan 15 15:47:36 2009//TBUGZILLA-3_5_2 -/editflagtypes.cgi/1.56/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_2 -/editgroups.cgi/1.92/Wed Sep 30 08:59:50 2009//TBUGZILLA-3_5_2 -/editkeywords.cgi/1.48/Mon Nov 9 19:51:58 2009//TBUGZILLA-3_5_2 -/editmilestones.cgi/1.62/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_2 -/editparams.cgi/1.50/Fri Aug 22 16:00:33 2008//TBUGZILLA-3_5_2 -/editproducts.cgi/1.150/Fri Oct 30 01:01:22 2009//TBUGZILLA-3_5_2 -/editsettings.cgi/1.11/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_2 -/editusers.cgi/1.154/Wed Aug 5 12:35:51 2009//TBUGZILLA-3_5_2 -/editvalues.cgi/1.40/Fri Jul 17 22:40:13 2009//TBUGZILLA-3_5_2 -/editversions.cgi/1.59/Fri Apr 10 09:36:43 2009//TBUGZILLA-3_5_2 -/editwhines.cgi/1.25/Mon Nov 9 18:35:39 2009//TBUGZILLA-3_5_2 -/editworkflow.cgi/1.6/Wed Jul 2 19:10:17 2008//TBUGZILLA-3_5_2 -/email_in.pl/1.28/Tue Nov 10 01:36:02 2009//TBUGZILLA-3_5_2 -/enter_bug.cgi/1.173/Mon Nov 16 11:19:17 2009//TBUGZILLA-3_5_2 -/importxml.pl/1.93/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_2 -/index.cgi/1.29/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_2 -/install-module.pl/1.5/Wed Sep 16 09:43:23 2009//TBUGZILLA-3_5_2 -/jobqueue.pl/1.4/Fri Sep 4 21:20:16 2009//TBUGZILLA-3_5_2 -/jsonrpc.cgi/1.4/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_2 -/long_list.cgi/1.48/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 -/migrate.pl/1.1/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_2 -/mod_perl.pl/1.12/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 -/page.cgi/1.21/Thu Aug 6 15:14:47 2009//TBUGZILLA-3_5_2 -/post_bug.cgi/1.205/Tue Nov 10 21:21:52 2009//TBUGZILLA-3_5_2 -/process_bug.cgi/1.425/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 -/query.cgi/1.189/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 -/quips.cgi/1.39/Wed Nov 5 18:38:49 2008//TBUGZILLA-3_5_2 -/relogin.cgi/1.43/Wed Apr 15 17:52:46 2009//TBUGZILLA-3_5_2 -/report.cgi/1.47/Fri Nov 13 00:34:47 2009//TBUGZILLA-3_5_2 -/reports.cgi/1.95/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_2 -/request.cgi/1.50/Sun Aug 9 20:17:44 2009//TBUGZILLA-3_5_2 -/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-3_5_2 -/runtests.pl/1.5/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 -/sanitycheck.cgi/1.146/Mon Sep 21 22:10:07 2009//TBUGZILLA-3_5_2 -/sanitycheck.pl/1.4/Tue Dec 16 21:16:29 2008//TBUGZILLA-3_5_2 -/search_plugin.cgi/1.4/Tue Dec 16 22:39:41 2008//TBUGZILLA-3_5_2 -/show_activity.cgi/1.26/Sun Jan 25 12:42:52 2009//TBUGZILLA-3_5_2 -/show_bug.cgi/1.62/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 -/showattachment.cgi/1.16/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 -/showdependencygraph.cgi/1.69/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_2 -/showdependencytree.cgi/1.53/Sun Jun 29 21:57:54 2008//TBUGZILLA-3_5_2 -/sidebar.cgi/1.19/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 -/summarize_time.cgi/1.26/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_2 -/testagent.cgi/1.3/Sun Feb 11 00:12:24 2007//TBUGZILLA-3_5_2 -/testserver.pl/1.22/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_2 -/token.cgi/1.65/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_2 -/userprefs.cgi/1.126/Mon Feb 2 19:21:09 2009//TBUGZILLA-3_5_2 -/votes.cgi/1.58/Wed Jul 1 11:02:21 2009//TBUGZILLA-3_5_2 -/whine.pl/1.40/Tue Jul 7 18:16:51 2009//TBUGZILLA-3_5_2 -/whineatnews.pl/1.31/Wed Apr 2 17:42:26 2008//TBUGZILLA-3_5_2 -/xml.cgi/1.14/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_2 -/xmlrpc.cgi/1.14/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_2 +/.cvsignore/1.8/Fri Oct 19 07:58:48 2007//TBUGZILLA-3_5_3 +/Bugzilla.pm/1.85/Tue Nov 24 06:09:41 2009//TBUGZILLA-3_5_3 +/README/1.53/Wed Jul 29 08:18:52 2009//TBUGZILLA-3_5_3 +/admin.cgi/1.2/Fri Oct 19 06:46:10 2007//TBUGZILLA-3_5_3 +/attachment.cgi/1.167/Wed Dec 30 14:54:28 2009//TBUGZILLA-3_5_3 +/buglist.cgi/1.409/Wed Jan 6 14:59:10 2010//TBUGZILLA-3_5_3 +/bugzilla.dtd/1.16/Mon Oct 26 16:16:21 2009//TBUGZILLA-3_5_3 +/chart.cgi/1.32/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_3 +/checksetup.pl/1.565/Tue Nov 24 06:09:41 2009//TBUGZILLA-3_5_3 +/colchange.cgi/1.71/Tue Nov 24 06:09:41 2009//TBUGZILLA-3_5_3 +/collectstats.pl/1.71/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_3 +/config.cgi/1.33/Tue Nov 10 16:31:47 2009//TBUGZILLA-3_5_3 +/createaccount.cgi/1.57/Sun Nov 11 22:03:16 2007//TBUGZILLA-3_5_3 +/describecomponents.cgi/1.40/Thu May 21 08:43:23 2009//TBUGZILLA-3_5_3 +/describekeywords.cgi/1.22/Sun Jan 25 12:42:51 2009//TBUGZILLA-3_5_3 +/duplicates.cgi/1.64/Sun Sep 6 22:45:51 2009//TBUGZILLA-3_5_3 +/editclassifications.cgi/1.33/Fri Jan 2 13:59:22 2009//TBUGZILLA-3_5_3 +/editcomponents.cgi/1.88/Sun Jan 31 23:33:30 2010//TBUGZILLA-3_5_3 +/editfields.cgi/1.12/Thu Jan 15 15:47:36 2009//TBUGZILLA-3_5_3 +/editflagtypes.cgi/1.57/Mon Nov 23 22:40:54 2009//TBUGZILLA-3_5_3 +/editgroups.cgi/1.93/Thu Dec 31 12:48:21 2009//TBUGZILLA-3_5_3 +/editkeywords.cgi/1.48/Mon Nov 9 19:51:58 2009//TBUGZILLA-3_5_3 +/editmilestones.cgi/1.62/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_3 +/editparams.cgi/1.51/Tue Nov 24 06:09:41 2009//TBUGZILLA-3_5_3 +/editproducts.cgi/1.154/Thu Dec 17 23:31:52 2009//TBUGZILLA-3_5_3 +/editsettings.cgi/1.11/Sun Jan 27 23:14:14 2008//TBUGZILLA-3_5_3 +/editusers.cgi/1.155/Wed Dec 30 14:28:38 2009//TBUGZILLA-3_5_3 +/editvalues.cgi/1.40/Fri Jul 17 22:40:13 2009//TBUGZILLA-3_5_3 +/editversions.cgi/1.59/Fri Apr 10 09:36:43 2009//TBUGZILLA-3_5_3 +/editwhines.cgi/1.27/Sun Jan 31 23:33:30 2010//TBUGZILLA-3_5_3 +/editworkflow.cgi/1.6/Wed Jul 2 19:10:17 2008//TBUGZILLA-3_5_3 +/email_in.pl/1.31/Sun Jan 31 23:33:30 2010//TBUGZILLA-3_5_3 +/enter_bug.cgi/1.176/Thu Dec 17 23:31:52 2009//TBUGZILLA-3_5_3 +/importxml.pl/1.95/Thu Dec 17 23:31:53 2009//TBUGZILLA-3_5_3 +/index.cgi/1.29/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_3 +/install-module.pl/1.5/Wed Sep 16 09:43:23 2009//TBUGZILLA-3_5_3 +/jobqueue.pl/1.4/Fri Sep 4 21:20:16 2009//TBUGZILLA-3_5_3 +/jsonrpc.cgi/1.4/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_3 +/long_list.cgi/1.48/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_3 +/migrate.pl/1.1/Sat Oct 24 05:30:15 2009//TBUGZILLA-3_5_3 +/mod_perl.pl/1.15/Sun Jan 31 17:46:15 2010//TBUGZILLA-3_5_3 +/page.cgi/1.22/Tue Nov 24 06:09:42 2009//TBUGZILLA-3_5_3 +/post_bug.cgi/1.209/Sun Jan 31 23:33:30 2010//TBUGZILLA-3_5_3 +/process_bug.cgi/1.428/Mon Feb 1 00:19:54 2010//TBUGZILLA-3_5_3 +/query.cgi/1.190/Sun Jan 31 17:52:38 2010//TBUGZILLA-3_5_3 +/quips.cgi/1.39/Wed Nov 5 18:38:49 2008//TBUGZILLA-3_5_3 +/relogin.cgi/1.43/Wed Apr 15 17:52:46 2009//TBUGZILLA-3_5_3 +/report.cgi/1.47/Fri Nov 13 00:34:47 2009//TBUGZILLA-3_5_3 +/reports.cgi/1.95/Sat Oct 24 05:21:06 2009//TBUGZILLA-3_5_3 +/request.cgi/1.51/Sun Jan 31 23:33:31 2010//TBUGZILLA-3_5_3 +/robots.txt/1.2/Wed Apr 24 18:11:00 2002//TBUGZILLA-3_5_3 +/runtests.pl/1.5/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_3 +/sanitycheck.cgi/1.148/Thu Dec 17 23:31:53 2009//TBUGZILLA-3_5_3 +/sanitycheck.pl/1.4/Tue Dec 16 21:16:29 2008//TBUGZILLA-3_5_3 +/search_plugin.cgi/1.4/Tue Dec 16 22:39:41 2008//TBUGZILLA-3_5_3 +/show_activity.cgi/1.26/Sun Jan 25 12:42:52 2009//TBUGZILLA-3_5_3 +/show_bug.cgi/1.62/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_3 +/showattachment.cgi/1.16/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_3 +/showdependencygraph.cgi/1.69/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_3 +/showdependencytree.cgi/1.53/Sun Jun 29 21:57:54 2008//TBUGZILLA-3_5_3 +/sidebar.cgi/1.19/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_3 +/summarize_time.cgi/1.26/Tue Nov 10 16:31:48 2009//TBUGZILLA-3_5_3 +/testagent.cgi/1.3/Sun Feb 11 00:12:24 2007//TBUGZILLA-3_5_3 +/testserver.pl/1.22/Fri Sep 4 21:08:05 2009//TBUGZILLA-3_5_3 +/token.cgi/1.65/Fri Oct 9 04:31:09 2009//TBUGZILLA-3_5_3 +/userprefs.cgi/1.127/Sun Jan 31 23:33:31 2010//TBUGZILLA-3_5_3 +/votes.cgi/1.58/Wed Jul 1 11:02:21 2009//TBUGZILLA-3_5_3 +/whine.pl/1.41/Mon Dec 28 00:58:47 2009//TBUGZILLA-3_5_3 +/whineatnews.pl/1.31/Wed Apr 2 17:42:26 2008//TBUGZILLA-3_5_3 +/xml.cgi/1.14/Fri Oct 19 06:46:11 2007//TBUGZILLA-3_5_3 +/xmlrpc.cgi/1.14/Tue Nov 10 21:19:46 2009//TBUGZILLA-3_5_3 D/Bugzilla//// D/contrib//// D/docs//// diff --git a/CVS/Tag b/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/CVS/Tag +++ b/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/attachment.cgi b/attachment.cgi index a10d9f970..0181f8cad 100755 --- a/attachment.cgi +++ b/attachment.cgi @@ -249,8 +249,34 @@ sub view { # Make sure the attachment is served from the correct server. my $bug_id = $attachment->bug_id; - if (!$cgi->url_is_attachment_base($bug_id)) { - # We couldn't call Bugzilla->login earlier as we first had to + if ($cgi->url_is_attachment_base($bug_id)) { + # No need to validate the token for public attachments. We cannot request + # credentials as we are on the alternate host. + if (!attachmentIsPublic($attachment)) { + my $token = $cgi->param('t'); + my ($userid, undef, $token_attach_id) = Bugzilla::Token::GetTokenData($token); + unless ($userid + && detaint_natural($token_attach_id) + && ($token_attach_id == $attachment->id)) + { + # Not a valid token. + print $cgi->redirect('-location' => correct_urlbase() . $path); + exit; + } + # Change current user without creating cookies. + Bugzilla->set_user(new Bugzilla::User($userid)); + # Tokens are single use only, delete it. + delete_token($token); + } + } + elsif ($cgi->url_is_attachment_base) { + # If we come here, this means that each bug has its own host + # for attachments, and that we are trying to view one attachment + # using another bug's host. That's not desired. + $cgi->redirect_to_urlbase; + } + else { + # We couldn't call Bugzilla->login earlier as we first had to # make sure we were not going to request credentials on the # alternate host. Bugzilla->login(); @@ -270,25 +296,6 @@ sub view { print $cgi->redirect(-location => $attachbase . "$path&t=$token"); exit; } - } else { - # No need to validate the token for public attachments. We cannot request - # credentials as we are on the alternate host. - if (!attachmentIsPublic($attachment)) { - my $token = $cgi->param('t'); - my ($userid, undef, $token_attach_id) = Bugzilla::Token::GetTokenData($token); - unless ($userid - && detaint_natural($token_attach_id) - && ($token_attach_id == $attachment->id)) - { - # Not a valid token. - print $cgi->redirect('-location' => correct_urlbase() . $path); - exit; - } - # Change current user without creating cookies. - Bugzilla->set_user(new Bugzilla::User($userid)); - # Tokens are single use only, delete it. - delete_token($token); - } } } else { do_ssl_redirect_if_required(); @@ -483,11 +490,10 @@ sub insert { $attachment->update($timestamp); # Insert a comment about the new attachment into the database. - my $comment = "Created an attachment (id=" . $attachment->id . ")\n" . - $attachment->description . "\n"; - $comment .= ("\n" . $cgi->param('comment')) if defined $cgi->param('comment'); - - $bug->add_comment($comment, { isprivate => $attachment->isprivate }); + my $comment = $cgi->param('comment'); + $bug->add_comment($comment, { isprivate => $attachment->isprivate, + type => CMT_ATTACHMENT_CREATED, + extra_data => $attachment->id }); # Assign the bug to the user, if they are allowed to take it my $owner = ""; @@ -497,7 +503,8 @@ sub insert { ($bug_status) = grep {$_->name eq $bug_status} @{$bug->status->can_change_to}; if ($bug_status && $bug_status->is_open - && ($bug_status->name ne 'UNCONFIRMED' || $bug->product_obj->votes_to_confirm)) + && ($bug_status->name ne 'UNCONFIRMED' + || $bug->product_obj->allows_unconfirmed)) { $bug->set_status($bug_status->name); $bug->clear_resolution(); @@ -617,13 +624,11 @@ sub update { # If the user submitted a comment while editing the attachment, # add the comment to the bug. Do this after having validated isprivate! - if ($cgi->param('comment')) { - # Prepend a string to the comment to let users know that the comment came - # from the "edit attachment" screen. - my $comment = "(From update of attachment " . $attachment->id . ")\n" . - $cgi->param('comment'); - - $bug->add_comment($comment, { isprivate => $attachment->isprivate }); + my $comment = $cgi->param('comment'); + if (trim($comment)) { + $bug->add_comment($comment, { isprivate => $attachment->isprivate, + type => CMT_ATTACHMENT_UPDATED, + extra_data => $attachment->id }); } if ($can_edit) { diff --git a/buglist.cgi b/buglist.cgi index 6b03b123d..b8cfa6336 100755 --- a/buglist.cgi +++ b/buglist.cgi @@ -855,7 +855,9 @@ if (defined $cgi->param('limit')) { } elsif ($fulltext) { $query .= " " . $dbh->sql_limit(FULLTEXT_BUGLIST_LIMIT); - $vars->{'message'} = 'buglist_sorted_by_relevance' if ($cgi->param('order') =~ /^relevance/); + if ($cgi->param('order') && $cgi->param('order') =~ /^relevance/) { + $vars->{'message'} = 'buglist_sorted_by_relevance'; + } } diff --git a/checksetup.pl b/checksetup.pl index d3e3f7952..8993ff08d 100755 --- a/checksetup.pl +++ b/checksetup.pl @@ -222,7 +222,7 @@ Bugzilla::Install::reset_password($switch{'reset-password'}) Bugzilla::Install::create_default_product(); -Bugzilla::Hook::process('install-before_final_checks', {'silent' => $silent }); +Bugzilla::Hook::process('install_before_final_checks', { silent => $silent }); ########################################################################### # Final checks diff --git a/colchange.cgi b/colchange.cgi index 6c2fa8090..409f15e5a 100755 --- a/colchange.cgi +++ b/colchange.cgi @@ -88,7 +88,7 @@ my @custom_fields = grep { $_->type != FIELD_TYPE_MULTI_SELECT } Bugzilla->active_custom_fields; push(@masterlist, map { $_->name } @custom_fields); -Bugzilla::Hook::process("colchange-columns", {'columns' => \@masterlist} ); +Bugzilla::Hook::process('colchange_columns', {'columns' => \@masterlist} ); $vars->{'masterlist'} = \@masterlist; diff --git a/contrib/.cvsignore b/contrib/.cvsignore new file mode 100644 index 000000000..03c88fd7a --- /dev/null +++ b/contrib/.cvsignore @@ -0,0 +1 @@ +.htaccess diff --git a/contrib/CVS/Entries b/contrib/CVS/Entries index caacea195..7aa7dc2c9 100644 --- a/contrib/CVS/Entries +++ b/contrib/CVS/Entries @@ -1,16 +1,19 @@ -/README/1.12/Tue Oct 16 10:13:54 2007//TBUGZILLA-3_5_2 -/bugzilla-queue/1.1/Fri Sep 4 21:20:41 2009//TBUGZILLA-3_5_2 -/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-3_5_2 -/bz_webservice_demo.pl/1.14/Mon May 19 18:38:26 2008//TBUGZILLA-3_5_2 -/bzdbcopy.pl/1.9/Sat Oct 24 05:30:19 2009//TBUGZILLA-3_5_2 -/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-3_5_2 -/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_2 -/merge-users.pl/1.8/Tue Mar 11 15:50:04 2008//TBUGZILLA-3_5_2 -/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-3_5_2 -/recode.pl/1.6/Fri Feb 20 21:54:16 2009//TBUGZILLA-3_5_2 -/sendbugmail.pl/1.8/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_2 -/sendunsentbugmail.pl/1.10/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_2 -/syncLDAP.pl/1.14/Mon Jul 7 09:01:51 2008//TBUGZILLA-3_5_2 -/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-3_5_2 +/.cvsignore/1.1/Mon Feb 1 00:33:37 2010//TBUGZILLA-3_5_3 +/README/1.12/Tue Oct 16 10:13:54 2007//TBUGZILLA-3_5_3 +/bugzilla-queue/1.1/Fri Sep 4 21:20:41 2009//TBUGZILLA-3_5_3 +/bugzilla_ldapsync.rb/1.2/Sat Apr 26 16:35:04 2003//TBUGZILLA-3_5_3 +/bz_webservice_demo.pl/1.14/Mon May 19 18:38:26 2008//TBUGZILLA-3_5_3 +/bzdbcopy.pl/1.9/Sat Oct 24 05:30:19 2009//TBUGZILLA-3_5_3 +/console.pl/1.1/Sun Jan 31 17:49:13 2010//TBUGZILLA-3_5_3 +/cvs-update.pl/1.1/Tue Nov 11 05:58:52 2003//TBUGZILLA-3_5_3 +/extension-convert.pl/1.2/Wed Nov 25 03:37:09 2009//TBUGZILLA-3_5_3 +/jb2bz.py/1.5/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_3 +/merge-users.pl/1.8/Tue Mar 11 15:50:04 2008//TBUGZILLA-3_5_3 +/mysqld-watcher.pl/1.5/Thu Mar 27 00:06:53 2003//TBUGZILLA-3_5_3 +/recode.pl/1.6/Fri Feb 20 21:54:16 2009//TBUGZILLA-3_5_3 +/sendbugmail.pl/1.8/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_3 +/sendunsentbugmail.pl/1.10/Fri Oct 19 06:46:17 2007//TBUGZILLA-3_5_3 +/syncLDAP.pl/1.14/Mon Jul 7 09:01:51 2008//TBUGZILLA-3_5_3 +/yp_nomail.sh/1.1/Tue Sep 12 23:50:31 2000//TBUGZILLA-3_5_3 D/bugzilla-submit//// D/cmdline//// diff --git a/contrib/CVS/Tag b/contrib/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/contrib/CVS/Tag +++ b/contrib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/contrib/bugzilla-submit/CVS/Entries b/contrib/bugzilla-submit/CVS/Entries index 53f0f9089..5c500e9e2 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-3_5_2 -/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-3_5_2 -/bugzilla-submit/1.7/Wed Sep 30 08:55:08 2009//TBUGZILLA-3_5_2 -/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-3_5_2 +/README/1.2/Wed Dec 10 23:36:21 2003//TBUGZILLA-3_5_3 +/bugdata.txt/1.2/Fri Jan 16 22:26:49 2004//TBUGZILLA-3_5_3 +/bugzilla-submit/1.7/Wed Sep 30 08:55:08 2009//TBUGZILLA-3_5_3 +/bugzilla-submit.xml/1.7/Mon Apr 11 14:23:32 2005//TBUGZILLA-3_5_3 D diff --git a/contrib/bugzilla-submit/CVS/Tag b/contrib/bugzilla-submit/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/contrib/bugzilla-submit/CVS/Tag +++ b/contrib/bugzilla-submit/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/contrib/cmdline/CVS/Entries b/contrib/cmdline/CVS/Entries index 56be3dace..d261fdacc 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-3_5_2 -/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 -/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 -/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 -/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 -/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_2 -/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_2 +/bugcount/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/bugids/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/buglist/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/bugs/1.2/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/bugslink/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/makequery/1.1/Thu Jan 27 19:42:34 2005//TBUGZILLA-3_5_3 +/query.conf/1.3/Fri Aug 26 23:11:32 2005//TBUGZILLA-3_5_3 D diff --git a/contrib/cmdline/CVS/Tag b/contrib/cmdline/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/contrib/cmdline/CVS/Tag +++ b/contrib/cmdline/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/contrib/console.pl b/contrib/console.pl new file mode 100644 index 000000000..e9d06cd94 --- /dev/null +++ b/contrib/console.pl @@ -0,0 +1,186 @@ +#!/usr/bin/perl -w +# -*- 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 the National Aeronautics +# and Space Administration of the United States Government. +# Portions created by the Initial Developer are Copyright (C) 2010 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): Jesse Clark <jjclark1982@gmail.com> + +use File::Basename; +BEGIN { chdir dirname($0) . "/.."; } +use lib qw(. lib); + +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Util; +use Bugzilla::Bug; + +use Term::ReadLine; +use Data::Dumper; +$Data::Dumper::Sortkeys = 1; +$Data::Dumper::Terse = 1; +$Data::Dumper::Indent = 1; +$Data::Dumper::Useqq = 1; +$Data::Dumper::Maxdepth = 1; +$Data::Dumper::Deparse = 0; + +my $sysname = get_text('term', {term => 'Bugzilla'}); +my $term = new Term::ReadLine "$sysname Console"; +read_history($term); +END { write_history($term) } + +while ( defined (my $input = $term->readline("$sysname> ")) ) { + my @res = eval($input); + if ($@) { + warn $@; + } + else { + print Dumper(@res); + } +} +print STDERR "\n"; +exit 0; + +# d: full dump (normal behavior is limited to depth of 1) +sub d { + local $Data::Dumper::Maxdepth = 0; + local $Data::Dumper::Deparse = 1; + print Dumper(@_); + return (); +} + +# p: print as a single string (normal behavior puts list items on separate lines) +sub p { + local $^W=0; # suppress possible undefined var message + print(@_, "\n"); + return (); +} + +sub filter { + my $name = shift; + my $filter = Bugzilla->template->{SERVICE}->{CONTEXT}->{CONFIG}->{FILTERS}->{$name}; + if (scalar @_) { + return $filter->(@_); + } + else { + return $filter; + } +} + +sub b { get_object('Bugzilla::Bug', @_) } +sub u { get_object('Bugzilla::User', @_) } +sub f { get_object('Bugzilla::Field', @_) } + +sub get_object { + my $class = shift; + $_ = shift; + my @results = (); + + if (ref $_ eq 'HASH' && keys %$_) { + @results = @{$class->match($_)}; + } + elsif (m/^\d+$/) { + @results = ($class->new($_)); + } + elsif (m/\w/i && grep {$_ eq 'name'} ($class->DB_COLUMNS)) { + @results = @{$class->match({name => $_})}; + } + else { + @results = (); + } + + if (wantarray) { + return @results; + } + else { + return shift @results; + } +} + +sub read_history { + my ($term) = @_; + + if (open HIST, "<$ENV{HOME}/.bugzilla_console_history") { + foreach (<HIST>) { + chomp; + $term->addhistory($_); + } + close HIST; + } +} + +sub write_history { + my ($term) = @_; + + if ($term->can('GetHistory') && open HIST, ">$ENV{HOME}/.bugzilla_console_history") { + my %seen_hist = (); + my @hist = (); + foreach my $line (reverse $term->GetHistory()) { + next unless $line =~ m/\S/; + next if $seen_hist{$line}; + $seen_hist{$line} = 1; + push @hist, $line; + last if (scalar @hist > 500); + } + foreach (reverse @hist) { + print HIST $_, "\n"; + } + close HIST; + } +} + +__END__ + +=head1 NAME + +B<console.pl> - command-line interface to Bugzilla API + +=head1 SYNOPSIS + +$ B<contrib/console.pl> + +Bugzilla> B<b(5)-E<gt>short_desc> + +=over 8 + +"Misplaced Widget" + +=back + +Bugzilla> B<$f = f "cf_subsystem"; scalar @{$f-E<gt>legal_values}> + +=over 8 + +177 + +=back + +Bugzilla> B<p filter html_light, "1 E<lt> 2 E<lt>bE<gt>3E<lt>/bE<gt>"> + +=over 8 + +1 < 2 E<lt>bE<gt>3E<lt>/bE<gt> + +=back + +Bugzilla> B<$u = u 5; $u-E<gt>groups; d $u> + +=head1 DESCRIPTION + +Loads Bugzilla packages and prints expressions with Data::Dumper. +Useful for checking results of Bugzilla API calls without opening +a debug file from a cgi. diff --git a/contrib/extension-convert.pl b/contrib/extension-convert.pl new file mode 100644 index 000000000..88718cf83 --- /dev/null +++ b/contrib/extension-convert.pl @@ -0,0 +1,303 @@ +#!/usr/bin/perl -w +# +# 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 Everything Solved, Inc. +# Portions created by the Initial Developer are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use warnings; +use lib qw(. lib); + +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Util qw(trim); + +use File::Basename; +use File::Copy qw(move); +use File::Find; +use File::Path qw(mkpath rmtree); + +my $from = $ARGV[0] + or die <<END; +You must specify the name of the extension you are converting from, +as the first argument. +END +my $extension_name = ucfirst($from); + +my $extdir = bz_locations()->{'extensionsdir'}; + +my $from_dir = "$extdir/$from"; +if (!-d $from_dir) { + die "$from_dir does not exist.\n"; +} + +my $to_dir = "$extdir/$extension_name"; +if (-d $to_dir) { + die "$to_dir already exists, not converting.\n"; +} + +if (ON_WINDOWS) { + # There's no easy way to recursively copy a directory on Windows. + print "WARNING: This will modify the contents of $from_dir.\n", + "Press Ctrl-C to stop or any other key to continue...\n"; + getc; + move($from_dir, $to_dir) + || die "rename of $from_dir to $to_dir failed: $!"; +} +else { + print "Copying $from_dir to $to_dir...\n"; + system("cp", "-r", $from_dir, $to_dir); +} + +# Make sure we don't accidentally modify the $from_dir anywhere else +# in this script. +undef $from_dir; + +if (!-d $to_dir) { + die "$to_dir was not created.\n"; +} + +my $version = get_version($to_dir); +move_template_hooks($to_dir); +rename_module_packages($to_dir, $extension_name); +my $install_requirements = get_install_requirements($to_dir); +my ($modules, $subs) = code_files_to_subroutines($to_dir); + +my $config_pm = <<END; +package Bugzilla::Extension::$extension_name; +use strict; +use constant NAME => '$extension_name'; +$install_requirements +__PACKAGE__->NAME; +END + +my $extension_pm = <<END; +package Bugzilla::Extension::$extension_name; +use strict; +use base qw(Bugzilla::Extension); + +$modules + +our \$VERSION = '$version'; + +$subs + +__PACKAGE__->NAME; +END + +open(my $config_fh, '>', "$to_dir/Config.pm") || die "$to_dir/Config.pm: $!"; +print $config_fh $config_pm; +close($config_fh); +open(my $extension_fh, '>', "$to_dir/Extension.pm") + || die "$to_dir/Extension.pm: $!"; +print $extension_fh $extension_pm; +close($extension_fh); + +rmtree("$to_dir/code"); +unlink("$to_dir/info.pl"); + +############### +# Subroutines # +############### + +sub rename_module_packages { + my ($dir, $name) = @_; + my $lib_dir = "$dir/lib"; + + # We don't want things like Bugzilla::Extension::Testopia::Testopia. + if (-d "$lib_dir/$name") { + print "Moving contents of $lib_dir/$name into $lib_dir...\n"; + foreach my $file (glob("$lib_dir/$name/*")) { + my $dirname = dirname($file); + my $basename = basename($file); + rename($file, "$dirname/../$basename") || warn "$file: $!\n"; + } + } + + my @modules; + find({ wanted => sub { $_ =~ /\.pm$/i and push(@modules, $_) }, + no_chdir => 1 }, $lib_dir); + my %module_rename; + foreach my $file (@modules) { + open(my $fh, '<', $file) || die "$file: $!"; + my $content = do { local $/ = undef; <$fh> }; + close($fh); + if ($content =~ /^package (\S+);/m) { + my $package = $1; + my $new_name = $file; + $new_name =~ s/^$lib_dir\///; + $new_name =~ s/\.pm$//; + $new_name = join('::', File::Spec->splitdir($new_name)); + $new_name = "Bugzilla::Extension::${name}::$new_name"; + print "Renaming $package to $new_name...\n"; + $content =~ s/^package \Q$package\E;/package \Q$new_name\E;/; + open(my $write_fh, '>', $file) || die "$file: $!"; + print $write_fh $content; + close($write_fh); + $module_rename{$package} = $new_name; + } + } + + print "Renaming module names inside of library and code files...\n"; + my @code_files = glob("$dir/code/*.pl"); + rename_modules_internally(\%module_rename, [@modules, @code_files]); +} + +sub rename_modules_internally { + my ($rename, $files) = @_; + + # We can't use \b because :: matches \b. + my $break = qr/^|[^\w:]|$/; + foreach my $file (@$files) { + open(my $fh, '<', $file) || die "$file: $!"; + my $content = do { local $/ = undef; <$fh> }; + close($fh); + foreach my $old_name (keys %$rename) { + my $new_name = $rename->{$old_name}; + $content =~ s/($break)\Q$old_name\E($break)/$1$new_name$2/gms; + } + open(my $write_fh, '>', $file) || die "$file: $!"; + print $write_fh $content; + close($write_fh); + } +} + +sub get_version { + my ($dir) = @_; + print "Getting version info from info.pl...\n"; + my $info; + { + local @INC = ("$dir/lib", @INC); + $info = do "$dir/info.pl"; die $@ if $@; + } + return $info->{version}; +} + +sub get_install_requirements { + my ($dir) = @_; + my $file = "$dir/code/install-requirements.pl"; + return '' if !-f $file; + + print "Moving install-requirements.pl code into Config.pm...\n"; + my ($modules, $code) = process_code_file($file); + $modules = join('', @$modules); + $code = join('', @$code); + if ($modules) { + return "$modules\n\n$code"; + } + return $code; +} + +sub process_code_file { + my ($file) = @_; + open(my $fh, '<', $file) || die "$file: $!"; + my $stuff_started; + my (@modules, @code); + foreach my $line (<$fh>) { + $stuff_started = 1 if $line !~ /^#/; + next if !$stuff_started; + next if $line =~ /^use (warnings|strict|lib|Bugzilla)[^\w:]/; + if ($line =~ /^(?:use|require)\b/) { + push(@modules, $line); + } + else { + push(@code, $line); + } + } + close $fh; + return (\@modules, \@code); +} + +sub code_files_to_subroutines { + my ($dir) = @_; + + my @dir_files = glob("$dir/code/*.pl"); + my (@all_modules, @subroutines); + foreach my $file (@dir_files) { + next if $file =~ /install-requirements/; + print "Moving $file code into Extension.pm...\n"; + my ($modules, $code) = process_code_file($file); + my @code_lines = map { " $_" } @$code; + my $code_string = join('', @code_lines); + $code_string =~ s/Bugzilla->hook_args/\$args/g; + $code_string =~ s/my\s+\$args\s+=\s+\$args;//gs; + chomp($code_string); + push(@all_modules, @$modules); + my $name = basename($file); + $name =~ s/-/_/; + $name =~ s/\.pl$//; + + my $subroutine = <<END; +sub $name { + my (\$self, \$args) = \@_; +$code_string +} +END + push(@subroutines, $subroutine); + } + + my %seen_modules = map { trim($_) => 1 } @all_modules; + my $module_string = join("\n", sort keys %seen_modules); + my $subroutine_string = join("\n", @subroutines); + return ($module_string, $subroutine_string); +} + +sub move_template_hooks { + my ($dir) = @_; + foreach my $lang (glob("$dir/template/*")) { + next if !_file_matters($lang); + my $hook_container = "$lang/default/hook"; + mkpath($hook_container) || warn "$hook_container: $!"; + # Hooks can be in all sorts of weird places, including + # template/default/hook. + foreach my $file (glob("$lang/*")) { + next if !_file_matters($file, 1); + my $dirname = basename($file); + print "Moving $file to $hook_container/$dirname...\n"; + rename($file, "$hook_container/$dirname") || die "move failed: $!"; + } + } +} + +sub _file_matters { + my ($path, $tmpl) = @_; + my @ignore = qw(default custom CVS); + my $file = basename($path); + return 0 if grep(lc($_) eq lc($file), @ignore); + # Hidden files + return 0 if $file =~ /^\./; + if ($tmpl) { + return 1 if $file =~ /\.tmpl$/; + } + return 0 if !-d $path; + return 1; +} + +__END__ + +=head1 NAME + +extension-convert.pl - Convert extensions from the pre-3.6 format to the +3.6 format. + +=head1 SYNOPSIS + + contrib/extension-convert.pl name + + Converts an extension in the F<extensions/> directory into the new + extension layout for Bugzilla 3.6. diff --git a/docs/CVS/Entries b/docs/CVS/Entries index a9ae71265..02a18050c 100644 --- a/docs/CVS/Entries +++ b/docs/CVS/Entries @@ -1,4 +1,4 @@ -/makedocs.pl/1.21/Thu Jul 16 01:16:11 2009//TBUGZILLA-3_5_2 -/style.css/1.1/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_2 +/makedocs.pl/1.21/Thu Jul 16 01:16:11 2009//TBUGZILLA-3_5_3 +/style.css/1.1/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_3 D/en//// D/lib//// diff --git a/docs/CVS/Tag b/docs/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/CVS/Tag +++ b/docs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/bugzilla.ent b/docs/bugzilla.ent index 379703a54..bdd751e88 100644 --- a/docs/bugzilla.ent +++ b/docs/bugzilla.ent @@ -14,7 +14,7 @@ <!ENTITY min-email-mime-modifier-ver "1.442"> <!ENTITY min-uri-ver "any"> <!ENTITY min-gd-ver "1.20"> -<!ENTITY min-chart-lines-ver "1.0"> +<!ENTITY min-chart-lines-ver "2.1"> <!ENTITY min-template-plugin-gd-image-ver "any"> <!ENTITY min-gd-text-ver "any"> <!ENTITY min-gd-graph-ver "any"> diff --git a/docs/en/CVS/Entries b/docs/en/CVS/Entries index c3d08654c..65d321085 100644 --- a/docs/en/CVS/Entries +++ b/docs/en/CVS/Entries @@ -1,5 +1,5 @@ -/.cvsignore/1.4/Fri Apr 4 11:29:21 2008//TBUGZILLA-3_5_2 -/README.docs/1.12/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_2 -/rel_notes.txt/1.48/Fri Apr 4 06:48:16 2008//TBUGZILLA-3_5_2 +/.cvsignore/1.4/Fri Apr 4 11:29:21 2008//TBUGZILLA-3_5_3 +/README.docs/1.12/Fri Apr 4 06:48:15 2008//TBUGZILLA-3_5_3 +/rel_notes.txt/1.48/Fri Apr 4 06:48:16 2008//TBUGZILLA-3_5_3 D/images//// D/xml//// diff --git a/docs/en/CVS/Tag b/docs/en/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/en/CVS/Tag +++ b/docs/en/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/en/html/Bugzilla-Guide.html b/docs/en/html/Bugzilla-Guide.html index 37c7471b9..f5c6cbb62 100644 --- a/docs/en/html/Bugzilla-Guide.html +++ b/docs/en/html/Bugzilla-Guide.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TITLE ><META @@ -44,7 +44,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</A ></H1 @@ -53,7 +53,7 @@ CLASS="corpauthor" >The Bugzilla Team</H3 ><P CLASS="pubdate" ->2009-11-18<BR></P +>2010-01-31<BR></P ><DIV ><DIV CLASS="abstract" @@ -364,18 +364,18 @@ HREF="#customization" ><DL ><DT >6.1. <A -HREF="#cust-skins" ->Custom Skins</A +HREF="#extensions" +>Bugzilla Extensions</A ></DT ><DT >6.2. <A -HREF="#cust-templates" ->Template Customization</A +HREF="#cust-skins" +>Custom Skins</A ></DT ><DT >6.3. <A -HREF="#cust-hooks" ->The Bugzilla Extension Mechanism</A +HREF="#cust-templates" +>Template Customization</A ></DT ><DT >6.4. <A @@ -616,7 +616,7 @@ NAME="copyright" >1.1. Copyright Information</A ></H2 ><P ->This document is copyright (c) 2000-2009 by the various +>This document is copyright (c) 2000-2010 by the various Bugzilla contributors who wrote it.</P ><A NAME="AEN26" @@ -685,7 +685,7 @@ NAME="newversions" >1.3. New Versions</A ></H2 ><P -> This is the 3.5.2 version of The Bugzilla Guide. It is so named +> This is the 3.5.3 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. @@ -1978,7 +1978,7 @@ HREF="#install-modules-gd" HREF="#install-modules-chart-lines" >Chart::Lines</A > - (1.0) for bug charting + (2.1) for bug charting </P ></LI ><LI @@ -2212,7 +2212,7 @@ CLASS="section" CLASS="section" ><A NAME="install-modules-chart-lines" ->2.1.5.4. Chart::Lines (1.0)</A +>2.1.5.4. Chart::Lines (2.1)</A ></H4 ><P >The Chart::Lines module is only required if you want graphical @@ -6127,7 +6127,7 @@ NAME="upgrade-modified" degree and methods of local customization can be found in <A HREF="#template-method" ->Section 6.2.2</A +>Section 6.3.2</A >. </P ><P @@ -14693,8 +14693,32 @@ CLASS="section" ><H2 CLASS="section" ><A +NAME="extensions" +>6.1. Bugzilla Extensions</A +></H2 +><P +> One of the best ways to customize Bugzilla is by writing a Bugzilla + Extension. Bugzilla Extensions let you modify both the code and + UI of Bugzilla in a way that can be distributed to other Bugzilla + users and ported forward to future versions of Bugzilla with minimal + effort. + </P +><P +> See the <A +HREF="api/Bugzilla/Extension.html" +TARGET="_top" +>Bugzilla Extension + documentation</A +> for information on how to write an Extension. + </P +></DIV +><DIV +CLASS="section" +><HR><H2 +CLASS="section" +><A NAME="cust-skins" ->6.1. Custom Skins</A +>6.2. Custom Skins</A ></H2 ><P > Bugzilla allows you to have multiple skins. These are custom CSS and possibly @@ -14745,7 +14769,7 @@ CLASS="section" CLASS="section" ><A NAME="cust-templates" ->6.2. Template Customization</A +>6.3. Template Customization</A ></H2 ><P > Administrators can configure the look and feel of Bugzilla without @@ -14758,7 +14782,7 @@ NAME="cust-templates" determined by the user's browser. More information is available in <A HREF="#template-http-accept" ->Section 6.2.6</A +>Section 6.3.6</A >. </P ><DIV @@ -14767,7 +14791,7 @@ CLASS="section" CLASS="section" ><A NAME="template-directory" ->6.2.1. Template Directory Structure</A +>6.3.1. Template Directory Structure</A ></H3 ><P > The template directory structure starts with top level directory @@ -14839,7 +14863,7 @@ CLASS="section" CLASS="section" ><A NAME="template-method" ->6.2.2. Choosing a Customization Method</A +>6.3.2. Choosing a Customization Method</A ></H3 ><P > If you want to edit Bugzilla's templates, the first decision @@ -15039,7 +15063,7 @@ CLASS="section" CLASS="section" ><A NAME="template-edit" ->6.2.3. How To Edit Templates</A +>6.3.3. How To Edit Templates</A ></H3 ><DIV CLASS="note" @@ -15127,7 +15151,7 @@ CLASS="section" CLASS="section" ><A NAME="template-formats" ->6.2.4. Template Formats and Types</A +>6.3.4. Template Formats and Types</A ></H3 ><P > Some CGI's have the ability to use more than one template. For example, @@ -15235,7 +15259,7 @@ CLASS="section" CLASS="section" ><A NAME="template-specific" ->6.2.5. Particular Templates</A +>6.3.5. Particular Templates</A ></H3 ><P > There are a few templates you may be particularly interested in @@ -15503,7 +15527,7 @@ CLASS="section" CLASS="section" ><A NAME="template-http-accept" ->6.2.6. Configuring Bugzilla to Detect the User's Language</A +>6.3.6. Configuring Bugzilla to Detect the User's Language</A ></H3 ><P >Bugzilla honours the user's Accept: HTTP header. You can install @@ -15523,397 +15547,6 @@ CLASS="section" ><HR><H2 CLASS="section" ><A -NAME="cust-hooks" ->6.3. The Bugzilla Extension Mechanism</A -></H2 -><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 -> Note that the below paths are inconsistent and confusing. They will - likely be changed in Bugzilla 4.0. - </P -></TD -></TR -></TABLE -></DIV -><P -> Extensions are a way for extensions to Bugzilla to insert code - into the standard Bugzilla templates and source files - without modifying these files themselves. The extension mechanism - defines a consistent API for extending the standard templates and source files - in a way that cleanly separates standard code from extension code. - Hooks reduce merge conflicts and make it easier to write extensions that work - across multiple versions of Bugzilla, making upgrading a Bugzilla installation - with installed extensions easier. Furthermore, they make it easy to install - and remove extensions as each extension is nothing more than a - simple directory structure. - </P -><P -> There are two main types of hooks: code hooks and template hooks. Code - hooks allow extensions to invoke code at specific points in various - source files, while template hooks allow extensions to add elements to - the Bugzilla user interface. - </P -><P -> A hook is just a named place in a standard source or template file - where extension source code or template files for that hook get processed. - Each extension has a corresponding directory in the Bugzilla directory - tree (<TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/extension_name</TT ->). Hooking - an extension source file or template to a hook is as simple as putting - the extension file into extension's template or code directory. - When Bugzilla processes the source file or template and reaches the hook, - it will process all extension files in the hook's directory. - The hooks themselves can be added into any source file or standard template - upon request by extension authors. - </P -><P -> To use hooks to extend Bugzilla, first make sure there is - a hook at the appropriate place within the source file or template you - want to extend. The exact appearance of a hook depends on if the hook - is a code hook or a template hook. - </P -><P -> Code hooks appear in Bugzilla source files as a single method call - in the format <TT -CLASS="literal" ->Bugzilla::Hook->process("<CODE -CLASS="varname" ->name</CODE ->");</TT ->. - For instance, <TT -CLASS="filename" ->enter_bug.cgi</TT -> may invoke the hook - "<CODE -CLASS="varname" ->enter_bug-entrydefaultvars</CODE ->". Thus, a source file at - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/EXTENSION_NAME/code/enter_bug-entrydefaultvars.pl</TT -> - will be automatically invoked when the code hook is reached. - </P -><P -> - Template hooks appear in the standard Bugzilla templates as a - single directive in the format - <TT -CLASS="literal" ->[% Hook.process("<CODE -CLASS="varname" ->name</CODE ->") %]</TT ->, - where <CODE -CLASS="varname" ->name</CODE -> is the unique name of the hook. - </P -><P -> If you aren't sure what you want to extend or just want to browse the - available hooks, either use your favorite multi-file search - tool (e.g. <B -CLASS="command" ->grep</B ->) to search the standard templates - for occurrences of <CODE -CLASS="methodname" ->Hook.process</CODE -> or the source - files for occurrences of <CODE -CLASS="methodname" ->Bugzilla::Hook::process</CODE ->. - </P -><P -> If there is no hook at the appropriate place within the Bugzilla - source file or template you want to extend, - <A -HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=User%20Interface" -TARGET="_top" ->file - a bug requesting one</A ->, specifying: - </P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD ->the source or template file for which you are - requesting a hook;</TD -></TR -><TR -><TD -> where in the file you would like the hook to be placed - (line number/position for latest version of the file in CVS - or description of location); - </TD -></TR -><TR -><TD ->the purpose of the hook;</TD -></TR -><TR -><TD ->a link to information about your extension, if any.</TD -></TR -></TBODY -></TABLE -><P -></P -><P -> The Bugzilla reviewers will promptly review each hook request, - name the hook, add it to the template or source file, and check - the new version of the template into CVS. - </P -><P -> You may optionally attach a patch to the bug which implements the hook - and check it in yourself after receiving approval from a Bugzilla - reviewer. The developers may suggest changes to the location of the - hook based on their analysis of your needs or so the hook can satisfy - the needs of multiple extensions, but the process of getting hooks - approved and checked in is not as stringent as the process for general - changes to Bugzilla, and any extension, whether released or still in - development, can have hooks added to meet their needs. - </P -><P -> After making sure the hook you need exists (or getting it added if not), - add your extension to the directory within the Bugzilla - extensions tree corresponding to the hook. - </P -><P -> That's it! Now, when the source file or template containing the hook - is processed, your extension file will be processed at the point - where the hook appears. - </P -><P -> For example, let's say you have an extension named Projman that adds - project management capabilities to Bugzilla. Projman has an - administration interface <TT -CLASS="filename" ->edit-projects.cgi</TT ->, - and you want to add a link to it into the navigation bar at the bottom - of every Bugzilla page for those users who are authorized - to administer projects. - </P -><P -> The navigation bar is generated by the template file - <TT -CLASS="filename" ->useful-links.html.tmpl</TT ->, which is located in - the <TT -CLASS="filename" ->global/</TT -> subdirectory on the standard Bugzilla - template path - <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/default/</TT ->. - Looking in <TT -CLASS="filename" ->useful-links.html.tmpl</TT ->, you find - the following hook at the end of the list of standard Bugzilla - administration links: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->... - [% ', <a href="editkeywords.cgi">keywords</a>' - IF user.in_group('editkeywords') %] - [% Hook.process("edit") %] -...</PRE -></FONT -></TD -></TR -></TABLE -><P -> The corresponding extension file for this hook is - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/projman/template/en/global/useful-links-edit.html.tmpl</TT ->. - You then create that template file and add the following constant: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->...[% ', <a href="edit-projects.cgi">projects</a>' IF user.in_group('projman_admins') %]</PRE -></FONT -></TD -></TR -></TABLE -><P -> Voila! The link now appears after the other administration links in the - navigation bar for users in the <TT -CLASS="literal" ->projman_admins</TT -> group. - </P -><P -> Now, let us say your extension adds a custom "project_manager" field - to enter_bug.cgi. You want to modify the CGI script to set the default - project manager to be productname@company.com. Looking at - <TT -CLASS="filename" ->enter_bug.cgi</TT ->, you see the enter_bug-entrydefaultvars - hook near the bottom of the file before the default form values are set. - The corresponding extension source file for this hook is located at - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/projman/code/enter_bug-entrydefaultvars.pl</TT ->. - You then create that file and add the following: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$default{'project_manager'} = $product.'@company.com';</PRE -></FONT -></TD -></TR -></TABLE -><P -> This code will be invoked whenever enter_bug.cgi is executed. - Assuming that the rest of the customization was completed (e.g. the - custom field was added to the enter_bug template and the required hooks - were used in process_bug.cgi), the new field will now have this - default value. - </P -><P -> Notes: - </P -><P -></P -><UL -><LI -><P -> If your extension includes entirely new templates in addition to - extensions of standard templates, it should store those new - templates in its - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/template/en/</TT -> - directory. Extension template directories, like the - <TT -CLASS="filename" ->default/</TT -> and <TT -CLASS="filename" ->custom/</TT -> - directories, are part of the template search path, so putting templates - there enables them to be found by the template processor. - </P -><P -> The template processor looks for templates first in the - <TT -CLASS="filename" ->custom/</TT -> directory (i.e. templates added by the - specific installation), then in the <TT -CLASS="filename" ->extensions/</TT -> - directory (i.e. templates added by extensions), and finally in the - <TT -CLASS="filename" ->default/</TT -> directory (i.e. the standard Bugzilla - templates). Thus, installation-specific templates override both - default and extension templates. - </P -></LI -><LI -><P -> If you are looking to customize Bugzilla, you can also take advantage - of template hooks. To do so, create a directory in - <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/custom/hook/</TT -> - that corresponds to the hook you wish to use, then place your - customization templates into those directories. For example, - if you wanted to use the hook "end" in - <TT -CLASS="filename" ->global/useful-links.html.tmpl</TT ->, you would - create the directory <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/custom/hook/ - global/useful-links.html.tmpl/end/</TT -> and add your customization - template to this directory. - </P -><P -> Obviously this method of customizing Bugzilla only lets you add code - to the standard source files and templates; you cannot change the - existing code. Nevertheless, for those customizations that only add - code, this method can reduce conflicts when merging changes, - making upgrading your customized Bugzilla installation easier. - </P -></LI -></UL -></DIV -><DIV -CLASS="section" -><HR><H2 -CLASS="section" -><A NAME="cust-change-permissions" >6.4. Customizing Who Can Change What</A ></H2 @@ -16142,8 +15775,8 @@ NAME="integration" ></H2 ><P > Many utilities and applications can integrate with Bugzilla, - either on the client- or server-side. None of them is maintained - by the Bugzilla community, nor are they being tested during our + either on the client- or server-side. None of them are maintained + by the Bugzilla community, nor are they tested during our QA tests, so use them at your own risk. They are listed at <A HREF="https://wiki.mozilla.org/Bugzilla:Addons" @@ -16506,7 +16139,7 @@ NAME="trbl-relogin-everyone-share" >Example A-1. Examples of urlbase/cookiepath pairs for sharing login cookies</B ></P ><A -NAME="AEN3208" +NAME="AEN3144" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -16547,7 +16180,7 @@ NAME="trbl-relogin-everyone-restrict" >Example A-2. Examples of urlbase/cookiepath pairs to restrict the login cookie</B ></P ><A -NAME="AEN3215" +NAME="AEN3151" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -17310,7 +16943,7 @@ NAME="gfdl" ><P >Version 1.1, March 2000</P ><A -NAME="AEN3373" +NAME="AEN3309" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -17773,7 +17406,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="AEN3463" +NAME="AEN3399" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -17810,7 +17443,7 @@ CLASS="glossdiv" ><H1 CLASS="glossdiv" ><A -NAME="AEN3468" +NAME="AEN3404" >0-9, high ascii</A ></H1 ><DL @@ -18716,7 +18349,7 @@ NAME="gloss-zarro" Terry had the following to say: </P ><A -NAME="AEN3712" +NAME="AEN3648" ></A ><TABLE BORDER="0" diff --git a/docs/en/html/about.html b/docs/en/html/about.html index 22d1c7b9c..5673495b3 100644 --- a/docs/en/html/about.html +++ b/docs/en/html/about.html @@ -7,12 +7,12 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK REL="PREVIOUS" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -38,7 +38,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -157,7 +157,7 @@ ACCESSKEY="N" WIDTH="33%" ALIGN="left" VALIGN="top" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TD ><TD diff --git a/docs/en/html/administration.html b/docs/en/html/administration.html index fca9434b4..f332c1515 100644 --- a/docs/en/html/administration.html +++ b/docs/en/html/administration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/api/Bugzilla.html b/docs/en/html/api/Bugzilla.html index df54b3003..bda624d8e 100644 --- a/docs/en/html/api/Bugzilla.html +++ b/docs/en/html/api/Bugzilla.html @@ -202,6 +202,13 @@ name="METHODS" <p>The current database handle. See <a href="./DBI.html" class="podlinkpod" >DBI</a>.</p> +<dt><a name="dbh_main" +><code class="code">dbh_main</code></a></dt> + +<dd> +<p>The main database handle. See <a href="./DBI.html" class="podlinkpod" +>DBI</a>.</p> + <dt><a name="languages" ><code class="code">languages</code></a></dt> @@ -226,13 +233,6 @@ name="METHODS" <dd> <p>The current Parameters of Bugzilla, as a hashref. If <code class="code">data/params</code> does not exist, then we return an empty hashref. If <code class="code">data/params</code> is unreadable or is not valid perl, we <code class="code">die</code>.</p> -<dt><a name="hook_args" -><code class="code">hook_args</code></a></dt> - -<dd> -<p>If you are running inside a code hook (see <a href="./Bugzilla/Hook.html" class="podlinkpod" ->Bugzilla::Hook</a>) this is how you get the arguments passed to the hook.</p> - <dt><a name="local_timezone" ><code class="code">local_timezone</code></a></dt> diff --git a/docs/en/html/api/Bugzilla/Auth.html b/docs/en/html/api/Bugzilla/Auth.html index f3bfac40c..fdc5fcb9b 100644 --- a/docs/en/html/api/Bugzilla/Auth.html +++ b/docs/en/html/api/Bugzilla/Auth.html @@ -21,6 +21,7 @@ Bugzilla::Auth</title> <li class='indexItem indexItem2'><a href='#AUTH_LOGINFAILED'>AUTH_LOGINFAILED</a> <li class='indexItem indexItem2'><a href='#AUTH_NO_SUCH_USER'>AUTH_NO_SUCH_USER</a> <li class='indexItem indexItem2'><a href='#AUTH_DISABLED'>AUTH_DISABLED</a> + <li class='indexItem indexItem2'><a href='#AUTH_LOCKOUT'>AUTH_LOCKOUT</a> </ul> <li class='indexItem indexItem1'><a href='#LOGIN_TYPES'>LOGIN TYPES</a> <ul class='indexList indexList2'> @@ -109,6 +110,11 @@ name="AUTH_LOGINFAILED" <p>An incorrect username or password was given.</p> +<p>The hashref may also contain a <code class="code">failure_count</code> element, +which specifies how many times the account has failed to log in within the lockout period (see <a href="#AUTH_LOCKOUT" class="podlinkpod" +>"AUTH_LOCKOUT"</a>). +This is used to warn the user when he is getting close to being locked out.</p> + <h2><a class='u' href='#___top' title='click to go to top of document' name="AUTH_NO_SUCH_USER" ><code class="code">AUTH_NO_SUCH_USER</code></a></h2> @@ -133,6 +139,17 @@ name="AUTH_DISABLED" but their account has been disabled. Usually this is throw only by <code class="code">Bugzilla::Auth::login</code>.</p> +<h2><a class='u' href='#___top' title='click to go to top of document' +name="AUTH_LOCKOUT" +><code class="code">AUTH_LOCKOUT</code></a></h2> + +<p>The user's account is locked out after having failed to log in too many times within a certain period of time (as specified by <a href="../Bugzilla/Constants.html#LOGIN_LOCKOUT_INTERVAL" class="podlinkpod" +>"LOGIN_LOCKOUT_INTERVAL" in Bugzilla::Constants</a>).</p> + +<p>The hashref will also contain a <code class="code">user</code> element, +representing the <a href="../Bugzilla/User.html" class="podlinkpod" +>Bugzilla::User</a> whose account is locked out.</p> + <h1><a class='u' href='#___top' title='click to go to top of document' name="LOGIN_TYPES" >LOGIN TYPES</a></h1> diff --git a/docs/en/html/api/Bugzilla/Extension.html b/docs/en/html/api/Bugzilla/Extension.html new file mode 100644 index 000000000..3d73d8251 --- /dev/null +++ b/docs/en/html/api/Bugzilla/Extension.html @@ -0,0 +1,535 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +Bugzilla::Extension</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>Bugzilla::Extension</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> + <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> + <li class='indexItem indexItem1'><a href='#WRITING_EXTENSIONS'>WRITING EXTENSIONS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Using_extensions%2Fcreate.pl'>Using extensions/create.pl</a> + <li class='indexItem indexItem2'><a href='#Example_Extension'>Example Extension</a> + <li class='indexItem indexItem2'><a href='#Where_Extension_Code_Goes'>Where Extension Code Goes</a> + <li class='indexItem indexItem2'><a href='#The_Extension_NAME.'>The Extension NAME.</a> + <li class='indexItem indexItem2'><a href='#Hooks'>Hooks</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#Adding_New_Hooks_To_Bugzilla'>Adding New Hooks To Bugzilla</a> + </ul> + <li class='indexItem indexItem2'><a href='#If_Your_Extension_Requires_Certain_Perl_Modules'>If Your Extension Requires Certain Perl Modules</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#If_Your_Extension_Needs_Certain_Modules_In_Order_To_Compile'>If Your Extension Needs Certain Modules In Order To Compile</a> + </ul> + <li class='indexItem indexItem2'><a href='#Libraries'>Libraries</a> + <li class='indexItem indexItem2'><a href='#Templates'>Templates</a> + <li class='indexItem indexItem2'><a href='#Template_Hooks'>Template Hooks</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#Which_Templates_Can_Be_Hooked'>Which Templates Can Be Hooked</a> + <li class='indexItem indexItem3'><a href='#Where_Template_Hooks_Go'>Where Template Hooks Go</a> + <li class='indexItem indexItem3'><a href='#Adding_New_Template_Hooks_to_Bugzilla'>Adding New Template Hooks to Bugzilla</a> + </ul> + <li class='indexItem indexItem2'><a href='#Overriding_Existing_Templates'>Overriding Existing Templates</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#A_Warning_About_Extensions_That_You_Want_To_Distribute'>A Warning About Extensions That You Want To Distribute</a> + </ul> + <li class='indexItem indexItem2'><a href='#Disabling_Your_Extension'>Disabling Your Extension</a> + </ul> + <li class='indexItem indexItem1'><a href='#DISTRIBUTING_EXTENSIONS'>DISTRIBUTING EXTENSIONS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Distributing_on_CPAN'>Distributing on CPAN</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#Templates_in_extensions_distributed_on_CPAN'>Templates in extensions distributed on CPAN</a> + <li class='indexItem indexItem3'><a href='#Using_an_extension_distributed_on_CPAN'>Using an extension distributed on CPAN</a> + </ul> + </ul> + <li class='indexItem indexItem1'><a href='#GETTING_HELP_WITH_WRITING_EXTENSIONS'>GETTING HELP WITH WRITING EXTENSIONS</a> + <li class='indexItem indexItem1'><a href='#ADDITIONAL_CONSTANTS'>ADDITIONAL CONSTANTS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#%24VERSION'>$VERSION</a> + </ul> + <li class='indexItem indexItem1'><a href='#SUBCLASS_METHODS'>SUBCLASS METHODS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Class_Methods'>Class Methods</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#new'>new</a> + </ul> + <li class='indexItem indexItem2'><a href='#Instance_Methods'>Instance Methods</a> + <ul class='indexList indexList3'> + <li class='indexItem indexItem3'><a href='#enabled'>enabled</a> + <li class='indexItem indexItem3'><a href='#package_dir'>package_dir</a> + <li class='indexItem indexItem3'><a href='#template_dir'>template_dir</a> + <li class='indexItem indexItem3'><a href='#lib_dir'>lib_dir</a> + </ul> + </ul> + <li class='indexItem indexItem1'><a href='#BUGZILLA%3A%3AEXTENSION_CLASS_METHODS'>BUGZILLA::EXTENSION CLASS METHODS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#load'>load</a> + <li class='indexItem indexItem2'><a href='#load_all'>load_all</a> + </ul> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>Bugzilla::Extension - Base class for Bugzilla Extensions.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<p>The following would be in <em class="code">extensions/Foo/Extension.pm</em> or <em class="code">extensions/Foo.pm</em>:</p> + +<pre class="code"> package Bugzilla::Extension::Foo + use strict; + use base qw(Bugzilla::Extension); + + our $VERSION = '0.02'; + use constant NAME => 'Foo'; + + sub some_hook_name { ... } + + __PACKAGE__->NAME;</pre> + +<p>Custom templates would go into <em class="code">extensions/Foo/template/en/default/</em>. <a href="#Template_Hooks" class="podlinkpod" +>Template hooks</a> would go into <em class="code">extensions/Foo/template/en/default/hook/</em>.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DESCRIPTION" +>DESCRIPTION</a></h1> + +<p>This is the base class for all Bugzilla extensions.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="WRITING_EXTENSIONS" +>WRITING EXTENSIONS</a></h1> + +<p>The <a href="#SYNOPSIS" class="podlinkpod" +>"SYNOPSIS"</a> above gives a pretty good overview of what's basically required to write an extension. This section gives more information on exactly how extensions work and how you write them.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Using_extensions/create.pl" +>Using <em class="code">extensions/create.pl</em></a></h2> + +<p>There is a script, <a href="../extensions/create.html" class="podlinkpod" +>extensions::create</a>, that will set up the framework of a new extension for you. To use it, pick a name for your extension and, in the base bugzilla directory, do:</p> + +<p><code class="code">extensions/create.pl NAME</code></p> + +<p>But replace <code class="code">NAME</code> with the name you picked for your extension. That will create a new directory in the <em class="code">extensions/</em> directory with the name of your extension. The directory will contain a full framework for a new extension, with helpful comments in each file describing things about them.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Example_Extension" +>Example Extension</a></h2> + +<p>There is a sample extension in <em class="code">extensions/Example/</em> that demonstrates most of the things described in this document, so if you find the documentation confusing, try just reading the code instead.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Where_Extension_Code_Goes" +>Where Extension Code Goes</a></h2> + +<p>Extension code lives under the <em class="code">extensions/</em> directory in Bugzilla.</p> + +<p>There are two ways to write extensions:</p> + +<ol> +<li>If your extension will have only code and no templates or other files, you can create a simple <code class="code">.pm</code> file in the <em class="code">extensions/</em> directory. +<p>For example, if you wanted to create an extension called "Foo" using this method, you would put your code into a file called <em class="code">extensions/Foo.pm</em>.</p> +</li> + +<li>If you plan for your extension to have templates and other files, you can create a whole directory for your extension, and the main extension code would go into a file called <em class="code">Extension.pm</em> in that directory. +<p>For example, if you wanted to create an extension called "Foo" using this method, you would put your code into a file called <em class="code">extensions/Foo/Extension.pm</em>.</p> +</li> +</ol> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="The_Extension_NAME." +>The Extension <code class="code">NAME</code>.</a></h2> + +<p>The "name" of an extension shows up in several places:</p> + +<ol> +<li>The name of the package: +<p><code class="code">package Bugzilla::Extension::Foo;</code></p> +</li> + +<li>In a <code class="code">NAME</code> constant that <b>must</b> be defined for every extension: +<p><code class="code">use constant NAME => 'Foo';</code></p> +</li> + +<li>At the very end of the file: +<p><code class="code">__PACKAGE__->NAME;</code></p> + +<p>You'll notice that though most Perl packages end with <code class="code">1;</code>, Bugzilla Extensions must <b>always</b> end with <code class="code">__PACKAGE__->NAME;</code>.</p> +</li> +</ol> + +<p>The name must be identical in all of those locations.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Hooks" +>Hooks</a></h2> + +<p>In <a href="../Bugzilla/Hook.html" class="podlinkpod" +>Bugzilla::Hook</a>, there is a <a href="../Bugzilla/Hook.html#HOOKS" class="podlinkpod" +>list of hooks</a>. These are the various areas of Bugzilla that an extension can "hook" into, which allow your extension to perform code during that point in Bugzilla's execution.</p> + +<p>If your extension wants to implement a hook, all you have to do is write a subroutine in your hook package that has the same name as the hook. The subroutine will be called as a method on your extension, and it will get the arguments specified in the hook's documentation as named parameters in a hashref.</p> + +<p>For example, here's an implementation of a hook named <code class="code">foo_start</code> that gets an argument named <code class="code">bar</code>:</p> + +<pre class="code"> sub foo_start { + my ($self, $args) = @_; + my $bar = $args->{bar}; + print "I got $bar!\n"; + }</pre> + +<p>And that would go into your extension's code file--the file that was described in the <a href="#Where_Extension_Code_Goes" class="podlinkpod" +>"Where Extension Code Goes"</a> section above.</p> + +<p>During your subroutine, you may want to know what values were passed as CGI arguments to the current script, or what arguments were passed to the current WebService method. You can get that data via <Bugzilla/input_params>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Adding_New_Hooks_To_Bugzilla" +>Adding New Hooks To Bugzilla</a></h3> + +<p>If you need a new hook for your extension and you want that hook to be added to Bugzilla itself, see our development process at <a href="http://wiki.mozilla.org/Bugzilla:Developers" class="podlinkurl" +>http://wiki.mozilla.org/Bugzilla:Developers</a>.</p> + +<p>In order for a new hook to be accepted into Bugzilla, it has to work, it must have documentation in <a href="../Bugzilla/Hook.html" class="podlinkpod" +>Bugzilla::Hook</a>, and it must have example code in <em class="code">extensions/Example/Extension.pm</em>.</p> + +<p>One question that is often asked about new hooks is, "Is this the most flexible way to implement this hook?" That is, the more power extension authors get from a hook, the more likely it is to be accepted into Bugzilla. Hooks that only hook a very specific part of Bugzilla will not be accepted if their functionality can be accomplished equally well with a more generic hook.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="If_Your_Extension_Requires_Certain_Perl_Modules" +>If Your Extension Requires Certain Perl Modules</a></h2> + +<p>If there are certain Perl modules that your extension requires in order to run, there is a way you can tell Bugzilla this, and then <a href="../checksetup.html" class="podlinkpod" +>checksetup</a> will make sure that those modules are installed, when you run <a href="../checksetup.html" class="podlinkpod" +>checksetup</a>.</p> + +<p>To do this, you need to specify a constant called <code class="code">REQUIRED_MODULES</code> in your extension. This constant has the same format as <a href="../Bugzilla/Install/Requirements.html#REQUIRED_MODULES" class="podlinkpod" +>"REQUIRED_MODULES" in Bugzilla::Install::Requirements</a>.</p> + +<p>If there are optional modules that add additional functionality to your application, you can specify them in a constant called OPTIONAL_MODULES, which has the same format as <a href="../Bugzilla/Install/Requirements.html#OPTIONAL_MODULES" class="podlinkpod" +>"OPTIONAL_MODULES" in Bugzilla::Install::Requirements</a>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="If_Your_Extension_Needs_Certain_Modules_In_Order_To_Compile" +>If Your Extension Needs Certain Modules In Order To Compile</a></h3> + +<p>If your extension needs a particular Perl module in order to <i>compile</i>, then you have a "chicken and egg" problem--in order to read <code class="code">REQUIRED_MODULES</code>, we have to compile your extension. In order to compile your extension, we need to already have the modules in <code class="code">REQUIRED_MODULES</code>!</p> + +<p>To get around this problem, Bugzilla allows you to have an additional file, besides <em class="code">Extension.pm</em>, called <em class="code">Config.pm</em>, that contains just <code class="code">REQUIRED_MODULES</code>. If you have a <em class="code">Config.pm</em>, it must also contain the <code class="code">NAME</code> constant, instead of your main <em class="code">Extension.pm</em> containing the <code class="code">NAME</code> constant.</p> + +<p>The contents of the file would look something like this for an extension named <code class="code">Foo</code>:</p> + +<pre class="code"> package Bugzilla::Extension::Foo; + use strict; + use constant NAME => 'Foo'; + use constant REQUIRED_MODULES => [ + { + package => 'Some-Package', + module => 'Some::Module', + version => 0, + } + ]; + __PACKAGE__->NAME;</pre> + +<p>Note that it is <i>not</i> a subclass of <code class="code">Bugzilla::Extension</code>, because at the time that module requirements are being checked in <a href="../checksetup.html" class="podlinkpod" +>checksetup</a>, <code class="code">Bugzilla::Extension</code> cannot be loaded. Also, just like <em class="code">Extension.pm</em>, it ends with <code class="code">__PACKAGE__->NAME;</code>. Note also that it has the exact same <code class="code">package</code> name as <em class="code">Extension.pm</em>.</p> + +<p>This file may not use any Perl modules other than <a href="../Bugzilla/Constants.html" class="podlinkpod" +>Bugzilla::Constants</a>, <a href="../Bugzilla/Install/Util.html" class="podlinkpod" +>Bugzilla::Install::Util</a>, <a href="../Bugzilla/Install/Requirements.html" class="podlinkpod" +>Bugzilla::Install::Requirements</a>, and modules that ship with Perl itself.</p> + +<p>If you want to define both <code class="code">REQUIRED_MODULES</code> and <code class="code">OPTIONAL_MODULES</code>, they must both be in <em class="code">Config.pm</em> or both in <em class="code">Extension.pm</em>.</p> + +<p>Every time your extension is loaded by Bugzilla, <em class="code">Config.pm</em> will be read and then <em class="code">Extension.pm</em> will be read, so your methods in <em class="code">Extension.pm</em> will have access to everything in <em class="code">Config.pm</em>. Don't define anything with an identical name in both files, or Perl may throw a warning that you are redefining things.</p> + +<p>This method of setting <code class="code">REQUIRED_MODULES</code> is of course not available if your extension is a single file named <code class="code">Foo.pm</code>.</p> + +<p>If any of this is confusing, just look at the code of the Example extension. It uses this method to specify requirements.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Libraries" +>Libraries</a></h2> + +<p>Extensions often want to have their own Perl modules. Your extension can load any Perl module in its <em class="code">lib/</em> directory. (So, if your extension is <em class="code">extensions/Foo/</em>, then your Perl modules go into <em class="code">extensions/Foo/lib/</em>.)</p> + +<p>However, the <code class="code">package</code> name of your libraries will not work quite like normal Perl modules do. <em class="code">extensions/Foo/lib/Bar.pm</em> is loaded as <code class="code">Bugzilla::Extension::Foo::Bar</code>. Or, to say it another way, <code class="code">use Bugzilla::Extension::Foo::Bar;</code> loads <em class="code">extensions/Foo/lib/Bar.pm</em>, which should have <code class="code">package Bugzilla::Extension::Foo::Bar;</code> as its package name.</p> + +<p>This allows any place in Bugzilla to load your modules, which is important for some hooks. It even allows other extensions to load your modules. It even allows you to install your modules into the global Perl install as <em class="code">Bugzilla/Extension/Foo/Bar.pm</em>, if you'd like, which helps allow CPAN distribution of Bugzilla extensions.</p> + +<p><b>Note:</b> If you want to <code class="code">use</code> or <code class="code">require</code> a module that's in <em class="code">extensions/Foo/lib/</em> at the top level of your <em class="code">Extension.pm</em>, you must have a <em class="code">Config.pm</em> (see above) with at least the <code class="code">NAME</code> constant defined in it.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Templates" +>Templates</a></h2> + +<p>Extensions store templates in a <code class="code">template</code> subdirectory of the extension. (Obviously, this isn't available for extensions that aren't a directory.)</p> + +<p>The format of this directory is exactly like the normal layout of Bugzilla's <code class="code">template</code> directory--in fact, your extension's <code class="code">template</code> directory becomes part of Bugzilla's template "search path" as described in <a href="../Bugzilla/Install/Util.html#template_include_path" class="podlinkpod" +>"template_include_path" in Bugzilla::Install::Util</a>.</p> + +<p>You can actually include templates in your extension without having any <code class="code">.pm</code> files in your extension at all, if you want. (That is, it's entirely valid to have an extension that's just template files and no code files.)</p> + +<p>Bugzilla's templates are written in a language called Template Toolkit. You can find out more about Template Toolkit at <a href="http://template-toolkit.org" class="podlinkurl" +>http://template-toolkit.org</a>.</p> + +<p>There are two ways to extend or modify Bugzilla's templates: you can use template hooks (described below) or you can override existing templates entirely (described further down).</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Template_Hooks" +>Template Hooks</a></h2> + +<p>Templates can be extended using a system of "hooks" that add new UI elements to a particular area of Bugzilla without modifying the code of the existing templates. This is the recommended way for extensions to modify the user interface of Bugzilla.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Which_Templates_Can_Be_Hooked" +>Which Templates Can Be Hooked</a></h3> + +<p>There is no list of template hooks like there is for standard code hooks. To find what places in the user interface can be hooked, search for the string <code class="code">Hook.process</code> in Bugzilla's templates (in the <em class="code">template/en/default/</em> directory). That will also give you the name of the hooks--the first argument to <code class="code">Hook.process</code> is the name of the hook. (A later section in this document explains how to use that name).</p> + +<p>For example, if you see <code class="code">Hook.process("additional_header")</code>, that means the name of the hook is <code class="code">additional_header</code>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Where_Template_Hooks_Go" +>Where Template Hooks Go</a></h3> + +<p>To extend templates in your extension using template hooks, you put files into the <em class="code">template/en/default/hook</em> directory of your extension. So, if you had an extension called "Foo", your template extensions would go into <em class="code">extensions/Foo/template/en/default/hook/</em>.</p> + +<p>(Note that the base <em class="code">template/en/default/hook</em> directory in Bugzilla itself also works, although you would never use that for an extension that you intended to distribute.)</p> + +<p>The files that go into this directory have a certain name, based on the name of the template that is being hooked, and the name of the hook. For example, let's imagine that you have an extension named "Foo", and you want to use the <code class="code">additional_header</code> hook in <em class="code">template/en/default/global/header.html.tmpl</em>. Your code would go into <em class="code">extensions/Foo/template/en/default/hook/global/header-additional_header.html.tmpl</em>. Any code you put into that file will happen at the point that <code class="code">Hook.process("additional_header")</code> is called in <em class="code">template/en/default/global/header.html.tmpl</em>.</p> + +<p>As you can see, template extension file names follow a pattern. The pattern looks like:</p> + +<pre class="code"> <templates>/hook/<template path>/<template name>-<hook name>.<template type>.tmpl</pre> + +<dl> +<dt><a name="<templates>" +><templates></a></dt> + +<dd> +<p>This is the full path to the template directory, like <em class="code">extensions/Foo/template/en/default</em>. This works much like normal templates do, in the sense that template extensions in <code class="code">custom</code> override template extensions in <code class="code">default</code> for your extension, templates for different languages can be supplied, etc. Template extensions are searched for and run in the order described in <a href="../Bugzilla/Install/Util.html#template_include_path" class="podlinkpod" +>"template_include_path" in Bugzilla::Install::Util</a>.</p> + +<p>The difference between normal templates and template hooks is that hooks will be run for <i>every</i> extension, whereas for normal templates, Bugzilla just takes the first one it finds and stops searching. So while a template extension in the <code class="code">custom</code> directory may override the same-named template extension in the <code class="code">default</code> directory <i>within your Bugzilla extension</i>, it will not override the same-named template extension in the <code class="code">default</code> directory of another Bugzilla extension.</p> + +<dt><a name="<template_path>" +><template path></a></dt> + +<dd> +<p>This is the part of the path (excluding the filename) that comes after <em class="code">template/en/default/</em> in a template's path. So, for <em class="code">template/en/default/global/header.html.tmpl</em>, this would simply be <code class="code">global</code>.</p> + +<dt><a name="<template_name>" +><template name></a></dt> + +<dd> +<p>This is the file name of the template, before the <code class="code">.html.tmpl</code> part. So, for <em class="code">template/en/default/global/header.html.tmpl</em>, this would be <code class="code">header</code>.</p> + +<dt><a name="<hook_name>" +><hook name></a></dt> + +<dd> +<p>This is the name of the hook--what you saw in <code class="code">Hook.process</code> inside of the template you want to hook. In our example, this is <code class="code">additioanl_header</code>.</p> + +<dt><a name="<template_type>" +><template type></a></dt> + +<dd> +<p>This is what comes after the template name but before <code class="code">.tmpl</code> in the template's path. In most cases this is <code class="code">html</code>, but sometimes it's <code class="code">none</code>, <code class="code">txt</code>, <code class="code">js</code>, or various other formats, indicating what type of output the template has.</p> +</dd> +</dl> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Adding_New_Template_Hooks_to_Bugzilla" +>Adding New Template Hooks to Bugzilla</a></h3> + +<p>Adding new template hooks is just like adding code hooks (see <a href="#Adding_New_Hooks_To_Bugzilla" class="podlinkpod" +>"Adding New Hooks To Bugzilla"</a>) except that you don't have to document them, and including example code is optional.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Overriding_Existing_Templates" +>Overriding Existing Templates</a></h2> + +<p>Sometimes you don't want to extend a template, you just want to replace it entirely with your extension's template, or you want to add an entirely new template to Bugzilla for your extension to use.</p> + +<p>To replace the <em class="code">template/en/default/global/banner.html.tmpl</em> template in an extension named "Foo", create a file called <em class="code">extensions/Foo/template/en/default/global/banner.html.tmpl</em>. Note that this is very similar to the path for a template hook, except that it excludes <em class="code">hook/</em>, and the template is named <i>exactly</i> like the standard Bugzilla template.</p> + +<p>You can also use this method to add entirely new templates. If you have an extension named "Foo", and you add a file named <em class="code">extensions/Foo/template/en/default/foo/bar.html.tmpl</em>, you can load that in your code using <code class="code">$template->process('foo/bar.html.tmpl')</code>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="A_Warning_About_Extensions_That_You_Want_To_Distribute" +>A Warning About Extensions That You Want To Distribute</a></h3> + +<p>You should never override an existing Bugzilla template in an extension that you plan to distribute to others, because only one extension can override any given template, and which extension will "win" that war if there are multiple extensions installed is totally undefined.</p> + +<p>However, adding new templates in an extension that you want to distribute is fine, though you have to be careful about how you name them, because any templates with an identical path and name (say, both called <em class="code">global/stuff.html.tmpl</em>) will conflict. The usual way to work around this is to put all your custom templates into a template path that's named after your extension (since the name of your extension has to be unique anyway). So if your extension was named Foo, your custom templates would go into <em class="code">extensions/Foo/template/en/default/foo/</em>. The only time that doesn't work is with the <code class="code">page_before_template</code> extension, in which case your templates should probably be in a directory like <em class="code">extensions/Foo/template/en/default/page/foo/</em> so as not to conflict with other pages that other extensions might add.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Disabling_Your_Extension" +>Disabling Your Extension</a></h2> + +<p>If you want your extension to be totally ignored by Bugzilla (it will not be compiled or seen to exist at all), then create a file called <code class="code">disabled</code> in your extension's directory. (If your extension is just a file, like <em class="code">extensions/Foo.pm</em>, you cannot use this method to disable your extension, and will just have to remove it from the directory if you want to totally disable it.) Note that if you are running under mod_perl, you may have to restart your web server for this to take effect.</p> + +<p>If you want your extension to be compiled and have <a href="../checksetup.html" class="podlinkpod" +>checksetup</a> check for its module pre-requisites, but you don't want the module to be used by Bugzilla, then you should make your extension's <a href="#enabled" class="podlinkpod" +>"enabled"</a> method return <code class="code">0</code> or some false value.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DISTRIBUTING_EXTENSIONS" +>DISTRIBUTING EXTENSIONS</a></h1> + +<p>If you've made an extension and you want to publish it, the first thing you'll want to do is package up your extension's code and then put a link to it in the appropriate section of <a href="http://wiki.mozilla.org/Bugzilla:Addons" class="podlinkurl" +>http://wiki.mozilla.org/Bugzilla:Addons</a>.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Distributing_on_CPAN" +>Distributing on CPAN</a></h2> + +<p>If you want a centralized distribution point that makes it easy for Bugzilla users to install your extension, it is possible to distribute your Bugzilla Extension through CPAN.</p> + +<p>The details of making a standard CPAN module are too much to go into here, but a lot of it is covered in <a href="../perlmodlib.html" class="podlinkpod" +>perlmodlib</a> and on <a href="http://www.cpan.org/" class="podlinkurl" +>http://www.cpan.org/</a> among other places.</p> + +<p>When you distribute your extension via CPAN, your <em class="code">Extension.pm</em> should simply install itself as <em class="code">Bugzilla/Extension/Foo.pm</em>, where <code class="code">Foo</code> is the name of your module. You do not need a separate <em class="code">Config.pm</em> file, because CPAN itself will handle installing the prerequisites of your module, so Bugzilla doesn't have to worry about it.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Templates_in_extensions_distributed_on_CPAN" +>Templates in extensions distributed on CPAN</a></h3> + +<p>If your extension is <em class="code">/usr/lib/perl5/Bugzilla/Extension/Foo.pm</em>, then Bugzilla will look for templates in the directory <em class="code">/usr/lib/perl5/Bugzilla/Extension/Foo/template/</em>.</p> + +<p>You can change this behavior by overriding the <a href="#template_dir" class="podlinkpod" +>"template_dir"</a> or <a href="#package_dir" class="podlinkpod" +>"package_dir"</a> methods described lower down in this document.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="Using_an_extension_distributed_on_CPAN" +>Using an extension distributed on CPAN</a></h3> + +<p>There is a file named <em class="code">data/extensions/additional</em> in Bugzilla. This is a plain-text file. Each line is the name of a module, like <code class="code">Bugzilla::Extension::Foo</code>. In addition to the extensions in the <em class="code">extensions/</em> directory, each module listed in this file will be loaded as a Bugzilla Extension whenever Bugzilla loads or uses extensions.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="GETTING_HELP_WITH_WRITING_EXTENSIONS" +>GETTING HELP WITH WRITING EXTENSIONS</a></h1> + +<p>If you are an extension author and you'd like some assistance from other extension authors or the Bugzilla development team, you can use the normal support channels described at <a href="http://www.bugzilla.org/support/" class="podlinkurl" +>http://www.bugzilla.org/support/</a>.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="ADDITIONAL_CONSTANTS" +>ADDITIONAL CONSTANTS</a></h1> + +<p>In addition to <code class="code">NAME</code>, there are some other constants you might want to define:</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="$VERSION" +><code class="code">$VERSION</code></a></h2> + +<p>This should be a string that describes what version of your extension this is. Something like <code class="code">1.0</code>, <code class="code">1.3.4</code> or a similar string.</p> + +<p>There are no particular restrictions on the format of version numbers, but you should probably keep them to just numbers and periods, in the interest of other software that parses version numbers.</p> + +<p>By default, this will be <code class="code">undef</code> if you don't define it.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SUBCLASS_METHODS" +>SUBCLASS METHODS</a></h1> + +<p>In addition to hooks, there are a few methods that your extension can define to modify its behavior, if you want:</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Class_Methods" +>Class Methods</a></h2> + +<p>These methods are called on your extension's class. (Like <code class="code">Bugzilla::Extension::Foo->some_method</code>).</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="new" +><code class="code">new</code></a></h3> + +<p>Once every request, this method is called on your extension in order to create an "instance" of it. (Extensions are treated like objects--they are instantiated once per request in Bugzilla, and then methods are called on the object.)</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Instance_Methods" +>Instance Methods</a></h2> + +<p>These are called on an instantiated Extension object.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="enabled" +><code class="code">enabled</code></a></h3> + +<p>This should return <code class="code">1</code> if this extension's hook code should be run by Bugzilla, and <code class="code">0</code> otherwise.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="package_dir" +><code class="code">package_dir</code></a></h3> + +<p>This returns the directory that your extension is located in.</p> + +<p>If this is an extension that was installed via CPAN, the directory will be the path to <em class="code">Bugzilla/Extension/Foo/</em>, if <code class="code">Foo.pm</code> is the name of your extension.</p> + +<p>If you want to override this method, and you have a <em class="code">Config.pm</em>, you must override this method in <em class="code">Config.pm</em>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="template_dir" +><code class="code">template_dir</code></a></h3> + +<p>The directory that your package's templates are in.</p> + +<p>This defaults to the <code class="code">template</code> subdirectory of the <a href="#package_dir" class="podlinkpod" +>"package_dir"</a>.</p> + +<p>If you want to override this method, and you have a <em class="code">Config.pm</em>, you must override this method in <em class="code">Config.pm</em>.</p> + +<h3><a class='u' href='#___top' title='click to go to top of document' +name="lib_dir" +><code class="code">lib_dir</code></a></h3> + +<p>The directory where your extension's libraries are.</p> + +<p>This defaults to the <code class="code">lib</code> subdirectory of the <a href="#package_dir" class="podlinkpod" +>"package_dir"</a>.</p> + +<p>If you want to override this method, and you have a <em class="code">Config.pm</em>, you must override this method in <em class="code">Config.pm</em>.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="BUGZILLA::EXTENSION_CLASS_METHODS" +>BUGZILLA::EXTENSION CLASS METHODS</a></h1> + +<p>These are used internally by Bugzilla to load and set up extensions. If you are an extension author, you don't need to care about these.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="load" +><code class="code">load</code></a></h2> + +<p>Takes two arguments, the path to <em class="code">Extension.pm</em> and the path to <em class="code">Config.pm</em>, for an extension. Loads the extension's code packages into memory using <code class="code">require</code>, does some sanity-checking on the extension, and returns the package name of the loaded extension.</p> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="load_all" +><code class="code">load_all</code></a></h2> + +<p>Calls <a href="#load" class="podlinkpod" +>"load"</a> for every enabled extension installed into Bugzilla, and returns an arrayref of all the package names that were loaded.</p> +<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/Bugzilla/Group.html b/docs/en/html/api/Bugzilla/Group.html index 2e917328e..43070ea37 100644 --- a/docs/en/html/api/Bugzilla/Group.html +++ b/docs/en/html/api/Bugzilla/Group.html @@ -87,6 +87,58 @@ name="METHODS" >METHODS</a></h1> <dl> +<dt><a name="check_remove" +><code class="code">check_remove</code></a></dt> + +<dd> +<dl> +<dt><a name="Description" +><b>Description</b></a></dt> + +<dd> +<p>Determines whether it's OK to remove this group from the database, and throws an error if it's not OK.</p> + +<dt><a name="Params" +><b>Params</b></a></dt> + +<dd> +<dl> +<dt><a name="test_only" +><code class="code">test_only</code></a></dt> + +<dd> +<p><code class="code">boolean</code> If you want to only check if the group can be deleted <i>at all</i>, under any circumstances, specify <code class="code">test_only</code> to just do the most basic tests (the other parameters will be ignored in this situation, as those tests won't be run).</p> + +<dt><a name="remove_from_users" +><code class="code">remove_from_users</code></a></dt> + +<dd> +<p><code class="code">boolean</code> True if it would be OK to remove all users who are in this group from this group.</p> + +<dt><a name="remove_from_bugs" +><code class="code">remove_from_bugs</code></a></dt> + +<dd> +<p><code class="code">boolean</code> True if it would be OK to remove all bugs that are in this group from this group.</p> + +<dt><a name="remove_from_flags" +><code class="code">remove_from_flags</code></a></dt> + +<dd> +<p><code class="code">boolean</code> True if it would be OK to stop all flagtypes that reference this group from referencing this group (e.g., as their grantgroup or requestgroup).</p> + +<dt><a name="remove_from_products" +><code class="code">remove_from_products</code></a></dt> + +<dd> +<p><code class="code">boolean</code> True if it would be OK to remove this group from all group controls on products.</p> +</dd> +</dl> + +<dt><a name="Returns_(nothing)" +><b>Returns</b> (nothing)</a></dt> +</dl> + <dt><a name="members_non_inherited" ><code class="code">members_non_inherited</code></a></dt> diff --git a/docs/en/html/api/Bugzilla/Hook.html b/docs/en/html/api/Bugzilla/Hook.html index 087cc8eaf..3cc44c563 100644 --- a/docs/en/html/api/Bugzilla/Hook.html +++ b/docs/en/html/api/Bugzilla/Hook.html @@ -17,43 +17,45 @@ Bugzilla::Hook</title> <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> <ul class='indexList indexList2'> <li class='indexItem indexItem2'><a href='#How_Hooks_Work'>How Hooks Work</a> - <li class='indexItem indexItem2'><a href='#Arguments_Passed_to_Hooks'>Arguments Passed to Hooks</a> - <li class='indexItem indexItem2'><a href='#Versioning_Extensions'>Versioning Extensions</a> </ul> <li class='indexItem indexItem1'><a href='#SUBROUTINES'>SUBROUTINES</a> <li class='indexItem indexItem1'><a href='#HOOKS'>HOOKS</a> <ul class='indexList indexList2'> - <li class='indexItem indexItem2'><a href='#attachment-process_data'>attachment-process_data</a> - <li class='indexItem indexItem2'><a href='#auth-login_methods'>auth-login_methods</a> - <li class='indexItem indexItem2'><a href='#auth-verify_methods'>auth-verify_methods</a> - <li class='indexItem indexItem2'><a href='#bug-columns'>bug-columns</a> - <li class='indexItem indexItem2'><a href='#bug-end_of_create'>bug-end_of_create</a> - <li class='indexItem indexItem2'><a href='#bug-end_of_create_validators'>bug-end_of_create_validators</a> - <li class='indexItem indexItem2'><a href='#bug-end_of_update'>bug-end_of_update</a> - <li class='indexItem indexItem2'><a href='#bug-fields'>bug-fields</a> - <li class='indexItem indexItem2'><a href='#bug-format_comment'>bug-format_comment</a> - <li class='indexItem indexItem2'><a href='#buglist-columns'>buglist-columns</a> - <li class='indexItem indexItem2'><a href='#colchange-columns'>colchange-columns</a> - <li class='indexItem indexItem2'><a href='#config-add_panels'>config-add_panels</a> - <li class='indexItem indexItem2'><a href='#config-modify_panels'>config-modify_panels</a> - <li class='indexItem indexItem2'><a href='#enter_bug-entrydefaultvars'>enter_bug-entrydefaultvars</a> - <li class='indexItem indexItem2'><a href='#flag-end_of_update'>flag-end_of_update</a> - <li class='indexItem indexItem2'><a href='#install-before_final_checks'>install-before_final_checks</a> - <li class='indexItem indexItem2'><a href='#install-requirements'>install-requirements</a> - <li class='indexItem indexItem2'><a href='#install-update_db'>install-update_db</a> - <li class='indexItem indexItem2'><a href='#db_schema-abstract_schema'>db_schema-abstract_schema</a> - <li class='indexItem indexItem2'><a href='#mailer-before_send'>mailer-before_send</a> - <li class='indexItem indexItem2'><a href='#object-before_create'>object-before_create</a> - <li class='indexItem indexItem2'><a href='#object-before_set'>object-before_set</a> - <li class='indexItem indexItem2'><a href='#object-end_of_create_validators'>object-end_of_create_validators</a> - <li class='indexItem indexItem2'><a href='#page-before_template'>page-before_template</a> - <li class='indexItem indexItem2'><a href='#product-confirm_delete'>product-confirm_delete</a> - <li class='indexItem indexItem2'><a href='#sanitycheck-check'>sanitycheck-check</a> - <li class='indexItem indexItem2'><a href='#sanitycheck-repair'>sanitycheck-repair</a> - <li class='indexItem indexItem2'><a href='#template-before_process'>template-before_process</a> + <li class='indexItem indexItem2'><a href='#attachment_process_data'>attachment_process_data</a> + <li class='indexItem indexItem2'><a href='#auth_login_methods'>auth_login_methods</a> + <li class='indexItem indexItem2'><a href='#auth_verify_methods'>auth_verify_methods</a> + <li class='indexItem indexItem2'><a href='#bug_columns'>bug_columns</a> + <li class='indexItem indexItem2'><a href='#bug_end_of_create'>bug_end_of_create</a> + <li class='indexItem indexItem2'><a href='#bug_end_of_create_validators'>bug_end_of_create_validators</a> + <li class='indexItem indexItem2'><a href='#bug_end_of_update'>bug_end_of_update</a> + <li class='indexItem indexItem2'><a href='#bug_fields'>bug_fields</a> + <li class='indexItem indexItem2'><a href='#bug_format_comment'>bug_format_comment</a> + <li class='indexItem indexItem2'><a href='#buglist_columns'>buglist_columns</a> + <li class='indexItem indexItem2'><a href='#colchange_columns'>colchange_columns</a> + <li class='indexItem indexItem2'><a href='#config_add_panels'>config_add_panels</a> + <li class='indexItem indexItem2'><a href='#config_modify_panels'>config_modify_panels</a> + <li class='indexItem indexItem2'><a href='#enter_bug_entrydefaultvars'>enter_bug_entrydefaultvars</a> + <li class='indexItem indexItem2'><a href='#flag_end_of_update'>flag_end_of_update</a> + <li class='indexItem indexItem2'><a href='#install_before_final_checks'>install_before_final_checks</a> + <li class='indexItem indexItem2'><a href='#install_update_db'>install_update_db</a> + <li class='indexItem indexItem2'><a href='#db_schema_abstract_schema'>db_schema_abstract_schema</a> + <li class='indexItem indexItem2'><a href='#mailer_before_send'>mailer_before_send</a> + <li class='indexItem indexItem2'><a href='#object_before_create'>object_before_create</a> + <li class='indexItem indexItem2'><a href='#object_before_set'>object_before_set</a> + <li class='indexItem indexItem2'><a href='#object_end_of_create_validators'>object_end_of_create_validators</a> + <li class='indexItem indexItem2'><a href='#object_end_of_set_all'>object_end_of_set_all</a> + <li class='indexItem indexItem2'><a href='#object_end_of_update'>object_end_of_update</a> + <li class='indexItem indexItem2'><a href='#page_before_template'>page_before_template</a> + <li class='indexItem indexItem2'><a href='#product_confirm_delete'>product_confirm_delete</a> + <li class='indexItem indexItem2'><a href='#sanitycheck_check'>sanitycheck_check</a> + <li class='indexItem indexItem2'><a href='#product_end_of_create'>product_end_of_create</a> + <li class='indexItem indexItem2'><a href='#sanitycheck_repair'>sanitycheck_repair</a> + <li class='indexItem indexItem2'><a href='#template_before_create'>template_before_create</a> + <li class='indexItem indexItem2'><a href='#template_before_process'>template_before_process</a> <li class='indexItem indexItem2'><a href='#webservice'>webservice</a> - <li class='indexItem indexItem2'><a href='#webservice-error_codes'>webservice-error_codes</a> + <li class='indexItem indexItem2'><a href='#webservice_error_codes'>webservice_error_codes</a> </ul> + <li class='indexItem indexItem1'><a href='#SEE_ALSO'>SEE ALSO</a> </ul> </div> @@ -78,35 +80,18 @@ name="DESCRIPTION" <p>Bugzilla allows extension modules to drop in and add routines at arbitrary points in Bugzilla code. These points are referred to as hooks. When a piece of standard Bugzilla code wants to allow an extension to perform additional functions, it uses Bugzilla::Hook's <a href="#process" class="podlinkpod" >"process"</a> subroutine to invoke any extension code if installed.</p> -<p>There is a sample extension in <em class="code">extensions/example/</em> that demonstrates most of the things described in this document, as well as many of the hooks available.</p> +<p>The implementation of extensions is described in <a href="../Bugzilla/Extension.html" class="podlinkpod" +>Bugzilla::Extension</a>.</p> <h2><a class='u' href='#___top' title='click to go to top of document' name="How_Hooks_Work" >How Hooks Work</a></h2> -<p>When a hook named <code class="code">HOOK_NAME</code> is run, Bugzilla will attempt to invoke any source files named <em class="code">extensions/*/code/HOOK_NAME.pl</em>.</p> +<p>When a hook named <code class="code">HOOK_NAME</code> is run, Bugzilla looks through all enabled <a href="../Bugzilla/Extension.html" class="podlinkpod" +>extensions</a> for extensions that implement a subroutined named <code class="code">HOOK_NAME</code>.</p> -<p>So, for example, if your extension is called "testopia", and you want to have code run during the <a href="#install-update_db" class="podlinkpod" ->"install-update_db"</a> hook, you would have a file called <em class="code">extensions/testopia/code/install-update_db.pl</em> that contained perl code to run during that hook.</p> - -<h2><a class='u' href='#___top' title='click to go to top of document' -name="Arguments_Passed_to_Hooks" ->Arguments Passed to Hooks</a></h2> - -<p>Some <a href="#HOOKS" class="podlinkpod" ->hooks</a> have params that are passed to them.</p> - -<p>These params are accessible through <a href="../Bugzilla.html#hook_args" class="podlinkpod" ->"hook_args" in Bugzilla</a>. That returns a hashref. Very frequently, if you want your hook to do anything, you have to modify these variables.</p> - -<p>You may also want to use <a href="../Bugzilla.html#input_params" class="podlinkpod" ->"input_params" in Bugzilla</a> to get parameters that were passed to the current CGI script or WebService method.</p> - -<h2><a class='u' href='#___top' title='click to go to top of document' -name="Versioning_Extensions" ->Versioning Extensions</a></h2> - -<p>Every extension must have a file in its root called <em class="code">info.pl</em>. This file must return a hash when called with <code class="code">do</code>. The hash must contain a 'version' key with the current version of the extension. Extension authors can also add any extra infomration to this hash if required, by adding a new key beginning with x_ which will not be used the core Bugzilla code.</p> +<p>See <a href="../Bugzilla/Extension.html" class="podlinkpod" +>Bugzilla::Extension</a> for more details about how an extension can run code during a hook.</p> <h1><a class='u' href='#___top' title='click to go to top of document' name="SUBROUTINES" @@ -151,8 +136,8 @@ name="HOOKS" <p>This describes what hooks exist in Bugzilla currently. They are mostly in alphabetical order, but some related hooks are near each other instead of being alphabetical.</p> <h2><a class='u' href='#___top' title='click to go to top of document' -name="attachment-process_data" ->attachment-process_data</a></h2> +name="attachment_process_data" +>attachment_process_data</a></h2> <p>This happens at the very beginning process of the attachment creation. You can edit the attachment content itself as well as all attributes of the attachment, before they are validated and inserted into the DB.</p> @@ -167,8 +152,8 @@ name="attachment-process_data" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="auth-login_methods" ->auth-login_methods</a></h2> +name="auth_login_methods" +>auth_login_methods</a></h2> <p>This allows you to add new login types to Bugzilla. (See <a href="../Bugzilla/Auth/Login.html" class="podlinkpod" >Bugzilla::Auth::Login</a>.)</p> @@ -193,21 +178,21 @@ name="auth-login_methods" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="auth-verify_methods" ->auth-verify_methods</a></h2> +name="auth_verify_methods" +>auth_verify_methods</a></h2> -<p>This works just like <a href="#auth-login_methods" class="podlinkpod" ->"auth-login_methods"</a> except it's for login verification methods (See <a href="../Bugzilla/Auth/Verify.html" class="podlinkpod" ->Bugzilla::Auth::Verify</a>.) It also takes a <code class="code">modules</code> parameter, just like <a href="#auth-login_methods" class="podlinkpod" ->"auth-login_methods"</a>.</p> +<p>This works just like <a href="#auth_login_methods" class="podlinkpod" +>"auth_login_methods"</a> except it's for login verification methods (See <a href="../Bugzilla/Auth/Verify.html" class="podlinkpod" +>Bugzilla::Auth::Verify</a>.) It also takes a <code class="code">modules</code> parameter, just like <a href="#auth_login_methods" class="podlinkpod" +>"auth_login_methods"</a>.</p> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-columns" ->bug-columns</a></h2> +name="bug_columns" +>bug_columns</a></h2> <p>This allows you to add new fields that will show up in every <a href="../Bugzilla/Bug.html" class="podlinkpod" ->Bugzilla::Bug</a> object. Note that you will also need to use the <a href="#bug-fields" class="podlinkpod" ->"bug-fields"</a> hook in conjunction with this hook to make this work.</p> +>Bugzilla::Bug</a> object. Note that you will also need to use the <a href="#bug_fields" class="podlinkpod" +>"bug_fields"</a> hook in conjunction with this hook to make this work.</p> <p>Params:</p> @@ -217,8 +202,8 @@ name="bug-columns" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-end_of_create" ->bug-end_of_create</a></h2> +name="bug_end_of_create" +>bug_end_of_create</a></h2> <p>This happens at the end of <a href="../Bugzilla/Bug.html#create" class="podlinkpod" >"create" in Bugzilla::Bug</a>, after all other changes are made to the database. This occurs inside a database transaction.</p> @@ -233,8 +218,8 @@ name="bug-end_of_create" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-end_of_create_validators" ->bug-end_of_create_validators</a></h2> +name="bug_end_of_create_validators" +>bug_end_of_create_validators</a></h2> <p>This happens during <a href="../Bugzilla/Bug.html#create" class="podlinkpod" >"create" in Bugzilla::Bug</a>, after all parameters have been validated, but before anything has been inserted into the database.</p> @@ -251,8 +236,8 @@ name="bug-end_of_create_validators" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-end_of_update" ->bug-end_of_update</a></h2> +name="bug_end_of_update" +>bug_end_of_update</a></h2> <p>This happens at the end of <a href="../Bugzilla/Bug.html#update" class="podlinkpod" >"update" in Bugzilla::Bug</a>, after all other changes are made to the database. This generally occurs inside a database transaction.</p> @@ -269,14 +254,14 @@ name="bug-end_of_update" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-fields" ->bug-fields</a></h2> +name="bug_fields" +>bug_fields</a></h2> <p>Allows the addition of database fields from the bugs table to the standard list of allowable fields in a <a href="../Bugzilla/Bug.html" class="podlinkpod" >Bugzilla::Bug</a> object, so that you can call the field as a method.</p> -<p>Note: You should add here the names of any fields you added in <a href="#bug-columns" class="podlinkpod" ->"bug-columns"</a>.</p> +<p>Note: You should add here the names of any fields you added in <a href="#bug_columns" class="podlinkpod" +>"bug_columns"</a>.</p> <p>Params:</p> @@ -286,8 +271,8 @@ name="bug-fields" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="bug-format_comment" ->bug-format_comment</a></h2> +name="bug_format_comment" +>bug_format_comment</a></h2> <p>Allows you to do custom parsing on comments before they are displayed. You do this by returning two regular expressions: one that matches the section you want to replace, and then another that says what you want to replace that match with.</p> @@ -337,8 +322,8 @@ name="bug-format_comment" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="buglist-columns" ->buglist-columns</a></h2> +name="buglist_columns" +>buglist_columns</a></h2> <p>This happens in buglist.cgi after the standard columns have been defined and right before the display column determination. It gives you the opportunity to add additional display columns.</p> @@ -363,8 +348,8 @@ name="buglist-columns" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="colchange-columns" ->colchange-columns</a></h2> +name="colchange_columns" +>colchange_columns</a></h2> <p>This happens in <em class="code">colchange.cgi</em> right after the list of possible display columns have been defined and gives you the opportunity to add additional display columns to the list of selectable columns.</p> @@ -372,13 +357,13 @@ name="colchange-columns" <dl> <dt><a -><code class="code">columns</code> - An arrayref containing an array of column IDs. Any IDs added by this hook must have been defined in the the buglist-columns hook. See <a href="#buglist-columns" class="podlinkpod" ->"buglist-columns"</a>.</a></dt> +><code class="code">columns</code> - An arrayref containing an array of column IDs. Any IDs added by this hook must have been defined in the the <a href="#buglist_columns" class="podlinkpod" +>"buglist_columns"</a> hook.</a></dt> </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="config-add_panels" ->config-add_panels</a></h2> +name="config_add_panels" +>config_add_panels</a></h2> <p>If you want to add new panels to the Parameters administrative interface, this is where you do it.</p> @@ -396,8 +381,8 @@ name="config-add_panels" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="config-modify_panels" ->config-modify_panels</a></h2> +name="config_modify_panels" +>config_modify_panels</a></h2> <p>This is how you modify already-existing panels in the Parameters administrative interface. For example, if you wanted to add a new Auth method (modifying Bugzilla::Config::Auth) this is how you'd do it.</p> @@ -410,14 +395,17 @@ name="config-modify_panels" <dd> <p>A hashref, where the keys are lower-case panel "names" (like <code class="code">auth</code>, <code class="code">admin</code>, etc.) and the values are hashrefs. The hashref contains a single key, <code class="code">params</code>. <code class="code">params</code> is an arrayref--the return value from <code class="code">get_param_list</code> for that module. You can modify <code class="code">params</code> and your changes will be reflected in the interface.</p> -<p>Adding new keys to <code class="code">panels</code> will have no effect. You should use <a href="#config-add_panels" class="podlinkpod" ->"config-add_panels"</a> if you want to add new panels.</p> +<p>Adding new keys to <code class="code">panels</code> will have no effect. You should use <a href="#config_add_panels" class="podlinkpod" +>"config_add_panels"</a> if you want to add new panels.</p> </dd> </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="enter_bug-entrydefaultvars" ->enter_bug-entrydefaultvars</a></h2> +name="enter_bug_entrydefaultvars" +>enter_bug_entrydefaultvars</a></h2> + +<p><b>DEPRECATED</b> - Use <a href="#template_before_process" class="podlinkpod" +>"template_before_process"</a> instead.</p> <p>This happens right before the template is loaded on enter_bug.cgi.</p> @@ -429,8 +417,8 @@ name="enter_bug-entrydefaultvars" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="flag-end_of_update" ->flag-end_of_update</a></h2> +name="flag_end_of_update" +>flag_end_of_update</a></h2> <p>This happens at the end of <a href="../Bugzilla/Flag.html#update_flags" class="podlinkpod" >"update_flags" in Bugzilla::Flag</a>, after all other changes are made to the database and after emails are sent. It gives you a before/after snapshot of flags so you can react to specific flag changes. This generally occurs inside a database transaction.</p> @@ -451,8 +439,8 @@ name="flag-end_of_update" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="install-before_final_checks" ->install-before_final_checks</a></h2> +name="install_before_final_checks" +>install_before_final_checks</a></h2> <p>Allows execution of custom code before the final checks are done in checksetup.pl.</p> @@ -468,34 +456,19 @@ name="install-before_final_checks" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="install-requirements" ->install-requirements</a></h2> - -<p>Because of the way Bugzilla installation works, there can't be a normal hook during the time that <em class="code">checksetup.pl</em> checks what modules are installed. (<code class="code">Bugzilla::Hook</code> needs to have those modules installed--it's a chicken-and-egg problem.)</p> - -<p>So instead of the way hooks normally work, this hook just looks for two subroutines (or constants, since all constants are just subroutines) in your file, called <code class="code">OPTIONAL_MODULES</code> and <code class="code">REQUIRED_MODULES</code>, which should return arrayrefs in the same format as <code class="code">OPTIONAL_MODULES</code> and <code class="code">REQUIRED_MODULES</code> in <a href="../Bugzilla/Install/Requirements.html" class="podlinkpod" ->Bugzilla::Install::Requirements</a>.</p> - -<p>These subroutines will be passed an arrayref that contains the current Bugzilla requirements of the same type, in case you want to modify Bugzilla's requirements somehow. (Probably the most common would be to alter a version number or the "feature" element of <code class="code">OPTIONAL_MODULES</code>.)</p> - -<p><em class="code">checksetup.pl</em> will add these requirements to its own.</p> - -<p>Please remember--if you put something in <code class="code">REQUIRED_MODULES</code>, then <em class="code">checksetup.pl</em> <b>cannot complete</b> unless the user has that module installed! So use <code class="code">OPTIONAL_MODULES</code> whenever you can.</p> - -<h2><a class='u' href='#___top' title='click to go to top of document' -name="install-update_db" ->install-update_db</a></h2> +name="install_update_db" +>install_update_db</a></h2> <p>This happens at the very end of all the tables being updated during an installation or upgrade. If you need to modify your custom schema, do it here. No params are passed.</p> <h2><a class='u' href='#___top' title='click to go to top of document' -name="db_schema-abstract_schema" ->db_schema-abstract_schema</a></h2> +name="db_schema_abstract_schema" +>db_schema_abstract_schema</a></h2> <p>This allows you to add tables to Bugzilla. Note that we recommend that you prefix the names of your tables with some word, so that they don't conflict with any future Bugzilla tables.</p> -<p>If you wish to add new <i>columns</i> to existing Bugzilla tables, do that in <a href="#install-update_db" class="podlinkpod" ->"install-update_db"</a>.</p> +<p>If you wish to add new <i>columns</i> to existing Bugzilla tables, do that in <a href="#install_update_db" class="podlinkpod" +>"install_update_db"</a>.</p> <p>Params:</p> @@ -506,8 +479,8 @@ name="db_schema-abstract_schema" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="mailer-before_send" ->mailer-before_send</a></h2> +name="mailer_before_send" +>mailer_before_send</a></h2> <p>Called right before <a href="../Bugzilla/Mailer.html" class="podlinkpod" >Bugzilla::Mailer</a> sends a message to the MTA.</p> @@ -516,12 +489,15 @@ name="mailer-before_send" <dl> <dt><a name="email_-_The_Email::MIME_object_that's_about_to_be_sent." -><code class="code">email</code> - The <code class="code">Email::MIME</code> object that's about to be sent.</a></dt> +><code class="code">email</code> - The <code class="code">Email::MIME</code> object that's about to be sent. +<dt><a name="mailer_args_-_An_arrayref_that's_passed_as_mailer_args_to_"new"_in_Email::Send." +><code class="code">mailer_args</code> - An arrayref that's passed as <code class="code">mailer_args</code> to <a href="../Email/Send.html#new" class="podlinkpod" +>"new" in Email::Send</a>.</a></dt> </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="object-before_create" ->object-before_create</a></h2> +name="object_before_create" +>object_before_create</a></h2> <p>This happens at the beginning of <a href="../Bugzilla/Object.html#create" class="podlinkpod" >"create" in Bugzilla::Object</a>.</p> @@ -544,8 +520,8 @@ name="object-before_create" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="object-before_set" ->object-before_set</a></h2> +name="object_before_set" +>object_before_set</a></h2> <p>Called during <a href="../Bugzilla/Object.html#set" class="podlinkpod" >"set" in Bugzilla::Object</a>, before any actual work is done. You can use this to perform actions before a value is changed for specific fields on certain types of objects.</p> @@ -574,8 +550,8 @@ name="object-before_set" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="object-end_of_create_validators" ->object-end_of_create_validators</a></h2> +name="object_end_of_create_validators" +>object_end_of_create_validators</a></h2> <p>Called at the end of <a href="../Bugzilla/Object.html#run_create_validators" class="podlinkpod" >"run_create_validators" in Bugzilla::Object</a>. You can use this to run additional validation when creating an object.</p> @@ -600,8 +576,64 @@ name="object-end_of_create_validators" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="page-before_template" ->page-before_template</a></h2> +name="object_end_of_set_all" +>object_end_of_set_all</a></h2> + +<p>This happens at the end of <a href="../Bugzilla/Object.html#set_all" class="podlinkpod" +>"set_all" in Bugzilla::Object</a>. This is a good place to call custom set_ functions on objects, or to make changes to an object before <code class="code">update()</code> is called.</p> + +<p>Params:</p> + +<dl> +<dt><a name="object" +><code class="code">object</code></a></dt> + +<dd> +<p>The <a href="../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a> which is being updated. You will probably want to do something like <code class="code">if ($object->isa('Some::Class'))</code> in your code to limit your changes to only certain subclasses of Bugzilla::Object.</p> + +<dt><a name="params" +><code class="code">params</code></a></dt> + +<dd> +<p>A hashref. The set of named parameters passed to <code class="code">set_all</code>.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="object_end_of_update" +>object_end_of_update</a></h2> + +<p>Called during <a href="../Bugzilla/Object.html#update" class="podlinkpod" +>"update" in Bugzilla::Object</a>, after changes are made to the database, but while still inside a transaction.</p> + +<p>Params:</p> + +<dl> +<dt><a name="object" +><code class="code">object</code></a></dt> + +<dd> +<p>The object that <code class="code">update</code> was called on. You will probably want to do something like <code class="code">if ($object->isa('Some::Class'))</code> in your code to limit your changes to only certain subclasses of Bugzilla::Object.</p> + +<dt><a name="old_object" +><code class="code">old_object</code></a></dt> + +<dd> +<p>The object as it was before it was updated.</p> + +<dt><a name="changes" +><code class="code">changes</code></a></dt> + +<dd> +<p>The fields that have been changed, in the same format that <a href="../Bugzilla/Object.html#update" class="podlinkpod" +>"update" in Bugzilla::Object</a> returns.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="page_before_template" +>page_before_template</a></h2> <p>This is a simple way to add your own pages to Bugzilla. This hooks <code class="code">page.cgi</code>, which loads templates from <em class="code">template/en/default/pages</em>. For example, <code class="code">page.cgi?id=fields.html</code> loads <em class="code">template/en/default/pages/fields.html.tmpl</em>.</p> @@ -627,8 +659,11 @@ name="page-before_template" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="product-confirm_delete" ->product-confirm_delete</a></h2> +name="product_confirm_delete" +>product_confirm_delete</a></h2> + +<p><b>DEPRECATED</b> - Use <a href="#template_before_process" class="podlinkpod" +>"template_before_process"</a> instead.</p> <p>Called before displaying the confirmation message when deleting a product.</p> @@ -640,8 +675,8 @@ name="product-confirm_delete" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="sanitycheck-check" ->sanitycheck-check</a></h2> +name="sanitycheck_check" +>sanitycheck_check</a></h2> <p>This hook allows for extra sanity checks to be added, for use by <em class="code">sanitycheck.cgi</em>.</p> @@ -653,8 +688,22 @@ name="sanitycheck-check" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="sanitycheck-repair" ->sanitycheck-repair</a></h2> +name="product_end_of_create" +>product_end_of_create</a></h2> + +<p>Called right after a new product has been created, allowing additional changes to be made to the new product's attributes. This occurs inside of a database transaction, so if the hook throws an error all previous changes will be rolled back including the creation of the new product.</p> + +<p>Params:</p> + +<dl> +<dt><a name="product_-_The_new_Bugzilla::Product_object_that_was_just_created." +><code class="code">product</code> - The new <a href="../Bugzilla/Product.html" class="podlinkpod" +>Bugzilla::Product</a> object that was just created.</a></dt> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="sanitycheck_repair" +>sanitycheck_repair</a></h2> <p>This hook allows for extra sanity check repairs to be made, for use by <em class="code">sanitycheck.cgi</em>.</p> @@ -666,10 +715,37 @@ name="sanitycheck-repair" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="template-before_process" ->template-before_process</a></h2> +name="template_before_create" +>template_before_create</a></h2> -<p>This hook allows you to define additional variables that will be available to the template being processed. You probably want to restrict your hook to operating only if a certain file is being loaded (which is why you get a <code class="code">file</code> argument below). Otherwise, modifying the <code class="code">vars</code> argument will affect every single template in Bugzilla.</p> +<p>This hook allows you to modify the configuration of <a href="../Bugzilla/Template.html" class="podlinkpod" +>Bugzilla::Template</a> objects before they are created. For example, you could add a new global template variable this way.</p> + +<p>Params:</p> + +<dl> +<dt><a name="config" +><code class="code">config</code></a></dt> + +<dd> +<p>A hashref--the configuration that will be passed to <a href="../Template.html#new" class="podlinkpod" +>"new" in Template</a>. See <a href="http://template-toolkit.org/docs/modules/Template.html#section_CONFIGURATION_SUMMARY" class="podlinkurl" +>http://template-toolkit.org/docs/modules/Template.html#section_CONFIGURATION_SUMMARY</a> for information on how this configuration variable is structured (or just look at the code for <code class="code">create</code> in <a href="../Bugzilla/Template.html" class="podlinkpod" +>Bugzilla::Template</a>.)</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="template_before_process" +>template_before_process</a></h2> + +<p>This hook is called any time Bugzilla processes a template file, including calls to <code class="code">$template->process</code>, <code class="code">PROCESS</code> statements in templates, and <code class="code">INCLUDE</code> statements in templates. It is not called when templates process a <code class="code">BLOCK</code>, only when they process a file.</p> + +<p>This hook allows you to define additional variables that will be available to the template being processed, or to modify the variables that are currently in the template. It works exactly as though you inserted code to modify template variables at the top of a template.</p> + +<p>You probably want to restrict this hook to operating only if a certain file is being processed (which is why you get a <code class="code">file</code> argument below). Otherwise, modifying the <code class="code">vars</code> argument will affect every single template in Bugzilla.</p> + +<p><b>Note:</b> This hook is not called if you are already in this hook. (That is, it won't call itself recursively.) This prevents infinite recursion in situations where this hook needs to process a template (such as if this hook throws an error).</p> <p>Params:</p> @@ -678,20 +754,21 @@ name="template-before_process" ><code class="code">vars</code></a></dt> <dd> -<p>The template vars hashref--these are the values that get passed to the template. Adding new keys to this hashref will cause those new values to also get passed to the template.</p> +<p>This is the entire set of variables that the current template can see. Technically, this is a <a href="../Template/Stash.html" class="podlinkpod" +>Template::Stash</a> object, but you can just use it like a hashref if you want.</p> <dt><a name="file" ><code class="code">file</code></a></dt> <dd> -<p>The name of the template being processed. This is relative to the main template directory for the language (i.e. for <em class="code">template/en/default/bug/show.html.tmpl</em>, this variable will contain <code class="code">bug/show.html.tmpl</code>).</p> +<p>The name of the template file being processed. This is relative to the main template directory for the language (i.e. for <em class="code">template/en/default/bug/show.html.tmpl</em>, this variable will contain <code class="code">bug/show.html.tmpl</code>).</p> -<dt><a name="template" -><code class="code">template</code></a></dt> +<dt><a name="context" +><code class="code">context</code></a></dt> <dd> -<p>The <a href="../Bugzilla/Template.html" class="podlinkpod" ->Bugzilla::Template</a> object that <code class="code">process</code> was called on.</p> +<p>A <a href="../Template/Context.html" class="podlinkpod" +>Template::Context</a> object. Usually you will not have to use this, but if you need information about the template itself (other than just its name), you can get it from here.</p> </dd> </dl> @@ -725,8 +802,8 @@ name="webservice" </dl> <h2><a class='u' href='#___top' title='click to go to top of document' -name="webservice-error_codes" ->webservice-error_codes</a></h2> +name="webservice_error_codes" +>webservice_error_codes</a></h2> <p>If your webservice extension throws custom errors, you can set numeric codes for those errors here.</p> @@ -743,6 +820,13 @@ name="webservice-error_codes" >"WS_ERROR_CODE" in Bugzilla::WebService::Constants</a> for an example.</p> </dd> </dl> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SEE_ALSO" +>SEE ALSO</a></h1> + +<p><a href="../Bugzilla/Extension.html" class="podlinkpod" +>Bugzilla::Extension</a></p> <p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> <!-- end doc --> diff --git a/docs/en/html/api/Bugzilla/Install/Filesystem.html b/docs/en/html/api/Bugzilla/Install/Filesystem.html index 60e07dd82..86e713007 100644 --- a/docs/en/html/api/Bugzilla/Install/Filesystem.html +++ b/docs/en/html/api/Bugzilla/Install/Filesystem.html @@ -70,6 +70,15 @@ Note that permissions are different depending on whether or not <code class="co <p>Params: <code class="code">$output</code> - <code class="code">true</code> if you want this function to print out information about what it's doing.</p> <p>Returns: nothing</p> + +<dt><a name="fix_file_permissions" +><code class="code">fix_file_permissions</code></a></dt> + +<dd> +<p>Given the name of a file, +its permissions will be fixed according to how they are supposed to be set in Bugzilla's current configuration. +If it fails to set the permissions, +a warning will be printed to STDERR.</p> </dd> </dl> <p class="backlinkbottom"><b><a name="___bottom" href="../../index.html" title="All Documents"><<</a></b></p> diff --git a/docs/en/html/api/Bugzilla/Product.html b/docs/en/html/api/Bugzilla/Product.html index 1ea7a8379..92cb76c62 100644 --- a/docs/en/html/api/Bugzilla/Product.html +++ b/docs/en/html/api/Bugzilla/Product.html @@ -48,13 +48,13 @@ name="SYNOPSIS" my $id = $product->id; my $name = $product->name; my $description = $product->description; - my $milestoneurl = $product->milestone_url; my isactive = $product->is_active; 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;</pre> + my $classificationid = $product->classification_id; + my $allows_unconfirmed = $product->allows_unconfirmed;</pre> <h1><a class='u' href='#___top' title='click to go to top of document' name="DESCRIPTION" diff --git a/docs/en/html/api/Bugzilla/Status.html b/docs/en/html/api/Bugzilla/Status.html index faec3e436..a4cf0be50 100644 --- a/docs/en/html/api/Bugzilla/Status.html +++ b/docs/en/html/api/Bugzilla/Status.html @@ -77,19 +77,6 @@ name="METHODS" Returns: A list of Bugzilla::Status objects.</pre> -<dt><a name="can_change_from" -><code class="code">can_change_from</code></a></dt> - -<dd> -<pre class="code"> Description: Returns the list of active statuses a bug can be changed from - given the new bug status. If the bug status is available on - bug creation, this method doesn't return this information. - You have to call C<can_change_to> instead. - - Params: none. - - Returns: A list of Bugzilla::Status objects.</pre> - <dt><a name="comment_required_on_change_from" ><code class="code">comment_required_on_change_from</code></a></dt> diff --git a/docs/en/html/api/Bugzilla/Template/Plugin/Hook.html b/docs/en/html/api/Bugzilla/Template/Plugin/Hook.html index e66e10161..52c9f9194 100644 --- a/docs/en/html/api/Bugzilla/Template/Plugin/Hook.html +++ b/docs/en/html/api/Bugzilla/Template/Plugin/Hook.html @@ -89,14 +89,8 @@ name="SEE_ALSO" <p><a href="../../../Template/Plugin.html" class="podlinkpod" >Template::Plugin</a></p> -<p><a href="http://www.bugzilla.org/docs/tip/html/customization.html" class="podlinkurl" ->http://www.bugzilla.org/docs/tip/html/customization.html</a></p> - -<p><a href="http://bugzilla.mozilla.org/show_bug.cgi?id=229658" class="podlinkurl" ->http://bugzilla.mozilla.org/show_bug.cgi?id=229658</a></p> - -<p><a href="http://bugzilla.mozilla.org/show_bug.cgi?id=298341" class="podlinkurl" ->http://bugzilla.mozilla.org/show_bug.cgi?id=298341</a></p> +<p><a href="http://wiki.mozilla.org/Bugzilla:Writing_Extensions" class="podlinkurl" +>http://wiki.mozilla.org/Bugzilla:Writing_Extensions</a></p> <p class="backlinkbottom"><b><a name="___bottom" href="../../../index.html" title="All Documents"><<</a></b></p> <!-- end doc --> diff --git a/docs/en/html/api/Bugzilla/User.html b/docs/en/html/api/Bugzilla/User.html index 14e6b1124..34e32a59a 100644 --- a/docs/en/html/api/Bugzilla/User.html +++ b/docs/en/html/api/Bugzilla/User.html @@ -20,6 +20,7 @@ Bugzilla::User</title> <ul class='indexList indexList2'> <li class='indexItem indexItem2'><a href='#Constructors'>Constructors</a> <li class='indexItem indexItem2'><a href='#Saved_and_Shared_Queries'>Saved and Shared Queries</a> + <li class='indexItem indexItem2'><a href='#Account_Lockout'>Account Lockout</a> <li class='indexItem indexItem2'><a href='#Other_Methods'>Other Methods</a> </ul> <li class='indexItem indexItem1'><a href='#CLASS_FUNCTIONS'>CLASS FUNCTIONS</a> @@ -155,6 +156,31 @@ name="Saved_and_Shared_Queries" </dd> </dl> +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Account_Lockout" +>Account Lockout</a></h2> + +<dl> +<dt><a name="account_is_locked_out" +><code class="code">account_is_locked_out</code></a></dt> + +<dd> +<p>Returns <code class="code">1</code> if the account has failed to log in too many times recently, and thus is locked out for a period of time. Returns <code class="code">0</code> otherwise.</p> + +<dt><a name="account_ip_login_failures" +><code class="code">account_ip_login_failures</code></a></dt> + +<dd> +<p>Returns an arrayref of hashrefs, that contains information about the recent times that this account has failed to log in from the current remote IP. The hashes contain <code class="code">ip_addr</code>, <code class="code">login_time</code>, and <code class="code">user_id</code>.</p> + +<dt><a name="note_login_failure" +><code class="code">note_login_failure</code></a></dt> + +<dd> +<p>This notes that this account has failed to log in, and stores the fact in the database. The storing happens immediately, it does not wait for you to call <code class="code">update</code>.</p> +</dd> +</dl> + <h2><a class='u' href='#___top' title='click to go to top of document' name="Other_Methods" >Other Methods</a></h2> @@ -548,6 +574,46 @@ name="CLASS_FUNCTIONS" <p>Returns true if a password is valid (i.e. meets Bugzilla's requirements for length and content), else returns false. Untaints <code class="code">$passwd1</code> if successful.</p> <p>If a second password is passed in, this function also verifies that the two passwords match.</p> + +<dt><a name="match_field($data,_$fields,_$behavior)" +><code class="code">match_field($data, $fields, $behavior)</code></a></dt> + +<dd> +<dl> +<dt><a name="Description" +><b>Description</b></a></dt> + +<dd> +<p>Wrapper for the <code class="code">match()</code> function.</p> + +<dt><a name="Params" +><b>Params</b></a></dt> + +<dd> +<dl> +<dt><a +><code class="code">$fields</code> - A hashref with field names as keys and a hash as values. Each hash is of the form { 'type' => 'single|multi' }, which specifies whether the field can take a single login name only or several. +<dt><a +><code class="code">$data</code> (optional) - A hashref with field names as keys and field values as values. If undefined, <code class="code">Bugzilla->input_params</code> is used. +<dt><a +><code class="code">$behavior</code> (optional) - If set to <code class="code">MATCH_SKIP_CONFIRM</code>, no confirmation screen is displayed. In that case, the fields which don't match a unique user are left undefined. If not set, a confirmation screen is displayed if at least one field doesn't match any login name or match more than one.</a></dt> +</dl> + +<dt><a name="Returns" +><b>Returns</b></a></dt> + +<dd> +<p>If the third parameter is set to <code class="code">MATCH_SKIP_CONFIRM</code>, the function returns either <code class="code">USER_MATCH_SUCCESS</code> if all fields can be set unambiguously, <code class="code">USER_MATCH_FAILED</code> if at least one field doesn't match any user account, or <code class="code">USER_MATCH_MULTIPLE</code> if some fields match more than one user account.</p> + +<p>If the third parameter is not set, then if all fields could be set unambiguously, nothing is returned, else a confirmation page is displayed.</p> + +<dt><a name="Note" +><b>Note</b></a></dt> + +<dd> +<p>This function must be called early in a script, before anything external is done with the data.</p> +</dd> +</dl> </dd> </dl> diff --git a/docs/en/html/api/Bugzilla/WebService/Bug.html b/docs/en/html/api/Bugzilla/WebService/Bug.html index 233a38ff8..12a2a2282 100644 --- a/docs/en/html/api/Bugzilla/WebService/Bug.html +++ b/docs/en/html/api/Bugzilla/WebService/Bug.html @@ -53,11 +53,252 @@ name="Utility_Functions" >Utility Functions</a></h2> <dl> +<dt><a name="fields" +><code class="code">fields</code></a></dt> + +<dd> +<p><b>UNSTABLE</b></p> + +<dl> +<dt><a name="Description" +><b>Description</b></a></dt> + +<dd> +<p>Get information about valid bug fields, +including the lists of legal values for each field.</p> + +<dt><a name="Params" +><b>Params</b></a></dt> + +<dd> +<p>You can pass either field ids or field names.</p> + +<p><b>Note</b>: If neither <code class="code">ids</code> nor <code class="code">names</code> is specified, +then all non-obsolete fields will be returned.</p> + +<p>In addition to the parameters below, +this method also accepts the standard <a href="../../Bugzilla/WebService.html#include_fields" class="podlinkpod" +>include_fields</a> and <a href="../../Bugzilla/WebService.html#exclude_fields" class="podlinkpod" +>exclude_fields</a> arguments.</p> + +<dl> +<dt><a name="ids_(array)_-_An_array_of_integer_field_ids." +><code class="code">ids</code> (array) - An array of integer field ids. +<dt><a name="names_(array)_-_An_array_of_strings_representing_field_names." +><code class="code">names</code> (array) - An array of strings representing field names.</a></dt> +</dl> + +<dt><a name="Returns" +><b>Returns</b></a></dt> + +<dd> +<p>A hash containing a single element, +<code class="code">fields</code>. +This is an array of hashes, +containing the following keys:</p> + +<dl> +<dt><a name="id" +><code class="code">id</code></a></dt> + +<dd> +<p><code class="code">int</code> An integer id uniquely idenfifying this field in this installation only.</p> + +<dt><a name="type" +><code class="code">type</code></a></dt> + +<dd> +<p><code class="code">int</code> The number of the fieldtype. +The following values are defined:</p> + +<dl> +<dt><a name="0_Unknown" +><code class="code">0</code> Unknown +<dt><a name="1_Free_Text" +><code class="code">1</code> Free Text +<dt><a name="2_Drop_Down" +><code class="code">2</code> Drop Down +<dt><a name="3_Multiple-Selection_Box" +><code class="code">3</code> Multiple-Selection Box +<dt><a name="4_Large_Text_Box" +><code class="code">4</code> Large Text Box +<dt><a name="5_Date/Time" +><code class="code">5</code> Date/Time +<dt><a name="6_Bug_Id" +><code class="code">6</code> Bug Id +<dt><a name="7_Bug_URLs_("See_Also")" +><code class="code">7</code> Bug URLs ("See Also")</a></dt> +</dl> + +<dt><a name="is_custom" +><code class="code">is_custom</code></a></dt> + +<dd> +<p><code class="code">boolean</code> True when this is a custom field, +false otherwise.</p> + +<dt><a name="name" +><code class="code">name</code></a></dt> + +<dd> +<p><code class="code">string</code> The internal name of this field. +This is a unique identifier for this field. +If this is not a custom field, +then this name will be the same across all Bugzilla installations.</p> + +<dt><a name="display_name" +><code class="code">display_name</code></a></dt> + +<dd> +<p><code class="code">string</code> The name of the field, +as it is shown in the user interface.</p> + +<dt><a name="is_on_bug_entry" +><code class="code">is_on_bug_entry</code></a></dt> + +<dd> +<p><code class="code">boolean</code> For custom fields, +this is true if the field is shown when you enter a new bug. +For standard fields, +this is currently always false, +even if the field shows up when entering a bug. +(To know whether or not a standard field is valid on bug entry, +see <a href="#create" class="podlinkpod" +>"create"</a>.)</p> + +<dt><a name="visibility_field" +><code class="code">visibility_field</code></a></dt> + +<dd> +<p><code class="code">string</code> The name of a field that controls the visibility of this field in the user interface. +This field only appears in the user interface when the named field is equal to one of the values in <code class="code">visibility_values</code>. +Can be null.</p> + +<dt><a name="visibility_values" +><code class="code">visibility_values</code></a></dt> + +<dd> +<p><code class="code">array</code> of <code class="code">string</code>s This field is only shown when <code class="code">visibility_field</code> matches one of these values. +When <code class="code">visibility_field</code> is null, +then this is an empty array.</p> + +<dt><a name="value_field" +><code class="code">value_field</code></a></dt> + +<dd> +<p><code class="code">string</code> The name of the field that controls whether or not particular values of the field are shown in the user interface. +Can be null.</p> + +<dt><a name="values" +><code class="code">values</code></a></dt> + +<dd> +<p>This is an array of hashes, +representing the legal values for select-type (drop-down and multiple-selection) fields. +This is also populated for the <code class="code">component</code>, +<code class="code">version</code>, +and <code class="code">target_milestone</code> fields, +but not for the <code class="code">product</code> field (you must use <a href="../../Bugzilla/WebService/Product.html#get_accessible_products" class="podlinkpod" +>Product.get_accessible_products</a> for that.</p> + +<p>For fields that aren't select-type fields, +this will simply be an empty array.</p> + +<p>Each hash has the following keys:</p> + +<dl> +<dt><a name="name" +><code class="code">name</code></a></dt> + +<dd> +<p><code class="code">string</code> The actual value--this is what you would specify for this field in <a href="#create" class="podlinkpod" +>"create"</a>, +etc.</p> + +<dt><a name="sortkey" +><code class="code">sortkey</code></a></dt> + +<dd> +<p><code class="code">int</code> Values, +when displayed in a list, +are sorted first by this integer and then secondly by their name.</p> + +<dt><a name="visibility_values" +><code class="code">visibility_values</code></a></dt> + +<dd> +<p>If <code class="code">value_field</code> is defined for this field, +then this value is only shown if the <code class="code">value_field</code> is set to one of the values listed in this array. +Note that for per-product fields, +<code class="code">value_field</code> is set to <code class="code">'product'</code> and <code class="code">visibility_values</code> will reflect which product(s) this value appears in.</p> + +<dt><a name="is_open" +><code class="code">is_open</code></a></dt> + +<dd> +<p><code class="code">boolean</code> For <code class="code">bug_status</code> values, +determines whether this status specifies that the bug is "open" (true) or "closed" (false). +This item is only included for the <code class="code">bug_status</code> field.</p> + +<dt><a name="can_change_to" +><code class="code">can_change_to</code></a></dt> + +<dd> +<p>For <code class="code">bug_status</code> values, +this is an array of hashes that determines which statuses you can transition to from this status. +(This item is only included for the <code class="code">bug_status</code> field.)</p> + +<p>Each hash contains the following items:</p> + +<dl> +<dt><a name="name" +><code class="code">name</code></a></dt> + +<dd> +<p>the name of the new status</p> + +<dt><a name="comment_required" +><code class="code">comment_required</code></a></dt> + +<dd> +<p>this <code class="code">boolean</code> True if a comment is required when you change a bug into this status using this transition.</p> +</dd> +</dl> +</dd> +</dl> +</dd> +</dl> + +<dt><a name="Errors" +><b>Errors</b></a></dt> + +<dd> +<dl> +<dt><a name="51_(Invalid_Field_Name_or_Id)" +>51 (Invalid Field Name or Id)</a></dt> + +<dd> +<p>You specified an invalid field name or id.</p> +</dd> +</dl> + +<dt><a name="History" +><b>History</b></a></dt> + +<dd> +<dl> +<dt><a name="Added_in_Bugzilla_3.6." +>Added in Bugzilla <b>3.6</b>.</a></dt> +</dl> +</dd> +</dl> + <dt><a name="legal_values" ><code class="code">legal_values</code></a></dt> <dd> -<p><b>EXPERIMENTAL</b></p> +<p><b>DEPRECATED</b> - Use <a href="#fields" class="podlinkpod" +>"fields"</a> instead.</p> <dl> <dt><a name="Description" @@ -129,7 +370,8 @@ name="Bug_Information" ><b>Description</b></a></dt> <dd> -<p>Gets information about all attachments from a bug.</p> +<p>It allows you to get data about attachments, +given a list of bugs and/or attachment ids.</p> <p><b>Note</b>: Private attachments will only be returned if you are in the insidergroup or if you are the submitter of the attachment.</p> @@ -137,6 +379,8 @@ name="Bug_Information" ><b>Params</b></a></dt> <dd> +<p><b>Note</b>: At least one of <code class="code">ids</code> or <code class="code">attachment_ids</code> is required.</p> + <dl> <dt><a name="ids" ><code class="code">ids</code></a></dt> @@ -144,6 +388,12 @@ name="Bug_Information" <dd> <p>See the description of the <code class="code">ids</code> parameter in the <a href="#get" class="podlinkpod" >"get"</a> method.</p> + +<dt><a name="attachment_ids" +><code class="code">attachment_ids</code></a></dt> + +<dd> +<p><code class="code">array</code> An array of integer attachment ids.</p> </dd> </dl> @@ -151,11 +401,37 @@ name="Bug_Information" ><b>Returns</b></a></dt> <dd> -<p>A hash containing a single element, -<code class="code">bugs</code>. -This is a hash of hashes. -Each hash has the numeric bug id as a key, -and contains the following items:</p> +<p>A hash containing two elements: <code class="code">bugs</code> and <code class="code">attachments</code>. +The return value looks like this:</p> + +<pre class="code"> { + bugs => { + 1345 => { + attachments => [ + { (attachment) }, + { (attachment) } + ] + }, + 9874 => { + attachments => [ + { (attachment) }, + { (attachment) } + ] + + }, + }, + + attachments => { + 234 => { (attachment) }, + 123 => { (attachment) }, + } + }</pre> + +<p>The attachments of any bugs that you specified in the <code class="code">ids</code> argument in input are returned in <code class="code">bugs</code> on output. <code class="code">bugs</code> is a hash that has integer bug IDs for keys and contains a single key, <code class="code">attachments</code>. That key points to an arrayref that contains attachments as a hash. (Fields for attachments are described below.)</p> + +<p>For any attachments that you specified directly in <code class="code">attachment_ids</code>, they are returned in <code class="code">attachments</code> on output. This is a hash where the attachment ids point directly to hashes describing the individual attachment.</p> + +<p>The fields for each attachment (where it says <code class="code">(attachment)</code> in the diagram above) are:</p> <dl> <dt><a name="creation_time" @@ -204,30 +480,25 @@ and contains the following items:</p> ><code class="code">is_private</code></a></dt> <dd> -<p><code class="code">boolean</code> True if the attachment is private (only visible to a certain group called the "insidergroup"), -False otherwise.</p> +<p><code class="code">boolean</code> True if the attachment is private (only visible to a certain group called the "insidergroup"), False otherwise.</p> <dt><a name="is_obsolete" ><code class="code">is_obsolete</code></a></dt> <dd> -<p><code class="code">boolean</code> True if the attachment is obsolete, -False otherwise.</p> +<p><code class="code">boolean</code> True if the attachment is obsolete, False otherwise.</p> <dt><a name="is_url" ><code class="code">is_url</code></a></dt> <dd> -<p><code class="code">boolean</code> True if the attachment is a URL instead of actual data, -False otherwise. -Note that such attachments only happen when the Bugzilla installation has at some point had the <code class="code">allow_attach_url</code> parameter enabled.</p> +<p><code class="code">boolean</code> True if the attachment is a URL instead of actual data, False otherwise. Note that such attachments only happen when the Bugzilla installation has at some point had the <code class="code">allow_attach_url</code> parameter enabled.</p> <dt><a name="is_patch" ><code class="code">is_patch</code></a></dt> <dd> -<p><code class="code">boolean</code> True if the attachment is a patch, -False otherwise.</p> +<p><code class="code">boolean</code> True if the attachment is a patch, False otherwise.</p> <dt><a name="attacher" ><code class="code">attacher</code></a></dt> @@ -242,7 +513,16 @@ False otherwise.</p> <dd> <p>This method can throw all the same errors as <a href="#get" class="podlinkpod" ->"get"</a>.</p> +>"get"</a>. In addition, it can also throw the following error:</p> + +<dl> +<dt><a name="304_(Auth_Failure,_Attachment_is_Private)" +>304 (Auth Failure, Attachment is Private)</a></dt> + +<dd> +<p>You specified the id of a private attachment in the <code class="code">attachment_ids</code> argument, and you are not in the "insider group" that can see private attachments.</p> +</dd> +</dl> <dt><a name="History" ><b>History</b></a></dt> @@ -266,8 +546,7 @@ False otherwise.</p> ><b>Description</b></a></dt> <dd> -<p>This allows you to get data about comments, -given a list of bugs and/or comment ids.</p> +<p>This allows you to get data about comments, given a list of bugs and/or comment ids.</p> <dt><a name="Params" ><b>Params</b></a></dt> @@ -275,8 +554,7 @@ given a list of bugs and/or comment ids.</p> <dd> <p><b>Note</b>: At least one of <code class="code">ids</code> or <code class="code">comment_ids</code> is required.</p> -<p>In addition to the parameters below, -this method also accepts the standard <a href="../../Bugzilla/WebService.html#include_fields" class="podlinkpod" +<p>In addition to the parameters below, this method also accepts the standard <a href="../../Bugzilla/WebService.html#include_fields" class="podlinkpod" >include_fields</a> and <a href="../../Bugzilla/WebService.html#exclude_fields" class="podlinkpod" >exclude_fields</a> arguments.</p> @@ -285,26 +563,19 @@ this method also accepts the standard <a href="../../Bugzilla/WebService.html#in ><code class="code">ids</code></a></dt> <dd> -<p><code class="code">array</code> An array that can contain both bug IDs and bug aliases. -All of the comments (that are visible to you) will be returned for the specified bugs.</p> +<p><code class="code">array</code> An array that can contain both bug IDs and bug aliases. All of the comments (that are visible to you) will be returned for the specified bugs.</p> <dt><a name="comment_ids" ><code class="code">comment_ids</code></a></dt> <dd> -<p><code class="code">array</code> An array of integer comment_ids. -These comments will be returned individually, -separate from any other comments in their respective bugs.</p> +<p><code class="code">array</code> An array of integer comment_ids. These comments will be returned individually, separate from any other comments in their respective bugs.</p> <dt><a name="new_since" ><code class="code">new_since</code></a></dt> <dd> -<p><code class="code">dateTime</code> If specified, -the method will only return comments <i>newer</i> than this time. -This only affects comments returned from the <code class="code">ids</code> argument. -You will always be returned all comments you request in the <code class="code">comment_ids</code> argument, -even if they are older than this date.</p> +<p><code class="code">dateTime</code> If specified, the method will only return comments <i>newer</i> than this time. This only affects comments returned from the <code class="code">ids</code> argument. You will always be returned all comments you request in the <code class="code">comment_ids</code> argument, even if they are older than this date.</p> </dd> </dl> @@ -319,26 +590,15 @@ even if they are older than this date.</p> ><code class="code">bugs</code></a></dt> <dd> -<p>This is used for bugs specified in <code class="code">ids</code>. -This is a hash, -where the keys are the numeric ids of the bugs, -and the value is a hash with a single key, -<code class="code">comments</code>, -which is an array of comments. -(The format of comments is described below.)</p> +<p>This is used for bugs specified in <code class="code">ids</code>. This is a hash, where the keys are the numeric ids of the bugs, and the value is a hash with a single key, <code class="code">comments</code>, which is an array of comments. (The format of comments is described below.)</p> -<p>Note that any individual bug will only be returned once, -so if you specify an id multiple times in <code class="code">ids</code>, -it will still only be returned once.</p> +<p>Note that any individual bug will only be returned once, so if you specify an id multiple times in <code class="code">ids</code>, it will still only be returned once.</p> <dt><a name="comments" ><code class="code">comments</code></a></dt> <dd> -<p>Each individual comment requested in <code class="code">comment_ids</code> is returned here, -in a hash where the numeric comment id is the key, -and the value is the comment. -(The format of comments is described below.)</p> +<p>Each individual comment requested in <code class="code">comment_ids</code> is returned here, in a hash where the numeric comment id is the key, and the value is the comment. (The format of comments is described below.)</p> </dd> </dl> @@ -357,6 +617,12 @@ and the value is the comment. <dd> <p><code class="code">int</code> The ID of the bug that this comment is on.</p> +<dt><a name="attachment_id" +>attachment_id</a></dt> + +<dd> +<p><code class="code">int</code> If the comment was made on an attachment, this will be the ID of that attachment. Otherwise it will be null.</p> + <dt><a name="text" >text</a></dt> @@ -379,8 +645,7 @@ and the value is the comment. >is_private</a></dt> <dd> -<p><code class="code">boolean</code> True if this comment is private (only visible to a certain group called the "insidergroup"), -False otherwise.</p> +<p><code class="code">boolean</code> True if this comment is private (only visible to a certain group called the "insidergroup"), False otherwise.</p> </dd> </dl> @@ -389,26 +654,33 @@ False otherwise.</p> <dd> <p>This method can throw all the same errors as <a href="#get" class="podlinkpod" ->"get"</a>. -In addition, -it can also throw the following errors:</p> +>"get"</a>. In addition, it can also throw the following errors:</p> <dl> <dt><a name="110_(Comment_Is_Private)" >110 (Comment Is Private)</a></dt> <dd> -<p>You specified the id of a private comment in the <code class="code">comment_ids</code> argument, -and you are not in the "insider group" that can see private comments.</p> +<p>You specified the id of a private comment in the <code class="code">comment_ids</code> argument, and you are not in the "insider group" that can see private comments.</p> <dt><a name="111_(Invalid_Comment_ID)" >111 (Invalid Comment ID)</a></dt> <dd> -<p>You specified an id in the <code class="code">comment_ids</code> argument that is invalid--either you specified something that wasn't a number, -or there is no comment with that id.</p> +<p>You specified an id in the <code class="code">comment_ids</code> argument that is invalid--either you specified something that wasn't a number, or there is no comment with that id.</p> </dd> </dl> + +<dt><a name="History" +><b>History</b></a></dt> + +<dd> +<dl> +<dt><a name="Added_in_Bugzilla_3.4." +>Added in Bugzilla <b>3.4</b>. +<dt><a name="attachment_id_was_added_to_the_return_value_in_Bugzilla_3.6." +><code class="code">attachment_id</code> was added to the return value in Bugzilla <b>3.6</b>.</a></dt> +</dl> </dd> </dl> @@ -438,27 +710,15 @@ or there is no comment with that id.</p> <dd> <p>An array of numbers and strings.</p> -<p>If an element in the array is entirely numeric, -it represents a bug_id from the Bugzilla database to fetch. -If it contains any non-numeric characters, -it is considered to be a bug alias instead, -and the bug with that alias will be loaded.</p> +<p>If an element in the array is entirely numeric, it represents a bug_id from the Bugzilla database to fetch. If it contains any non-numeric characters, it is considered to be a bug alias instead, and the bug with that alias will be loaded.</p> -<p>Note that it's possible for aliases to be disabled in Bugzilla, -in which case you will be told that you have specified an invalid bug_id if you try to specify an alias. -(It will be error 100.)</p> +<p>Note that it's possible for aliases to be disabled in Bugzilla, in which case you will be told that you have specified an invalid bug_id if you try to specify an alias. (It will be error 100.)</p> <dt><a name="permissive_UNSTABLE" ><code class="code">permissive</code> <b>UNSTABLE</b></a></dt> <dd> -<p><code class="code">boolean</code> Normally, -if you request any inaccessible or invalid bug ids, -Bug.get will throw an error. -If this parameter is True, -instead of throwing an error we return an array of hashes with a <code class="code">id</code>, -<code class="code">faultString</code> and <code class="code">faultCode</code> for each bug that fails, -and return normal information for the other bugs that were accessible.</p> +<p><code class="code">boolean</code> Normally, if you request any inaccessible or invalid bug ids, Bug.get will throw an error. If this parameter is True, instead of throwing an error we return an array of hashes with a <code class="code">id</code>, <code class="code">faultString</code> and <code class="code">faultCode</code> for each bug that fails, and return normal information for the other bugs that were accessible.</p> </dd> </dl> @@ -473,17 +733,14 @@ and return normal information for the other bugs that were accessible.</p> ><code class="code">bugs</code></a></dt> <dd> -<p>An array of hashes that contains information about the bugs with the valid ids. -Each hash contains the following items:</p> +<p>An array of hashes that contains information about the bugs with the valid ids. Each hash contains the following items:</p> <dl> <dt><a name="alias" >alias</a></dt> <dd> -<p><code class="code">string</code> The alias of this bug. -If there is no alias or aliases are disabled in this Bugzilla, -this will be an empty string.</p> +<p><code class="code">string</code> The alias of this bug. If there is no alias or aliases are disabled in this Bugzilla, this will be an empty string.</p> <dt><a name="assigned_to" >assigned_to</a></dt> @@ -507,9 +764,7 @@ this will be an empty string.</p> >dupe_of</a></dt> <dd> -<p><code class="code">int</code> The bug ID of the bug that this bug is a duplicate of. -If this bug isn't a duplicate of any bug, -this will be an empty int.</p> +<p><code class="code">int</code> The bug ID of the bug that this bug is a duplicate of. If this bug isn't a duplicate of any bug, this will be an empty int.</p> <dt><a name="id" >id</a></dt> @@ -521,19 +776,14 @@ this will be an empty int.</p> >internals <b>UNSTABLE</b></a></dt> <dd> -<p>A hash. -The internals of a <a href="../../Bugzilla/Bug.html" class="podlinkpod" ->Bugzilla::Bug</a> object. -This is extremely unstable, -and you should only rely on this if you absolutely have to. -The structure of the hash may even change between point releases of Bugzilla.</p> +<p>A hash. The internals of a <a href="../../Bugzilla/Bug.html" class="podlinkpod" +>Bugzilla::Bug</a> object. This is extremely unstable, and you should only rely on this if you absolutely have to. The structure of the hash may even change between point releases of Bugzilla.</p> <dt><a name="is_open" >is_open</a></dt> <dd> -<p><code class="code">boolean</code> Returns true (1) if this bug is open, -false (0) if it is closed.</p> +<p><code class="code">boolean</code> Returns true (1) if this bug is open, false (0) if it is closed.</p> <dt><a name="last_change_time" >last_change_time</a></dt> @@ -557,8 +807,7 @@ false (0) if it is closed.</p> >resolution</a></dt> <dd> -<p><code class="code">string</code> The current resolution of the bug, -or an empty string if the bug is open.</p> +<p><code class="code">string</code> The current resolution of the bug, or an empty string if the bug is open.</p> <dt><a name="severity" >severity</a></dt> @@ -584,8 +833,7 @@ or an empty string if the bug is open.</p> ><code class="code">faults</code> <b>UNSTABLE</b></a></dt> <dd> -<p>An array of hashes that contains invalid bug ids with error messages returned for them. -Each hash contains the following items:</p> +<p>An array of hashes that contains invalid bug ids with error messages returned for them. Each hash contains the following items:</p> <dl> <dt><a name="id" @@ -598,15 +846,13 @@ Each hash contains the following items:</p> >faultString</a></dt> <dd> -<p>c<string> This will only be returned for invalid bugs if the <code class="code">permissive</code> argument was set when calling Bug.get, -and it is an error indicating that the bug id was invalid.</p> +<p>c<string> This will only be returned for invalid bugs if the <code class="code">permissive</code> argument was set when calling Bug.get, and it is an error indicating that the bug id was invalid.</p> <dt><a name="faultCode" >faultCode</a></dt> <dd> -<p>c<int> This will only be returned for invalid bugs if the <code class="code">permissive</code> argument was set when calling Bug.get, -and it is the error code for the invalid bug error.</p> +<p>c<int> This will only be returned for invalid bugs if the <code class="code">permissive</code> argument was set when calling Bug.get, and it is the error code for the invalid bug error.</p> </dd> </dl> </dd> @@ -706,15 +952,9 @@ and it is the error code for the invalid bug error.</p> <dd> <p>An array of numbers and strings.</p> -<p>If an element in the array is entirely numeric, -it represents a bug_id from the Bugzilla database to fetch. -If it contains any non-numeric characters, -it is considered to be a bug alias instead, -and the data bug with that alias will be loaded.</p> +<p>If an element in the array is entirely numeric, it represents a bug_id from the Bugzilla database to fetch. If it contains any non-numeric characters, it is considered to be a bug alias instead, and the data bug with that alias will be loaded.</p> -<p>Note that it's possible for aliases to be disabled in Bugzilla, -in which case you will be told that you have specified an invalid bug_id if you try to specify an alias. -(It will be error 100.)</p> +<p>Note that it's possible for aliases to be disabled in Bugzilla, in which case you will be told that you have specified an invalid bug_id if you try to specify an alias. (It will be error 100.)</p> </dd> </dl> @@ -722,10 +962,7 @@ in which case you will be told that you have specified an invalid bug_id if you ><b>Returns</b></a></dt> <dd> -<p>A hash containing a single element, -<code class="code">bugs</code>. -This is an array of hashes, -containing the following keys:</p> +<p>A hash containing a single element, <code class="code">bugs</code>. This is an array of hashes, containing the following keys:</p> <dl> <dt><a name="id" @@ -738,16 +975,13 @@ containing the following keys:</p> >alias</a></dt> <dd> -<p><code class="code">string</code> The alias of this bug. -If there is no alias or aliases are disabled in this Bugzilla, -this will be undef.</p> +<p><code class="code">string</code> The alias of this bug. If there is no alias or aliases are disabled in this Bugzilla, this will be undef.</p> <dt><a name="history" >history</a></dt> <dd> -<p><code class="code">array</code> An array of hashes, -each hash having the following keys:</p> +<p><code class="code">array</code> An array of hashes, each hash having the following keys:</p> <dl> <dt><a name="when" @@ -766,8 +1000,7 @@ each hash having the following keys:</p> >changes</a></dt> <dd> -<p><code class="code">array</code> An array of hashes which contain all the changes that happened to the bug at this time (as specified by <code class="code">when</code>). -Each hash contains the following items:</p> +<p><code class="code">array</code> An array of hashes which contain all the changes that happened to the bug at this time (as specified by <code class="code">when</code>). Each hash contains the following items:</p> <dl> <dt><a name="field_name" @@ -792,9 +1025,7 @@ Each hash contains the following items:</p> >attachment_id</a></dt> <dd> -<p><code class="code">int</code> The id of the attachment that was changed. -This only appears if the change was to an attachment, -otherwise <code class="code">attachment_id</code> will not be present in this hash.</p> +<p><code class="code">int</code> The id of the attachment that was changed. This only appears if the change was to an attachment, otherwise <code class="code">attachment_id</code> will not be present in this hash.</p> </dd> </dl> </dd> @@ -837,23 +1068,11 @@ otherwise <code class="code">attachment_id</code> will not be present in this h ><b>Params</b></a></dt> <dd> -<p>Unless otherwise specified in the description of a parameter, -bugs are returned if they match <i>exactly</i> the criteria you specify in these parameters. -That is, -we don't match against substrings--if a bug is in the "Widgets" product and you ask for bugs in the "Widg" product, -you won't get anything.</p> +<p>Unless otherwise specified in the description of a parameter, bugs are returned if they match <i>exactly</i> the criteria you specify in these parameters. That is, we don't match against substrings--if a bug is in the "Widgets" product and you ask for bugs in the "Widg" product, you won't get anything.</p> -<p>Criteria are joined in a logical AND. -That is, -you will be returned bugs that match <i>all</i> of the criteria, -not bugs that match <i>any</i> of the criteria.</p> +<p>Criteria are joined in a logical AND. That is, you will be returned bugs that match <i>all</i> of the criteria, not bugs that match <i>any</i> of the criteria.</p> -<p>Each parameter can be either the type it says, -or an array of the types it says. -If you pass an array, -it means "Give me bugs with <i>any</i> of these values." For example, -if you wanted bugs that were in either the "Foo" or "Bar" products, -you'd pass:</p> +<p>Each parameter can be either the type it says, or an array of the types it says. If you pass an array, it means "Give me bugs with <i>any</i> of these values." For example, if you wanted bugs that were in either the "Foo" or "Bar" products, you'd pass:</p> <pre class="code"> product => ['Foo', 'Bar']</pre> @@ -1187,8 +1406,8 @@ name="Bug_Creation_and_Modification" ><code class="code">id</code> (int) <b>Required</b> - The id or alias of the bug to append a comment to. <dt><a ><code class="code">comment</code> (string) <b>Required</b> - The comment to append to the bug. If this is empty or all whitespace, an error will be thrown saying that you did not set the <code class="code">comment</code> parameter. -<dt><a name="private_(boolean)_-_If_set_to_true,_the_comment_is_private,_otherwise_it_is_assumed_to_be_public." -><code class="code">private</code> (boolean) - If set to true, the comment is private, otherwise it is assumed to be public. +<dt><a name="is_private_(boolean)_-_If_set_to_true,_the_comment_is_private,_otherwise_it_is_assumed_to_be_public." +><code class="code">is_private</code> (boolean) - If set to true, the comment is private, otherwise it is assumed to be public. <dt><a ><code class="code">work_time</code> (double) - Adds this many hours to the "Hours Worked" on the bug. If you are not in the time tracking group, this value will be ignored.</a></dt> </dl> @@ -1240,7 +1459,9 @@ name="Bug_Creation_and_Modification" <dt><a name="Modified_to_return_the_new_comment's_id_in_Bugzilla_3.4" >Modified to return the new comment's id in Bugzilla <b>3.4</b> <dt><a name="Modified_to_throw_an_error_if_you_try_to_add_a_private_comment_but_can't,_in_Bugzilla_3.4." ->Modified to throw an error if you try to add a private comment but can't, in Bugzilla <b>3.4</b>.</a></dt> +>Modified to throw an error if you try to add a private comment but can't, in Bugzilla <b>3.4</b>. +<dt><a +>Before Bugzilla <b>3.6</b>, the <code class="code">is_private</code> argument was called <code class="code">private</code>, and you can still call it <code class="code">private</code> for backwards-compatibility purposes if you wish.</a></dt> </dl> </dd> </dl> diff --git a/docs/en/html/api/Bugzilla/WebService/Bugzilla.html b/docs/en/html/api/Bugzilla/WebService/Bugzilla.html index f4ffbb68b..9ce9fc067 100644 --- a/docs/en/html/api/Bugzilla/WebService/Bugzilla.html +++ b/docs/en/html/api/Bugzilla/WebService/Bugzilla.html @@ -88,11 +88,24 @@ that is the version as a string.</p> <dd> <p>A hash with a single item, -<code class="code">extesions</code>. +<code class="code">extensions</code>. This points to a hash. <i>That</i> hash contains the names of extensions as keys, -and information about the extension as values. -One of the values that must be returned is the 'version' of the extension</p> +and the values are a hash. +That hash contains a single key <code class="code">version</code>, +which is the version of the extension, +or <code class="code">0</code> if the extension hasn't defined a version.</p> + +<p>The return value looks something like this:</p> + +<pre class="code"> extensions => { + Example => { + version => '3.6', + }, + BmpConvert => { + version => '1.0', + }, + }</pre> <dt><a name="History" ><b>History</b></a></dt> @@ -100,7 +113,9 @@ One of the values that must be returned is the 'version' of the extensio <dd> <dl> <dt><a name="Added_in_Bugzilla_3.2." ->Added in Bugzilla <b>3.2</b>.</a></dt> +>Added in Bugzilla <b>3.2</b>. +<dt><a +>As of Bugzilla <b>3.6</b>, the names of extensions are canonical names that the extensions define themselves. Before 3.6, the names of the extensions depended on the directory they were in on the Bugzilla server.</a></dt> </dl> </dd> </dl> @@ -109,8 +124,7 @@ One of the values that must be returned is the 'version' of the extensio ><code class="code">timezone</code></a></dt> <dd> -<p><b>DEPRECATED</b> This method may be removed in a future version of Bugzilla. -Use <a href="#time" class="podlinkpod" +<p><b>DEPRECATED</b> This method may be removed in a future version of Bugzilla. Use <a href="#time" class="podlinkpod" >"time"</a> instead.</p> <dl> @@ -118,8 +132,7 @@ Use <a href="#time" class="podlinkpod" ><b>Description</b></a></dt> <dd> -<p>Returns the timezone of the server Bugzilla is running on. -This is important because all dates/times that the webservice interface returns will be in this timezone.</p> +<p>Returns the timezone of the server Bugzilla is running on. This is important because all dates/times that the webservice interface returns will be in this timezone.</p> <dt><a name="Params_(none)" ><b>Params</b> (none) @@ -127,9 +140,7 @@ This is important because all dates/times that the webservice interface returns ><b>Returns</b></a></dt> <dd> -<p>A hash with a single item, -<code class="code">timezone</code>, -that is the timezone offset as a string in (+/-)XXXX (RFC 2822) format.</p> +<p>A hash with a single item, <code class="code">timezone</code>, that is the timezone offset as a string in (+/-)XXXX (RFC 2822) format.</p> </dd> </dl> @@ -144,8 +155,7 @@ that is the timezone offset as a string in (+/-)XXXX (RFC 2822) format.</p> ><b>Description</b></a></dt> <dd> -<p>Gets information about what time the Bugzilla server thinks it is, -and what timezone it's running in.</p> +<p>Gets information about what time the Bugzilla server thinks it is, and what timezone it's running in.</p> <dt><a name="Params_(none)" ><b>Params</b> (none) @@ -160,51 +170,35 @@ and what timezone it's running in.</p> ><code class="code">db_time</code></a></dt> <dd> -<p><code class="code">dateTime</code> The current time in Bugzilla's <b>local time zone</b>, -according to the Bugzilla <i>database server</i>.</p> +<p><code class="code">dateTime</code> The current time in Bugzilla's <b>local time zone</b>, according to the Bugzilla <i>database server</i>.</p> -<p>Note that Bugzilla assumes that the database and the webserver are running in the same time zone. -However, -if the web server and the database server aren't synchronized for some reason, -<i>this</i> is the time that you should rely on for doing searches and other input to the WebService.</p> +<p>Note that Bugzilla assumes that the database and the webserver are running in the same time zone. However, if the web server and the database server aren't synchronized for some reason, <i>this</i> is the time that you should rely on for doing searches and other input to the WebService.</p> <dt><a name="web_time" ><code class="code">web_time</code></a></dt> <dd> -<p><code class="code">dateTime</code> This is the current time in Bugzilla's <b>local time zone</b>, -according to Bugzilla's <i>web server</i>.</p> +<p><code class="code">dateTime</code> This is the current time in Bugzilla's <b>local time zone</b>, according to Bugzilla's <i>web server</i>.</p> -<p>This might be different by a second from <code class="code">db_time</code> since this comes from a different source. -If it's any more different than a second, -then there is likely some problem with this Bugzilla instance. -In this case you should rely on the <code class="code">db_time</code>, -not the <code class="code">web_time</code>.</p> +<p>This might be different by a second from <code class="code">db_time</code> since this comes from a different source. If it's any more different than a second, then there is likely some problem with this Bugzilla instance. In this case you should rely on the <code class="code">db_time</code>, not the <code class="code">web_time</code>.</p> <dt><a name="web_time_utc" ><code class="code">web_time_utc</code></a></dt> <dd> -<p>The same as <code class="code">web_time</code>, -but in the <b>UTC</b> time zone instead of the local time zone.</p> +<p>The same as <code class="code">web_time</code>, but in the <b>UTC</b> time zone instead of the local time zone.</p> <dt><a name="tz_name" ><code class="code">tz_name</code></a></dt> <dd> -<p><code class="code">string</code> The long name of the time zone that the Bugzilla web server is in. -Will usually look something like: <code class="code">America/Los Angeles</code></p> +<p><code class="code">string</code> The long name of the time zone that the Bugzilla web server is in. Will usually look something like: <code class="code">America/Los Angeles</code></p> <dt><a name="tz_short_name" ><code class="code">tz_short_name</code></a></dt> <dd> -<p><code class="code">string</code> The "short name" of the time zone that the Bugzilla web server is in. -This should only be used for display, -and not relied on for your programs, -because different time zones can have the same short name. -(For example, -there are two <code class="code">EST</code>s.)</p> +<p><code class="code">string</code> The "short name" of the time zone that the Bugzilla web server is in. This should only be used for display, and not relied on for your programs, because different time zones can have the same short name. (For example, there are two <code class="code">EST</code>s.)</p> <p>This will look something like: <code class="code">PST</code>.</p> diff --git a/docs/en/html/api/Bugzilla/Whine/Query.html b/docs/en/html/api/Bugzilla/Whine/Query.html new file mode 100644 index 000000000..ba9729fb1 --- /dev/null +++ b/docs/en/html/api/Bugzilla/Whine/Query.html @@ -0,0 +1,126 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +Bugzilla::Whine::Query</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href="../.././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>Bugzilla::Whine::Query</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> + <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> + <li class='indexItem indexItem1'><a href='#METHODS'>METHODS</a> + <ul class='indexList indexList2'> + <li class='indexItem indexItem2'><a href='#Constructors'>Constructors</a> + <li class='indexItem indexItem2'><a href='#Accessors'>Accessors</a> + </ul> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>Bugzilla::Whine::Query - A query object used by <a href="../../Bugzilla/Whine.html" class="podlinkpod" +>Bugzilla::Whine</a>.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<pre class="code"> use Bugzilla::Whine::Query; + + my $query = new Bugzilla::Whine::Query($id); + + my $event_id = $query->eventid; + my $id = $query->id; + my $query_name = $query->name; + my $sortkey = $query->sortkey; + my $one_email_per_bug = $query->one_email_per_bug; + my $title = $query->title;</pre> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DESCRIPTION" +>DESCRIPTION</a></h1> + +<p>This module exists to represent a query for a <a href="../../Bugzilla/Whine/Event.html" class="podlinkpod" +>Bugzilla::Whine::Event</a>. Each event, which are groups of schedules and queries based on how the user configured the event, may have zero or more queries associated with it. Additionally, the queries are selected from the user's saved searches, or <a href="../../Bugzilla/Search/Saved.html" class="podlinkpod" +>Bugzilla::Search::Saved</a> object with a matching <code class="code">name</code> attribute for the user.</p> + +<p>This is an implementation of <a href="../../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a>, and so has all the same methods available as <a href="../../Bugzilla/Object.html" class="podlinkpod" +>Bugzilla::Object</a>, in addition to what is documented below.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="METHODS" +>METHODS</a></h1> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Constructors" +>Constructors</a></h2> + +<dl> +<dt><a name="new" +><code class="code">new</code></a></dt> + +<dd> +<p>Does not accept a bare <code class="code">name</code> argument. Instead, accepts only an id.</p> + +<p>See also: <a href="../../Bugzilla/Object.html#new" class="podlinkpod" +>"new" in Bugzilla::Object</a>.</p> +</dd> +</dl> + +<h2><a class='u' href='#___top' title='click to go to top of document' +name="Accessors" +>Accessors</a></h2> + +<p>These return data about the object, without modifying the object.</p> + +<dl> +<dt><a name="event_id" +><code class="code">event_id</code></a></dt> + +<dd> +<p>The <a href="../../Bugzilla/Whine/Event.html" class="podlinkpod" +>Bugzilla::Whine::Event</a> object id for this object.</p> + +<dt><a name="name" +><code class="code">name</code></a></dt> + +<dd> +<p>The <a href="../../Bugzilla/Search/Saved.html" class="podlinkpod" +>Bugzilla::Search::Saved</a> query object name for this object.</p> + +<dt><a name="sortkey" +><code class="code">sortkey</code></a></dt> + +<dd> +<p>The relational sorting key as compared with other <a href="../../Bugzilla/Whine/Query.html" class="podlinkpod" +>Bugzilla::Whine::Query</a> objects.</p> + +<dt><a name="one_email_per_bug" +><code class="code">one_email_per_bug</code></a></dt> + +<dd> +<p>Returns a numeric 1(<code class="code">true</code>) or 0(<code class="code">false</code>) to represent whether this <a href="../../Bugzilla/Whine/Query.html" class="podlinkpod" +>Bugzilla::Whine::Query</a> object is supposed to be mailed as a list of bugs or one email per bug.</p> + +<dt><a name="title" +><code class="code">title</code></a></dt> + +<dd> +<p>The title of this object as it appears in the user forms and emails.</p> +</dd> +</dl> +<p class="backlinkbottom"><b><a name="___bottom" href="../../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/contrib/console.html b/docs/en/html/api/contrib/console.html new file mode 100644 index 000000000..bd72578eb --- /dev/null +++ b/docs/en/html/api/contrib/console.html @@ -0,0 +1,64 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +console.pl</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>console.pl</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> + <li class='indexItem indexItem1'><a href='#DESCRIPTION'>DESCRIPTION</a> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p><b>console.pl</b> - command-line interface to Bugzilla API</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<p>$ <b>contrib/console.pl</b></p> + +<p>Bugzilla> <b>b(5)->short_desc</b></p> + +<blockquote> +<p>"Misplaced Widget"</p> +</blockquote> + +<p>Bugzilla> <b>$f = f "cf_subsystem"; scalar @{$f->legal_values}</b></p> + +<blockquote> +<p>177</p> +</blockquote> + +<p>Bugzilla> <b>p filter html_light, +"1 < 2 <b>3</b>"</b></p> + +<blockquote> +<p>1 &lt; 2 <b>3</b></p> +</blockquote> + +<p>Bugzilla> <b>$u = u 5; $u->groups; d $u</b></p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="DESCRIPTION" +>DESCRIPTION</a></h1> + +<p>Loads Bugzilla packages and prints expressions with Data::Dumper. +Useful for checking results of Bugzilla API calls without opening a debug file from a cgi.</p> +<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/contrib/extension-convert.html b/docs/en/html/api/contrib/extension-convert.html new file mode 100644 index 000000000..d87b9eb56 --- /dev/null +++ b/docs/en/html/api/contrib/extension-convert.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +extension-convert.pl</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>extension-convert.pl</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>extension-convert.pl - Convert extensions from the pre-3.6 format to the 3.6 format.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<pre class="code"> contrib/extension-convert.pl name + + Converts an extension in the F<extensions/> directory into the new + extension layout for Bugzilla 3.6.</pre> +<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/email_in.html b/docs/en/html/api/email_in.html index 082f8aa26..feb85c20b 100644 --- a/docs/en/html/api/email_in.html +++ b/docs/en/html/api/email_in.html @@ -61,9 +61,9 @@ name="Creating_a_New_Bug" <pre class="code"> From: account@domain.com Subject: Bug Summary - @product = ProductName - @component = ComponentName - @version = 1.0 + @product ProductName + @component ComponentName + @version 1.0 This is a bug description. It will be entered into the bug exactly as written here. @@ -74,27 +74,19 @@ name="Creating_a_New_Bug" This is a signature line, and will be removed automatically, It will not be included in the bug description.</pre> -<p>The <code class="code">@</code> labels can be any valid field name in Bugzilla that can be set on <code class="code">enter_bug.cgi</code>. For the list of required field names, see <a href="./Bugzilla/WebService/Bug.html#Create" class="podlinkpod" ->"Create" in Bugzilla::WebService::Bug</a>. Note, that there is some difference in the names of the required input fields between web and email interfaces, as listed below:</p> - -<ul> -<li><code class="code">platform</code> in web is <code class="code">@rep_platform</code> in email</li> - -<li><code class="code">severity</code> in web is <code class="code">@bug_severity</code> in email</li> -</ul> - -<p>For the list of all field names, see the <code class="code">fielddefs</code> table in the database.</p> +<p>For the list of valid field names for the <code class="code">@</code> fields, including a list of which ones are required, see <a href="./Bugzilla/WebService/Bug.html#create" class="podlinkpod" +>"create" in Bugzilla::WebService::Bug</a>. (Note, however, that you cannot specify <code class="code">@description</code> as a field-- you just add a comment by adding text after the <code class="code">@</code> fields.)</p> <p>The values for the fields can be split across multiple lines, but note that a newline will be parsed as a single space, for the value. So, for example:</p> -<pre class="code"> @short_desc = This is a very long +<pre class="code"> @summary This is a very long description</pre> <p>Will be parsed as "This is a very long description".</p> -<p>If you specify <code class="code">@short_desc</code>, it will override the summary you specify in the Subject header.</p> +<p>If you specify <code class="code">@summary</code>, it will override the summary you specify in the Subject header.</p> -<p><code class="code">account@domain.com</code> must be a valid Bugzilla account.</p> +<p><code class="code">account@domain.com</code> (the value of the <code class="code">From</code> header) must be a valid Bugzilla account.</p> <p>Note that signatures must start with '-- ', the standard signature border.</p> @@ -107,14 +99,14 @@ name="Modifying_an_Existing_Bug" <ul> <li>Your subject starts with [Bug 123456] -- then it modifies bug 123456.</li> -<li>You include <code class="code">@bug_id = 123456</code> in the first lines of the email.</li> +<li>You include <code class="code">@id 123456</code> in the first lines of the email.</li> </ul> -<p>If you do both, <code class="code">@bug_id</code> takes precedence.</p> +<p>If you do both, <code class="code">@id</code> takes precedence.</p> <p>You send your email in the same format as for creating a bug, except that you only specify the fields you want to change. If the very first non-blank line of the email doesn't begin with <code class="code">@</code>, then it will be assumed that you are only adding a comment to the bug.</p> -<p>Note that when updating a bug, the <code class="code">Subject</code> header is ignored, except for getting the bug ID. If you want to change the bug's summary, you have to specify <code class="code">@short_desc</code> as one of the fields to change.</p> +<p>Note that when updating a bug, the <code class="code">Subject</code> header is ignored, except for getting the bug ID. If you want to change the bug's summary, you have to specify <code class="code">@summary</code> as one of the fields to change.</p> <p>Please remember not to include any extra text in your emails, as that text will also be added as a comment. This includes any text that your email client automatically quoted and included, if this is a reply to another email.</p> @@ -122,7 +114,7 @@ name="Modifying_an_Existing_Bug" name="Adding/Removing_CCs" >Adding/Removing CCs</a></h3> -<p>To add CCs, you can specify them in a comma-separated list in <code class="code">@cc</code>. For backward compatibility, <code class="code">@newcc</code> can also be used. If both are present, <code class="code">@cc</code> takes precedence.</p> +<p>To add CCs, you can specify them in a comma-separated list in <code class="code">@cc</code>.</p> <p>To remove CCs, specify them as a comma-separated list in <code class="code">@removecc</code>.</p> diff --git a/docs/en/html/api/extensions/create.html b/docs/en/html/api/extensions/create.html new file mode 100644 index 000000000..6ff15e91b --- /dev/null +++ b/docs/en/html/api/extensions/create.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title> +extensions/create.pl</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link rel="stylesheet" title="style" type="text/css" href=".././../../../style.css" media="all" > + +</head> + <body id="pod"> +<p class="backlinktop"><b><a name="___top" href="../index.html" accesskey="1" title="All Documents"><<</a></b></p> +<h1>extensions/create.pl</h1> +<div class='indexgroup'> +<ul class='indexList indexList1'> + <li class='indexItem indexItem1'><a href='#NAME'>NAME</a> + <li class='indexItem indexItem1'><a href='#SYNOPSIS'>SYNOPSIS</a> +</ul> +</div> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="NAME" +>NAME</a></h1> + +<p>extensions/create.pl - Create a framework for a new Bugzilla Extension.</p> + +<h1><a class='u' href='#___top' title='click to go to top of document' +name="SYNOPSIS" +>SYNOPSIS</a></h1> + +<pre class="code"> extensions/create.pl NAME + + Creates a framework for an extension called NAME in the F<extensions/> + directory.</pre> +<p class="backlinkbottom"><b><a name="___bottom" href="../index.html" title="All Documents"><<</a></b></p> + +<!-- end doc --> + +</body></html> diff --git a/docs/en/html/api/index.html b/docs/en/html/api/index.html index d19d78e5d..2c5a46126 100644 --- a/docs/en/html/api/index.html +++ b/docs/en/html/api/index.html @@ -2,14 +2,23 @@ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <title>Bugzilla 3.5.2 API Documentation</title> + <title>Bugzilla 3.5.3 API Documentation</title> <link rel="stylesheet" title="style" type="text/css" href="./../../../style.css" media="all" > </head> <body class="contentspage"> - <h1>Bugzilla 3.5.2 API Documentation</h1> + <h1>Bugzilla 3.5.3 API Documentation</h1> <dl class='superindex'> +<dt><a name="Extensions">Extensions</a></dt> +<dd> +<table class="pod_desc_table"> +<tr class="even"> + <th><a href="./extensions/create.html">extensions::create</a></th> + <td>Create a framework for a new Bugzilla Extension.</td> +</tr> +</table></dd> + <dt><a name="Files">Files</a></dt> <dd> <table class="pod_desc_table"> @@ -25,6 +34,14 @@ <th><a href="./contrib/bzdbcopy.html">contrib::bzdbcopy</a></th> <td>Copies data from one Bugzilla database to another.</td> </tr> +<tr class="odd"> + <th><a href="./contrib/console.html">contrib::console</a></th> + <td>command-line interface to Bugzilla API</td> +</tr> +<tr class="even"> + <th><a href="./contrib/extension-convert.html">contrib::extension-convert</a></th> + <td>Convert extensions from the pre-3.6 format to the 3.6 format.</td> +</tr> <tr class="odd"> <th><a href="./contrib/merge-users.html">contrib::merge-users</a></th> <td>Merge two user accounts.</td> @@ -127,177 +144,185 @@ <td>Error handling utilities for Bugzilla</td> </tr> <tr class="odd"> + <th><a href="./Bugzilla/Extension.html">Bugzilla::Extension</a></th> + <td>Base class for Bugzilla Extensions.</td> +</tr> +<tr class="even"> <th><a href="./Bugzilla/Field.html">Bugzilla::Field</a></th> <td>a particular piece of information about bugs and useful routines for form field manipulation</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Field/Choice.html">Bugzilla::Field::Choice</a></th> <td>A legal value for a <select>-type field.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Flag.html">Bugzilla::Flag</a></th> <td>A module to deal with Bugzilla flag values.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/FlagType.html">Bugzilla::FlagType</a></th> <td>A module to deal with Bugzilla flag types.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Group.html">Bugzilla::Group</a></th> <td>Bugzilla group class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Hook.html">Bugzilla::Hook</a></th> <td>Extendable extension hooks for Bugzilla code</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install.html">Bugzilla::Install</a></th> <td>Functions and variables having to do with installation.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/CPAN.html">Bugzilla::Install::CPAN</a></th> <td>Routines to install Perl modules from CPAN.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/DB.html">Bugzilla::Install::DB</a></th> <td>Fix up the database during installation.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/Filesystem.html">Bugzilla::Install::Filesystem</a></th> <td>Fix up the filesystem during installation.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/Localconfig.html">Bugzilla::Install::Localconfig</a></th> <td></td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Install/Requirements.html">Bugzilla::Install::Requirements</a></th> <td>Functions and variables dealing with Bugzilla's perl-module requirements.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Install/Util.html">Bugzilla::Install::Util</a></th> <td>Utility functions that are useful both during installation and afterwards.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/JobQueue.html">Bugzilla::JobQueue</a></th> <td>Interface between Bugzilla and TheSchwartz.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/JobQueue/Runner.html">Bugzilla::JobQueue::Runner</a></th> <td>A class representing the daemon that runs the job queue.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Keyword.html">Bugzilla::Keyword</a></th> <td>A Keyword that can be added to a bug.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Migrate.html">Bugzilla::Migrate</a></th> <td>Functions to migrate from other databases</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Milestone.html">Bugzilla::Milestone</a></th> <td>Bugzilla product milestone class.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Object.html">Bugzilla::Object</a></th> <td>A base class for objects in Bugzilla.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Product.html">Bugzilla::Product</a></th> <td>Bugzilla product class.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Search/Saved.html">Bugzilla::Search::Saved</a></th> <td>A saved search</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Status.html">Bugzilla::Status</a></th> <td>Bug status class.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Template.html">Bugzilla::Template</a></th> <td>Wrapper around the Template Toolkit Template object</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Template/Plugin/Bugzilla.html">Bugzilla::Template::Plugin::Bugzilla</a></th> <td></td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Template/Plugin/Hook.html">Bugzilla::Template::Plugin::Hook</a></th> <td></td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Template/Plugin/User.html">Bugzilla::Template::Plugin::User</a></th> <td></td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Token.html">Bugzilla::Token</a></th> <td>Provides different routines to manage tokens.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Update.html">Bugzilla::Update</a></th> <td>Update routines for Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/User.html">Bugzilla::User</a></th> <td>Object for a Bugzilla user</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/User/Setting.html">Bugzilla::User::Setting</a></th> <td>Object for a user preference setting</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/User/Setting/Lang.html">Bugzilla::User::Setting::Lang</a></th> <td>Object for a user preference setting for preferred language</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/User/Setting/Skin.html">Bugzilla::User::Setting::Skin</a></th> <td>Object for a user preference setting for skins</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/User/Setting/Timezone.html">Bugzilla::User::Setting::Timezone</a></th> <td>Object for a user preference setting for desired timezone</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/Util.html">Bugzilla::Util</a></th> <td>Generic utility functions for bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/Version.html">Bugzilla::Version</a></th> <td>Bugzilla product version class.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService.html">Bugzilla::WebService</a></th> <td>The Web Service interface to Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Bug.html">Bugzilla::WebService::Bug</a></th> <td>The API for creating, changing, and getting the details of bugs.</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Bugzilla.html">Bugzilla::WebService::Bugzilla</a></th> <td>Global functions for the webservice interface.</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Product.html">Bugzilla::WebService::Product</a></th> <td>The Product API</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/Server/JSONRPC.html">Bugzilla::WebService::Server::JSONRPC</a></th> <td>The JSON-RPC Interface to Bugzilla</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Server/XMLRPC.html">Bugzilla::WebService::Server::XMLRPC</a></th> <td>The XML-RPC Interface to Bugzilla</td> </tr> -<tr class="even"> +<tr class="odd"> <th><a href="./Bugzilla/WebService/User.html">Bugzilla::WebService::User</a></th> <td>The User Account and Login API</td> </tr> -<tr class="odd"> +<tr class="even"> <th><a href="./Bugzilla/WebService/Util.html">Bugzilla::WebService::Util</a></th> <td></td> </tr> +<tr class="odd"> + <th><a href="./Bugzilla/Whine/Query.html">Bugzilla::Whine::Query</a></th> + <td>A query object used by Bugzilla::Whine.</td> +</tr> <tr class="even"> <th><a href="./Bugzilla/Whine/Schedule.html">Bugzilla::Whine::Schedule</a></th> <td>A schedule object used by Bugzilla::Whine.</td> diff --git a/docs/en/html/attachments.html b/docs/en/html/attachments.html index c51076053..e4fa0aa00 100644 --- a/docs/en/html/attachments.html +++ b/docs/en/html/attachments.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/bug_page.html b/docs/en/html/bug_page.html index 3c04dc320..568a252a5 100644 --- a/docs/en/html/bug_page.html +++ b/docs/en/html/bug_page.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/bug_status_workflow.html b/docs/en/html/bug_status_workflow.html index 6bca72dac..f55ad6318 100644 --- a/docs/en/html/bug_status_workflow.html +++ b/docs/en/html/bug_status_workflow.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/bugreports.html b/docs/en/html/bugreports.html index b75686a9e..48f078fd3 100644 --- a/docs/en/html/bugreports.html +++ b/docs/en/html/bugreports.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/classifications.html b/docs/en/html/classifications.html index 16fb3759d..21cd9696c 100644 --- a/docs/en/html/classifications.html +++ b/docs/en/html/classifications.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/cmdline-bugmail.html b/docs/en/html/cmdline-bugmail.html index 666030c51..5f0eba46b 100644 --- a/docs/en/html/cmdline-bugmail.html +++ b/docs/en/html/cmdline-bugmail.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/cmdline.html b/docs/en/html/cmdline.html index f1a1e9d30..ac31e7062 100644 --- a/docs/en/html/cmdline.html +++ b/docs/en/html/cmdline.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/components.html b/docs/en/html/components.html index d89f4a978..c901a8461 100644 --- a/docs/en/html/components.html +++ b/docs/en/html/components.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/configuration.html b/docs/en/html/configuration.html index 0feb906ff..f828e09ee 100644 --- a/docs/en/html/configuration.html +++ b/docs/en/html/configuration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/conventions.html b/docs/en/html/conventions.html index 9e9c7ee27..de494bb9e 100644 --- a/docs/en/html/conventions.html +++ b/docs/en/html/conventions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/copyright.html b/docs/en/html/copyright.html index 26f6eaaf4..ab0e892cd 100644 --- a/docs/en/html/copyright.html +++ b/docs/en/html/copyright.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -81,7 +81,7 @@ NAME="copyright" >1.1. Copyright Information</A ></H1 ><P ->This document is copyright (c) 2000-2009 by the various +>This document is copyright (c) 2000-2010 by the various Bugzilla contributors who wrote it.</P ><A NAME="AEN26" diff --git a/docs/en/html/credits.html b/docs/en/html/credits.html index 11e714dc0..9adf83c97 100644 --- a/docs/en/html/credits.html +++ b/docs/en/html/credits.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/cust-change-permissions.html b/docs/en/html/cust-change-permissions.html index 20f5d7da2..15bb73456 100644 --- a/docs/en/html/cust-change-permissions.html +++ b/docs/en/html/cust-change-permissions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -15,8 +15,8 @@ REL="UP" TITLE="Customizing Bugzilla" HREF="customization.html"><LINK REL="PREVIOUS" -TITLE="The Bugzilla Extension Mechanism" -HREF="cust-hooks.html"><LINK +TITLE="Template Customization" +HREF="cust-templates.html"><LINK REL="NEXT" TITLE="Integrating Bugzilla with Third-Party Tools" HREF="integration.html"></HEAD @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -49,7 +49,7 @@ WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A -HREF="cust-hooks.html" +HREF="cust-templates.html" ACCESSKEY="P" >Prev</A ></TD @@ -311,7 +311,7 @@ WIDTH="33%" ALIGN="left" VALIGN="top" ><A -HREF="cust-hooks.html" +HREF="cust-templates.html" ACCESSKEY="P" >Prev</A ></TD @@ -339,7 +339,7 @@ ACCESSKEY="N" WIDTH="33%" ALIGN="left" VALIGN="top" ->The Bugzilla Extension Mechanism</TD +>Template Customization</TD ><TD WIDTH="34%" ALIGN="center" diff --git a/docs/en/html/cust-hooks.html b/docs/en/html/cust-hooks.html deleted file mode 100644 index 010b32858..000000000 --- a/docs/en/html/cust-hooks.html +++ /dev/null @@ -1,530 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<HTML -><HEAD -><TITLE ->The Bugzilla Extension Mechanism</TITLE -><META -NAME="GENERATOR" -CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK -REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 - Development - Release" -HREF="index.html"><LINK -REL="UP" -TITLE="Customizing Bugzilla" -HREF="customization.html"><LINK -REL="PREVIOUS" -TITLE="Template Customization" -HREF="cust-templates.html"><LINK -REL="NEXT" -TITLE="Customizing Who Can Change What" -HREF="cust-change-permissions.html"></HEAD -><BODY -CLASS="section" -BGCOLOR="#FFFFFF" -TEXT="#000000" -LINK="#0000FF" -VLINK="#840084" -ALINK="#0000FF" -><DIV -CLASS="NAVHEADER" -><TABLE -SUMMARY="Header navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TH -COLSPAN="3" -ALIGN="center" ->The Bugzilla Guide - 3.5.2 - Development - Release</TH -></TR -><TR -><TD -WIDTH="10%" -ALIGN="left" -VALIGN="bottom" -><A -HREF="cust-templates.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="80%" -ALIGN="center" -VALIGN="bottom" ->Chapter 6. Customizing Bugzilla</TD -><TD -WIDTH="10%" -ALIGN="right" -VALIGN="bottom" -><A -HREF="cust-change-permissions.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -></TABLE -><HR -ALIGN="LEFT" -WIDTH="100%"></DIV -><DIV -CLASS="section" -><H1 -CLASS="section" -><A -NAME="cust-hooks" ->6.3. The Bugzilla Extension Mechanism</A -></H1 -><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 -> Note that the below paths are inconsistent and confusing. They will - likely be changed in Bugzilla 4.0. - </P -></TD -></TR -></TABLE -></DIV -><P -> Extensions are a way for extensions to Bugzilla to insert code - into the standard Bugzilla templates and source files - without modifying these files themselves. The extension mechanism - defines a consistent API for extending the standard templates and source files - in a way that cleanly separates standard code from extension code. - Hooks reduce merge conflicts and make it easier to write extensions that work - across multiple versions of Bugzilla, making upgrading a Bugzilla installation - with installed extensions easier. Furthermore, they make it easy to install - and remove extensions as each extension is nothing more than a - simple directory structure. - </P -><P -> There are two main types of hooks: code hooks and template hooks. Code - hooks allow extensions to invoke code at specific points in various - source files, while template hooks allow extensions to add elements to - the Bugzilla user interface. - </P -><P -> A hook is just a named place in a standard source or template file - where extension source code or template files for that hook get processed. - Each extension has a corresponding directory in the Bugzilla directory - tree (<TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/extension_name</TT ->). Hooking - an extension source file or template to a hook is as simple as putting - the extension file into extension's template or code directory. - When Bugzilla processes the source file or template and reaches the hook, - it will process all extension files in the hook's directory. - The hooks themselves can be added into any source file or standard template - upon request by extension authors. - </P -><P -> To use hooks to extend Bugzilla, first make sure there is - a hook at the appropriate place within the source file or template you - want to extend. The exact appearance of a hook depends on if the hook - is a code hook or a template hook. - </P -><P -> Code hooks appear in Bugzilla source files as a single method call - in the format <TT -CLASS="literal" ->Bugzilla::Hook->process("<CODE -CLASS="varname" ->name</CODE ->");</TT ->. - For instance, <TT -CLASS="filename" ->enter_bug.cgi</TT -> may invoke the hook - "<CODE -CLASS="varname" ->enter_bug-entrydefaultvars</CODE ->". Thus, a source file at - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/EXTENSION_NAME/code/enter_bug-entrydefaultvars.pl</TT -> - will be automatically invoked when the code hook is reached. - </P -><P -> - Template hooks appear in the standard Bugzilla templates as a - single directive in the format - <TT -CLASS="literal" ->[% Hook.process("<CODE -CLASS="varname" ->name</CODE ->") %]</TT ->, - where <CODE -CLASS="varname" ->name</CODE -> is the unique name of the hook. - </P -><P -> If you aren't sure what you want to extend or just want to browse the - available hooks, either use your favorite multi-file search - tool (e.g. <B -CLASS="command" ->grep</B ->) to search the standard templates - for occurrences of <CODE -CLASS="methodname" ->Hook.process</CODE -> or the source - files for occurrences of <CODE -CLASS="methodname" ->Bugzilla::Hook::process</CODE ->. - </P -><P -> If there is no hook at the appropriate place within the Bugzilla - source file or template you want to extend, - <A -HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=User%20Interface" -TARGET="_top" ->file - a bug requesting one</A ->, specifying: - </P -><P -></P -><TABLE -BORDER="0" -><TBODY -><TR -><TD ->the source or template file for which you are - requesting a hook;</TD -></TR -><TR -><TD -> where in the file you would like the hook to be placed - (line number/position for latest version of the file in CVS - or description of location); - </TD -></TR -><TR -><TD ->the purpose of the hook;</TD -></TR -><TR -><TD ->a link to information about your extension, if any.</TD -></TR -></TBODY -></TABLE -><P -></P -><P -> The Bugzilla reviewers will promptly review each hook request, - name the hook, add it to the template or source file, and check - the new version of the template into CVS. - </P -><P -> You may optionally attach a patch to the bug which implements the hook - and check it in yourself after receiving approval from a Bugzilla - reviewer. The developers may suggest changes to the location of the - hook based on their analysis of your needs or so the hook can satisfy - the needs of multiple extensions, but the process of getting hooks - approved and checked in is not as stringent as the process for general - changes to Bugzilla, and any extension, whether released or still in - development, can have hooks added to meet their needs. - </P -><P -> After making sure the hook you need exists (or getting it added if not), - add your extension to the directory within the Bugzilla - extensions tree corresponding to the hook. - </P -><P -> That's it! Now, when the source file or template containing the hook - is processed, your extension file will be processed at the point - where the hook appears. - </P -><P -> For example, let's say you have an extension named Projman that adds - project management capabilities to Bugzilla. Projman has an - administration interface <TT -CLASS="filename" ->edit-projects.cgi</TT ->, - and you want to add a link to it into the navigation bar at the bottom - of every Bugzilla page for those users who are authorized - to administer projects. - </P -><P -> The navigation bar is generated by the template file - <TT -CLASS="filename" ->useful-links.html.tmpl</TT ->, which is located in - the <TT -CLASS="filename" ->global/</TT -> subdirectory on the standard Bugzilla - template path - <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/default/</TT ->. - Looking in <TT -CLASS="filename" ->useful-links.html.tmpl</TT ->, you find - the following hook at the end of the list of standard Bugzilla - administration links: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->... - [% ', <a href="editkeywords.cgi">keywords</a>' - IF user.in_group('editkeywords') %] - [% Hook.process("edit") %] -...</PRE -></FONT -></TD -></TR -></TABLE -><P -> The corresponding extension file for this hook is - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/projman/template/en/global/useful-links-edit.html.tmpl</TT ->. - You then create that template file and add the following constant: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->...[% ', <a href="edit-projects.cgi">projects</a>' IF user.in_group('projman_admins') %]</PRE -></FONT -></TD -></TR -></TABLE -><P -> Voila! The link now appears after the other administration links in the - navigation bar for users in the <TT -CLASS="literal" ->projman_admins</TT -> group. - </P -><P -> Now, let us say your extension adds a custom "project_manager" field - to enter_bug.cgi. You want to modify the CGI script to set the default - project manager to be productname@company.com. Looking at - <TT -CLASS="filename" ->enter_bug.cgi</TT ->, you see the enter_bug-entrydefaultvars - hook near the bottom of the file before the default form values are set. - The corresponding extension source file for this hook is located at - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/projman/code/enter_bug-entrydefaultvars.pl</TT ->. - You then create that file and add the following: - </P -><TABLE -BORDER="0" -BGCOLOR="#E0E0E0" -WIDTH="100%" -><TR -><TD -><FONT -COLOR="#000000" -><PRE -CLASS="programlisting" ->$default{'project_manager'} = $product.'@company.com';</PRE -></FONT -></TD -></TR -></TABLE -><P -> This code will be invoked whenever enter_bug.cgi is executed. - Assuming that the rest of the customization was completed (e.g. the - custom field was added to the enter_bug template and the required hooks - were used in process_bug.cgi), the new field will now have this - default value. - </P -><P -> Notes: - </P -><P -></P -><UL -><LI -><P -> If your extension includes entirely new templates in addition to - extensions of standard templates, it should store those new - templates in its - <TT -CLASS="filename" ->BUGZILLA_ROOT/extensions/template/en/</TT -> - directory. Extension template directories, like the - <TT -CLASS="filename" ->default/</TT -> and <TT -CLASS="filename" ->custom/</TT -> - directories, are part of the template search path, so putting templates - there enables them to be found by the template processor. - </P -><P -> The template processor looks for templates first in the - <TT -CLASS="filename" ->custom/</TT -> directory (i.e. templates added by the - specific installation), then in the <TT -CLASS="filename" ->extensions/</TT -> - directory (i.e. templates added by extensions), and finally in the - <TT -CLASS="filename" ->default/</TT -> directory (i.e. the standard Bugzilla - templates). Thus, installation-specific templates override both - default and extension templates. - </P -></LI -><LI -><P -> If you are looking to customize Bugzilla, you can also take advantage - of template hooks. To do so, create a directory in - <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/custom/hook/</TT -> - that corresponds to the hook you wish to use, then place your - customization templates into those directories. For example, - if you wanted to use the hook "end" in - <TT -CLASS="filename" ->global/useful-links.html.tmpl</TT ->, you would - create the directory <TT -CLASS="filename" ->BUGZILLA_ROOT/template/en/custom/hook/ - global/useful-links.html.tmpl/end/</TT -> and add your customization - template to this directory. - </P -><P -> Obviously this method of customizing Bugzilla only lets you add code - to the standard source files and templates; you cannot change the - existing code. Nevertheless, for those customizations that only add - code, this method can reduce conflicts when merging changes, - making upgrading your customized Bugzilla installation easier. - </P -></LI -></UL -></DIV -><DIV -CLASS="NAVFOOTER" -><HR -ALIGN="LEFT" -WIDTH="100%"><TABLE -SUMMARY="Footer navigation table" -WIDTH="100%" -BORDER="0" -CELLPADDING="0" -CELLSPACING="0" -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" -><A -HREF="cust-templates.html" -ACCESSKEY="P" ->Prev</A -></TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="index.html" -ACCESSKEY="H" ->Home</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" -><A -HREF="cust-change-permissions.html" -ACCESSKEY="N" ->Next</A -></TD -></TR -><TR -><TD -WIDTH="33%" -ALIGN="left" -VALIGN="top" ->Template Customization</TD -><TD -WIDTH="34%" -ALIGN="center" -VALIGN="top" -><A -HREF="customization.html" -ACCESSKEY="U" ->Up</A -></TD -><TD -WIDTH="33%" -ALIGN="right" -VALIGN="top" ->Customizing Who Can Change What</TD -></TR -></TABLE -></DIV -></BODY -></HTML -> \ No newline at end of file diff --git a/docs/en/html/cust-skins.html b/docs/en/html/cust-skins.html index ecf9e7fa5..3067f20f9 100644 --- a/docs/en/html/cust-skins.html +++ b/docs/en/html/cust-skins.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -15,8 +15,8 @@ REL="UP" TITLE="Customizing Bugzilla" HREF="customization.html"><LINK REL="PREVIOUS" -TITLE="Customizing Bugzilla" -HREF="customization.html"><LINK +TITLE="Bugzilla Extensions" +HREF="extensions.html"><LINK REL="NEXT" TITLE="Template Customization" HREF="cust-templates.html"></HEAD @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -49,7 +49,7 @@ WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A -HREF="customization.html" +HREF="extensions.html" ACCESSKEY="P" >Prev</A ></TD @@ -78,7 +78,7 @@ CLASS="section" CLASS="section" ><A NAME="cust-skins" ->6.1. Custom Skins</A +>6.2. Custom Skins</A ></H1 ><P > Bugzilla allows you to have multiple skins. These are custom CSS and possibly @@ -139,7 +139,7 @@ WIDTH="33%" ALIGN="left" VALIGN="top" ><A -HREF="customization.html" +HREF="extensions.html" ACCESSKEY="P" >Prev</A ></TD @@ -167,7 +167,7 @@ ACCESSKEY="N" WIDTH="33%" ALIGN="left" VALIGN="top" ->Customizing Bugzilla</TD +>Bugzilla Extensions</TD ><TD WIDTH="34%" ALIGN="center" diff --git a/docs/en/html/cust-templates.html b/docs/en/html/cust-templates.html index 7f0bea4ef..42f957b76 100644 --- a/docs/en/html/cust-templates.html +++ b/docs/en/html/cust-templates.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -18,8 +18,8 @@ REL="PREVIOUS" TITLE="Custom Skins" HREF="cust-skins.html"><LINK REL="NEXT" -TITLE="The Bugzilla Extension Mechanism" -HREF="cust-hooks.html"></HEAD +TITLE="Customizing Who Can Change What" +HREF="cust-change-permissions.html"></HEAD ><BODY CLASS="section" BGCOLOR="#FFFFFF" @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -63,7 +63,7 @@ WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A -HREF="cust-hooks.html" +HREF="cust-change-permissions.html" ACCESSKEY="N" >Next</A ></TD @@ -78,7 +78,7 @@ CLASS="section" CLASS="section" ><A NAME="cust-templates" ->6.2. Template Customization</A +>6.3. Template Customization</A ></H1 ><P > Administrators can configure the look and feel of Bugzilla without @@ -91,7 +91,7 @@ NAME="cust-templates" determined by the user's browser. More information is available in <A HREF="cust-templates.html#template-http-accept" ->Section 6.2.6</A +>Section 6.3.6</A >. </P ><DIV @@ -100,7 +100,7 @@ CLASS="section" CLASS="section" ><A NAME="template-directory" ->6.2.1. Template Directory Structure</A +>6.3.1. Template Directory Structure</A ></H2 ><P > The template directory structure starts with top level directory @@ -172,7 +172,7 @@ CLASS="section" CLASS="section" ><A NAME="template-method" ->6.2.2. Choosing a Customization Method</A +>6.3.2. Choosing a Customization Method</A ></H2 ><P > If you want to edit Bugzilla's templates, the first decision @@ -372,7 +372,7 @@ CLASS="section" CLASS="section" ><A NAME="template-edit" ->6.2.3. How To Edit Templates</A +>6.3.3. How To Edit Templates</A ></H2 ><DIV CLASS="note" @@ -460,7 +460,7 @@ CLASS="section" CLASS="section" ><A NAME="template-formats" ->6.2.4. Template Formats and Types</A +>6.3.4. Template Formats and Types</A ></H2 ><P > Some CGI's have the ability to use more than one template. For example, @@ -568,7 +568,7 @@ CLASS="section" CLASS="section" ><A NAME="template-specific" ->6.2.5. Particular Templates</A +>6.3.5. Particular Templates</A ></H2 ><P > There are a few templates you may be particularly interested in @@ -836,7 +836,7 @@ CLASS="section" CLASS="section" ><A NAME="template-http-accept" ->6.2.6. Configuring Bugzilla to Detect the User's Language</A +>6.3.6. Configuring Bugzilla to Detect the User's Language</A ></H2 ><P >Bugzilla honours the user's Accept: HTTP header. You can install @@ -885,7 +885,7 @@ WIDTH="33%" ALIGN="right" VALIGN="top" ><A -HREF="cust-hooks.html" +HREF="cust-change-permissions.html" ACCESSKEY="N" >Next</A ></TD @@ -909,7 +909,7 @@ ACCESSKEY="U" WIDTH="33%" ALIGN="right" VALIGN="top" ->The Bugzilla Extension Mechanism</TD +>Customizing Who Can Change What</TD ></TR ></TABLE ></DIV diff --git a/docs/en/html/custom-fields.html b/docs/en/html/custom-fields.html index c256dcfa0..ddfdb6da6 100644 --- a/docs/en/html/custom-fields.html +++ b/docs/en/html/custom-fields.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/customization.html b/docs/en/html/customization.html index f745634fd..b57c60023 100644 --- a/docs/en/html/customization.html +++ b/docs/en/html/customization.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -15,8 +15,8 @@ REL="PREVIOUS" TITLE="Whining" HREF="whining.html"><LINK REL="NEXT" -TITLE="Custom Skins" -HREF="cust-skins.html"></HEAD +TITLE="Bugzilla Extensions" +HREF="extensions.html"></HEAD ><BODY CLASS="chapter" BGCOLOR="#FFFFFF" @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -60,7 +60,7 @@ WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A -HREF="cust-skins.html" +HREF="extensions.html" ACCESSKEY="N" >Next</A ></TD @@ -85,54 +85,54 @@ CLASS="TOC" ></DT ><DT >6.1. <A +HREF="extensions.html" +>Bugzilla Extensions</A +></DT +><DT +>6.2. <A HREF="cust-skins.html" >Custom Skins</A ></DT ><DT ->6.2. <A +>6.3. <A HREF="cust-templates.html" >Template Customization</A ></DT ><DD ><DL ><DT ->6.2.1. <A +>6.3.1. <A HREF="cust-templates.html#template-directory" >Template Directory Structure</A ></DT ><DT ->6.2.2. <A +>6.3.2. <A HREF="cust-templates.html#template-method" >Choosing a Customization Method</A ></DT ><DT ->6.2.3. <A +>6.3.3. <A HREF="cust-templates.html#template-edit" >How To Edit Templates</A ></DT ><DT ->6.2.4. <A +>6.3.4. <A HREF="cust-templates.html#template-formats" >Template Formats and Types</A ></DT ><DT ->6.2.5. <A +>6.3.5. <A HREF="cust-templates.html#template-specific" >Particular Templates</A ></DT ><DT ->6.2.6. <A +>6.3.6. <A HREF="cust-templates.html#template-http-accept" >Configuring Bugzilla to Detect the User's Language</A ></DT ></DL ></DD ><DT ->6.3. <A -HREF="cust-hooks.html" ->The Bugzilla Extension Mechanism</A -></DT -><DT >6.4. <A HREF="cust-change-permissions.html" >Customizing Who Can Change What</A @@ -179,7 +179,7 @@ WIDTH="33%" ALIGN="right" VALIGN="top" ><A -HREF="cust-skins.html" +HREF="extensions.html" ACCESSKEY="N" >Next</A ></TD @@ -199,7 +199,7 @@ VALIGN="top" WIDTH="33%" ALIGN="right" VALIGN="top" ->Custom Skins</TD +>Bugzilla Extensions</TD ></TR ></TABLE ></DIV diff --git a/docs/en/html/disclaimer.html b/docs/en/html/disclaimer.html index 2a77322e1..b50010d69 100644 --- a/docs/en/html/disclaimer.html +++ b/docs/en/html/disclaimer.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/edit-values.html b/docs/en/html/edit-values.html index 7a357ecd1..66a079686 100644 --- a/docs/en/html/edit-values.html +++ b/docs/en/html/edit-values.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/extensions.html b/docs/en/html/extensions.html new file mode 100644 index 000000000..413649a5b --- /dev/null +++ b/docs/en/html/extensions.html @@ -0,0 +1,163 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML +><HEAD +><TITLE +>Bugzilla Extensions</TITLE +><META +NAME="GENERATOR" +CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK +REL="HOME" +TITLE="The Bugzilla Guide - 3.5.3 + Development + Release" +HREF="index.html"><LINK +REL="UP" +TITLE="Customizing Bugzilla" +HREF="customization.html"><LINK +REL="PREVIOUS" +TITLE="Customizing Bugzilla" +HREF="customization.html"><LINK +REL="NEXT" +TITLE="Custom Skins" +HREF="cust-skins.html"></HEAD +><BODY +CLASS="section" +BGCOLOR="#FFFFFF" +TEXT="#000000" +LINK="#0000FF" +VLINK="#840084" +ALINK="#0000FF" +><DIV +CLASS="NAVHEADER" +><TABLE +SUMMARY="Header navigation table" +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TH +COLSPAN="3" +ALIGN="center" +>The Bugzilla Guide - 3.5.3 + Development + Release</TH +></TR +><TR +><TD +WIDTH="10%" +ALIGN="left" +VALIGN="bottom" +><A +HREF="customization.html" +ACCESSKEY="P" +>Prev</A +></TD +><TD +WIDTH="80%" +ALIGN="center" +VALIGN="bottom" +>Chapter 6. Customizing Bugzilla</TD +><TD +WIDTH="10%" +ALIGN="right" +VALIGN="bottom" +><A +HREF="cust-skins.html" +ACCESSKEY="N" +>Next</A +></TD +></TR +></TABLE +><HR +ALIGN="LEFT" +WIDTH="100%"></DIV +><DIV +CLASS="section" +><H1 +CLASS="section" +><A +NAME="extensions" +>6.1. Bugzilla Extensions</A +></H1 +><P +> One of the best ways to customize Bugzilla is by writing a Bugzilla + Extension. Bugzilla Extensions let you modify both the code and + UI of Bugzilla in a way that can be distributed to other Bugzilla + users and ported forward to future versions of Bugzilla with minimal + effort. + </P +><P +> See the <A +HREF="api/Bugzilla/Extension.html" +TARGET="_top" +>Bugzilla Extension + documentation</A +> for information on how to write an Extension. + </P +></DIV +><DIV +CLASS="NAVFOOTER" +><HR +ALIGN="LEFT" +WIDTH="100%"><TABLE +SUMMARY="Footer navigation table" +WIDTH="100%" +BORDER="0" +CELLPADDING="0" +CELLSPACING="0" +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +><A +HREF="customization.html" +ACCESSKEY="P" +>Prev</A +></TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="index.html" +ACCESSKEY="H" +>Home</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +><A +HREF="cust-skins.html" +ACCESSKEY="N" +>Next</A +></TD +></TR +><TR +><TD +WIDTH="33%" +ALIGN="left" +VALIGN="top" +>Customizing Bugzilla</TD +><TD +WIDTH="34%" +ALIGN="center" +VALIGN="top" +><A +HREF="customization.html" +ACCESSKEY="U" +>Up</A +></TD +><TD +WIDTH="33%" +ALIGN="right" +VALIGN="top" +>Custom Skins</TD +></TR +></TABLE +></DIV +></BODY +></HTML +> \ No newline at end of file diff --git a/docs/en/html/extraconfig.html b/docs/en/html/extraconfig.html index df75cb66a..232184d6f 100644 --- a/docs/en/html/extraconfig.html +++ b/docs/en/html/extraconfig.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/flags-overview.html b/docs/en/html/flags-overview.html index faf24bbf1..456b86d26 100644 --- a/docs/en/html/flags-overview.html +++ b/docs/en/html/flags-overview.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/flags.html b/docs/en/html/flags.html index 1ef33ed02..d510a943e 100644 --- a/docs/en/html/flags.html +++ b/docs/en/html/flags.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/general-advice.html b/docs/en/html/general-advice.html index aebdd29a9..8253b6d8d 100644 --- a/docs/en/html/general-advice.html +++ b/docs/en/html/general-advice.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-0.html b/docs/en/html/gfdl-0.html index 127db4f0a..42be3e53d 100644 --- a/docs/en/html/gfdl-0.html +++ b/docs/en/html/gfdl-0.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-1.html b/docs/en/html/gfdl-1.html index 2976579d1..30793962a 100644 --- a/docs/en/html/gfdl-1.html +++ b/docs/en/html/gfdl-1.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-10.html b/docs/en/html/gfdl-10.html index 9fc78e6e7..076da1d41 100644 --- a/docs/en/html/gfdl-10.html +++ b/docs/en/html/gfdl-10.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-2.html b/docs/en/html/gfdl-2.html index b24c43c2a..cc0b7a4b5 100644 --- a/docs/en/html/gfdl-2.html +++ b/docs/en/html/gfdl-2.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-3.html b/docs/en/html/gfdl-3.html index d70a87edb..61f671193 100644 --- a/docs/en/html/gfdl-3.html +++ b/docs/en/html/gfdl-3.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-4.html b/docs/en/html/gfdl-4.html index 7f14b6f93..0e968b07a 100644 --- a/docs/en/html/gfdl-4.html +++ b/docs/en/html/gfdl-4.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-5.html b/docs/en/html/gfdl-5.html index e9f258768..35b3bbefc 100644 --- a/docs/en/html/gfdl-5.html +++ b/docs/en/html/gfdl-5.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-6.html b/docs/en/html/gfdl-6.html index 1402b85ee..5b797012b 100644 --- a/docs/en/html/gfdl-6.html +++ b/docs/en/html/gfdl-6.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-7.html b/docs/en/html/gfdl-7.html index 56758e89d..e302910a1 100644 --- a/docs/en/html/gfdl-7.html +++ b/docs/en/html/gfdl-7.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-8.html b/docs/en/html/gfdl-8.html index 973e71d20..a0ded1371 100644 --- a/docs/en/html/gfdl-8.html +++ b/docs/en/html/gfdl-8.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-9.html b/docs/en/html/gfdl-9.html index 6b372af8e..c9da47ce6 100644 --- a/docs/en/html/gfdl-9.html +++ b/docs/en/html/gfdl-9.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/gfdl-howto.html b/docs/en/html/gfdl-howto.html index 85de6b5fc..9309c4536 100644 --- a/docs/en/html/gfdl-howto.html +++ b/docs/en/html/gfdl-howto.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -85,7 +85,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="AEN3463" +NAME="AEN3399" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" diff --git a/docs/en/html/gfdl.html b/docs/en/html/gfdl.html index c498f26dc..c49494e8c 100644 --- a/docs/en/html/gfdl.html +++ b/docs/en/html/gfdl.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -148,7 +148,7 @@ HREF="gfdl-howto.html" ><P >Version 1.1, March 2000</P ><A -NAME="AEN3373" +NAME="AEN3309" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" diff --git a/docs/en/html/glossary.html b/docs/en/html/glossary.html index 3a73e6c08..467ff9678 100644 --- a/docs/en/html/glossary.html +++ b/docs/en/html/glossary.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -33,7 +33,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -74,7 +74,7 @@ CLASS="glossdiv" ><H1 CLASS="glossdiv" ><A -NAME="AEN3468" +NAME="AEN3404" >0-9, high ascii</A ></H1 ><DL @@ -980,7 +980,7 @@ NAME="gloss-zarro" Terry had the following to say: </P ><A -NAME="AEN3712" +NAME="AEN3648" ></A ><TABLE BORDER="0" diff --git a/docs/en/html/groups.html b/docs/en/html/groups.html index 24f7f9ff7..a619b41f4 100644 --- a/docs/en/html/groups.html +++ b/docs/en/html/groups.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/hintsandtips.html b/docs/en/html/hintsandtips.html index 7eb4f49ca..1a5191a4a 100644 --- a/docs/en/html/hintsandtips.html +++ b/docs/en/html/hintsandtips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/index.html b/docs/en/html/index.html index 6ec6d0312..133380cd5 100644 --- a/docs/en/html/index.html +++ b/docs/en/html/index.html @@ -2,7 +2,7 @@ <HTML ><HEAD ><TITLE ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TITLE ><META @@ -47,7 +47,7 @@ CLASS="TITLEPAGE" CLASS="title" ><A NAME="AEN2" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</A ></H1 @@ -56,7 +56,7 @@ CLASS="corpauthor" >The Bugzilla Team</H3 ><P CLASS="pubdate" ->2009-11-18<BR></P +>2010-01-31<BR></P ><DIV ><DIV CLASS="abstract" @@ -367,18 +367,18 @@ HREF="customization.html" ><DL ><DT >6.1. <A -HREF="cust-skins.html" ->Custom Skins</A +HREF="extensions.html" +>Bugzilla Extensions</A ></DT ><DT >6.2. <A -HREF="cust-templates.html" ->Template Customization</A +HREF="cust-skins.html" +>Custom Skins</A ></DT ><DT >6.3. <A -HREF="cust-hooks.html" ->The Bugzilla Extension Mechanism</A +HREF="cust-templates.html" +>Template Customization</A ></DT ><DT >6.4. <A diff --git a/docs/en/html/install-perlmodules-manual.html b/docs/en/html/install-perlmodules-manual.html index a514d8f15..ae69c103d 100644 --- a/docs/en/html/install-perlmodules-manual.html +++ b/docs/en/html/install-perlmodules-manual.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/installation.html b/docs/en/html/installation.html index 5135292a0..d64fabda4 100644 --- a/docs/en/html/installation.html +++ b/docs/en/html/installation.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -821,7 +821,7 @@ HREF="installation.html#install-modules-gd" HREF="installation.html#install-modules-chart-lines" >Chart::Lines</A > - (1.0) for bug charting + (2.1) for bug charting </P ></LI ><LI @@ -1055,7 +1055,7 @@ CLASS="section" CLASS="section" ><A NAME="install-modules-chart-lines" ->2.1.5.4. Chart::Lines (1.0)</A +>2.1.5.4. Chart::Lines (2.1)</A ></H3 ><P >The Chart::Lines module is only required if you want graphical diff --git a/docs/en/html/installing-bugzilla.html b/docs/en/html/installing-bugzilla.html index 328124882..a05ce3787 100644 --- a/docs/en/html/installing-bugzilla.html +++ b/docs/en/html/installing-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/integration.html b/docs/en/html/integration.html index 768e61e4d..5fe0a0f30 100644 --- a/docs/en/html/integration.html +++ b/docs/en/html/integration.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -82,8 +82,8 @@ NAME="integration" ></H1 ><P > Many utilities and applications can integrate with Bugzilla, - either on the client- or server-side. None of them is maintained - by the Bugzilla community, nor are they being tested during our + either on the client- or server-side. None of them are maintained + by the Bugzilla community, nor are they tested during our QA tests, so use them at your own risk. They are listed at <A HREF="https://wiki.mozilla.org/Bugzilla:Addons" diff --git a/docs/en/html/keywords.html b/docs/en/html/keywords.html index db95c4b1f..b6977e551 100644 --- a/docs/en/html/keywords.html +++ b/docs/en/html/keywords.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/lifecycle.html b/docs/en/html/lifecycle.html index ff123a6b8..3d5f32ecf 100644 --- a/docs/en/html/lifecycle.html +++ b/docs/en/html/lifecycle.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/milestones.html b/docs/en/html/milestones.html index 0febea16a..cf627dcd6 100644 --- a/docs/en/html/milestones.html +++ b/docs/en/html/milestones.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-download.html b/docs/en/html/modules-manual-download.html index f431f8c07..c10dea2c7 100644 --- a/docs/en/html/modules-manual-download.html +++ b/docs/en/html/modules-manual-download.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-instructions.html b/docs/en/html/modules-manual-instructions.html index aa81b0e75..4c85bcb8c 100644 --- a/docs/en/html/modules-manual-instructions.html +++ b/docs/en/html/modules-manual-instructions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/modules-manual-optional.html b/docs/en/html/modules-manual-optional.html index 54167be87..f3bd87548 100644 --- a/docs/en/html/modules-manual-optional.html +++ b/docs/en/html/modules-manual-optional.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/multiple-bz-dbs.html b/docs/en/html/multiple-bz-dbs.html index c1b6ff64e..0c3848446 100644 --- a/docs/en/html/multiple-bz-dbs.html +++ b/docs/en/html/multiple-bz-dbs.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/myaccount.html b/docs/en/html/myaccount.html index 296a51b69..78183ec9b 100644 --- a/docs/en/html/myaccount.html +++ b/docs/en/html/myaccount.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/newversions.html b/docs/en/html/newversions.html index eb2a1b790..a0b308f3a 100644 --- a/docs/en/html/newversions.html +++ b/docs/en/html/newversions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -81,7 +81,7 @@ NAME="newversions" >1.3. New Versions</A ></H1 ><P -> This is the 3.5.2 version of The Bugzilla Guide. It is so named +> This is the 3.5.3 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. diff --git a/docs/en/html/nonroot.html b/docs/en/html/nonroot.html index 35035ea0c..1288ce95b 100644 --- a/docs/en/html/nonroot.html +++ b/docs/en/html/nonroot.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/os-specific.html b/docs/en/html/os-specific.html index 15933690c..0840655ca 100644 --- a/docs/en/html/os-specific.html +++ b/docs/en/html/os-specific.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/parameters.html b/docs/en/html/parameters.html index 0d66dd3d9..3878cff71 100644 --- a/docs/en/html/parameters.html +++ b/docs/en/html/parameters.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/paranoid-security.html b/docs/en/html/paranoid-security.html index b1eb9c9fe..fc545244d 100644 --- a/docs/en/html/paranoid-security.html +++ b/docs/en/html/paranoid-security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/patches.html b/docs/en/html/patches.html index 8baabac51..9375d07ba 100644 --- a/docs/en/html/patches.html +++ b/docs/en/html/patches.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/products.html b/docs/en/html/products.html index a8d800701..d6dc9499d 100644 --- a/docs/en/html/products.html +++ b/docs/en/html/products.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/query.html b/docs/en/html/query.html index 38a3fae4f..9d50a28e5 100644 --- a/docs/en/html/query.html +++ b/docs/en/html/query.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/quips.html b/docs/en/html/quips.html index cb463e37a..29def59f1 100644 --- a/docs/en/html/quips.html +++ b/docs/en/html/quips.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/reporting.html b/docs/en/html/reporting.html index 12c38d10e..d16a84844 100644 --- a/docs/en/html/reporting.html +++ b/docs/en/html/reporting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/sanitycheck.html b/docs/en/html/sanitycheck.html index e12f29fcd..d247dd0f3 100644 --- a/docs/en/html/sanitycheck.html +++ b/docs/en/html/sanitycheck.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/security-bugzilla.html b/docs/en/html/security-bugzilla.html index 82edfe75a..b2d24af6b 100644 --- a/docs/en/html/security-bugzilla.html +++ b/docs/en/html/security-bugzilla.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/security-os.html b/docs/en/html/security-os.html index 5f2ee4d6c..fb3b58b1f 100644 --- a/docs/en/html/security-os.html +++ b/docs/en/html/security-os.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/security-webserver.html b/docs/en/html/security-webserver.html index 9160cc123..ff7b6cb83 100644 --- a/docs/en/html/security-webserver.html +++ b/docs/en/html/security-webserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/security.html b/docs/en/html/security.html index 20266bbf3..ab7d838cb 100644 --- a/docs/en/html/security.html +++ b/docs/en/html/security.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/timetracking.html b/docs/en/html/timetracking.html index de9d48f8a..c33005e4b 100644 --- a/docs/en/html/timetracking.html +++ b/docs/en/html/timetracking.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/trbl-dbdsponge.html b/docs/en/html/trbl-dbdsponge.html index 58817b962..5355b7855 100644 --- a/docs/en/html/trbl-dbdsponge.html +++ b/docs/en/html/trbl-dbdsponge.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/trbl-index.html b/docs/en/html/trbl-index.html index 6af388fea..22124561d 100644 --- a/docs/en/html/trbl-index.html +++ b/docs/en/html/trbl-index.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -42,7 +42,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/trbl-passwd-encryption.html b/docs/en/html/trbl-passwd-encryption.html index 0ea646c93..cafed523c 100644 --- a/docs/en/html/trbl-passwd-encryption.html +++ b/docs/en/html/trbl-passwd-encryption.html @@ -9,7 +9,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -41,7 +41,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/trbl-perlmodule.html b/docs/en/html/trbl-perlmodule.html index 827c3f8d9..26701c829 100644 --- a/docs/en/html/trbl-perlmodule.html +++ b/docs/en/html/trbl-perlmodule.html @@ -8,7 +8,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/trbl-relogin-everyone.html b/docs/en/html/trbl-relogin-everyone.html index c4eeb93df..e2c403f69 100644 --- a/docs/en/html/trbl-relogin-everyone.html +++ b/docs/en/html/trbl-relogin-everyone.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -122,7 +122,7 @@ NAME="trbl-relogin-everyone-share" >Example A-1. Examples of urlbase/cookiepath pairs for sharing login cookies</B ></P ><A -NAME="AEN3208" +NAME="AEN3144" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" @@ -163,7 +163,7 @@ NAME="trbl-relogin-everyone-restrict" >Example A-2. Examples of urlbase/cookiepath pairs to restrict the login cookie</B ></P ><A -NAME="AEN3215" +NAME="AEN3151" ></A ><BLOCKQUOTE CLASS="BLOCKQUOTE" diff --git a/docs/en/html/trbl-testserver.html b/docs/en/html/trbl-testserver.html index 2f7776221..6075b0dcb 100644 --- a/docs/en/html/trbl-testserver.html +++ b/docs/en/html/trbl-testserver.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -40,7 +40,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/troubleshooting.html b/docs/en/html/troubleshooting.html index af3fd41dc..74968305a 100644 --- a/docs/en/html/troubleshooting.html +++ b/docs/en/html/troubleshooting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/upgrade.html b/docs/en/html/upgrade.html index b04c9131f..4b8961cbb 100644 --- a/docs/en/html/upgrade.html +++ b/docs/en/html/upgrade.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR @@ -326,7 +326,7 @@ NAME="upgrade-modified" degree and methods of local customization can be found in <A HREF="cust-templates.html#template-method" ->Section 6.2.2</A +>Section 6.3.2</A >. </P ><P diff --git a/docs/en/html/useradmin.html b/docs/en/html/useradmin.html index 40d484437..969bc9d10 100644 --- a/docs/en/html/useradmin.html +++ b/docs/en/html/useradmin.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/userpreferences.html b/docs/en/html/userpreferences.html index 731e115cd..2d5796e62 100644 --- a/docs/en/html/userpreferences.html +++ b/docs/en/html/userpreferences.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/using-intro.html b/docs/en/html/using-intro.html index ca83b89ef..f943d3639 100644 --- a/docs/en/html/using-intro.html +++ b/docs/en/html/using-intro.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/using.html b/docs/en/html/using.html index e8b792ec3..10c99632e 100644 --- a/docs/en/html/using.html +++ b/docs/en/html/using.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -36,7 +36,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/versions.html b/docs/en/html/versions.html index d5034aec6..a589c75fc 100644 --- a/docs/en/html/versions.html +++ b/docs/en/html/versions.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/voting.html b/docs/en/html/voting.html index 510976e89..0b61a6953 100644 --- a/docs/en/html/voting.html +++ b/docs/en/html/voting.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/html/whining.html b/docs/en/html/whining.html index 2bd1e6ebe..6e055874d 100644 --- a/docs/en/html/whining.html +++ b/docs/en/html/whining.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" -TITLE="The Bugzilla Guide - 3.5.2 +TITLE="The Bugzilla Guide - 3.5.3 Development Release" HREF="index.html"><LINK @@ -39,7 +39,7 @@ CELLSPACING="0" ><TH COLSPAN="3" ALIGN="center" ->The Bugzilla Guide - 3.5.2 +>The Bugzilla Guide - 3.5.3 Development Release</TH ></TR diff --git a/docs/en/images/CVS/Entries b/docs/en/images/CVS/Entries index 38d360e8c..3a657e439 100644 --- a/docs/en/images/CVS/Entries +++ b/docs/en/images/CVS/Entries @@ -1,7 +1,7 @@ -/bzLifecycle.png/1.4/Fri Apr 4 06:48:16 2008/-kb/TBUGZILLA-3_5_2 -/bzLifecycle.xml/1.3/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_2 -/caution.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 -/note.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 -/tip.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 -/warning.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/bzLifecycle.png/1.4/Fri Apr 4 06:48:16 2008/-kb/TBUGZILLA-3_5_3 +/bzLifecycle.xml/1.3/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_3 +/caution.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 +/note.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 +/tip.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 +/warning.gif/1.2/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 D/callouts//// diff --git a/docs/en/images/CVS/Tag b/docs/en/images/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/en/images/CVS/Tag +++ b/docs/en/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/en/images/callouts/CVS/Entries b/docs/en/images/callouts/CVS/Entries index e6d1e34cf..b5a78e50c 100644 --- a/docs/en/images/callouts/CVS/Entries +++ b/docs/en/images/callouts/CVS/Entries @@ -1,4 +1,4 @@ -/1.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 -/2.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 -/3.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_2 +/1.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 +/2.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 +/3.gif/1.1/Fri Apr 4 06:48:17 2008/-kb/TBUGZILLA-3_5_3 D diff --git a/docs/en/images/callouts/CVS/Tag b/docs/en/images/callouts/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/en/images/callouts/CVS/Tag +++ b/docs/en/images/callouts/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/en/pdf/Bugzilla-Guide.pdf b/docs/en/pdf/Bugzilla-Guide.pdf index 64f9edbf1..c27a48f61 100644 --- a/docs/en/pdf/Bugzilla-Guide.pdf +++ b/docs/en/pdf/Bugzilla-Guide.pdf @@ -3,7 +3,7 @@ << /S /GoTo /D (1.0) >> endobj 4 0 obj -(The Bugzilla Guide 3.5.2 Development Release) +(The Bugzilla Guide 3.5.3 Development Release) endobj 5 0 obj << /S /GoTo /D (2.0) >> @@ -135,7 +135,7 @@ endobj << /S /GoTo /D (5.6.5.7.3) >> endobj 92 0 obj -(2.1.5.4. Chart::Lines \(1.0\)) +(2.1.5.4. Chart::Lines \(2.1\)) endobj 93 0 obj << /S /GoTo /D (5.6.5.8.3) >> @@ -1371,55 +1371,55 @@ endobj << /S /GoTo /D (9.45.1) >> endobj 916 0 obj -(6.1. Custom Skins) +(6.1. Bugzilla Extensions) endobj 917 0 obj << /S /GoTo /D (9.46.1) >> endobj 920 0 obj -(6.2. Template Customization) +(6.2. Custom Skins) endobj 921 0 obj -<< /S /GoTo /D (9.46.94.2) >> +<< /S /GoTo /D (9.47.1) >> endobj 924 0 obj -(6.2.1. Template Directory Structure) +(6.3. Template Customization) endobj 925 0 obj -<< /S /GoTo /D (9.46.95.2) >> +<< /S /GoTo /D (9.47.94.2) >> endobj 928 0 obj -(6.2.2. Choosing a Customization Method) +(6.3.1. Template Directory Structure) endobj 929 0 obj -<< /S /GoTo /D (9.46.96.2) >> +<< /S /GoTo /D (9.47.95.2) >> endobj 932 0 obj -(6.2.3. How To Edit Templates) +(6.3.2. Choosing a Customization Method) endobj 933 0 obj -<< /S /GoTo /D (9.46.97.2) >> +<< /S /GoTo /D (9.47.96.2) >> endobj 936 0 obj -(6.2.4. Template Formats and Types) +(6.3.3. How To Edit Templates) endobj 937 0 obj -<< /S /GoTo /D (9.46.98.2) >> +<< /S /GoTo /D (9.47.97.2) >> endobj 940 0 obj -(6.2.5. Particular Templates) +(6.3.4. Template Formats and Types) endobj 941 0 obj -<< /S /GoTo /D (9.46.99.2) >> +<< /S /GoTo /D (9.47.98.2) >> endobj 944 0 obj -(6.2.6. Configuring Bugzilla to Detect the User's Language) +(6.3.5. Particular Templates) endobj 945 0 obj -<< /S /GoTo /D (9.47.1) >> +<< /S /GoTo /D (9.47.99.2) >> endobj 948 0 obj -(6.3. The Bugzilla Extension Mechanism) +(6.3.6. Configuring Bugzilla to Detect the User's Language) endobj 949 0 obj << /S /GoTo /D (9.48.1) >> @@ -1863,12 +1863,12 @@ endobj << /S /GoTo /D [1242 0 R /Fit ] >> endobj 1244 0 obj << -/Length 217 +/Length 216 /Filter /FlateDecode >> stream -xڍP�N1��+<� 1���Z*uD�É�R�*A;���B�ó������C���*pB��26���4�H|�B���F�b���4Y����GM�_A+ -j-23��S��JgXc�:�/�a��ks:����P��u]:��\���X���]��q5W��?����eRܢ�"��)��l%���\��_yrl[�qrj����Kw>b���_��Uendstream +xڍP�N�@�����َ�wkU�ĈnC=J�*A�z.M�B������|#4�� 9(���x8Tj��*�C@V +���u*�)r���d����-A~^ �{df���6?�α�vs>|�qX����_ ����,�t��G_OSyy��-P�QRTp�����~W�2��Yq�B�L��aGd��.Rs�Ŀ��.�����\��������B�u_�Uendstream endobj 1242 0 obj << /Type /Page @@ -1894,14 +1894,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1254 0 obj << -/Length 525 +/Length 526 /Filter /FlateDecode >> stream -xڍT�n�0��)��HʤĎA����B[ہ�(Y�I�p��|ɱ��^�{x�S� �?����=��Q�4�%�u=�p����bf/_x3Z��W�%٭�C���"�3뫻k$T�b_�I���Q�)+����8�p{^�6:�p�B�G�b -�东&9�����Z��6ly%&�S������7���H19!��P�����z}�m��x�q��+����X٠-�1N -��h�viV��0�2_���۲�p�CJX��(Ѽs������SK��� �hEqzx/}������#�I Zf�(t���ȭ��6.]h�^:sN1B�~��0�r��`O6��6ױ���9vv�z����q�[%�O -���2���njjY7A� ۧ����ע�����FVr�Cmk`ͪ�_2��œJ��9�e�N����lވH�u��Cօ<����������A/.%�9�?���1��y~>�S;N�5���m�:�d웲{���v�d��0�����#�%Iendstream +xڍT�n�0��)��Iʤ��A����B[ہ�(Y�I�H���9v�����s�}�4!�IAq���*�gI3�H҃�iG#� f� +�|��x^�d"�nE���;˓ +W|uw�DJ��"��_�>�4cE���mGnO��FG�s��Q���5.�I�6�?ը�Q���-n$�W�|��+<�$F�&��ӂ %''�2�+�*��y=��9�6P�$#4��\��X�`�' +'G�G�]��e.�����-:��l�\��2��>�Z6��N�j����K��� �I��D=����J���(}փQY3J��A5j+ﶍK�`��^RJ�Ա��$m�\�&�D�j�m{늨�cgcV��0N��j�~P�%�����wtS�˺ �m�>�E�-�˛��}EQA � J��Uk�d~q����cs���������(G84�5R�1X��z��}f~�_=��d��~NN֞�����%�q��p����r6{ Sߔݷ��m�O�P⒊�����-%<endstream endobj 1253 0 obj << /Type /Page @@ -1918,7 +1918,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1261 0 obj << -/Length 57901 +/Length 57903 /Filter /FlateDecode >> stream @@ -2228,295 +2228,283 @@ G ��>��3��������@�&ܯw�����U�_�pݯ��~��u��i߄�����:ؾ ����u�}5߯w��_�6�~����z��U�_�pݯ�p���_�W�~��u�����z�����/�p���_�W�~��u�����z��~p_��� ���_V�~��u�����z��~p_�����:� -�� ~w��u��;\���*ܯw����U�_�pݯ�p�^��~=��*ܯw����U�_�pݯ�p���_�W�~����zƗU�_�pݯ�p���_�W�~��u�����z�����/�p�����ux�q�~�B�~=��_��5O��Ϧ��|��м^�]��ݿ~��������~��c~�����Ӝ{z�~>o��9b�ǎ����k�S��mҥc�}�+Yg�Y�M8r�d�8f�6�±�u��eۄ��F�Q�M�m�d�6f�6ᰱ�uטeۄ��J�Qc�mNy^4F�7ឱ�uΘeۄc�J�-c�m.+Y��Y�M8cl�y�e߄�J� c�m+Y��Y�M�^�d/f�6�t����b�}�+Yg�Y�M8Z�d�,f�6�b��u��eۄs�B��VL� ����S�,�&*V���l�p�X�:R̲mb#��(�f�O��q����E8N�\�&f�6�2��u��e��g� �����"�$V�N3l�p�XɺG̲m�k� -Lj�}\�S�Ɲ���M�C�d�!f�6�b���>.�b���1ö 燍<���������av��ruw�aۄ��J��a�mNy^F�7�ް�un�eۄc�J֭a�m. +Y��Y�M83l�yee߄�J։a�m+Y��Y�M�.�df�6ᴰ��ea�}� -+Yg�Y�M8*�d�f�6ᢰ�uP�eۄs�F�ׄQ�M�%�d�f�6ᐰ�uG�eۄ+�J�a�mNy^F�7�~��u>�eۄ��J��`�m.+Y��Y�M8,仫�$/�p3X�:̲m��`%�^0˶ ׂ��c�,�&� -6���o`%�L0˶ G����,�&\V��l�p���:0ʾ ������,�&V���l�pX�: -̲m�I`#ϋ�(�&�V���l�pXɺ̲m�K� -���}\�3�ƝW��M��d��f�6�`�������������&��5����o滿 -g�}\������_�m.�*YY��|�������-_���/ö �~��;�,�f���q���E8�k�y�a߄��J�y_�m��*Y�}Y�M��d�e�6ᬯ��U_�}n�*Y'}Y�M8�d��e�6ᚯ�u̗eۄS�F��|Q�M��d��e�6ሯ�u×eۄ�J�_�m�� -��z/��&��U�N��l�p�Wɺ�˲m��^%�h/˶ '{�</���p�W�:�˲m±^%�V/˶ �z��C�,�&��5�ҋ�o^%�D/˶ z����,�&\�U���l�p����2/ʾ wy�gd�Y^~�q�w�6�(o�m�����v��Q�xj^��g����������$���9�}�����^/�������;^�c���G �W�?���Ï@|�B�*p_��� -���_V�4��u���u`��<p_��ׅ � -7�>�3��`��Np_�K�ש � -ǂ�kA�}�+|f|Y����� � -W���A�};\����*�V�<��� -���A�}.;\'���*v���U�#��yH��eN ;\����*\v�� �U8(�p]�pS��wG�_Wᬰ�uW���ea��p_����u!� -��>3�����7�@�&\v����U84�p]��ְ�ul�i߄sÎֽ!ؾ -���C�}5v��:�6���a��U8=�p��������!ж ��D�}n+|!f|Y�g��=���M�D�h�"���p���F�W����AbƗU8I�p�$�p���:K�W�0��u����mb���Č/�p���O�W�B��u���b��Jp_�;� -���_V�T��u���µb��\p_�����"� -7�>�3����b��np_�����"� -Nj��E�}�+|0f|Y��� #� -W��3F�};\����*�26��1c��U8g�p�3�p���:i�Wᨱ�u����]c���ƌ/�p���m�Wằ�u���c���p_�� -�G�_V�̱�u���¥c���p_�c�#� -��>3����c���p_�����#ྚ;{\>m�p�X���1��*�?v����x�ѷH����u ���d��CȌ/�����-$ж א�sH�}";\���j���lEf�7�,��u ���ed��4p_�Ǒ�=�#��M����y ��eN$;\7���*\Iv��$�U8��p]J�p+Y��X2��*�Kv��%�U���p�L�p4�ẚ�W�n����dƗU8��p�N�p=��:��Wဲ�uA ��� e��QF|]�3��%� -���SJ�}�);\ה��*�SV�<���� -'���J�}�*;\g���*Vv�.+�U����y\��e�+;\����*\Xv�N,�U8��p]Y�pgY���2��*�Z�����^h[����ex���� �-?]�����yny�;���7�/_�yc����]]�/ۿ�?S��'W����suy�./o�[��~�\]/��{�BO�.oO��������ri��ӈ��>�R;\Ǯ��*�v��]�U8v��y��e�];\Ǯ��*�v��]�U8v�p��p�Z���5��*�v��]�U8v�p��p���:v�W�ص��kƗU8v�p��p���:v�W�ص�u� -��±k��c/�p���:v�W�ص�u� +�� ~w��u��;\���*ܯw����U�_�pݯ�p�^��~=��*ܯw����U�_�pݯ�p���_�W�~����zƗU�_�pݯ�p���_�W�~��u�����z�����/�p�����ux�q�~�B�~=��_��5O��Ϧ��|��м^�]��ݿ~��������~��Q�ǧg���_0�G����Ǟ�#�y��z�:v8u\�&]:F�7�α�u�eۄ#�J֍c�m.+Y�Y�M8ol�y�e߄��J�ic�m+Yw�Y�M�j�d5f�6ᤱ��Ec�}�+Y�Y�M8f�d�2f�6ᒱ�uȘeۄ3�F�W�Q�M�a�d�0f�6ေ�u��eۄ��J��b�mNy^.F�7�n��u��eۄ��J��b�m.+Y�Y�M8W,�k�$/�p�X�:U̲m¡b%�N1˶ W���#�,�&�(6�P��o��� +��}\�����mb�m.+Y��Y��|����J��-�Mb��$1ö ���{�,�f�F��q����E8El�y�a߄;�J�b�m3!V�A���"\ V�3l�p~����0ʾ�o+x�f�q+Ww��M�:�df�6�䰑��a�}� +Y�Y�M86�d�f�6�Ұ�uh�eۄ3�F�W�Q�M�1�d�f�6����u_�eۄ��J�qa�mNy^F�7᮰�uV�eۄ��J�Ma�m. ++Y�Y�M8'l�yMe߄[�J�)a�m +Yw�Y�M�"�df�6ᄰ��a�}�+Y�Y�M8�d�f�6�r��u8�eۄ��B��L� 7�����,�&V���l�p-X�:̲m©`#�K�(�&� V���l�p$Xɺ̲m `%�@0˶ 灍<���pX�: ̲m�a`%�.0˶ W�����,�&�6���o�=`%�0˶ ǀ��[�,�f���q���E8l�ya߄�J� `�m3�V���/�{p�W�:�ˮm��_#�˿(�f����q����E8��\��e�6�⯒u�e���~ �k���"��U�N�2l�p�Wɺ�˲m�+� +G~�}\��Ɲ~�M��d��e�6ḯ�uۗeۄ˾J�a_�m��y^�E�7�uҗeۄ��J�=_�m��*Y�|Y�M8�k�y�e߄;�J�_�m��*Y7|Y�M��d�e�6�|������l��^%�t/˶ �{����,�&\�U����l�p����b/ʾ �z��s�,�&�U�n��l�p�W�:�˲m^#�+�(�&��U�N��l�p�Wɺ�˲m�u^%�8/˶ �y�</��p��F֞��Wywo����毾�;��o�卧�Uޛ~�����?�o�:O���������,�����.�\���e�7��a�~b|��#��=��'/���U���y��eN;\����*\v���U8�p]�p#X��H0��*� v���U��p� +�p,���W�^����`ƗU8�p��p5��:�W�p��u9����`�����/�p>���WႰ�uB���a��p_�;� +���_Vᔰ�uK���5a��p_����E!� +7� ~wT�u� +;\w���*\v�N�U8.�p]�p_X���0��j>1��qc�maG��l_�C�ץ!ྚo +[dž��M87�h����pq��:9�W��ag��C�m�+zf{Y�����!ྚ�;{�m�p��Ѻ@�W����bƗ�|����hۄKĎ�)"ؾ +Lj�kD�}�+|$f|Y����M"� +W���D�};\����*�&V�<N��� +���D�}.;\'���*)v���U�S��y���eN;\����*\+v���U8X�p],�p�X��h1��*�-v���U�\�p�.�p���^�W�~���cƗU8a�p�0�p���:c�Wᐱ�u����-c��3F|]�s��=#� +���F�}�;\W���*�5V�<l��� +����F�}�;\獀�*8v�.�U�q��y��e�;\w���*\:v�N�U8v�p];�p�X���1��*�<v�n�U�z�p�=�����#ж ��=������c���p_��};��q� ;XW�@�*�AV�<�����O!;{�Bm�p ��:��W� ��u ������Qd�}�";Zw�`�*\Fv�N#��|���:hۄ�Ȋ���^V�D��u# ��d��Lp_�C�ץ$� +��>�%3��¹d��^p_�����$� +G���I�}�&+|Nf|Y�����$� +ד��I�}(;\���*�P6��e��U8��p�Q�pI��:��Wᘲ�uM ���=e�σʌ/�pR�ẩ�W᪲�uV ���ae��p_��� +�Ǖ_Vἲ�u_ �� e���p_�#�ו%� +w�>-3��©e�lo-�Ʊ��}�_[�Z�-������u���pn9��疗�s�?~����w�7����������;��7�ru��;W������z��7���������G�'/�����4���~>�]/��=������,��u� ��±k���p_�c� �Ǯ_V�ص�u� ��±k���p_�c�ױ+� -Ǯ ~w��u�];\Ǯ��*�v��]�U8v�p��p�Z���5��j>v��q� -�m±kG��l_�c�ױ+ྚ�]+[Ǯ��M8v�h����p���:v�W�kg�cW�m�]+z�f{Y�c�ױ+ྚ�];{�m�p���:v�W�ص��kƗ�|�����hۄcֱ+ؾ +Ǯ>�]3��±k���p_�c�ױ+� Ǯ�cW�}�]+|�f|Y�c�ױ+� Ǯ�cW�}�];\Ǯ��*�V�<v��� -Ǯ�cW�}�];\Ǯ��*�v��]�ˎ��ye�*�:���Z3J}��R7T -h����@�2�Ƞ -��o�p;����m��#e�?��Ìd��}� +Ǯ�cW�}�];\Ǯ��*�v��]�U8v��y��e�];\Ǯ��*�v��]�U8v�p��p���wǮ_W�ص�u� +��±k���p_�c�ױ+� +Ǯ>�]3���c��Ǯ@�&�v��]��U8v�p���ص�u�i߄cֱ+ؾ +Ǯ�cW�}5�v�8v�6�ص��k��U8v�p���ص�DZ+ж Ǯ�cW�}�]+|�f|Y�Ǯ�=�]��M8v�h����p���:v�W�ص��kƗU8v�p��p���:v�W�ص�u� +��±k��c/�p���:v�W�ص�u� +��±k�����W�.;�f��hH�s�k�(�DH�P=(�J�2�$"�*�������c�?��v��)�\�3�����S!v��;v��A�ص�+v�S!v��]A�T�];�bW�;b�J�c�,T�];�bW�;b�N���N�ص�+v�S!v��;v��A�ص�+v�S!v��]A�T�];�bW�;b�F~�F��B�����ܩ�vrŮ w*Į�\�+ȝ �k%߱k�*Į�\�+ȝ �k'W� r�B�����ܩ�V��f��B�����ܩ�vrŮ w*Į�\�+ȝ �k%߱k�*Į�\�+ȝ �k'W� -r�B�����ܩ�6��5�'b�N���N�ص�+v�S!v��]A�T�]+��]�|P!v��]A�T�];�bW�;b�N���N�ص���5�b�N���N�ص�+v�S!v��]A�T�]+��]�|P!v��]A�T�];�bW�;5Ǯ�{Ů�6&Į�zǮ�=��vrŮ wj�];�9v�["Į�X�+�� -�k%߱k�j�];��]AmL�];�bWp;b�N���Nͱk�V��΄صS+v�S!v��]A���v���ژ�V��f��B�����ܩ�vrŮ w*Į�\�+ȝ -�k%߱k�*Į�\�+ȝ +r��صs���ƄصR��5�b�N���N��k�>Ǯ ~K�ص+v�S!v��;v��Aͱk�^�+�� �k�V� +n�B�����ܩ9v�܊]�ڙ�vjŮ�v*Į�\�+ȝ�c�νbWPb�J�c��T�];�bW�;b�N���N�ص�+v�S!v��;v��A�ص�+v�S!v��]A�T�];�bW�;b�J�c�,T�];�bW�;b�N���N�ص�+v�S!vm��k�O*Į�\�+ȝ �k'W� r�B�����ܩ�V��f��B�����ܩ�vrŮ w*Į�\�+ȝ -�k#��]�|R!v��]A�T�];�bW�;b�N���N�ص���5�b�N���N�ص�+v�S!v��]A�T�]+��]�|P!v��]A�T�];�bW�;b�N���N�ص���5�b�d��+�Њ]/_(Į�~�ݢǧ�� ��cW=�c��s�����^jק����,�}�9n�����oxxIZW�]�c~}=����W��P�A>��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�;��G�j�K��I��\=��U=�ܩ�z,�z$�Ss���U=�|Ps�X�W�Hr��걔���N��c)_�#ɝ���N��䃚��R��G�;5W��|U�$wj�K��I��\=V�]=f���걔���N��c)_�#ɝ���R��G�;5W��\�#�5V���\=�ژ�z,իz$�Ss�X�W�Hr���s������c�^�#�����R��G�;5V���\=�ژ�z�Ԫ�=��z,�z$�Sc�X���#�����R��Gr;5W��\�#�5V���\=�ژ�z,իz$�Ss�X�W�Hr��걓�z���걔���N��c)_�#ɝ���R��G�;5W��\�#�5W��|U�$wj�K��I��\=��U=�ܩ�z��A>��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�;��G�j�K��I��\=��U=�ܩ�z,�z$�Ss�X�w��哚��R��G�;5W��|U�$wj�K��I��\=vrU� �\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z���걔���N��c)_�#ɝ���R��G�;5W��\�#�5W��|U�$wj�K��I��X=��s�Hjc��S�z���걔���NM�c�~�I�����R��GR;5W��\�#�5V���\=�ژ�z,իz$�Ss�X�W�Hr���s������c�^�#�����R��G�;5V���\=�ژ�z�Ԫ�=��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�;��G�j�K��I��\=��U=�ܩ�z,�z$�Ss�X�w��哚��R��G�;5W��|U�$wj�K��I��\=vrU� �\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z���걔���N��c)_�#ɝ���R��G�;5W��\�#�5W�)�+�Gz�s��慮W��~s��xw����\=��v��t���Ͽ?��������?}��ig�n_������������r���>��������q�P��{��A��y��Ce��B���C�ܩ�Cur�P w*�P�\=ȝ -=T%�=T�*�P�\=ȝ -=T'Wr�B���C�ܩ�CU��Ce��B���C�ܩ�Cur�P w*�P�\=ȝ -=T#�衢|R�����@�T�:�z(�;z�N� -�N����*�5�P�{�P�6&�P�Z=�� -=T'Wr���r���jgBթ�C�۩�Cur�P wj�:��@mL�*�{P�����@���Cu��C�ژ�Cuj�P�v*�P�|�PY>����ܫ��1�������T�:�z(�;z�J�{�,T�:�z(�;z�N� -�N������S���仇��A������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� +�k%߱k�*Į�\�+ȝ +�k'W� +r�B�����ܩ�V��f��B���6v�Z�����5��o�[����as쪧v��x�]��?��K����w�������7�����]�� /I������z̯������ +�#�5W��|U�$wj�K��I��\=��U=�ܩ�z��A>��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�;��G�j�K��I��\=��U=�ܩ�z,�z$�Ss���U=�|Ps�X�W�Hr��걔���N��c)_�#ɝ���J���,��\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z����t��GR3W��zU��vj�K��I��X=v�U=�ڙ�z,իz$�Ss�X�W�Hr���t��GR3W��Z�#�5W��|U�$wj�K��z$�1s�X�W�Hn��걓�z����t��GR3W��zU��vj�K��I��\=vrU� �\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z���걔���N��c)_�#ɝ���R��G�;5W��\�#�5W��|U�$wj�K��I��\=��U=�ܩ�z��A>��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�+���|Rs�X�W�Hr��걔���N��c)_�#ɝ���N��䃚��R��G�;5W��|U�$wj�K��I��\=vrU� �\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z���걔���N��c)_�#ɝ���}�Im�\=vjU���\=��U=�ܩ�z,կ�#��s�X�W�Hj��걓�z����t��GR3W��zU��vj�K��I��X=v�U=�ڙ�z,իz$�Ss�X�W�Hr���t��GR3W��Z�#�5W��|U�$wj�K��I��\=��U=�ܩ�z��A>��z,�z$�Ss�X�W�Hr��걔���N��c'W��A��c)_�#ɝ���R��G�;5W��|U�$wj�+���|Rs�X�W�Hr��걔���N��c)_�#ɝ���N��䃚��R��G�;5W��|U�$wj�K��I��\=vrU� �\=��U=�ܩ�z,�z$�Ss�X�W�Hr��걓�z����1�ye�H/t����1��o��n�^~B����Ԯ������������_������>���������>��=><��_N^�g��|���=�*��vu�#=�;/�z�,T�:�z(�;z�N� �N������S���仇��A������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� �N������S��j�=T�O*�P�\=ȝ -=T'Wr�B���C�ܩ�CU��Ce��B���C�ܩ�Cur�P w*�P�\=ȝ -=T%�=T�*�P�\=ȝ -=T'Wr�B���C�ܩ�CU��Ce��B���C�ܩ�Cur�P wj�:��@mL�*�{P�����@���Cu�s�D�:�z(P;z�J�{�,��Cu��C�ژ�Cuj�P�v*�P�\=ȝ�{�ʭ*�� =T�Vn�B���C�ܩ���ܫ��1���Ի���A������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� -�N������S���仇��A������S�����@�T�:�z(�;z�F~�CE��B���C�ܩ�Cur�P w*�P�\=ȝ -=T%�=T�*�P�\=ȝ -=T'Wr�B���C�ܩ�CU��Ce��B���C�ܩ�Cur�P w*�P�\=ȝ -=T%�=T�*�P!�i{(x��C]�P����z�������wr���=�������>~�����ǿ|�zD=�ܽ[Cݟ������������������������.�?\G�����@�T������Ȳ|P�:�N���@�T�����:2�;�#����@�T��*���|P!�����@�T��:��;�;�N���N������.��N���N����+��S!�����@�T��*���|P!�����@�T��:��;�;�N���N����_�wQ>���ur�w w*�w�\�ȝ -�]'W~r�B~W�w~�僚�ν�;P�N���N����+��Ss~W���e�3!�������T��:��;�;5�w�{�w�6&�w�z�w�=���ur�w wj��:���@mL��:��;p;�J��,Ԝ�u�߁ژ��uj�w�v*�w�\�ȝ +=T'Wr�B���C�ܩ�CU��Ce����s� +�Ƅ�S���S�����@���CUn�PY�L�:�z(p;z�N� +�N�=T�^=�� =T��=Tv*�P�\=ȝ�{�νz(Pz�N� +�N����*�5�P�{�P�6&�P�Z=�� +=T'Wr�BU�w�� +=T'Wr�B���C�ܩ�Cur�P w*�P�|�PY>��Cur�P w*�P�\=ȝ +=T'Wr�BU�w�� +=T'Wr�B���C�ܩ�Cur�P w*�P�|�PY>��Cur�P w*�P�\=ȝ +=T'Wr�BU�w�� +=T'Wr�B���C�ܩ�Cur�P w*�P������I������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� +�N������S���仇��A������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� +�N�=T�^=�� =T��=Tv*�P�\=ȝ{�N}�@��=T'Vj�BU�w�僚{�νz(Pz�N� +�N������SsU��Ce�3�������T�:�z(�;5�P�{�P�6&�P�z�P�=��Cur�P w*�P�\=ȝ +=T'Wr�BU�w�� +=T'Wr�B���C�ܩ�Cur�P w*�P�|�PY>��Cur�P w*�P�\=ȝ +=T'Wr�B��/z�(�T�:�z(�;z�N� +�N������S���仇��A������S�����@�T�:�z(�;z�J�{�,T�:�z(�;z�N� +�N������S���仇��A�*D;m/�z�� +=Tx��C�C�p�y�;��N��S��z>�P��r���o?�����O_/��盻wk����_~���=?�ӿr��}Y|�}�������y�tȝ +בU�}Y�*\G��uȝ +בur]Gr��ud�\�ȝ �]%��]�*�w�\�ȝ �]'W~r�B~�ɕ߁ܩ��U��e��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ �]%��]�*�w�\�ȝ -�]'W~r�B~�ɕ߁ܩ��U��e��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ +�]'W~r�B~�ɕ߁ܩ��5��.�'�N���N����+��S!�����@�T��*���|Ps~W~jcB~ש�߁۩��ur�w wj��*��v&�w�Z��� +�]'W~r����s���Ƅ��R��.��N���N��]�^��� �]�V~n�B~W�w~�僚�ν�;P�N���N����+��S!���;���A����+��S!�����@�T��:��;�;�J��,T��:��;�;�N���N����+��S!���;���A����+��S!�����@�T��:��;�;�J��,T��:��;�;�N���N����+��S!���;���A����+��S!�����@�T��:��;�;�F~��E��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ �]%��]�*�w�\�ȝ -�]'W~r�B~�ɕ߁ܩ��5��.�'�N���N����+��S!�����@�T��*���|P!�����@�T��:��;�;�N���N������.��N���N����+��S!�����@�T��*���|P!�����@�T��:��;�;5�w�{�w�6&�w�z�w�=���ur�w wj��:�9��["�w�X��� -�]%��]�j��:���@mL��:��;p;�N���N��]�V~��΄��S+��S!�����@�Ԝ�u�߁ژ��U��e��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ +�]'W~r�B~�ɕ߁ܩ��U��e��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ �]%��]�*�w�\�ȝ +�]'W~r����s���Ƅ��R��.��N���N��]�>�w ~K���+��S!���;���A��]�^��� �]�V~n�B~�ɕ߁ܩ9�����ڙ��uj�w�v*�w�\�ȝ��ν�;P�J���T��:��;�;�N���N����+��S!���;���A����+��S!�����@�T��:��;�;�J��,T��:��;�;�N���N����+��S!�k��]�O*�w�\�ȝ �]'W~r�B~�ɕ߁ܩ��U��e��B~�ɕ߁ܩ��ur�w w*�w�\�ȝ -�]#���|R!�����@�T��:��;�;�N���N������.��N���N����+��S!�����@�T��*���|P!�����@�T��:��;�;�N���N������.��X�u�����._(�w��pwx��;���}����|�/��c�wO7��wW����[��9�����_^��__�%����_�}Ux�����v�������w|?�{�9_N�\����I�|�|5�SD�����*�JU\�*Tq�\Uȝ -U\'Wr�B��UŁܩP�U�]�e��B��UŁܩP�urUq w*Tq�\Uȝ -U\%�U\�*Tq�\Uȝ -U\'Wr�B��UŁܩP�U�]�e��B��UŁܩP�urUq w*Tq�\Uȝ -U\#���|R�����@�T��:��8�;��N�*�N�*���*.�5Wq�{Uq�6&Tq�ZU�� -U\'Wr��*�r���jgBשUŁ۩P�urUq wj��:���@mL��*���{P�����@��\�u�UŁژP�ujUq�v*Tq�|WqY>����ܫ��1���Ԫ���T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S��k�U\�O*Tq�\Uȝ -U\'Wr�B��UŁܩP�U�]�e��B��UŁܩP�urUq w*Tq�\Uȝ -U\%�U\�*Tq�\Uȝ -U\'Wr�B��UŁܩP�U�]�e��B��UŁܩP�urUq wj��:���@mL��*���{P�����@��X�u�s�D��:��8P;��J���,�\�u�UŁژP�ujUq�v*Tq�\Uȝ���ʭ*.�� U\�Vn�B��UŁܩ���ܫ��1���Ի���A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��F~Q�E��B��UŁܩP�urUq w*Tq�\Uȝ -U\%�U\�*Tq�\Uȝ -U\'Wr�B��UŁܩP�U�]�e��B��UŁܩP�urUq w*Tq�\Uȝ -U\%�U\�*Tq!�j�8x�U�]�P�����*��p�o�=Eq�V�xn����_�}�����?������������������������맯_fs�9�����.^�_�p���]+�v�~; ��Q�2h�L -��٘�UfUA�lLh��N��ٙUf�@�lL��*�b�l6&�@�Y%P6:�Ƽ3�hv&D@�Y P6 -�ʬ�(�� �OeV���Ƅ��0_�?�<��Tfu?�lL�~*���l6&$?�Y�O6z�Ƽs�hvf�}*�j}��-J�ʫ�'�� �OeV���̍O#V��F������bcB�S��d�1s�S�Wٓ�o���4ޝ�D�3!��jz�٘���+��D�y*�j�,6&�<�y�<����T���d�["T<�WO�ʬ�'�� �Nc��N4;�ʬv'�� �NeV���Ƅl�2���fcB�Әw��΄`�2���fcB�S��d�1!թ�*u�٘��4��D�3!ҩ�jt�٘P�Tf:�lL�s*��l6&�9�y�9��Ls*���l6&T9�YQN6��ʬ"'�� =Nc�9N4;b�ʬ'�� %NeV���Ƅ�2���fcB�S�/�dLp*���l6&�7�Y�M6қʬ�&�� �Mc��M4;��ʬ�&�� �MeVp��Ƅܦ2���fcBkӘwj�΄Ц2���fcBeS��d�1!���*l�٘��4��D�3!���jk�٘P�Tf�5�l̜�T�U�d�["45�w'5Q�Lj*�z�l6f�i*�9���7<Hi*�J��5&t4�yg4����T���d�["4�WM�ʬz&���ۙF�t&z��L�U7��Ƅj�2+��fc�d��b&{���i�;��bgB,S���d�1���� -e�٘��TfU2�lLhd�Nd�ٙ�Tf�1�lL�c*��l6&�1�YeL6��Ƽ��hv&D1�YML6��ʬ &�� 9LeV ��Ƅ�0_�0�<��Tfu0�lL�`*�"�l6&$0�YL6��Ƽ�hv&�/�Y�K6ʗʬ�%�� �KeV���Ƅ�1��%�� �KeV��Ƅڥ2+v�fcB�r�FȽ���͇�<E�]���������|������O^���N��z����зǛ��+/��S��������_~�>������}��g����3/��{�x��;>=]��^�O��*���{���<<n���w�Д��I>�W�Ǜ���C+??�r�^��\1��{b���4ʝzE~�vn����4ʝ�������~h?��4������>��z�N�"?};�Ǿ�F�S�ȟn_�aֹ_F�1�7?nn�n��|=M�A�"?�<>��|=�r�^�?��>��ׇQm�+��7sW������ۚ�����������^�����C����aT�����><�����v���9<֟��i�;�}����|x*��I��+�����S�u�����+���s����Q��+�#��,�����n��|=M�A�"?}/��_O�ܩW�����7�:��i�;����������i�;�}������Ǿ�&��^�����c����Q��+�ӷs�k?��4ʝzE~�v>�߶���(w�����_�o?��4����xs���~��i�;����K����c_O�ܩW�O7����~~�N}_~�v�_~�����I>�W�o����F�S��O�������(w������fi�;n����f�,T�Y���fi�;n���Y�N���;�n��S�f�J�o���A���;��c@�T؏����SaB��kC�N��J�gd�|PaH��kI�N�-�N�1�;�d:��d@�TX���{R&�Fe:�Ve@�Tؕ����SaZ��k[�N�u�F~1/� -3�\3 w*l�tr�̀ܩ03�ɵ3r���L%�S3Y>�yl�s��P�f:�g��T����ڜ�S��L���LV;�g:��g��T؞����S��L�^�3�6&,�T�=A�݃ -#4�\+4 wjޡ��k��Ƅ)�N�-p;�h*�����A̓4�{-Ҁژ�Iө5Jn��,M'�. ȝ -�4�|O�d���8M'�: ȝ -�4�\5 w*L�trmԀܩ�RS��LM�*�tr-Հܩ�U��5Vr��\M'�^ ȝ -�5�|O�d���hM'�j ȝ -�5�\�5 w*L�trm׀ܩ�^S��|M�*�tr-ܩ�a��5br�M' ȝ -K6�|O�d��M'ך ȝ -{6�\�6 w*L�trmڀܩ�j��/fm�|Raئ�k��N�m�N�q�;�m:��m@�TX���{�&�Fn:�Vn@�Tع����Saꦓk��N���J��n�|Pa�k��N�͛N���;fo:�vo@�TX���{�&��o:��o@�Tؿ����S�N�^8�6&��T�=��݃ -C8�\K8 wj�����1�%�N'��� -�8�|O�d���Q�νVq@mL������Sa��k�N��8�[�8Y�L���Z��Sa#��k$�N�39�{��ژ��S��TNv*��tr��ܩ����5�r��dN'�fȝ -�9�|��d���pN'�rȝ -�9�\�9 w*��tr��ܩ��S���N�*��tr��ܩ����5�r�N'זȝ -k:��bN'�'u:�u@�T������SaV��kW�N�e�J��u�|Pa\��k]�N�}�N���;&v:�6v@�TX٩�{f'��v:��v@�T������San'�T{;�Bkp����Nx��~�������x���ckt�p�������p��ywy���!^X�����+�+�;�����8._3�q��:i�#��8:��8@��<�ѹ��� s�Zs�v*�q4�9�(��<�ѹ��� s�Zs�v*�qtr�q�ܩy��rk�#�� s�Zs�v*�qtr�q�ܩq��S��8@��s�x�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G'�ȝ -s�|�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G'�ȝ -s�|�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G'�ȝ -s�|�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G'�ȝ -s��b�#�'�8:��8@�T�������Sa���k��N�9�J��8�|P�G�^s�6&�qtj�q�۩0���5�r��9�ʭ9��v&�qtj�q�۩0���5�r��9�ν�8@mL���{�#��8:��8@��<�ѹ��� s�Zs�v*�qT�=Ǒ僚�8:�����1a��Sk��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa���_�qD���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G'�ȝ -s�|�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��9�ν�8@mL���{�#��8:��8@��8�ѩ�s ~K�9�N�9P;�8*�����A�s�{�q�ژ0�ѩ5�n��G'�ȝ��8*��8�ڙ0�ѩ5�n��G'�ȝ��8:�����1a��R�9��T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8��G�O*�qtr�q�ܩ0���5�r��G'�ȝ -s�|�qd���G'�ȝ -s�\s w*�qtr�q�ܩ0�Q��G�*�qtr�q�ܩ0���5�r��G\���8������9��F�y����O���G���ck���<��}����>�����������p��O_g��|s<���ݥ���p��||��y��ϯ�{������^'���vj��K���I��Tϗ��z��o����Ī�A=���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���I��\ϗ�Uϓܩ��/嫞'�Ss=��Uσ|Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�wr�� �\ϗ�Uϓܩ��/嫞'�Ss=_�W=Or��z�������z���z��N��|)_�<ɝ���R��y�;5��\�<�5��|��$wj��K���I��\ϗ�Uϓܩ���仞��I��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���'�1s=_�W=On��z���z��N��|�^�<�����R��yr;5��|��$wj��K���'�1s=ߩUσ{Ps=_�W=Or��z�t��yR3��z���vj��;��y�j��K���'�1s=_�W=On��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���I��\ϗ�Uϓܩ��/嫞'�Ss=��Uσ|Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�wr�� �\ϗ�Uϓܩ��/嫞'�Ss=_�W=Or��z���z>�'5��|��$wj��K���I��\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���I��\ϗ�Uϓܩ��/��z�����|�V=�A��|)_�<ɝ���R�Zϓ�-1��x��vj��;��y�j��K���'�1s=_�W=On��z���z��N��|�^�<�����R��yr;5��|��$wj��K���'�1s=ߩUσ{Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�wr�� �\ϗ�Uϓܩ��/嫞'�Ss=_�W=Or��z���z>�'5��|��$wj��K���I��\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5���.�yz��so^�p�Zϧ7�������/?�y������������?�z�;�\�������czj��s=����>���ݖ���>�����W���g+���>>?�u�;����3�����;/�2 �;2�N�L�N�L���L"�2�N�L�N�L��+���S!����$@�T�$�E&� -�D'W&r�B&�ɕI�ܩ�Itre w*d�|gY>�9���+���1!����$��T�$:�2 �;5g�[�DV;2�N�L�N�L��+���Ss&ѹW&jcB&Q�w&�݃ -�D'W&r��L�s�L�ƄL�S+���S!���;���A͙D�^��� �D�V&n�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�\�ȝ -�D%ߙD�*d�\�ȝ +�]%��]�*�w�\�ȝ +�]'W~r�B~�ɕ߁ܩ��U��e��B~+�.��Z�����.���O7wǗ?��ב�O���~���������J���c+�{8�w�����_��˽d_?��뿯 +�?~��������>���'y7��˩����>i�o��&y���hWq�?�PŽ�B����A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S��k�U\�O*Tq�\Uȝ +U\'Wr�B��UŁܩP�U�]�e���*�s�*�Ƅ*�S���S�����@��\�UnUqY�L��:��8p;��N�*�N�U\�^U�� U\��U\v*Tq�\Uȝ���ν�8P��N�*�N�*���*.�5Wq�{Uq�6&Tq�ZU�� +U\'Wr�BW�w�� +U\'Wr�B��UŁܩP�urUq w*Tq�|WqY>�P�urUq w*Tq�\Uȝ +U\'Wr�BW�w�� +U\'Wr�B��UŁܩP�urUq w*Tq�|WqY>�P�urUq w*Tq�\Uȝ +U\'Wr�BW�w�� +U\'Wr�B��UŁܩP�urUq w*Tq������I�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�U\�^U�� U\��U\v*Tq�\Uȝ��N}��@��U\'Vj�BW�w�僚��ν�8P��N�*�N�*�����SsW�U�e�3���Ԫ���T��:��8�;5Wq�{Uq�6&Tq�zWq�=�P�urUq w*Tq�\Uȝ +U\'Wr�BW�w�� +U\'Wr�B��UŁܩP�urUq w*Tq�|WqY>�P�urUq w*Tq�\Uȝ +U\'Wr�B��/��(�T��:��8�;��N�*�N�*�����S���今��A�*�����S�����@�T��:��8�;��J���,T��:��8�;��N�*�N�*�����S���今��A�*.�Zm/���� +U\x��^�N� ��(���j��M�?��뷏_�|��������_��|���w�����㗿�������a7��Q����K��N?Իk%�n�ҏb�A?�P͗IaP6��ʬ*(�� MPc�IP4;��ʬ(�� 5PeV��Ƅ�2��fcBԘw�΄�2��fcBT��e�1!��̪�٘����'�ʬ�'�� �OeV���Ƅ�2���fcB�Әw���̱O%^�O��%B�Sy�d�1!�̪|�٘��i�J|��T^�=YlL�{*��l6fN{*�*{��-��ƻ��(v&D=�YMO63=�x=���9O�U͓�Ƅ��1�'���C�J�:��}K����*��bcB�S�U�d�1��i�;߉fgB�S���d�1�ܩ� +w�٘��TfU;�lLhv�Nv�ٙ�Tf�:�lL�u*�b�l6&�:�Y�N6:�Ƽ3�hv&D:�Y�N6 +�ʬ@'�� yNeV���Ƅ6�1�4'�� aNeV���Ƅ*�2+��fcB�S�U�d�1��i�;ljfgB�S���d�1�ĩ� +q�٘��TfU8�lLhp +�E��̃ NeV��Ƅ��2+��fcBzS�U�d�1��i�;��fgBtS���d�1���� +n�٘��Tf�6�lLhm�Nm�ٙ�Tfu6�lL�l*�"�l6&$6�Y�M6��Ƽ�hv&�5�YmM6ʚʬ�&�����J����}K�����&�� AMeVO��ƌ5M�=�4���)MeUI��Ƅ��1�&���#�J���}K����*��bcB>S�U�d�1s;ӈ��D�!����f�ؘP�TfE3�l̜�T�U�d�["�2�w�2Q�L�e*�Z�l6&�2�Y�L62�ʬJ&�� �LcމL4;�ʬ>&�� uLeV��Ƅ4�2���fcBӘw�΄(�2���fcBS��d�1!��̪a�٘���&�B�ʬ&�� LeV��Ƅ�2���fcB�Ҙw��΄��2�}�fcB�R��d�1!{�̪^�٘м4杼D�3!x���]�٘P�Tf�.�lLH]�����}��p����˷9|��{\��Wq�{�i��o!����[w���x���x���cz���=�������Ç�����Ͽ���{x�z���s/�||ǧ�+�����A���so�s|�������������4����x�t�th��Q��+�+�^~O����F�S��O���s����F�Sߗ?�����Ǿ�&��^����Ç�c_O�ܩW�o�á����(w������?�:��è6��������m�����=�W�Ǜ��c����Q��+�ۇ���0��y�|�f������4���~[����ܽ��Y#�� ��+��W�r�s�>�jc^1���ۇ�V}~�N�"?}5���3??�r��/?���O���0��y�|�yx~j���4��zE�psxzn?��4ʝzE�t�P�ߟE�[��������C����I=�W�����~��i�;�����ܿ�fZ'??�r�^�������c??�r��/?��������$�+�ӷs{l?��4ʝzE~�vw�Ǿ�F�S��O�·��V~~�N}_~w8����Ǿ�&��^�o�ڏ}=�r�^��~)���~��i�;����������O�ܩ���O����o�U��4������ܵ�@��(w����9>��z�N�"_w@wr�, r���ҕ|�,�� +7Kwr�, r���ҝ\7K�ܩp�t'��� w*�,]����Y>�p�t'�zȝ +�1�\2 w*L�trmȀܩ�"S���L�*�tr-ɀܩ�%��5&r�L'מȝ +�2�|O�d��¨L'תȝ +�2�\�2 w*L�trmˀܩ�.��/�e�|Ra`��ka�N���N���;ff:�vf@�TX���{j&�5��t�6jc��L����� +�3�\�3 wj^��ܚ��jg��L����� +�3�\�3 wj����k�Ƅ�J�'h�{Pa���k��N�;4�{ рژ0Eө�En��M%�s4Y>�y��s�EP6i:�Fi��T����ڥ�Sa����i�,T���Z��Sa���k��N���N���;Vj*�����A���N���;�j:��j@�T����ګ�Sa����ɚ,T���Z��Sa���k��N��N���;�k*�����A��N��;6l:�Fl@�T����ڱ�Saɦ��)�,T���Z��SaϦ�k��N�I�N�M�;Vm�ŬM�O*�tr-ۀܩ�m��5nr�¼M' ȝ +7�|O�d����M'�� ȝ +;7�\C7 w*L�trm݀ܩ�vS���M�*�tr-ހܩ�y��5zr���M'�� ȝ +�7�|O�d����M'�� ȝ +�7�\8 wj����k�Ƅ�J�gp�{Pa��k �N�[8��<��D�������Sa���I�,�<�ӹ�*�� �8�Z�8�v*L�trm�ܩy�rk'�� 9�Z9�v*l�tr��ܩy&�s��P�r*�����A���N���;�r:�s@�T�������Sa5���ٜ,T���Z��Sa;��k<�N���N���;t*�����A��N��;vt:��t@�T�������SaM��_��D�� N'עȝ +�:�\�: w*��tr��ܩ��S���N�*��tr��ܩ����5�r���N'��ȝ ++;�|��d����N'��ȝ +[;�\c; w*�����jo^h �\�PZ� o��/X>������p��zl��γ;_~�����;�.o_>���?<�~�~euGs�=���k�9�w^'�qd���G'�ȝ��8:�����1a��Sk��N�9�F~1�哚�8:�����1a��Sk��N�9�N�9�;5�qTn�qd�3a��Sk��N�9�N�9�;5�qt����a���9��T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa���_�qD���G'�ȝ +s�\s w*�qtr�q�ܩ0�Q��G�j����k��Ƅ9�N�9p;�8:��8@��<�Q�5Ǒ�΄9�N�9p;�8:��8@��<�ѹ��� s�z�qd���G'�ȝ��8:�����1a��Sk��N�9�J��8�|P�G�^s�6&�qtj�q�۩0���5�r��G%�sY>�0���5�r��G'�ȝ +s�\s w*�qT�=Ǒ� +s�\s w*�qtr�q�ܩ0���5�r��G%�sY>�0���5�r��G'�ȝ +s�\s w*�qT�=Ǒ� +s�\s w*�qtr�q�ܩ0���5�r��G%�sY>�0���5�r��G'�ȝ +s�\s w*�q4�9�(�T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@��<�ѹ��� s�z�qd���G'�ȝ�8:�y��o�0�щ5�j��G%�sY>�y��s�9P�8:��8��T�������S�G��GV;�8:��8��T�������S�G�^s�6&�qT�=Ǒ݃ +s�\s w*�qtr�q�ܩ0���5�r��G%�sY>�0���5�r��G'�ȝ +s�\s w*�qT�=Ǒ� +s�\s w*�qtr�q�ܩ0���5�r��G#����I�9�N�9�;�8:��8@�T�������Sa����9�,T�������Sa���k��N�9�N�9�;�8*�����A�9�N�9�;�8:��8@�T��K��К�|�4���7�qܞ�isx��szl�qܞ�8����>���_?��ݟ?}���������o�������{n���W>O�����co��z=���z��N��|)_�<ɝ���R�Zϓ�-1��X�<�5��|��$wj��K���I��\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���I��\ϗ�Uϓܩ��/嫞'�Ss=��Uσ|Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�wr�� �\ϗ�Uϓܩ��/嫞'�Ss=_�W=Or��z�������z���z��N��|)_�<ɝ���R��y�;5��|��Y>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|�>��6f��K������\ϗ�Uϓܩ���ܫ��3s=_�W=On��z���z��N��|�>��6f��;��ypj��K���I��Xϗ�s=Ojc�z�T�z��N��|'W=�A��|�>��6f��K������\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5��|��$wj��;��y�j��K���I��\ϗ�Uϓܩ��/嫞'�Ss=��Uσ|Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�W�]�g���z���z��N��|)_�<ɝ���R��y�;5��\�<�5��|��$wj��K���I��\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z���z��N��|'W=�A��|)_�<ɝ���R��y�;5���\ϓژ���Ԫ��=���/嫞'�SS=_�_�y�%�z��z��N��|'W=�A��|�>��6f��K������\ϗ�Uϓܩ���ܫ��3s=_�W=On��z���z��N��|�>��6f��;��ypj��K���I��\ϗ�Uϓܩ��/嫞'�Ss=��Uσ|Ps=_�W=Or��z���z��N��|)_�<ɝ���N�z䃚��R��y�;5��|��$wj��K���I��\�W�]�g���z���z��N��|)_�<ɝ���R��y�;5��\�<�5��|��$wj��K���I��\ϗ�Uϓܩ�����A>���/嫞'�Ss=_�W=Or��z>��e=O/t~��W���F8>ߝ���5���}�~=w����G_Ow��˟�C�~<~LO�v�p����o?���/_>�����ӧ��8À���_�l��=?���㵎~g��w&q��!�x�R&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�\�ȝ +�D#��$�|R!����$@�T�$:�2 �;2�N�L�N�L���L"�5g�{e�6&d�Z��� +�D'W&r��L�r+��jgB&ѩ�I�۩�Itre wj�$:��$@mL�$*��$�{P!����$@�ԜIt�I�ژ�Itje�v*d�|gY>�9���+���1!����$��T�$:�2 �;2�J�3�,T�$:�2 �;2�N�L�N�L��+���S!���;���A�L��+���S!����$@�T�$:�2 �;2�J�3�,T�$:�2 �;2�N�L�N�L��+���S!���;���A�L��+���S!����$@�T�$:�2 �;2�J�3�,T�$:�2 �;2�N�L�N�L��+���S!�h��D�O*d�\�ȝ �D'W&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�\�ȝ �D%ߙD�*d�\�ȝ -�D'W&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�\�ȝ -�D#��$�|R!����$@�T�$:�2 �;2�N�L�N�L���L"�2�N�L�N�L��+���S!����$@�T�$*��$�|P!����$@�T�$:�2 �;2�N�L�N�L���L"�2�N�L�N�L��+���Ss&ѹW&jcB&Q�w&�݃ -�D'W&r��L�S�3 �%B&щ�I�ک�IT�Id���L�s�L�ƄL�S+���S!����$@�ԜITneY�L�$:�2 p;2�N�L�N͙D�^��� �D�ޙDv*d�\�ȝ -�D'W&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�\�ȝ +�D'W&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre wj�$:��$@mL�$*��$�{P!����$@�ԘIt�s&�D�$:�2 P;2�J�3�,ԜIt�I�ژ�Itje�v*d�\�ȝ�3�ʭL"�� �D�V&n�B&�ɕI�ܩ9���+���1!���;���A�L��+���S!����$@�T�$:�2 �;2�J�3�,T�$:�2 �;2�N�L�N�L��+���S!���;���A�L��+���S!����$@�T�$:�2 �;2�F~�ID��B&�ɕI�ܩ�Itre w*d�\�ȝ �D%ߙD�*d�\�ȝ -�D'W&r�B&�ɕI�ܩ�I4�L"�'2�N�L�N�L��+���S!����$@�T�$*��$�|P!����$@�T�$:�2 �;2�N�L�N�L���L"�2�N�L�N�L��+���S!�����L^he�/�2��F#���L���r�� 2����$�%��_���i�(�ri��ϓ/��û=<�]+!N����_�7�so^���7��>�6ìv&�fةu�!�� -�vr�fr���;��6C�%�m��x�f�Ճ -�vr�fr��m��\��ܩp�a'�m� w*�fX��m�Y>�p�a'�m� w*�f��u�!ȝ -�vr�fr��m��|�f�� -�vr�fr��m��\��ܩp�a'�m� w*�fX��m�Y>�p�a'�m� w*�f��u�!ȝ -�vr�fr��m��|�f�� -�vr�fr��m��\��ܩp�a'�m� w*�fX��m�Y>�p�a'�m� w*�f��u�!ȝ -�vr�fr��m��|�f�� -�vre� w*d��\�>ȝ -�~'W�r�B�_�w��� -�~'W�r�B��ɕ�ܩ��wre� w*d���"ӏ�I�L��+��S!�����A�T��;�2}�;2�J�3�,Ԝ�w��ژ��wje��v*d��\�>ȝ�3�ʭL?�� �~�V�n�B��ɕ�ܩ9���+��1!ӯ�;���A�L��+��Ss�߹W�jcB�ߩ��۩��W��g���L�s�L�ƄL�S+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L���L?�2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L���L?�2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L��_d�Q>���wre� w*d��\�>ȝ -�~'W�r�B�_�w��� -�~'W�r�B��ɕ�ܩ��wre� w*d��|g�Y>���wre� w*d��\�>ȝ -�~'W�r�B�_�w��� -�~'W�r�B��ɕ�ܩ9���+��1!ӯ�;���A�L��+��Sc�ߩϙ>��!�����A�T��+����|Ps�߹W�jcB�ߩ��۩��wre� wj��+�2��v&d��Z�>�� -�~'W�r��L�s�L�ƄL�R�L?�2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L���L?�2�N�L�N�L��+��S!�����A�T���E�� -�~'W�r�B��ɕ�ܩ��wre� w*d��|g�Y>���wre� w*d��\�>ȝ -�~'W�r�B�_�w��� -�~'W�r�B��ɕ�ܩ���Ҽ���V��B)�o��3�������2������L�_~��ۏ_?���ߞ����O�.�&�����\i������7o:�w^'u��v*tĕ|w�Y>��wru� w*tĝ\1ȝ -q'WGr�BG\�wG�� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ -q'WGr�BG\�wG�� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ -q'WGr�BG\�wG�� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ -q'WGr�BG��/:�(�T�;�:b�;:�N���N�����#�S�#��#��A�q�^1�� q�VGn�BG����ܩ�#��ꈳڙ�wju��v*tĝ\1ȝ�;�ν:bP:�J�;��T�;�:b�;5wĝ{uĠ6&tĝZ1�� -q%�q�j�;��AmL�;�:bp;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T��EG� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ -q'WGr�BG\�wG�� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ�;�ν:bP:�J�;��T�;�:b�;5vĝ����-:�N���N�����8�5wĝ{uĠ6&tĝZ1�� -q'WGr�掸r�#�jgBGܩ��۩�wru� wj�;��AmL�+�{P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N����_t�Q>��wru� w*tĝ\1ȝ -q'WGr�BG\�wG�� -q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��wru� w*tĝ\1ȝ -q�`ێ^huė/t8^�����:�ߢx9)�;�������?��×O��ۛ���o?\�gC|�;����}�Ǜ��g�����<����������yG}~�N�"_7�wr�sr��{�+��9�jg�=�Z���۩p�y'�=� wj��S��9�["�s^��=�Y=�p�y'�=� w*�s��u�9ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O�ɵO�r��>A%��Y>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O�ɵO�r��>A%��Y>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O�ɵO�r��>A%��Y>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O�ɵO�r��>A#��'��I�}�N�}�;� :�� @�T�'���'��Sa����}�,ԼOй�>�� ��Z��v*�tr��ܩy��rk� �� ��Z��v*�tr��ܩy��s�}P� *��'��A�}�N�}�;5�t�O�jc�>A��>�� -��|�d���}�ν� @mL�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'h��Q>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O�ɵO�r��>A%��Y>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩy��s�}P� *��'��A�}�N�}�;5�t��>��a��k���N�}�J�� �|P�>A�^��6&�tj��۩�O�ɵO�r��}�ʭ}��v&�tj��۩�O�ɵO�r��}�ν� @mL�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�F~�O� -��\� w*�tr��ܩ�O�ɵO�r��>A%��Y>��O�ɵO�r��>A'�>ȝ -��\� w*�T�O�� -��\� w*�tr��ܩ�O -�v��^h�\�P�'o�������O��=������~>ޞ�?�_(X�鱵P��9��O?��~�������������z�E��_�D{���Rp�����+���z��{�3p^3x�u�B�� �Z �v*,$tr-$�ܩy!�rk!!�� �Z �v*,$tr-$�ܩq!�S�@�� �x/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - �|/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - �|/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - �|/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - ��b!!�':�@�TXH��ZH��Sa!��k!�N���J��|P�BB�^ �6&,$tj-$�۩���ɵ��r�慄ʭ���v&,$tj-$�۩���ɵ��r�慄ν@mLXH��{!!�:�@�Լ�й�B�� �Z �v*,$T僚:�ZH��1a!�Sk!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��_,$D���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - �|/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r�慄ν@mLXH��{!!�:�@�Ը�Щ� ~K���N��P;*�^H��A� �{-$�ژ��Щ���n��BB'�Bȝ�*��ڙ��Щ���n��BB'�Bȝ�:�ZH��1a!�R�TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;��BB�O*,$tr-$�ܩ���ɵ��r��BB'�Bȝ - �|/$d���BB'�Bȝ - �\ w*,$tr-$�ܩ��P��BB�*,$tr-$�ܩ���ɵ��r��BB��ۅx���p�B��� �~�B��N?�:�B�zl-$ܝ���>��ӿ��ͯ���������ul%<=��_�_��V��x{��q�/S -���7�|3��7����_���i�;�������v�>�jc^1?�<��=�����vꕥ��c��/�1�|R�:F�^��6&�ctj�c�۩���ɵ�r��u�ʭu��v&�ctj�c�۩���ɵ�r��u�N}^���["�cT⽎�Ճ -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -��\� w*�cT� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -��\� w*�cT� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -��\� w*�cT� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -��\� w*�c4�u�(�TX���Z���Sa��k�N�u�N�u�;�1*�^���A���{�c�ژ��ѩ��n��:F'�:ȝ��1*��1�ڙ��ѩ��n��:F'�:ȝ��1:�Z���1a�R�u��TX���Z���S�:F�^��6&�ctj�c�۩��Q��:F�j^���k�Ƅu�N�up;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�F~��� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -��\� w*�cT� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ��1:�Z���1a�R�u��TX���Z���S�:F�>�c��-�1:��1@�TXǨ�{#�5�ctjc�:F��:�� -��\� wj^Ǩ�Z��jg�:F��:�� -��\� wj^���k�Ƅu�J��1�{Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TX�h��Q>����ɵ�r��:F'�:ȝ -��\� w*�cT� -��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>����ɵ�r��:F'�:ȝ -�aΡ]ǀZ��/t���������{���&�c�o���ׇ��V��������S���:������������ۯ����/��?��������#��;�<=������zQ] Rt��z�R�� -EP'Wr�B��U�ܩPurA w*A�|AY>�PurA w*A�\Eȝ -EP'Wr�BT�w�� -EP'Wr�B��U�ܩPurA w*A�����I�"����S���*�@�T(�:�� �;��J���,�\u�U�ژPujA�v*A�\Eȝ���ʭ"(�� EP�Vn�B��U�ܩ��ܫ�1��Ի��A�"����SsԹWjcBԩU�۩PU�]e���"�s�"�Ƅ"�S��S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"��_AQ>�PurA w*A�\Eȝ -EP'Wr�BT�w�� -EP'Wr�B��U�ܩPurA w*A�|AY>�PurA w*A�\Eȝ -EP'Wr�BT�w�� -EP'Wr�B��U�ܩ��ܫ�1��Ի��A�"����Scԩ�E�����*�@�T(�*�.��|PsԹWjcBԩU�۩PurA wj.�*����v&A�ZE�� -EP'Wr��"�s�"�Ƅ"�R�"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(��E� -EP'Wr�B��U�ܩPurA w*A�|AY>�PurA w*A�\Eȝ -EP'Wr�BT�w�� -EP'Wr�B��U�ܩP�t�-���Vt�B� -o�[���^�O�!�E���E����������/����o���o����I��|����>������ϟ����>�:�ݽ���]�����>\˄t.�x�co~<�O���6����O�ur�����p��|����'�J�:Gn��p�|��#�S� �N�p �|���p$wj>W�� 8�;5��+��ɝ�O�ur�����p�|��#�S� �R�N��ܩ�\)_'�H��|����5��+��ɝ�O���u��N�'�J�:Gr��p�\'�@>��\)_'�H��|���p$wj>W�� 8�;5����:�A�'�J�:Gr��p�|��#�S� �R�N��ܩ�\%�'�|R� �R�N��ܩ�\)_'�H��|���p$wj>��u䃚O���u��N�'�J�:Gr��p�|��#�S� �N�p �|���p$wj>W�� 8�;5��+��ɝ�O�ur�����p�|��#�S� �R�N��ܩ�\�>��#�1� �N�p��|���p$wj:W�_O���-1��+�����O�ur�����p��|����'�J�:Gn��p�|��#�S� �νN��ڙ�\�^'����|���p$wj<W��'�Hm�|�S��5��+��ɝ�O���u��N�'�J�:Gr��p�\'�@>��\)_'�H��|���p$wj>W�� 8�;5����:�A�'�J�:Gr��p�|��#�S� �R�N��ܩ�\%�'�|R� �R�N��ܩ�\)_'�H��|���p$wj>��u䃚O���u��N�'�J�:Gr��p�|��#�S� �N�p �|���p$wj>W�� 8�;5��ˇ��p�B������ ��F�;<�����u:wx>�g�e���S����=��������:w�����ǧ��ۗ��\����������Bx����;��so�q|��������6�y�)_O�|P�ȏ7O�����4ʝzE�ps�p�k��Q��+����ׇQm���χ�ۧ��3_O�{P�ȏ7����3_O�ܩW�7����aT������՟��it;���������c����^����������aT�����><�����v���9<֟��i�;�}���ռ�iq�>?Ljg^1o��گ{=�n�^�?�����|=�r�^�?�<���gQ������psx��~��iR���{y8��z�N�"?}/�/����O�ܩW�������O�ܩ�ˏ�o�xl?��4�������ۏ}=�r�^�����]����Q��+�ӷ�������F�Sߗ�n><߷�z��zE~����C����Q��+����Ǿ�F�S�ȟn����4ʝ������ܿ�.L%_O�|P��O��]�=�r�^�����s����Q��+����O�ܩ��N�ε�x����$�+�ӷs8�?�YO�ܩW�o��m����Q��+��Ea�|]?Fr����:�������J��~��N���u�ɝ��+���1�;5_?��u��5_?V���c$wj�~�����H��|�X)_�ܩ���N���@>����R��#�S��c�|]?Fr����J��~��N�U�}�X�Oj�~�����H��|�X)_�ܩ���R��#�S��c�\�|P��c��|�����+���1r;5_?V���c$wj�~�s���@��|�X�^�۩���R��#�S��c��|������Ժ~܃��+���1�;5^?V��� -�� �+�Z�+�v*��T�=��僚�W:�_�1a|�Sk|�N��N���;�W*�_��A��N���;�W:��W@�T_��_�Sa|����,T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@�T_��_�Sa|����,T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@�T_��_�Sa|��_��D����J'�� -ȝ -�+�\�+ w*��tr���ܩ0�R���J�*��tr���ܩ0���5�r���J'�� +�D'W&r�B&�ɕI�ܩ�IT�Id��B&�ɕI�ܩ�Itre w*d�0�I��L��R&�hdw�I<^�>A&��ڙĺd�O�����?�_.-y�y�~~x���k%ĉ�x��ˁ��z��+�s�����w�'�f��΄�;�n3�S�6�N��A��x�a�>�f�D�Ͱ���zP�6�N��A�T�Ͱ��6C�;n3����N��+���0�n3����N��;�n3�S�6�N��A�T�Ͱ����|P�6�N��A�T�Ͱ��6C�;n3����N��+���0�n3����N��;�n3�S�6�N��A�T�Ͱ����|P�6�N��A�T�Ͱ��6C�;n3����N��+���0�n3����N��;�n3�S�6�N��A�T�Ͱ����|P�6�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L��_d�Q>���wre� w*d��\�>ȝ +�~'W�r�B�_�w��僚3�ν2}P2�N�L�N�L��+��Ss�_���g�3!�������T��;�2}�;5g��{e��6&d��zg��=���wre� wj��;���AmL��;�2}p;2�J�3�,Ԝ�w��ژ��wje��v*d��\�>ȝ +�~%ߙ~�*d��\�>ȝ +�~'W�r�B��ɕ�ܩ��W��g��B��ɕ�ܩ��wre� w*d��\�>ȝ +�~%ߙ~�*d��\�>ȝ +�~'W�r�B��ɕ�ܩ��W��g��B��ɕ�ܩ��wre� w*d��\�>ȝ +�~%ߙ~�*d��\�>ȝ +�~'W�r�B��ɕ�ܩ��7�L?�'2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�N�L�N�L���L?�2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;5g��{e��6&d��zg��=���wre� wj��;�9��["d��X�>�� +�~%ߙ~�j��;���AmL��;�2}p;2�N�L�N͙~�V���΄L�S+��S!�����A�Ԝ�w��ژ��W��g��B��ɕ�ܩ��wre� w*d��\�>ȝ +�~%ߙ~�*d��\�>ȝ +�~'W�r�B��ɕ�ܩ��W��g��B��ɕ�ܩ��wre� w*d��\�>ȝ +�~#����|R!�����A�T��;�2}�;2�N�L�N�L���L?�2�N�L�N�L��+��S!�����A�T��+����|P!�����A�T��;�2}�;2�X�w�>����/_(e��~s��ts<>�A���ڙ�����/�~����Z��ӛܽ��х���p����O�+���B�r=��-CG��뤎�N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T��EG� +q'WGr�BG����ܩ�wru� w*tĕ|w�Y>��#�ܫ#�1�#�����T�;�:b�;5wĕ[qV;:�N���N�����#�SsGܹWGjcBG\�wG�݃ +q'WGr�掸s���Ƅ��S�#�S�#��#��A�q�^1�� q�VGn�BG����ܩ�W��g��BG����ܩ�wru� w*tĝ\1ȝ +q%�q�*tĝ\1ȝ +q'WGr�BG����ܩ�W��g��BG����ܩ�wru� w*tĝ\1ȝ +q%�q�*tĝ\1ȝ +q'WGr�BG����ܩ�W��g��BG����ܩ�wru� w*tĝ\1ȝ +q#�舣|R�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�SsGܹWGjcBG\�wG�݃ +q'WGr�Ǝ�S�;b�%BG܉��ک�W��g��掸s���Ƅ��S�#�S�#���A���Wnu�Y�L�;�:bp;:�N���N�q�^1�� q��qv*tĝ\1ȝ +q'WGr�BG����ܩ�W��g��BG����ܩ�wru� w*tĝ\1ȝ +q%�q�*tĝ\1ȝ +q'WGr�BG����ܩ�7�8�':�N���N�����#�S�#���A�T�+�|P�#���A�T�;�:b�;:�N���N�����8�:�N���N�����#�S�#l��������qx���CG��[/'erG����ݹ#����i��}{s|~���l��w�_<]���x����S|��؛7���?<���>��:��O�۩W��F�N�{�A��|�y��=�Y�L��S�sp;�9����N���w��=� ~K�{�+��<��9����N�{�;��9�Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'h��Q>��O�ɵO�r��>A'�>ȝ +��\� w*�T�O�僚� :��'��1a��Sk���N�}�N�}�;5�Tn�d�3a��Sk���N�}�N�}�;5�t�O�jc�>A����=��O�ɵO�r��}�ν� @mL�'���'��Sa����}�,ԼOй�>�� ��Z��v*�tr��ܩ�OP��>A�*�tr��ܩ�O�ɵO�r��>A'�>ȝ +��|�d���>A'�>ȝ +��\� w*�tr��ܩ�OP��>A�*�tr��ܩ�O�ɵO�r��>A'�>ȝ +��|�d���>A'�>ȝ +��\� w*�tr��ܩ�OP��>A�*�tr��ܩ�O�ɵO�r��>A'�>ȝ +���b� �'� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;5�t�O�jc�>A����=��O�ɵO�r��}�N}�'��["�tb��ک�OP��>A�j�'��k���Ƅ}�N�}p;� :�� @�ԼOP��O��΄}�N�}p;� :�� @�ԼOй�>�� ��z�d���>A'�>ȝ +��\� w*�tr��ܩ�OP��>A�*�tr��ܩ�O�ɵO�r��>A'�>ȝ +��|�d���>A'�>ȝ +��\� w*�tr��ܩ�O��/� �|Ra���k���N�}�N�}�;� :�� @�T�'��{� �� :�� @�T�'���'��Sa���k���N�}�J�� �|Pa���k���N�}�N�}�;� Ba����}��J���pwx��;���u����|������������+�9=� +�=�?������O���כ�~�W><?�P/�(���˜hO�WW +7�w�%�SϽy�w��k�NXH��1a!�Sk!�N���N���;5/$Tn-$d�3a!�Sk!�N���N���;5.$t��B��a!��TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��_,$D���BB'�Bȝ + �\ w*,$tr-$�ܩ��P��BB�j^H��k!�Ƅ��N��p;:�@�Լ�P�����΄��N��p;:�@�Լ�й�B�� �z/$d���BB'�Bȝ�:�ZH��1a!�Sk!�N���J��|P�BB�^ �6&,$tj-$�۩���ɵ��r��BB%� Y>����ɵ��r��BB'�Bȝ + �\ w*,$T� + �\ w*,$tr-$�ܩ���ɵ��r��BB%� Y>����ɵ��r��BB'�Bȝ + �\ w*,$T� + �\ w*,$tr-$�ܩ���ɵ��r��BB%� Y>����ɵ��r��BB'�Bȝ + �\ w*,$4(�TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�Լ�й�B�� �z/$d���BB'�Bȝ:�y!�o���Љ���j��BB%� Y>�y!�s��P:���TXH��ZH��S�BB��BBV;:���TXH��ZH��S�BB�^ �6&,$T꽐�݃ + �\ w*,$tr-$�ܩ���ɵ��r��BB%� Y>����ɵ��r��BB'�Bȝ + �\ w*,$T� + �\ w*,$tr-$�ܩ���ɵ��r��BB#�XH��I���N���;:�@�TXH��ZH��Sa!��,TXH��ZH��Sa!��k!�N���N���;*�^H��A���N���;:�@�TXHq���/�._�pw}!!��o_H8����WZHX������B���Ӈ�}�����������w�������������J8o�W>����eJ�_y=��o�x��������#??�r�^�?��>��ׇQm�+槛����V}~�N��v,��:F�Oj^���k�Ƅu�N�up;�1:��1@�Լ�Q�����΄u�N�up;�1:��1@�Ը�ѩ�� ~K�u�J��1�zPa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�F~��� +��\� w*�ctr�c�ܩ���ɵ�r��:F%��Y>�y�s�uP�1:��1��TX���Z���S�:F��:FV;�1:��1��TX���Z���S�:F�^��6&�cT꽎�݃ +��\� wj^���k�Ƅu�N�up;�1*�^���A���{�c�ژ��ѩ��n��:F'�:ȝ +��|�cd���:F'�:ȝ +��\� w*�ctr�c�ܩ��Q��:F�*�ctr�c�ܩ���ɵ�r��:F'�:ȝ +��|�cd���:F'�:ȝ +��\� w*�ctr�c�ܩ��Q��:F�*�ctr�c�ܩ���ɵ�r��:F'�:ȝ +��|�cd���:F'�:ȝ +��\� w*�ctr�c�ܩ����/�1�|Ra��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���S�:F�^��6&�cT꽎�݃ +��\� wj\����u�%�:F'�:�� +��|�cd���u�ν�1@mLX���Z���Sa��k�N���[�Y�LX���Z���Sa��k�N���{�c�ژ��Q��:Fv*�ctr�c�ܩ���ɵ�r��:F'�:ȝ +��|�cd���:F'�:ȝ +��\� w*�ctr�c�ܩ��Q��:F�*�ctr�c�ܩ���ɵ�r��:F'�:ȝ +���b#�'�1:��1@�TX���Z���Sa��k�N�u�J��1�|Pa��k�N�u�N�u�;�1:��1@�TXǨ�{#��1:��1@�TX���Z���Sa#�9���Bk�����1����|wz��u������?�����J=^Y=8?v~��b�p^������_��|���w����?������>����y�B��z�����?���X/��D*�._>A�P*��|P���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"��_AQ>�PurA w*A�\Eȝ +EP'Wr�BT�w�僚��ν� P��N�"�N�"����SsT�Ue�3���*���T(�:�� �;5A�{A�6&A�zA�=�PurA wj.�:�*�@mL(�:�� p;��J���,�\u�U�ژPujA�v*A�\Eȝ +EP%�EP�*A�\Eȝ +EP'Wr�B��U�ܩPU�]e��B��U�ܩPurA w*A�\Eȝ +EP%�EP�*A�\Eȝ +EP'Wr�B��U�ܩPU�]e��B��U�ܩPurA w*A�\Eȝ +EP%�EP�*A�\Eȝ +EP'Wr�B��U�ܩP5�"(�'��N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;5A�{A�6&A�zA�=�PurA wj,�:���["A�XE�� +EP%�EP�j.�:�*�@mL(�:�� p;��N�"�N�EP�V��΄"�S��S���*�@��\u�U�ژPU�]e��B��U�ܩPurA w*A�\Eȝ +EP%�EP�*A�\Eȝ +EP'Wr�B��U�ܩPU�]e��B��U�ܩPurA w*A�\Eȝ +EP#�(��|R���*�@�T(�:�� �;��N�"�N�"���"(���N�"�N�"����S���*�@�T(�*�.��|P���*�@�T(�:�� �;�����E��*�._(A�~k�r�����?���S��=A����_~��߿���?����ן?�����������_~~��������ç_硳��߁���י�Ӈk��N���z�͏�� ���&��#�S� �N�p �x�t�O��ژ�\�^'����|���p$wj>��u䃚O���u��N�'�J�:Gr��p�|��#�S� �N�p �|���p$wj>W�� 8�;5��+��ɝ�O�ur�����p�|��#�S� �R�N��ܩ�\)_'�H��|����5��+��ɝ�O���u��N�'�J�:Gr��p�\'�@>��\)_'�H��|���p$wj>W�� 8�;5�����\�Oj>W�� 8�;5��+��ɝ�O���u��N�'�:�N��|P� �R�N��ܩ�\)_'�H��|���p$wj>��u䃚O���u��N�'�J�:Gr��p�|��#�S� �N�p �|���p$wj>W�� 8�;5��+��p�6f>שu܃�O���u��NM'�J�� 8�%�p�x��#�S� �N�p �x�t�O��ژ�\�^'����|���p$wj<� 8P;3��+�����O���u��N�'�J�����O�uj�����p�|��#�S� �R�N��ܩ�\)_'�H��|����5��+��ɝ�O���u��N�'�J�:Gr��p�\'�@>��\)_'�H��|���p$wj>W�� 8�;5�����\�Oj>W�� 8�;5��+��ɝ�O���u��N�'�:�N��|P� �R�N��ܩ�\)_'�H��|���p$wj>��u䃚O���u��N�'�J�:Gr��p�PVu�^��ܛ:<^=���w������?�N'�ϧ����~js��g�����[g��}�����ts{��3����><�^��^O��{'��z��;�/��t�9���;/4��i�������᱕��F�S��n�w���4ʝzE�t������0������ps�t�~��ir�������~��i�;�������v�>�jc^1������3??�n��������ܽ�vL#�� ��+��W�rֲs�>�jc^1���ۇ�V}~�N�"?}5���3??�r��/?����?-���I��+�����S�u�����+���s����Q��+�#��,�����n��|=M�A�"?}/��_O�ܩW�����wa:��i�;����������i�;�}������Ǿ�&��^�����c����Q��+�ӷs�k?��4ʝzE~�v>�߶���(w����͇���c_O�|P��O��zzh?��4ʝzE�p�������(w������c����F�Sߗߟ����߅���i����۹k���Q��+�ӷs|n?��4ʝzE������i�;�}���۹���܃u~��zE~�v��g1�i�;�����|�m?��4ʝzE~�(�����H��|�X'��c �|�X)_�ܩ���R��#�S��c�|]?Fr����:�������J��~��N���u�ɝ��+���1�;5_?��u��5_?V���c$wj�~�����H��|�X)_�ܩ���J����I���u�ɝ��+���1�;5_?V���c$wj�~����1�j�~�t��#�1��c�z]?Fn����J��~��N�u�u�����+���1r;5_?V���c$wj�~�t��#�1��c�Z�{P��c�|]?Fr����J�_�1a|�Sk|�N��J��W�|P��J�^�+�6&��tj���۩0���5�r���J%��+Y>�0���5�r���J'�� ȝ -�+�|��d����J'�� +�+�\�+ w*��T�=��� +�+�\�+ w*��tr���ܩ0���5�r���J%��+Y>�0���5�r���J'�� ȝ -�+�\�+ w*��tr���ܩ0�R���J�*��tr���ܩ0���5�r���ν�W@mL_��{|%��W:��W@��8�ҩ��+ ~K��N��P;�W*�_��A��+�{���ژ0�ҩ5�n���J'�� -ȝ��W*��W�ڙ0�ҩ5�n���J'�� -ȝ��W:�_�1a|�R���T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@�T_��_�Sa|����,T_��_�Sa|��k|�N��N���;�W���J�O*��tr���ܩ0���5�r���J'�� +�+�\�+ w*��T�=��� +�+�\�+ w*��tr���ܩ0���5�r���J%��+Y>�0���5�r���J'�� ȝ -�+�|��d����J'�� +�+�\�+ w*��4��(�T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@�T_��_�Sa|����,T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@��<�ҹ�� +�� �+�z��d����J'�� +ȝ�W:�y|�o�0�҉5�j���J%��+Y>�y|�s��P�W:��W��T_��_�S��J���JV;�W:��W��T_��_�S��J�^�+�6&��T�=��݃ +�+�\�+ w*��tr���ܩ0���5�r���J%��+Y>�0���5�r���J'�� ȝ -�+�\�+ w*��tr���ܩ0�R���J�*��tr���ܩ0���5�r���J��W�����������7���"ǻ�?��+��=�}�-`<ܽ�j��S�����<���}�X����_������ᗟ�LJ�?�����c���p����_��>��q���9�{Џ�3���?����B)��S!�����@�T��:�2<�;2�J�3�,T��:�2<�;2�N��N���+��S!ë�;���A���+��S!�����@�T��:�2<�;2�J�3�,T��:�2<�;2�N��N���+��S!ë�;���A���+��S!�����@�T��:�2<�;2�F~��E��B��ɕ�ܩ��urex w*dx�\ȝ -^%�^�j��:���@mL��:�2<p;2�N��N�^�V���΄�S+��S!�����@�Ԝ�u��ژ��U��e��B��ɕ�ܩ9���+��1!�������T��*���|Ps�W�jcB�ש��۩��urex w*dx�|gxY>���urex w*dx�\ȝ +�+�\�+ w*��T�=��� +�+�\�+ w*��tr���ܩ0���5�r���J#�_��I��N���;�W:��W@�T_��_�Sa|����,T_��_�Sa|��k|�N��N���;�W*�_��A��N���;�W:��W@�T_��!�� +��_�|������F�S�x��ga|��Ϸ���%�������_m=v~�x�^9��W���/�}���w��_>_��?��������ǿ}}�l�_n��_�����~���?x�>�u�Qc�����2�w^(ex w*dx�\ȝ ^'W�r�B�W�w��� ^'W�r�B��ɕ�ܩ��urex w*dx�|gxY>���urex w*dx�\ȝ ^'W�r�B�W�w��� ^'W�r�B��ɕ�ܩ��urex w*dx�|gxY>���urex w*dx�\ȝ -^'W�r�B���/2�(�T��:�2<�;2�N��N���+��S!ë�;���A���+��S!�����@�T��:�2<�;2�J�3�,T��:�2<�;2�N��N���+��S!ë�;���A���+��S!�����@�Ԝ�u��ژ��U��e��B��ɕ�ܩ1�����o���ubex�v*dx�|gxY>�9���+��1!�������T��:�2<�;5gx�[^V;2�N��N���+��Ss�W�jcB�W�w��݃ +^'W�r�B���/2�(�T��:�2<�;2�N��N���+��S!ë�;���A�^�^�� ^�V�n�B��ɕ�ܩ9ë���ڙ��ujex�v*dx�\ȝ�3�ν2<P2�J�3��T��:�2<�;5gx�{ex�6&dx�Z�� +^%�^�j��:���@mL��:�2<p;2�N��N����/�2�N��N���+��S!�����@�T��*���|P!�����@�T��:�2<�;2�N��N����/�2�N��N���+��S!�����@�T��*���|P!�����@�T��:�2<�;2�N��N����/�2�N��N���+��S!�����@�T���E�� ^'W�r�B��ɕ�ܩ��urex w*dx�|gxY>���urex w*dx�\ȝ ^'W�r�B�W�w��� -^'W�r�B��ɕ�ܩ��urex w*dx��"Ë�I���+��S!�����@�T��:�2<�;2�J�3�,T��:�2<�;2�N��N���+��S!ë�;���A���+��S!�����@�T��b%�ex�B+û|���7��w��ߝ~>}�Lw���V�w�w��������_�u^�|z���a������_�r��:��|���C��>�~hP��Ժ�N�������Q>��~�ν��1�~�N�����T����~h�;5�]�u?tV;��Ժ�N���;���S��Н�|?4���~�J����A���;���S�~�N���A�T����~h�;��~�,T����~h�;����N���;���S�~�J����A���;���S�~�N���A�T����~h�;��~�,T������Sa���k��N�a�N�a -�;�)*����A�a�N�a -�;�):��)@�T������Sa����a�,T������Sa���k��N�a�N�a -�;�)*����A�a�N�a -�;�):��)@�T������Sa����a�,T������Sa���k��N�a�N�a -�;�)��0E�O*Str S�ܩ0L��5Lr��0E'�0ȝ -��|Sd���a�ν�)@mL������Sa���k��N���[�Y�L������Sa���k��N���{ S�ژ0LQ��0Ev*Str S�ܩy��s�a -P�):��)��T���{�"�5St�5Ljc�0E��0�� -��\� w*ST�=L�� +^'W�r�B��ɕ�ܩ��urex w*dx�|gxY>���urex w*dx�\ȝ�3�ν2<P2�J�3��T��:�2<�;5fx�����-2�N��N����/�5gx�{ex�6&dx�Z�� +^'W�r���r+��jgB�ש��۩��urex wj��:���@mL��*���{P!�����@�T��:�2<�;2�N��N����/�2�N��N���+��S!�����@�T��*���|P!�����@�T��:�2<�;2�N��N���_dxQ>���urex w*dx�\ȝ +^'W�r�B�W�w��� +^'W�r�B��ɕ�ܩ��urex w*dx�|gxY>���urex w*dx�\ȝ +^�ĺ^hex�/�2��F������ϧ����� +����?�~��O��K�O߾�7���s���;�+W�B��C�W��З�z�~�w�'� jc��НZ�C�۩p?t#��:�'5�ݹ��Р6&�ݩu?4�� +�Cwr� r����+���jg��НZ�C�۩p?t'��� wj��S���["�]����Y=�p?t'��� w*���u?4ȝ +�Cwr� r���Е|��� +�Cwr� r���Н\�C�ܩp?t'��� w*�]����Y>�p?t'��� w*���u?4ȝ +�Cwr� r���Е|��� ��\� w*Str S�ܩ0L��5Lr��0E%��Y>�0L��5Lr��0E'�0ȝ ��\� w*ST�=L�� ��\� w*Str S�ܩ0L��5Lr��0E%��Y>�0L��5Lr��0E'�0ȝ ��\� w*ST�=L�� ��\� w*Str S�ܩ0L��5Lr��0E#����I�a�N�a -�;�):��)@�T������Sa����a�,T������Sa���k��N�a�N�a -�;�)*����A�a�N�a -�;�):��)@�T������Sa����a�,T������Sa���k��N���{ S�ژ0LQ��0Ev*Str S�ܩq��S��)@����X��v*ST�=L�僚�):����1a��Sk��N�a�N�a -�;5STn Sd�3a��Sk��N�a�N�a -�;5St�5Ljc�0E����=�0L��5Lr��0E'�0ȝ +�;�):��)@�T������Sa����a�,�<Lѹ�0�� ��Z��v*Str S�ܩy��rk�"�� ��Z��v*Str S�ܩy��s�a +P�)*����A�a�N�a +�;5St�5Ljc�0E��0�� +��|Sd���a�ν�)@mL������Sa���k��N�a�J��)�|Pa���k��N�a�N�a +�;�):��)@�T���{�"��):��)@�T������Sa���k��N�a�J��)�|Pa���k��N�a�N�a +�;�):��)@�T���{�"��):��)@�T������Sa���k��N�a�J��)�|Pa���k��N�a�N�a +�;�):��)@�T�h��Q>�0L��5Lr��0E'�0ȝ +��\� w*ST�=L�� +��\� w*Str S�ܩ0L��5Lr��0E%��Y>�0L��5Lr��0E'�0ȝ ��\� w*ST�=L�� +��\� w*Str S�ܩy��s�a +P�)*����A�a�N�a +�;5St��0��a��k��N�a�J��)�|P�0E�^��6&Stj S�۩0L��5Lr��a�ʭa��v&Stj S�۩0L��5Lr��a�ν�)@mL���{�"��):��)@�T������Sa���k��N�a�J��)�|Pa���k��N�a�N�a +�;�):��)@�T���{�"��):��)@�T������Sa���k��N�a�F~1L� ��\� w*Str S�ܩ0L��5Lr��0E%��Y>�0L��5Lr��0E'�0ȝ -��\� w*S4�a�(�T������Sa���k��N�a�N�a -�;�)*����A�a�N�a -�;�):��)@�T������Sa����a�,T������Sa���k��N�a����S��a��J��~�0���e�ឆ)�ck���<L�?}z������?�|^�����\}b=���P��Qq�>�TǗ�I��K�����II5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu%�Iu�*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu%�Iu�*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu%�Iu�*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu#�H��|R!���J�A�TH�;��j�;��N���N�����:�5'՝{%ՠ6&$՝ZI5�� -Iu'WR r�椺r+��jgBRݩ�T�۩�Twr%� wjN�;�J�AmLH�+�N��{P!���J�A�ԜTw�T�ژ�Twj%��v*$Օ|'�Y>�9���+��1!���J���TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!�n�Iu�O*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu%�Iu�*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� wjN�;�J�AmLH�+�N��{P!���J�A�ԘTw�sR �DH�;��jP;��J���,ԜTw�T�ژ�Twj%��v*$՝\I5ȝ���ʭ�:�� Iu�VR n�BR�ɕT�ܩ9���+��1!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��F~�TG��BR�ɕT�ܩ�Twr%� w*$՝\I5ȝ -Iu%�Iu�*$՝\I5ȝ -Iu'WR r�BR�ɕT�ܩ�TW�Tg��BR�ɕT�ܩ�Twr%� w*$�!�n�jx��T_�PJ������d��=PR�������ې��|�9~�Y����n=��|�t��;<N��\� ��z����wyx:�<><��6���٘W�7�/�P���٘W�O7�/��R�_�%�[��������m�Q��A��+���+ʏz=Lfc^1?��>���g���xE{�>��ڏ��0���~������+�����b>}!/'+���}K��=}�����0��y�|�B��G}~���|�|8}!/ۈ�ςW�Ǜ���+^�ؘW��_�?��z��Ƽb~�yh?�� �ʬ��i�{�$z� S&�YK&�lL�1�̚1�fcIeֆI6L�0�fg�|Ie�zI6�K*��K�٘0\R��[��ƄՒƼGK�ٙ0YR��X��Ƅ��ʬ��l6&��Tfm�d�1a��1hv&̔Tf��d�1a��2k�$�� %�Y�$�lLX'i�{�$�� �$�Y�$�lL�%�̚%�fc�(Ie�&I6I�$�fg�Ie�I6�H*��H�٘0DR��C��Ƅ�ƼGH�ٙ0AR��@��Ƅ��ʬ��l6&��Tfm�d�1ay�1��hv&̎Tf��d�1as�2kr$�� �#�Y{#�lLX)�c#�<�05R��4��Ƅ��ʬ��l6&��Tfm�d�1aa�1hvf���k]${�a[��jZ$�� �"�Y�"�l̼*҈5*�F�I�ʫE�,6&�Tf͉d�1�H%^["���K"�w�D�3aF�2kE$���7D*��D����bc�zHc��!���<R��rH��%�nH��lHFC*�6C�٘�Ҙ�`H4;�B*��B�٘�R�5��Ƅ��ʬ��l6&��4�=�΄��ʬ��l6&�Tf̓d�1a�2k$�� � �y�D�3a�2k$�� � �Y� �lL����fc�Hc�c ��L���Z�fc�He�H6F@*�6@�٘��Ҙ��H4;�?*��?�٘��Q�5���Ƅ�ʬݏl6&�~�яdL����Z��fc��Ge��G6�>*��>�٘��ј��G4;f>*�V>�٘��Q�5��Ƅ��ʬ}�l6&�{4�=��΄i�ʬe�l6&�zTf�zd�1aԣ2k�#�� ��yzD�3aΣ2k�#�� [�YS�l�<�Q�G��%G��#Q�L���Z��fc����{����7<館���^c�rGc�����<�Q��jG��%�fG��dG;*��:�٘y��k�#z�S�WKYlL��̚��fc摎J�6:��-:��bg�<Ge�:G6�9*��9�٘0�Q��ˑ�ƄU�ƼG9�ٙ0�Q��ȑ�Ƅ=�ʬ9�l6&�qTfmqd�1a��1�!�hv&�pTf�pd�1a��2k�#�� �Y��lLX�(���<�0�Q�����Ƅݍʬٍl6&�nTfmnd�1aq�1���hv&�mTf�md�1ak�2kj#�� C�Y;�lLX�h�{d#�� �Y�lL�ר̚��fc¸��y�v[#�ָ͚x����e���ۇ5^�<�İ0��[�w�e�?���/����_�}����o�^�������w�|����~}�����~z��o?�����ǟ������O���_�_���ᒻ���Wy�۸�=<\�6.N���>rr��gN�y�t��N�c'�|�;��A��'�\GO@�T8|��u��N��'�\P@�T8�R���,T8���u�N��(�\'Q@�T8���u�N��(�|�G��A�)�\GR@�T8���u*�N�s)�\S@�T8�R��ٔ,T8���u<�N�*�\'T@�T8���uH�N�c*���J�O*�T��:�r��a�N��* w*�W��:�r��J�Ϭd��©�N�c+ w*\��:�r��ٕN��+ w*_����J�*�`��:�r��!�N�S, w*�c��:�r��Q�J�ϲd���i�N��, w*h��:�r��3-�{j�1�XK���Z�{P�dK'���;5n����- ~K��-�X\@�T8�R���,�|ʥs�c.�6&t��:�n��Y�N��. wj>�R�u�%�� '^:����۩p襓��ȝ�Ͻt�u��Ƅ�/�z�}��A��/�\�_@�T8���u�N�30�\�`@�T8S��9�,T8 ��u�N��0�\�a@�T8��u �N�#1�|����A�S1�\�b@�T8��u2�N��1�\�c@�T8��/��D��� �N�#2 w*���:%r��9�N��2 w*�����L�*����:.r��N�3 w*����:4r�±�J���d���əN��3 w*���:=r����xd�;@/�N�\�P:B���o��^��^?Cs�������������=�1=�z�f����߾|���/��0�����/_��/�}����~�g������q�;?��뷏��Ͽ�<Ǭ�N�˧s���ǧ�kGg��V���q����u�w�'�k�ژ0�U���Vv*llur�l�ܩyf�s��-P��:�����T۪�{m+�5�mu�5�jc��V����� -�[�\�[ w*oU� -�[�\�[ w*�our���S�4d'�iH�;NCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�4d'�iH�;NCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�4d'�iH�;NC6�ӐQ>�p���4$ȝ -�!;�NC�ܩp���4$ȝ -�!+�> �� -�!;�NC�ܩp���4$ȝ -�!;�NC�ܩp���ӐY>�p���4$ȝ -�!;�NC�ܩp���4$ȝ -�!+�> �� -�!;�NC�ܩp���4$ȝ�OCv�u�ƄӐ�z����A�Ӑ�\�!A��x�S�OC��-NCvb���S�4d%ߧ!�|P�i�νNC�ژp�S�4$�� -�!;�NC�ܩ�4d��iȬv&����: n��i�N�Ӑ wj> ٹ�iHPNCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�4d'�iH�;NCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d#�8 � -�!;�NC�ܩp���4$ȝ -�!;�NC�ܩp���ӐY>�p���4$ȝ -�!;�NC�ܩp���4$ȝ -�!+�> �� -�!;�NC�ܩp���4$ȝ -�!�)��4$��: y�B�4dx�ӯN�&y9�uw�߳��O=n��r�txx�~�x�bϧ�|ܽ��������������-����;Mendstream +��\� w*ST�=L�� +��\� w*Str S�ܩ0L�a +x�5Lq�Bi�"��o��;��9��0�zl Sܞ�)���O��������+�����O��ۗs1��6*�������;��|�T��>)��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!�n�Iu�O*$՝\I5ȝ +Iu'WR r�BR�ɕT�ܩ�TW�Tg��椺s���Ƅ��S+��S!���J�A�ԜTWn%�Y�LH�;��jp;��N���N�Iu�^I5�� Iu��Iuv*$՝\I5ȝ���ν�jP��N���N�����:�5'՝{%ՠ6&$՝ZI5�� +Iu'WR r�BR]�wR�� +Iu'WR r�BR�ɕT�ܩ�Twr%� w*$Օ|'�Y>��Twr%� w*$՝\I5ȝ +Iu'WR r�BR]�wR�� +Iu'WR r�BR�ɕT�ܩ�Twr%� w*$Օ|'�Y>��Twr%� w*$՝\I5ȝ +Iu'WR r�BR]�wR�� +Iu'WR r�BR�ɕT�ܩ�Twr%� w*$Ս�"���I����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N�Iu�^I5�� Iu��Iuv*$՝\I5ȝ��N}N�A��Iu'VR j�BR]�wR�僚��ν�jP��N���N����+��SsR]��Tg�3!���J���TH�;��j�;5'՝{%ՠ6&$Օz'��=��Twr%� w*$՝\I5ȝ +Iu'WR r�BR]�wR�� +Iu'WR r�BR�ɕT�ܩ�Twr%� w*$Օ|'�Y>��Twr%� w*$՝\I5ȝ +Iu'WR r�BR��/��(�TH�;��j�;��N���N����+��S!���;���A����+��S!���J�A�TH�;��j�;��J���,TH�;��j�;��N���N��:�mR /����JIux�ߞT��O��J�_SQ}�yR�����7��?K?��ޭ���o��|x��� ���+6��[�]���.OǛ�Ç������a2��������*��a2������\*���}K|_�|��}�-?��0��y�||�oE�Q���l�+懛ۇV��,y��hO���]�Q�&�1��<>�����ce���<�W̧/��Dc%~}��o�W��������&�1��O_������٘��/��b��Y���x���T~��a�������^�٘W�O7�'��Q���]��X�#�u��D�3aʤ2k�$�� ;&�Y3&�lL1���0�fcIc�&��L�/��Z/�fc�vIe�tI6�K*�vK�٘�ZҘ�hI4;&K*�K�٘�WR�5W��Ƅ��ʬ��l6&,�4�=T�΄��ʬ��l6&l�TfM�d�1a��2k�$�� �$�y��D�3a��2k�$�� �$�Y�$�lL%���$�fc�"Icރ$��L�#��Z#�fc�Ie�I6�H*�vH�٘�BҘ�I4;&H*�H�٘�?R�5?��Ƅ�ʬ�l6&,�4�=<�΄ّʬՑl6&l�TfM�d�1ap�2ko$�� k#��bl$��F*��F�٘�3R�53��Ƅ��ʬ��l6&,�4�=0����"�x��d�["l�T^M�d�1aX�2kW$���WE�FE�0)Ry�(��Ƅ=�ʬ9�l6f��kK${�aI���!�(v&̈Tf��d�1�H%^"���"�W�!YlLXi�{<$����C*�Z�D� ��� �bc�hHe�fH6C��fg�\He�ZH6�B*��B�٘0R����Ƅ��ƼGB�ٙ0R����Ƅ}�ʬy�l6&��Tfm�d�1a�1�a�hv&̂Tf��d�1a�2k$�� � �Y{ �lLXi�{$�� S �YK �lL��̚�fc�He�H6@���fg��Ge��G6�?*��?�٘0�Q�����ƄՏ�|1��̃ ��Y��lL���̚��fc��Ge��G6�>���fg��Ge��G66>*�&>�٘0�Q����Ƅu�Ƽ�=�ٙ0�Q����Ƅ]�ʬY�l6&�zTfmzd�1aѣ1�A�hv&�yTf�yd�1aˣ2k�#����<*����DX�h�{�#�� �Y�l̸�Qy�������U��kLX�h�{�#���g;*�Z��D�쨼���bc�`Ge�^G63�u4b�uD�a���j�#�� ;�Y3�l�<�Q��FG��%�BG��Q�L���Z��fc�6Ge�4G6�9*�v9�٘��ј�(G4;&9*�9�٘��Q�5Ǒ�Ƅ1�ʬ-�l6&,q4�=��΄�ʬ�l6&lpTfMpd�1a��2k#�� ���b|#��7*��7�٘��Q�5���Ƅэʬ͍l6&,n4�=��΄��ʬ��l6&lmTfMmd�1ah�2kg#�� +�y�lD�3ab�2ka#�� ��Y��lL>�nk�Y�osx���q�u~���˙Ǘ�5�ckY���O_��eY�����˷O_��������?�����ۯ�������O�����3_?��ӷ��?��?���믟�;\rwww�*�~����+��ʼn����GN.����;/���ܩp줒�s'Y>�p��� ȝ +�O:�N��ܩp����� +ȝ +GP*�>��� +�P:����ܩp���$ +ȝ +gQ:���ܩp����(Y>�p"���H +ȝ +�R:�N��ܩp.���` +ȝ +GS*�>��� +�S:����ܩp@��� +ȝ +gT:���ܩpL��_�S��I��*�\GU@�T8���uZ�N��*�\V@�T8�R����,T8���ul�N��+�\'W@�T8���ux�N��+�|�_��A�,�\GX@�T8���u��N�s,�\Y@�T8�R��Y�,T8���u��N�-�\'Z@��|��s�C-�6&k���\Kv*�l��:�r���-��|��o�p����� +G\*�>�僚O�t�u��Ƅ�.�Z']��T8���u��N��]*�λd�3��K�֑p;�tr�z�S�ν��ژp��R�/�=�p�����ȝ +`:�N��ܩp���ȝ +�`*�>�� +'a:��ܩp���4ȝ +�a:�Āܩp$���31Y>�p*���Xȝ +c:�Nƀܩp6���pȝ +�c����(�T8!��uD�N�C2�\�d@�T8'��uP�N��2�|����A��2�\�e@�T80��ub�N�33�\�f@�T86S����,T89��ut�N��3�\�g@�T8?�lth��� ��JGh�}�M����Q��ghN�|{���[�/�qx�r�g=��^OЬ�3�ۗo����|�����}��������㷏����O����_����?�����������������C~�t.�t�ss��tw����֊?�=�u���������y-P�*�^���A���N��-�;5�lujc��V����� +c[�|�me��潭ν�@mL�������Sau��kv�N��J����|Pa{��k|�N���N�Ӑ w*����: r��i�J�OCf���i�N�Ӑ w*����: r��i�N�Ӑ w*�����4d�*����: r��i�N�Ӑ w*����: r��i�J�OCf���i�N�Ӑ w*����: r��i�N�Ӑ w*�����4d�*����: r��i�N�Ӑ w*����: r��i�F~q2�'NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�4d'�iH�;NCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�i�νNC�ژp�R�Ӑ�=�p���4$ȝOCv��iH�%�i�N�Ӑ�v*�����4d�j> ٹ�iHPNCvj���S�4d'�iH�;5����: ��΄Ӑ�Z�!��T8 ��u�Nͧ!;�: jc�i�J�OCf���i�N�Ӑ w*����: r��i�N�Ӑ w*�����4d�*����: r��i�N�Ӑ w*����: r��i�J�OCf���i�N�Ӑ w*����: r��i�N�Ӑ w*��l��!�|R�4d'�iH�;NCvr���S�4d'�iH�;NCV�}2�NCvr���S�4d'�iH�;NCvr���S�4d%ߧ!�|P�4d'�iH�;NCvr���S�4d8�מ��Z�!/_(��ot������$/���N�{v{|���������Cn��z�ӯ/_��������ۼ>��^�?��b�e��? ;Oendstream endobj 1260 0 obj << /Type /Page @@ -6941,11 +6929,11 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1844 0 obj << -/Length 57642 +/Length 57988 /Filter /FlateDecode >> stream -xڔ�˒,ׁe7���L����GFFU�j=L-kSQ�&�4�H����`���^����'r��6�E��ky������7/���y;����;�N���7��x������p��\������œ����t8_��o~z9����OO������߿�ܶ�総S����o��������t����7�N����Ƿ�����ߟ^_��_��O����_���w?����Ï�}������?���<�_����G�_��p;��w������_�DZO}X/�vx{��=��'��it;����r<�.��N�� _�;���/ٵu=�jc's�����it;uG�=��[}��Q�����2���}?Ljg�χ���}��4���#��������(w��v�ַ��Y&>מ����K{��iR/���\������(w�|{.���V~?�r��ȷgs9շ�~�N}.?oO�|no�8M�#ߞ�����q�NݑoO�xio�8�r��ȷ���2���O�ܩ����������4���|x�]��>N�ܩ;���������4ʝ�#�^�o�m��F�S��_���z{-��4��|{:������(w�|{:������(w�|{:����O�ܩ����霎�m�I�Pw���9�_Ō�(w�|{:/�����(w��v�����~?�r�>��m�w����>N�|���χ�ۥ���4ʝ�#��+��V~?�r��ȷ���Z���i�;����=�˵���4��|{:�����(w�|{:�]j���(w�|{:�ۥ��O�ܩ�����yyoo�8M�#?�����>N�ܩ;���������4ʝ�#����X���i�;�����r���oB�4�W�|{:�ӥ��O�ܩ;��鼞���~�Nݑ��i)�B�S�ˏ��9_��>N�|��ȷ���*jF�1w�ۣ9���|�F�Sw��?}����~�N}.?����/�~����1���[���F�Sw䯇��۹��O�ܩ;���t}o�_�ژ����ɼ֏{�&�Bݑo�������4ʝ�#�ͥ��~���1oO�|����it;����=�ө���4��|{4����0���cޞ�K�Gw:�n���o�������Q����ח��vip�I�Pw���������4ʝ�#=\������(w�|{:�����4ʝ�\~ݞ�孽��4��|{:�۩��O�ܩ;���n�m�Q����t���m��F�S��߶�s|io�8M�#ߞ��K{��i�;uG�zx}?��M�Q�����r;շ�~�N}.��^�N�m�I�Pw��������q�NݑoO�����q�NݑoO�r����i�;���}{:�OB�|�&�BݑoO�tmo�8�r��ȷ�sl�K�i�;uG�=������O�ܩO嗗����V�fE�A�Rw����vk���(w���py{m���(w������R���i�;����=�k��N�|��ȷ��z����i�;uG�=�˩���4ʝ�#ߞ��T���i�;����=�ӹ���4��|{:��;":�r��ȷ��ҾS��(w���p{�o��4ʝ�\~~9�o�����$_�;����־V��(w���p����}�F�Sw���i��|F�1��/ۣ���{>N�{��ȷGs~o��8�r��ȷGsn�_�3qG�=��K}��Q���������y�4��|{.���aTs��z8���{>N�۩;��ۭ�7m�F�S�˯/�S����0���c>ޮ��:�n��ȷG��v9:�r��ȷG��_�ژ��oۓ9�o�4��|{4����i�;uG�=�c�6�N�ܩ;������~?�r�>��^��6��i�/���p��o�4ʝ�#=om���(w���p}k�&�i�;���}{:�6��i�/���t^�@G�Q����t.���:�r��ȷ�s>�~�N}*}ٞΩ}�X�A�Rw���9���N�ܩ;��鼴��N�ܩ;���������(w�s����rk�&�Bݑ��o���:�r���_/�6��i�;uG�=������O�ܩ����\ڷ�u��uG�=�K��4ʝ�#ߞι}�X�Q����tN;��8t��������ȿ�ѹO���\����~��y��{���5��:���tq���������u����~:���s:�����������������no{��x;Χ�?��K�>]�:q;nǗ���D~?�r��ȯ����,J��4ʝ�#�fJ��è6����p���{>N�{���χ��s{��i�;uG�u��t��OHm�<R��� ����O*��?���OJ�}������'�z̟�۩y������;5Οt�1jg���R=�O���<R��� ɝ��OJ���&���N��P/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����J>�O�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)���R3ϟ��1Bn����R>�OH��8ҹ�� ����OJ��?!�S��I)�'$wj�?)���R3ϟtj͟�{����R>�OH��8R���'�6f�?)�c���N��'�\�' _�q��t��OHm�<R��� ����OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟtr͟�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟtr͟�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟT�9��+5ϟ��1Br����R>�OH��<R��� ɝ��O:��O@�P��I)�'$wj�?)�c���N��'�|̟�ܩy���k��5ϟ��1Br����R>�OH��<R��� ɝ��O:��O@�P��I)�'$wj�?)�c���N��'��>Bjc���N��p/�<R��� ɝ��OJ���&���R<�OH��<��5��OJ�}������'�z̟�۩y������;5Οt�1jg���R=�O���<R��� ɝ�OJ�}������'�Z�'�^�y������;5ϟ��1Br����R>�OH��<��5��OJ��?!�S��I)�'$wj�?)�c���N��'�\�' _�y������;5ϟ��1Br����R>�OH��<R���I���<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I���O���>]P�?IW�̟�����k����F�'��ON���?��ݳ���WʗO�ſ{���z8���QM��q��%��o�����M�'�D~?�r��,����J>�_�|���K'��ȝ +xڔ�˒,ׁe7���L����GFFU�j=L���(k�I@$���@�[]_ߞ���'r��6��ky������7/���y;����;�N���7��x������p��\������͓����t8_��o~z9����OO������߿�ܶ�総S����o��������t����7�N����緯����ߟ^_��߾������_���w?���_����>�������?���<�_����G�_��p;��w������_�DZO}X/�vx{��=��'��it;����r<�.��N�� _�;���/ٵu=�jc's�����it;uG�=��[}��Q�����2���}?Ljg�χ���}��4���#��������(w��v�ַ��Y&>מ����K{��iR/���\������(w�|{.���V~?�r��ȷgs9շ�~�N}.?oO�|no�8M�#ߞ�����q�NݑoO�xio�8�r��ȷ���2���O�ܩ����������4���|x�]��>N�ܩ;���������4ʝ�#�^�o�m��F�S��_���z{-��4��|{:������(w�|{:������(w�|{:����O�ܩ����霎�m�I�Pw���9�_Ō�(w�|{:/�����(w��v�����~?�r�>��m�w����>N�|���χ�ۥ���4ʝ�#��+��V~?�r��ȷ���Z���i�;����=�˵���4��|{:�����(w�|{:�]j���(w�|{:�ۥ��O�ܩ�����yyoo�8M�#?�����>N�ܩ;���������4ʝ�#����X���i�;�����r���oB�4�W�|{:�ӥ��O�ܩ;��鼞���~�Nݑ��i)�B�S�ˏ��9_��>N�|��ȷ���*jF�1w�ۣ9���|�F�Sw��?}����~�N}.?����/�~����1���[���F�Sw䯇��۹��O�ܩ;���t}o�_�ژ����ɼ֏{�&�Bݑo�������4ʝ�#�ͥ��~���1oO�|����it;����=�ө���4��|{4����0���cޞ�K�Gw:�n���o�������Q����ח��vip�I�Pw���������4ʝ�#=\������(w�|{:�����4ʝ�\~ݞ�孽��4��|{:�۩��O�ܩ;���n�m�Q����t���m��F�S��߶�s|io�8M�#ߞ��K{��i�;uG�zx}?��M�Q�����r;շ�~�N}.��^�N�m�I�Pw��������q�NݑoO�����q�NݑoO�r����i�;���}{:�OB�|�&�BݑoO�tmo�8�r��ȷ�sl�K�i�;uG�=������O�ܩO嗗����V�fE�A�Rw����vk���(w���py{m���(w������R���i�;����=�k��N�|��ȷ��z����i�;uG�=�˩���4ʝ�#ߞ��T���i�;����=�ӹ���4��|{:��;":�r��ȷ��ҾS��(w���p{�o��4ʝ�\~~9�o�����$_�;����־V��(w���p����}�F�Sw���i��|F�1��/ۣ���{>N�{��ȷGs~o��8�r��ȷGsn�_�3qG�=��K}��Q���������y�4��|{.���aTs��z8���{>N�۩;��ۭ�7m�F�S�˯/�S����0���c>ޮ��:�n��ȷG��v9:�r��ȷG��_�ژ��oۓ9�o�4��|{4����i�;uG�=�c�6�N�ܩ;������~?�r�>��^��6��i�/���p��o�4ʝ�#=om���(w���p}k�&�i�;���}{:�6��i�/���t^�@G�Q����t.���:�r��ȷ�s>�~�N}*}ٞΩ}�X�A�Rw���9���N�ܩ;��鼴��N�ܩ;���������(w�s����rk�&�Bݑ��o���:�r���_/�6��i�;uG�=������O�ܩ����\ڷ�u��uG�=�K��4ʝ�#ߞι}�X�Q����tN;��8t��������ȿ�ѹO���\����~��y��{���5��:���tq���������u����~:���s:�����������������no{��x;Χ�?��K�>]�:q;nǗ���D~?�r��ȯ����,J��4ʝ�#�fJ��è6����p���{>N�{���χ��s{��i�;uG�u��t��OHm�<R��� ����O*��?���OJ�}������'�z̟�۩y������;5Οt�1jg���R=�O���<R��� ɝ��OJ���&���N��P/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����J>�O�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)���R3ϟ��1Bn����R>�OH��8ҹ�� ����OJ��?!�S��I)�'$wj�?)���R3ϟtj͟�{����R>�OH��8R���'�6f�?)�c���N��'�\�' _�q��t��OHm�<R��� ����OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟtr͟�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟtr͟�|����R>�OH��<R��� ɝ��OJ��?!�S��I'�� �j�?)�c���N��'�|̟�ܩy������;5ϟT�9��+5ϟ��1Br����R>�OH��<R��� ɝ��O:��O@�P��I)�'$wj�?)�c���N��'�|̟�ܩy���k��5ϟ��1Br����R>�OH��<R��� ɝ��O:��O@�P��I)�'$wj�?)�c���N��'��>Bjc���N��p/�<R��� ɝ��OJ���&���R<�OH��<��5��OJ�}������'�z̟�۩y������;5Οt�1jg���R=�O���<R��� ɝ�OJ�}������'�Z�'�^�y������;5ϟ��1Br����R>�OH��<��5��OJ��?!�S��I)�'$wj�?)�c���N��'�\�' _�y������;5ϟ��1Br����R>�OH��<R���I���<R��� ɝ��OJ��?!�S��I)�'$wj�?��?�B��'�|̟�ܩy������;5ϟ��1Br����N���/�<R��� ɝ��OJ��?!�S��I���O���>]P�?IW�̟�����k����F�'��ON���?��ݳ���WʗO�ſ{���z8���QM��q��%��o�����M�'�D~?�r��,����J>�_�|���K'��ȝ �/�\�/ wj~��c��Ƅ�J=�_�{���K'��ȝ��_:�~�1a��Sk��N��F�0��+5�t�1�jc��K����� �/�\�/ wj~��~�jg��K����� �/�\�/ wj~����&��K%��/Y�Pa���k��N��N���;�_:��_@�T~��s�%�*�tr ��ܩ0���5�r���K'��ȝ @@ -6972,166 +6960,196 @@ xڔ �a%��a�/T� ;�bC�;b�N���N�ذ�+6�S!6��36�� �a'Wlr�Bl���ܩvrņ w*Ć�|ƆY�P!6�� A�T� ;�bC�;5dž�{Ć�6&Ć�zƆٽP!6�� A��v�{l��D� ;�bCP;b�J>c�,_�96��#6�1!6�Ԋ ��T� ;�bC�;5dž�[�aV;b�N���N�ذ�+6�SslعGljcBlX�gl��b�N���N�ذ�+6�S!6�� A�T� +�� �|�Bl���ܩvrņ w*Ć�\�!ȝ �a%��a�/T� ;�bC�;b�N���N�ذ�+6�S!6l��a��T� ;�bC�;b�N���N�ذ�+6�S!6��36�� -�a'Wlr�Bl���ܩvrņ w*Ć�|ƆY�P!6�� A�T� ;�bC�;b��ǵ�!\Ј /(ņ������zx=ߠ5�zH OOS����ߝ^��/_�⟾������_���m���{�� -�2�����j;��D��0#��/"4"�դD$�� �HeV��Ƅ:�2+�fcBR�U�d�1�i�3�fgBR�Մd�1��� -B�٘��Tf� �lLhA -�C -��B�ʬ$�� HeV��Ƅ�2���fcB�јg�����G%�G�~&B�Qy~d�1!��̪>�٘��h�J>�|T^�YlL�=*�b�l6fN=*�(=��3:��;3�(v&D�Y�G63�x���yG�Uݑ�Ƅ��1ϴ#���ÎJ<����L����*��bcB�Q�Utd�1��h�3�fgB�Q��rd�1��� -9�٘�qTfU�lLh8�L8�ٙpTf��lL�7*��l6&��Y�F6���<��hv&D�Y�F6��ʬ`#�� �FeV���ƄV�1�T#�� �FeV���ƄJ�2+��fcB�Q�Uhd�1��h�3ψfgB�Q��fd�1�̨� -3�٘�eTfU�lLh2 -�C�����ʬ#�� 5FeV���Ƅ�2���fcB�јg��΄�2���fcB�Q�`d�1!��̪/�٘�^4�^D�3!����.�٘P]TfE�lLH.*���l6&��y���L�-*�Z�l6&��Y�E63g�xT����E㝉E;�ʬ�"����{�+��Ҋʪ�"{� ]Ec�YE4;3G�x4���EE�UP��Ƅ��2���fc斢+��^#BHQy�Qd�1���̊(�٘9��ģ����D�'��'�ؙOTf��lL('*�l6&d�Y�D6���<��hv&�Y�D6j�ʬX"�� �DeV)��ƄN�1�L"�� �DeV#��ƄB�2+��fcBQ�UGd�1��(�iD2/L#*���l6&T�YQD6��ʬ""�� =Dc�9D4;b�ʬ"�� %DeV��Ƅ�2���fcBјg�΄��2��fcB�P�?d�1!}�5�-�Ռ���jR��9_�Wq�|�2�뷐_���~ں^�|�r>�ޮ��/lө{�0�����~X�������wP�'A����s���r��'��t���-O�#�x�~����= B��F�Sw������:��4ʝ�#��/��V~?�r�>��nO��� �|�&�BݑoO�tjo�8�r��ȷ�s<��}�F�Sw���y�Է�~�N}.���K{��i�/���p��^Z��4ʝ�#��o�����(w��v�]��m��F�S��߶������q��uG�=�˭���4ʝ�#ߞ���O:��4ʝ�#ߞ�齾���(w�s�m{:������$_�;���_��>N�ܩ;�����>N�ܩ;���������0�����~<�n������^�;��������q�Nݑ_�k��z���1oO��R���it;�y���=��ǟF4r��Jݑo��|m�_�ژ;��ɜ�o��~�Nݑo���V���i�;����fo�2�ڙ;����~k�8�n��ȯ�������4ʝ�#���-�rş�ϵ��������q��uG�=�뱽��4ʝ�#ߞ���Qt��i�;uG�=�˩����(w�s�y{:�s{��i�/���tN�����(w�|{:�K{��i�;uG�=���S+��F�Sw>H�xxymo�8M�#��O��>N�ܩ;��I�\��r���wr}~;ȝ -��^���g�B��o����v�;>������A�T���N��o�S���+����,_����\��r���wr}~;ȝ -������� w*|~{%��ߞ�>������A�T���N��o�S���;���@�T���s�+�*�sur�s�ܩ����5�r��HW'�Jȝ -;]�|ue�B���N��.�;ֺ:��@�T���Z��Sa���?�vE�J�ٮN��.�;��:���@�T���Z��Sa�����,_�y«s� /PV�:�f���T���Z��S�W�֘WV;�:�����TX�����S�W��^�6&�zU�9����:���@�Լ�չǼ�� _�Z_�v*l|U�9��5�|u��jc��W����� -c_�\k_ w*�}U�9���&�:�6�@�TX�����Sa���k��N���J>ǿ�|���W'��ȝ -`�\` w*��ur���ܩ�V��X�/T�����Sa ��k�N�A�N�E0�;6�*��� -�`�\�` w*,�urM��ܩ0�ɵr��>X%�aY�Pa"��k#�N���N��0�;��:���@�T� -k�caQ�Ra.��k/�N�ŰN��0�;F�:�V�@�T� ��s8,�*L�urm��ܩ���5r�X'ׂȝ -b�|��e�B��N�1�;��:���@�T��Z�SaO���A�,_�0)�ɵ)r�ªX'ȝ���:�X�1a[�R�q��^�0/�ɵ/r�ƅ�N}��g"��ub���ک�3V���X�/�<5ֹ���� kc�Zsc�v*�ur-��ܩys�rkt,�� �c�Z�c�v*,�urM��ܩy|�s��1P��*� �� -d�\d w*��ur͐�ܩ0D�ɵDr��Y%�cdY�Pa���k��N�E�N�I2�;F�:�V�@�T�%��s�,�*L�urm��ܩ�N��5Or��@Y'�Bȝ -e��a�,�W*̔ur픁ܩ�T��5Ur��XY'�Zȝ -{e�|�e�B�ɲN��2�;V�:�f�@�T.��Z.�Sa�����,_�0_�ɵ_r�Y'ׄȝ -#fa��]1�3f�t;�+Z��.0dv~�~�y=�8u2;߇���?�����˘Ҧ>}���@_����x;[fsZ*^���z��0-��Ҵȝ -�R�\�R w*LKU�9-����:���@�T���䚖�SaZ��kZ -�N�i�J>���|�´T'״ȝ -�R�\�R w*LKurMK�ܩ0-U��T�/T���䚖�SaZ��kZ -�N��R�{LK�ژ0-U��Tv/T���䚖�S�T��R�6&LKujMK�۩0-�����|��i��=��@mL���Ԛ��SaZ��kZ -�N��R�[�RY�L���Ԛ��SaZ��kZ -�N��R��>-��D����sZ*�*LKurMK�ܩ0-��5-r�´T'״ȝ -�R�|NKe�B�i�N�i)�;��:���@�T���䚖�SaZ���i�,_�0-��5-r�´T'״ȝ -�R�\�R w*LKU�9-����:���@�T���䚖�SaZ��kZ -�N�i�J>���|�´T'״ȝ -�R�\�R w*LKurMK�ܩ0-U��T�/T���䚖�SaZ��kZ +�a'Wlr�Bl���ܩvrņ w*Ć�|ƆY�P!6�� A�T� ;�bC�;b��ǵ�!\Ј /(ņ������zx=ߠ5�zH OOS����ߝ^���_�柾�����/�?��6����y~�����}���pV"�k������jR"�΄@�2��fcBR��d�1! ��*C�٘Ѕ4晅D�3! +��jB�٘P�Tf!�lL�A*�j�l6&� ��!I� !HeV��Ƅ +�2+�fcBR�U�d�1��h�3��fg�����#{?���� +?�ؘ�}TfU�l��|4b%�kD>*�z�,6&��Y�G63��x�����G㝙G;"�ʬ�#����J<���L������bcB�јg����aG%]G�~&B�Qyud�1!��*:�٘�s4�sD�3!��j9�٘PrTf��lL�8*�*�l6&4�y&��L8*���l6&��Y�F6ҍʬr#�� �Fc��F4;��ʬf#�� �FeV���Ƅ\�2���fcB�јg��΄P�2���fcB�Q�id�1!Ѩ�*4�٘�g4�gD�3!Ψ�j3�٘PfTf��lL�2*���l6&4��!�H� AFeV���Ƅ�2+��fcB�Q�Ubd�1��h�3ÈfgB�Q��`d�1���� +0�٘�_Tf��lLh/�L/�ٙ^Tfu�lL�.*���l6&$�Y�E6z��<s�hv&��Y�E6J�ʬ�"���3�J<*���L�Ƣ���"�� �EeV_��ƌuE�����iEeUY��Ƅ��1Ϭ"�����J<����L����*��bcBNQ�USd�1sKш�RD�!����(�ؘPQTfE�l̜PT�QPd�g"��w�Q�L�'*�ډl6&��Y�D6��ʬj"�� �Dc��D4;��ʬ^"�� �DeV,��ƄT�2���fcB'јg&�΄H�2���fcB!Q�Hd�1!��̪#�٘�F�4"�&��Y]D6��ʬ("�� IDeV��Ƅ�1�"�� 1DeV��Ƅ�2+��fcBQ�UAd�1��h�3��fgB�Q��?d�1�~�̊�٘�>쿚ߖ�jF��p5�{ؿ�/߫8_>~���[ȯOOm?m]/_�}9^o���6���=|�ÿ��w?,A���~��;�����t~ݹk���p�~��xu:����o�_?~��䂞!_N�ܩ;������G��~�Nݑ���k+��F�S��_��s����J>N�|��ȷ�s:��}�F�Sw���9���>N�ܩ;���\��~?�r�>�_��������4���|��^/��~�Nݑ_�k{��i�;uG~;ܮ����O�ܩ��o��y}ko�8M�#ߞ�����q�NݑoO���' ��~�NݑoO��^���i�;����=��K{��i�/���t�/�m�Q����t^��m�Q��������B�~��|n~?N�S{��ir/�����vn��8�r��ȯ�ӵv=�jc'�z����4����X|����O#�N�|��ȷGs��Qm���dNV}?�n��ȷGs|����4ʝ�\�Q���O�I����p}���{�F�Sw��������q�Nݑ����9��������p|{io�8Mꅺ#ߞ�����q�Nݑo����(:��4ʝ�#ߞ��T���i�;����=����4��|{:�s{��i�;uG�=�㥽��4ʝ�#ߞ��멕�O�ܩ;$~<�����}�&�Bݑ���m�Q������N��o�S���;�>��N��o����۳|���wr}~;ȝ +������� w*|~{'�緃ܩ���|~~{�/T���N��o�S���;�>��N��o����v�;>�����o�� +������� w*|~{'�緃ܩ���\�\ w*lsU�9Ε��:���@�TX�����Sa���k��N���J>���|��TW'�Vȝ +k]�\s] w*vur-v�ܩ����F��|��lW'�nȝ +�]�\�] w*�wur�w�ܩ��U��W�/�<�չdž�� +^�Z3^�v*yur-y�ܩy˫rk�+�� s^�Z{^�v*,zurMz�ܩyԫs�U/Pv�*���� +�^�\�^ wj^���c��Ƅ��N��/p;6�*����g�:����1a�Sk��N���N��/�;��*���� +�_�\�_ w*�~ur�~�ܩ0��ɵ�r���W%��_Y�Pa���k��N��N� 0�;F�:�V�@�T���s,�*L�urm��ܩ���5r�� X'�"ȝ +�`�|��e�B�Y�N�]0�;��:���@�T��Z�Sa��ρ�,_�0�ɵr��JX'�Lȝ +Ca�\Ka w*l�5(_�0�ɵr��bX'�dȝ +�a�\�a w*�U�9����:���@�TX���Sa@��kA�N� �J>GIJ|�X'ȝ +Kb�\Sb w*��ur���ܩ�'V��X�/T�����SaU��kV�N��b�{,��ژ�-V��Xv/T�����S��X��O���3F�:�V�@�T���sh,�j���ck�Ƅ��N��1p;�:��@�Լ9V�5:��΄ٱN��1p;��:���@��<>ֹ���� �c�z�e�B� �N� 2�;V�:�f�@�T"��Z"�Sa����1�,_�0G�ɵGr��"Y'�$ȝ +�d�\�d w*�U�9L����:���@�TX'��'�Sa���k��N���F�0R�+f�:�v�@�TX*��*�Sa���k��N���J>˲|��dY'�fȝ +�e�\�e w*�ur-��ܩ�]V��xY�/T�/���/�Sa���k��N����ծ�������w��-Cf2;�l?ټa�l�����Cf��ǟ~����eLiS�>^By��������-�9-/pNK=^a��zrAiZ �N�i�N�i)�;��*����� �R�\�R w*LKurMK�ܩ0-��5-r�´T%��RY�PaZ��kZ -�N�i�N�i)�;��:���@�T��j��RQ�RaZ��kZ -�N�i�N�i)�;��:���@�T����sZ*�j����cZ -�Ƅi�N�i)p;��:���@��<-U�5-��΄i�N�i)p;��:���@��<-չǴ�� �R�zNKe�B�i�N�i)�;5OKu�1-jc´T�ִ�� -�R�|NKe�B��R�{LK�ژ0-թ5-n�´T'״ȝ -�R�|NKe�B�i�N�i)�;��:���@�T���䚖�SaZ���i�,_�0-��5-r�´T'״ȝ -�R�\�R w*LKU�9-����:���@�T���䚖�SaZ��kZ +�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r��i��=��@mL����sZ*�*LKurMK�ܩyZ�s�i)P��:�����T��j��RQ�R�T��R�6&LKujMK�۩0-��5-r��i�ʭi��v&LKujMK�۩0-��5-r��i�N}���g"LKU�9-����:���@�T���䚖�SaZ��kZ �N�i�J>���|�´T'״ȝ �R�\�R w*LKurMK�ܩ0-U��T�/T���䚖�SaZ��kZ -�N�i�N�i)�;���ôT��T���䚖�SaZ��kZ �N�i�N�i)�;��*����� �R�\�R w*LKurMK�ܩ0-��5-r�´T%��RY�PaZ��kZ -�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r��i��=��@mL����sZ*�*LKurMK�ܩqZ�Sߧ�@���R�X�R�v*LKU�9-��5OKu�1-jc´T�ִ�� +�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r�´T'״ȝ +�R�|NKe�B�i�N�i)�;��:���@�T���䚖�SaZ���i�,_�0-��5-r�´T'״ȝ +�R�\�R w*LK5�i�(_�0-��5-r�´T'״ȝ +�R�\�R w*LKU�9-��5OKu�1-jc´T�ִ�� �R�\�R wj���ܚ��jg´T�ִ�� �R�\�R wj����cZ -�Ƅi�J=���{�´T'״ȝ +�Ƅi�J=���{�´T'״ȝ���:����1aZ�SkZ +�N�i�J>���|��i��=��@mL���Ԛ��SaZ��kZ +�N�i�J>���|�´T'״ȝ �R�\�R w*LKurMK�ܩ0-U��T�/T���䚖�SaZ��kZ �N�i�N�i)�;��*����� -�R�\�R w*LKurMK�ܩ0-��5-r�´T#���� �R�\�R w*LKurMK�ܩ0-��5-r�´T%��RY�PaZ��kZ -�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r�´T�Gꦥ��ƴ���i�pE��o����O�Ӵ�����������������3{0��ƥ��y�?���������w��o����u����/��ͣk��o��W�;KSs#_��1/7,c<����r��e��=�1@mLX���Z���Sa��?,cD�J���{,c�ژ��ѩ��n��2F'�2ȝ��1*��1�ڙ��ѩ��n��2F'�2ȝ�1:�}ğ���Q��2FV/TX���Z���Sa��k�N�e�N�e�;�1*�\��� +�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r�´T'״ȝ +�R��aZ*�W*LKurMK�ܩ0-��5-r�´T'״ȝ +�R�|NKe�B�i�N�i)�;��:���@�T���䚖�SaZ���i�,_�0-��5-r�´T'״ȝ +�R�\�R w*LKU�9-����:���@�T���䚖�S�T��R�6&LKU�9-����:���@��8-թ��R �L�i�N�i)P;��*�����:����1aZ�SkZ +�N�i�N�i)�;5OKUnMKe�3aZ�SkZ +�N�i�N�i)�;5OKu�1-jc´T���RٽPaZ��kZ +�N�i�N�i)�;��:���@�T����sZ*�*LKurMK�ܩ0-��5-r�´T'״ȝ +�R�|NKe�B�i�N�i)�;��:���@�T���䚖�SaZ��?LKE�J�i�N�i)�;��:���@�T���䚖�SaZ���i�,_�0-��5-r�´T'״ȝ +�R�\�R w*LKU�9-����:���@�T���䚖�SaZ*�#u�RpAcZ��ҴT���_�������iZ�x|��������o��v~ۙ=�tL�R�������_���������m]dx9l�K�|��Zo��u�U����\�ȗ�e��� �O.(-c�ܩy�s�eP�1:��1��TX�h��Q�R�2F���6&,ctj-c�۩���ɵ�r��e�ʭe��v&,ctj-c�۩���ɵ�r��e�N}_���g",cT⹌���1:��1@�TX���Z���Sa��k�N�e�J>�1�|��2F'�2ȝ +��\� w*,ctr-c�ܩ��Q��2F�/TX���Z���Sa��k�N�e�N�e�;�1*�\��� ��\� w*,ctr-c�ܩ���ɵ�r��2F%��Y�Pa��k�N�e�N�e�;�1:��1@�TXƨ�s#�*,ctr-c�ܩ���ɵ�r��2F'�2ȝ ��|.cd�B�e�N�e�;�1:��1@�TX���Z���Sa���e�,_����ɵ�r��2F'�2ȝ -��\� w*,cT��1:��1@�TX���Z���Sa��k�N�e�J>�1�|��2F'�2ȝ -��\� w*,ctr-c�ܩ�����1�|��2F'�2ȝ -��\� w*,ctr-c�ܩ��Q��2F�/Լ�ѹ�2�� ��Z��v*,ctr-c�ܩy�rk#�� ��Z��v*,ctr-c�ܩy�s�eP�1*�\��� -��\� wj^���c�Ƅe�N�ep;�1*�\��1:�X���1a�Sk�N�e�N�e�;�1*�\��� +��\� w*,c4�e�(_����ɵ�r��2F'�2ȝ +��\� w*,cT�5/ctjc�2F��2�� +��\� wj^ƨ�Z��jg�2F��2�� +��\� wj^���c�Ƅe�J=�1�{��2F'�2ȝ��1:�X���1a�Sk�N�e�J>�1�|��e��=�1@mLX���Z���Sa��k�N�e�J>�1�|��2F'�2ȝ +��\� w*,ctr-c�ܩ��Q��2F�/TX���Z���Sa��k�N�e�N�e�;�1*�\��� ��\� w*,ctr-c�ܩ���ɵ�r��2F%��Y�Pa��k�N�e�N�e�;�1:��1@�TXƨ�s#�*,ctr-c�ܩ���ɵ�r��2F'�2ȝ +���a#�W*,ctr-c�ܩ���ɵ�r��2F'�2ȝ ��|.cd�B�e�N�e�;�1:��1@�TX���Z���Sa���e�,_����ɵ�r��2F'�2ȝ -��\� w*,c4�e�(_����ɵ�r��2F'�2ȝ -��\� w*,cT��1:��1@�TX���Z���Sa��k�N�e�J>�1�|��2F'�2ȝ -��\� w*,ctr-c�ܩ��Q��2F�/TX���Z���Sa��k�N���{,c�ژ��Q��2Fv/TX���Z���S�2F��/c��3�1:��1@�TXƨ�s#�j^���c�Ƅe�N�ep;�1:��1@�Լ�Q�����΄e�N�ep;�1:��1@�Լ�ѹ�2�� ��z.cd�B�e�N�e�;�1:��1@�TX���Z���Sa���e�,_����ɵ�r��2F'�2ȝ -��\� w*,cT��1:��1@�TX���Z���Sa��k�N�e�F����+�1:��1@�TX���Z���Sa��k�N�e�J>�1�|��2F'�2ȝ -��\� w*,ctr-c�ܩ��Q��2F�/TX���Z���Sa��k�N�e�8��-c��e������1����/����t�e�qL���2��������/���?��/�?˗ϧ�_J<�ֻy��.����4�+�I���������N����+i�S!i��3i�� +��\� w*,cT��1:��1@�TX���Z���S�2F���6&,cT까���1:��1@�Ը�ѩ�� �L�e�N�eP;�1*�\��1:�X���1a�Sk�N�e�N�e�;5/cTn-cd�3a�Sk�N�e�N�e�;5/ctjc�2F���ٽPa��k�N�e�N�e�;�1:��1@�TXƨ�s#�*,ctr-c�ܩ���ɵ�r��2F'�2ȝ +��|.cd�B�e�N�e�;�1:��1@�TX���Z���Sa��?,cD�J�e�N�e�;�1:��1@�TX���Z���Sa���e�,_����ɵ�r��2F'�2ȝ +��\� w*,cT��1:��1@�TX���Z���Sa#�9t�pAc��n��e�pE�2����v>�ic�2�龌�~���~�����˟~��������������n�?�K��n>$��g��x�!i~rA)i�S!i��J�A�TH�+�L��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ +Is%�Is�/TH�;��f�;��N���N����+i�S!i��3i�� Is'W�r�B��ɕ4�ܩ�4wr%� w*$͕|&�Y�P!i��J�A�TH�;��f�;��N���N����Ϥ9�*$͝\I3ȝ Is'W�r�B��ɕ4�ܩ�4W�4g�B����+i�S!i��J�A�TH�;��f�;��J>��,_��4wr%� w*$͝\I3ȝ -Is'W�r�B�\�gҜ���N���N����+i�S!i��J�A�TH�+�L��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ -Is#H��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ -Is%�Is�/Ԝ4w�4�ژ�4wj%��v*$͝\I3ȝ���ʭ�9�� Is�V�n�B��ɕ4�ܩ9i��#i�1!i��3i�� -Is'W�r�椹s���Ƅ��S+i�S!i��3i���=�fP��N���N����+i�S!i��3i�� +Is'W�r�B�����(_��4wr%� w*$͝\I3ȝ +Is'W�r�B�\�gҜ�5'͝{$͠6&$͝ZI3�� +Is'W�r�椹r+i�jgB�ܩ�4�۩�4wr%� wjN�;�H�AmLH�+�L��{�B��ɕ4�ܩ9i��#i�1!i��J���TH�+�L��|�椹s���Ƅ��S+i�S!i��J�A�TH�+�L��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ +Is%�Is�/TH�;��f�;��N���N����+i�S!i��3i�� Is'W�r�B��ɕ4�ܩ�4wr%� w*$͕|&�Y�P!i��J�A�TH�;��f�;��N���N����Ϥ9�*$͝\I3ȝ +Is'W�r�B��ɕ4�ܩ�47�9�W*$͝\I3ȝ Is'W�r�B��ɕ4�ܩ�4W�4g�B����+i�S!i��J�A�TH�;��f�;��J>��,_��4wr%� w*$͝\I3ȝ -Is'W�r�B�����(_��4wr%� w*$͝\I3ȝ -Is'W�r�B�\�gҜ���N���N����+i�S!i��J�A�TH�+�L��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ -Is%�Is�/TH�;��f�;��N���N�Is�I3�� Is��Isv/TH�;��f�;5&͝��4��3��N���N����Ϥ9�jN�;�H�AmLH�;��fp;��N���N�Is�VҜ�΄��S+i�S!i��J�A�Ԝ4w�4�ژ�4W�4g�B����+i�S!i��J�A�TH�;��f�;��J>��,_��4wr%� w*$͝\I3ȝ -Is'W�r�B�\�gҜ���N���N����+i�S!i��J�A�TH��C��+��N���N����+i�S!i��J�A�TH�+�L��|�B��ɕ4�ܩ�4wr%� w*$͝\I3ȝ -Is%�Is�/TH�;��f�;��N���N��9F�]�4���JIs��%i~����������I��)i>?M�����?���_�t8m��z��E?b�3���u�����.(�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es%�Es���\4��Q4�ܩ�h.�h&�Ss�\�G�Lr�梹��h�B�Es�ͤ6f.�K�(����\4��Q4�ܩ�h�ܣh�3s�\�G�Ln�梹�����N�Es�ͤ6f.�;��fp/�\4��Q4�ܩ�h.�������Es�E3�����N���5ͥ�^4�ژ�h.գh&�Ss�\�G�Lr�梹��h�B�Es)E3ɝ���R>�f�;5ͥ|�$wj.�;��f�/�\4��Q4�ܩ�h.�h&�Ss�\�G�Lr�梹��h�B�Es)E3ɝ���R>�f�;5ͥ|�$wj.�;��f�/�\4��Q4�ܩ�h.�h&�Ss�\�G�Lr�梹��h�B�Es)E3ɝ���R>�f�;5ͥ|�$wj.�+�,��|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss���U4�|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�������Es�V���R>�f�;5ͥ�k�L���\4��Q4�ک�h��*�A�Pc�\��E3�����R=�fr;5ͥ|�$wj,�;�(�A��\4��Q4�۩�h.�h&�Sc�\��E3�����N���5ͥ|�$wj.�K�(�I��\4��Q4�ܩ�h��*�A�Ps�\�G�Lr�梹�����N�Es)E3ɝ���N���5ͥ|�$wj.�K�(�I��\4��Q4�ܩ�h��h��R>�f�;5ͥ|�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj.�S�[�tA�s�.�v�-�������v;�N�*��1͗{��/������V�����x|�������/���w?��$q>�~��<��ݚ�^�<�������+��J�)ȝ +Is'W�r�B�\�gҜ���N���N����+i�Ss�ܹG�jcB�\�gҜ���N���N�Is��'� �L���+i�S!i��3i���=�fP��N���N����+i�Ss�\��4g�3!i��J���TH�;��f�;5'͝{$͠6&$͕z&�ٽP!i��J�A�TH�;��f�;��N���N����Ϥ9�*$͝\I3ȝ +Is'W�r�B��ɕ4�ܩ�4W�4g�B����+i�S!i��J�A�TH�;��f�;��F��4G�J����+i�S!i��J�A�TH�;��f�;��J>��,_��4wr%� w*$͝\I3ȝ +Is'W�r�B�\�gҜ���N���N����+i�S!i�n�4�����R��hI�_!i~}?n�o|�AҬcJ��O�����O?~��5�=Nۯ�m~QǏ��Es�`��t��E� +E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss���U4�|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss���U4�|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss���U4�|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss�\�gќ�+5ͥ|�$wj.�K�(�I��\4��Q4�ܩ�h��*�A�Pc�\��E3�����R=�fr;5ͥ|�$wj,�;�(�A��\4��Q4�۩�h.�h&�Sc�\��E3�����N���5ͥ|�$wj,�K��h&�1s�\�G�Ln�梹��h�B�Es�ͤ6f.�K�(����\4��Q4�ܩ�h��*�A�Ps�\�G�Lr�梹�����N�Es)E3ɝ���N���5ͥ|�$wj.�K�(�I��\4��Q4�ܩ�h��*�A�Ps�\�G�Lr�梹�����N�Es)E3ɝ���N���5ͥ|�$wj.�K�(�I��\4��Q4�ܩ�h��*�A�Ps�\�G�Lr�梹�����N�Es)E3ɝ���J>��,_��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj.�K�(�I��\4wr� _��h.�h&�Ss�\�G�Lr�梹�����N�Es'W��R>�f�;5ͥ|�$wj,�K��h&�1s�ܩU4�{�梹�����NMEs��Z4��31ͥxͤvj.�;��f�/�X4��{�Ljc梹T����N�Es)E3ɝ���=�fP;3ͥz��vj.�K�(�I��X4��{�Ljc梹S�h�B�Es)E3ɝ���R>�f�;5ͥ|�$wj.�;��f�/�\4��Q4�ܩ�h.�h&�Ss�\�G�Lr�梹��h�B�Es)E3ɝ���R>�f�;5ͥ|�$wj.�+�,��|�梹�����N�Es)E3ɝ���R>�f�;5͝\E3�j.�K�(�I��\4��Q4�ܩ�h.�h&�Ss���U4�|�梹�����N�Es)E3ɝ����E3]��ܧ��w��tE��4���������qLE��^4��w�;�|��5��;_���o�~��?����?<I�ϯE�7����n�溗8��4~�8}� +Bq��Rq +r�BqZ�gq����N���N�ⴓ�8�S�8��*NA�T(N+�,N�|�Bq��U��ܩP�vr� w*��\�)ȝ �i%��i�/T(N;��S�;��N���N�ⴓ�8�S�8��8�� �i'Wq r�Bq��U��ܩP�vr� w*��|�Y�P�8��*NA�T(N;��S�;��N���N�ⴒ��4�*��\�)ȝ �i'Wq -r�Bq��U��ܩP�V�Y�f�B�ⴓ�8�S�8��*NA�T(N;��S�;��J>��,_�P�vr� w*��\�)ȝ -�i'Wq -r�Bq����(_�P�vr� w*��\�)ȝ +r�Bq��U��ܩP�6��4�W*��\�)ȝ �i'Wq -r�BqZ�gq��5��{��6&��Z�)�� +r�Bq��U��ܩP�V�Y�f�B��i��)�� �i�Vq +n�Bq��U��ܩ�8��*N�ڙP�vj��v*��\�)ȝ����=�SP��J=���^�P�vr� wj.N;�(NAmL(N;��Sp;��J>��,_��8�ܣ8�1�8��*N��T(N;��S�;��J>��,_�P�vr� w*��\�)ȝ �i'Wq -r���r�8�jgBqکU��۩P�vr� wj.N;�(NAmL(N+�,N�{�Bq��U��ܩ�8�ܣ8�1�8��*N��T(N+�,N�|���s���Ƅ�S�8�S�8��*NA�T(N+�,N�|�Bq��U��ܩP�vr� w*��\�)ȝ +r�BqZ�gq����N���N�ⴓ�8�S�8��*NA�T(N+�,N�|�Bq��U��ܩP�vr� w*��\�)ȝ �i%��i�/T(N;��S�;��N���N�ⴓ�8�S�8��8�� �i'Wq -r�Bq��U��ܩP�vr� w*��|�Y�P�8��*NA�T(N;��S�;��N���N�ⴒ��4�*��\�)ȝ -�i'Wq -r�Bq��U��ܩP�6��4�W*��\�)ȝ +r�Bq��U��ܩP�vr� w*����8�� �i'Wq -r�Bq��U��ܩP�V�Y�f�B�ⴓ�8�S�8��*NA�T(N;��S�;��J>��,_�P�vr� w*��\�)ȝ +r�Bq��U��ܩP�vr� w*��|�Y�P�8��*NA�T(N;��S�;��N���N�ⴒ��4�*��\�)ȝ �i'Wq -r�BqZ�gq����N���N�ⴓ�8�SsqڹGq -jcBqZ�gq����N���N��i��� �L���8�S�8��8���=�SP��N���N�ⴓ�8�SsqZ�U�f�3�8��*N��T(N;��S�;5��{��6&��z�ٽP�8��*NA�T(N;��S�;��N���N�ⴒ��4�*��\�)ȝ +r�Bq��U��ܩP�V�Y�f�B�ⴓ�8�S�8��*NA��\�v�Q��ژP�V�Y�f�B�ⴓ�8�Scqک��)�?�8��*NA�T(N+�,N�|���s���Ƅ�S�8�S�8��*NA��\�Vn�Y�L(N;��Sp;��N���N��i��)�� �i���iv/T(N;��S�;��N���N�ⴓ�8�S�8��8�� �i'Wq -r�Bq��U��ܩP�V�Y�f�B�ⴓ�8�S�8��*NA�T(N;��S�;��F�P�F�J�ⴓ�8�S�8��*NA�T(N;��S�;��J>��,_�P�vr� w*��\�)ȝ +r�Bq��U��ܩP�vr� w*��|�Y�P�8��*NA�T(N;��S�;��N���N�ⴑ?�Q�R�8��*NA�T(N;��S�;��N���N�ⴒ��4�*��\�)ȝ �i'Wq -r�BqZ�gq����N���N�ⴓ�8�S�8�MdW������Rq�h���u�=��Yۿ�����g�o_�������]W���7��~J�>��zM����˿��o*M��o?��O��w~�Ǐ_��>P�~|�����}<���� �V�>]�a����|��Vԓz"��F�Sw��GW��Q������p>�K�8M�#ߞ����4ʝ�#ߞ�˱���4ʝ�#��>~���_�ژ������vj��8M#?����=�Q������v=�jc'�z����4�����y����R�\�A�Rw�ۣ�x۴s=�jc's�����it;uG�=��[}��Q������h>���r��ڙ;����~k�8�n��ȯ�������4ʝ�#���-�rş�ϵ��������q��uG�=�뱽��4ʝ�#ߞ�����:��4ʝ�#ߞ��T���i�;uge{:�s{��i�/���tN�����(w�|�tr�πܩ0?��5?r���L%��3Y�Pa~��k~�N���N���;�g:��g@�T����s~&�*��tr�πܩ0?��5?r���L'��ȝ -�3�|��d�B���N���;�g:��g@�T���䚟�Sa~�����,_�0?��5?r���L'��ȝ -�3�\�3 w*��T�9?���g:��g@�T���䚟�Sa~��k~�N���J>�g�|���L'��ȝ -�3�\�3 w*��tr�πܩ0?���g�|���L'��ȝ -�3�\�3 w*��tr�πܩ0?S���L�/�<?ӹ���� �3�Z�3�v*��tr�πܩy~�rk~&�� �3�Z�3�v*��tr�πܩy~�s��P�g*����� -�3�\�3 wj����c~�Ƅ��N��p;�g*������g:����1a~�Sk~�N���N���;�g*����� +r�Bq��U��ܩP�V�Y�f�B�ⴓ�8�S�8��*NA�T(Nc��pA�8}��T��+�~�p�~O��B�����rz��o��ۗ7�����v}וm?��+��ҡ���C�?������?��J������_��_�����������w�o���rëչO�{X��z8�?��䂞��Q����ѕ��i�;���v<�O/�R>N�|��ȷ�s|io�8�r��ȷ��rlo�8�r���o����;��è6�s���p���{>N�{���χ��s{��i�;uG��(x��_�ژ;��ɼ^�{~?�n�>�o^�Gs���T#�i�����h>�6��_�ژ;��ɜ�o��~�Nݑo���V���i�;����=��?/���äv��|�����=N�۩;���x{o��8�r���o�k}˿�E�g�s��x8���7|�&�Bݑo��zlo�8�r��ȷ����}�N~?�r��ȷgs9շ�~�N��Aٞ�����q��uG�=�ӹ���4ʝ�#C1�\�3 w*��tr�πܩ0?S���L�/T���䚟�Sa~��k~�N���N���;�g*����� �3�\�3 w*��tr�πܩ0?��5?r���L%��3Y�Pa~��k~�N���N���;�g:��g@�T����s~&�*��tr�πܩ0?��5?r���L'��ȝ �3�|��d�B���N���;�g:��g@�T���䚟�Sa~�����,_�0?��5?r���L'��ȝ �3�\�3 w*��4���(_�0?��5?r���L'��ȝ -�3�\�3 w*��T�9?���g:��g@�T���䚟�Sa~��k~�N���J>�g�|���L'��ȝ -�3�\�3 w*��tr�πܩ0?S���L�/T���䚟�Sa~��k~�N��3�{�πژ0?S���Lv/T���䚟�S��L���π�3�g:��g@�T����s~&�j����c~�Ƅ��N��p;�g:��g@��<?S�5?��΄��N��p;�g:��g@��<?ӹ���� �3�z��d�B���N���;�g:��g@�T���䚟�Sa~�����,_�0?��5?r���L'��ȝ -�3�\�3 w*��T�9?���g:��g@�T���䚟�Sa~��k~�N���F�0?�+�g:��g@�T���䚟�Sa~��k~�N���J>�g�|���L'��ȝ -�3�\�3 w*��tr�πܩ0?S���L�/T���䚟�Sa~��k~�N���0�������������τ+��M����Wi~f���z��-��t.��e�qL���?M�|��������_�-��GD��;��z���{�3�v���d�Ju�ӥ>�9ίo���d��~��uG>�q:�Vw@�TX���Z��Sau��ku�N�՝J>Ww�|���N'��ȝ -�;�\�; wj^���cu�Ƅ՝J=Ww�{���N'��ȝ�Ww:�X��1au�Sku�N�՝F����+5��tjc��N����� -�;�\�; wj^ݩ�Z��jg��N����� -�;�\�; wj\�����&��N%��;Y�Pau��ku�N�՝N���;Vw:�Vw@�TXݩ�su'�*��tr��ܩ���ɵ�r���N'��ȝ -�;�|��d�B�՝N���;Vw:�Vw@�TX���Z��Sau���՝,_����ɵ�r���N'��ȝ -�;�\�; w*��T�Vw:�Vw@�TX���Z��Sau��ku�N�՝J>Ww�|���N'��ȝ -�;�\�; w*��tr��ܩ��S���N�/TX���Z��Sau��ku�N�՝N���;Vw*�\��� -�;�\�; w*��tr��ܩ���ɵ�r���N#X݉� -�;�\�; w*��tr��ܩ���ɵ�r���N%��;Y�P��N��;�6&��tj��۩���ɵ�r��՝ʭ՝�v&��tj��۩���ɵ�r��՝�=Vw@mLXݩ�su'�*��tr��ܩyu�s��PVw:�Vw��TXݩ�su'�j^���cu�Ƅ՝N��p;Vw:�Vw@�TXݩ�su'�*��tr��ܩ���ɵ�r���N'��ȝ -�;�|��d�B�՝N���;Vw:�Vw@�TX���Z��Sau���՝,_����ɵ�r���N'��ȝ -�;�\�; w*��T�Vw:�Vw@�TX���Z��Sau��ku�N�՝J>Ww�|���N'��ȝ -�;�\�; w*��tr��ܩ����Vw�|���N'��ȝ -�;�\�; w*��tr��ܩ��S���N�/TX���Z��Sau��ku�N�՝N���;Vw*�\��� -�;�\�; w*��tr��ܩ���ɵ�r���N%��;Y�Pau��ku�N�՝N���;5��tjc��N���;ٽPau��ku�N��;������DX���Z��Sau���՝,_�yu�s��PVw:�Vw��TX���Z��S��N���NV;Vw:�Vw��TX���Z��S��N��;�6&��T깺��Vw:�Vw@�TX���Z��Sau��ku�N�՝J>Ww�|���N'��ȝ -�;�\�; w*��tr��ܩ��S���N�/TX���Z��Sau��ku�N�՝N���;Vw���N��TX���Z��Sau��ku�N�՝N���;Vw*�\��� -�;�\�; w*��tr��ܩ���ɵ�r���N%��;Y�Pau��ku�N�՝N���;Vw�`L��4Vw/(��+z\ݹ;;���_��ѝ����;���������������o�?����o����/?���ǟ���0���|�����YϧkV<�p͡�_�%��YlL�+���l6f��+�=���O<H��,�י��Wf���lL��+�Z�l6&��Y�|62��<+�hv&4�Y�|6�ʬ>>�� u|eV��Ƅ4�1�2>�� ]|eV��Ƅ(�2���fcB_��g�1!�o̳��fgB_���g�1!�����٘P�WfE��lLH��,�ٙпWf���lL��+���l6&��Y�{6���<��hv&4�Y�{6��ʬ�=�� �{eV��ƄԽ1��=�� �{eV��ƄȽ2�q�fcB�^��g�1!oo̳n�fgB�^���g�1!l���ڳ٘P�WfE��lLH��Cў�z�ʬ�=�� 1{eV˞�Ƅ��2+d�fcB�ޘg���� {% {�~&B�^yկg�1�^�̊׳٘9]o�*ףЭW^e�YlL��+���l6f.�+�ֳ�3r��;k�(v&��Y�z63��xt�����z�U���ƄD�1�B=�����J<����L�8��M�bcB�^��g�1!Ko̳J�fgB�^���g�1!H���ѳ٘P�Wf���lLH��,ѣٙСWfe��lL��+��l6&�Yz6���<��hv&��Y�y6��ʬ�<�� �yeVt��Ƅ�1��<�� �yeVn��Ƅؼ2�5�fcBi^��g�1!3o̳2�fgBc^���g�1!0���˳٘P�Wf���lLH��CY����ʬ�<�� QyeVS��Ƅ��2+(�fcBNޘgM�΄��2+%�fcBH^�Ցg�1�"�̊ȳ٘��7�Y�G�3����dz٘�Wf���lL(�+���l6&d�yV���Lh�+���l6&�Y�x63��x������x㝥x;:�ʬL<��#��{oij� -�ʪ@<{� yxc�ux4;3��x�����ax�U��Ƅ*�2+ -�fc�$���^#B^y��g�1!��j��٘���#���D�����ؙЀWf%��lL�+���l6&�ߕY�w6���<��hv&tߕY�w6��ʬ�;�� �weV��Ƅܻ1��;�� �weV��Ƅл2���fcB�]�yg�1!�.��w2/L�+���l6&�ݕYmw6��ʬ�;�� Ywc�Uw4;��ʬ�;�� AweVϝ�Ƅ��2+��fcB�ݘg��΄��2+��fcB�]��pg�1��N�qp����դ|{�r~9������z�x|��m����N��u�C��9�q�����~��O���������ۯ��o����������.��������^�=���U̬��]ϓJaȝ -iO'W�r�B�S�gޓ��N���N�Ƨ�+��S!����|@�T(}*�L}�|�B���U��ܩ��tr? w*$?�\�ȝ -�O%��O�/T:���;ڟN���N�������S��j� P��T��:�* �;:�N��N�����S���3���=� P��N�(�N�,����SsT��e�3!�Ԫ���T�:�!�;5'B�{4B�6&TB�zfBٽP!��*�@��� -u��ژ�uj�B�v*C�|&CY�Ps4ԹG5jcB7ԩ�۩�ur�C w*�C�|�CY�P! ��*�@�Th�:�""�;2�N���N����ϔ(�*�D�\5ȝ -=Q'WPr�BR����ܩPU�e�B�����,�S�-�䊋@�Tȋ:��"�; -�J>�,_�urUF w*tF�\�ȝ -�Q'Wkr�BmT�gn����N���N�樓+:�S!;���@�T(��Cz�+�N���N����+@�S!A��j�@�T��*�̐�|�B���U"�ܩ�"ur�H w*�H�\=ȝ -ER%�IR�/T��:��$�;��N�0 �N�4���M�S�N��3O�� -�R'W�r�B���)�ܩ9S�ܣS�1�T��3U�� -�R'W�r��^�S߃%&B�ԉ�,�کP-U�-e�B��R���� �R�V�n�B����/�ܩ�`��J��ڙ1ujUL�v*tL�\!ȝ�S��=Z&Pj�J=s��^�4urM w*4M�\Qȝ -YS'W�r�B�T�gڔ��N�� �N����+p�S!q��j�@�T��*�̜�|�B���U:�ܩ�:ur�N w*�N�\�ȝ -�S#H��|�B���U=�ܩ�=ur�O w*�O�\�ȝ -�S%��S�/T�:� -(�;�N� -�N������S����3��� -1T'W r�B��D�ܩ�D�h�m���F�xA�� -W��gQ/��oZ��1C5��,j|��~�嗿���_��g�n��o�����??�#�?U|��5�:]�{eԌ�2���/$DO�'E w*D�|FY�P!Z��@�T�:���;��N�h�N�h��?DQ�R!Z��@�T�:���;��N�h�N�h���h!�j�:��@mL�:��p;��N�h�N��B�V���΄h�S+Z��S!Z��@��-t�-�ژ-T�-d�B�h��+Z��Ss�йG��jcB�Щ-�۩-T�-d�B��B���� �B�V��n�B���-�ܩ-T�-d�B�h��+Z��S!Z��@�T�:���;��J>��,_�-trE w*D�\�ȝ -�B'W��r�B�P�g�����N�h�N�h��+Z��S!Z��@�T�*���|�B���-�ܩ-trE w*D�\�ȝ -�B%��B�/T�:���;��N�h�N�h��+Z��S!Zh��B��T�:���;��N�h�N�h��+Z��S!Z��3Z�� -�B'W��r�B���-�ܩ-trE w*D�|FY�P!Z��@�T�:���;��N�h�N�h���h!�*D�\�ȝ -�B'W��r��h�s�h�Ƅh�R�h!�*D�\�ȝ��N}�@���B'V��j�B�P�g���5G�{D�6&D�Z��� -�B'W��r��h�r+Z�jgB�Щ-�۩-trE wj�:��@mL�*���{�B���-�ܩ-trE w*D�\�ȝ -�B%��B�/T�:���;��N�h�N�h��+Z��S!Z��3Z�� -�B'W��r�B���-�ܩ-trE w*D��!Z�� -�B'W��r�B���-�ܩ-trE w*D�|FY�P!Z��@�T�:���;��N�h�N�h���h!�*D�\�ȝ -�B'W��r�B�^�o���-<^P��-��+D����|��A��c#Z8ߣ���ߝ^��/�]n/����?���m����.���o�����/d����t�/�?��/E�>})�+����������<��O�ܩ;����m�����O�ܩ;���������Q�������n?w�q��uG�=�����~�NݑoO�����q�NݑoO��R���i�;u�㋶�s:��}�&�Bݑ�?ߩ��O�"�S�F���Q$wj�ԨR>>5��N͟����Q _��S�J���(�;5jT)�Er��O�*��S�H����Q�\��?5���O�"�S�F��`�ܩ9�,�#�$�Ss���`�|���������N�f)&ɝ��R>L�;5��|�Y�Rs�Y�G�Ir���������N�f)&ɝ��N���5���`�ژ9�,�#�$�Ss�Y�G�Ir����s�����f�&����R>L�;5���`�ژ9��� -0��Ps�Y�G�Ir����t�LR3��z��vj0;�L�/�`��{�Ijc���T����N�f)&ɝ��N���5��|�$wj0K�0I��`��`�ܩ9��� -0A�Ps�Y�G�Ir���������N�f)&ɝ��N���5��|�$wj0K�0I��`��`�ܩ9��� -0A�Ps�Y�G�Ir���������N�f)&ɝ��N���5��|�$wj0K�0I��`��`�ܩ9���3����R>L�;5��|�$wj0K�0I��`vr� _�9�,�#�$�Ss�Y�G�Ir���������N�f'W� ��R>L�;5��|�$wj0K�0I��`vr� _�9�,�#�$�Ss�Y�G�Ir����t�LR3��Z&�j0K�0I��`��&�?s�Y�G�Ij�����+��B�f���6f0K�0���`��`�ܩ1���#��3s�Y�G�In���������N�f���6f0;�Lp/�`��`�ܩ9�,�#�$�Ss�Y�G�Ir�����+��B�f)&ɝ��R>L�;5��|�$wj0;�L�/�`��`�ܩ9�,�#�$�Ss�Y�G�Ir�������3�Wj0K�0I��`��`�ܩ9�,�#�$�Ss���`�|���������N�f)&ɝ��R>L�;5��\&�j0K�0I��`��`�ܩ9�La``���}���u7�LW�wj��v>l�3���0/�����w������~��_�%��������T���/^�y���������g'ÜyV��f����<���<�N�<��+��S!���ʳ@�Tȳ*�̳�|�B��ɕg�ܩ�gur�Y w*�Y�\yȝ +�3�\�3 w*��T�9?��5��t�1?jc��L����� +�3�\�3 wj���ܚ��jg��L����� +�3�\�3 wj����c~�Ƅ��J=�g�{���L'��ȝ��g:����1a~�Sk~�N���J>�g�|�����=�g@mL���Ԛ��Sa~��k~�N���J>�g�|���L'��ȝ +�3�\�3 w*��tr�πܩ0?S���L�/T���䚟�Sa~��k~�N���N���;�g*����� +�3�\�3 w*��tr�πܩ0?��5?r���L%��3Y�Pa~��k~�N���N���;�g:��g@�T����s~&�*��tr�πܩ0?��5?r���L'��ȝ +�3��a~&�W*��tr�πܩ0?��5?r���L'��ȝ +�3�|��d�B���N���;�g:��g@�T���䚟�Sa~�����,_�0?��5?r���L'��ȝ +�3�\�3 w*��T�9?���g:��g@�T���䚟�S��L��3�6&��T�9?���g:��g@��8?ө��3 �L���N��P;�g*������g:����1a~�Sk~�N���N���;5��Tn��d�3a~�Sk~�N���N���;5��t�1?jc��L���3ٽPa~��k~�N���N���;�g:��g@�T����s~&�*��tr�πܩ0?��5?r���L'��ȝ +�3�|��d�B���N���;�g:��g@�T���䚟�Sa~��?��D�J���N���;�g:��g@�T���䚟�Sa~�����,_�0?��5?r���L'��ȝ +�3�\�3 w*��T�9?���g:��g@�T���䚟�Sa~&̦��3pAc~��n���3ኾ|S�|���E���~~�^�|K��5��eggө�4ǃ-�|�����������}�D���w��V�}�ֿ�@3�)���q����xr=a��Ƅq�N�q +p;�)��8E���<Nѹ�8�� ��Z��v*�Str�S�ܩy��rk�"�� ��Z��v*�Str�S�ܩq��S��)@����x�Sd�B�q�N�q +�;�):��)@�T������Sa����q�,_�0N��5Nr��8E'�8ȝ +��\� w*�ST�9N���):��)@�T������Sa���k��N�q�J>�)�|��8E'�8ȝ +��\� w*�Str�S�ܩ0NQ��8E�/T������Sa���k��N�q�N�q +�;�)*���� +��\� w*�Str�S�ܩ0N��5Nr��8E%��Y�Pa���k��N�q�N�q +�;�):��)@�T���s�"�*�Str�S�ܩ0N��5Nr��8E'�8ȝ +���a�"�W*�Str�S�ܩ0N��5Nr��8E'�8ȝ +��|�Sd�B���{�S�ژ0Nѩ5Nn��8E'�8ȝ��)*��)�ڙ0Nѩ5Nn��8E'�8ȝ��):����1a��R�q��^�0N��5Nr��q��=�)@mL������Sa����q�,_�y��s�q +P�):��)��T������Sa����q�,_�0N��5Nr��8E'�8ȝ +��\� w*�ST�9N���):��)@�T������Sa���k��N�q�J>�)�|��8E'�8ȝ +��\� w*�Str�S�ܩ0NQ��8E�/T������Sa���k��N�q�N�q +�;�)*���� +��\� w*�Str�S�ܩ0N��5Nr��8E#��� +��\� w*�Str�S�ܩ0N��5Nr��8E%��Y�Pa���k��N�q�N�q +�;�):��)@�T���s�"�*�Str�S�ܩ0N��5Nr��8E'�8ȝ +��|�Sd�B�q�N�q +�;�):��)@��<Nѹ�8�� ��z�Sd�B�q�N�q +�;5�St��8�?a��k��N�q�J>�)�|��q��=�)@mL������Sa���k��N���[�Y�L������Sa���k��N���{�S�ژ0NQ��8Ev/T������Sa���k��N�q�N�q +�;�)*���� +��\� w*�Str�S�ܩ0N��5Nr��8E%��Y�Pa���k��N�q�N�q +�;�):��)@�T�h��Q�Ra���k��N�q�N�q +�;�):��)@�T���s�"�*�Str�S�ܩ0N��5Nr��8E'�8ȝ +��|�Sd�B�q�N�q +�;�):��)@�T��� +�8\��x��4N��q�����<Nq�~��~Y��)NS�����_��_�����?=٤�~$��O������6)6������e���u��o�������jV�8fg�χ���O�*��0���c���o�U��a2sǼ=��{{���l�����LN/��������L�/����l���L^�����l������*�׳��L�y9N�Sy��a;s�<�o*�Fu�٘yR��E���L�=�ʫ9�,6&���-�d^�yI��!���L��ʫ�,6&l�TfM�d�1�N#�~N��s*��s�ؘ0�S�����ƌ�9��>����x0��X�fN�:s*�s�٘0�S�����Ƅ��ʬ��l6&�4湓�΄��ʬ��l6&L�Tf-�d�1a�2k'�� �8�yn�D�3a�2k'�� �8�Y�8�lL�ĩ̚��fc� Nc�{8��LXé���fc�Ne�N6vp*�fp�٘0�Ә�N4;p*�p�٘0S��~��Ƅ�ʬ�l6&�4�{�΄՛ʬћl6&L�Tf-�d�1a�2k�&�� c7�yn�D�3a�2k�&�� 37�Y+7�lLظ�̚��fc��Mc��6��LX�����fc´MeֲM6vm*�fm�٘0jS�6m�ya¢Me֠M6�l*��l�٘�eS�5e��Ƅ!��<wl�ٙyŦ����L� �ʫ�,6&��Tf��d�1�xM#�vM��k*��k�ؘ0[S��Z���̛5�xL�d�g"�4W�΄��ʬ��l6f����c�&{?a���j�&�� #5�yn�D�3�BM%5����4�W�4YlLئ�̚��fc�0Mc��4��LX�����fc�$Me�"M6�h*��h�٘0FӘ�M4;�h*��h�٘0CS��B��Ƅ �ʬ �l6&�4�?�΄��ʬ�l6&L�Tf-�d�1aw�2kv&�� �3�yn�D�3aq�2kp&�� s3�Yk3�lLؚ�̚��fc��Lc�;3��LX�����fc��Le��L6�e*��e�٘0.S��e�ya²LeְL6fe*�Ve�٘�)S�5)��ƄA��<�d�ٙ�&S�5&��Ƅ)�ʬ%�l6&��Tf��d�1aD�1� �hv&,�Tf �d�1a>�2k=&�� �1�Y�1�lL�i�s7&�� �1�Y�1�lL����Z��fc潘J<�b��3�b�܊�bg�RLe�PL63��T��JL�~��FLe�DL�b�܇�fg�u�J<�a��3�a*��a�ؘ�S�5���̣0�X�0�kDX�����bc�Le�L63o�T�1����0�x�L;V`*�F`�٘0S�����Ƅ��ʬ��l6&��4���΄�ʬ�l6&̾Tf��d�1a�2k�%�� �/�y�D�3a��2k�%�� S/�YK/�lL�y�̚y�fc��Ka~�xI� /�Y/�lL�w��Zw�fc¶KeִK6�]��u�fgªKe֨K6&]*�]�٘��R�5��Ƅ1��<�\�ٙ��R�5��Ƅ�ʬ�l6&l���n�%_�Xpy��4�9�~��N��\Ʃ�.��������������o�?n���o����/?����w���t�������9�x�*�/;$�O.'5��v*Tܝ\7ȝC�N}/�A��-w%�1wV/Tȹ;�zn�;��N���N�������S���3��� +iw'W� r�B��ɕw�ܩxwr� w*4ޕ|F�Y�P!����A�T(�;�Ro�;b�N���N����;�*$ߝ\�7ȝ +�w'W� r�B���U~�ܩ�~W�g�B�������S����J�A�T��;�*p�;:�J>C�,_���wr�� w*���\98ȝ +Ax'Wr�B^�g����N�.�N�2��+ �S!���A�T��+�ij|�B"��Ո�ܩP�wre� w*��\�8ȝ +�x#�ţ|�B.��Ջ�ܩP�wr%� w*D�\�8ȝ +�x%��x�/Ԝ�w�ю�ژP�wj���v*�\9ȝ��ʭ�<�� y�VGn�BI�ɕ��ܩ9&�ܣ&�1�'��3(�� +Iy'WSr�檼s���Ƅ��S�,�S�-��3.�����=�rP +�N���N�ȼ��2�S�3��34�� +�y'Wkr�Bm�ɕ��ܩ�wr� w*4�|F�Y�P!;����A�T(�;��s�;��N���N������=�*$�\ :ȝ +z'W�r�B���U��ܩТW��g�B����G�S�H��J�A�T��;��t�;��J>��,_���wr�� w*��\y:ȝ +�z'W�r�B���"�(_���wru� w*��\�:ȝ +�z'W�r�B�^�g�����N�f�N�j��+[�S!\��*�A�Th�+��׳|�B���կ�ܩP�wr%� w*D�\;ȝ +{%�!{�/TH�;�Zv�;j�N���N�A{�E;�� M{��Q{v/T��;��v�;5�������3��N���N������=�jN�;�h�AmL��;�2wp;B�N���Nͭ{�V��΄ܽS�w�S�x��J�A���w�Q��ژнW��g�B�����}�S�~����A�T�;� +x�;�J>#�,_���wru� w*��\)<ȝ +1|'W r�B_�g����N�&�N�*��+��S!���*�A�Th��C�+��N�>�N�B��+��S!����A�T��+��|�B*���ʃܩP�wr�� w*�\�<ȝ +�|%��|�/T��;��y�;��N�t�N�x>��]=4���J�|���_�������)�?߷��������u���O��tl$��݈��~���?��˯������o���O������W7.�����]��^O?���U�,��YԓJYȝ +YT'Wr�BU�g����N�, +�N�,��+��S!���ʢ@�TȢ*�̢�|�B�ɕE�ܩ�EureQ w*dQ�\Yȝ +YT%�YT�/TȢ:��(�;��N�, +�N�,��+��S!�j�YT��TȢ:��(�;��N�, +�N�,��+��S!���3����=�(P��N�, +�N�,��+��SsU��Ee�3!���ʢ��TȢ:��(�;5gQ�{dQ�6&dQ�zfQٽP!���ʢ@�ԜEu�E�ژ�EujeQ�v*dQ�|fQY�PsչGjcBթ�E�۩�EureQ w*dQ�|fQY�P!���ʢ@�TȢ:��(�;��N�, +�N�,���,*�*dQ�\Yȝ +YT'Wr�B�ɕE�ܩ�EU�Ee�B�,��+��S!���ʢ@�TȢ:��(�;��J>��,_��EureQ w*dQ�\Yȝ +YT'Wr�BU�g����N�, +�N�,��+��S!���ʢ@�TȢ�C�+��N�, +�N�,��+��S!���ʢ@�TȢ*�̢�|�B�ɕE�ܩ�EureQ w*dQ�\Yȝ +YT%�YT�/TȢ:��(�;��N�, +�N�,��+��S!���3��� +YT'Wr�B�ɕE�ܩ9���#��1!���3��� +YT'Wr��,�S߳(&BՉ�E�ک�EU�Ee�B�YT�Y�� YT�Vn�B�ɕE�ܩ9���ʢ�ڙ�EujeQ�v*dQ�\Yȝ����=�(P��J=���^��EureQ w*dQ�\Yȝ +YT'Wr�BU�g����N�, +�N�,��+��S!���ʢ@�TȢ*�̢�|�B�ɕE�ܩ�EureQ w*dQ�\Yȝ +YT#Ȣ�|�B�ɕE�ܩ�EureQ w*dQ�\Yȝ +YT%�YT�/TȢ:��(�;��N�, +�N�,��+��S!���3��� +YT'Wr�B�ɕE�ܩ�E�h�͢��F�xA)� +W�dQ��E]ޯ����Y���,�tϢ���/�������w�=�x�/�����o?���gy��z�}�xku����(E�ѹO_�~���zB�@r��h��+Z��B��B)�ɝ���R>��;5G�|D$wj�*���|��h���h��N��B)�ɝ���R>��;5G�\��j�J�=Z �1s�P�G�@n��h���h��N��B�������R=�r;5G�|D$wj�J�=Z �1s�Щ-�{��h���h��N��B�G�6f�J�����-trE _�1Z(��h�����B�������R>��;5G�\��j�J��H��-��-�ܩ9Z(�#Z �Ss���-�|��h���h��N��B)�ɝ���R>��;5G�\��j�J��H��-��-�ܩ9Z(�#Z �Ss���-�|��h���h��N��B)�ɝ���R>��;5G�\��j�J��H��-��-�ܩ9Z(�#Z �Ss�P�g���+5G�|D$wj�J��H��-��-�ܩ9Z��@�Ps�P�G�@r��h���h��N��B)�ɝ���N�h�5G�|D$wj�J��H��-��-�ܩ9Z��@�Ps�P�G�@r��h���h��N��B�G�6f�:��p/�-��-�ܩ)Z(�_�&�h��h��N��B'W������}�Hm�-��-�۩9Z(�#Z �Sc�йG��jg�h�T�h��N��B)�ɝ���}�Hm�-tjE�^�9Z(�#Z �Ss�P�G�@r��h���h��N��B'W���R>��;5G�|D$wj�J��H��-trE _�9Z(�#Z �Ss�P�G�@r��h���h��N��B%��B���-��-�ܩ9Z(�#Z �Ss�P�G�@r��h��+Z��B��B)�ɝ���R>��;5G�|D$wj�:���/�-��-�ܩ9Z(�#Z �Ss��^�/�����Ot��F����r��·�u�ha���-��������r{����������^���2~��l�p!k�p��~���xxy���{�Rt�ӗ���~9^o��yr=O���(w��zxy������O�ܩ;���������Q�������~�H\��i�/���t.��m�Q����t���m�Q����t�/�m��F�Sw>�h{:�c{��i�/����J���(�;5jT)�Er��O�*��S�H����Q�\��?5���O�"�S�F���Q$wj�ԨR>>5��N͟����Q _��S�J���(�;5jT)W� r�B���`�ܩ`V�`f�B����+��S!��� +0A�T0;�L�;�F�`F�J����+��S!��� +0A�T0;�L�;�J>�,_�9���#��1!��� +0��T0;�L�;5��[fV;�N���N����+��Ss�ٹG� jcB�Y�g����N���N�f�&�� f�V� n�B�Y�g���5��{��6&��Z&�� +f'W� r�B�Y�g����N���N����+��S!��� +0A�T0+�0�|�B���`�ܩ`vr� w*��\&ȝ +f%�f�/T0;�L�;�N���N����+��S!���3��� +f'W� r�B���`�ܩ`vr� w*��|�Y�P!��� +0A�T0;�L�;�N���N����?�Q�R!��� +0A�T0;�L�;�N���N������3�*��\&ȝ +f'W� r�B���`�ܩ`V�`f�B����+��S!��� +0A�T0;�L�;�J>�,_�`vr� w*��\&ȝ���=LP�J=��^�`vr� wj0;�=��g"��X&�� +f%�f�/�`v�`�ژ`vj��v*��\&ȝ��ʭ�3�� f�V� n�B���`�ܩ9���#��1!���3��� +f'W� r�B���`�ܩ`vr� w*��|�Y�P!��� +0A�T0;�L�;�N���N������3�*��\&ȝ +f'W� r�B���`�ܩ`6��3�W*��\&ȝ +f'W� r�B���`�ܩ`V�`f�B����+��S!��� +0A�T0;�L�;�J>�,_�`vr� w*��\&ȝ +f��.h��t{�0��������y�a�ql���ZW~�O������~��_�%�������T���/^�y���������g'ÜyV��f����<���<�N�<��+��S!���ʳ@�Tȳ*�̳�|�B��ɕg�ܩ�gur�Y w*�Y�\yȝ yV%�yV�/Tȳ:��,�;�N�<�N�<��+��S!Ϫ�3��� yV'W�r�B��ɕg�ܩ�gur�Y w*�Y��!ϊ� yV'W�r�B��ɕg�ܩ�gur�Y w*�Y�|�YY�Ps�չG�jcB�թ�g�۩�gur�Y wjγ*��v&�Y�Zy�� @@ -7142,90 +7160,90 @@ yV#ȳ yV%�yV�/Tȳ:��,�;�N�<�N�<��+��S!Ϫ�3��� yV'W�r�B��ɕg�ܩ�gur�Y w*�Y�|�YY�P!���ʳ@�Tȳ:��,�;5�Y�{�Y�6&�Y�z�YٽP!���ʳ@�Ԙgu�{���Dȳ:��,P;�J>�,_�9���#��1!���ʳ��Tȳ:��,�;5�Y�[yVV;�N�<�N�<��+��Ss�չG�jcB�U�g����N�<�N�<��+��S!���ʳ@�Tȳ*�̳�|�B��ɕg�ܩ�gur�Y w*�Y�\yȝ yV%�yV�/Tȳ:��,�;�N�<�N�<��+��S!�j�yV��Tȳ:��,�;�N�<�N�<��+��S!Ϫ�3��� -yV'W�r�B��ɕg�ܩ�gur�Y w*�Y�|�YY�P!���ʳ@�Tȳ:��,�;�P�y\�ȳ/����g�+���������Y��ȳ^�y�������������|�k�x���|y9~�h~�x%�N��ݰ���/!���ܧ�__Z?���\�*�I�Pw������}'��F�Sw����#y+���(w�|{:/?�w��i�;u��LJ%V���Y�P�#;�>��N��`���F�;>����#A�T��J>?�1�*|c'�G0�ܩ���\�r��G0vr}#ȝ -�X�g���N���N�Ʒ����S����j|A�Th|+�l|�|�B������ܩ��vr5� w*4��\�/ȝ -�o%��o�/Th|;�_�;�N���N�Ʒ����S������ -�o'W�r�B������ܩ��vr5� w*4������ -�o'W�r�B������ܩ��vr5� w*4��|6�Y�Ps�۹G�jcB�۩���۩��vr5� wjn|+�߬v&4��Z�/�� -�o'W�r��Ʒs���ƄƷR��7�*4��\�/ȝ���=_P�N���N�Ʒ���7�jn|;�h|AmLh|;�_p;�N���N�Ʒ���7�*4��\�/ȝ -�o'W�r�B������ܩ��V���f�B�Ʒ����S����j|A�Th|;�_�;�J>�,_���vr5� w*4��\�/ȝ +yV'W�r�B��ɕg�ܩ�gur�Y w*�Y�|�YY�P!���ʳ@�Tȳ:��,�;�P�y\�ȳ/(�Yኖ<��������By�86��{���?b��~���?��/���| �i��_^��<��| �GI��bm7�z��K�x�:���ח�������;�'���i�/���p=}�d���Q����p�H�J��4ʝ�#ߞ���O���~�N��,��a��|~c�/T��N��`�S�#;�>��N��`���F�;>���Ϗ`�� +����� w*|c'�G0�ܩ���\�r��G0V���f�B�Ʒ����S����j|A�Th|;�_�;�J>�,_���vr5� w*4��\�/ȝ �o'W�r�B�[�g���N���N�Ʒ����S����j|A�Th|+�l|�|�B������ܩ��vr5� w*4��\�/ȝ �o#h|�|�B������ܩ��vr5� w*4��\�/ȝ -�o%��o�/Th|;�_�;�N���N�Ʒ����S������ -�o'W�r�B������ܩ��vr5� w*4��|6�Y�P����j|A�Th|;�_�;57��{4��6&4��z6�ٽP����j|A����v�{���Dh|;�_P;�J>�,_����ܣ��1����j|��Th|;�_�;57��[�oV;�N���N�Ʒ����Ss�۹G�jcB�[�g���N���N�Ʒ����S����j|A�Th|+�l|�|�B������ܩ��vr5� w*4��\�/ȝ -�o%��o�/Th|;�_�;�N���N�Ʒ����S��m��o��Th|;�_�;�N���N�Ʒ����S������ -�o'W�r�B������ܩ��vr5� w*4��|6�Y�P����j|A�Th|;�_�;ߐ���/\�h|/(5�ኖ����������B��86�����/?��//����O?���o���~��������o�|�����o��������q���_���������Ok�������}�����*Ǐ?����jh<���>�����ϗw����ΓJ/�ܩ��N'��; w*��S���;Y�P��N��w@�Txy�����;^���zy�N��w*�|y'�*������ȝ -/�tr��r���;�\/�ܩ��N%�/�d�B��w:�^��S��N��w@�Txy�����;^ީ���,_���N'��; w*������ȝ -/�tr��r���;����(_���N'��; w*������ȝ -/�tr��r���;�|����^���zy�N��w:�^��S��N��w@�Txy��ϗw�|���;�\/�ܩ��N'��; w*������ȝ -/�T���N�/Txy�����;^���zy�N�/�t����� /�T���Nv/Txy�����;5��ө�/��3^���zy�N��w*�|y'�j~y�s��w@mLxy�S��p;^���zy�N�/�Tn����΄�w:�^��S��N��w@����N�/�ژ��N��/�d�B��w:�^��S��N��w@�Txy�����;^ީ���,_���N'��; w*������ȝ -/�tr��r���;�|����^���zy�N��w:�^��S��N��w@�Txy��?���+^���zy�N��w:�^��S��N��w@�Txy��ϗw�|���;�\/�ܩ��N'��; w*������ȝ -/�T���N�/Txy�����;^���zy�N��w��"��;pA��������7EΗ�_Y�������˷�/���y�Ʃq��;��k;o�|~Y���߾���?����������~����l5�x������';�什�q���1������^Mr�fgse֊s66�+�&��٘0�\��ߜ�Ƅ���<Ǜ�ٙ0�\��ܜ�Ƅ��ʬ��l6&�6Wfm6g�1a��1���hv&�5Wf�5g�1a��2k�9�� C͕Y;��lLXin�s�9�� ͕Y��lL�g�̚g�fc�8se�6s6����0s2/L�e��Ze�fc�&se�$s6�+����٘��ܘ�s4;3O1W�Ĝ�����\y5Ü�Ƅ�ʬ �l6f^`n�`�^#��r���r��+����٘yx������L����;G��ؙ0�\�������{˕x�-g�g"�-W^m-g�1ai�1ϡ�hvf�Y��ce9{?ac��jb9�� ˕Y���lLXWn�s\9�� �ʕYqV6Ҭʬ2+�� ]VeV���Ƅ(�1�&+�� EVeV���Ƅ�2���fcB�U��be�1!�j̳ÊfgB�U�ae�1!���*��٘�_Uf�W�lL���l��ٙP^Uf�W�lLȮ*���l6&4W�Y�U6���<{�hv&�V�Y�U6R�ʬ�*�� �UeVf��ƄȪ0?4Vɼ0���� -��٘�WUf�U�lLh�*�Ҫl6&�U�yvU��L��*���l6&$U�YEU6z�ʬ�*�� 1Uc�-U4;J�ʬ�*�� UeVE��Ƅ��2+��fcB@g?�΄z�2+��fcB:U�UNe�1s7U�G6����M5��LE�3���� -��٘1����Z*[?�J��טJ5��IE�3s%U�G$�����HU^RYlL�*��l6f���ڨ�5"�Q�WaT��ʬ**�����J<����L� ���*�� 5TeV��Ƅ�2���fcBU��Ae�1!�j̳��fgBU�@e�1!�̪��٘�>Uf�O�lL��잢ٙP=UfEO�lLH�*���l6&�N�Y�S6b����:%�ҩ2+t�fcB�T�U9e�1�q��J��٘85��7E�3�n�̊��٘�6Uf�M�lL�*���l6&DM�y6M��L(�*���l6&�L�Y5S6Z��ԦM��Ռ���jRȴ9w�t>^o�+�L��ג�2�����~�ן�M����������gL���~���~{���?��p!kδ�n���3}mv��k�m���'���;��N���N�ħ���'�*T>�\�ȝ -�O'W�r�B�����ܩ��T���d�B�⧓+��S!���~@�T�~:���;ҟJ>۟,_�P�tr�? w*@�\ȝ - P'Wr�B��:�(_�Pur�@ w*�@�\5ȝ -=P'Wr�BT�g��5WA�{dA�6&�A�Ze�� -mP'Wr��<�r��jgB!ԩ��۩ urUB wj�:��@mLH�*�l��{�B-�ɕ�ܩ9�ܣ�1��Ԋ���TȆ*�솲|��r�s�t�Ƅx�S��S��� -�@�TH�*�l��|�BE�ɕ�ܩur�D w*�D�\1ȝ -9Q%�=Q�/T(�:��"�;��N���N����+,�S!-��-�� -uQ'W^r�B`��U�ܩ�urEF w*dF�|vFY�P�4��J�@�T��:�j#�;z�N���N�䨒��(�*TG�\�ȝ -�Q'Wyr�B{���ܩ�5��(�W*H�\ ȝ -R'W�r�B���"�ܩ�"U��"e�B���+G�S!H��*�@�Th�:��$�;��J>��,_�P&ur�I w*�I�\uȝ -}R'W�r�B�T�g���*�N�L �N�P���T�Ss�ԹG�jcB�T�g�����N�d �N��R��WK �L�n�+\�S!]��]����=�%P�N�� �N����+b�Ss�T��1e�3�d��J���T��:�j&�;5�L�{M�6&$M�z6MٽP�j��ʚ@�T�:��&�;ڦN�� �N����Ͼ)�*N�\�ȝ -�S'W�r�B���:�ܩ�:U��:e�B�ک�+w�S!x��*�@�Th�:��'�;��F��=E�J��+}�S!~�䪟@�T�:�(�;�J>�,_�PAureP w*�P�\%ȝ --T'Wr�BU�g����N�$ -�N�(�����S�� -�NF��2��ޏ�iT����z�6�x�~�y9B5N}m�^�m����o�������~����ϟ��_~����P?�����������������^��嗿�u������78���z�~��i�����5��E��JEA�/T( -:���;��N����N�����(��S�(h�EA��T( -:���;��N����N�����(��S�(��(���=�P��N����N�����(��SsQP�Ud�3�(��* +�o%��o�/���v����ژ��vj5��v*4��\�/ȝ��ʭ�7�� �o�V�n�B������ܩ���ܣ��1��Գ��� +�o'W�r��Ʒs���ƄƷS���S��������=_P�N���N�Ʒ����S������ +�o'W�r�B������ܩ��vr5� w*4��|6�Y�P����j|A�Th|;�_�;�N���N�Ʒ���7�*4��\�/ȝ +�o'W�r�B������ܩ��V���f�B�Ʒ����S����j|A�Th|;�_�;�J>�,_���vr5� w*4��\�/ȝ +�o'W�r�B����(_���vr5� w*4��\�/ȝ +�o'W�r�B�[�g���N���N�Ʒ����S����j|A�Th|+�l|�|�B������ܩ��vr5� w*4��\�/ȝ +�o%��o�/Th|;�_�;�N���N͍o��/�� �o���ov/Th|;�_�;56�������3�N���N�Ʒ���7�jn|;�h|AmLh|;�_p;�N���N͍o�V��΄ƷS���S����j|A����v����ژ��V���f�B�Ʒ����S����j|A�Th|;�_�;�J>�,_���vr5� w*4��\�/ȝ +�o'W�r�B�[�g���N���N�Ʒ����S����j|A�Th|�C��+�N���N�Ʒ����S����j|A�Th|+�l|�|�B������ܩ��vr5� w*4��\�/ȝ +�o%��o�/Th|;�_�;�N���N��7��m�4������pE�G0^.������Q�^��~���zy9��_������?����/����������O�����~��g?�?�������7�{}���Y���w?���~�~}[���1�<\���������3>���������W��Y�&����Ƅ�v*����fc�;�y���΄�u*����fc»:�Y��d�1�E�ʬ�t�٘�Nc�/�D�3��ʬ7t�٘�~Ne��9�lLx9�2�ݜl6&��Ә�9��Lx-�2뭜l6&��S��JN6^ȩ�z'�� o�4��2N4;^ũ�z'�� ��Tf����Ƅ�p*����fc�8����d^���Me��7�lLx��2�՛l6&�xS���M6i��hv&�rS���M6��z�&�� /�Tf�k��Ƅ7m�|�&�� ��Tf�e��Ƅwl*�^��fc�6�Y��d�1���<_��fg«5�Yo�d�1ʬ�j�٘���J<ީ���Dx����j�ؙ�:Me��4�l��.M彿J���x�"Me�{4�kLx��1ϗh�ٙ��J<ޠ���Dx�����,6&�<S���L63�9ӈ��L�^���zk&�� ��Tf�2����/�T��L�~&��2�w�,�΄We*�ޔ�fc�{2�Y��d�1�%�ʬwd�٘��Lc�/�D�3���ʬ�c�٘�nLe֫1�lLx1�2뽘l6&�Ә�K1��Lx%�2던l6&�S��:L6^���z&�� o��a�ya�k0�Yo�d�1��ʬW`�٘�Le��/�lLx��1ϗ_�ٙ��Ke֛/�lLx�2뵗l6&��R���K6�xi��hv&��R���K6�u��z�%�� /��]Ѿ璯f���p5����\�/���*Η�_&��\�����/߅>�������c:��%��x��o����������N�����?~��ߏ��oϖ�����{��u�~���eo����;}-s��� �O.( ��ܩ0���5�r���p%��Y�Pa���k��N��N�`�;�;��A�T���s�8�*�wr ��ܩ0���5�r���p'��0ȝ +��|�g�B��N�`�;�;��A�T�����Sa���?�G�J��N�`�;�;��A�T�����Sa�����,_�y��s�`P�;����T�����S��p���pV;�;����T�����S��p���6&�W�9����;��A��<�ܹ��0�� ��Z��v*�W�9���5�w�1�jc��p���0�� +��\� w*�W�9����;�2"�;B�N���N����+&�S!'��'�� +EQ'WRr�BT��U�ܩ�ur�E w*�E�|�EY�P�.��ʋ@�T�:� +#�;�N���N�̨���(�*�F�\�ȝ +�Q'Wmr�Bo���ܩ�U��e�B�ꨓ+;�S!<��*�@�Th�:��#�;�F��E�J���+A�S!B�䪐@�T�:�B$�;R�J>[�,_�P#ur�H w*I�\Eȝ +MR'W�r�B�T�g���ʤN�4 �N�8���N�S�O�� +�@�TH�*�l��|�B��ɕ)�ܩ*ur�J wjn�:���@mLȕ*�앲{�B��ɕ,�ܩ1Z���j ğ��-ub�K�v*�K�|�KY�Ps�ԹG�jcB�ԩU0�۩�0urEL wjΘ*�:��v&�L�Z)�� +1S'W�r�枩s�� �Ƅ��RϦ)�*TM�\Yȝ +aS'W�r�B���7�ܩ�7U��7e�B�©�+q�S!r�䪜@�T�:�B'�;R�J>[�,_�P;ur�N w*O�\�ȝ +�S'W�r�B�����(_�P>ur�O w*�O�\�ȝ +�S'W�r�BU�g��*�N� +�N������S���䊡@�Tȡ*�졲|�B�ɕD�ܩEurUQ w*tQ!�i�(��QF=^PJ��-m�+�Q������ڨq�k�zo��ǟ��w��o����v���O��������O��������w���_����n/����_����������|�L�l?O�4S_K�W�gQ��E������ �*�\Eȝ +EA'WQ�r�BQ��U�ܩP4� �W*�\Eȝ +EA'WQ�r�BQ��U�ܩPT�Yd�B�EA�E�� EA�VQ�n�BQ��U�ܩ�(��* +�ڙPtj�v*�\Eȝ����=�P��J=���^�Ptr wj. +:�( +@mL( +:��p;��J>��,_��(�ܣ(��1�(��* ��T( -:���;5�{�6&�zٽP�(��* -@��\t�Q�ژPtj�v*�|Y�PsQйGQ�jcBQЩU�۩Ptr w*�|Y�P�(��* -@�T( -:���;��N����N����Ϣ �*�\Eȝ -EA'WQ�r�BQ��U�ܩPT�Yd�B�����(��S�(��* -@�T( :���;��J>��,_�Ptr w*�\Eȝ EA'WQ�r�BQP�gQ����N����N�����(��S�(��* @�T( -�CQ�+��N����N�����(��S�(��* -@�T( *�, �|�BQ��U�ܩPtr w*�\Eȝ EA%�EA�/T( :���;��N����N�����(��S�(��(�� -EA'WQ�r�BQ��U�ܩ�(�ܣ(��1�(�Գ(�� -EA'WQ�r�Ƣ�Sߋ&BQЉU�کPT�Yd�B�EA�E�� EA�VQ�n�BQ��U�ܩ�(��* -�ڙPtj�v*�\Eȝ����=�P��J=���^�Ptr w*�\Eȝ -EA'WQ�r�BQP�gQ����N����N�����(��S�(��* +EA'WQ�r�BQ��U�ܩPtr w*���(�� +EA'WQ�r�BQ��U�ܩPtr w*�|Y�P�(��* @�T( +:���;��N����N����Ϣ �*�\Eȝ +EA'WQ�r�BQ��U�ܩPT�Yd�B�����(��S�(��* +@��\t�Q�ژPT�Yd�B�����(��ScQЩ�E�?�(��* +@�T( *�, -�|�BQ��U�ܩPtr w*�\Eȝ -EA#( -�|�BQ��U�ܩPtr w*�\Eȝ -EA%�EA�/T( +�|�梠s����Ƅ��S�(��S�(��* +@��\TnY�L( +:��p;��N����N�EA�E�� EA��EAv/T( :���;��N����N�����(��S�(��(�� -EA'WQ�r�BQ��U�ܩP�W�ۢ�.h��~�/ -�m��n�'�x!k�w�|9=���������/��Ǖm?��+��ҡ�����x�|��o���������/�|� -좏�����U��z���ާ�|�O_��/V�>]�a����r���'�D~?�r���o���˱��O�ܩ��_>��r+��4���|��^/��~�Nݑ_�k{��i�;uG~;ܮ����O�ܩ�����ϯo�m�I�Pw��ӹ���>N�ܩ;���?�����Q����tN��m��F�S��o��9���}�&�BݑoO�����q�NݑoO�����q�Nݑ�o����_�ژ����ퟞ�{>N�{���χ��s{��i�;uG��b�Z��F�1w�ۓy����~�N}�ٽl����}�F�� _�;���|�T�F�1w�ۓ9]�Z��4���#������(w�s�q{4/�/!�aR;s�|>\�o��������p����|�F�Sw����[��,�?�kO��������4��|{.�c{��i�;uG�=�o7w��i�;uG�=�˩����(w�s�y{:�s{��i�/���tN�����(w�|{:_�:��4ʝ�#ߞ��멕�O�ܩ����������4���|x�]��>N�ܩ;���������J�+��ҞUEXh|dHݍ�����lٲ|�+��YC�$��O2ϻ_�~p���j��3k��I�*<{�rI���4ʝ�!��ϗ�m_�F�S���O����'=M�Bݐ/��C�7(z�Nݐ/���)}���(w�|�tN��m_�F�S7~@y�t���mO��P7���3��4ʝ -�[����� w*�nu&��V�ܩ�Ց|�nu//T���L�߭�S�w�3�~��N�߭����j�;~�:��߭�� -�[����� w*�nu&��V�ܩ�ՙ\�[ r�Be*���T//T�LerU�@�T�LerU�@�T�LerU�@�T�L%��T+�T�LerU�@�T�LerU�@�T�LerU�@�T�LE�Y����W�2��L�ژP��ԪL�۩P���L�ܩ}e*r�2ի� ��L���� -��L��ȝ�W�2��L�ژP��Գ2ջ*S�\�)�;��Le�Q��1�2��U��S�2�ge��j_��ܣ2jcBe*S�2n�Be*��2r�Be*���T//T�LerU�@�T�LerU�@�T�LerU�@�T�LE�Y��� +EA'WQ�r�BQ��U�ܩPtr w*�|Y�P�(��* +@�T( +:���;��N����N����?Q�R�(��* +@�T( +:���;��N����N����Ϣ �*�\Eȝ +EA'WQ�r�BQ��U�ܩPT�Yd�B�����(��S�(��* +@�T( +�+�mQ�4���z?��?\�ߓ|�����}���������� �����ʶ����O���u�w���]���w�۷���������_�Tv��������*�i����m��T>�/�Ď�s�.��^��p9~� �z"��F�Sw��������Q����/ls���q��uG~>�n��V~?�r��ȯ��۵���4ʝ�#�n�k}��Q�����������$_�;���\n�m�Q����t��q����(w�|{:�����O�ܩ����^��>N�|��ȷ�s|io�8�r��ȷ��rlo�8�r���o���_�uQm������OO�=�ɽPw����۹���4ʝ�#�~�s��_�ژ;��ɼ^�{~?�n�>��^�keo��V�^����ܨ*�B�#@�n�mML�d˖�+ݰX�nư��%���}�y��"����W�-�YHjV���G���ϝ��y�nȗ���<s�>�jcn��O�x����it;uC�|4�K���O�ܩ���ه��ڙ����tM?��4���!?�ק�=O�ܩ�������(~K��=v��>}��Ӥ.� ���>�F�S7������3��4ʝ�!_>��c���O�ܩ����9�ҷ}<M�Bݐ/�����i�;uC�|:���|}�Nݐ/�����קQ�����n������i����{��ӷ}<�r�n�ϻ�咾��i�;uC~�=�/�۾>�r�ޗ?.���5�gOz�䅺!_>���oP�4ʝ�!_>��S����Q�� �����۾>�r�n�������>�&y�n��/Lg��i�;~�:��w�A�T���L�߭�S�w�#����^^��ՙ\�[ r���Vgr�n5ȝ +�[����� w*�nu$��[��~�:��w�A�T���L�߭�S�w�3�~��N��T$���^^�P���L�ܩP���L�ܩP���L�ܩP�J�7��V^�P���L�ܩP���L�ܩP���L�ܩP���2����Le�Q��1�2��U��S�2��U��S��T�Ve�W;*S�Z�)p;*S�\�)�;��Le�Q��1�2�ge�w*T�2�*S wj_��ܣ2jcBe*S�2n�Be*���T//Ծ2��Ge +�Ƅ�T�Ve +�N��T&We +�N��T$���^^�P���L�ܩP���L�ܩP���L�ܩP���2��*S�\�)�;*S�\�)�;*S�\�)�;*S�|V�zy�Be*��2r�Be*��2r�Be*��2r�Be*���T//T�LerU�@�T�LerU�@�T�LerU�@�T�LE�Y��� +��L��ȝ +��L��ȝ +��L��ȝ +��D~S�j� ��L��ȝ ��L��ȝ ��L��ȝ ��H>+S��P�2��U��S�2��U��S�2��U��S�2�ge��*T�2�*S w*T�2�*S w*T�2�*S w*T�"��L��B��T&We �N��T&We -�N��T&We -�N��T"��L��J��T&We -�N��T&We -�N��T&We -�N��T$���^^�P���L�ܩP���L�ܩP���L�ܩP���2��*S�\�)�;*S�\�)�;*S�\�)�;*S�|V�zy�Be*��2r�Be*��2r�����=*S�6&T�"��L��B��T&We -�Nm+S�z�L��-*S�X�)P;*S�|V�zy�����=*S�6&T�2�*S�v*T�2�*S wj_��ܪL�jgBe*S�2n�Be*��2r�����=*S�6&T�"��L��B��T&We +�N�+S�{T�@mL�LE�Y��݅ +��L��ȝ�V�2�Z��["T�2�*S�v*T�"��L��B�+S�{T�@mL�LejU���T�LerU�@�Ծ2�U���΄�T�Ve +�N��T&We +�N�+S�{T�@mL�LE�Y��݅ +��L��ȝ +��L��ȝ +��L��ȝ +��H>+S��P�2��U��S�2��U��S�2��U��S�2�ge��*T�2�*S w*T�2�*S w*T�2�*S w*T��Me��W*T�2�*S w*T�2�*S w*T�2�*S w*T�"��L��B��T&We �N��T&We �N��T&We -�N��T$���^^�P���L�ܩP���L�ܩP���L�ܩP���2��*S�\�)�;*S�\�)�;*S�\�)�;*S���2��+*S�\�)�;*S�\�)�;*S�\�)�;*S�|V�zy�Be*��2r�Be*��2r�Be*��2r�Be*���T//T�LerU�@�T�LerU�@�T�L�y��2/hT�n_���ve�yE��[��2�[}Z����Ms���z�3uXKS�����w_����?>���[ٿ�����������lT��`�_��{�b�,�^P�`y�� �P>,$wj�` ��Br�� �н6XHm̾����`w�� �P>,$wj�` �k�����,�z4X��Ծ��g���Wj�` �k�����,�z4X��Ծ��G���Nm,�{4X@�̾��G���N�,�|4XH�Ԯ��_,$~K�,�X Pj�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����`!�S�K&W���7XB�h��ܩ}�%��ɝ�7XB�h��ܩ}�%����B�,�|4XH�Ծ��G���N�,�|4XH�Ծ����`y�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�|6Xzy�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K�^,�6f�` գ�Bn�� �P>,$wj�`�ܣ�jg� �P=,�vj�` ��Br�� �н6XHm̾����`w�� �P>,$wj�` �k�����,�z4X��Ծ����`y�� �н6XHm̾��G���N�,�|4XH�Ծ����`y�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` ��Br�� �H>,��R�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` �k�����,�Z pj�` ��Br�v �P��`!�[b�` ţ�Bj�� �L���m����Bjc� �P=,�vj�` ��Br�� ��=,�vf�` գ�Bn�� �P>,$wj�` �k�����,�Z pj�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����`!�S�K&W���7XB�h��ܩ}�%��ɝ�7XB�h��ܩ}�%��K/�Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����B/h}��j,�+�m���8�o�\v���`O�6X�k�������_���������������xx��������������|�ç?������O�߇�߽��_����k�C������o^����?�^7>�y���e�8��/�9N��r����]�p���u�r��lj�{'�ژp���u�n��qb$�lj��P����=�AmL8N��:N�S�81��8�N���H>�{y��qb&�q"ȝ +�N��T$���^^�P���L�ܩP���L�ܩP�j�HYe +^ШLݾ���ve�yE��[��2�[}Z����Ms���z�3uXKS�����w_����?>���[ٿ�����������lT��`�_��{�b�,�^P�`y�� �P>,$wj�` ��Br�� �н6XHm̾����`w�� �P>,$wj�` �k�����,�z4X��Ծ��g���Wj�` �k�����,�z4X��Ծ��G���Nm,�{4X@�̾��G���N�,�|4XH�Ԯ��_,$~K�,�X Pj�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����`!�S�K&W���7XB�h��ܩ}�%��ɝ�7XB�h��ܩ}�%����B�,�|4XH�Ծ��G���N�,�|4XH�Ծ����`y�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�|6Xzy�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K�^,�6f�` գ�Bn�� �P>,$wj�`�ܣ�jg� �P=,�vj�` ��Br�� �н6XHm̾����`w�� �P>,$wj�` �k�����,�z4X��Ծ����`y�� �н6XHm̾��G���N�,�|4XH�Ծ����`y�� �P>,$wj�` ��Br�� �P>,$wj�`��j���P�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` ��Br�� �H>,��R�K( �;�o����`!�S�K( �;�o�dr5X@^�}�%��ɝ�7XB�h��ܩ}�%��ɝ�7X2�, /Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` �k�����,�Z pj�` ��Br�v �P��`!�[b�` ţ�Bj�� �L���m����Bjc� �P=,�vj�` ��Br�� ��=,�vf�` գ�Bn�� �P>,$wj�` �k�����,�Z pj�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����`!�S�K&W���7XB�h��ܩ}�%��ɝ�7XB�h��ܩ}�%��K/�Ծ��G���N�,�|4XH�Ծ��G���N�,�\ �j�` ��Br�� �P>,$wj�` ��Br�� �L���o����`!�S�K( �;�o����B/h}��j,�+�m���8�o�\v���`O�6X�k�������_���������������xx��������������|�ç?������O�߇�߽��_����k�C������o^����?�^7>�y���e�8��/�9N��r����]�p���u�r��lj�{'�ژp���u�n��qb$�lj��P����=�AmL8N��:N�S�81��8�N���H>�{y��qb&�q"ȝ lj�\lj w*'fr'�ܩp���qb//T8N��:N�S�81��8�N���L��D�;�#�<N�� lj�\lj w*'fr'�ܩp���u�r��qb$�lj��P�81��8�N���L��D�;�3��A�T8N���8��*'fr'�ܩp���u�r��qb&�q"ȝ lj���8��W*'fr'�ܩp���u�r��qb&�q"ȝ @@ -7246,44 +7264,49 @@ EA'WQ�r ]�L��%ȝ ]�L��%ȝ ]�L��%ȝ -]�H>����P�k��յ�S�k��յ�S�k��յ�S�k�gײ�*t-3��� w*t-3��� w*t-3��� w*t-�Mײ�W*t-3��� w*�3��� w*�3��� w*�#����B��a&���N��a&���N��a&���N��a$���^^��?����ܩ�?����ܩ�?����ܩ�?��s�����\�C�;���\�C�;��f�?�1a����w*�3��� wj�?�����o��?����ک�?��s����f�?�1a���?�Sa�ɵ?�S��a����W;���Z�Cp;���\�C�;��f�?�1a����w*�3��� w*�3��� w*�3��� w*�#����B��a&���N��a&���N��a&���N��a$���^^��?����ܩ�?����ܩ�?����ܩ�?L�7��V^��?����ܩ�?����ܩ�?����ܩ�?��s�����\�C�;���\�C�;���\�C�;���|�{y���0�kr���0�kr�����ǥ�CxAcx�������+�������pzz���x�u���߿��j��?���˿�������?������~�������ߞ{^��:�{ܝ���n^C}�/����_�\ ��u4�;/�[ �ܩ�@��s�����\D�;��\D�;��\D�;��|.{y��1�k�r��1�k�r��1�k�r��1��b//TX fr-A�TX fr-A�TX fr-A�TX F�@�� +]�H>����P�k��յ�S�k��յ�S�k��յ�S�k�gײ�*t-3��� w*t-3��� w*t-3��� w*t-�Mײ�W*t-3��� w*�3��� w*�3��� w*�#����B��a&���N��a&���N��a&���N��a$���^^��?����ܩ�?����ܩ�?����ܩ�?��s�����\�C�;���\�C�;��f�?�1a����w*�3��� wj�?�����o��?����ک�?��s����f�?�1a���?�Sa�ɵ?�S��a����W;���Z�Cp;���\�C�;��f�?�1a����w*�3��� w*�3��� w*�3��� w*�#����B��a&���N��a&���N��a&���N��a$���^^��?����ܩ�?����ܩ�?����ܩ�?L�7��V^��?����ܩ�?����ܩ�?����ܩ�?��s�����\�C�;���\�C�;���\�C�;���|�{y���0�kr���0�kr�����ǥ�CxAcx���N������]��yw8==��p<��?|\����}R5������������Ǐ���}���_?���_��oϿ=/��C�=�N��q7���×�����/c.o�:���-A�TX F�@�� +�L�"ȝ +�L�"ȝ �L�"ȝ +�H>���Pa��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa�����*,3�� w*,3�� w*,3�� w*,#�\ ��B�b&��N�b&��N�b&��N�b$��^^��@��Z �ܩ�@��Z �ܩ�@��Z �ܩ�@L�7�V^��@��Z �ܩ�@��Z �ܩ�@��Z �ܩ�@��s����_ f�@�1a����@�Sa��ɵ@�S�b���W;��ZDp;��\D�;�_ f�@�1a����w*,3�� wj�@��c�jc�1Sk�n��1��b//�~�����Ƅb���N�b&��N�b$��^^��@��Z �ܩ�@��Z �ܩ�@��Z �ܩ�@��s�����\D�;��\D�;��\D�;��|.{y��1�k�r��1�k�r��1�k�r��1��b//TX fr-A�TX fr-A�TX fr-A�TX F�@�� �L�"ȝ �L�"ȝ -�H>���Pa��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa���o���Ra��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa�����j�@��c�jc�1Sk�n��1�k�r���ȭb�v&,3���v*,3�� wj�@��c�jc�1R�b�.TX fr-A��~�����Ƅb���N�b$��^^��1s�"�� �L�"�� �L�"ȝ -�H>���Pa��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa�����*,3�� w*,3�� w*,3�� w*,#�\ ��B�b&��N�b&��N�b&��N�b$��^^��@��Z �ܩ�@��Z �ܩ�@��Z �ܩ�@��s�����\D�;��\D�;��\D�;���f���+��\D�;��\D�;��\D�;��|.{y��1�k�r��1�k�r��1�k�r��1��b//TX fr-A�TX fr-A�TX fr-A�TX F�@�� +�D~�@l� �L�"ȝ -�L�"ȝ�/3�X �ژ�@��s�ػ��\D�;�] f�u��DX fb-A�TX F�@���/3�X �ژ�@��Z �۩�@��Z �ܩ�1rk�ث� �L�"�� -�L�"ȝ�/3�X �ژ�@��s�ػ��\D�;��\D�;��\D�;��|.{y��1�k�r��1�k�r��1�k�r��1��b//TX fr-A�TX fr-A�TX fr-A�TX &�b+�TX fr-A�TX fr-A�TX fr-A�TX F�@�� �L�"ȝ �L�"ȝ +�H>���Pa��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa�����*,3�� w*,3�� w*,3�� w*,#�\ ��B�b&��N�b&��N���{,AmLX F�@�݅ +�L�"ȝ�.3��@�[",3���v*,#�\ ��B���{,AmLX fj-��TX fr-A��~���@��΄b���N�b&��N���{,AmLX F�@�݅ �L�"ȝ -�H>���Pa��ɵ@�Sa��ɵ@�Sa����"���@�}A��yE��xZ�t��5������.������������翼��>|]��?}���ӷ���������*��/�~���>���_�?~�ӇO���a�kx����e���t=m|7���_�<v��Km��@���N�c�H>��{y���Ι{;�ژp윩u�n�±s&ױ3ȝ�;Gn;�jg±s�ֱ3�� -�Ι\�� wj윹DZ3�� �Αz;��B�c�L�cg�;�?v�����Ƅc�L�cgp;��#�<v���;g�q�jc±s�ֱ3�� +�L�"ȝ +�L�"ȝ +�H>���Pa��ɵ@�Sa��ɵ@�Sa��ɵ@�Sa�����*,3�� w*,3�� w*,3�� w*,����W*,3�� w*,3�� w*,3�� w*,#�\ ��B�b&��N�b&��N�b&��N�b$��^^��@��Z �ܩ�@��Z �ܩ�@l�q�^�X �n�ؼ��z�x<-�Y���x�u�x^����xx����_~���_^�K����ϟ�~{���������OZ����?���o�_��/�?��çz[���5�|�x�2�p}��6>��c���t;���6��w^Pw�r�±s$��ν�P�c��=��AmL8v��:v�S��9����N폝#���{�3��9S���N�c�L�cg�;�?v�����Ƅc�H=��{w�±s&ױ3ȝ�;g�q�jc±s�ֱ3�� +�Α|;��B폝3�8v�1��9S���N�c�L�cg�;��#�<v�� +�Ι\�� w*;gr;�ܩp��u�r�±s$��ν�P��9����N�c�L�cg�;��3���A�T8v���ع�*;gr;�ܩp��u�r�±s&ױ3ȝ +�Α|;��B�c�L�cg�;��3���A�T8v��:v�S��9��c�^^�p��u�r�±s&ױ3ȝ +�Ι\�� w*;'�c�V^�p��u�r�±s&ױ3ȝ �Ι\�� w*;G�y�����3���A�T8v��:v�S��9����N�c�H>��{y�±s&ױ3ȝ +�Ι\�� w*;gr;�ܩp���s//T8v��:v�S��9����N폝3�8v�1��9R�c��]�p��u�r���Ιz=v�[";gb;�کp���s//���9s�cgP��3�����T8v��:v�S�c�ȭc�^�L8v��:v�S��9����N폝3�8v�1��9R�c��]�p��u�r�±s&ױ3ȝ +�Ι\�� w*;G�y�����3���A�T8v��:v�S��9����N�c�H>��{y�±s&ױ3ȝ +�Ι\�� w*;gr;�ܩp��o��[y�±s&ױ3ȝ �Ι\�� w*;gr;�ܩp���s//T8v��:v�S��9����N�c�L�cg�;��#�<v�� -�Ι\�� w*;gr;�ܩp��u�r�±s$��ν�P��9����N�c�L�cg�;��3���A�T8vN�7�έ�R��9����N�c�L�cg�;��3���A�T8v���ع�*;gr;�ܩp��u�r�±s&ױ3ȝ -�Α|;��B�c�L�cg�;��3���A�T8v��:v�S��9��c�^^�p��u�r�±s&ױ3ȝ�;g�q�jc±s���ν�P��9����Nm��3�z��D8v��:v�S��9��c�^^���s��Π6&;gj;�۩p��u�r���Α[�νڙp윩u�n�±s&ױ3ȝ�;g�q�jc±s���ν�P��9����N�c�L�cg�;��3���A�T8v���ع�*;gr;�ܩp��u�r�±s&ױ3ȝ -�Α|;��B�c�L�cg�;��3���A�T8v��:v�S��9��;��J�c�L�cg�;��3���A�T8v��:v�S��9��c�^^�p��u�r�±s&ױ3ȝ -�Ι\�� w*;G�y�����3���A�T8v��:v�S�ع��͎���c���;7��;?±�a��|�<�z=v�|�~����]�g�/���g�/G�/}������{���O���{I������맿��p�a�ݖ����{-����~�u�?}|��R��������d�ç�t��ϯ��_���w�u~z��k��w���q�nz�]�o�<��}ך��;/�;��S��*�ϳ�^^�pv��uvr���U&��ȝ -gW�\gW w*�]E�yv��ή2�ή@�T8���:��S��*��� -�N���H>Ϯzy���U&��ȝ -gW�\gW w*�]er�]�ܩpv���U//T8���:��S��*��� +�Ι\�� w*;gr;�ܩp����f����Ʊ��ꎝ�WT�������Y�?vO�;_��[������˳燗gO˳痣㗇>|����ݽ�Ӈ�'��ؽ$���������x����n��?~����|�w������>>]������ÿ���q2���z:�������?�;�:?=����y_�����u7=Ϯ�7m�]ݾk��՝ԝ]�ܩpv���U//T8���:��S��*��� �N���L��+�;ή"�<��� -gW�\gW w*�]er�]�ܩpv��uvr���U"�9�j� -gW�\gW w*�]er�]�ܩpv��uvr���U$�gW��P��*��� -�N���L��+�;ή2�ή@�T8����쪗*�]er�]�ܩpv��uvr���U&��ȝ -gW�|�]��B���L��+�;ή2�ή@����*s��+Pή"�<��݅ -gW�\gW wj{v��׳+�%��U&���� -gW�|�]��B�Ϯ2�8��1��*S�� -�N���L��+�;�?���:���΄��L��+p;ή2�ή@����*s��+Pή"�<��݅ gW�\gW w*�]er�]�ܩpv��uvr���U$�gW��P��*��� �N���L��+�;ή2�ή@�T8����쪗*�]er�]�ܩpv��uvr���U&��ȝ -gW���쪕W*�]er�]�ܩpv��uvr���U&��ȝ -gW�|�]��B���L��+�;ή2�ή@�T8���:��S��*�ϳ�^^�pv��uvr���U&��ȝ -gW͙Nzv/h�]ݾ�����U�����q���u�?��ٕ�z=������~~�?�>���ݯG,���_���Q��?<Zϩ^�^�է����__�~�7�~�������}��y������o��������8��i�W~}���.||�a�����g���?Q�O�����������Y�?,�o��{�m�a��j��Hr��X����"����b(X$�S�?,���E�;���b(X$�S�?,F����^^��C���"ɝ��a1��?,�ܩ�C���"ɝ��a1��� /����|�a��N�����I�����|�a��N�������E�j���P>��Hr��X���$wj�������ϽyA��W�������M]�g��p��9�./�����{zX^�xe���W�>��^^�߯P���O߾|��_�a���q��[�����u -8<���/�����so^^����?kǻ/����$/� ���?kO�|}�Nݐ��� ~|L���(w�|�t��m_�F�S��O˧�?�o�x�䅺!?힞.��>�F�S7���������i�;uC~�=]��T�>�r�ޗ?v��mO��P7�˧sާo�x�Nݐ/���>}���(w�|�t�۾>�r�ޗ?.���x��i��|�t���mO�ܩ���9�ҷ}<�r�nȗOg�����(w�}���;==�o�x�䅺!?���LJT�>�r�n�ϻ�圾��i�;uC~�]���m_�F�S�˗?��/��>�&y�nȗO�ᚾ��i�;uC�|:��%��O�ܩ���9>�o��4ʝz_��wO�}����I^����9�ӷ}<�r�nȗOgH���4ʝ�!��.O�dևQm�����w���=O��P7���rJ���4ʝ�!_����_F�17��'�������v�]����)��i�W�|�hn��A�~}���0/���|I����v�|�h���I���(w�}�a�hҿO�ڙ�@�5�����v���;\���|<�r�nȯ�s���o������p٧o�x�ԅ�!_>��!}���(w�|�\O�|}�Nݐ/���1~�קQ�������N��>�&y�nȗO�xJ���4ʝ�!_>��C����Q�� ������|}�N�/8��O���>�&y�n�O���oS��4ʝ�!?���K����Q�� �u�x��o��4ʝz_��|:���=�i��|�tҿA��(w�|�tNO��>�F�S7�˧s��o��4ʝz_~^>��!}���$/� ����b��(w�|�t���mO�ܩ���������(w�}�e�{��ҷ}<M�Bݐ�v���mO�ܩ������!��O�ܩ���y|����i�;����|:��mO��P7�˧s��o�x�Nݐ/�����i�;uC�|:��C*_�F�S�˟�7ӷ}<M�Bݐ�v���o�x�Nݐ?�O��mO�ܩ���t=�o��4ʝz?.��ﮗC���4�+uC�|:��C*_�F�S7�˧�x:���i�;uC�|:��1J���(w�}�a�tN��>�&y�nȗO'�S�x���0/��1}����v�|�h���=_�F�S�ˏ���)�_&�37̧��z�����v��qw�\O�|}�Nݐ_w���l<�jc�7��O�1�����.� ���<���|<�r�nȗ�&=G�ژ��9Ωz}�N݈</����i��|�h���aTsü&�C�k�۩}X;���6ɝڇ�3��� /�>��GX��N��ڡ|��I��>��GX��N��ڙ\am�j��#�Mr��a�P>��$wj��#�Mr��a�L��6��k���&�S��v(am�;�k���&�S��v&WX�ڇ�C�k�ܩ}X;���6ɝڇ�C�k�ܩ}X;�+� �B��ڡ|��I��>��GX��N��ڡ|��I��>��gX��Wj��#�Mr��a�P>��$wj��#�Mr��a�L��6��k���&�S��v(am�;�k���&�S��v&WX�ڇ�C�k�ܩ}X;���6ɝڇ�C�k�ܩ}X;�+� �B��ڡ|��I��>��GX��Nm�ڡ{ k�ژ}X;S+� �B��ڡ|��I��.��_��$~K��ڡx��I��>����y��a�н��Im�>��GX��N��ڡ|��I��6���GX����ڡz�����>��GX��Nm�ڡ{ k�ژ}X;S+� �B��ڡ|��I��>��GX��N��ڡ|��I��>����y��a�P>��$wj��j%�ܩ�J��j%�ܩ�J�䳕��Z��\�D�;Z��\�D�;Z��\�D�;Z�������+Z��\�D�;Z��\�D�;Z��\�D�;Z��|�{y�B+1���r�B+1���r�B+1���r�B+1��Vb//Th%fr�A�Th%fr�A�Th%6ѿ��/h�o_��u��ؼ�۰��V"�����y�?AX{<�ZK<����/�>���?|z~�����/��������o�_������w��,����M��K���{�}l�����/��>�yA���N��c&���N��c$���^^��}���>�ܩ�}���>�ܩ�}���>�ܩ�}��s������\�G�;���\�G�;���\�G�;���|n{y���1�k�r���1�k�r���1�k�r���1���c//T�>frmA�T�>frmA�T�>frmA�T�>F�}�� +gW�|�]��B���L��+�;ή2�ή@�T8���:��S��*�ߜ]��J���L��+�;ή2�ή@�T8���:��S��*�ϳ�^^�pv��uvr���U&��ȝ +gW�\gW w*�]E�yv��ή2�ή@�T8���:��S��*��� +�N���H>Ϯzy���U&��ȝ +gW�\gW wjv������ gW�z�]��B���L��+�;�=���������*�� +�N���H>Ϯzy��gW�{�]�ژpv��uvn���U&��ȝڟ]En�]�jg��U����� +gW�\gW wjv������ gW�z�]��B���L��+�;ή2�ή@�T8���:��S��*�ϳ�^^�pv��uvr���U&��ȝ +gW�\gW w*�]E�yv��ή2�ή@�T8���:��S��*��� +�N���D~sv��+ή2�ή@�T8���:��S��*��� +�N���H>Ϯzy���U&��ȝ +gW�\gW w*�]er�]�ܩpv���U//T8���:��S��*��� +�N����L'=��4ήn_�����U�����q���u�?��ٕ�z=������~~�?�>���ݯG,���_���Q��?<Zϩ^�^�է����__�~�7�~�������}��y������o��������8��i�W~}���.||�a�����g���?Q�O�����������Y�?,�o��{�m�a��j��Hr��X����"����b(X$�S�?,���E�;���b(X$�S�?,F����^^��C���"ɝ��a1��?,�ܩ�C���"ɝ��a1��� /����|�a��N�����I�����|�a��N�������E�j���P>��Hr��X���$wj�������ϽyA��W�������M]�g��p��9�./�����{zX^�xe���W�>��^^�߯P���O߾|��_�a���q��[�����u +8<���/�����so^^����?kǻ/����$/� ���?kO�|}�Nݐ��� ~|L���(w�|�t��m_�F�S��O˧�?�o�x�䅺!?힞.��>�F�S7���������i�;uC~�=]��T�>�r�ޗ?v��mO��P7�˧sާo�x�Nݐ/���>}���(w�|�t�۾>�r�ޗ?.���x��i��|�t���mO�ܩ���9�ҷ}<�r�nȗOg�����(w�}���;==�o�x�䅺!?���LJT�>�r�n�ϻ�圾��i�;uC~�]���m_�F�S�˗?��/��>�&y�nȗO�ᚾ��i�;uC�|:��%��O�ܩ���9>�o��4ʝz_��wO�}����I^����9�ӷ}<�r�nȗOgH���4ʝ�!��.O�dևQm�����w���=O��P7���rJ���4ʝ�!_����_F�17��'�������v�]����)��i�W�|�hn��A�~}���0/���|I����v�|�h���I���(w�}�a�hҿO�ڙ�@�5�����v���;\���|<�r�nȯ�s���o������p٧o�x�ԅ�!_>��!}���(w�|�\O�|}�Nݐ/���1~�קQ�������N��>�&y�nȗO�xJ���4ʝ�!_>��C����Q�� ������|}�N�/8��O���>�&y�n�O���oS��4ʝ�!?���K����Q�� �u�x��o��4ʝz_��|:���=�i��|�tҿA��(w�|�tNO��>�F�S7�˧s��o��4ʝz_~^>��!}���$/� ����b��(w�|�t���mO�ܩ���������(w�}�e�{��ҷ}<M�Bݐ�v���mO�ܩ������!��O�ܩ���y|����i�;����|:��mO��P7�˧s��o�x�Nݐ/�����i�;uC�|:��C*_�F�S�˟�7ӷ}<M�Bݐ�v���o�x�Nݐ?�O��mO�ܩ���t=�o��4ʝz?.��ﮗC���4�+uC�|:��C*_�F�S7�˧�x:���i�;uC�|:��1J���(w�}�a�tN��>�&y�nȗO'�S�x���0/��1}����v�|�h���=_�F�S�ˏ���)�_&�37̧��z�����v��qw�\O�|}�Nݐ_w���l<�jc�7��O�1�����.� ���<���|<�r�nȗ�&=G�ژ��9Ωz}�N݈</����i��|�h���aTsü&�C�k�۩}X;���6ɝڇ�3��� /�>��GX��N��ڡ|��I��>��GX��N��ڙ\am�j��#�Mr��a�P>��$wj��#�Mr��a�L��6��k���&�S��v(am�;�k���&�S��v&WX�ڇ�C�k�ܩ}X;���6ɝڇ�C�k�ܩ}X;�+� �B��ڡ|��I��>��GX��N��ڡ|��I��>��gX��Wj��#�Mr��a�P>��$wj��#�Mr��a�L��6��k���&�S��v(am�;�k���&�S��v&WX�ڇ�C�k�ܩ}X;���6ɝڇ�C�k�ܩ}X;�+� �B��ڡ|��I��>��GX��Nm�ڡ{ k�ژ}X;S+� �B��ڡ|��I��.��_��$~K��ڡx��I��>����y��a�н��Im�>��GX��N��ڡ|��I��6���GX����ڡz�����>��GX��Nm�ڡ{ k�ژ}X;S+� �B��ڡ|��I��>��GX��N��ڡ|��I��>����y��a�P>��$wj��j%�ܩ�J��j%�ܩ�J�䳕��Z��\�D�;Z��\�D�;Z��\�D�;Z�������+Z��\�D�;Z��\�D�;Z��\�D�;Z��|�{y�B+1���r�B+1���r�B+1���r�B+1��Vb//Th%fr�A�Th%fr�A�Th%6ѿ��/h�o_��y��ؼ�۰��V"�����y�?AX{<�ZK<����/�>���?|z~�����/��������o�_������w��,����M��K���{�}l�����/��>�yA���N��c&���N��c$���^^��}���>�ܩ�}���>�ܩ�}���>�ܩ�}��s������\�G�;���\�G�;���\�G�;���|n{y���1�k�r���1�k�r���1�k�r���1���c//T�>frmA�T�>frmA�T�>frmA�T�>F�}�� ��L��#ȝ ��L��#ȝ ��L��#ȝ @@ -7311,46 +7334,52 @@ gW͙Nzv/h ��L��'ȝ ��L��'ȝ ��H>����Pa��ɵ��Sa��ɵ��Sa��ɵ��Sa���o����Ra��ɵ��Sa��ɵ��Sa��ɵ��Sa������*�?3��� w*�?3��� w*�?3��� w*�?#����B��g&���N��g&���N��g&���N��g$���^^�������ܩ������ܩ��3s��'�� ��H=����Pa��ɵ��S��g�^�� ~K��g&���N��g$���^^���3s��'�� ��L��'�� -��L��'ȝ��?#����ڙ������۩������ܩ��3s��'�� ��H=����Pa��ɵ��Sa��ɵ��Sa��ɵ��Sa������*�?3��� w*�?3��� w*�?3��� w*�?#����B��g&���N��g&���N��g&���N��g"����J��g&���N��g&���N��g&���N��g$���^^�������ܩ������ܩ������ܩ����s������\�O�;���\�O�;���(1����������l^��)5���CJ/���|�RO�.@���������gu.pX�~�����u���{�n���iw�>��so^宾���ty�g�w^���4ʝ�!��痯�2��4ʝz_~9�N���P>�&y�nȗO�ᚾ��i�;uC�|:����קQ�� �����}}�N�/�.��q����i��|�t��mO�ܩ����ҷ}<�r�nȯ����g�ׇQm�����x=���x�܅�!?�.�S����Q�� �yw<��ׇQm� ���<>����4��zk�_>�������4�+uC�|4�s�~}���0/���|I����v�|�h��=_�F�S���G��1&�37̧���~��it;uC~��O�{>�F�S7���9~˿?������aw���7|<M�Bݐ/�������i�;uC�|.�/��1��O�ܩ��y8�o��4ʝz_~Z>��)}���$/� ���O��>�F�S7�˧sxH���4ʝ�!Q�L��ȝ -��H>SC��P!5�ɕ�S!5�ɕ�S!5�ɕ�S!5�gj��*��2�RC w*��2�RC w*��2�RC w*��"�L ��B��P&Wj�N��P&Wj�N��P&Wj�N��P$���^^����J �ܩ���J �ܩ���J �ܩ���35��RC�\�!�;RC�\�!�;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(�ߤ�Zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(���P//�>5��Gj�Ƅ�P�Vj�N��P&Wj�N�SC�[��^�LH ej����TH er��@��>5��Gj�Ƅ�P�����]����J �ܩ}j(s���� ��L���� -��H>SC��P��P��!PRC�Z�!p;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(���P//TH er��@�TH er��@�TH er��@�TH E��� +��L��'ȝ��?#����ڙ������۩������ܩ��3s��'�� ��H=����Pa��ɵ��Sa��ɵ��Sa��ɵ��Sa������*�?3��� w*�?3��� w*�?3��� w*�?#����B��g&���N��g&���N��g&���N��g"����J��g&���N��g&���N��g&���N��g$���^^�������ܩ������ܩ������ܩ����s������\�O�;���\�O�;���(1������t��6���������!���z>�)��^����}~����쳌:�?8,?��jo�:����=^7����^�E�7�rW_�yw���3�;/�|}�Nݐ_w����x�|}�N�/�v���C(O��P7�˧�pM���4ʝ�!_>���?v����(w�|�t�O�۾>�r�ޗ_�O�O���4�uC�|:�}����Q�� ������>�F�S7�����?�3��è6�}��aw���|<M�Bݐ�v��)}���(w���;�c��è6�y�d��|}�N����/���?|L�z䕺!_>��9u�>�jcn��O�x����it;uC�|4�K���O�ܩ���ه��ڙ����tM?��4���!?�ק�=O�ܩ�����ߟE�[�}��;\��>�&u�nȗ��|H���4ʝ�!_>�Ǘ��קQ�� ���<�}}�N�/?-��锾��i��|�t���mO�ܩ���9<�o�x�Nݐ�(P&Wj�N��P$���^^����J �ܩ���J �ܩ���J �ܩ���35��RC�\�!�;RC�\�!�;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(���P//TH er��@�TH er��@�TH er��@�TH E��� ��L��ȝ ��L��ȝ ��L��ȝ -��H>SC��P!5�ɕ�S!5�ɕ�S!5�ɕ�S!5�gj��*��2�RC w*��2�RC w*��2�RC w*���Mj��W*��2�RC w*��2�RC w*��2�RC w*��"�L ��B��P&Wj�N��P&Wj�N��P&Wj�N��P$���^^����J �ܩ���J �ܩ���J �ܩ���35��RC�\�!�;RC�\�!�;�O e��1!5�gj�w*��2�RC wj���kj�o����J �ک���35���O e��1!5����S!5�ɕ�S��P�Vj�W;RC�Z�!p;RC�\�!�;�O e��1!5�gj�w*��2�RC w*��2�RC w*��2�RC w*��"�L ��B��P&Wj�N��P&Wj�N��P&Wj�N��P$���^^����J �ܩ���J �ܩ���J �ܩ�J�7��V^����J �ܩ���J �ܩ���J �ܩ���35��RC�\�!�;RC�\�!�;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj�I天!xA#5t����P�nSC�?��SC/��x 5����kj踦������������w?��W����w��C��]./�7��v>].[o�M��}ͳ�p���RÝԕZy�����=J �6&�2�J �v*�2�J wj_j��*5�jgB�!S���n�B�!����r����L��@����H<K ��P�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S���g���*�2�J w*�2�J w*�2�J w*�"�,5��B�RC&W��N�RC&W��N�RC&W��N�RC$���^^�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPj�����J �\��;J �\��;J �\��;J �|�zy�B�!����r�B�!����r�B�!����r�B�!��RC//T(5dr�@�T(5dr�@�T(5dr�@�T(5D�Yj�� -��L�Rȝ -��L�Rȝ +��H>SC��P!5�ɕ�S!5�ɕ�S!5�ɕ�S!5��oRC��R!5�ɕ�S!5�ɕ�S!5�ɕ�S!5�gj��j���#5jcBj(S+5n�Bj(�+5r����ȭ�P�v&��2�RC�v*��2�RC wj���#5jcBj(R��P�.TH er��@��>5��Gj�Ƅ�P�Vj�N��P$���^^�}j(s���� ��L���� +��L��ȝ +��H>SC��P!5�ɕ�S!5�ɕ�S!5�ɕ�S!5�gj��*��2�RC w*��2�RC w*��2�RC w*��"�L ��B��P&Wj�N��P&Wj�N��P&Wj�N��P$���^^����J �ܩ���J �ܩ���J �ܩ���35��RC�\�!�;RC�\�!�;RC�\�!�;RC��&5��+RC�\�!�;RC�\�!�;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(���P//TH er��@�TH er��@�TH er��@�TH E��� +��L��ȝ +��L��ȝڧ�2�H �ژ���35ԻRC�\�!�;�M e�55�DH eb��@�TH E���ڧ�2�H �ژ���J �۩���J �ܩ}j(r+5ԫ� ��L���� +��L��ȝڧ�2�H �ژ���35ԻRC�\�!�;RC�\�!�;RC�\�!�;RC�|��zy�Bj(�+5r�Bj(�+5r�Bj(�+5r�Bj(���P//TH er��@�TH er��@�TH er��@�TH %��P+�TH er��@�TH er��@�TH er��@�TH E��� +��L��ȝ +��L��ȝ +��L��ȝ +��H>SC��P!5�ɕ�S!5�ɕ�S!5Ԥr������}A]j�yE����g������?�����x�55t\SC����������_�+��������?�.���a};�.�����о�Yj�}�M����J ��R�RC��PJ �Z�p;J �\��;�/5Dn�z�3�Ԑ�Uj��S�Ԑ�Uj��S�RC�^K ~K�RC$���^]�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPj�����J �\��;J �\��;J �\��;J �|�zy�B�!����r�B�!����r�B�!����r�B�!��RC//T(5dr�@�T(5dr�@�T(5dr�@�T(5D�Yj�� ��L�Rȝ -��D~Sjh� ��L�Rȝ ��L�Rȝ +��H>K ��P�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S���g���*�2�J w*�2�J w*�2�J w*�"�,5��B�RC&W��N�RC&W��N�RC&W��N�RC"�)5��J�RC&W��N�RC&W��N�RC&W��N�RC$���^^�}�!s�R�� ��L�R�� +��L�Rȝڗ"�J �ڙPj��*5�۩Pj��*5�ܩ}�!s�R�� ��H=K ��P�Ԑ�Uj��S�RC��PJ �Z�p;J �|�zy�����=J �6&�2�J �v*�2�J w*�"�,5��B�RC&W��N�RC&W��N�RC&W��N�RC$���^^�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPj�����J �\��;J �\��;J �\��;J �|�zy�B�!����r�B�!����r�B�!����r�B�!��RC//T(5dr�@�T(5dr�@�T(5dr�@�T(5$�RC+�T(5dr�@�T(5dr�@�T(5dr�@�T(5D�Yj�� ��L�Rȝ -��H>K ��P�RC��PJ �Z�p;J �\��;�/5Dn�z�3�Ԑ�Uj��S�Ԑ�Uj��S�RC��PJ �z�zw�B�!����r�����=J �6&�2�J �v*�"�,5��B�K �{�@mL(5dj���T(5dr�@�T(5D�Yj�� ��L�Rȝ ��L�Rȝ +��H>K ��P�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S���g���*�2�J w*�2�J wj_j�ܣ��jcB�!R�RC�.T(5dr�@�ԶԐ��R���Ԑ�Uj��S���g���j_j�ܣ��jcB�!S���n�B�!����r����ȭRC�v&�2�J �v*�2�J wj_j�ܣ��jcB�!R�RC�.T(5dr�@�T(5dr�@�T(5dr�@�T(5D�Yj�� ��L�Rȝ -��H>K ��P�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S���g���*�2�J w*�2�J w*�2�J w*�"�,5��B�RC&W��N�RC&W��N�RC&W��N�RC$���^^�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPjH�7��V^�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPj�����J �\��;J �\��;J �\��;J �|�zy�B�!����r�B�!����r�B�!����r�B�!��RC//T(5dr�@�T(5dr�@�ԾԐ�G��ƄRC�����]�Pj��*5�ܩm�!S���%B�!���j�B�!��RC//ԾԐ�G��ƄRC�V��N�RC&W��N�K �[��^�L(5dj���T(5dr�@�ԾԐ�G��ƄRC�����]�Pj��*5�ܩPj��*5�ܩPj��*5�ܩPj�����J �\��;J �\��;J �\��;J �|�zy�B�!����r�B�!����r�B�!����r�B�!�ߔZy�B�!����r�B�!����r�B�!����r�B�!��RC//T(5dr�@�T(5dr�@�T(5dr�@�T(5D�Yj�� ��L�Rȝ ��L�Rȝ -��6-����R���J �+�kK /��yy7�R��z-5��R����K������O����sm4\����[�����z|�*4\�����6�/u<���j0�;^����^͝8��4�uC~�].��T�>�r�n�ϻ�9v�>�jcn��tF�Ar;�rD�����9B�� �1� G�Ar;�r��� �S� G�AP;�r��� �S� G(A�;�r��� ��� G&V�ԅ�9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B��|9H��>��G���N��|9H��>ȑ���y��A�P>�$wj��#�Ar��A�P>�$wj��� -r��P� G(A�;�r��� �S� G(A�;�rdr9@^�}�#�� ɝ�9B�r�ܩ}�#�� ɝ�92�� /�>��G���N��|9H��>��G���N��\A�j��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G$�A�^^�}�#�� ɝ�9B�r�ܩ}�#�� ɝ�92�� /�6��� ���9B�r�۩}�#�� ɝ�92�r�ڙ}�#T� ���9B�r�ܩm�#t�AR�rdj9�]�}�#�� ɝ�9B�� �1� G�Ar;�rdr9@^�m�#t�AR�r��� �S� G(A�;�rdr9@^�}�#�� ɝ�9B�r�ܩ}�#�� ɝ�92�� /�>��G���N��|9H��>��G���N��\A�j��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�� G/��>��G���N��|9H��>��G���N��\A�j��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�� �1� G�V�܅�9B�r�ܩ]�#T�9H���9B�r�ک}�#�+��Bm��{ r�ژ}�#T� ���9B�r�ܩm�#s� ���9B�r�۩}�#�� ɝ�9B�� �1� G�V�܅�9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B��|9H��>��G���N��|9H��>ȑ���y��A�P>�$wj��#�Ar��A�P>�$wj��3���+�r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B�]N�������so^�a��Rt/i�c�y���������6�����������"/m�?��O顗�ǵI����}������������������ӷw/Ŋ���?~x����s�:�_v���ݾ��؟.�w�fu��e����_H�:���)ȝ -��L��)ȝ -��L��)ȝ -��H>W���Pau�ɵ:�Sau�ɵ:�Sau�ɵ:�Sau��괗*�N3�V� w*�N3�V� w*�N3�V� w*�N#�\���B��i&���N��i&���N��i&���N��i$���^^��:��Z��ܩ�:��Z��ܩ�:��Z��ܩ�:��su��V��\�S�;V��\�S�;V��\�S�;V��|�N{y���4�ku -r���4�ku -r���4�ku -r���4�߬N[y���4�ku -r���4�ku -r���4�ku -r���4���i//�~u�����Ƅ�i����N��i&���N�W��[��^�LX�fj�N��TX�fr�NA��~u�����Ƅ�i�����]��:��Z��ܩ��4s��)�� ��L��)�� -��H>W���P��i��SPV��Z�Sp;V��\�S�;V��|�N{y���4�ku -r���4�ku -r���4�ku -r���4���i//TX�fr�NA�TX�fr�NA�TX�fr�NA�TX�F�:�� -��L��)ȝ -��L��)ȝ -��L��)ȝ -��H>W���Pau�ɵ:�Sau�ɵ:�Sau�ɵ:�Sau��괗*�N3�V� w*�N3�V� w*�N3�V� w*�N��괕W*�N3�V� w*�N3�V� w*�N3�V� w*�N#�\���B��i&���N��i&���N��i&���N��i$���^^��:��Z��ܩ�:��Z��ܩ�:��Z��ܩ�:��su��V��\�S�;V��\�S�;�_�f�:�1au���w*�N3�V� wj�:�����o��:��Z��ک�:��su���_�f�:�1au���:�Sau�ɵ:�S��i���W;V��Z�Sp;V��\�S�;�_�f�:�1au���w*�N3�V� w*�N3�V� w*�N3�V� w*�N#�\���B��i&���N��i&���N��i&���N��i$���^^��:��Z��ܩ�:��Z��ܩ�:��Z��ܩ�:M�7��V^��:��Z��ܩ�:��Z��ܩ�:��Z��ܩ�:��su��V��\�S�;V��\�S�;V��\�S�;V��|�N{y����D��SxAcuz������yI���ެN篡�ϻ��L��>�zyi�uw��_������2'=�\���7���u��K��@_O���۾<=���՟�~83��}Aw���(w���{zx��:��O�ܩ�叇���P>�&y�nȗO�xL���4ʝ�!_>��)}���(w�|�t��۾>�r�ޗ����C����I^����z}|H���(w�|����!�;uC~�]���m_�F�S��/˧�xI���4�uC�|:��mO�ܩ��{z���|}�Nݐ/���)~�קQ�����O��>}���$/� ������>�F�S7��wH���4ʝ�!��.O����0��y��t����=O��P7���rJ���4ʝ�!?�����0���a^>�LJ�=_�F�S� +��H>K ��P�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�oJ ��R�Ԑ�Uj��S�Ԑ�Uj��S�Ԑ�Uj��S���g���*�2�J w*�2�J w*�2�J w*�"�,5��B�RC&W��N�RC&W��N�RC��J ��F���u�������������m�AO��Nk��������������?���6��w�ݭ�_�aw=>l��������:{�Rw5q�����{��Nb}�܅�!?�.��C*_�F�S7�����_F�17�k:#T� ���9"�r��Jm��{ r�ژ}�#T� ���9B�r�ܩm�#s� ���9B�r�۩}�#�� ɝ�9B�k���o�}�#+��B��|9H��>��G���N��|9H��>ȑ���y��A�P>�$wj��#�Ar��A�P>�$wj��� +r��P� G(A�;�r��� �S� G(A�;�rdr9@^�}�#�� ɝ�9B�r�ܩ}�#�� ɝ�92�� /�>��G���N��|9H��>��G���N��\A�j��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�� G/��>��G���N��|9H��>��G���N��\A�j��k������z9���>��G���Nm��{9@��>��G���N��|9H��6��� ���92���.�>��G���Nm��{ r�ژ}�#T� ���92�� /�6��� ���9B�r�۩}�#�� ɝ�92�� /�>��G���N��|9H��>��G���N��\A�j��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B��|9H��>��G���N��|9H��>��g���Wj��#�Ar��A�P>�$wj��#�Ar��A�L� ��r��� �S� G(A�;�r��� �S� G&W���9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B��|9H��>��G���Nm��{ r�ژ}�#S+��B��|9H��.��_�$~K��x9H��>ȑ���y��A�н9Hm�>��G���N��|9H��6ȑ�G�����z9���>��G���Nm��{ r�ژ}�#S+��B��|9H��>��G���N��|9H��>ȑ���y��A�P>�$wj��#�Ar��A�P>�$wj��� +r��P� G(A�;�r��� �S� G(A�;�rD�����9B�r�ܩ}�#�� ɝ�9B�r�ܩ}�#�+��B��|9H��>��G���N��|9H��>ȑ���y��A�P>�$wj��#�Ar��A�.$9��ϽyAOO�A��-�p^����A��������v�����_�?S�W��g�|e�Sz��u�q�q����__��?|��p�����������~y����K������?��\7���A��w����:���y� ��۶sn{���m@nnr���6�knr���6�knr���6�Ϲm//T��fr�mA�T��fr�mA�T��fr�mA�T��F�9��� +s�L��-ȝ +s�L��-ȝ +s�L��-ȝ +s�H>綽�Pan��5��San��5��San��5��San��ܶ�*�m3�� w*�m3�� w*�m3�� w*�m#�����B��m&���N��m&���N��m&���N��m$�s�^^�0���ۂܩ0���ۂܩ0���ۂܩ0�M�7s�V^�0���ۂܩ0���ۂܩ0���ۂܩ0���sn�����f�1��1an��5��San��5��S��m��ܶW;涙Zs[p;涙\s[�;���f�1��1an��ܶw*�m3�� wj?���cnjc��6Sknn���6�Ϲm//�~n�����Ƅ�m����N��m&���N��m$�s�^^�0���ۂܩ0���ۂܩ0���ۂܩ0���sn��涙\s[�;涙\s[�;涙\s[�;涑|�m{y���6�knr���6�knr���6�knr���6�Ϲm//T��fr�mA�T��fr�mA�T��fr�mA�T��F�9��� +s�L��-ȝ +s�L��-ȝ +s�L��-ȝ +s�D~3�m� +s�L��-ȝ +s�L��-ȝ +s�L��-ȝ +s�H>綽�Pan��5��San��5��San��5��San��ܶ�*�m3�� w*�m3�� w*�m3�� w*�m#�����B��m&���N��m&���N�継{�mAmL��F�9��݅ +s�L��-ȝ��m3�:��["�m3�涠v*�m#�����B�継{�mAmL��fj�m��T��fr�mA��~n�5���΄�m����N��m&���N�継{�mAmL��F�9��݅ +s�L��-ȝ +s�L��-ȝ +s�L��-ȝ +s�H>綽�Pan��5��San��5��San��5��San��ܶ�*�m3�� w*�m3�� w*�m3�� w*�m��ܶ�W*�m3�� w*�m3�� w*�m3�� w*�m#�����B��m&���N��m&���N��m&���N��m$�s�^^�0�m6�0:=��'�Ӎ�{�����yI�?߬N����ϻ��L??�zyi�uw��_������2'=�\���7���u��K��_~_O���۾<=�����!83��}Aw���(w���{zx��:��O�ܩ�叇���P>�&y�nȗO�xL���4ʝ�!_>��)}���(w�|�t��۾>�r�ޗ����C����I^����z}|H���(w�|����!�;uC~�]���m_�F�S��/˧�xI���4�uC�|:��mO�ܩ��{z���|}�Nݐ/���)~�קQ�����O��>}���$/� ������>�F�S7��wH���4ʝ�!��.O����0��y��t����=O��P7���rJ���4ʝ�!?�����0���a^>�LJ�=_�F�S� ��G���O���y�nȗ���>s�>�jcn��O�x����it;uC�|4�K���O�ܩ���I�>e<Ljgn�O���5�����v���;\���|<�r�nȯ�s���o������p٧o�x�ԅ�!_>��!}���(w�|�\_��z&_�F�S7��g�p����i�;u#�4�W�|6�zy�BS+���r�BS+���r�BS+���r�BS+�ϦV//Thjer5�@�Thjer5�@�Thjer5�@�ThjE����� M�L��ȝ M�L��ȝ @@ -7386,54 +7415,48 @@ Y Y�L�,ȝ Y�L�,ȝ Y�L�,ȝ -Y�H>� ��P!�ɕ�S!�ɕ�S!�ɕ�S!�g��*dA2�� w*dA2�� w*dA2�� w*dA�M��W*dA2�� w*dA2�� w*dA2�� w*dA"�̂��B�,H&W�N�,H&W�N�,H&W�N�,H$�Y�^^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ���3��� �\Y�;� �\Y�;�ςd��1!�g�w*dA2�� wj���k�o����ʂ�ک���3���ςd��1!����S!�ɕ�S�,H�V�W;� �ZYp;� �\Y�;�ςd��1!�g�w*dA2�� w*dA2�� w*dA2�� w*dA"�̂��B�,H&W�N�,H&W�N�,H&W�N�,H$�Y�^^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ�I�7Y�V^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ���3��� �\Y�;� �\Y�;� �\Y�;� �|fAzy�B��X�YxA#r�����,H���,�q�,����Y����K;�j���ç������ݧo����(.�������H��v����fd4*ڗ�F���nw^Nר�݅ -��L�Fȝ�7*2�hT�ژШ��jT�۩ШH�7��V^�}�"s�F�� ��L�F�� -��L�Fȝ�7*"��ڙШ��jT�۩Ш��jT�ܩm�"S�� -�%B�"�FE�.ThTdr5*@�ThTdr5*@�ThTdr5*@�ThTD�٨�� +Y�H>� ��P!�ɕ�S!�ɕ�S!�ɕ�S!�g��*dA2�� w*dA2�� w*dA2�� w*dA�M��W*dA2�� w*dA2�� w*dA2�� w*dA"�̂��B�,H&W�N�,H&W�N�,H&W�N�,H$�Y�^^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ���3��� �\Y�;� �\Y�;�ςd��1!�g�w*dA2�� wj���k�o����ʂ�ک���3���ςd��1!����S!�ɕ�S�,H�V�W;� �ZYp;� �\Y�;�ςd��1!�g�w*dA2�� w*dA2�� w*dA2�� w*dA"�̂��B�,H&W�N�,H&W�N�,H&W�N�,H$�Y�^^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ�I�7Y�V^����ʂ�ܩ���ʂ�ܩ���ʂ�ܩ���3��� �\Y�;� �\Y�;� �\Y�;� �|fAzy�B��X�YxA#r����v�yIu�|��?��,�x�奝v�������������ӷ��Rs������o�������q�2��V���e7��;/�kT��B�FE&W��N��{4*@mLhTdj5*��ThT$�FE+�ԾQ��G��ƄFE�V��N�FE&W��N��[��^�LhTdj5*��ThTdr5*@�ԶQ���F���Q�g��W*4*2� w*4*2� w*4*2� w*4*"�lT��B�FE&W��N�FE&W��N�FE&W��N�FE$���^^�Ш��jT�ܩШ��jT�ܩШ��jT�ܩШ��Q���\� +�;�\� +�;�\� +�;�|6*zy�B�"��Qr�B�"��Qr�B�"��Qr�B�"��FE//ThTdr5*@�ThTdr5*@�ThTdr5*@�ThTD�٨�� +��L�Fȝ ��L�Fȝ ��L�Fȝ +��H>��P�Q��ը��S�Q��ը��S�Q��ը��S�Q��o��R�Q��ը��S�Q��ը��S�Q��ը��S�Q�g���jߨ�ܣQjcB�"S�Qn�B�"��Qr����ȭFE�v&4*2��v*4*2� wjߨ�ܣQjcB�"R�FE�.ThTdr5*@�ԾQ��G��ƄFE�V��N�FE$���^^�}�"s�F�� ��L�F�� ��L�Fȝ ��H>��P�Q��ը��S�Q��ը��S�Q��ը��S�Q�g���*4*2� w*4*2� w*4*2� w*4*"�lT��B�FE&W��N�FE&W��N�FE&W��N�FE$���^^�Ш��jT�ܩШ��jT�ܩШ��jT�ܩШ��Q���\� �;�\� �;�\� -�;�|6*zy�B�"��Qr�B�"��Qr�B�"��Qr�B�"��4*Zy�B�"��Qr�B�"��Qr�B�"��Qr�B�"��FE//ԾQ��G��ƄFE�V��N�FE&W��N��[��^�LhTdj5*��ThTdr5*@�ԾQ��G��ƄFE�����]�Ш��jT�ܩ}�"s�F�� ��L�F�� -��H>��P�FE�� -P�Z� -p;�\� +�;���Q��+�\� +�;�\� +�;�\� �;�|6*zy�B�"��Qr�B�"��Qr�B�"��Qr�B�"��FE//ThTdr5*@�ThTdr5*@�ThTdr5*@�ThTD�٨�� ��L�Fȝ -��L�Fȝ -��L�Fȝ -��H>��P�Q��ը��S�Q��ը��S�Q��ը��S�Q�g���*4*2� w*4*2� w*4*2� w*4*�M���W*4*2� w*4*2� w*4*2� w*4*"�lT��B�FE&W��N�FE&W��N�FE&W��N�FE$���^^�Ш��jT�ܩШ��jT�ܩШ��jT�ܩШ��Q���\� +��L�Fȝ�7*2�hT�ژШ�ԳQѻ�\� +�;�mTd�Q�DhTdb5*@�ThTD�٨���7*2�hT�ژШ��jT�۩Ш��jT�ܩ}�"r�Qѫ� ��L�F�� +��L�Fȝ�7*2�hT�ژШ�ԳQѻ�\� �;�\� -�;�oTd�Ѩ��1�Q�g��w*4*2� wjۨ��k��o�Ш��jT�کШ��Q���oTd�Ѩ��1�Q��ը��S�Q��ը��S�FE�V��W;�Z� -p;�\� -�;�oTd�Ѩ��1�Q�g��w*4*2� w*4*2� w*4*2� w*4*"�lT��B�FE&W��N�FE&W��N�FE&W��N�FE$���^^�Ш��jT�ܩШ��jT�ܩШ��jT�ܩШH�7��V^�Ш��jT�ܩШ��jT�ܩШ��jT�ܩШ��Q���\� �;�\� -�;�\� -�;�|6*zy�B���)�� -xA�Qq���FE�J����� -�ШO�����Q�O���o�����o>�Zr��==�U�(���wp�������7t���so^f�#�O�������#_�F�S7�������2��4ʝ�!����5��O�ܩ����y��o�x�䅺!_>��k����Q�� ��霮�T�>�r�nȗO������(w�}�u�t���mO��P7�˧sاo�x�Nݐ/�������i�;uC��y2����ژ���Գ�ӻz?�\��;���d����1�������S����oz?��R��O��Pz?�Z�p;z?�\��;���Dn�~z�3�������S�������S��O�^{? ~K��O$���^]��������ܩ�������ܩ�������ܩ�������z?�\��;z?�\��;z?�\��;z?�|�~zy�B�'���r�B�'���r�B�'���r�B�'���O//T��dr�~@�T��dr�~@�T��dr�~@�T��D����� -��L��ȝ -��L��ȝ -��L��ȝ -��H>{?��P�������S�������S�������S���g輪*�~2�z? w*�~2�z? w*�~2�z? w*�~"�����B��O&W��N��O&W��N��O&W��N��O"�����J��O&W��N��O&W��N��O&W��N��O$���^^�}�'s���� ��L���� -��L��ȝ��~"�z?�ڙ�������۩�������ܩ}�'s���� ��H={?��P�������S��O��Pz?�Z�p;z?�|�~zy�����=z?�6&�~2�z?�v*�~2�z? w*�~"�����B��O&W��N��O&W��N��O&W��N��O$���^^��������ܩ�������ܩ�������ܩ�������z?�\��;z?�\��;z?�\��;z?�|�~zy�B�'���r�B�'���r�B�'���r�B�'���O//T��dr�~@�T��dr�~@�T��dr�~@�T��$��O+�T��dr�~@�T��dr�~@�T��dr�~@�T��D����� +�;�|6*zy�B�"��Qr�B�"��Qr�B�"��Qr�B�"��FE//ThTdr5*@�ThTdr5*@�ThTdr5*@�ThT$�FE+�ThTdr5*@�ThTdr5*@�ThTdr5*@�ThTD�٨�� +��L�Fȝ +��L�Fȝ +��L�Fȝ +��H>��P�Q���F��Ѩ�}Am��yI�Q������?��hT��^^��ڨ���?������ݷ�?}-9��o��_�*ow�����;��G�������U�7/��Χ����p�ݑ�O�ܩ���ty��|}�Nݐ_w�����קQ�������<^ҷ}<M�Bݐ/���5}���(w�|�tN�K*_�F�S7�˧s|����i�;����|:�}����I^����9�ӷ}<�r�nȗOgH���4ʝ�!_�<�{�~@mL��D����݅ +��L��ȝ��~2����ژ�������۩��I�7��V^�}�'s���� ��L���� +��L��ȝ��~"�z?�ڙ�������۩�������ܩm�'S���%B�'��O�.T��dr�~@�T��dr�~@�T��dr�~@�T��D����� ��L��ȝ ��L��ȝ ��L��ȝ -��H>{?��P�������S�������S�������S���g輪*�~2�z? w*�~2�z? wj���ܣ�jcB�'R��O�.T��dr�~@�Զ��������������S���g輪j���ܣ�jcB�'S��n�B�'���r����ȭ�O�v&�~2�z?�v*�~2�z? wj���ܣ�jcB�'R��O�.T��dr�~@�T��dr�~@�T��dr�~@�T��D����� +��H>{?��P�������S�������S�������S���g輪*�~2�z? w*�~2�z? w*�~2�z? w*�~"�����B��O&W��N��O&W��N��O&W��N��O$���^^��������ܩ�������ܩ�������ܩ�������z?�\��;z?�\��;z?�\��;z?�|�~zy�B�'���r�B�'���r�B�'���r�B�'���~Zy�B�'���r�B�'���r�B�'���r�B�'���O//Ծ���G��Ƅ�O�V��N��O&W��N�{?�[��^�L��dj�~��T��dr�~@�Ծ���G��Ƅ�O�����]��������ܩ}�'s���� ��L���� +��H>{?��P��O��Pz?�Z�p;z?�\��;z?�|�~zy�B�'���r�B�'���r�B�'���r�B�'���O//T��dr�~@�T��dr�~@�T��dr�~@�T��D����� ��L��ȝ ��L��ȝ ��L��ȝ -��H>{?��P�������S�������S�������S����oz?��R�������S�������S�������S���g輪*�~2�z? w*�~2�z? w*�~2�z? w*�~"�����B��O_��z?��F���-����i^R��<@�g؝�RD������ǵ��Ͽ���ӇOz������_�?}�z�Jp:�|�5Mw�?ǭ��t�uv -n^l�)����t����x$ -z�[" -"���ؘP'�̊�fc�i�D�2A�5"t "���ؘ%��j�fc�E�Ȼ z����^gB� 2+EЛ� !�ȬAo6&T"�"�٘� H̳@К� ��Ȭ�@o6&�"���٘P�� -�fcBv 1��@kv&4"���٘��� �fcBm 2+6Л� ���<K�ٙ�����fcBd 2�1Л� ��Ȭ�@o6&���fgB[ 2+-Л� a�Ȭ�@o6&T"���٘�H̳(К� =�Ȭ�@o6&�"�Z�٘P�� - �fcBF 1ϊ@kv&4"��٘����fcB= 2+Л� ��<��ٙ� ����fcB4 2�Л� ŀȬ`@o6&��M-�3&�"�R�٘ -����fcB% 2+Л� ���<�ٙ} �<@�}K�8@�U����Ya��l�>��Uh�F�&@�U����Y=��l̾�G���%B - ��@+v&t�"�2��٘} �@�}K�@�U�����y��[�3��$�������ȫ�/6&��#�F��٘0�O�s�ߚ� {�Ȭ�o6&��#����٘�����fc��?1ϕkv&l�#�&��٘0������fcº?2k�ߛ� ���<���ٙ��̚��fc¨?2k�ߛ� ��ȬAo6&���\�fg?2k�ߛ� C�Ȭo6&��#�F��٘0�O�s�ߚ� ��Ȭ�~o6&��#����٘����fc�l?0߬�;sa�f?2k�ߛ� ��Ȭ�~o6&��#����٘0�O�s�ߚ� ;�Ȭ�~o6&��#�6��٘�Џ���fc�<?1�u~kv&l�#����٘0̏����fc�*?2k�ߛ� ���<��ٙ�Ǐ̚��fc�?2k�ߛ��/�#���D��'�o�΄ ~d��7��G�u�[��`}Y5��Ƅ�}b������~w�����%��>�jsߋ� ��Ȭ�}o6f?�O�Z۷^#��>�jjߋ� C�Ȭ�}o6f����cd�{�ab�x�¾;���Y���lL�Gfm�{�1aY�5���ƄY}b�����L��GfM�{�1aP�����Ƅ5}d֘�7��y.�[�3aG�5���Ƅ}dֆ�7��Y��lL����|g.L��GfM�{�1a8�����Ƅ�|d�h�7&�y.�[�3a/�5���Ƅ�|d�V�7��YC��lL��'湒o�΄�|;�&�����Ws؟��ۯg��y�3�����ߺ�>u9�.��� ����u-�s�����q���������6_� m�S�Y�endstream +��H>{?��P�������S�������S�������S���g輪*�~2�z? w*�~2�z? w*�~2�z? w*�~�M崙W*�~2�z? w*�~2�z? w*�~2�z? w*�~"�����B��O&W��N��O&W��N��O&W��N��O$���^^��������ܩ�������ܩ�������ܩ�������z?�\��;z?�\��;���d����1���g�w*�~2�z? wj����k��o��������ک����������d����1�������S�������S��O�V�W;z?�Z�p;z?�\��;���d����1���g�w*�~2�z? w*�~2�z? w*�~2�z? w*�~"�����B��O&W��N��O&W��N��O&W��N��O$���^^��������ܩ�������ܩ�������ܩ��I�7��V^��������ܩ�������ܩ�������ܩ�������z?�\��;z?�\��;z?�\��;z?�|�~zy�B璘�D�xA��s����v�yI�������aw�J)��>������>��ӇO>���������~y����*���� �4ݭ���?3Tн��)�y�M�����RЙ�oD�(�o�(����bcB� 2+NЛ�٧ ����%����bcB� 2�IЛ�� "�$�ox�#H��F�z� -�ȬAo6&�"�:�٘P!�̊�fcB� 1�Akv&�"���٘��j�fcBy 2+<Л� ف�<��ٙ���J�fcBp 2�7Л� ��Ȭ�@o6&��, �fgBg 2+3Л� ��Ȭ�@o6&"��٘�H̳.К� m�Ȭ�@o6&�"���٘P�̊ +�fcBR 1Ϣ@kv&�"�r�٘��j �fcBI 2+$Л� ��<+�ٙ���J�fcB@ 2�Л� ��Ȭx@o6&��,�fgB7 2+Л� рȬf@o6&"���٘��7���\�� +��J�fcB( 2�Л� ��ȬH@o6&$�,�fg�}�H<����-���Wm�^lL(Df�z�1�,@"V�����WI�^lLDf��z�1�@$1����)��;K��ؙ������fc��H<���- +��W�^lL��'��o�����xL�{�["�#�v��ؘ������fc��?1��kv&��#����٘0������fc��?2k�ߛ� 3��<W��ٙ��̚��fc��?2k�ߛ� ��Ȭqo6&L��\��fg®?2k�ߛ� ��ȬMo6&,�#���٘0�O�s�ߚ� [�Ȭ)o6&�#�v��٘�����fc?1�kv&��#����٘0ޏ����fc�r?2k�ߛ� ���|���̅ ��Ȭ�~o6&�#����٘�֏���fc�T?1ϥ~kv&��#�f��٘0ҏ����fc�B?2k�ߛ� ���<���ٙ�͏̚��fc�0?2k�ߛ� ��ȬQ~o6&L��\�fg�?2k�ߛ� c�Ȭ-~o6f�ď�c��{�a��x� +�;6��Y��l�v�y��}o}Ã�}d�������y.�[�3��}$�������ȫ�}/6&,�#���٘��>km�z�[�ȫ�}/6&�#�v��٘��>��}�}K��}��V�L��Gf��{�1a\�����Ƅe}dְ�7f��y��[�3aS�5���ƄA}d֞�7���Yc��lL��'湤o�΄}d�7F��Y��lLX�Gf �{�1a>�o��0a;�5���Ƅ�|d�n�7V�Y���lL��'湘o�΄�|d�\�7��Y[��lLX�Gf �{�1a&���J�5;6���;����f,�o^�a��=��~=˟��˟�_�v^���p���aw9}�O���p��k�۞��u�������^^�|����nh���?��endstream endobj 1843 0 obj << /Type /Page @@ -7614,128 +7637,128 @@ endobj 1870 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [94.6451 547.0486 169.7129 555.8953] +/Rect [94.6451 544.9914 194.0513 555.8953] /Subtype /Link -/A << /S /GoTo /D (cust-skins) >> +/A << /S /GoTo /D (extensions) >> >> endobj 1871 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.0237 547.0486 538.9788 555.8953] +/Rect [527.0237 544.9914 538.9788 555.8953] /Subtype /Link -/A << /S /GoTo /D (cust-skins) >> +/A << /S /GoTo /D (extensions) >> >> endobj 1872 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [94.6451 532.0399 211.6151 542.9439] +/Rect [94.6451 534.0972 169.7129 542.9439] /Subtype /Link -/A << /S /GoTo /D (cust-templates) >> +/A << /S /GoTo /D (cust-skins) >> >> endobj 1873 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [527.0237 532.0399 538.9788 542.9439] +/Rect [527.0237 534.0972 538.9788 542.9439] /Subtype /Link -/A << /S /GoTo /D (cust-templates) >> +/A << /S /GoTo /D (cust-skins) >> >> endobj 1874 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 519.0885 262.0659 529.9924] +/Rect [94.6451 519.0885 211.6151 529.9924] /Subtype /Link -/A << /S /GoTo /D (template-directory) >> +/A << /S /GoTo /D (cust-templates) >> >> endobj 1875 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 519.0885 538.9788 529.9924] /Subtype /Link -/A << /S /GoTo /D (template-directory) >> +/A << /S /GoTo /D (cust-templates) >> >> endobj 1876 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 506.1371 284.6611 517.041] +/Rect [118.5554 506.1371 262.0659 517.041] /Subtype /Link -/A << /S /GoTo /D (template-method) >> +/A << /S /GoTo /D (template-directory) >> >> endobj 1877 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 506.1371 538.9788 517.041] /Subtype /Link -/A << /S /GoTo /D (template-method) >> +/A << /S /GoTo /D (template-directory) >> >> endobj 1878 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 493.1856 239.7302 504.0896] +/Rect [118.5554 493.1856 284.6611 504.0896] /Subtype /Link -/A << /S /GoTo /D (template-edit) >> +/A << /S /GoTo /D (template-method) >> >> endobj 1879 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 493.1856 538.9788 504.0896] /Subtype /Link -/A << /S /GoTo /D (template-edit) >> +/A << /S /GoTo /D (template-method) >> >> endobj 1880 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 480.2342 260.3028 491.1381] +/Rect [118.5554 480.2342 239.7302 491.1381] /Subtype /Link -/A << /S /GoTo /D (template-formats) >> +/A << /S /GoTo /D (template-edit) >> >> endobj 1881 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 480.2342 538.9788 491.1381] /Subtype /Link -/A << /S /GoTo /D (template-formats) >> +/A << /S /GoTo /D (template-edit) >> >> endobj 1882 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 467.2828 227.3364 478.1867] +/Rect [118.5554 467.2828 260.3028 478.1867] /Subtype /Link -/A << /S /GoTo /D (template-specific) >> +/A << /S /GoTo /D (template-formats) >> >> endobj 1883 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 467.2828 538.9788 478.1867] /Subtype /Link -/A << /S /GoTo /D (template-specific) >> +/A << /S /GoTo /D (template-formats) >> >> endobj 1884 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.5554 454.3313 352.9843 465.2353] +/Rect [118.5554 454.3313 227.3364 465.2353] /Subtype /Link -/A << /S /GoTo /D (template-http-accept) >> +/A << /S /GoTo /D (template-specific) >> >> endobj 1885 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 454.3313 538.9788 465.2353] /Subtype /Link -/A << /S /GoTo /D (template-http-accept) >> +/A << /S /GoTo /D (template-specific) >> >> endobj 1886 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [94.6451 441.3799 257.1342 452.2838] +/Rect [118.5554 441.3799 352.9843 452.2838] /Subtype /Link -/A << /S /GoTo /D (cust-hooks) >> +/A << /S /GoTo /D (template-http-accept) >> >> endobj 1887 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [527.0237 441.3799 538.9788 452.2838] /Subtype /Link -/A << /S /GoTo /D (cust-hooks) >> +/A << /S /GoTo /D (template-http-accept) >> >> endobj 1888 0 obj << /Type /Annot @@ -7985,7 +8008,7 @@ endobj 1923 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [522.0424 193.908 538.9788 204.8119] +/Rect [527.0237 193.908 538.9788 204.8119] /Subtype /Link /A << /S /GoTo /D (modules-manual-optional) >> >> endobj @@ -8095,50 +8118,62 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 1987 0 obj << -/Length 10208 +/Length 10209 /Filter /FlateDecode >> stream -xڕ�O�%Ǚ��>E/Ʌ��?�.=c�؆W//��iX�6����;����7��1Rd�<�#��X�p�4���>�p,�7�c��m�����0~�k�S����:���0o�^�Ë?��u��e��O���1O��S�m��i���c<���x;�?��?��||z�}�?���O�X������}���6��������?���������_��������?������������S���ʏj����g��m��Ώn��aO���؇�=4gZ��q��8/��4ښ���a:��_���~��ҿ�E�c�kv�������nR;xy�}r/��F\S;xy�mz��uqM���m�پ��4��_��,�{��4�Mj/�3/��ӈkj/�3���ӈkj/�3�����uqM}���0>6���i��۹��^O#��|��p���F\S;�9l�a_�uqM}�o�u�s3�z��&����Y��ӈkj/��<�k����^^g�k�N#�����<��^Oޤv��:���,��F\S;xy�qv���F\S;�9��ž��4��?�/+�Ž�z��&��/�z���ӈkj��e�\�:���v��:�f_�uqM}���u�ݽ�z��&����Y���i�5����)����i�5���י��ůӈk�k�Q^g|��^Oޤv�e(�s���F\S;�6��ѽ�zqM���Ϟ�}��i�5�%���p���q�6�������ůӈkj/��-��_���~�Y�!����β��^Oޤv��:�Ϣ�a�%�#���6���i�5���?;���_�����<����_���̎��y��umM���p����i�5���ü?\��0Ғ�Z^��l�s��d7��<�6�w^O#���<����:��dv��2˴��umM}���i�ٽ�z��&�����l��0Ғّ�ˌ�{��4ښ���az����:����Ʒq�����K=Mx����a:6���i�5��oþ���ӈkj/���M������^^g=�k�� oR;xy��]�:���v��:��^{=���v��:�þ��4��?��L�{��4�Mj/�3���ӈkj߆�1��L����~�9��~�F\S_��8l��^{=Mx����a����i�5�����V���i�5����Y��ůӈk�k�Q^��M���i�^^g��k����^^gr�/%N#�����x��~�F\S_��8��4��oS;�<<��t��4����a=��_���~�c���:����Ƨ�:��^{=Mx�����l����i�5����Yg���i�5����Yf�گӈk�k|.�3/��ӄ7�����~E$N#����θ.~�F\S;�1��;��4��_�a9w���i�>类�^O#��|��p���F\S;xy�����HK�ky-O�����d7��<��p>F\S;xy�ť?����[�e��N#������~�3Nޤv��.��a�%�#o����;�����~�i�/��F\S_��8��_Ԯ�DkfG��cw��8N����<Ͷ�w^O#���<��?��d����2����q��&��������i�5�������&�ӈkj/�3���_�����9�í��i�>��~7q�F\S;�6L�[Љӈkj?��p��8N#����Gy��-��i�>�{q/��4������w�i�5����Y�گӈk�K|����w�i���^^gr:qqM���uF�����~�c���:����ƧqO��� oR;�<l����qqM���0�nA'N#���������:�������:����q��&����Y;�z��:����6/ø��n�܇4�{�cx�P�~*�ׯ�E���H��>�q���_�����퇿����B����/������ׯ��?������?�?<����ڊ���������^��vO��y��R���c��^}���E���-���Mj^�2�Z�"\Sׂᚚ�L���Լ���Q��I�Z&^Z�kj^�2�Z�"\Sׂᚚ�<< -Z�7�yA��kA�pM�Z&^Z�kj^�2�Z�"\SGA�&5/h�x-h��yA��kA�pM�Z&^Z�kj^в�mj^�2�Z�"\Sׂᚚ�L���Լ���Q��IMZ�}���̼�eҵ�E���-�-�55-hyv-h��yAˤkA�lM�Z&^Z�kjZ�2���E�d�-����Mj^�2�Z�"\Sӂ�i_-�%3/h�t-h���yA�ã�x���L�*h-�yAˤkA�lM�Z&^Z�kj^���(hޤ�-�-�55/h�x-h��yA��kA�pM�Z-��Լ�eⵠE���-�-�55/h�x-h��yA�ã�x���L���Լ�eⵠE���-�-�55/hyx��oRׂᚚ�L���Լ�eⵠE���-���Mj^�2�Z�"\Sׂᚚ�L���Լ�e�wA+��Լ�eⵠE���-�-�55/h�x-h��yA�ã�x���L���Լ�eⵠE���-�-�55/hyx��oRׂᚚ�L���Լ�eⵠE���-���Mj^�2�Z�"\Sׂᚚ�L�*h-�yAˣ��v���L���Ԭ�e��-�?&�-�-�55/hyx��oRӂ�i_-�%3/h�t-h���yA��kA�pMMZ�]Z@kf^�2�Z�"[Sׂᚚ�L�*h-�yAˣ��v���L���Լ�eⵠE���-�-�55/hyx��oRׂᚚ�L���Լ�eⵠE���-���Mj^�2�Z�"\Sׂᚚ�L���Լ�e�wA+��Լ�eⵠE���-�-�55/h�x-h��yA�ã�x���L���Լ�eⵠE���-�-�55/hyx��oR�V�� -Z�s>PV��>RSЂ��^~���� �z����WA���_�������Y�q��oEY����D�7x<�^�jڦ���h�O�>|̡�@��߾������ӈkj߇uZ6�N#����:��uqM}��S�_��^{=Mx�����<��ůӈkj߇���k����~���~�F\S_�Gy��p���&�I���u�ӽ�zqM���u����z�uqM���u�}��i�5�5~�יG���i�^^g�k����^^g��k����~���ή�~i�|-?�a>g���i����DZ�w^O#��|�ݶ�#-���̶�w~�F[S_����4��W}<Nަv��4o�����̎\^f���N����<�t�w~�F\S;�B��4��S�z�h���˰?N���i�5����t>�;����~�}忟E�cb��? �1�^Oݤv��.��^x=���v��.��{=�:���v��6�l_�uqM������,�{��4�Mj/�3/��ӈkj/�3���ӈkj/�3n��_���ο ~���^{=Mx����a;w���i�5����x��ӈkj?�m?�k�N#������:�i~�)Nޤv��:���8���v��������Ɠ����� -O~o<�x� -OO�k*l<yxl<����������Ɠ��O9ޤ�Ɠ����� -OO�k*l<yxl<����d���S�7���������Ɠ����� -OO�k*l<Y����M*l<yxl<����������Ɠ����� -O����m*l<yxl<����������Ɠ����� -O~o<�x��o<yv�xZ2a�ɣc� lM��'��'�55�x���x�ḯ�'���'�56�<<6����|�ɳ��В O}o<�v� -OO�kj����u� hɄ�'���'�56�,��x��&5�x����d�ƓG��ؚ -OO�k*l<Y����M*l<yxl<����������Ɠ����� -O~o<�x� -OO�k*l<yxl<����������Ɠ��O9ޤ�Ɠ����� -OO�k*l<yxl<����d���S�7���������Ɠ����� -OO�k*l<Y����M*l<yxl<����������Ɠ����� -O����m*l<yxl<����������Ɠ����� -O~o<�x� -OO�k*l<yxl<����������Ɠ��O9ޤ�Ɠ����� -OO�k*l<yxl<����d���S�7���������Ɠ������o<yv�xZ2a�ɢ�nRa���c� pMM7�<��x�c"l<ypl<����d���S�7��Ɠg'�%6�<:6���T�x���x\S�'ˎ����L�x���x[Sa���c� pM�7�<�n<-���d���Sn7���������Ɠ����� -OO�k*l<Y����M*l<yxl<����������Ɠ����� -O~o<�x� -OO�k*l<yxl<����������Ɠ�?m<�x� -OO�k*l<yxl<����������Ɠ��O9ޤ�Ɠ����� -OO�k*l<yxl<����d���S�7���.yO�������ƣ��|�f�i����1��c���z���=b�����߿|�l<�o}�/�� s�e�<u7�b�(�������L��^|�l�pM��#���r�I��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM͗�<�.-��td���Qn7��t��t���KG�]����LX:��X:[Sa������R�M͗�<�.-��t�ѱt���ґ������/Yv,�f�ґG��ؚ +xڕ�O�%Gz���|�^��I��̻�dK��A�Ë�g��L��&%��;����7��1�s��#��X�p�4���>�p,�7�c��m�����0~�k�S����:���0o�^�����:�:͟�8��c����۰�����x����v�~�����������/��8�ӟ������m�����o���˷����������?}����������O�����`��1����Y��6 ۶���<M�<�����{h>δ��|�q^��i�5����t>�N#����ӥ?������< �1�^Oݤv��.��^x=���v��.��p��4����۬�}��i�5�5���Y���i�^^g^�k����^^gZ�k����^^g,1��4��_�a|l��ӄ7�|�sw���F\S;�>���^{=���v�s��þ��4�����l�f��4�Mj/��>�k����^^gy��^O#�����2��~�F\S_�{y�yr���&�I���u���YL=���v��:��^{=���v�sX�}��i�5�5~�_V��{��4�Mj_��X�k��������6��uqM���u�;��4��?�묻{��4�Mj/����ӈkj/�Sn�ůӈkj/�3���_���������p���&�I���P���^{=���v�m8�{��4���˟='�گӈk�K|��<����4�mj/��ϫ�_���^^g[&�N#�����&~B\S_�Sy�eu���&�I���uܟE��HKfG.O3m���hkj/v��;�N#����y������y����4ښ����8��ůӈkj?�y���a�%���箧�nR;xy�mt>F\S;xy���+�ui����e�iw��4ښ�_��̳{��4�Mj/O3���a�%�#�����i�5�����X��uqM}�o㰟���z��&��/�tl��ӈkj߆}��k����^^g���^O#�����z��^Oޤv��:�9��uqM���u�ӽ�zqM���u��}��i�5�5~�יF���i�^^g�k����� �cr�PO#����s���:������q؎ٽ�z��&��/ø/��ӈkj/�����ӈkj/�����_�������N�����ӄ7���μ��^O#������~_J�F\S;xy���:������q��i�b%Nަv�yx�����i�5��o�z<6�N#����h_�uqM}�O�u�ѽ�z��&����٦�ůӈkj/�����ӈkj/�����_�����\^g^�k�� oR;xy����H�F\S;xy�q=\�:���v�c8�}��i�5�5���r���ӄ7�|�cw���F\S;�6,��^{=���v��:�?/�������Z�f=�;���nR;xy����y=���v��4�K�~Ꮙ�<�<�~�FZS_�[y����g�&�I���]�/ ��HKfGކ�1�w^O�������oZ=������q����]���̎<��~Cq�F[S;xy�ms>F\S;xy��~i�|-�e����4�Mj/O3��ӈkj/O3��M���^g<�k�N#����s��[͉ӄ7�|���n�8���v�m�N�����~��~7q�F\S_��:�[Љӄ7�|���^��i�5����Y��&�ӈkj/��,��_��ԗ�6�י��&�Ӏ������t�4�����nA'N#�����n_�uqM}�O�0�nA'Nޤv�y�����4����a�݂N�F\S;xy��a_�uqM}���uV����4�Mj/��v +:���u�ם�m^�q��Ĺh��#-��8���T$�_�M��{���1/y�<N�}��*��ǿ����?N��q��Oo���?�o_~������_����~.������x�?|�������+���ϟ�����:�(h�?�8����/h��@IA�pM�Z-��Լ�eⵠE���-�-�55/h�x-h��yA�ã�x���L���Լ�eⵠE���-�-�55/hyx��oRׂᚚ�L���Լ�eⵠE���-���Mj^�2�Z�"\Sׂᚚ�L���Լ�e�wA+��Լ�eⵠE���-�-�55/h�x-h��yA�ã�x���L�*h-�yAˤkA�lM�Z&^Z�kjZ���Z�Z3�Iׂٚ��L���Դ�e�WA�h��Z-��Լ�eⵠE���-Ӿ +ZDKf^�2�Z�"[SGA�&5-h��U�"Z2�Iׂٚ��L���Լ���Q��I�Z&^Z�kj^�2�Z�"\Sׂᚚ�<< +Z�7�yA��kA�pM�Z&^Z�kj^�2�Z�"\SGA�&5/h�x-h��yA��kA�pM�Z&^Z�kj^���(hޤ�-�-�55/h�x-h��yA��kA�pM�Z-��Լ�eⵠE���-�-�55/h�x-h��yA���V���yA��kA�pM�Z&^Z�kj^�2�Z�"\SGA�&5/h�x-h��yA��kA�pM�Z&^Z�kj^���(hޤ�-�-�55/h�x-h��yA��kA�pM�Z-��Լ�eⵠE���-�-�55-h��U�"Z2�GGA�&5/h�x-h��YAˤ�ZL�Z&\ZDkj^���(hޤ�-Ӿ +ZDKf^�2�Z�"[Sׂᚚ�<����̼�eҵ�E���-�-�55-h��U�"Z2�GGA�&5/h�x-h��yA��kA�pM�Z&^Z�kj^���(hޤ�-�-�55/h�x-h��yA��kA�pM�Z-��Լ�eⵠE���-�-�55/h�x-h��yA���V���yA��kA�pM�Z&^Z�kj^�2�Z�"\SGA�&5/h�x-h��yA��kA�pM�Z&^Z�kj^���(hޤ���1d��]�>|����}�����Ͻ�c]� +Z���G;���O?.������������Noߊ�����ho�x��մMC�{�D�2�}��C����1�}���z�_�����l.~�F\S;�9<�ur��4��ߧ���ս�z��&��/�yn��_����˱��^O#����}���:����Ə�:��^{=Mx����묧{��4�����,o_����4�������گӈk�k�,�3���ӄ7����4��^O#�����8��^O#���,�]��0Ғ�Z~L�|����d7�|�cq>F\S;�>̻m�FZ2;ry�m���:����.���iַ��:x��M���i�۳�#-���̼.}�F[S;xy����:���v����iF��0њّ�a��s��hkj߇�|�w^O#���v��?����ο ~�ct/��&�I���]�ɽ�zqM���]��/�z�uqM���m�پ��4�������Y���i�^^g^�k����^^gZ�k����^^g�f�N#����4��ͽ�z��&��/�v���ӈkj߇�8�k����~�~��~�F\S;cC�u����S�&�I���uV�(qqM��u���c� pM��'��'�56�,��x��&6�<<6���T�x���x\Sa���c� pM��'�7�r�I��'��'�56�<<6���T�x���x\Sa���oRa���c� pM��'��'�56�<<6���T�x��{�)ǛT�x���x\Sa���c� pM��'��'�56��i�)��T�x���x\Sa���c� pM��'��'�56�,��x��&5�x����d�ƓG��ؚ +OO�kj��dٱ�Ӛ OO`k*l<yxl<���Ɠg'�%6�,��x��&6�<<6����|�ɳ��В OO`k*l<Y����Mj����u� hɄ�'���'�56�<<6���T�x��{�)ǛT�x���x\Sa���c� pM��'��'�56�,��x��&6�<<6���T�x���x\Sa���c� pM��'�7�r�I��'��'�56�<<6���T�x���x\Sa���oRa���c� pM��'��'�56�<<6���T�x��{�)ǛT�x���x\Sa���c� pM��'��'�56��i�)��T�x���x\Sa���c� pM��'��'�56�,��x��&6�<<6���T�x���x\Sa���c� pM��'�7�r�I��'��'�56�<<6���T�x���x\Sa���oRa���c� pM��'��'�55�x����d�ƓE�O�ݤ�Ɠ������n<y�����D�x���xZSa���oR�'ϮO@K&l<ytl<�����������O�O9�����ѱ����Ɠ������o<yv�xZ2a�ɢ�nRa���c� pM��'��'�56�<<6���T�x��{�)ǛT�x���x\Sa���c� pM��'��'�56�,��x��&6�<<6���T�x���x\Sa���c� pM��'�xJ�66�<<6���T�x���x\Sa���c� pM��'�7�r�I��'��'�56�<<6���T�x���x\Sa���oRa�)](�6��Ս��T����|�f�i����1��c���z���=b�����߿|�l<�o}��� s�e�<u7�b�(�������L��^|�l�pM��#���r�I��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM͗�<�.-��td���Qn7��t��t���KG�]����LX:��X:[Sa������R�M͗�<�.-��t�ѱt���ґ������/Yv,�f�ґG��ؚ KGKG�kj�t�����a�Ȃ北�nRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM��#��#�5��,�^:��&��<<����TX:��X:\Sa���c�pM��#���r�I��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM��#��#�5��,�^:��&��<<����TX:��X:\Sa���c�pM��#���r�I��#��#�5��<<����TX:��X:\Sa������R�M��#��#�5��<<����TX:��X:\Sa���北oR�#ϮKG@K&,yt,����t��t���KG�KG9���t�ѱt���ґ������/yv]:Z2a�Ȣ北�nRa���c�pM͗�<�.-��t�ѱt���ґ��KG9ޤ�KG�]����LX:��X:[Sa���c�pM��#���r�I��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM��#��#�5��,�^:��&��<<����TX:��X:\Sa���c�pM��#���r�I��#��#�5��<<����TX:��X:\Sa������R�M��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM��#��#�5��,�^:��&��<<����TX:��X:\S�#ϮKG@K&,Y��t��M*,yx,���ґG_KG�L��#��#�5��,�^:��&5_:��t�d�ґG��ؚ KGKG�kj�tdٱt�Ӛ KGKG`k*,yx,���ґgץ#�%��,�^:��&��<<����TX:��X:\Sa���c�pM��#���r�I��#��#�5��<<����TX:��X:\Sa���北oRa���c�pM��#��#�5��<<����TX:r𧥣oSa���c�pM��#��#�5��<<����TX:��{�(ǛTX:��X:\Sa���c�pM��#��#�5��,�^:��&����w�>P]:z�@��Q������}ؖ���C��:���~�����?>�8o?���_�}�����������˗���/?���s[y|�_<�}���Q��N嗶�ٹ�"b���{�O?����~����˒ DK� b.K&-9���,��>t�|�ʚ �CK��a.K&�-9j��,�P:����dB�Б��a*k&� -9چ�,��5���dB�В�g�˒ -CG�K����P1��h�dB�В�^�˒ �BK�na.K&4�.��fB�В�U�˒ �BK�Ja.K& -9���,��&t�L�ʚ UBK�&a.K&�-9j��,�P"����dB�А� ���dB}В�=�˒ �AK��`.K&-9z��,��t�4�ʚ�W-�6s�c"�-7�9,�P��� �d�MA��`�J"�-7Z�9,�����d�A�������@ǽˁ)��P ��h�d�@�������@ˍN`K&4�.��f�u@�m����]@ˍ*`K&-9z��,��t��ʚ @K�`.K&��,9��,�P������dB�ϑ��_*k&��,9Z�,�������dB�ϒ��˒ m?G��~���P���h��dB�ϒ��˒ %?K��_.K&4��.���fB�ϒ�ݗ˒ �>K�j_.K&�,9z}�,���s�ԗʚ �>K�F_.K&��,9�|�,�P�����dB�ϐ��|��dB�ϒ�ŗ˒ >K� -_.K&�,9�{�,���s仼�ʚ �=K��^.K&��,9j{�,�Pڳ����dBcϑ��^*k&��,9�z�,��ճ���dBQϒ���˒ -=G�Kz���Pѳ�h��dB?ϒ���˒���,�v�r�c"4��.楰fB-ϒ���˒�v�,�����<(�Yj��rW2����w/�53��Ypm����D��Yn��rX2��g����e��x�ԕD��Yn��rX2�{g�Q��e�̋w\{w��1Zw�{��RX3�rg�Ѹ�eɄ��%G�.�%�v�]�\�Lh�9�]�Kë́��%G�.�%:v��\�L(�Yr��rY2�]��w�.�5�u�ͺ\�L��Yr��rY2�Tg�ѩ�eɄF�!?�2�Ʉ:�%G�.�%�t�U�\�L(�Yr��rY2�E��w�.�5*t� �\�L��Yr��rY2�<g�ѝ�eɄ�#�ŹT�L����\nk.�4�4����t������mP�{�smЙ���>���֏��������}�ܫ����������o�]���o?����_��V�¾}��Ӈ{Ѣ��-������R��0iE��@Y-pM�b��G3pM�n����oR���я�\S�!��Q��\S�$��ђ�\S�'a�wQ"ǛT�Jxxt%��ThKxx�%��T(Lxx4&��T�L8�Si"��T�Mxx�&��ThNxxT'��T(Oxx�'��T�OX�]���&5�Pxv�P�-�Т��Q���P���hR���y�²�L�Ӛ u -��>ؚ -� -�J����*<��*��L�UX�]���&�� -�55oWxv�W�-�P���hX���б��d��Mj^���ڳ�Z2�i��Q��[S�l��Ѷ�\S�oa�w�"ǛT�\xxt.��Th]xx�.��T(^xx4/��T�^X�]���&���5�5J-�5z~1r�I�*��GpM�6��GpM�B��G#pM�N��ߥ�oR�������\S����Q��\S�������\S��a�wA#ǛT�hxxt4��Thixx�4��T(jxx45��T�j8�SY#��T�kxx�5��ThlxxT6��T(mxx�6��T�mX�]���&�� �5�� �5 - �5:~�8r�I���G�pM�&��G�pM�2��G�pM�>��߅�oR�������\S����Q��\S�b�g�fВ �����ݤB��ã���� ��*�L���G�hM�����E�oR�gВ m���ؚ -������w>,;J9��P����}�������~���y�ók�hɄ��E���nR����\S���Q\S����\S�b�w$ǛT��xx�A��Th�xxTB��T(�xx�B��T�X�]��&�!��5�!��5 -" �5:"�TI�6j"=�5�"U�5�"m�5�"~Fr�I�ʈ�GgpM�ֈ�GmpM�∇GspM���oR�>����|�Z y�@i�$�H��{�����%�'^����u阆��o�}�n�u�⣕����:��>�?����������M�cX���5<E�;��D�s�¦i*?�߿�*�Tq���j^p��a<���z�_��������j=�:���v��0n����i�5�5>��Y��Y���ӄ7���β��^O#��������j=�:���v��:�n_�uqM}�/�u�ݽ�z��&��/��q��^O#��|��t���F\S;�9<��V���i�5�5�Nú?�k�� oR;xy�}t���F\S;xy�mt���F\S;xy�u���:����Ʒ�:�<�x=Mx�����̳{��4�����L�{��4����댫}��i�5�5�O��X�k�� oR;�2�綺�uqM�����{��4������w�گӈk�k�������i�^^g=�k����^^gy�ǵ~�F\S;xy��a_�uqM}���u�ѽ�z��&���יF���i�5����'���i�5�����p"sFZ2_ˏi��ٽ�z��&��/�q,��ӈkj߇y����HKfG./����_�������<ͺ�_�Ӏ���<��%�zi����e��p��4ښ����L�}��i�5�5>��q�R��y���>w=���v�}�·{��4����a�����L|���0�{��4�Mj/�O��ӈkj/�M�N#�����:��~�F\S_�Ky�eq���&�I���u�Ž�zqM���u�ս�zqM���u�mv��4��_�a|l��ӄ7�����^{=���v�}�ý�zqM����}��i�5�5����N�kOq��&����Y�_��i�5����Y��ӈkj/�����_�����^^g��k�� oR;xy�irSO#�����8��^O#�����b_�uqM�l���\�k�� oR;xS��h\Sa���c�pM��F��F�5&-��h��&&=<&�T�h��h\Sa���c�pM��F�'s�I��F��F�5&=<&�T�h��h\Sa����&S�M��F��F�5&=<&�T�h��h\Sa�����oR�FϮ�@K&L4ztL4���0���1�������9��0���1����D���D#���O4zv�hZ2a�Ѣ���nRa���c�pM�'=�N4-�0���1����D����9ޤ���]'��L�h��h[Sa���c�pM��F�'s�I��F��F�5&=<&�T�h��h\Sa�����oRa���c�pM��F��F�5&=<&�T�h��{�1ǛT�h��h\Sa���c�pM��F��F�5&-��h��&&=<&�T�h��h\Sa���c�pM��F�'s�I��F��F�5&=<&�T�h��h\Sa����&S�M��F��F�5&=<&�T�h��h\Sa�����oRa���c�pM��F��F�5&=<&�T�h��{�1ǛT�h��h\Sa���c�pM��F��F�5&-��h��&&=<&�T�h��h\S�FϮ�@K&L4Z�=ј�M*L4zxL4���D�G_��L��F��F�5&-��h��&5�h��:��d�D�G�D#ؚ -���kj>�h�1јӚ ��`k*L4zxL4���D�gF�%&-��h��&&=<&�T�h��h\Sa���c�pM��F�'s�I��F��F�5&=<&�T�h��h\Sa�����oRa���c�pM��F��F�5&=<&�T�ht��oSa���c�pM��F��F�5&=<&�T�h��{�1ǛT�h��h\Sa���c�pM��F��F�5&-��h��&&��Aw�>P�h|�@���O4&�i�q;�:��ug��9����?���4��Z��z�d���˗�G{������\ -endstream +_.K&�,9�{�,���s仼�ʚ �=K��^.K&��,9j{�,�Pڳ����dBcϑ��^*k&��,9�z�,��ճ���dBQϒ���˒ -=G�Kz���Pѳ�h��dB?ϒ���˒���,�v�r�c"4��.楰fB-ϒ���˒�v�,�����<(�Yj��rW2����w/�53��Ypm����D��Yn��rX2��g����e��x�ԕD��Yn��rX2�{g�Q��e�̋w\{w��1Zw�{��RX3�rg�Ѹ�eɄ��%G�.�%�v�]�\�Lh�9�]�Kë́��%G�.�%:v��\�L(�Yr��rY2�]��w�.�5�u�ͺ\�L��Yr��rY2�Tg�ѩ�eɄF�!?�2�Ʉ:�%G�.�%�t�U�\�L(�Yr��rY2�E��w�.�5*t� �\�L��Yr��rY2�<g�ѝ�eɄ�#�ŹT�L����\nk.�4�4����t������mP�{�smЙ���>���֏��������}�ܫ������/����~�~���~������L�}���E7�[tw'"��ݥ��`Ҋx�Z�� +��f�� +���9ޤB=�ã��BC�ã"��BI�ã%��BO���D�7�P����J���Ж��K���P���hL���Йp��D���P����M���М��N���P���hO���П��@��Mj^���ڡ�Z2�E��Q��[S�H��Ѥ�\S�.�eG�"�5�} +�5� +�55/UxvmU�-�Ы��X��M*T+<<��kjޮ��Z��Z2�`��Ѱ�[S�ca�w�"ǛԼf�ٵg�dB�£�j��B��ãm��B�����E�7�P����\���к��]���P���h^���н��|��M*�/<<��k*40<<*�k*�0<<Z�k*�0,�.b�x� +U�.�� +m�:�� +��F�� +��K9ޤB-�ã���B3�ã���B9�ã���B?���F�7�P����h�������i���P���hj�����p�F���P����k�������l���P���hm����۰�M*T7<<��k*�7<<��k*8<<�k*t8,�.q�x� +5��� +M�*�� +e�6�� +}�9ޤB��ã���B��ã�����Ϯ��%�}�;r�I�z��G�pMM}U<���%��К +=��9ޤ�UϮ]�%�u�5 +��55�|Xv�>rZ3�������[S����Q��\S��g��В ��� �ݤB�ã��B�ã��B�ã ��B���2H�7�P������������P +��h���������M*TC<<�!�k*�C<<�!�k*D<<"�k*tD��$��m*�D<<z"�k*4E<<�"�k*�E<<�"�k*�E,�.��x� +����� +����� +����� +���#9ޤB}$�1���@�@����I��O���S��K*O������1 ������h�:�G+�?�u*�}��۷����˿맛�ǰ�o_kx�Tw.?���΅M�T~X�GU���܇�ռ�4��x�}�Ӌ��N#��|����z�uqM���aܖ�ůӈk�k|.�����Z�� oR;xy�eu���F\S;xy����z�uqM���u�ݾ��4��_�댻{��4�Mj_���p���F\S;�>���^{=���v�sxo���ïӈk�k|��u��^Oޤv��:��^{=���v��:��^{=���v��:�d_�uqM}�o�u�y2�z��&���יg���i�5���י���i�5����W�گӈk�k|��屺�^Oޤv�e8�mu��4����a9v���i�5���ù���_����x������ӄ7����z��^O#��������k=�:���v��:�þ��4��?��̣{��4�Mj/�3���ӈkj/�3N��ӈkj?����D�:��d���0��{��4�Mj_��X�;������n��̎\^f[�;�N����;�cy�u3� �oS;xy�K�0Ғّ�������i�5������ίӈk�k|*O��:�&Z3;�2��}�zmM���0����i�5����n_��g������a:F���i���^�e������^�e�.~�F\S;xy�u���:����Ɨ�:��^{=Mx�����̋{��4�����L�{��4���������i�5�5�N����k�� oR;����ɽ�zqM���0�{��4����a��گӈk�k|+����מ�4�Mj/����@�ӈkj/��<�k����^^g�k�N#�����<��^Oޤv��:���,��F\S;xy�qv���F\S;�9��ž��4��� +�ǹ��^Oޤv�:���1����D���D#�� +���k*L4Z�=ј�M*L4zxL4��0���1����D���D#�� +�~O4�x� +���k*L4zxL4��0���1����D��?M4�x� +���k*L4zxL4��0���1����D����9ޤ���]'��L�h��h[Sa���c�pM�'-;&sZ3a�ѣc�lM��F��F�55�h��:��d�D�E���ݤ�D���D#���O4zv�hZ2a�ѣc�lM��F�'s�I�'=�N4-�0���1����D���D#�� +�~O4�x� +���k*L4zxL4��0���1����D����9ޤ�D���D#�� +���k*L4zxL4��0�h��Dc�7�0���1����D���D#�� +���k*L4Z�=ј�M*L4zxL4��0���1����D���D#�� +�~O4�x� +���k*L4zxL4��0���1����D��?M4�x� +���k*L4zxL4��0���1����D����9ޤ�D���D#�� +���k*L4zxL4��0�h��Dc�7�0���1����D���D#�� +���k*L4Z�=ј�M*L4zxL4��0���1������]'��L�h��{�1��T�h��h\SӉF��&����@k*L4Z�=ј�Mj>���u�hɄ�F���F�5&=<&��|�Ѳc�1�5&=:&��T�h��h\S�FϮ�@K&L4Z�=ј�M*L4zxL4��0���1����D���D#�� +�~O4�x� +���k*L4zxL4��0���1����D����9ޤ�D���D#�� +���k*L4zxL4��0���O�)ަ�D���D#�� +���k*L4zxL4��0�h��Dc�7�0���1����D���D#�� +���k*L4Z�=ј�M*L4&���D#|�:�������O4&�i�q;�:��vg��9����?���4��Z��z�d���˗�G{�����>[�endstream endobj 1986 0 obj << /Type /Page @@ -8304,15 +8339,15 @@ stream xڥYY��8~ϯh̓�e֕yʱ���l �Y,v���h�Y�JT:=�~�,��I0��1YU,�_T�7�o���b�� ?J��<�n��{��6M�( S�,p�I��E�7멒�/6��& �4ɓ����U�Q��<T������n����}�}�k�Ç��yt7�J����i 3? -�-j ����4#���Լiϫ0�:s8���f����Nʚ�u�M�)��E��$ED�d�$�N��<s��.{���A��_��(�5�W�t�Ŀ��y�e%��L;�����wS��m����������<[t�E���yr8OJޡ�et�4�:�ݝLߣ�qƇ��C��+���m��N�J�I��/6i���ڴ/=���?1����q64�qrɂ]"���r�ݽ�;K�봐ފ��*��B8g��t�_M��^��QQx�Vaz��sG�-d���!�0�VL�A�eeᝇ]m�#� -E�R�̗ -6Y۽}D���PY�'�f⣱G^дL�oV�:��*�J\�˹܂w@e��7-n)�`�<���)_-)J� -Tl���kU~^O�ϴW������5��<�LS�C�+7�ü��Øj���T�_�|�i�.�Qj=�|4 ����Y��g�T�+���ڄm�@��?6a��� ϵ� �B^Z�ۭʐ��8�I���̶��QaX�%1�j`�w�=��y��a��Ls`!�Y付�e��B��=aROb������M۬u�K�5%����oG(G~��[:��ʡS�*�����N��*G��(I�rDR9ޚ�D7�ʜ��߭�1L�«!6�ڙ��'���+y.���L����$�L��Ҫa�N����P1+�ɜL��<��tif���P���QwڈF%[�t�FV�0�3�gل���eLL-"�(�|/�Pu�q�' ��1t�4�g�=�9 $j"�R'u�L��?�V�nyR��&qV�m8ssC"�f@�����۵=!7g5�j{Q���QǣR�lQ���Z.���k��JvH�uk1�ng��;��N�,�ܝ�f(�l�N -�*I<�)���ZVK^G�j@T��')�:Q�nS��6-ȧ�j��箭�X�Hu,����Zl���q�Z �Q�a�qH���h�r�Bl-2 �$E��*1J��l"�.�'� 6��f���&���X�X�h U���H�ZZ������(�E���tc��_�`��2��!����N��6�z�v�.]��Vo��֞u:(�B��qyQٱCx��!)�`��4A -E�z4� ���6I�� zU[��.0N��<@�%9#���5u{���,dl9"@��>#�7H?tZ�pI�m�2�a����k&�E������=�n�i� �v[c�J�j�D�R���C\Q��<4�2��}��Ԓ��Z �g�K=-�_�JKR�c� {��.�.#�z��-%�ɦR/2��%��Q6���A��b�U���?�x�%���hL�s�|�(�����>��$�� �������T��#xW����mh4�.M� O@����* ]s���z���f��h�t�?C 6��Y��2��3ch|�k�3�.�NB��7l�!��W������'���=��'�V�u����}3�1��i$�B�'~����*��ƃ�������so�����:Q��!9-ŮĖG!9�ఎ�6�P¦ģ)S��ené�K����s@�o�ˇ��]����oK��{����Ɇ��7�|#�f+35�;�����p<�$��2j:p_ёxHM*����8��Dn'B{|��0��IGk�/7���G���K -f�C���������t�%{���,6j�&�|��Z�QFO�<��kl�)�E������q��+�{Ε��vf����G{���.��ި���4$� Wq2y^�Ev�<�mۺ���Yh���B`���-�#�D�y�A��A���Wv�7��[���D1WRp%GF�3��!9�G���R����Cy9)bPl��9�^^�{�ĝ&���;�uvu�e}8��0,�� �4aA岇D;�{+���S /���SsA���:���Jj�(��Ky�\�����NA�="�n�B��� -�fG�$"L�Ի��C&�T�t��,W����F[�1. -�/���k��Y��vf���S>�?h^ZW�S��C��*���5]]�'a�</�(���C�VdJ�yD@�px0�b���s'��T��]z(��[�7Mo%��J҉�'���E��"=���y���4}��B8>��:z�"���Ϊ��m.�Ýq%Ս�C�5�!fU����;=��5�2�ȧj�u��Of�N��zw�k�пaꇶ��a LB�X�I�/�Ao��j,�o�$�u�o�?�}�u���J���t�����{��^���'V�3�6�s�T��WEd=����q<�~I�Aƣ&�r�w�z������iendstream +�-j ����4#���Լiϫ0�:s8���f����Nʚ�u�M�)��E��$ED�d�$�N��<s��.{���A��_��(�u�OwO�k��_VQ�δ��|=~7u������lۉ�㱕A�ZQd�?�'���:YF�Jü�C}����=:`g|�=t����I�ٖ�4�n�T��b�f�j�M���S[�����i�8gCSi'W�,�%���-�������N�(�//�s&iL��Ք��5X��i���;>wT �Bf����sk���$_V�y�զ?��P�.�|�0`#�����Gt����p~��g&>{�M˔�f���C���Q�B�ĕ���-x�T�K~x��r�� +���Ւ���P@������V������L{5���}�`_��̣�4e=T�r3<̋�<���N�%ɷ~���b>��S1�G��x� ���|�Me�� o�M؆ $�8�cF���\��/�u���A�������D�ѯ[�l;�`��%_�.���x����V���4�E���[f+�Y�&�$6�@�(k�ڴ�Z��_S2o�v�r�I���k�j05��^k�>����rP��T*G$���Ktc�� ���*��$/�bӨ���}bʞ���bP�j�A�d���pN��I(�&�d�*K ���ɤ�[��N�f�i O��o`u��hT�@Gld% �;��M�.\���"�N��`��B��UwW-`p��i�C�J�{��#�B�&�*uR�D���So��'��gg�ن37W1$lfq$Xq;Y�p�]�rsV�͠��q��zu<* ����Y� +���"������d�DY�#�vFϽC��T�2p�ݩm��&�Ь����kK�e��uԯD�?�z�Rޫ��6exnӂ|jʡƍ�~�� +�ՋT�R;�*���v�+7���{��(��0ш&,G(��"��MRTi0���[8��&b�2�b�i��?�obX��U�ŋ��P����Ъ�u�X���Z�Q��L7V~{���_)����� +�jlSP��j7N��qе�n�v�l�Yw��2.$=���K0��^��2��J�Pd�Gsb 1_:_�h�D��W����d+�T^�3����\CQ�giA�B�f�#�H�3�q��C����Y�6-S��F��ɩ�f_Ĺn �����Cﶝf�k�5怯ĩKT�!�I�=�%��C�j!� �G�L-9y�� 6���2����$�;�� +����R1����R�l*�"�z^�~Z�eCϹ��-�YUH�����Z� +����8����b|�8:��NA����Z�L!�O�-L��˱0�wU���܆F�����4��<�j���5P}@k��no溏�k�A��3�`Ch��*s 8#1����v=s�a�$$�/pÆ�}��I�kbi�:y�i�[wH驑��7ss_�F�? �~��<���R�`<8� X�M��9�v��oyި�:��R�Jly�S�kS;�%lJ<�2� Y�6�����_;4�ֽ|8ݕ�����4ʺ�ϼ��lx;3��7bi�r1S��3� ��dz�A�(������Ԥ�������I�v"��'/S�<�t���r�y||ď��`�8H�έl��NG]��*a�b��n�ͧ��ue�D�#��f��YtK��[+�ɸ��\YzjgFn�/�������y��(+���@C�ޙ@q'����Yd�ͣ�ٶ���N���F��,f�_ܲ8M����DIye7Lp�a��En�Js%�PrdD>C�R��x4p8,�I�z9���"ŶY�����O�ibz��+PgPY6ч�; �"K RH�Q.{8A�㯱�2�y��1���}�15�$(�3� +o��V�a�rڿd�w���e�]���t�#���)� ���@l�q�AH�!´H�;h�1Ta�LuO�!�r����o���q����Ϊ��l��og��aN:������uo:��<��B��.Y��UzrF��"�����o0�ZaE�4�G�N��.��j�1w2�nKU�ߥ�B>��~��VB��$��yB +/��Y��m!r�ޟw-a�o�J��� ��]�#�g@~)¯:�J����:��PR�?��Z��bV5�������I��^�,C0O�|�^7��d��$��w���N��~h;;�$4�ş���������Ʋ�vpJ�Y��6�s��{QǘL���NW���w��z@��*��!.�~b�?ms?�L��}UD���Ǔ�ıa<j�.�z��W���iendstream endobj 2018 0 obj << /Type /Page @@ -9080,7 +9115,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 2206 0 obj << -/Length 2520 +/Length 2521 /Filter /FlateDecode >> stream @@ -9090,7 +9125,7 @@ p �Foi�}ӣ4/�;S����se�Zgg����M��81����cp�����!G%J�߂Y^�Ӝ��~���F�UM�t�ˊ�GdM�^<�����8ee �^�0q8���`�?��� @w�މ��b�w�F�HZ��(�� ߌJ7{�F%g'̷Fcd��Ij̀�c2N��1�g���G����K3W��yV�7������ָ����M�Vr�Un�^�"��m@�9�F�x� ɲ^:LpH�h1c VDPU��c/y�S��t���E)�t����䶄���)��譴p�i�����§�|0s�r)�Ύ.u�'wҴ��k�����NM�1�Zy�tAGBɕ+�U��һ�6���w#�;��Q�J����ǏO��{C�}6N�8�UV}Irc����Ӧ�J�H�h)���2�%�2�;0�Y谆�.��Kg���� �Y>�I�6��M��ń��M��ޛu�w���g]���zT�h�(g�6�H½q�1��kL�8e�aA��S �;߃�h��d����#GHCɦ���t.KХEP���%*�F�'cO|� ϔ�@0���eٮ�Ǜ+�)�p��*'��|w���z�T6#3Z�H���VQ{�YyZ�>�)QR�3��-M}E�m��v��z��2ϩ��Z�xwA�kE~12�D!x]G�#�nu^sǚ��3��i ��� -�R#=��^��s��+Z�T�?;IW�z!�����k"AB�H��I4e�Q�c�B���C}O0ާ�|g����j庝������p�=�E>" Q� BzRFZ)�$/S2�� �x!�����>����"�5� �'�!��B�2#*�A��@�f��=��ïFj1AC'5��+ɂD�iG/(�Z/X�����L�!���|$�3uz{R�R-���O���`��7��'z������2>��+O�u��it����'p���s���U���j��^���e�&�`_�2W���/�5�����t�/�1Թ�MJ3��C�j����&�s�����~w _�ˊ�Odᾔ��*O.�aD���B��b��Z}4Ŧ?��x��0bR&g�/�!��B4�2!#*�@��`�!7�7o��rc{��w �U.�� h���X]��s+a%�A4AlO�Cl+寄�T>�`/������9�X��o~'5�>`� -ԩV�������ty�M+۰_���Ʊ�{�/u�C���ZS9�?�������p���;�خw�>���(��t�c���}Y5�E&! E*�L��<L�R�"L�3�B�p?"W�j�>+̀.5Sq$�DtR���Mƙ~rַ=$Ș��B�/�qU+�oC�T>�U^(�� �1��~RL%нyY�&ts1��T9���(�;� �=q���<�j���Ș�g��e���%+��k3,c�`���IM@��QiuF���e�}��wYO��2��j�rS4��.�B�@(�ݼG�%��!��n!褼LtR��� ����3�����zI��Ë��JYC�p\O��V�ߠ��|�ü{��m|��U�/�C����9�?jR Kx���Փ��V(�$�[)���?���?7\�endstream +ԩV�������ty�M+۰_���Ʊ�{�/u�C���ZS9�?�������p���;�خw�>���(��t�c���}Y5�E&! E*�L��<L�R�"L�3�B�p?"W�j�>+̀.5Sq$�DtR���Mƙ~J����d��D!җ�!c*��*/��JK��C?)��,tR�����C}���~�f_Ʉ����B�R_�R�vdL�3|�2�����R���1T0R���& `ᨴ:����2�N���'�q��}5y�)S��y�t ��nޣϒ`����X�tR^&:� ���@A}���vxq�����E�ArՐy'ד�8���7hc*��0/����Gz[��"iU���� �v鏚T�i�o�d��J�" �V��w��F��E�ρendstream endobj 2205 0 obj << /Type /Page @@ -9466,15 +9501,17 @@ endobj /Filter /FlateDecode >> stream -x��XY��~ׯ ��!�l�}���CkV���M�I62�gz�����k�Ҳ���]}T��U ���`�*�`�I��W��� ��^rd#g6�C_n_}�&�V�*�0]m��8�U���*�B�'A��~��:�֙n� ��o��鲴���/���,���ۿ��f;��D�*r`�Q�S/�U�"�%�p���UG��@%*F���EQ}���~gk���/~�ʇ!@�o�P�_mP�� �۳Yo�=���J��Rv��5u�ij��6��d���S3�$�ց���������u9�m������5N^qg-��J�~@��:H<������}U{�=H���!�1�IŻ�o���q��O�Dz�O����E Q;$wO<���)�3����t��y��Z��/� -�ž��<^�4��}}{{�֚]��5������o�|�}�s;�I����K��ɗd�ɗH-|�wŗ�4Zh�.4ݮS�3h�G�?Px�Ζ���z/=���?��N���F�"y�#/X�4�9i�h��Ƹ�5.�Y��k�X��N/�d��'ya��G -D� -DN����4A ��cU����n��8�9��;�:���Q+1�71X>���2�/}�$�#.1�/�$�$0>��Nh�|��3&�F��3_<�JK@�o���lA��B|������u�.�a⠝���|z���_�������c�*|姟�˪�12��S\3�ޕTOr���gS%�2#о�y�剷6z�7}ow�H;y���Aw�;�#X�S��D0�}�{3>��H�ٛk��0��9D������*���J����-�\>X͓o��{�l>�Y�8�~{�G��?}�`�<V��?�(����o浨����p���E��ևc���"ֱ67<r�/d�}֬��{��c� ��HI�]��� ]gj�d��W��o�k�� ��� �v̭�n�O�2� -XL��z�[-�C����L� -ҹ�E%��;]���O_C2!Y/�����l�c/�� -�8���[���iM}0#5��~F#�|@+�|zgK;����h�b6��]�S�L�Ȭ�'��%=�C�����]\������u�"�&�����CR��[>Nj�!�^�RD�nD�"�)4~�P��Pc������P|⭻��6Gh4�$�!Ȃ�}S��q�-����g*�<4!R=���)H�������@NX��&�@n�z8��I � -�T����"<�CP S�|��ha��}\1y�T)�~K��� L��V������f�+ (D����;GdA6�W��ː��'�g�N���<�����0��.N�� - �m0�� ���3|1AZ6C)�Se����a�Ks�O��<���e�����j'�0����(-�s�G�g]�;I�n��\Sx�%J�PF�z�>a(Pa�ޟJ�$�2ƕ7�o� "�l=9-D{�37��9�(�`���׃)gO���_+����|*+X���|��%�ʳ0_y��,ή~oO�6�c��}/�����~6]���2�~_����0��^rC���DT��ȩu�������5��3~x������7�C��6T�.�fP���D�k>EeGp>�R��*h,S�cW���GY�F?ѯ({�.�q���>��y�U�CRr�G[�Rw�K�<�XK�>㰆���_0���$GA��r��9t�dk-������8��ݔ��0�`bto��ʤuA�jT�=�0d��Yg��s���ًi쵦i�q)~ҵ%��D,T��:Đ4�����0��O�?�``r�vC ��T�Hu�K���.[z|N֩�#Kx>��|͡;�����&�Ź��n��oq��I)���>_��yW��7 �R�endstream +x��XY���~�_!�%0�y���� �������h�-�^&�;3�����f�� 衻������?��n��n�����_y�lݽ���N��և�ܿ��Mnr7O�d�?n"?s��7i�Y�g�}����YuV��]{N������*Ӝ��r<�n�Jm����o���q��y�?*�|ꥀA��}7�a $�t�27��\ߍ�K3�E�{{��i��˿x�a�QD����6;T=ȉ����;`O�6�R��Xɮ�����x���F��R��<>�#N"�a�{�j,/�z՝M���n��vp��[k�{VrA��2�$>l����`�fx~�s���8�4�/i���T�{�f�a�=�g��^�iy���4y~;��C��ģ=˝JY=X�_J�+�ǻ�]���_A��s�(�V.�ťw_��ޡ�W�f.~�tw�� '_��Lb�/q����E|�%Ym�%R+_�]���4 W�&+M���s4����o�5����k���O����Q:�&^���f�aN�(�l�1�yd��u�"e[9V���<9���I^FG�a���$B AA|/MPf�XWnW]Q7I�(K}9<������I+1�wX>���2�/}k%�#.1�/�8v$0>�[�Nh�|��3&�Zٱ�_<�ZI@�jh���l[A��@|ٹ����M�/�a�TVԠ?=3 ���o���{�{��)=7�=�K>)�U1�"d�+���u���de=��J�aF�}�� +�+�b� lTQ�a0�j���<���T}i~�r+?bJ������cPޏ�B_�h�I��!�w?�E�xV L_�:(��绮p�K�`O����+��tg���m�m�2�Ъ�`�=����P&�1����kU����\냋ZH��Z��U�cmny�X_?��?�������G�s���%8����d=�[��Tі���+Z�7�5�rR�b|�O{�6LY7٧S �Z�,�S=�ܭWKK&w�@��R����N��g�ڽj +�ɧ�!��lV���~�C�������(��V�[��Rw�)�Gm�Q�+� + �:��Lq=�2J��]�*`��4X]?2c��dI��Pc%=&~峋+��j�ת�.U���8�7�T���G��p��$��!��c��������²! `G�#\>��^^�Z�#4A�d�N��]��p���ju0qt����&Dj������a4��2}^�"�W� ����$�-T'�w�0I,AX��A��S��^@� +�/`J���!�y���"&/��j���R����S,j���oZ6;�9� +�$�Ÿ,y�,�� +4�b�w��b�Y"��[����U� V���ỷ�S!A�� R�kU��{� Ҳ+�j����C^��b: \�0����mn�Vvk��ìFL���.���UC�$5�I}M�pK�H���� +<�P �¶#�?�(�I��+o&��iAD��fvZ���gnxk�r�Q�,B�����O���_km�m "> +��� +�O��x������� ��Y�zi�^�ޞO����{�.^rC���b1]���e���ҽ?�a>�'2��2�W`�P��<��!����{��ԁ���>z3�nH�'�x��>�!P����Ae�*:�����JtCT���LA�N]Q +U��xD�"�ڽ|RĹo��,^��V�IQȜoM-K��.�?�b-����FЫ&�\t�?��a��EO�Л�i�l��1�\n��,�w.^�Y��V��+���kP��4�ff�>����/&���#�%�I�U���R�cC�p1:oP�vvy���������o�5D�S5"� /��N�n��9 X�"K���h��5��}�z�K��Zg��en�Cu��?�3/������<?�9�����w�0�R�endstream endobj 2301 0 obj << /Type /Page @@ -12000,7 +12037,7 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 2898 0 obj << -/Length 2454 +/Length 2455 /Filter /FlateDecode >> stream @@ -12011,7 +12048,7 @@ xڭYm ��X��1���������is�:鶯�s��ߙ�|^]��HH��/���ݟ�a��(��,9K%�"L�9���(�� ��`*���`C��H�B����K�k�=O�� ����|�Ox��=HpZ��yN �<�����J"8%�T<�]�o͋Gp�$��OwT�/�gCEO��N�������~�j�7�d�"���58з����_&����r��9�� UB�)AN�L����oL�S��#�gl�ø8B�iD��,�r(�� '0�Y]�ȋ�X�մ�i�.�\:�9���p`�Ơ�~�a�J� 8jw��D,��i��k�9.��9�E�m����a]X�f;�6���S��f.F�_���5�D ��k���_��~������V��E���E#3S�[�~#Wgʞ��%lx��Z �@�R@\zQ���5n���yy�.'����]��>�j�X(%3�B�ąs��=p�~��(���C���!q���N*?t!Gp�SQr�I�wW!3'�r��j� �@uQ)W� ��6��ƙ�t���1�ő雱E���8c�*�!�8+�.+l!dQc��/�Aim��#m��8z�c$sS�FHv�0K�����}L�(B�v7/3�ꖃ�_��#Mm��j�^�O���;�)S � a%�B�J)���sS����v�<�k=��Bf`G/�1p��ǭ�W�3J�H�<�t�9�x�<. +�i��_M� �ue��1��2 N0�zk���Zn9@�:��_�%NJ��\ ���p�t�����#hB�M�Z h!��cc��1��+3����,�@��FP��R��6โ)ۂ �H�c�-f" j/��^��F�+6��\�y(?� L%��ˇ�H�c�5��8D�t�k�!�Wc���@]g�5�v�=�o����]4���d�sY� �駺��t\�<�ڇ��7�U1t�wp�O�'ϣ�vC�&3QD�y�Xj^�65��°j|�byC��%'�P�ϕ����H7!M�;�N�|}�lW�I���JԼ���$��l��KN�]��FH�]�����~����%/#k�1E>�b̭ -�S������+��w�EFg�C��Q83L0͢j�-Q��[�빂^�;"hb{�z�Tk�{��LQf���/搥R�/lAUW�;~��g�?��ýN鶲�G�m�9������6R�#$h��[�w��b�^�)��$FP����w��:�ǛE���s�9Gq#�r[�9Qt7l S0�Z�3Y7A#]�j�P�a����zM�i��W �A�s?�*�(�T�����=bF|�0�?�J�-r�0F/o@��]6N��Zj�{�g��,�B����C����'b��{m��p~���'3�+��x�n��-8^�<=�_��%>�X�n(O�]|0�<��V �s}C�9�;�[#�Qq��Z�s,`��v�G�{gqDq�^�>��,�`hw��7�^�=��ԡ�\�ڋ����[����Q��Q��l���E�.|�.i�\�b/�l���� �۪���>�|$��Ы�d]����e|�*����z��W���{�%�h��]{B1!�u.�bP ]�i,Q����ƛ���K��or�-�h���!��!�����Sk���)�C�8�G�uw�j�e,�ar5�4��z���0������U���;���d����\��!��ѝي{3�|ʴx�G� ��o���E(�b�䲐����,� �endstream +�S������+��w�EFg�C��Q83L0͢j�-Q��[�빂^�;"hb{�z�Tk�{��LQf���/搥R�/lAUW�;~��g�?��ýN鶲�G�m�9������6R�#$h��[�w��b�^�)��$FP����w��:�ǛE���s�9Gq#�r[�9Qt7l S0�Z�3Y7A#�BU��"��<�kJ�HC-8� "��WIGԠ�E��7�3⋇���Wl���1zyJ�^�q@�R�ߣ?s/f��ҭ���*��?�=����k3�����=�i_y���v3=�h���q���:T-��)�:tCy���Q������˜���H݁�����w�}�:7�cS5�F8��8�#���r�� �eIC���(���>��ѥ�撅�^T�W���ͨ�w�������`�ؠ84.�(�w��wI��{A �hg��DmM��V� �}$��#�<�^�&�\Gp�(�P]p�ԫ��*x�;?,�Dӗ��� ��s�p��_Hc�ⵆ�5�\OD(�X�}�[o�G�> �7 н�=�Z�[u�M>ġ>z�#�CV.c ����it���[��$�g��s��e��}���<�'C]Ք���� �P�u����V�{���S�ŋ?"NxnCLT.BY�$���w\X��2� �endstream endobj 2897 0 obj << /Type /Page @@ -19321,20 +19358,20 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 4597 0 obj << -/Length 2191 +/Length 2064 /Filter /FlateDecode >> stream -xڍXK��6�ϯ0rY�ER|(9�+�`���fj����%C�tz~�V�HY��3�.��b���W)���pf$��� �Ī<�IWX�� ,��L(�a���QҰ� -��̅�߾y�YȕH�VV����T2!�j��o��X�7��D3��0�C{��V́&ޏ��U]��m�B�a������`���Ԍ_I!��S��a�Y�,נ.m�)��y:g#�M��n�B%�=���iah��X�E����*q�r�:�{<��=�>0]X/��@��%�6;�9�}_=�/Q��%����T\Po�� �𤣵x���ڦ�6�[s�r�3�sŀ*�4)�q��4����H27f���y��0�~l���?��o>m�� Ѡ�a�d|1��f�D�eVt&峸���R��N̘�^<����Bش��%�,g:��Z�ߊ'4ĵm{�:L�ׁ�#ME�e)�8�U�o�����Y���O�9��<��}�=�m3t��B��2ae��U�+��{Yk��ל�`{�川5cz�Y���Z8�8kA�g͕�8K��Y�w���b -�Z`Q!~?O����Ln&�)N.n��)4\#i��~��(��Â?-T��D� �1����m�x9�{-62SL(W5�*���1�In������Ƃ(a���Y��_{�� @�J -�,dO &��v7���|��$�"�.^��~��5���!�<��w�xf�:p�Q^ԩ�Y�]T�o�zvݩ�:�R��+�m��ח���-R�k��hySp%�:��v;b��K�A��H�=d�\�� �����g�/����{�*�̛���u�Z+��M���uEM��;��4� �|ޓ��Z�4�z�d���J���d����Ѩ��s� U9�EGc�7Qm��8�*�o���\��jp -�Va.��E�ۣBt|�ݐ8B'�{���aF~�������X�/�49O��k0(X�t�A"���Z��N�z�^ޗ�E�v�����+ ��j�����2��~�y�d`������0�w���vO33��c4�ַ<X -AN�4�v�%0��8ʸ�V�$��A���Du8'�`Ƚ_��S9��0G5'HDn�C��eU=M<��C{�}/4χ��Eh�.-��U���Iv��=���b�خM�tt.\q��@�b�Ӱnˢ��� g�{�d��4S�V`�'��hb����d�������X�b�!�x&g������g�M]4����ٹ�o��z|�1�^y�.�}���r�gk;}W=E��D}�U��EU����i��2��JJ�L��E�6s�{s'-��֤��}�B���8��o�0q}G�{iS���1�iA@���̙4BN���Z�>��Ϛԧ��n,1 ^)])�"�����ɪd���h�N�I�_�N�aJ#�)Hh�D��Rjp%Oy`�[t9�ـ�&�I����C]�U���O8�X���i�A���r�]�Wxa�_a���Ü��Q�Vp����yc ��9����Z��g�2G�x�x6 ��Q�p����lOQt�P��9U�ǥ�0ICjI�NG���f:j ���0�fa����SfTnf�ӡ"��ܥ���^: ��j-o��a�T-��u|*Ǯ�J��ۖ��A�D���{�r,��f -�e���<����5r��*$�i_ ;��pj!! ��<[z�����gGh�!;|q�Xo^��*L� ���|�-����ǔ�zʹ�W�ߖ�i -9,��AC��B�:��O� N�dR�:��8{Ž��p�5���Y��)gRY�&5`YK�!����]�X��6��N�d�`o�δ4� �Ax��� -FX�/.�bo�k4H��k��x����4�B� ��9n �������:����YG��5�V��4ն���(��죬��\Q���o��AF<�18X���P �J��ܠ����cH� -ߞDӡ��/G/�hG���.�N%H�*�Q�������&��M;,[D�n���E����W�N0�4�ժ�UчOS_ߦq�k�lBAï���8�}�>^�)���D�C�[� Mĕ@4$q�:�����2�g@wr~#��L���KA/�u*V���n�f`yh�xd���(l2�l&�Ѡ���|�3[f��3`&�`*��|�����#���~&,��\)�endstream +xڍXO��6�ϧzY��Y�-�{�Lg�)P��dO;{pl%�c����O_R�'�{����DQ)�?FnB��M"E��2�L�6��]�9����$�D�K���]����lvK!�����F���i���B-�6�}����9�F�ow*I#��q��R�U5'��0����:��w��*�d��P"LL�!��&7���h��j���$�Ld�&J�8Δ��[c�;�A{�︕���v�z��0�_�i�, +V�ٯZ�b��1?���n���ڎYoA;^Ye������h�Җ���Jd���-�x��#�M�qP�����)���g��)�eaU��f�[�8�s>�t�3ہ���0��a��`m��-���D�6 ��wV�k{`�cۓ����4N�]��[ �,���� ���V`Ϫ�.yM{ܪ��,bA��I�b�Y��n.ӳ�hX��t�͘�<e��a�]���=]��y�,i/�@;���," ��ܢ���E�5q�u��Hw�n�X� +_ �B:�!�n��/ߪ�cO���4���F�~ָ�.��s����H,������>ੂ���̔��^x �������3];ա~��-1,w�k8YV�yXd�Ӛ��W`��[3m���9"~r���_0����H2wf��хB���mU��x��O�9usB�"H��t-�3�n�D�=��[OB�H�3^�R�É��UhV���^U�M�:\_R*��tr�į�74ĭmȹ5O�ׁ����lYN0a�M#��6l�M +: +�H�"��҅>���m\�{|���J5s�Uo���_�&�k��R�8��vւ�ugy��:k����Y+:�8k���Y:�z��Uܐ� +Rhּr����3��2��#��q��Lt�_��>�xS�L�o#<�1O+�L�d���{�o ������W/��Q���b�H��x��֔Ib�e�2T�v)�J��t,R��<:�e��R�'��n����Eh��XҐ�.W��ʀ��xZ��SCDq�ŷ��S'���[//gu*�:P�CVK����j���5���G��k�]�xrk������ +\��� ���y����{h��ႄa.�8?u���6�m;��t��a����Û~�������^i���|$9�hLu�V��jN�FrVyȠ�4�i����*�:�i��&��d�[�Cu��߄��m�58�X+��"M��/�{P�sqC��J����qό6������I���J7��A�a�~k�l�����p�}�!��D� �9�ëe�Au�1 �s?��� F�*���M�`�hmMS����jt[W�`�9�a(��y[:����gqq��Q�{ +V�����N�^ �!�q��]r�Y��%��@ �48�bd��Ln���^h4u�>/=4j׀��%x,���vb���w.\q��@�d8аn���f���]?���H+K7��ԡ2�O��S���V+��<����] +�x&���oQ� hޜ�����#&��2�:�ܙr��C�p�c:v������Xv715��K�2�ͫ:?�3�=��*+�T%C!U,Wa�g�-�1̃,j���z�̽ +Q��Pz��a������jO *:2�� ?�F1�P�!2*)_MU?qa��&tᄽ��O��WR*QܻҔB3>K��.�&f�n*i�!�4��NB�Q�k^�I�����r �ePp�2&�uz�F�E�Hu9W+��������V�]�V(������ v�!'��M���l��sd�;K�Ti1��kK�:G&� �J6 ��Q>z�����E�g���T5���, Mh4:�!K���y��5D.�D�0�ۮO��$Β��W@$�Y<�.��u��z�4���}�Z�VO5J$���x���D�����?y�}��/�*�k�Ј�B���͕I�|�\�X�i�.��G�V�:ʢ�V��/�.:�0st��\�wy��P<��/����%�����ϔW�T��do��W�I�^�0V)Di�͒��CW<�ݽr��6�endstream endobj 4596 0 obj << /Type /Page @@ -19342,12 +19379,12 @@ endobj /Resources 4595 0 R /MediaBox [0 0 609.7136 789.0411] /Parent 4569 0 R -/Annots [ 4612 0 R ] +/Annots [ 4615 0 R ] >> endobj -4612 0 obj << +4615 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.6158 335.5539 443.9118 346.4578] +/Rect [389.6158 206.972 443.9118 217.876] /Subtype /Link /A << /S /GoTo /D (template-http-accept) >> >> endobj @@ -19364,113 +19401,117 @@ endobj /D [4596 0 R /XYZ 71.731 692.1839 null] >> endobj 914 0 obj << -/D [4596 0 R /XYZ 220.0229 651.1593 null] +/D [4596 0 R /XYZ 267.8641 651.1593 null] >> endobj 4599 0 obj << -/D [4596 0 R /XYZ 71.731 642.3364 null] +/D [4596 0 R /XYZ 71.731 638.7213 null] >> endobj 4600 0 obj << -/D [4596 0 R /XYZ 269.9659 616.6487 null] +/D [4596 0 R /XYZ 71.731 596.5591 null] >> endobj 4601 0 obj << -/D [4596 0 R /XYZ 71.731 605.8841 null] +/D [4596 0 R /XYZ 104.202 585.7645 null] +>> endobj +1952 0 obj << +/D [4596 0 R /XYZ 71.731 567.7322 null] +>> endobj +918 0 obj << +/D [4596 0 R /XYZ 220.0229 522.5774 null] >> endobj 4602 0 obj << -/D [4596 0 R /XYZ 81.6937 577.8741 null] +/D [4596 0 R /XYZ 71.731 513.7546 null] >> endobj 4603 0 obj << -/D [4596 0 R /XYZ 242.9373 577.8741 null] +/D [4596 0 R /XYZ 269.9659 488.0668 null] >> endobj 4604 0 obj << -/D [4596 0 R /XYZ 71.731 575.7173 null] +/D [4596 0 R /XYZ 71.731 477.3023 null] >> endobj 4605 0 obj << -/D [4596 0 R /XYZ 81.6937 559.9413 null] +/D [4596 0 R /XYZ 81.6937 449.2923 null] >> endobj 4606 0 obj << -/D [4596 0 R /XYZ 346.2678 559.9413 null] +/D [4596 0 R /XYZ 242.9373 449.2923 null] >> endobj 4607 0 obj << -/D [4596 0 R /XYZ 81.6937 546.9899 null] +/D [4596 0 R /XYZ 71.731 447.1354 null] >> endobj 4608 0 obj << -/D [4596 0 R /XYZ 71.731 524.0758 null] +/D [4596 0 R /XYZ 81.6937 431.3595 null] >> endobj 4609 0 obj << -/D [4596 0 R /XYZ 71.731 491.0348 null] ->> endobj -1952 0 obj << -/D [4596 0 R /XYZ 71.731 447.1992 null] ->> endobj -918 0 obj << -/D [4596 0 R /XYZ 303.1555 404.1017 null] +/D [4596 0 R /XYZ 346.2678 431.3595 null] >> endobj 4610 0 obj << -/D [4596 0 R /XYZ 71.731 391.9305 null] +/D [4596 0 R /XYZ 81.6937 418.4081 null] >> endobj 4611 0 obj << +/D [4596 0 R /XYZ 71.731 395.494 null] +>> endobj +4612 0 obj << /D [4596 0 R /XYZ 71.731 362.453 null] >> endobj 1953 0 obj << -/D [4596 0 R /XYZ 71.731 336.5501 null] +/D [4596 0 R /XYZ 71.731 318.6174 null] >> endobj 922 0 obj << -/D [4596 0 R /XYZ 308.5976 299.3346 null] +/D [4596 0 R /XYZ 303.1555 275.5199 null] >> endobj 4613 0 obj << -/D [4596 0 R /XYZ 71.731 289.1919 null] +/D [4596 0 R /XYZ 71.731 263.3487 null] >> endobj 4614 0 obj << -/D [4596 0 R /XYZ 363.7058 279.2101 null] +/D [4596 0 R /XYZ 71.731 233.8712 null] >> endobj -4615 0 obj << -/D [4596 0 R /XYZ 219.3353 253.3072 null] +1954 0 obj << +/D [4596 0 R /XYZ 71.731 207.9683 null] +>> endobj +926 0 obj << +/D [4596 0 R /XYZ 308.5976 170.7528 null] >> endobj 4616 0 obj << -/D [4596 0 R /XYZ 320.9613 253.3072 null] +/D [4596 0 R /XYZ 71.731 160.6101 null] >> endobj 4617 0 obj << -/D [4596 0 R /XYZ 71.731 240.3558 null] +/D [4596 0 R /XYZ 363.7058 150.6282 null] >> endobj 4618 0 obj << -/D [4596 0 R /XYZ 157.2001 240.3558 null] +/D [4596 0 R /XYZ 219.3353 124.7254 null] >> endobj 4619 0 obj << -/D [4596 0 R /XYZ 71.731 238.1989 null] +/D [4596 0 R /XYZ 320.9613 124.7254 null] >> endobj 4620 0 obj << -/D [4596 0 R /XYZ 118.5554 199.6349 null] +/D [4596 0 R /XYZ 71.731 111.7739 null] >> endobj 4621 0 obj << -/D [4596 0 R /XYZ 165.5238 191.1705 null] +/D [4596 0 R /XYZ 157.2001 111.7739 null] >> endobj 4622 0 obj << -/D [4596 0 R /XYZ 341.2842 179.5142 null] ->> endobj -1954 0 obj << -/D [4596 0 R /XYZ 71.731 145.9377 null] +/D [4596 0 R /XYZ 71.731 109.6171 null] >> endobj 4595 0 obj << -/Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F44 2110 0 R /F48 2123 0 R /F33 1358 0 R >> +/Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4625 0 obj << -/Length 2653 +/Length 2758 /Filter /FlateDecode >> stream -xڕ˒��_����>}�c;NUr����@���,E(|�x���F7 RÝ��T �F�@?!��'7��2 UD*MԦ�~�3,��A2ʞq�s����zSDE���ᴉE�X�L�(Od�9���~)o��w{��m���i�������n:�Ѵm����/~8҉"����/`��P鍌��T!�^X�4�1�F -���,f��)��df˱���jƋ��Y���t 6{%"��ĝ�� �U�}����N�mٍ-AM�0���]�l�2�[[�fx"��bh�7!T?���T�@̷��#\ˏH�BÇ_�N%��r�:�gK��h'OՒ�`u���� jC��Hd�Q�H<˶�;�Ҥ�ئ"�`Vv5 ^.Mu�!����i�js3]=��Z6]�Jc���u���7�S8�睶nP����7,�!��J�=g&�xbv)-�=1�����v���, > -[��5�n=8 ��p߹�'�ʏt���v:к�fXs<��nzS�N[�e���)c#��N�l:�w�lr��4F{ױ� -���ȷ��l��ڜʩW|D -p8���)���u��c �ӥ:�$���#I0��hHM�mׯ[���MU��͉�t��@f�6�z�y��2,���L�v:_h�����Y�J2 -����Q�n�i�N&������P3��"J��Z�> ��j���k��HJ�����+M�Kٝ �C���R��~r����@��_��/����L`-�MU����4^�S.f�4o!R=�!bA���iehO{�F)x��ov4�vϰU~�{����5h� %ĉ�$�h�nD������Ae;pU�T#�۪� �� �3`�pd�f`��u�/�3Li�8�M$"pq���Q�Ш� /�^�(MR�D�p|O��V� }4����XM7�pK.��AIP�buvd���$�GM��0JǾrN��o{3��&SG+湗0V��x Y��=2�dJ����xaC��9��~�L�sl�Zw"'�O�<F�M���/ST�=S�~�ƩgZAA�oc烣σ'���i��4���8I��]y=� ���2��3qJn9z�D�����^���6tf��Pm:��+jĝ��d��ᅨ�M���>�>0E)|\x�?C�J�����$�"�xAi�]�'2UQ�!��/�XH�a��H�̱ -�=�����.��2Jb�>0 -^ܧ�fx�>���ߛ��%����8��0y�}�� ���2O� ̸ �r_���qՅ�8�%�������2���wF��F��n@.vj����|H�)U�����E9ب_�f�wD`��'OϧoD�`���u.�Z�{�:�ȉ࣡okP�[<p�с7�:��v�˽G3�� -W��^)�i���2 �v��.��ZKJ���6�nW�O\)rC��en!�}���-���'�ͪ!����"On�Sك�Arܺ��x)�k>�ir�@2ЌJb�!G���S�\0"�)�Jq�OՅ( L�(�Z�-*�P3�%RU���=U��p.�u(L�M��Bk��J� �j�<T���1L(S=n`^T��?�~\R%ڌފ��j������N�f���]���P\�;�j���uW�7�KFt��#IJ��u�ؕ��������&�,G(1������z'�gT&"د`A�M�F|��:�`���+��+�\�H�D��iM9�L��7b@+��������$���<�%�VG���{k�p~>=�=�G=o��U��Qi�M���c_Pg�ߥܫ�6e�\g�0vj��΄�����'��-X -u]��R|�6�����n�^�����e교w4�B3ߺ�K\�?V.��7F�5�?Nl �9>`�;}j���Ja��^�� �E����&�_�*�Q�r���/�\�uk��B��`�M5 - ��Q�B��j����{���0��+��,(ܿ9����[M���]�\��^L��?f�nѭ]3�:M��<QZb�<�3��(N�Z6U��Z-�4I���Ւ0��D��K/'N��*�Z-��G*��e�`��㴮\�@/!o{+&�� tey�]?[��c��*K��"L��,���,�Pq�U�T�[���ZE:�z]��dӛ�)��M�8����} �W�='�yJְ����H��\�;h�˾c�y^�*ʅ����,�G�t�ړ�=��_zo�;5��ך���[1��3���;l^����)T��=@kfqB��#�HX$�d�T�L]�be��� -n/���DD��VnM�:`Gֲ��i��*��� �`AzW4�*;�v�%Go���o3�a�ရ1���م�7�} �zn�_��X�-�)�1�}���l^+���D&pXQ�O4�x�gW�������?��@����^*�KOy�J~���㬘���K���&���N�g����^��� lX�����0v'|��xmF6p�p,�Uh��M��;��j'�m���zWCJ%�������͐�ˢ%��{L+��k�Z�2���B��E�û_����������Ou/�=^��������^h�<T��e��g(kHe��E������g��(�i��O�3���D&*�U���Pyy��W�ϲ�endstream +xڝY[��:~�_�72U�n�mx�,,u������c+�����9��nu˗Lfw��j"�ZR��e���6������)/��C���e�<�%���>��E��<6V��X�oR�E��l�\�c��T\�=�t"�N��DZ�K�K����x��>���=������<���*��VX�%���"O�%.�� �I3�Q"�u����0M���3¸�Ev���N)#��B������(gw�`�&������L=����m�5xd8��'k7��Y��S�L�ZN8��0�;��mUw�ZP���W�n�.a��z+e�YU1O��\����;����jf/�}K��X���� �l�S��P�}9������r���(������r�>��Le{��g_Q�˃N����a��@#8dG̓��aK�ę �|���]{���afGm��?���<�e�2�"3MzVɶ���G�������"�Y� +�]Kӛv��l#����w�8���U=��O)�9�n�h�ߊLAI�}\H�u�Im:;NS�V���Ј�f��T4G� ;/����{�=��@� 62�H�/L�����) ;]~��|�Q�(` �S�����4o2��'�� ++7G7Q�;n�A�I#XhP�FhAG�xj۞� +&r�+�w"����"����)�'-��6 k�n�u�}mGl����m�DZ��I!%��_=$ɶg���G��4��癕/��0�^��p)>��j^�Ԣ/��̺/汥~�oǸkKڂѾD{��Y��N�(�`9�v��)Om]��W45^Nuy�&�����������s)���tAi4�tۗ핛�x��g�U�J,�վ�q�]�R�tw7kק��$,�ɠ>��Ǯ��:y�i*�K�)�>��s�����R�o��L��ri�=��k�� Cn��lw��"���~hdž���6'�)PZ�7�r����|��;�>��Z9Ǔ-���2�@�Ci���'�v���� r�=�ɰ���G�����a��@�t�0@f&M�������4<A!�k�㉆>����(bY�Q���]C�m���3���8��|z�V��Ĩ���K������l"��1�=�� ��J�9�@��Ʃ�l�%HD��d՜����c��U�="t�`�ű.!��IÉ=��B�ڊ�gv���Hўv`���3����wR�N�ϲh����b��N�$l�����p��(�\�����mY�5��� ������!^���r9�;��F�DNR\۾��x��kDt��h aa����h;pJ�Ș�������N`Cu8:)Ds:�g"��P�g��e�)̩����o�$+q�<w*G�i H�Y���.�l��29F��! ��Q�W���}.��jÊ�|\��3�]�vq8<ޥ��Ǝ�� +�;o}<��J�Df\6�N�8�l��z"!�I������]Ȉ]r�!�%��e��u���V�֜bDب� O�5�5�k*2�(� +,'��rv�e�IJǸ�V�BA��(�݄�lnWh�JaO����l +(�[�JW^�k=L�VEI���.;����n�!xM�F>y�T������H��:�ɱd(;�w�n���'S�i���pnE�TvDž5=х��]�!�oy����?��������<�R ���l�l�/]=P��Y�9 ���1��7�`0}���8���1fΠ�X��H�{��RM��3�3I��+ s������@3� ��R3eqd�9��Zh���;���}�j^�:� ��\.���7Z06Y��[�!�XL2�S��Xt`m���r�4� +fb�'1MHz�$�u7�!���rɾ�3J ���v��������E�B�f�n RÝ�[X�M(��9/�<L���3�+ LX�5�P +��0�Lxl��%���h�a����ݱ����Z��l_#|l���������5�.7l-� 3O��b�g�:Dn|�����e�K萳�5*n��H�H����z�Pg�^�'��{63o��p:92Ъ�/`���H�7:�E�0�p���Pg`X<����p&���4�a(H0�Z:����K�����f��~ԋ&Yul�&���!���5�ƾ���s\����9r���h��@k?����|x$zqK��C*�_��Q�U ϶��e�|x`Y��w�{.��^b��\������(��8�%��������n��U +m���h&�/����6���R� �3�p�/�Xt���h˹&s�z�j�4%,l�� +J|W�J,�~���j'K� +�o�"cl��H#�\��N<��'_��Ͻƫ����N3�+�Va3|��������j����u���!Xߠ� 3+�ݷ^NV���]~N��:&m5�h�qZ�ӻs<!O{{L�=Q�~mR�fv}��,�|�&7z�s�7/��+�J�Py���0���~0���^��T$R�o}/RF¹���E?��ˀ|�~�PX<���;����|u�p�O�т�u�\�t��:�`����J��ρ��&eH<���D���EB���D�wlKY#R���|��s����]>= j�ϡ� ۶��� �6M.v������EP��w����e���bG������� ~�ro�����rbf����:��d�A9���_��¨�6�u��w?/��R +fendstream endobj 4624 0 obj << /Type /Page @@ -19483,950 +19524,720 @@ endobj /D [4624 0 R /XYZ 71.731 729.2652 null] >> endobj 4627 0 obj << -/D [4624 0 R /XYZ 71.731 741.2204 null] ->> endobj -926 0 obj << -/D [4624 0 R /XYZ 347.5336 707.8408 null] +/D [4624 0 R /XYZ 118.5554 689.7049 null] >> endobj 4628 0 obj << -/D [4624 0 R /XYZ 71.731 697.4758 null] +/D [4624 0 R /XYZ 165.5238 681.2406 null] >> endobj 4629 0 obj << -/D [4624 0 R /XYZ 71.731 654.6753 null] +/D [4624 0 R /XYZ 341.2842 669.5843 null] +>> endobj +1955 0 obj << +/D [4624 0 R /XYZ 71.731 636.0077 null] +>> endobj +930 0 obj << +/D [4624 0 R /XYZ 347.5336 603.6117 null] >> endobj 4630 0 obj << -/D [4624 0 R /XYZ 412.638 643.8807 null] +/D [4624 0 R /XYZ 71.731 593.2467 null] >> endobj 4631 0 obj << -/D [4624 0 R /XYZ 111.2626 617.9778 null] +/D [4624 0 R /XYZ 71.731 550.4461 null] >> endobj 4632 0 obj << -/D [4624 0 R /XYZ 71.731 615.821 null] +/D [4624 0 R /XYZ 412.638 539.6515 null] >> endobj 4633 0 obj << -/D [4624 0 R /XYZ 71.731 600.877 null] +/D [4624 0 R /XYZ 111.2626 513.7487 null] >> endobj 4634 0 obj << -/D [4624 0 R /XYZ 71.731 551.8259 null] +/D [4624 0 R /XYZ 71.731 511.5918 null] >> endobj 4635 0 obj << -/D [4624 0 R /XYZ 71.731 525.923 null] +/D [4624 0 R /XYZ 71.731 496.6479 null] >> endobj 4636 0 obj << -/D [4624 0 R /XYZ 213.9555 512.9716 null] +/D [4624 0 R /XYZ 71.731 447.5967 null] >> endobj 4637 0 obj << -/D [4624 0 R /XYZ 71.731 510.8147 null] +/D [4624 0 R /XYZ 71.731 421.6939 null] >> endobj 4638 0 obj << -/D [4624 0 R /XYZ 71.731 495.8708 null] +/D [4624 0 R /XYZ 213.9555 408.7424 null] >> endobj 4639 0 obj << -/D [4624 0 R /XYZ 134.9992 486.3713 null] +/D [4624 0 R /XYZ 71.731 406.5856 null] >> endobj 4640 0 obj << -/D [4624 0 R /XYZ 71.731 458.4759 null] +/D [4624 0 R /XYZ 71.731 391.6416 null] >> endobj 4641 0 obj << -/D [4624 0 R /XYZ 71.731 386.5806 null] +/D [4624 0 R /XYZ 134.9992 382.1422 null] >> endobj 4642 0 obj << -/D [4624 0 R /XYZ 71.731 334.7749 null] +/D [4624 0 R /XYZ 71.731 354.2468 null] >> endobj 4643 0 obj << -/D [4624 0 R /XYZ 71.731 319.8309 null] +/D [4624 0 R /XYZ 71.731 282.3515 null] >> endobj 4644 0 obj << -/D [4624 0 R /XYZ 422.0761 310.3315 null] +/D [4624 0 R /XYZ 71.731 230.5458 null] >> endobj 4645 0 obj << -/D [4624 0 R /XYZ 176.1789 298.6752 null] +/D [4624 0 R /XYZ 71.731 215.6018 null] >> endobj 4646 0 obj << -/D [4624 0 R /XYZ 508.9315 298.6752 null] +/D [4624 0 R /XYZ 422.0761 206.1023 null] >> endobj 4647 0 obj << -/D [4624 0 R /XYZ 76.7123 270.3813 null] +/D [4624 0 R /XYZ 176.1789 194.4461 null] >> endobj 4648 0 obj << -/D [4624 0 R /XYZ 118.5554 226.8359 null] +/D [4624 0 R /XYZ 508.9315 194.4461 null] >> endobj 4649 0 obj << -/D [4624 0 R /XYZ 135.3953 218.3716 null] +/D [4624 0 R /XYZ 76.7123 166.1522 null] >> endobj 4650 0 obj << -/D [4624 0 R /XYZ 222.2315 218.3716 null] +/D [4624 0 R /XYZ 118.5554 122.6068 null] >> endobj 4651 0 obj << -/D [4624 0 R /XYZ 433.1768 218.3716 null] ->> endobj -1955 0 obj << -/D [4624 0 R /XYZ 71.731 184.795 null] ->> endobj -930 0 obj << -/D [4624 0 R /XYZ 267.2242 152.399 null] +/D [4624 0 R /XYZ 135.3953 114.1424 null] >> endobj 4652 0 obj << -/D [4624 0 R /XYZ 71.731 149.4294 null] +/D [4624 0 R /XYZ 222.2315 114.1424 null] >> endobj 4653 0 obj << -/D [4624 0 R /XYZ 71.731 132.2936 null] ->> endobj -4654 0 obj << -/D [4624 0 R /XYZ 266.9195 111.9507 null] +/D [4624 0 R /XYZ 433.1768 114.1424 null] >> endobj 4623 0 obj << -/Font << /F33 1358 0 R /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F32 1266 0 R /F44 2110 0 R /F48 2123 0 R >> +/Font << /F33 1358 0 R /F23 1250 0 R /F44 2110 0 R /F35 1709 0 R /F48 2123 0 R /F27 1258 0 R /F32 1266 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4657 0 obj << -/Length 3012 +4656 0 obj << +/Length 3087 /Filter /FlateDecode >> stream -x�}i�۸�{~�|i"����ͦȦIv��H\,��h��Ց%�De2���.��h��H����~�M�i� w�$n��g���><�e#8�)���g/߇�M��I��l7���a�7i�Y�g7��?�ۓ�ݮ6A�9��߷}g�s�gY�s���*�������m���0u���.}�c -�tB��d�yB�mOz�����j���8r��/F�v�z�>_*e}��<�i���0J��c���\v���;M]0���7}}c_�e�y��cG�k��Z��Ƅ��nr)�w�/(N���<�#bxG��S5��?�G -y����V׆W�p��ȋM��<g͓��g���4����^U�C���� -bG��"W6�ݬ|ǒq-��Z�sj�r�����g/�N�\~x����~�Ďk9�>����9��g�U���?k�$�II(4�8�NM_���V>Ќ3P�jM��+���^�r��5��!j����Zk{Z��K�Ң�q�������=/�Ƚ^(��QJ?)9}�u-�����5\� 3�%��A��98�(.���eȷ�ry���$��q.Mוd�n��ʚ'�E�KU1sI8'ժ=�)�u���8J ���U�g��@�=�6̸��ۺA��š��DI�;�_�h-K'vl^`��h�%C��W�"�n�5�Xi�д結ᒼa��2?�������B� Q�)��8�s����]0WW�3�Z����0>��-䋡Jb�큿� 88�/i��Z9��1�<�eq$G�ug�S6���}���J8��my1CQƨ�]��o�=) Q՚G�#0��TQ�ˤ`]8h�U�<���x��������w��3|:j�n]����<�1dP�ː[�9�.���E������=p�&�eS�{g�_��N0ˬ�È��} ?�����V�+^o���}<�!���� +2s�>�ڭ�=/�鹬�qd��6t�oЃd`=,��e��Il�� -�B`���tn:ã�P"J3;��*�����o�g�j�6�=�2'� �6�\�`��ϻk(�n�"ZSc*[[��W}18 -��g�Q�bO��^��"��)�L�� -E���J$����p������qS��]Q���q4�!<-�n -���`����P��p���� / Z(n���{*Q��U����e�{d��F��o -��k!���r�@��� O)zK'|2��ݒ��~���k@D����,�����K<�v7XQ�ph�ޠ>�.gA6j��l J�羬 -����H2-�Eh~jF��/u!B��wB�.J�Rl1����V �Y���vx�����d���Q4���=8�5֎��~����њ��� LSh��l����wu#Y��Q��:��Ə��JlY@�̠�!$n� )&�d�)���0���{��NΟvDp|�~�|?Q-ġ����(��=٘�δ++�a�P��:��s��(��ⴶ��S��O�a|��I��y�z���MM��θ�c��e}�D����ͅ�a��Ձ�����o�1��C�gM��ܙ�*ѻ!l�JH�5��q0�=��!�*1���X� -7$�Z�?k�;���#��%g+�ӄ ��� (ޯk,��b�4��|�e����\���p�|��2"Ȑ���G�{�p3Lz8TT/��� s�Cȹ�L�Ң���٭�jڂ�!_z'��?z� ]�(m�ʥ�(G")\q�D�@]�r��I�i>�㞟^a+��k^A sv�����'P����h�݁g�+Ç��M�$c~_��~���!z�/�PQ�|8V�3�n��e+�R7˽h.�����4��ڴ��UV���n�!=5&��9���_��#ES� ��#�&y�^,`�W��Xl�+o�I�NkP�kj��R�#:�����1�$Ӡ�ZoO�_�<>��"Г�ݒ�t�R:��'� .p?tN�_*�(piuF*WA��UтL��{�T����s8�%;ӈa��,��]Z���ɯ���B�è��Oy8�pk+S�]��k�#������K�`� +>���p¼�،�5����V` ��3���<��w�=<�PX<q����]l2�6��Z����N����o�w߯�}����w�ք�����Q �{�`\ P��}ңM�F-PW��{n}a�O}m�O}�(�`�Ea�X��L���` �,qze�`Nb1�/ζ�hUYQ��і�ו�4̩�*pL�6M��:���CHD��� -�~��e��7�}A|}Ѷo������e��yܵ�U{g_a�a��`e�P]���*5�U��V�3��4��Mq��p�e�y,V#ɦ�J�G���I�#�VP���AE��ʝ� -lO��{:�l�%��ZN�BQ��-�������j�W.�4�����Q y��d*�c�^?q_�Y�e��+��j?I]��'�D���S�HckEi4J���Џu����c�dV�e�����-�����f���L�����H��_EQ�W��+��uw5���.C5mmy8��Q�l��� �g�a!6vq��|P4�}�&�ϿA�����h���n�VIo�26t�<����Pş��2֛ϝ+l�\�9�#v}i5����$@�R�>����)Fn�{����y�x����0�mlҙ-��{s� �P�-�� ����4���$N��{@���[���+��Afk�|�(��N��w(}1�x�_�P9�� x���@� �����xT��=�l]�1��C� ��!J���#���q+����^w'��4:�L=~3��(���i��B_�:�FO�n!�d���Ѐt��Q��"�ۑi7��5p��A�^��r��oWa��[��yr�Jzp&��1�A��!&�>6����e.Cύ��_j��:oJn{@n��ؤq8�y�G��5en�'�w����<�>R� -?N�۲����.�?�Ќ�endstream +xڅk��6�{~�~���Z�m M�t�^H�P.���h[���T6�_3��$k�9� �Cr��7� +�/��C?���~���Uu|\�a�Ë�I6L���x���}_�~�E����* r?N��*�#�H������� NF��M�^������:65ݞ?������������xt�~Y����o�z�a_� ��EȢ8-���������~V�0�hp�*O��n��f�'��V��]{F��%xD���&*�����)#�#�$��F)��� R��V�8*��U�4�D �����" �O�� �=�BSah��6MgdW�:��a{l��]so+*\rO��U�{��jݸ�MG+�]-z���p����,�&�,�b+��^�>��� �`��C�����ROt|�ZV�4R�Ţ��%�U'��k��045�| +��`�黛���ԧ�E������ZU��^�k����.�����`3Z@� ddew�`Ğ~���pb�G����+����U{���$-({{�n4}� �Q���ʌ�U���4Z�x{�����z����Ъ���(a�ȫaNMuO��d��_�ab�Z��k�"�M�����^�UC���Ь3k�=M��%����#Z RU�#��l���D�+ꔌ�iA>R�rjvl,�=_�{�ԑ9��I�Z��f�z��hch+D +o?ڎ��x���:uh�d�@+9�_켸_��3�@�7M5���ي�@b�C j���NJ����GG���绿�J� +���Q�0�m%x��ݷRv������G]�3��2u���G�6�G):�4�nv�ˉ%��y �Ii�X�hn�t4�'Y5�%:���D/*���Cu ��Wk� +�3�����E�K>�)�?)9��DIao�[I_�h�Srl� �!t��@��W� ��͒\�1�D�S�q�l���zٚ�}���*9F�Ġ�)��1�]r��jAz�V���ɰ��·�/�*.0;��z;�%i��x$���#b���R�� {A�76���z���n0�XW}s2c�"�ս^�/E�7�FO�cT�$�}��ȱ#Q��29X!vc� ��jb��oc��v�������n�5 f�:��0�2|����Yt�xLG^T��з��@z4������;�ri�<;w��3Y�p��mp +�^+��-�+���Aw%���0�`B�,�\�Ϗ��5��ず�^�5���ȮR����yX;+�o�-~DZ �ҕ Q@A;��QiC���$6�P��U + ��Rǣ�j@��m��p�V���i0� ���/�o�a*[;��*������f���(/գ��^�B�u +6v@7c���q9�43:\���r_�y�{J�i2�!4l��n +�핪 A[>��z(|k5�#��)�⓲�4,��ɇ��턘��m�aA��= +NKϦ����kfmG�R�`O��!*��mE:0�fЗT��"�V�Y�d�ddiʲ�"���ӥ�����]/����u��Q��g����z0`�~������eo��{a�@��8�s]����ٔԵ�m1�����%��jaŬ@=)�15���j�1ʂ[^Z��;c�V���v�6��`��#{�L��Z��K���/��}�8��0��c�:k��A#=�ĉ���%�{Ы0܁Q�pt���)��D�}�a����nki葼�n��K�ؓ�i�Lۦ�&�Y����=�~\@v`#M�kK��>-}�2���L� �};��F��7��B?��i�����H� �o��o�0|?��S�(�1�>�i����rf���n�?��b}`ͳ{��2Hhe��9{lp���s���>N�Ct �ӗ���i̋��y�d���b�4���=�N�74�!܁-�$���2���$�E��&=���nq¹�!�8���۲#�\�F��J�5uC!�N��R3_N(m��19G&#.\ ���=ׄ\M#�e�k~x��\�^�j���]����;ځ^qϽZ�����[>t}~�e1�+��N��gL?�ѻC���ʧ��Mk&"�-��d�E�e���M۸�v�zi�fV�U�g�l�!5f��%���}_O��ES��G���y�^t����k�`��Cc�{ZJl��j��� �#4�&[��i�yPȝ���/k���<1� �N�\:�m:��3mǕ NP?|Β_ε(lp�#壠�����p��A.����S89KvF�a�,��U���ɯ9K�5��IO +�O~��p�*S��}��k�=������K�h�)>���p@�<=����2� +��������&�{�i���Aa��A��g���ܙ$��ڃvÚ�VA���v����4�o��{���ؚP�J�`�� g0>(��>�ɢZ�lW��j}������>��g���Ea�X��>GY +32�,�;G��撤ksb���>���M=F�k�FW.+�y��"p̴6O��<����+b2�*ȇ1�7Y���1I�����G?��L��9_Ώ�]�Q���F�맶�+��vQ8@�� Tj.W �[UE�X��=nD�.é�O�����ٔIm�A�V<k|�3��7�"NO������3�h��c��w��X�g���]�t�V�V���x!M�a��aq��m�-�S�^�>s����+m� +�R���>��3b˒O�ۼ��Ί�d�{<�~dHӗR +q�[�'��f*��Gy��n�?>E�_����D����1�!�� ��0�p�~Z7�n�]M�0 �� �XM;[�zx���y����°���c�gA���� vJz�#����� '�g����x� +���V��B�\a�͵��=�#l3�ri�wUۡO�den��? W}~ü�d +���8�ed҅+֧sK�p������!գY�E���j�~a��[���ˏ�Q�j�r�(�ǟk"z�G�{�y2��x�_�P%���t��H� �x������3��x]�)��c������H���᧸Ur�)�^wgi����7z�Q=)�"��o�������Q'���X���K���u��endstream endobj -4656 0 obj << +4655 0 obj << /Type /Page -/Contents 4657 0 R -/Resources 4655 0 R +/Contents 4656 0 R +/Resources 4654 0 R /MediaBox [0 0 609.7136 789.0411] /Parent 4569 0 R >> endobj +4657 0 obj << +/D [4655 0 R /XYZ 71.731 729.2652 null] +>> endobj +1956 0 obj << +/D [4655 0 R /XYZ 71.731 718.3063 null] +>> endobj +934 0 obj << +/D [4655 0 R /XYZ 267.2242 707.8408 null] +>> endobj 4658 0 obj << -/D [4656 0 R /XYZ 71.731 729.2652 null] +/D [4655 0 R /XYZ 71.731 704.8712 null] >> endobj 4659 0 obj << -/D [4656 0 R /XYZ 71.731 741.2204 null] +/D [4655 0 R /XYZ 71.731 687.7355 null] >> endobj 4660 0 obj << -/D [4656 0 R /XYZ 71.731 652.3886 null] +/D [4655 0 R /XYZ 266.9195 667.3925 null] >> endobj 4661 0 obj << -/D [4656 0 R /XYZ 71.731 595.6016 null] +/D [4655 0 R /XYZ 71.731 639.4971 null] >> endobj 4662 0 obj << -/D [4656 0 R /XYZ 71.731 538.8145 null] +/D [4655 0 R /XYZ 419.4076 613.5942 null] >> endobj 4663 0 obj << -/D [4656 0 R /XYZ 253.9215 528.0199 null] +/D [4655 0 R /XYZ 71.731 593.5047 null] >> endobj 4664 0 obj << -/D [4656 0 R /XYZ 311.6869 515.0685 null] ->> endobj -1956 0 obj << -/D [4656 0 R /XYZ 71.731 494.9789 null] ->> endobj -934 0 obj << -/D [4656 0 R /XYZ 308.3972 457.7634 null] +/D [4655 0 R /XYZ 71.731 536.7176 null] >> endobj 4665 0 obj << -/D [4656 0 R /XYZ 71.731 447.6207 null] +/D [4655 0 R /XYZ 71.731 479.9306 null] >> endobj 4666 0 obj << -/D [4656 0 R /XYZ 366.7725 437.6388 null] +/D [4655 0 R /XYZ 253.9215 469.136 null] >> endobj 4667 0 obj << -/D [4656 0 R /XYZ 71.731 417.5493 null] +/D [4655 0 R /XYZ 311.6869 456.1845 null] +>> endobj +1957 0 obj << +/D [4655 0 R /XYZ 71.731 436.0949 null] +>> endobj +938 0 obj << +/D [4655 0 R /XYZ 308.3972 398.8794 null] >> endobj 4668 0 obj << -/D [4656 0 R /XYZ 386.4974 393.8032 null] +/D [4655 0 R /XYZ 71.731 388.7367 null] >> endobj 4669 0 obj << -/D [4656 0 R /XYZ 71.731 373.7136 null] +/D [4655 0 R /XYZ 366.7725 378.7549 null] >> endobj 4670 0 obj << -/D [4656 0 R /XYZ 380.2047 362.919 null] +/D [4655 0 R /XYZ 71.731 358.6653 null] >> endobj 4671 0 obj << -/D [4656 0 R /XYZ 71.731 342.8295 null] +/D [4655 0 R /XYZ 386.4974 334.9193 null] >> endobj 4672 0 obj << -/D [4656 0 R /XYZ 71.731 298.9938 null] +/D [4655 0 R /XYZ 71.731 314.8297 null] >> endobj 4673 0 obj << -/D [4656 0 R /XYZ 71.731 281.0611 null] +/D [4655 0 R /XYZ 380.2047 304.0351 null] >> endobj 4674 0 obj << -/D [4656 0 R /XYZ 71.731 257.3151 null] +/D [4655 0 R /XYZ 71.731 283.9455 null] >> endobj 4675 0 obj << -/D [4656 0 R /XYZ 228.316 257.3151 null] +/D [4655 0 R /XYZ 71.731 240.1099 null] >> endobj 4676 0 obj << -/D [4656 0 R /XYZ 71.731 242.2068 null] +/D [4655 0 R /XYZ 71.731 222.1771 null] >> endobj 4677 0 obj << -/D [4656 0 R /XYZ 71.731 227.2628 null] +/D [4655 0 R /XYZ 71.731 198.4311 null] >> endobj 4678 0 obj << -/D [4656 0 R /XYZ 351.5704 217.7634 null] +/D [4655 0 R /XYZ 228.316 198.4311 null] >> endobj 4679 0 obj << -/D [4656 0 R /XYZ 71.731 166.5554 null] +/D [4655 0 R /XYZ 71.731 183.3228 null] >> endobj 4680 0 obj << -/D [4656 0 R /XYZ 154.7543 153.604 null] +/D [4655 0 R /XYZ 71.731 168.3789 null] >> endobj 4681 0 obj << -/D [4656 0 R /XYZ 102.1666 140.6525 null] ->> endobj -1957 0 obj << -/D [4656 0 R /XYZ 71.731 134.2905 null] +/D [4655 0 R /XYZ 351.5704 158.8794 null] >> endobj -4655 0 obj << -/Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R /F35 1709 0 R /F44 2110 0 R >> +4654 0 obj << +/Font << /F33 1358 0 R /F23 1250 0 R /F44 2110 0 R /F27 1258 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj 4684 0 obj << -/Length 3321 +/Length 3194 /Filter /FlateDecode >> stream -xڕko�����4�2�(z?��W�m�z[� Pݢ�%�&"�>Iެ��w^��Q�9����pHΓ���ϿJ}7 � r7H��l�xW{��_Hn��vN��������*w�$H��wW���a�Wi�Y�gW�����8�nsĞ���~8��i�o��3����7]����{��~\:S7π���TO%�+?���E��I��c7pc�+͜lB�)PX�ty� ���M�9�9�Šz8���{W0���(&���)�Y1���&��G�#K�͉��83���Ǣyj�-���U�>�����L7r�,m?pڃ6�˻ ��n|8�0��m��������]�~��^7��w���A˾l;��u���i�ϽZ��֮ ���о6ۢ�;�� �=�yQJ���<N�I�0D�0�J}���U=�����ؽ����18RFL�C4�i�;����5��-�S�d�mѶ@y� �vo�p�������`.G �#ɉPq<���`�=�ʢ��ZN=vp�[ҳ#�ND�Qôa�RUZ0�^�7�{?RxR�/?v��V��A�Խ�\�Xb<�� ���_�Κ����a�W%*���̅m��TW��P����5֪ZXm?�k��=��x��C��w!6�#�3 q�~�o;/�B�E^�����f:�t�S+���6+>A�K��,�0$�Ð�]L\��p�9�ss�s�ᄋ0��.{Y\9��R��lK��ڑR��G�&�\���jo��S�'0h���-�B�a ��ØU}��`��v�UW�������xD�q���<V,��ͼ�=h(��S��Nm�Cd�씪]? ܒ -@۩�4��.�d��^��9g�3�f. zb�=ɋ���lI p�����`g��]�sZ��h�c�Nm;�TY��8Y)���nU%���-�<����`qp8ٔ6P���ȍ}3@��1�k�4�$�Y�ƈx�PT�:�X��)LPXp�8!D�Ȣ1���7��G����� �������Yh ���t���A�j�����u��EWX��� -�l��~g:#�����i0n8�ִ�Y� -{ʂ8���h���� �-��a����USh�UD���ؖ��ݓiB�l Yt�e#��Q�;8/�ؖ��Y+1��j7��%8��ċH�S˭�@��ع�1���~�a�Lm@3N��� -��)7�Lo��S������z8Ltߟ�8?q��3}o��S8��-u�P�vR[4j��ખ��;�Dk���E����ɷM�!|Tu� -�D��P!_���I8S� J��ⱨ`<���=�����#�\<���G.��Q0�P�O���<nO�e��Z�Q�悑2�],���}3N c�'rܖ�>5x�adw�$7�,7���"mB�A�C���y$�2ߛM�U��6����@�3wj��y���*J�(�m4��L��8�i�V -��Mn.�"v,i�0��5�p���.��D4^�ū��y��TT7�L&��[�އ�����g���XCfoex����1|�D�t�_���T�n���d��a�,�J]F�a�_pE}RϘlc*��ۮ���+�r��] �>s�$�0��sۨ��:��<=�\p��܈�шsǶ�%�ds8:�v�i�V���LRԱ�̼11>��Zl.E8�?���S�1� -��3�;����\]��Uח�|��� -�'�����M��v�K3%�]��B��� -b7L�`va��ʅA�̭M��8�}���h'DH�P�;1?>m*���� �Q�*sޜ�bA���F(٧ke�;na��`������B�R�@;��b��I�<j��ܦ|�h��=�K�İb�V{@����h���>�@����p�ʃ��Q��c�V\�c�)xz�LO`:?���h���mQ>0�a�C�S�|�6�z��vR�N��,aq�D-��k:=���e�E,�r).���EW���9� <Sla�TBl��5�g?u>a�C����<p�rSh9�:q�R�2I�E� -���*D�_���δP��?��C`R�����Μ��E�T��T�/+d�����Y�"��j(�iV�� ��aܕ�pw�舱,�u�ѽM����`V`�V=�jƾ]5 -�ֱ6f|K>;s��eP��H����s%�M�7���z�`Tק��R阵��E��;|�_'t=?�Wba��{�^��B�� -�P�2�Ə�N@�7��&�U��RJA�4H|ɻx���_t�u������T��0�L�2����e�>A�-�*+GLv�I�$���q=��0�������g�9����V��'m�AF(؊��-���ǫ8�ʘ������H*_2� -n��*uQsG��;I���ũ��<��I20FY`��HT�^�[N�2�T�qU --���7 ���Z�bw��}]��v�/��ۋ�@o�����Ȁ(�������[���+3)a|�B"��0�m�iQ�([���M5���+�/�7�!�G:;@�����+��������3�l�����aV*��Qþ�X�@��X�������*%�D/,zE!��.�Cڂ9/�H�@"��#����u���+���A� -��2A,�X̭5l2̫r ޝZ�HQ�.�`Q���ח�eƳ?���3�*��D��e���EYv� q��+ȍls�v��f���WT�����2p�ID�!��"������3_�,�p�ش�f�ڕ% �en�y!�h�M�,�I���x%H�g����5k�5��8�]���^��k����g>��\>l�R�Yib�JI��y�k� �s�Ý���Yi�.?I!�6M2Ic[b�@c��PP�3rҤ�8w�~�ľ�7|�v#���a���������\�2y���y��,�x��[��l�[���!}�N���_�3ʺ�����ޱИM���X2����GTJ�i�S!|��0?-Ҵ�`g-�2�|c�4��-�Br��Jq9� A����lK(��P -�2 -?�Аe��P.���!���~E�CP��ϳ�e� ~#k�]?��'Y�¦"��,��+G��e���ܵŨ`�?1!KcN���H\����@7L��呂��Ѵ��!1���~�yj�A��u����#����G�����Kp�]����R#Dq�����3��8�x",� !hB�2�����idu���nK �$��N�3tqa6�W����BP�am]���_,D�g�FG���K� ��Q6���;.혷N���C��(s3 -����4�y�o�8�@�<9�@Y���V�?��endstream +xڕk����� +w?$2��J��J﮸���(PE��,�6���J��9���,y��+X��ᐜ'�p�_�HC?��Q���X-��M����OoB!Y �jJ����ÏQ���<Q�b�[��ԏ�Q�H#�gq�-6տ��q��r���K|n8��m�o��3����7S���ߛ���������3���|#�s U:���5�PД��{�T��yƞY��(o�ͱ.A= +{�pL��1��@�)��m?��m�����;�5�@�mi�A��p>�ؿ�`��f��<̅��o�Q�ug�ɞ��R.CO�3S�E]�#�Â�U�b?�V���8\�-��/��.��_Gq�vY� ��?�>�M��M�}�����M��q�L-�5�K��f�����4_�ր��?�c<�4����@^Ԭ�Ly� ���2 <�����p�P�c�9�N��G���^��{��0���ٞh�3[�|,:������~Е�s[^���Ƚs���7YƶrT���&��ۛi+��?M���%�d�S��x���Ⱦ\� +6�M��]v���[�� +"_ݾ�ۢ~8�w����a�z&�E�H)3R�W�_�@�����O4�산{�m�cp���lѸ'0�����[Ӗ��z��h[ Y�=�ڸ���=Ly��娡}"9*�G]t�,��^;T�V��NuKz6c�ډ(8j�6�Y�����s�gK +Oj�>���� ��� i��:.�H1�@�vΆ��旿�����ß�u��}/={e[�=�Օih��Kj㌵�fV��Z��EO��_>n�y�}�.��b�x&�!��/��c�U��h�W�8��tt��9�s:�a��rڬ�U����h}?SÈ�Cvw5�mD���p5g��)7�'��lTv����ќЖT��-�zTzGJy���(6�:]�������:Mz�N�@O�EV(⯬��0�T}.X8�]���-�h��b�<"�8��c+���f^�� �{�) +B����!2fvZ�>��nI��ti�F�SZ2�(P�W ~aʙ���K���qO�"�=5[R\Gp�md2r���;�tcˣՎa�;��hRe���d�!*6�Օ�?{�����|l�$���ɶt�J�FGn�w����Z;|��機)N"�#� +����u(�X�3_LPXp�8!D�Ȣ1��*���GߤF}Ub,ȡ���,�jZ��O�|� [u����K�7X�g�� +�b3���tFn�3��3`�p&�m��>���1YE�����ytnj�,C��֘Vw�Ј��R=P��-E�'ӄ����ˮC:~D�����c;��cb��d%�mdvKpxm��&ާ�[����'�w/c� k��2�$����Y(��^�Debx+��������0������I���(;��N,a�t���]��\�q�����dpU�E֝j���X��������%�>�� +�D�yP!_�Y�GI4QG�N��X����;[���"��r�0�::!H<�H�F��C >��$:�;=��ײUi*)����*���7��Q�p� Ǫ����Î�nGL@rC+�+�4i� �j=�_�G�.���_hmsj�~?s���W�p�E)(ɻ�X�/2�'v��n��� ��(X��`I���doȅ#�Gt�V�/D���\��{��5��������[�MS�3�C\��!��2<I����}�y�?�����T�n�v����a�,�J]G�a�qE}�/�lc+��ۭ���W����b}�I<`���Ro���:��<}��������k%� K���pt����jz� G��6��c ��ycb|����\�p�?s��b�|vgfw��9���.�ܱ�����$5;L33�O.�?\ +7X.R4����#]�-�PS�k ++�Q��ɅA�*�3�.U������q Bm������m����4`GE��Ixsj������d���Q<y��r��&Gw�S +K��(RL�e:/�@����.��G��ALX:% ����u���e��E����3x��G舅�S�?�2��9i��=u��g�����ӳO���vo���#��@�8�=M���"k��n'����'H�P�����u����T.� qw��jU����O%��?܁{S��0�!��#�(7���N��.e,�T��Q���8�B�n���le� k�*/@1&5f����j^dI�N���B�_�88�^dx������:6 �ø+ ��:�cY +넣{��#ij��I��Z�,�Y�v�h�:����-�x��j�A�X#]��W��7b�����^����j�T:f��֢W���/��A�N+�(���Q/QI!�rAh(``�G�j'���i_l�*D� )�$�ŋ G��D +�^a9��v]��:z�"r)[�}&_���f��ꞎ �c���?&��$p��Ӹ��c�D����ܸg�9���ѥ�/8�@��P��Ӵ������)c6�K8�/"�| ��~(�鏺4E�9@�{�$�l/N%���~�H��1�[�E�J�f�r��ɧ���Rh��w��I��ֲ���0��:t�k|Q��^<�����#��f� +�方wk�zb&%L��O\H�\:�C_U���r�X��Q��ak���b~9��H'Xw���Ё"sŒ]��(����$���{�e���JF�r�p��!�!P,�#����}��`�J�4�ǃ^Q�keJ��6c3�%�s��~.���җ�74��1U�D��wK>�����%3�/�@�;�����}�D7 +��^Q��7��e³?���3�"��D�[�*���EYv� q��+Ƚlsw���n��?������`�^<�a�>��Ȃ��K���ʠ��D��WY���$�r��l�#~�N�g�g�;֨;F�q��cM�g��ww(���>��\!l�R�Ii��JI��y�k� ���Ý��Yi��?I!�6M2I�Zb�@c��RP�3r2��8w�~�ľ�7|�v#���a��=<�����\�2y������,����[�\ދ��!}�N����3ʺ��K�o��?��(j�%S�}D�I�� >��h��"Mn�K���r@����˼��� ��_��*�,%�GNxY��Qn,�?V|�Sendstream endobj 4683 0 obj << /Type /Page /Contents 4684 0 R /Resources 4682 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R +/Parent 4718 0 R >> endobj 4685 0 obj << /D [4683 0 R /XYZ 71.731 729.2652 null] >> endobj 4686 0 obj << -/D [4683 0 R /XYZ 71.731 741.2204 null] ->> endobj -938 0 obj << -/D [4683 0 R /XYZ 251.7299 707.8408 null] +/D [4683 0 R /XYZ 71.731 718.3063 null] >> endobj 4687 0 obj << -/D [4683 0 R /XYZ 71.731 697.6981 null] +/D [4683 0 R /XYZ 154.7543 708.3437 null] >> endobj 4688 0 obj << -/D [4683 0 R /XYZ 71.731 662.6454 null] +/D [4683 0 R /XYZ 102.1666 695.3923 null] +>> endobj +1958 0 obj << +/D [4683 0 R /XYZ 71.731 689.0302 null] +>> endobj +942 0 obj << +/D [4683 0 R /XYZ 251.7299 651.0386 null] >> endobj 4689 0 obj << -/D [4683 0 R /XYZ 71.731 662.6454 null] +/D [4683 0 R /XYZ 71.731 640.8959 null] >> endobj 4690 0 obj << -/D [4683 0 R /XYZ 71.731 618.8098 null] +/D [4683 0 R /XYZ 71.731 623.7759 null] >> endobj 4691 0 obj << -/D [4683 0 R /XYZ 71.731 618.8098 null] +/D [4683 0 R /XYZ 71.731 623.7759 null] >> endobj 4692 0 obj << -/D [4683 0 R /XYZ 253.5336 608.0152 null] +/D [4683 0 R /XYZ 71.731 605.8432 null] >> endobj 4693 0 obj << -/D [4683 0 R /XYZ 71.731 562.0227 null] +/D [4683 0 R /XYZ 71.731 605.8432 null] >> endobj 4694 0 obj << -/D [4683 0 R /XYZ 71.731 562.0227 null] +/D [4683 0 R /XYZ 71.731 562.0075 null] >> endobj 4695 0 obj << -/D [4683 0 R /XYZ 71.731 531.1385 null] +/D [4683 0 R /XYZ 71.731 562.0075 null] >> endobj 4696 0 obj << -/D [4683 0 R /XYZ 71.731 531.1385 null] +/D [4683 0 R /XYZ 253.5336 551.2129 null] >> endobj 4697 0 obj << -/D [4683 0 R /XYZ 439.2249 520.3439 null] +/D [4683 0 R /XYZ 71.731 505.2205 null] >> endobj 4698 0 obj << -/D [4683 0 R /XYZ 191.1469 507.3925 null] +/D [4683 0 R /XYZ 71.731 505.2205 null] >> endobj 4699 0 obj << -/D [4683 0 R /XYZ 307.0556 507.3925 null] +/D [4683 0 R /XYZ 71.731 474.3363 null] >> endobj 4700 0 obj << -/D [4683 0 R /XYZ 71.731 494.4411 null] +/D [4683 0 R /XYZ 71.731 474.3363 null] >> endobj 4701 0 obj << -/D [4683 0 R /XYZ 71.731 487.3029 null] +/D [4683 0 R /XYZ 439.2249 463.5417 null] >> endobj 4702 0 obj << -/D [4683 0 R /XYZ 71.731 487.3029 null] +/D [4683 0 R /XYZ 191.1469 450.5903 null] >> endobj 4703 0 obj << -/D [4683 0 R /XYZ 71.731 430.5159 null] +/D [4683 0 R /XYZ 307.0556 450.5903 null] >> endobj 4704 0 obj << -/D [4683 0 R /XYZ 71.731 430.5159 null] +/D [4683 0 R /XYZ 71.731 437.6388 null] >> endobj 4705 0 obj << -/D [4683 0 R /XYZ 71.731 399.6317 null] +/D [4683 0 R /XYZ 71.731 430.5007 null] >> endobj 4706 0 obj << -/D [4683 0 R /XYZ 71.731 399.6317 null] +/D [4683 0 R /XYZ 71.731 430.5007 null] >> endobj 4707 0 obj << -/D [4683 0 R /XYZ 71.731 329.8932 null] +/D [4683 0 R /XYZ 71.731 373.7136 null] >> endobj 4708 0 obj << -/D [4683 0 R /XYZ 71.731 329.8932 null] +/D [4683 0 R /XYZ 71.731 373.7136 null] >> endobj 4709 0 obj << -/D [4683 0 R /XYZ 210.674 319.0986 null] +/D [4683 0 R /XYZ 71.731 342.8295 null] >> endobj 4710 0 obj << -/D [4683 0 R /XYZ 137.0351 241.39 null] +/D [4683 0 R /XYZ 71.731 342.8295 null] >> endobj 4711 0 obj << -/D [4683 0 R /XYZ 71.731 229.9878 null] +/D [4683 0 R /XYZ 71.731 273.091 null] >> endobj 4712 0 obj << -/D [4683 0 R /XYZ 71.731 191.7761 null] +/D [4683 0 R /XYZ 71.731 273.091 null] >> endobj 4713 0 obj << -/D [4683 0 R /XYZ 258.0065 178.9242 null] +/D [4683 0 R /XYZ 210.674 262.2964 null] >> endobj 4714 0 obj << -/D [4683 0 R /XYZ 394.4509 153.0214 null] +/D [4683 0 R /XYZ 137.0351 184.5878 null] >> endobj 4715 0 obj << -/D [4683 0 R /XYZ 71.731 140.07 null] +/D [4683 0 R /XYZ 71.731 173.1856 null] >> endobj 4716 0 obj << -/D [4683 0 R /XYZ 71.731 133.7079 null] +/D [4683 0 R /XYZ 71.731 134.9739 null] >> endobj 4717 0 obj << -/D [4683 0 R /XYZ 288.1288 122.1372 null] ->> endobj -4718 0 obj << -/D [4683 0 R /XYZ 111.0884 109.1858 null] ->> endobj -4719 0 obj << -/D [4683 0 R /XYZ 325.6187 109.1858 null] +/D [4683 0 R /XYZ 258.0065 122.122 null] >> endobj 4682 0 obj << -/Font << /F33 1358 0 R /F23 1250 0 R /F27 1258 0 R /F32 1266 0 R /F35 1709 0 R >> +/Font << /F33 1358 0 R /F27 1258 0 R /F35 1709 0 R /F23 1250 0 R /F32 1266 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4723 0 obj << -/Length 2319 +4721 0 obj << +/Length 2439 /Filter /FlateDecode >> stream -xڍk��F�{~��CQXk5z+H$i��^��Eq���4�碇!��u~��C�e���b!���p���b'��㥎��*+���,}�L0˖y�S�g��|�:i�E��~���~��}�IB��v���7Gy2��l��]G}�t��K�YW"���uQ�͟�>{����I���~�^<Ѱ���������2-���YQ%�#A'�2E`�������F�.u���9���� ���. -�ŋ[��]��%}6���t��UW>��w}�J���2s�Z�N,���mԩ��.S�l�`(�#�쎪�"��u�(i�E���*O�H�����*�FV�`Y7B���̺���;ܓ���.KU�<�?H%3��sR�C2z�d����, -&j���֏'��� (�Bo_��*Y�o��"�W k��G.�J��6A�=�z -�F�U����̑<��?\�SEΒ h8Jt�_�y��v�͒^&:r;h9�k{��|\���8Q"�;���f����r�A%k�~��UdL�F�d��A�>�B ������o�=������6��6Z���6b ^c��@6���=��ޥS�HA�~<)�|�(�������TfY��Ce�s�����36>,��q�qTkޡ���ȣvũ��C9aJ$毠�~oN����g���m!@-O8�HR��K]��F�~s9�o��h�C��X�tδV��>�v!VP8fr �p��l���~�ea���~����i4�iV��x��qT��K���D�{RL������(���u��dӷ����db:>�_����?:#�,�9�c;o�����šk�@z��l���;e�k1�j����j��`�#�����+���P7v�!j8M��c]A0���1"���DŽ�^e�:������̛�̡7�C���֚��Ɋ�]���{�LK[4��pxC`a/uP���"�R� @'�}�}R���b]֭!��ԧFSA�XmE����)�(p֍6uD0W����@�2�!�G�<ԗ��ć�&@���J����H=��7P�f�#G�9���?�ϛ<���ȁ�:�����窨e�MY�������vxjQ�8\��4]fID�s�G}� ��B��@BG�l�e��Qg�-R�PKn��L�\�QM�g�^�㉰O�":M|N/��k���<��>U�4-���0c���my=� -�;a�����A5���]0TC3�V�IS/\5j�va������gg��:����>�#����Y!�]e$+/�"�"{��p�M�^�� ����\�B ؊ȉ�3vӿj��j"��ʃ*j�3�'i�\a�S�U�aʭx7�e�C��S�� ��a���a5�*.���\�!�yԒ�un�'`�4r��Ԏ_4໎�D�d��/Ϝ�`��O>r@����@L��껩�3�]H^h���4��w�k�m�T�� -�>�eu�z*��Ñ��e�y*,��'��l�@���5������gm�4��>T�\�/��<�U��K���V4��9���X��8-ڗ�6H���_���=�̜J�y�T!�M�]*�d7�ug���8������H���n��(-a5+�� -&��$��w�8��Ǹ�����X������?��F�Ӕ�RQ�X,Й�Y|�q��K1m#/��{�m�Etkh��v�1_�2ځ��D�d��-�]a4L�Q�4��o�w��Ծ@\w:4��=�c鶓�z��2�����FH�k�p�n�eid -���kp�)�^� 8�P�hQ{��\����E��\Z�:�?f�Z����G���ᗙ�z2��5��]�^?�.���u�l�\�_Jp���G������1`(*)%��%�c�%�:�G��s�,��n0�%��p~���(�~� �� 詊_P/�c�5�G��B�ټOĺ=�Lc���֧*wKk�r���)K;^j l�ZsG+磶H��� -l|+\�� -ћNh$�]2ϙ�P��Z�� �I���O����������-����6��a�X���i)�>�D�i n�ư�Ռi,���[ W��w4rX[�� ��)*��*9��A��[�`��=qL} *����c�͆�x�d�mU��֦-B7��M�$H��F���;�&ى��z�CQ��i�bL���«f"��;��_����^}�姟v�j�����]x�zn�$�g9p�p��c{�{��hn$��L�.��mR��� �WI\h�'S����'՟����z��4$ᅓ�o�_8�ʜ��endstream +xڍk�۶�{~���� \�z+K��6[���nE�-�6Y2$����w^�-�q +��y^</�j��O�R�!A�I̊�+��Oy�d�R�,�=��z|���˓ ���g��za�4�,V���u���{g��2��y����w���O��0��|�U������/#�8L�<�w�W]K�g�� +��|��\kW�����6�bG�\w2��,T<��w��0bݴ����X4�����E�=F�w�i ���uɠ�On+����Ae:�:�e�F�ax��sP5(Z��Ynz[��ۺ]�9�7N�W`ũl�����2���%1XS^���4����f�F6.Ab�]*8�0`��X-Lc�^�&�3��ڎ�5�����E�P�7�62ɂ�N�Z�@%^����Z���~�{C�@ 6jC|^�¢4k<n�Wn*�Oѣp�ak�-��eH�J�N��LaM���h� ��v���A��N�{a�F�O�IA�G6���-�*�N�"�g]U���[|���$���[0�N�Z�̷�YƉ�h`) +�c2�Z4f�!K�W�?���:�rc\�9�B�����)�͚G[�������zc���~��]ESU�pF>.y����ޚN+���u�[A*�|R� ;�Ru��F��ٷM���ɟ��c DU�c��$BIy +B�j]���!M����+q*��G�W�O�JB�������7� +�#��v���=)�ޅ���`*�,��%�u[ +G�[�6���DId��gS�B�C���#�˅la� ݾ��7���8H)��$lw���x+{e^��A�_�Z,��ޮ-�Dfa�W�ݲ����� ��?��0�y`���|�i�h<�~��4{�9و��Y]��R��Pw����4{oqe#E��iv0����c��h�rl3�Xb~�N�"���$�q3����)��Hh���Nd�P�h=לQ���q���$�����+���$�[[�Q#<~wܛo^;�ѽf��7�W��l)��~\����� q��H��`��J�˴0*�E��P��߿a�&>-����O�u���a�'��'����~���s����n�2s�y�(93��g*���`K� +m�Gmt�͟��bӷ�$��F�f��0~oT-�����3��L|<�Qכ^� +@�d�+�}OQ,���t�mjp��'�Fe���8�ˇ������������jcLM3��e�Ț��Zgl�9�H���L�[��i�y�`EJmL��s�`�]�.���->��~�j��j�k:��o��[��l�S�iÀ�T��ʦ���3X�2"X<ŚjLW�"�c�'P�ˑ� * �� pJv"*�Y9mG��2�D;>ȭs�7���Á�-���@�8���lA<?�U����S�@���y�1~������$�-�T�|� ��xP�V�C�_u���Se�-�VzU�[�D +J�iI�(&�s^��x�<:�B �h��5�)��L���V�C���.��J�4�j$���݃���,�k2T�d��<�N�5����J�?��E���]�,�*��A��\� +2I�DpNj���3v���QS�P�wb��e~���K�&� ��[/B���:6R����.����7}�c�g[�~��3�C����M)Ď� �q�Cу�x,��|�n���4�wEE�AB����NP �$����y�1U�0��(�\�$�'���8��� �c�Q<(�n�~2L�������8.@�C�8ꋓ���S3HPZ���/�2BkSq��r�1� ��q�e��)�̴��fy&��Cd ��w����U�bK=���A�RUGFN�^��K�<���&�~��[��������)�0M�`vK_��(��0K0y���I�F�Y��JCn���n�kKƊ��k�mOvq �|��հN���͆ ��4�je�R�r����tׁ��~Ü���{؇�*�܈�� �!��W�k�,�FM��g+���. 8�C�Ẽ�x>��8���ij���Ϯ� = +�J��M-�6���;� \_#w�(��Dib���������~aX؎W����8S<åy�^z��d_@�}aĀ�zD�&�lbtwd?��@7�ޘ��YJ���x���W��:��mN�W�r��<���������u�;����ڵ*�X�/omO�G&�v�/G{�/��<�<��Pc��8��S�;X��k������5:�Li��zw����W����"2��r����H#�R��wQOo�&�8��8&����m�=�����b)O�a�A�p��64v�Ic��� d��-mj�K���A�����\{�j� G�# ����� +~5J�\=͜�W�������8H&�2/SI~�ϒ�5����A����?�B�f�g������G��3endstream endobj -4722 0 obj << +4720 0 obj << /Type /Page -/Contents 4723 0 R -/Resources 4721 0 R +/Contents 4721 0 R +/Resources 4719 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R +/Parent 4718 0 R +>> endobj +4722 0 obj << +/D [4720 0 R /XYZ 71.731 729.2652 null] +>> endobj +4723 0 obj << +/D [4720 0 R /XYZ 394.4509 708.3437 null] >> endobj 4724 0 obj << -/D [4722 0 R /XYZ 71.731 729.2652 null] +/D [4720 0 R /XYZ 71.731 695.3923 null] >> endobj 4725 0 obj << -/D [4722 0 R /XYZ 71.731 677.4595 null] +/D [4720 0 R /XYZ 71.731 689.0302 null] >> endobj 4726 0 obj << -/D [4722 0 R /XYZ 100.4128 664.5081 null] +/D [4720 0 R /XYZ 288.1288 677.4595 null] >> endobj 4727 0 obj << -/D [4722 0 R /XYZ 71.731 644.4185 null] +/D [4720 0 R /XYZ 111.0884 664.5081 null] >> endobj 4728 0 obj << -/D [4722 0 R /XYZ 71.731 621.5044 null] +/D [4720 0 R /XYZ 325.6187 664.5081 null] >> endobj 4729 0 obj << -/D [4722 0 R /XYZ 71.731 576.9714 null] +/D [4720 0 R /XYZ 71.731 644.4185 null] >> endobj 4730 0 obj << -/D [4722 0 R /XYZ 71.731 532.4384 null] ->> endobj -1958 0 obj << -/D [4722 0 R /XYZ 71.731 492.8868 null] ->> endobj -942 0 obj << -/D [4722 0 R /XYZ 461.4838 455.6712 null] +/D [4720 0 R /XYZ 263.4371 633.6239 null] >> endobj 4731 0 obj << -/D [4722 0 R /XYZ 71.731 445.3062 null] +/D [4720 0 R /XYZ 71.731 620.6725 null] >> endobj 4732 0 obj << -/D [4722 0 R /XYZ 71.731 409.6438 null] ->> endobj -1959 0 obj << -/D [4722 0 R /XYZ 71.731 381.6489 null] ->> endobj -946 0 obj << -/D [4722 0 R /XYZ 392.055 336.4941 null] +/D [4720 0 R /XYZ 100.4128 607.721 null] >> endobj 4733 0 obj << -/D [4722 0 R /XYZ 71.731 332.6639 null] +/D [4720 0 R /XYZ 71.731 587.6314 null] >> endobj 4734 0 obj << -/D [4722 0 R /XYZ 118.5554 290.4734 null] +/D [4720 0 R /XYZ 71.731 564.7174 null] >> endobj 4735 0 obj << -/D [4722 0 R /XYZ 71.731 260.0888 null] +/D [4720 0 R /XYZ 71.731 520.1844 null] >> endobj 4736 0 obj << -/D [4722 0 R /XYZ 71.731 181.4389 null] +/D [4720 0 R /XYZ 71.731 475.6514 null] +>> endobj +1959 0 obj << +/D [4720 0 R /XYZ 71.731 436.0997 null] +>> endobj +946 0 obj << +/D [4720 0 R /XYZ 461.4838 398.8842 null] >> endobj 4737 0 obj << -/D [4722 0 R /XYZ 71.731 139.6606 null] +/D [4720 0 R /XYZ 71.731 388.5192 null] >> endobj 4738 0 obj << -/D [4722 0 R /XYZ 75.0485 100.9058 null] +/D [4720 0 R /XYZ 71.731 352.8568 null] >> endobj -4721 0 obj << +1960 0 obj << +/D [4720 0 R /XYZ 71.731 324.8618 null] +>> endobj +950 0 obj << +/D [4720 0 R /XYZ 402.8496 279.7071 null] +>> endobj +4739 0 obj << +/D [4720 0 R /XYZ 71.731 275.8768 null] +>> endobj +4740 0 obj << +/D [4720 0 R /XYZ 118.5554 233.6864 null] +>> endobj +4741 0 obj << +/D [4720 0 R /XYZ 71.731 179.9891 null] +>> endobj +4742 0 obj << +/D [4720 0 R /XYZ 71.731 129.2994 null] +>> endobj +4743 0 obj << +/D [4720 0 R /XYZ 271.0004 116.4475 null] +>> endobj +4719 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F35 1709 0 R /F23 1250 0 R /F44 2110 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4741 0 obj << -/Length 3062 +4746 0 obj << +/Length 2064 /Filter /FlateDecode >> stream -xڥk������m�k=�����{H���^�^�f�W<͌�=���n~}I��e��ڢ��)J�(�D�� �'n2�g<���$���/��#}�B0ɖi�.�/���/�0�y8��A�GqT�dQ���o��{oN�E�~� ��K}z�՝�_��H�/��/uӔ�����e�D�_��'�T���#��k�����o�ϗF�E�=/�R$���M<���/%ۡ�Z�!B3�nUGЌ�7�$�x]%�W�xB�ӳ���a_��R]��Iϧѿ�$3�:"���� ����7tc_I�#�f+B�HD�wj�Mr� OG"x+�=�,��^i��I杺��[�Պ�� A,/d�K���`º���5�2x���-���~��<��#���gH���%s�Iz�����LJ�Wx�V��'�@W����E\u�x�_/�9�A1s^�J7�zT��|+<�u��>lr`��FI荃D@��#N�]vO$�lni7ѣ(8v.��D c���g5/_��@�,-#.`�����PE��c�Nx�H�B�[#V��nW�w�m$r�ȼG�@�*Bk%���>�i��Fʊ'�в�˶���@�%��v���6�(�"����3�^� ��9�|I�!��np�rqҪU���8�-h���/�x��A4��_�X���0���%��G*��.�����l2��ڦ�`B��4������t���1"������-���$�̙�E��E�q�$<�-�r��(�(���`1��f�B��� -C�{O�/р���-�-c����7QɈ�-�����W�z��6*R?�s�?�/D����8�>�>;�z�ԍ�?[��+�0^J����C96�c�kڈ -?ϒ�h�g>�q�e�䧵,|1�MkG�+�,��;�⻯����_��7�<�I*���{x���w�����ޡo�=��Ҭl'#����p�� h�[C03Y��m�F�d��T8<R�N���꓀J�L����&��`6��Qf�A��yD�q�#S~·)� ���ʋ�)͒<��a�M�M�x�a�a���q��k��5��KV�Aώ�����%�-����m -���+F�~^��o�9�kKG��Ep��b�Aa6m�����P�W��� ��?�E��A�*��H9-�)�`/����D��z<��h�8wr(�u��B�u��?���������Z���i(��G+��5<�M��y�Xz�h�9{��!/�EX�x�38{��dٛ���R��wR]� L�G��8t�/}��;��QyY���/�̜3�����,g�i�d��ѓ/��A����{8�ʌ�y\[c{�,��@+⦙���d]�Lի�c���ҹ6�(���h碒%_��x=�V3����B�0��[�ۄL��~�gb1�C���EP;<ێ��C*e���Y)�.e4��l�s7���x�g�6]���W��)�z���bZQx�p��0饗�~�o �VX�b9Z���OJ]���x���ѳ�64��H����h?V�s��_W�n<@��w��_��;�C>[I�[b>\dU�V�B��^���9oML�w��k����/_�e�`HO�vB�I�x����f{�{_�Dq`�"|0Ő -�/*�Q���Ӈ܍ Mm*���Ϩn~eՖ�7���[�?��N�w�n���Qڭ���7PJ��t�J8��f_o���\�{9T}}QW�4]U"��p�3�-N�2� ����+k*��K��v����*d�W�Qك�W�ߜ��ü�;�6���"����1�q��'�J����LD\c��Wr�(]@~N�y�4ɂ-A/����\-L������{N*�Qc�K�x����M��v-�p� -ړ�~^�Wk7�_���m�6�ۢ�R���=���v�@���rjO(�C�wq)���f�m^���&���3Ĵa6a��NKh���qs�z:���l<�;�8�E����Κ�1��pj�W��XA%=&ķ�bC !�Gn��S-�tm��'�0�ǣ�R���(���,�i{���P�a��(�]9`�B�z(����l��G bZ4H�j�ܛAF �g@0g@�ޟ�I��ӂ�]�9�R��;�X�" Y�Z�e[��jG�=eD��m%�9���^����q7sDŽ�#�D�{�)B��T\e�@��bj���`a����k�^O���*�$���������M���{�H��y��{�S&Z�.�'�o��=�-�n�&�Wm_m�R*���D20�� ����4"�r��[���2�<2%@��%*RP=��F0�w��5|�~{8Iq���ȹ��7 -�ĭw�8}�wMRN_�[�2��a9)o�K�%������jý-���W��U?�}�~�.���������oi�;.�Ѳ"� mQ� <w�`��Ueݒ��|U&�h� ��/{����߉D<�lZM �t�R�QP-u��V����*G��ۯmb��m�c���d���I�@0`J@<�0`��#"Y���T�����s�xE�@��2+��O�R���Qg_"��K��(o%���zjl�k*��)H>`���ߘZ��ޔ�6[���Zc)����L�H�k�e�g����$s�KZ�=�Z��[`����LW҃�^�E�3�w��|L���i�� Tz�T��V{,��ڕ��,o�)�e�[�9��Z|�%s�\\E����@�6�nq!��a�/�X�'��e�*[���������������f��O�Tf�#��ޯ�c?M#�b���f��6�'un|u^�K��Q��V"��S�\FȺ����(�$�$Ǧە����8������bwNzH�@�n��:A`jd��d��"�gT�(�Ok -C�YlĜ7����d{ǭ������!�����C:������q�/>@�?�fz�u������C�4������ �Ю�RS�(��ܑ���� -��X�_�u�� F�Y!��|��*p�P���R��/������sl��C�Cs��"EaWB~E��_DV���\xendstream +xڵk�۸�{~��.��b��z�E�M��C +��ES�E�l$ѡ���+����P����^�"�h83��E�U�Īa��'��8��ծ}�@���`� �l.��ܽx�M������|u�_�Q&iR��$�L������ۣ< ʮ7qyH߷c?�V���!ތ�u���?�~�����,)ª���o�z�a\\h�m�JT�p���U�MG��(�US����v �q ���+����˪~�z7�u�߯E��Vv��eAH�?Gtn{e�(�����1`��?�"��(�FTT�z �=q�lK��Ҋ�O�ҍB������6 ��3����N��1<v�I�*�"����*�;qg�Vu]��jj���W y�g��ho���~�aw��L��v���W��t;����KHa�Ս�y�m7���=�P�c�@����%^ 3|�l�M�Bu7�:\����0�d����r�ڃ�N��d�̗�` V��A�$��씻�y ����t��l��ܫ�3���CH��S�� X� �tW �VA|�s�;��)d�U A��.� �)wG������(����א^�,�?���W���-���wi��i +䙯P�D��ތtB�>V 6WY!X6�oxj��(�]���$>����.EPk�vp�.�Bby��6`N�#��N8,6�"Xz�{%�������}'��%�#�r�����T�P���{)s��._�dVC��|���\��ȑ���~����VG��I�U�Q;i�~l\8�J����c/�JZ:��O�"`�x��>�V��G{���� +�P��aV�/��Xb���=���.�����H�Y�]Q�d �K*@�Uv�=�m���5�{���{{(� S\QF�vvJM� ᠪ�L�V�G�`�����B)à ��Qc\�2�K? #ldK��9�H_D��-pc���)<�V��fo�--?�}�O'5p��j`��M���B��"�D��6�䢬�%�Xo�( +^C��lB@��>t�Wx��%�3G��]�;�S$gyBebOLX�n�=�}]F}�� �h]�����rbH�x.̪a���_SN/2�{�|mΖ��T8�w�����mR[�]�ڭ�0ڌ�p�ݜf�I��z�*j�����]��U&��ЦS�:B�-�B�O � �}���]��榹%j���霢(��>`�Lme͇���=ƪ���t���Em�z�Lp�B5��!���@�D����\$s�����\�\Α�ā�#����)��SX.XfD4?�n �F��l�����v 6��i&�����닚~V�u��P�L����lRX}��U�Z(r�� +�[:(e0�{��\�����d,=6 +�;�|�h�d]�^��I��lha���J�s%p��=v�|-;��^������^^r����m�ӧ�OL�_��Vx@\������0G��P��c�YF�,�Uq��<��s�H���zz� ��5��8�NJ�%�$�����-�����>5r��`����ҡ +��+�"��I#��r�Pc,��S�-!��Q<���C��� + CU0�(.�Ƙ�|o��d�������c*�b����ί}���KI�)�@-��=>gp����~>Ҋ��(͏W��:�?Yp2=d��z���-���� ����>�8��$���:=�4��×��"��8���8�u]*�=��p�s�]Sc�����4."?�dQ�����O�#���>{.�M�4�^~�� �y�����<=�����+l��t��`�xB��O�ė��~F+��r��C�����^��#��>b����HwӨ�ˇ��ޚ�OK�~8uWu���r���Gw�K zͿ�Ѕ��b�ӗ�A���������6��ʅ�Ҷ���|�O��jc�؋��⋧t)0U+uC[���"�D�y�V #��n뗎o��*W��"I�h�B8��v�j +k(�(�,I�:=3�nLS/�Q]y�;��|:o��9o���M�3���X��4-�R��g%��y�#q�a$�j���Uѓ��.�_d.��endstream endobj -4740 0 obj << +4745 0 obj << /Type /Page -/Contents 4741 0 R -/Resources 4739 0 R +/Contents 4746 0 R +/Resources 4744 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R +/Parent 4718 0 R >> endobj -4742 0 obj << -/D [4740 0 R /XYZ 71.731 729.2652 null] ->> endobj -4743 0 obj << -/D [4740 0 R /XYZ 71.731 675.3027 null] ->> endobj -4744 0 obj << -/D [4740 0 R /XYZ 71.731 633.5244 null] ->> endobj -4745 0 obj << -/D [4740 0 R /XYZ 126.6874 607.721 null] ->> endobj -4746 0 obj << -/D [4740 0 R /XYZ 261.1829 607.721 null] ->> endobj -4747 0 obj << -/D [4740 0 R /XYZ 468.0449 607.721 null] +4747 0 obj << +/D [4745 0 R /XYZ 71.731 729.2652 null] >> endobj 4748 0 obj << -/D [4740 0 R /XYZ 225.8334 594.7696 null] +/D [4745 0 R /XYZ 344.4787 708.3437 null] >> endobj 4749 0 obj << -/D [4740 0 R /XYZ 71.731 581.8182 null] +/D [4745 0 R /XYZ 71.731 690.3114 null] >> endobj 4750 0 obj << -/D [4740 0 R /XYZ 71.731 561.7286 null] +/D [4745 0 R /XYZ 389.061 664.5081 null] >> endobj 4751 0 obj << -/D [4740 0 R /XYZ 527.2229 550.934 null] +/D [4745 0 R /XYZ 118.6881 651.5566 null] >> endobj 4752 0 obj << -/D [4740 0 R /XYZ 147.0485 537.9826 null] +/D [4745 0 R /XYZ 411.7689 651.5566 null] >> endobj 4753 0 obj << -/D [4740 0 R /XYZ 225.1255 537.9826 null] +/D [4745 0 R /XYZ 71.731 631.4671 null] >> endobj 4754 0 obj << -/D [4740 0 R /XYZ 71.731 530.8444 null] +/D [4745 0 R /XYZ 403.6536 607.721 null] >> endobj 4755 0 obj << -/D [4740 0 R /XYZ 153.8487 507.0984 null] +/D [4745 0 R /XYZ 71.731 582.6501 null] >> endobj 4756 0 obj << -/D [4740 0 R /XYZ 385.3055 507.0984 null] +/D [4745 0 R /XYZ 71.731 508.1296 null] >> endobj 4757 0 obj << -/D [4740 0 R /XYZ 132.5823 494.1469 null] +/D [4745 0 R /XYZ 477.6839 484.3836 null] >> endobj 4758 0 obj << -/D [4740 0 R /XYZ 71.731 487.7849 null] +/D [4745 0 R /XYZ 71.731 451.3425 null] >> endobj 4759 0 obj << -/D [4740 0 R /XYZ 488.3922 476.2142 null] +/D [4745 0 R /XYZ 71.731 389.5742 null] >> endobj 4760 0 obj << -/D [4740 0 R /XYZ 71.731 432.3786 null] +/D [4745 0 R /XYZ 71.731 268.4285 null] >> endobj 4761 0 obj << -/D [4740 0 R /XYZ 71.731 432.3786 null] ->> endobj -4762 0 obj << -/D [4740 0 R /XYZ 71.731 382.9045 null] ->> endobj -4763 0 obj << -/D [4740 0 R /XYZ 71.731 349.8635 null] ->> endobj -4764 0 obj << -/D [4740 0 R /XYZ 71.731 280.1251 null] ->> endobj -4765 0 obj << -/D [4740 0 R /XYZ 71.731 249.2409 null] ->> endobj -4766 0 obj << -/D [4740 0 R /XYZ 71.731 218.3567 null] ->> endobj -4767 0 obj << -/D [4740 0 R /XYZ 235.2282 194.6106 null] ->> endobj -4768 0 obj << -/D [4740 0 R /XYZ 71.731 174.5211 null] ->> endobj -4769 0 obj << -/D [4740 0 R /XYZ 282.3949 163.7265 null] ->> endobj -4770 0 obj << -/D [4740 0 R /XYZ 500.3238 163.7265 null] ->> endobj -4771 0 obj << -/D [4740 0 R /XYZ 300.3059 150.775 null] ->> endobj -4772 0 obj << -/D [4740 0 R /XYZ 71.731 137.8236 null] ->> endobj -4773 0 obj << -/D [4740 0 R /XYZ 71.731 114.81 null] ->> endobj -4739 0 obj << -/Font << /F33 1358 0 R /F27 1258 0 R /F35 1709 0 R /F32 1266 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4776 0 obj << -/Length 2537 -/Filter /FlateDecode ->> -stream -xڍY�o�6���/h��z���.�{[,���w�]�d��u�%W�ͥ���7�ʒ�$�|09�3?�C���"�"��G%B��Zd�W�bK�^IfY1�j��z�����-��*\��ߍ��{�"�/���Λ}z�t�\��uBA�o����E�#��~�GQ����ϯ~ZG^$��?���5�a��A��G O�a�"rc�42 -���r��s}C�ߥ��o���+�ݽ~|���ٮ���ξ�M�F}2�K��JJ�gľKb�V7���vM�?��{=y I�_�f��f�Y%�V����ԙn[f�����d�M�!p����Fns�[�D��0��z����du���XW����R�;]�E]�몒wl�ݾhi�}is��!����@ <��?�����?��������'��p����Ӈc�v�VW���ޤ�-�wۗ�����ZC�C):`�����A� -�V(P#$I�D }������S���n�+e�,5�xĪ�̚�i�� �Y4��eY/U�</!��vi�}3c.�86�qb��2xWh;�u�^;#�ާ��f�K�CQ]b�y �s)U��E����Ȓ��H]�&��ӆ��nM�@��"��#�hT�]�vE˻����V�R���b��іMڜA����Xȥ/<���KF��T3�Y & 3�&��$�1OQ���m87r=��(I�6}��c�7�t�Dq`��)�d&��qʧ;�\�˜�������mВ��$�~z(8{XJ�|7�w��P��u�"�Q��Λw��fMq�x���Vwg�ޚ���W�&4��+ �� oμϺ*=�f��Vh�G4��� ���Y���~&�B��b@���P3xa�Es�����0��D���`b�̚Ǒ>#V��A^��(�҈���Mݑ�a�ޞ-ڸ�� �BS��!lFQb��i��O�C���ni%mx8T�hmŜe$��$����w�ҙ4��#������� F�K7cǞ~1%eu�鈝=8�8"fӐ�����6 ����#�Q��`H8Dń�#��q� o��/L<ϥ�4_���>�����=�|�/K\�z��t�헔�"/�4(�P��$چ)�}1f�Gȡ+�����>�0��z�X -�D�2�P!h�Ƕ����7#�@�$|?���[�1F5�4ڹ0�6��n.'�\-v�f,��5�p\Ɖ�l&�c+��D���6�+fs�����ѿ�Ec%�CjIփn�R%/c��_��j��P��݀���"�}���\'�S�x��ҍ��,�,�& Cz"�v�����Nj%�>�lc4�1] �G�D����?)\�@���y翧�yϜ��k!䚉��2���S�=.UV�9�n����#���%����#�d� �,Q����8kVK�<m�3�7�Ut̵��2�;l�:]��[�?Ɩ/Ǻ��j~����E���K ʸ1� vʕ�c[,�`��������d�����V�]hL�qS;)�BeA�g��k�D��Ո����>�F�2b��1t�*��֬,W�����pR�T��1m:"!2�-ad �P�d{Z9�����5����� -E�<���ږ72E��p� ]��R�C�:��͐K{�h7�gQm�r��J8����B* -�av�h�%�cn-m|9�bm0M��`<��@����E���Ļ�1���bVNN8�0go�uV���U�a�<Z��S B��I�6�$�m�ad���'��@�LN%����� -x涉7�-?�n+�Ƽ��T�%T�Vp�G�QT���\����˯w�K��˟Zq|�<�:1wH>Ec$����pg�o\�{�MIpr�j�b<`d/��8\�5E�� ��=�O��-W���zVsps2D��3l�I^���0y6ˏ��L��Ky~�ȗ����~���P��\���,RJ�p �m ���^_J'�! -�N�I`���.����s���zb�Y�S|CFS_ -ZY/c����ض���+�1���m���q�3�K�?�����DΑ��M�J�ؤN��p�c["�iQ�`S��|����db?�ڷ��>� ��Q��5�;b$R=���V��8�;�(*+�k%�%eA�o��,�^\�}� m(���s>���0"�\��|hcԭ�ڕ��+"�;0� -���3_�����ޕC�����.iL&�-�N�*w�K���R@&S�}Ixg��~�F�%�ã��By�7��VA�Q��� B�e���1����|F�ִ��T4��oMn�#�=����D5��f�� �8��[e�@��b��D:PHMi$$���&�h����k����EU�1<�o��m����aUw<ާ<SG�ڶ�h�5l����/���0M��O�$�<R�s��.�|<�G����W�k}V.�6:�3=�g,�Y���%r��R����_c����Cz?���]��Ô��b�N~�/A3�D�i[�S%=���X��>���f�b��X.4I"��'�́��x�endstream -endobj -4775 0 obj << -/Type /Page -/Contents 4776 0 R -/Resources 4774 0 R -/MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R +/D [4745 0 R /XYZ 71.731 245.5144 null] >> endobj -4777 0 obj << -/D [4775 0 R /XYZ 71.731 729.2652 null] ->> endobj -4778 0 obj << -/D [4775 0 R /XYZ 71.731 741.2204 null] ->> endobj -4779 0 obj << -/D [4775 0 R /XYZ 71.731 663.2733 null] ->> endobj -4780 0 obj << -/D [4775 0 R /XYZ 262.7133 650.4608 null] ->> endobj -4781 0 obj << -/D [4775 0 R /XYZ 71.731 625.3899 null] ->> endobj -4782 0 obj << -/D [4775 0 R /XYZ 71.731 604.547 null] ->> endobj -4783 0 obj << -/D [4775 0 R /XYZ 462.6651 592.9763 null] ->> endobj -4784 0 obj << -/D [4775 0 R /XYZ 71.731 572.8868 null] ->> endobj -4785 0 obj << -/D [4775 0 R /XYZ 86.8712 536.1893 null] ->> endobj -4786 0 obj << -/D [4775 0 R /XYZ 71.731 510.2864 null] ->> endobj -4787 0 obj << -/D [4775 0 R /XYZ 71.731 485.2155 null] ->> endobj -4788 0 obj << -/D [4775 0 R /XYZ 71.731 464.3727 null] ->> endobj -4789 0 obj << -/D [4775 0 R /XYZ 71.731 419.761 null] ->> endobj -4790 0 obj << -/D [4775 0 R /XYZ 71.731 408.8668 null] ->> endobj -4791 0 obj << -/D [4775 0 R /XYZ 71.731 403.8855 null] ->> endobj -4792 0 obj << -/D [4775 0 R /XYZ 81.6937 381.071 null] ->> endobj -4793 0 obj << -/D [4775 0 R /XYZ 186.3981 368.1196 null] ->> endobj -4794 0 obj << -/D [4775 0 R /XYZ 134.4201 355.1681 null] ->> endobj -4795 0 obj << -/D [4775 0 R /XYZ 197.7326 355.1681 null] ->> endobj -4796 0 obj << -/D [4775 0 R /XYZ 71.731 335.0785 null] ->> endobj -4797 0 obj << -/D [4775 0 R /XYZ 301.2456 324.2839 null] ->> endobj -4798 0 obj << -/D [4775 0 R /XYZ 172.7839 311.3325 null] ->> endobj -4799 0 obj << -/D [4775 0 R /XYZ 494.944 311.3325 null] ->> endobj -4800 0 obj << -/D [4775 0 R /XYZ 71.731 283.2728 null] ->> endobj -4801 0 obj << -/D [4775 0 R /XYZ 81.6937 267.4969 null] ->> endobj -4802 0 obj << -/D [4775 0 R /XYZ 187.8367 254.5455 null] ->> endobj -4803 0 obj << -/D [4775 0 R /XYZ 236.9551 228.6426 null] ->> endobj -4804 0 obj << -/D [4775 0 R /XYZ 81.6937 215.6912 null] ->> endobj -4805 0 obj << -/D [4775 0 R /XYZ 71.731 195.6016 null] ->> endobj -1960 0 obj << -/D [4775 0 R /XYZ 71.731 151.766 null] ->> endobj -4774 0 obj << -/Font << /F33 1358 0 R /F35 1709 0 R /F27 1258 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4808 0 obj << -/Length 2760 -/Filter /FlateDecode ->> -stream -xڵk�۸�{~��8�Qo��+�AR�@���hph���h�������;/ʖכK?����p8�'�>��E��4�O�{A��~�/�0��gJH6B��$����m.r/O�dq�[D~�Q�/�0�Xe�����}L����L<������/��3�n��b�J��u��go�0���U��걄A�P��8B�a��K�4%/B���J*@�?�2�'��4�D�B+zq�E��vB�_D��0͒���<��Y�U�b�$�O� rF����$A�{$���\D��C_ya��, ���:��U�/u��IA��o�h�!��Fep�~��xI�&���`��&�r� -Az;��`�ڱ*yr+��mz[����/G4/mm�AW�3�p0L4����f�U�/ۑ�@��,+�Z����l�A��Tf[�yV7%�����ĠB<e�' ����[��(]�-��y�K�ٚ�a�aF�d�[P�{��3�A�$8�;a1�dw���Z¡q��\d�ځH�|�q�lc��о�W^1��8�R��D��V>�tfs!NL�)�G���k:|�W�#�q/$�D�e����ȹ~����ӥ)�'͟� �����ӥ���2Q��q�K��Q�{a��/"U�M>>�[���0=�mzK%P�9��4f�}��G�XRV -� ��݅)��8_vc��������-��X����1�Z8v���t߃��=����k؆�`.恌/�An�W�n�V��"$��!��*�sX��%y��\�����x�ύ��n��I͚1m����#v߭�ψ���v�聢����n!L#k}�hvhڢ�����۟�m3���}�����Q/a�¹AF�/ H��E��|#�W���cvt����'.V>tXf�B>��[PRd�Ϊ.x�cQ#<��b=�� � �CXJ1�}� �-s`;�Ȥ���p�4d� -r]prGq$Iw�jX3��ɶc�s�6w~1BǑ%Y���{�ÁS�R�I���)� ��3�����U�����l9MITL� q�0���|S�BI -���R��>Q����w�xd�3���bC���� -�r� ��?���@�h����#�Ԧޒ�p�B9Zh��3�gs�[�r �Lj�Q(:Ig�6�U/K�qq&����������q -`}cl �(z�9�k�Z���i�S���{!M��2�Br���|/"[[3� ��c{Ҁ+�o��4��'�M�#�C��r�!�´h�´ph�, ��A<kE[c��n�^�@)�� -��XC���iNZ����l?\�;��S:�? ��X��./d���~�����7�2�x��z`���]A�_MW C�]=fu?��_����`�貶 �Ӄ��y� ���z�Z�,Lj�ێ1���ʨ܅f�H��:.���[�n�<�IH�:�H��*[��rξ�����/��.l�m�8���G0����w��:� V��);�_�Y���D�sQ���@*����J4X�ǩ��p�ޱ��F1T~�##���?r���jY��p�dn���M�h��arn���2k'xot�E���5� ��-c�T�EkV�was�Y��I�%�X�|�7s�XvU���(x��K��%B{��n�� -�Sۋ.���\��7���ܾq��u�'�K�C�}�Ll8���~�/�B[��QZ�ճ-$�]y�EM-�Es�H��* �z*�[�W�<�M��; u�5�PP�,?�EJ� � ��2�: -pZ˱�-�24 -�h�9 aX�~bv��V�MA��b�y�y'hl��<hi��bw�5�f�}c�G3H�pb�' >��o8{��X�!T=������&���+���H�bQ�-]sC͉Z�VO��/ah{�bqiKƘ��}ږ�h�b�Rsf�Ʈa2���n���6��� ��,��G���ȷP�[�/��@��xJ���)�SQ���A���5g��se!�3���P�������'D�;��O�_e��Z�lo1����A�y~ƯJ��u)����;1�3�4�O�VFa|��.�5H�K;9@^�%D&R �ؙs�� ���H�����R��e)��5X����s��ݯ)�N���.^&��aߛz�͂X�i��ED?��z������qCC�hSEJVW�UKa"�w�x�OJ��?J� 薉��O��B�0菦���Ag� -8�(6��J�i���kޱ��r��e�<��g�)��>l7���cB����b�:Гby�����r�pE(�� �T���I�L�T�#g�4ЕS���;�ۂ�����c.�@�6��a5� �JW2@w���J� 2d+��v�N#u�uvΙ\�vVo+�Z)"O6Ǔ�!}t�+�(��q�cGA�̬8]Vm�I��%/�� +����Z'��Y��f۷[,;Ly�w���a���������f�?��rO�+�+��������ǖ����_���]3��rz�y���ys*9I"�*��j)�Miݫ���Q�n4�]�d�������\hJj"4�AyP��B��w�J�FB �,8N���V%�ځ�y����.������!|�q�����l��gp���Qc��j���Ma����D���L՛�i������ů�?��{�y�J��zA����8�<_��� w˃'༱���Mendstream -endobj -4807 0 obj << -/Type /Page -/Contents 4808 0 R -/Resources 4806 0 R -/MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R ->> endobj -4809 0 obj << -/D [4807 0 R /XYZ 71.731 729.2652 null] ->> endobj -4810 0 obj << -/D [4807 0 R /XYZ 71.731 741.2204 null] ->> endobj -950 0 obj << -/D [4807 0 R /XYZ 402.8496 705.7477 null] ->> endobj -4811 0 obj << -/D [4807 0 R /XYZ 71.731 701.9174 null] ->> endobj -4812 0 obj << -/D [4807 0 R /XYZ 118.5554 659.727 null] ->> endobj -4813 0 obj << -/D [4807 0 R /XYZ 71.731 555.34 null] ->> endobj -4814 0 obj << -/D [4807 0 R /XYZ 271.0004 542.4881 null] ->> endobj -4815 0 obj << -/D [4807 0 R /XYZ 344.4787 516.5853 null] ->> endobj -4816 0 obj << -/D [4807 0 R /XYZ 71.731 498.553 null] ->> endobj -4817 0 obj << -/D [4807 0 R /XYZ 389.061 472.7497 null] ->> endobj -4818 0 obj << -/D [4807 0 R /XYZ 118.6881 459.7982 null] ->> endobj -4819 0 obj << -/D [4807 0 R /XYZ 411.7689 459.7982 null] ->> endobj -4820 0 obj << -/D [4807 0 R /XYZ 71.731 439.7087 null] ->> endobj -4821 0 obj << -/D [4807 0 R /XYZ 403.6536 415.9626 null] ->> endobj -4822 0 obj << -/D [4807 0 R /XYZ 71.731 390.8917 null] ->> endobj -4823 0 obj << -/D [4807 0 R /XYZ 71.731 316.3712 null] ->> endobj -4824 0 obj << -/D [4807 0 R /XYZ 477.6839 292.6251 null] ->> endobj -4825 0 obj << -/D [4807 0 R /XYZ 71.731 259.5841 null] ->> endobj -4826 0 obj << -/D [4807 0 R /XYZ 71.731 197.8158 null] ->> endobj -4806 0 obj << -/Font << /F33 1358 0 R /F23 1250 0 R /F44 2110 0 R /F27 1258 0 R /F35 1709 0 R >> +4744 0 obj << +/Font << /F33 1358 0 R /F27 1258 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4829 0 obj << -/Length 1491 +4764 0 obj << +/Length 1236 /Filter /FlateDecode >> stream -xڕWmo�6��_aAq7ĊeY~鰢�],��a��� �YW��z��>R�}NrM��h�")�|��^��K8K,a��X�^�9 ��ޝp��;��rqr�V/cY��b�EA�D$2/!K%O�E����:�v����f1��U�vf���zE���ꫮ�|��◓7�ѵ �R��h|����d�p� �@�b�[�������yG���=Q}�'�����X5��y���+����훼.�) ���*�y�R�,���%��]^8�� TU�"YҚ�r3!�ÄA|!����1��8;���)n���^ -i�#LKș��| b�fֈq�A����-��y����F�N{ -�xO�ؐF�l�XX�hg�i�f��6��h�O��zA��2`��2��d�qk�+�L$Y�M�����/�f[)�Ya6g� 7A�&Et7����4g�*?�U��e����[����&5�#�sT���F'LU������ٽ�9h�!�xħ�#��c����#�"oۉ�fOU�����c�u�2�r]qN_y]���9p%e�e٨������s9�Z�:9?��sC�*w�<��/�� ��彞6C�~��rF�3��Q�N����vH��� ��t�5R5XZ����4�l�w��.v_9L&p��,H2������E���cYJ�Q�r����,՝��w��чaGG����#�b�e&΄L�e�EIH��<�|45��-�(�@��S�5���c@�$��.�sEw 1=}���HK�-q���L�H�"G;��P>�7���J �Q�C������]%���|���� f���k�X$��G�ֆe��EM��<�c\oL_��tx���t0�����~����=fsq���W��@�$�6V����X ^j�$�Vaz[���@v6� �[U���;՝���m��A�]���r��65q,���l�c��[ws@��t�*r���e�7)��Un$&�k���KsL�=J!<!}�Da���}������T���*9��5m�o*E_���:ߨ��m4��Yr���.�ٷ �HS���y��/]{�*�P)�z��-Q;@k�bVط ��R��r8��������z��_mu8����o<�j�X�k탌�Q ���Kۯ��?��"f�V{:��;�B���OOR���ݚ(�{ f��?`O�xa�� -�T�9�$�Yh}�:���R�m �F��YBs ��v[���%��L��!d��a+�Q�H ៓�`��V�6�����i��v�O뷺�@�+S;wX�������K��յ-���e�.w� ز�kđX� L6DX6�y�&�xs�j��S�7#�!NB�mXQ�6 ⒙��L�cG���K��jb7��e�N�8�U;�ñ������u�mۧ;}����\0�Cr��(K���6�I�Rg�����<�'C��<�FKx�L|�7���dI�endstream +xڍVmo�6��_a���S,��K?��뀥p�>lC᜕;!�u���_?R�/i�ukP��(��>:�d�'�R�R�G�BF%��"K����B�ˆ}6�^o/.�k�Ԣ.T�lo�<+��u��Z���*ٶ�o�q��j�L���o�0��}sÞ���7�u���/���F��� ��;{=�P�*\ΚUXh��\�t�����th&���b�$�!����D�@��W��C3��������M'���2e�vMZ3�go� l߸���v�!|��'��&����Ί�������iv�@��v:��J�F�������'6K� ��%��2i�͋��#�������)/>�|�W~Z�A�v<�m���5)�+�T�X�fr��v��0�RS�2)*)T�i�I���E]VE"E]+��6�9�N�ovb�w��s�M!+��J�cL'2D���ΤЦ�Z +�</b�_�Џq@�@���<���E�{6������(tI�>B�A�������f�(Ti�[ws:�fE]b�Z�\J�8����>_�����3�8R��8��HB��fP:��f險@����}�#6�ѷ\5��������ږ<*u#q^�6_�б����\}�nn�����Շw��������s�VAo=�g�����s�i{�N�%=����qR������_�^pC������,� 0��d�S�)�-�\����F�Q�'H7��K�T�����\gBW�����t|��Bd�T?dUS��R�C���-� +@?��U5QX�>w�Y������mX�F�o9`NUL�@�Ԝ���M�Ӷ��&XA��\� �*&��Slw$�蚹]���f��8w�s�,�<!�!XX�U�_���[��\n��GT:X$����|4��2�P�ā�$&Jb�B��*�8Lv�tI���֨ݹ�@<|#v��|ơn�PWW �w��?�pȭ�0�����L�8�ۮ��a{P�[������y)>M(8(#`ٖLT&JK�kT�Ժi%SX�)�IG�z�cw�hC��O7�:x�Mp-�W������o��Vx�� �G�TEz�����P�¡Ȇ@5�< �@�5ن��Y}���7�'&�P��<ҥ��X����w4�؈�(f�i&��8�D�H�<�p+Ⱦ]�x��T,�G�����}��cxyyy�n��}�<�Cp����Wm@xBo�%y%*Y�?�1����oQ���� ˮ���|&�?���|endstream endobj -4828 0 obj << +4763 0 obj << /Type /Page -/Contents 4829 0 R -/Resources 4827 0 R +/Contents 4764 0 R +/Resources 4762 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4720 0 R +/Parent 4718 0 R >> endobj -4830 0 obj << -/D [4828 0 R /XYZ 71.731 729.2652 null] +4765 0 obj << +/D [4763 0 R /XYZ 71.731 729.2652 null] >> endobj -4831 0 obj << -/D [4828 0 R /XYZ 71.731 525.8631 null] +4766 0 obj << +/D [4763 0 R /XYZ 71.731 693.2354 null] >> endobj -4832 0 obj << -/D [4828 0 R /XYZ 118.5554 487.2991 null] +4767 0 obj << +/D [4763 0 R /XYZ 118.5554 654.6714 null] >> endobj -4833 0 obj << -/D [4828 0 R /XYZ 211.9919 478.8347 null] +4768 0 obj << +/D [4763 0 R /XYZ 211.9919 646.207 null] >> endobj -4834 0 obj << -/D [4828 0 R /XYZ 71.731 433.7095 null] +4769 0 obj << +/D [4763 0 R /XYZ 71.731 601.0818 null] >> endobj 1961 0 obj << -/D [4828 0 R /XYZ 71.731 406.8653 null] +/D [4763 0 R /XYZ 71.731 574.2377 null] >> endobj 954 0 obj << -/D [4828 0 R /XYZ 449.6052 363.7679 null] +/D [4763 0 R /XYZ 449.6052 531.1402 null] >> endobj -4835 0 obj << -/D [4828 0 R /XYZ 71.731 351.3299 null] +4770 0 obj << +/D [4763 0 R /XYZ 71.731 518.7022 null] >> endobj -4836 0 obj << -/D [4828 0 R /XYZ 142.9631 316.3058 null] +4771 0 obj << +/D [4763 0 R /XYZ 120.1486 483.6782 null] >> endobj -4827 0 obj << -/Font << /F33 1358 0 R /F27 1258 0 R /F35 1709 0 R /F23 1250 0 R /F44 2110 0 R >> +4762 0 obj << +/Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R /F44 2110 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4839 0 obj << +4774 0 obj << /Length 2440 /Filter /FlateDecode >> stream -xڝk������8``�X���O������vq7EQ�±��X�2����/)RN���\��E�ŧ#W��U"E��2��H���`u��Oo$��q,T$cX,�n#��,U�j{������OJ�T �(�V��IT��������]ۚ���m�*I��=�7i��6*X�q����6��ڡj���� �&�Ld1���jrG����ꁍL)��6�8V�62Z�o�q��5�0f��,���_|?�S�uN���V�mg��9���L֟�nlc��NfA���K8פ2p"F^�s>'<6T*�E2t}�c$Q�U��U "��Mc���E^>T�lI���P2 -ٔawj�!�F>M�J�"2��mHE�r,��NQY��y�Ak��hb��U -Lb�G�Le�!��d����V����TΒ���nȹ<.�� Z������w�D+�����y�^���S>��D�گ;����) 8Yt��[�����n+�@(�������O�R o��G�}�U�X;wDn;�9x�I_X�M��plеǦ*��/�lZ�3k�9����"�6��E��Ƕ�� ��>\<�� - *�P��������Hݽ�xH�c������<HFZ���iPؙU�§9љi뜗��Ъ�O �;&b���'�qG�o>�OYP�HD!8af"Ͳ�L9m��(Q^��3^x�_}�@����H���� -x�WH5lF�F���Wُ.�Y�`���"�`yI���em��Z0��+Rԝ���^V B!�+�zs|@+�8v3����1yQ��w!�9z\J�Z ��m�\����/F@�Kk�)%��O w���\�����NN�#��,-mQ���]�%�=�=�z�Q�t�vi�hj{�� ),S�ks`9iG�.b�a0 ���dd�ۄA�<_*2a����wf(v�C�; C[�f��B��:aE�*������\M�B�n,?b��+� -�`xߥ����ԇ�T:�|�S�������&��}��mR���j�e���-ǚꎊC.1G.����(\C��b�@ȝ����e�wwH`�LA�P��5P8�f0�)�� -���A�| ̭��d������x��/:����^���B@ ��{o �����0#88��v��9i��ds�8G��'�oK��5.S��6�[Xa�����j8�q�Ekk�F)\U��E"���� ���M+}X�iK�w<�f�W���� -�'C0Ӣ�Ռ�W>�Gf౫��e�M~������`��S+�tZ�P�@�12۪�:���W��L$(I�o3N���8�a��GYuP~0�������8y�͊�J��4)9��B-���s�����)�4��vxj� �k���x��;������ ӱ^$Q�`��t�����fS���z*�ռ�ѽ���>�� -řC=�,�u���+�[坘��1#������4���E��?TЯ�M3���*Դ�#�.Gq�!�YK��1�®��j�v7�UΛ�\�z�d ���e(��ƿ殼��ByW=�2,|�x�He`�a"O�w��>q��"��+�UU0���G�mB���{�(���GL�~g/�s@��5e��c8�l<�.��Hp�f�G��&����*��(���M��$�:g@.�������쩮'�D$)T��7�Ɓб��mx�A��%�h�4�����A:��5��FQ�3�I0|=a@��Cv~Q�3�����-���n���%�5������V�o���6z�~�o�Lt~n���6����5N�J��W.�Yr��XR����Â�LD��'�c[��9��`G6�x�d���i���/�C�r�$�[ ���>����~�ן���͞$�όO���91.Ʀ����aҒ� =x��f���D°A oh�b�+���w�6�L�M.?|�����<@Ҟ�~s &���.v8c��G����_0e*g��4g�Ϝih�u�˜_6�?��m9b>�To��@'0��3��Cg���u�BJ�QP�HĐ���yu�9�2p3 -�@�祷���Ir:�^Oz�1��X��ũ���G�c��zFtG��Р� ~��q>�'�H)�!]�4�{��5��a�/<�s�i&b����sR��� -�x� -��H��Pg���7Co'��4�ӗiĠ9��s7�iC�:b�0qW D�[]�����]X�ym�7�c� �'ND]�{G����o�Z"�/�[C����"h��q_hoh>|�dj��/�Rn��=�aˉ�a@��5a��[��c�\�a���͇oZz�IAࡳ�ً�mY��B������N�����M!vi��WW��.�C�xt�� ^��u�����4p-�s�5�&$鷚0�>0^�z�$�+Z_9RP�e�M���Y87��� �Y:�endstream +xڝk�ܸ�{~�8 3��ƒ��~J�\�^�w[E�(<�fƈm~�f��K�������(��(>�r�?�J�H4��L�8R��y�����d�0���d���m���*^m/�����I� +D����0� +�P:^ݗ�\��:Ӗշ�V%������M��� +�v�od���p�v����_���*Y2�m�ڂ�DǑcy�`#��`���--��FE뇍�����z7r 4�-��i�������iU�Ø��̸���6̀��d��@�ֶ� ˘�d�:���s�*'b�ui�8��R�,��;蓝z ����z�HI�hZ��5-��*�`K�L��QȦ#��P���7�if��T���wnC�(ʔc��t��P��� Z��G3�R`;=�Pd*��y'S|�8u��D&�r�$L�vC����p�]m��w��X��� ����[W�zbO��vEk��-8��$�dѽ�%�����@��F0o(����ye%�?b��+�*��i�#r����S���jo*�/�S��=�U|f�فY;�A����O�ټ�Xb������c��pY��߂(��@C ?�v�#u�_�!ɏ���ނg�� i��ΧAagV +�r�Dg��&/ ��U�@wL�8��O�. �|����ґ�Bp�(�D�e��r&�^PQ����g��,����)!�)�@+���D�(�j،��xy�/�]����6:�D�i�%mf���y�k��V�0�"Ƞ�L��a +\�֛�Z!Pǩ��9�H�����ǥ���I�]��e�Q���g���f�S���pGK..��~����:K���-*�g�K�ra�G�'�`z����.-Mm���?!�e�w],g�H�Y�=��%����Ly�0���K�A"����Ό�tv�q�ʝ��߀X(R�"̢�?����0`���P�k���#6 +�������]:�`o�N}�Υ��G�3�i]�p0�Ijs(�W��&���_�n����ck��XS�Qq�%�����v@�kH��Z��S���Ծl!��� l���O[�cjGӛ�h�0Z��T�G�\�+ N��ʌWy�N���z{�˼��/B(��"Bb,��;Ufǘ�����6g-`��l p��~b��4�?�2�lرE��;�y�Ɠ�FZt��n��U�|\$r!�srm���д҇%@���{�Sqpi&ܹ����Ѫ�~r43-:]�(�����<���|�̳� +����zn�Nˡj�4fBf[�^'������F��S�c� Ni0��QV=���8�,� �?��i�"�R.= MJ���PK�F��9|��ƙY��T���;>u�r���@q��<����_XHY���X/��]0� Q:�G��a��C`B=�j^��^\C��� +řC=�,������k坘��aF2�ɥ�i��!����_oL;���+�t�#��Gq�!6��k��?��a7L�������*�Mr�y�E2��Ɍ2@{�?sW^ +ZΡ����c>z��^�20�0��荻�Y��8�b����Ъ*��vL���6�� c�=a�Q�#��C�����9����2`��1�6\�L$8��7�G��*����*��(������$�:g@.�\������.'�D$)T��7�Ɓб��m|�A��%�h�4���#�A:��5��`��Hgh�`�z�0�Fo��,��� �����/���n���%�5������V�o���:z�~���Lt~n���6���љ'v%�e���,9�f,�{�z}�a��U&��ߓر-���b�#�z������˴�q�۱�8{í�QL�*�����g��w�' ��3�/�t�S[�}��0iɿ-����YݴF�� ���e����������|371��������z��I{fv0��@L���]�pƨ����{_0e*g��4g�Ϝih�u�˜~�l4�?�5��0K����c������3�h ��:z!%\)(U$b�\L���j��LCC�-����v}�m����ד?�� ���8�4���s,ҫgDw� + ����S珷�z��$���u�Kú'�^R=֟��cHq+2�D��\y�;��?zE�g�Q�l$� +G����⛡�ns�e1hN$����aZ�д��&�u�K�౽!4߾+� ���h=w�9��DԹ�w�mO�v�%"���5,@=N.�ֿ�B{E���&S�w��r�'Hh[NL�z��h��Y��M'"����T3y��'��&���67��c����Яv�u��\O7�عl�ts]�z����:�A<_�U9��b� =�i�ZZ��׀����Մ)�����l/h\,h}q�HA �Y6sgϞ��!-�/X���endstream endobj -4838 0 obj << +4773 0 obj << /Type /Page -/Contents 4839 0 R -/Resources 4837 0 R +/Contents 4774 0 R +/Resources 4772 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R -/Annots [ 4846 0 R 4847 0 R ] +/Parent 4718 0 R +/Annots [ 4781 0 R 4782 0 R ] >> endobj -4846 0 obj << +4781 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [234.5514 546.7459 281.8882 557.6498] /Subtype /Link /A << /S /GoTo /D (installation) >> >> endobj -4847 0 obj << +4782 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [354.758 546.7459 402.0948 557.6498] /Subtype /Link /A << /S /GoTo /D (configuration) >> >> endobj -4840 0 obj << -/D [4838 0 R /XYZ 71.731 729.2652 null] +4775 0 obj << +/D [4773 0 R /XYZ 71.731 729.2652 null] >> endobj 1962 0 obj << -/D [4838 0 R /XYZ 71.731 718.3063 null] +/D [4773 0 R /XYZ 71.731 718.3063 null] >> endobj 958 0 obj << -/D [4838 0 R /XYZ 358.6963 703.236 null] +/D [4773 0 R /XYZ 358.6963 703.236 null] >> endobj -4841 0 obj << -/D [4838 0 R /XYZ 71.731 681.8546 null] +4776 0 obj << +/D [4773 0 R /XYZ 71.731 681.8546 null] >> endobj 1963 0 obj << -/D [4838 0 R /XYZ 71.731 658.3912 null] +/D [4773 0 R /XYZ 71.731 658.3912 null] >> endobj 962 0 obj << -/D [4838 0 R /XYZ 233.1753 615.2938 null] +/D [4773 0 R /XYZ 233.1753 615.2938 null] >> endobj -4842 0 obj << -/D [4838 0 R /XYZ 71.731 606.4709 null] +4777 0 obj << +/D [4773 0 R /XYZ 71.731 606.4709 null] >> endobj -4843 0 obj << -/D [4838 0 R /XYZ 146.6603 593.7346 null] +4778 0 obj << +/D [4773 0 R /XYZ 146.6603 593.7346 null] >> endobj -4844 0 obj << -/D [4838 0 R /XYZ 441.3262 580.7832 null] +4779 0 obj << +/D [4773 0 R /XYZ 441.3262 580.7832 null] >> endobj -4845 0 obj << -/D [4838 0 R /XYZ 71.731 560.6936 null] +4780 0 obj << +/D [4773 0 R /XYZ 71.731 560.6936 null] >> endobj -4848 0 obj << -/D [4838 0 R /XYZ 82.1385 523.9961 null] +4783 0 obj << +/D [4773 0 R /XYZ 82.1385 523.9961 null] >> endobj -4849 0 obj << -/D [4838 0 R /XYZ 71.731 490.9551 null] +4784 0 obj << +/D [4773 0 R /XYZ 71.731 490.9551 null] >> endobj -4850 0 obj << -/D [4838 0 R /XYZ 430.9687 467.2091 null] +4785 0 obj << +/D [4773 0 R /XYZ 430.9687 467.2091 null] >> endobj -4851 0 obj << -/D [4838 0 R /XYZ 71.731 454.2576 null] +4786 0 obj << +/D [4773 0 R /XYZ 71.731 454.2576 null] >> endobj -4852 0 obj << -/D [4838 0 R /XYZ 468.5487 428.3548 null] +4787 0 obj << +/D [4773 0 R /XYZ 468.5487 428.3548 null] >> endobj 1964 0 obj << -/D [4838 0 R /XYZ 71.731 421.2166 null] +/D [4773 0 R /XYZ 71.731 421.2166 null] >> endobj 966 0 obj << -/D [4838 0 R /XYZ 121.4833 355.7391 null] +/D [4773 0 R /XYZ 121.4833 355.7391 null] >> endobj -4853 0 obj << -/D [4838 0 R /XYZ 71.731 343.3011 null] +4788 0 obj << +/D [4773 0 R /XYZ 71.731 343.3011 null] >> endobj -4854 0 obj << -/D [4838 0 R /XYZ 149.514 334.1799 null] +4789 0 obj << +/D [4773 0 R /XYZ 149.514 334.1799 null] >> endobj -4855 0 obj << -/D [4838 0 R /XYZ 252.2636 334.1799 null] +4790 0 obj << +/D [4773 0 R /XYZ 252.2636 334.1799 null] >> endobj -4856 0 obj << -/D [4838 0 R /XYZ 71.731 309.109 null] +4791 0 obj << +/D [4773 0 R /XYZ 71.731 309.109 null] >> endobj -4857 0 obj << -/D [4838 0 R /XYZ 71.731 309.109 null] +4792 0 obj << +/D [4773 0 R /XYZ 71.731 309.109 null] >> endobj 1965 0 obj << -/D [4838 0 R /XYZ 71.731 241.641 null] +/D [4773 0 R /XYZ 71.731 241.641 null] >> endobj 970 0 obj << -/D [4838 0 R /XYZ 207.49 175.3874 null] +/D [4773 0 R /XYZ 207.49 175.3874 null] >> endobj -4858 0 obj << -/D [4838 0 R /XYZ 71.731 166.5646 null] +4793 0 obj << +/D [4773 0 R /XYZ 71.731 166.5646 null] >> endobj -4859 0 obj << -/D [4838 0 R /XYZ 71.731 151.6714 null] +4794 0 obj << +/D [4773 0 R /XYZ 71.731 151.6714 null] >> endobj -4860 0 obj << -/D [4838 0 R /XYZ 71.731 146.6901 null] +4795 0 obj << +/D [4773 0 R /XYZ 71.731 146.6901 null] >> endobj -4861 0 obj << -/D [4838 0 R /XYZ 89.6638 125.9328 null] +4796 0 obj << +/D [4773 0 R /XYZ 89.6638 125.9328 null] >> endobj -4862 0 obj << -/D [4838 0 R /XYZ 89.6638 100.03 null] +4797 0 obj << +/D [4773 0 R /XYZ 89.6638 100.03 null] >> endobj -4863 0 obj << -/D [4838 0 R /XYZ 71.731 97.8731 null] +4798 0 obj << +/D [4773 0 R /XYZ 71.731 97.8731 null] >> endobj -4837 0 obj << +4772 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F32 1266 0 R /F60 2636 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4867 0 obj << -/Length 1743 +4801 0 obj << +/Length 1744 /Filter /FlateDecode >> stream @@ -20436,210 +20247,210 @@ p> &�+ed+%��2�9�����c��'w�P�Z'�O�����#�jS.}C��5H��m�'6+����*�w���i7�Yv�����F����.d��m�hk����_�W��AY⥒�C�oD�ղ][z�yz�/dken���JAhZ������Jd�ǃ��9��jYY<l���J�*i� #�!�`Ud���NuͶV��-ǯ7�l_�K�X7R(Qb�!���a���\d�C���� @{4���H��)��Q�����s�-s�l�x�n���=����5����@���$A������l�;�P�hE?[�(�&f�#�[�B����(���)�����qje" ��t��#c- U��-�f��{�@�x��"^�m:�Π�����X��ն�<[��LSAG���27�f%EE�ΰn�}{�V��i`@0q�XX}���гD�w�H�ёߙ�lp1�q&��&٫;�� ��sp ����$^��b��;ws� �c�Nk�����d��Z�Z�j ��W���`�8�i�\~�yG�k<��k���0�!d��$�)�A �;�4 -�:����-R��d�9��?�v�<`�Sv��y���J�`�J�oǞ��^�r(Kg+^.ŶK�[gFu����ӱiJmq�eg|2&]a8��&uת8L��m4$[J<�x/���a[��>��8�����M�E�%��9���� ��E=�VR���g��?�endstream +�:����-R��d�9��?�v�<`�Sv��y���J�`�J�oǞ��^�r(Kg+^.ŶK�[gFu����ӱiJmq�eg|2&]a8��&uת8L��m4$[J<�x/���a[��>��8�����M�E�%��9���� ��E=�VR<������Sؚendstream endobj -4866 0 obj << +4800 0 obj << /Type /Page -/Contents 4867 0 R -/Resources 4865 0 R +/Contents 4801 0 R +/Resources 4799 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R +/Parent 4718 0 R >> endobj -4868 0 obj << -/D [4866 0 R /XYZ 71.731 729.2652 null] +4802 0 obj << +/D [4800 0 R /XYZ 71.731 729.2652 null] >> endobj -4869 0 obj << -/D [4866 0 R /XYZ 89.6638 708.3437 null] +4803 0 obj << +/D [4800 0 R /XYZ 89.6638 708.3437 null] >> endobj 1966 0 obj << -/D [4866 0 R /XYZ 71.731 688.2541 null] +/D [4800 0 R /XYZ 71.731 688.2541 null] >> endobj 974 0 obj << -/D [4866 0 R /XYZ 370.3296 645.1566 null] +/D [4800 0 R /XYZ 370.3296 645.1566 null] >> endobj -4870 0 obj << -/D [4866 0 R /XYZ 71.731 632.7186 null] +4804 0 obj << +/D [4800 0 R /XYZ 71.731 632.7186 null] >> endobj -4871 0 obj << -/D [4866 0 R /XYZ 71.731 611.478 null] +4805 0 obj << +/D [4800 0 R /XYZ 71.731 611.478 null] >> endobj -4872 0 obj << -/D [4866 0 R /XYZ 71.731 556.0608 null] +4806 0 obj << +/D [4800 0 R /XYZ 71.731 556.0608 null] >> endobj -4873 0 obj << -/D [4866 0 R /XYZ 139.5762 544.0956 null] +4807 0 obj << +/D [4800 0 R /XYZ 139.5762 544.0956 null] >> endobj -4874 0 obj << -/D [4866 0 R /XYZ 71.731 531.9762 null] +4808 0 obj << +/D [4800 0 R /XYZ 71.731 531.9762 null] >> endobj -4875 0 obj << -/D [4866 0 R /XYZ 71.731 464.7099 null] +4809 0 obj << +/D [4800 0 R /XYZ 71.731 464.7099 null] >> endobj -4876 0 obj << -/D [4866 0 R /XYZ 71.731 442.8753 null] +4810 0 obj << +/D [4800 0 R /XYZ 71.731 442.8753 null] >> endobj -4877 0 obj << -/D [4866 0 R /XYZ 71.731 373.5518 null] +4811 0 obj << +/D [4800 0 R /XYZ 71.731 373.5518 null] >> endobj 1967 0 obj << -/D [4866 0 R /XYZ 71.731 355.0148 null] +/D [4800 0 R /XYZ 71.731 355.0148 null] >> endobj 978 0 obj << -/D [4866 0 R /XYZ 374.4611 311.5437 null] +/D [4800 0 R /XYZ 374.4611 311.5437 null] >> endobj -4878 0 obj << -/D [4866 0 R /XYZ 71.731 299.3725 null] +4812 0 obj << +/D [4800 0 R /XYZ 71.731 299.3725 null] >> endobj -4879 0 obj << -/D [4866 0 R /XYZ 402.9907 289.9846 null] +4813 0 obj << +/D [4800 0 R /XYZ 402.9907 289.9846 null] >> endobj -4880 0 obj << -/D [4866 0 R /XYZ 71.731 264.9137 null] +4814 0 obj << +/D [4800 0 R /XYZ 71.731 264.9137 null] >> endobj -4881 0 obj << -/D [4866 0 R /XYZ 71.731 227.5188 null] +4815 0 obj << +/D [4800 0 R /XYZ 71.731 227.5188 null] >> endobj -4882 0 obj << -/D [4866 0 R /XYZ 175.6818 214.5674 null] +4816 0 obj << +/D [4800 0 R /XYZ 175.6818 214.5674 null] >> endobj -4883 0 obj << -/D [4866 0 R /XYZ 395.942 214.5674 null] +4817 0 obj << +/D [4800 0 R /XYZ 395.942 214.5674 null] >> endobj -4884 0 obj << -/D [4866 0 R /XYZ 486.8069 214.5674 null] +4818 0 obj << +/D [4800 0 R /XYZ 486.8069 214.5674 null] >> endobj -4885 0 obj << -/D [4866 0 R /XYZ 71.731 201.6159 null] +4819 0 obj << +/D [4800 0 R /XYZ 71.731 201.6159 null] >> endobj -4886 0 obj << -/D [4866 0 R /XYZ 71.731 188.6645 null] +4820 0 obj << +/D [4800 0 R /XYZ 71.731 188.6645 null] >> endobj -4887 0 obj << -/D [4866 0 R /XYZ 107.0481 188.6645 null] +4821 0 obj << +/D [4800 0 R /XYZ 107.0481 188.6645 null] >> endobj 1968 0 obj << -/D [4866 0 R /XYZ 71.731 181.5264 null] +/D [4800 0 R /XYZ 71.731 181.5264 null] >> endobj 982 0 obj << -/D [4866 0 R /XYZ 496.414 138.4289 null] +/D [4800 0 R /XYZ 496.414 138.4289 null] >> endobj -4888 0 obj << -/D [4866 0 R /XYZ 71.731 125.9909 null] +4822 0 obj << +/D [4800 0 R /XYZ 71.731 125.9909 null] >> endobj -4889 0 obj << -/D [4866 0 R /XYZ 206.804 116.8697 null] +4823 0 obj << +/D [4800 0 R /XYZ 206.804 116.8697 null] >> endobj -4865 0 obj << +4799 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R /F35 1709 0 R /F32 1266 0 R /F60 2636 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4892 0 obj << +4826 0 obj << /Length 2096 /Filter /FlateDecode >> stream xڭXݏ���������)Q} ���M�@�EQ��@۴-�,������g(K�w�C9��3?)W!��*�"��r��V�ˇpu��?�̲a�͔����Q��E��d�|\�J�\f�*��ȴ�Vχ�OMc�C�e�Q:�}��Z�:�A=�J�/���������YG��3��y#�*��f"��ԙ�|��M$���ҁ)��G�������\���g�7�5�ۖ����<P{gs;LI�C��}_��^l՛�µ��k=�4��p��(KC���z����Gt���Q"t"�'�,ӱY�VȽڌ�D�e��v�3Su�{�:�>��0��bw��ю��8�0s�T�P���As~�����V�ך��]i��em�eS.�m�����{-e1��$؛��]͢l�X�|�`��������3����n ӽ�U�r.�($�A�����V= �����FBo&S�Bv�U�m�}�><��(��YH��R�ǁ_�o��yX�,`z3�y] Q{�\����C6���8N�.�Ӡ���$�����;��R��nY���q�fB��~4�_�rX��P#��r�S�R�P���)� Hjmž灌܆�k<�t4k�֘�.�����q� SH 4(�:����3��ʙ������떻@����"E �2��Y��Jl|����q1��h�~$����/>���S��s���v�Ηs]r�+z���l���)2��l�*(E �!�K�b�� �CE�G����2�8�$,�- m��Ɂ ��z ����/qHo�[`�-Ki���;\��FxW`�����1����aL�������A��Н�r�_�f&��1�v(��s)N�Q&}9 H@���v�6C�ԝ�L\� q�6�&7��ª�B�Jh4Ă����6g��*8@lճ{�FNRQ4���# ";�@\�%O�9Lu9�E�E��ؘ�>Nq����l�a�.�Q*D]MMC#�p��sIT�J���v�mUо�En]����`��VT�?�r�t�9M�h�;����G%�����`�JE�k���/����~�H.Ș����rg:��9�)Zfu��{?BfY��j��h���$F�i��" ����j�3����͟����#G\j��~H��v�)�����^�Ȭ"I�Us_�e'.���/3SH������/P{�����'D�փ��D��ɳ˅�dN,���Ĉ�T �[»>\��c�A�!tR�� P���+�H�HMw�E�Mnl�&�\�E@^�T:[�19[�w=[P��hL��1�R���hckJh�86�}Y���ցPQ�i���D��u�3�ey���$������!��$���~�C�����ҹ�=Z*\��}�1��0u��Э�Ħ��C�$�G��rg妢��\}\��W�:s���[`� n��u� 1C0�\S�/����7g�Vl�*��fךj�f.��&��S�|͑9Vv�L�bߝ���G�OJE[���lx�_O5�1�tl4��\��D��Tɨ�Xh�^��@[����'= ����B��[�A!CW�(0u��b5�]�.��Z����%B��� :ʑoP���ă-�+����Ad���8\rV��-t��f��F�c���i�۷�]H�z�����z��o<p�T�� �Dh�US@Fx�+�cF& -i��<��ْp%���(G�(��"~�+��"����,���'�Cm�ҍh�f�����B���o��1���9������F�/>J�(���Ͽ�t'�*��:'��3��϶�����Y>�&XJ�5�o��-���L[�w�>�B�Lo�7�s����%�(�>X����O<h:�+�����*Ӆ,�;P���O�ٟ�#10��]I*T�)�|}ï9�AC==fB%�X�o�t!4�d��FI_��B��x�U�h�� ��_c~D�wt������Y��y�^���2�@��^:���-��o&E�¡1(����G_ϴ�rݾ���B���e�%�J�B.���i��o�g�#nd���B#?O�$m���?�}��xr�0%��<y�m����+Xalendstream +i��<��ْp%���(G�(��"~�+��"����,���'�Cm�ҍh�f�����B���o��1���9������F�/>J�(���Ͽ�t'�*��:'��3��϶�����Y>�&XJ�5�o��-���L[�w�>�B�Lo�7�s����%�(�>X����O<h:�+�����*Ӆ,�;P���O�ٟ�#10��]I*T�)�|}ï9�AC==fB%�X�o�t!4�d��FI_��B��x�U�h�� ��_c~D�wt������Y��y�^���2�@��^:���-��o&E�¡1(����G_ϴ�rݾ���B���e�%�J�B.���i��o�g�#nd���B#?O�$m���?�}��*���Qj��7���(�?+�amendstream endobj -4891 0 obj << +4825 0 obj << /Type /Page -/Contents 4892 0 R -/Resources 4890 0 R +/Contents 4826 0 R +/Resources 4824 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R -/Annots [ 4916 0 R ] +/Parent 4851 0 R +/Annots [ 4850 0 R ] >> endobj -4916 0 obj << +4850 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [80.9762 109.1627 142.7442 118.0094] /Subtype /Link /A << /S /GoTo /D (http-apache) >> >> endobj -4893 0 obj << -/D [4891 0 R /XYZ 71.731 729.2652 null] +4827 0 obj << +/D [4825 0 R /XYZ 71.731 729.2652 null] >> endobj -4894 0 obj << -/D [4891 0 R /XYZ 71.731 718.3063 null] +4828 0 obj << +/D [4825 0 R /XYZ 71.731 718.3063 null] >> endobj -4895 0 obj << -/D [4891 0 R /XYZ 508.2921 708.3437 null] +4829 0 obj << +/D [4825 0 R /XYZ 508.2921 708.3437 null] >> endobj -4896 0 obj << -/D [4891 0 R /XYZ 71.731 649.3998 null] +4830 0 obj << +/D [4825 0 R /XYZ 71.731 649.3998 null] >> endobj -4897 0 obj << -/D [4891 0 R /XYZ 71.731 631.4671 null] +4831 0 obj << +/D [4825 0 R /XYZ 71.731 631.4671 null] >> endobj -4898 0 obj << -/D [4891 0 R /XYZ 71.731 579.6613 null] +4832 0 obj << +/D [4825 0 R /XYZ 71.731 579.6613 null] >> endobj -4899 0 obj << -/D [4891 0 R /XYZ 71.731 546.9191 null] +4833 0 obj << +/D [4825 0 R /XYZ 71.731 546.9191 null] >> endobj -4900 0 obj << -/D [4891 0 R /XYZ 71.731 536.9564 null] +4834 0 obj << +/D [4825 0 R /XYZ 71.731 536.9564 null] >> endobj -4901 0 obj << -/D [4891 0 R /XYZ 135.9845 527.3225 null] +4835 0 obj << +/D [4825 0 R /XYZ 135.9845 527.3225 null] >> endobj -4902 0 obj << -/D [4891 0 R /XYZ 135.9845 492.3537 null] +4836 0 obj << +/D [4825 0 R /XYZ 135.9845 492.3537 null] >> endobj -4903 0 obj << -/D [4891 0 R /XYZ 71.731 435.7659 null] +4837 0 obj << +/D [4825 0 R /XYZ 71.731 435.7659 null] >> endobj -4904 0 obj << -/D [4891 0 R /XYZ 71.731 396.812 null] +4838 0 obj << +/D [4825 0 R /XYZ 71.731 396.812 null] >> endobj -4905 0 obj << -/D [4891 0 R /XYZ 71.731 362.0125 null] +4839 0 obj << +/D [4825 0 R /XYZ 71.731 362.0125 null] >> endobj -4906 0 obj << -/D [4891 0 R /XYZ 71.731 352.0499 null] +4840 0 obj << +/D [4825 0 R /XYZ 71.731 352.0499 null] >> endobj -4907 0 obj << -/D [4891 0 R /XYZ 135.9845 342.416 null] +4841 0 obj << +/D [4825 0 R /XYZ 135.9845 342.416 null] >> endobj -4908 0 obj << -/D [4891 0 R /XYZ 135.9845 307.4471 null] +4842 0 obj << +/D [4825 0 R /XYZ 135.9845 307.4471 null] >> endobj -4909 0 obj << -/D [4891 0 R /XYZ 71.731 274.1719 null] +4843 0 obj << +/D [4825 0 R /XYZ 71.731 274.1719 null] >> endobj -4910 0 obj << -/D [4891 0 R /XYZ 181.6909 261.2205 null] +4844 0 obj << +/D [4825 0 R /XYZ 181.6909 261.2205 null] >> endobj -4911 0 obj << -/D [4891 0 R /XYZ 485.8887 261.2205 null] +4845 0 obj << +/D [4825 0 R /XYZ 485.8887 261.2205 null] >> endobj 1969 0 obj << -/D [4891 0 R /XYZ 71.731 228.1794 null] +/D [4825 0 R /XYZ 71.731 228.1794 null] >> endobj 986 0 obj << -/D [4891 0 R /XYZ 107.1086 162.7019 null] +/D [4825 0 R /XYZ 107.1086 162.7019 null] >> endobj -4912 0 obj << -/D [4891 0 R /XYZ 71.731 153.8791 null] +4846 0 obj << +/D [4825 0 R /XYZ 71.731 153.8791 null] >> endobj -4913 0 obj << -/D [4891 0 R /XYZ 71.731 134.0046 null] +4847 0 obj << +/D [4825 0 R /XYZ 71.731 134.0046 null] >> endobj -4914 0 obj << -/D [4891 0 R /XYZ 274.3729 123.21 null] +4848 0 obj << +/D [4825 0 R /XYZ 274.3729 123.21 null] >> endobj -4915 0 obj << -/D [4891 0 R /XYZ 390.7657 123.21 null] +4849 0 obj << +/D [4825 0 R /XYZ 390.7657 123.21 null] >> endobj 1970 0 obj << -/D [4891 0 R /XYZ 71.731 105.1777 null] +/D [4825 0 R /XYZ 71.731 105.1777 null] >> endobj -4890 0 obj << +4824 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F32 1266 0 R /F23 1250 0 R /F60 2636 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4919 0 obj << +4854 0 obj << /Length 885 /Filter /FlateDecode >> @@ -20652,42 +20463,42 @@ RU �n8'yMYH+gw����7}F�SgZ���2�ɩٽןc��=�%M !/|(�����ʈ f���T����H��i��Z?� ޫVΓB�lf$�Uh=O�%T��V�2����Rc;tQ���q���I�TkN*{���w���=®���O�,�������"��8i�䷯��ܜ�ӗ����T���MO��C�&Or�15��7B�U�Az=9�J�r3t~&��Ϙo��EE�����(�ނ���虪r��s��DU_��ô�Bn �Ǧ�|�W���b�5]F���ﭴ}���a���<O���dBZ�wBEۯ;�]n�t��@� [4J���zkyF�`��L��R�d�~�49�W)��`� �pA��GJ��b������t�\�.}����z �4��PP���O/���U�@��/3(�F����n4}�y�3��S�XI�m�]뿘rg�ˌ��6mrxS�]:r�� �� [�L�O�< -�~�;/UjD.>��x�����<w����+���)>*wҚYGW�;h�p�����5�5�s��X�δ� �G�ƛ��+|�)�9݂�6p[�� ݧ6��ѝ����⏧�I������o��W�,_#y�M����3 ����endstream +�~�;/UjD.>��x�����<w����+���)>*wҚYGW�;h�p�����5�5�s��X�δ� �G�ƛ��+|�)�9݂�6p[�� ݧ6��ѝ����⏧�I������o��ׄ��Y#y���o�����endstream endobj -4918 0 obj << +4853 0 obj << /Type /Page -/Contents 4919 0 R -/Resources 4917 0 R +/Contents 4854 0 R +/Resources 4852 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R +/Parent 4851 0 R >> endobj -4920 0 obj << -/D [4918 0 R /XYZ 71.731 729.2652 null] +4855 0 obj << +/D [4853 0 R /XYZ 71.731 729.2652 null] >> endobj 990 0 obj << -/D [4918 0 R /XYZ 452.3944 683.3676 null] +/D [4853 0 R /XYZ 452.3944 683.3676 null] >> endobj -4921 0 obj << -/D [4918 0 R /XYZ 71.731 671.1964 null] +4856 0 obj << +/D [4853 0 R /XYZ 71.731 671.1964 null] >> endobj -4922 0 obj << -/D [4918 0 R /XYZ 71.731 648.857 null] +4857 0 obj << +/D [4853 0 R /XYZ 71.731 648.857 null] >> endobj -4923 0 obj << -/D [4918 0 R /XYZ 437.9897 648.857 null] +4858 0 obj << +/D [4853 0 R /XYZ 437.9897 648.857 null] >> endobj -4924 0 obj << -/D [4918 0 R /XYZ 71.731 628.7675 null] +4859 0 obj << +/D [4853 0 R /XYZ 71.731 628.7675 null] >> endobj -4925 0 obj << -/D [4918 0 R /XYZ 130.4005 592.07 null] +4860 0 obj << +/D [4853 0 R /XYZ 130.4005 592.07 null] >> endobj -4917 0 obj << +4852 0 obj << /Font << /F33 1358 0 R /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4928 0 obj << -/Length 2959 +4863 0 obj << +/Length 2958 /Filter /FlateDecode >> stream @@ -20702,524 +20513,522 @@ E Z�NM�e�@w짾��}&y�o�7Np��_�v9���p[U��|�ڥ7���a����n/��o'O�*�/��{�c��5�����{5M���q�*�ż ��g&���^.�%���s���ɰ�����C�!J�Ǽ� �)�����sE)��E)����D"��dUc8�m M5��g��D/�"��G�P�Ԥ�.iP���Q0L�62�8r���FI�۱k���؊"۹D�9�VSM�]ar#L�� �?ry�9/ES^�R��:(�@v[ɫ�V��+<�7m80�a�]²~&mʌ�6k����6�my�t����֣S��֣���$���C����!��^ $����'�BW��ix�:��� -����R�z�7�*v���%�Q.H��1��SV@N�{nA�$p\/����<�����{N����L���O���E��@w�r�{i��D�u=����4��a0��̔��V��@Y��-�t��Մ�]���8X6��l�Z��es�F��Ӌ�ˍ�ˇ/$��� 6�_!z�246z`0�B�dz�<���6t�؆@Ʊ����S��v�>x]m���r&�co6�M!�|I�8����8W��Ut���_0���Պ2olx�>�����3��BC����`���;�9@v#u��jF�:י$�5/3]À|�m�<g�r�_�x[�)���x�grC����j��-T~!��>ή ���jYu ���A��,߂s(0=��~B#cO��C�J��-�ȢU u<���1W�D Cs�ށ~̱t>�_����c~�3;[F�r()l�p�\�m)O�%���������7̓@������͠0��u��+EImF9ں�}��<!�g���32$d��H���^��#=�-4|��Wh��w�S5���}j��f� 9��s�j|�/�*s&=t�sφ����%q13+�s9��,�j1��n� !�)+�@�Q�罰�}F�Y��+�)Ϡ��K���;���u�����[��A�ĭ��-!���~�G� q��?-3�vFC��s7��qE�N��i��w�3��y�!�endstream +����R�z�7�*v���%�Q.H��1��SV@N�{nA�$p\/����<�����{N����L���O���E��@w�r�{i��D�u=����4��a0��̔��V��@Y��-�t��Մ�]���8X6��l�Z��es�F��Ӌ�ˍ�ˇ/$��� 6�_!z�246z`0�B�dz�<���6t�؆@Ʊ����S��v�>x]m���r&�co6�M!�|I�8����8W��Ut���_0���Պ2olx�>�����3��BC����`���;�9@v#u��jF�:י$�5/3]À|�m�<g�r�_�x[�)���x�grC����j��-T~!��>ή ���jYu ���A��,߂s(0=��~B#cO��C�J��-�ȢU u<���1W�D Cs�ށ~̱t>�_����c~�3;[F�r()l�p�\�m)O�%���������7̓@������͠0��u��+EImF9ں�}��<!�g���32$d��H���^��#=�-4|��Wh��w�S5���}j��f� 9��s�j|�/�*s&=t�sφ����%q13+�s9��,�j1��n� !�)+�@�Q�罰�}F�Y��+�)Ϡ��K���;���u�����[��A�ĭ��-!���~�G� q��?-3�vFC��s7�f�d��L�G�;؟�6�?x�!�endstream endobj -4927 0 obj << +4862 0 obj << /Type /Page -/Contents 4928 0 R -/Resources 4926 0 R +/Contents 4863 0 R +/Resources 4861 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R +/Parent 4851 0 R >> endobj -4929 0 obj << -/D [4927 0 R /XYZ 71.731 729.2652 null] +4864 0 obj << +/D [4862 0 R /XYZ 71.731 729.2652 null] >> endobj 1971 0 obj << -/D [4927 0 R /XYZ 71.731 718.3063 null] +/D [4862 0 R /XYZ 71.731 718.3063 null] >> endobj 994 0 obj << -/D [4927 0 R /XYZ 271.435 703.236 null] +/D [4862 0 R /XYZ 271.435 703.236 null] >> endobj -4930 0 obj << -/D [4927 0 R /XYZ 71.731 682.1747 null] +4865 0 obj << +/D [4862 0 R /XYZ 71.731 682.1747 null] >> endobj -4931 0 obj << -/D [4927 0 R /XYZ 297.9985 673.4995 null] +4866 0 obj << +/D [4862 0 R /XYZ 297.9985 673.4995 null] >> endobj 1972 0 obj << -/D [4927 0 R /XYZ 71.731 660.4485 null] +/D [4862 0 R /XYZ 71.731 660.4485 null] >> endobj 998 0 obj << -/D [4927 0 R /XYZ 365.8704 615.2938 null] +/D [4862 0 R /XYZ 365.8704 615.2938 null] >> endobj -4932 0 obj << -/D [4927 0 R /XYZ 71.731 606.4709 null] +4867 0 obj << +/D [4862 0 R /XYZ 71.731 606.4709 null] >> endobj -4933 0 obj << -/D [4927 0 R /XYZ 457.2853 593.7346 null] +4868 0 obj << +/D [4862 0 R /XYZ 457.2853 593.7346 null] >> endobj -4934 0 obj << -/D [4927 0 R /XYZ 199.7198 580.7832 null] +4869 0 obj << +/D [4862 0 R /XYZ 199.7198 580.7832 null] >> endobj -4935 0 obj << -/D [4927 0 R /XYZ 258.4993 580.7832 null] +4870 0 obj << +/D [4862 0 R /XYZ 258.4993 580.7832 null] >> endobj -4936 0 obj << -/D [4927 0 R /XYZ 315.5253 580.7832 null] +4871 0 obj << +/D [4862 0 R /XYZ 315.5253 580.7832 null] >> endobj -4937 0 obj << -/D [4927 0 R /XYZ 71.731 578.6263 null] +4872 0 obj << +/D [4862 0 R /XYZ 71.731 578.6263 null] >> endobj -4938 0 obj << -/D [4927 0 R /XYZ 118.5554 540.0623 null] +4873 0 obj << +/D [4862 0 R /XYZ 118.5554 540.0623 null] >> endobj -4939 0 obj << -/D [4927 0 R /XYZ 71.731 509.7853 null] +4874 0 obj << +/D [4862 0 R /XYZ 71.731 509.7853 null] >> endobj -4940 0 obj << -/D [4927 0 R /XYZ 71.731 509.7853 null] +4875 0 obj << +/D [4862 0 R /XYZ 71.731 509.7853 null] >> endobj -4941 0 obj << -/D [4927 0 R /XYZ 71.731 490.0793 null] +4876 0 obj << +/D [4862 0 R /XYZ 71.731 490.0793 null] >> endobj -4942 0 obj << -/D [4927 0 R /XYZ 165.1103 477.1279 null] +4877 0 obj << +/D [4862 0 R /XYZ 165.1103 477.1279 null] >> endobj -4943 0 obj << -/D [4927 0 R /XYZ 71.731 469.9897 null] +4878 0 obj << +/D [4862 0 R /XYZ 71.731 469.9897 null] >> endobj -4944 0 obj << -/D [4927 0 R /XYZ 71.731 469.9897 null] +4879 0 obj << +/D [4862 0 R /XYZ 71.731 469.9897 null] >> endobj -4945 0 obj << -/D [4927 0 R /XYZ 164.0649 446.2437 null] +4880 0 obj << +/D [4862 0 R /XYZ 164.0649 446.2437 null] >> endobj -4946 0 obj << -/D [4927 0 R /XYZ 210.3517 446.2437 null] +4881 0 obj << +/D [4862 0 R /XYZ 210.3517 446.2437 null] >> endobj -4947 0 obj << -/D [4927 0 R /XYZ 352.5688 446.2437 null] +4882 0 obj << +/D [4862 0 R /XYZ 352.5688 446.2437 null] >> endobj -4948 0 obj << -/D [4927 0 R /XYZ 442.6605 446.2437 null] +4883 0 obj << +/D [4862 0 R /XYZ 442.6605 446.2437 null] >> endobj -4949 0 obj << -/D [4927 0 R /XYZ 203.7146 433.2922 null] +4884 0 obj << +/D [4862 0 R /XYZ 203.7146 433.2922 null] >> endobj -4950 0 obj << -/D [4927 0 R /XYZ 372.0612 433.2922 null] +4885 0 obj << +/D [4862 0 R /XYZ 372.0612 433.2922 null] >> endobj -4951 0 obj << -/D [4927 0 R /XYZ 71.731 426.1541 null] +4886 0 obj << +/D [4862 0 R /XYZ 71.731 426.1541 null] >> endobj -4952 0 obj << -/D [4927 0 R /XYZ 460.2171 415.3595 null] +4887 0 obj << +/D [4862 0 R /XYZ 460.2171 415.3595 null] >> endobj -4953 0 obj << -/D [4927 0 R /XYZ 71.731 382.3185 null] +4888 0 obj << +/D [4862 0 R /XYZ 71.731 382.3185 null] >> endobj -4954 0 obj << -/D [4927 0 R /XYZ 71.731 382.3185 null] +4889 0 obj << +/D [4862 0 R /XYZ 71.731 382.3185 null] >> endobj -4955 0 obj << -/D [4927 0 R /XYZ 237.4512 371.5239 null] +4890 0 obj << +/D [4862 0 R /XYZ 237.4512 371.5239 null] >> endobj -4956 0 obj << -/D [4927 0 R /XYZ 71.731 358.5724 null] +4891 0 obj << +/D [4862 0 R /XYZ 71.731 358.5724 null] >> endobj -4957 0 obj << -/D [4927 0 R /XYZ 220.8703 345.621 null] +4892 0 obj << +/D [4862 0 R /XYZ 220.8703 345.621 null] >> endobj -4958 0 obj << -/D [4927 0 R /XYZ 71.731 338.4829 null] +4893 0 obj << +/D [4862 0 R /XYZ 71.731 338.4829 null] >> endobj -4959 0 obj << -/D [4927 0 R /XYZ 257.1241 327.6883 null] +4894 0 obj << +/D [4862 0 R /XYZ 257.1241 327.6883 null] >> endobj -4960 0 obj << -/D [4927 0 R /XYZ 358.7127 327.6883 null] +4895 0 obj << +/D [4862 0 R /XYZ 358.7127 327.6883 null] >> endobj 1973 0 obj << -/D [4927 0 R /XYZ 71.731 320.5501 null] +/D [4862 0 R /XYZ 71.731 320.5501 null] >> endobj 1002 0 obj << -/D [4927 0 R /XYZ 462.0005 277.4526 null] +/D [4862 0 R /XYZ 462.0005 277.4526 null] >> endobj -4961 0 obj << -/D [4927 0 R /XYZ 71.731 265.0146 null] +4896 0 obj << +/D [4862 0 R /XYZ 71.731 265.0146 null] >> endobj -4962 0 obj << -/D [4927 0 R /XYZ 117.2903 255.8935 null] +4897 0 obj << +/D [4862 0 R /XYZ 117.2903 255.8935 null] >> endobj -4963 0 obj << -/D [4927 0 R /XYZ 427.8955 255.8935 null] +4898 0 obj << +/D [4862 0 R /XYZ 427.8955 255.8935 null] >> endobj -4964 0 obj << -/D [4927 0 R /XYZ 71.731 224.9097 null] +4899 0 obj << +/D [4862 0 R /XYZ 71.731 224.9097 null] >> endobj -4965 0 obj << -/D [4927 0 R /XYZ 173.632 212.0579 null] +4900 0 obj << +/D [4862 0 R /XYZ 173.632 212.0579 null] >> endobj -4966 0 obj << -/D [4927 0 R /XYZ 420.183 212.0579 null] +4901 0 obj << +/D [4862 0 R /XYZ 420.183 212.0579 null] >> endobj -4967 0 obj << -/D [4927 0 R /XYZ 71.731 166.0654 null] +4902 0 obj << +/D [4862 0 R /XYZ 71.731 166.0654 null] >> endobj -4968 0 obj << -/D [4927 0 R /XYZ 71.731 122.2298 null] +4903 0 obj << +/D [4862 0 R /XYZ 71.731 122.2298 null] >> endobj -4969 0 obj << -/D [4927 0 R /XYZ 71.731 122.2298 null] +4904 0 obj << +/D [4862 0 R /XYZ 71.731 122.2298 null] >> endobj -4926 0 obj << +4861 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F44 2110 0 R /F32 1266 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -4972 0 obj << -/Length 1588 +4907 0 obj << +/Length 1587 /Filter /FlateDecode >> stream -xڽ]o�6�=���*�-R"%À4يM���0쁑hK�-y�H�����(Yv�n���xǻs�,�?>�9�C��� %�,ۜ��ޝq�)ń� -'��c�&B�����wg�_D8S2����h*���.�ӻ�nM����/�Ļd���՜^��t���N�+�0�����0�L���u�+x���B������i�d=�1\F� pJ��XŖ�q�����Y�Rᑜ�L�TX�k�"��S�P�#$��&LI���=����F]A�맹��9��1��Rz����Bz�Ng7%�ueI]W��uNĮ0S��mY���[��gB�JT�0��3�Ğ�]4,�<��Pd�u�$�5���餫����j��X�l ��U�XV��:=U☚���PZB9KX��xH�b*(-��-~���J٬Cu�$źE�N7sd<���$�G�������)P�s��J��Y��C+�X��V�џͲ\v�����Һݙ��nʇ�8t����2��d�G 4��?ԝq�ES��%!$��PҡP^��!>~�z�-�Ņ"�ںo23r��(����_�cK���<l+xx,���"苞�1xL���.�'�>� p��M�Lu�잠�#�]aN\F�h҉������B�B�!�A9�?�J.��mlten�����M�5u[/;"�Q���#|��5�l46�'��B����.Z��Hz���B#���<`G�M��:��Y��b�� -�=qK2e0<�2ȿ|M�+�4&ĺ�˵�Ǔ���l� ]_�,I��b���s`��@S�(��@�?�B|e�7"MՕ�����a`J��y��n�3��H��ܴ�Szo�FZ@���q�s �F��,q�Ԋ0r�S6�"\�Km��G�(��%�~�@�R�_�c��?^jC?�Ƀ�*n(���j�bǦn;��:�<�+c�5��l�Ο�l�w��m��lu"�����]dC���������SuqBw<*���q��#귻D�}���E�*l!��lc�:�Bw���y̆�q��#��[KL�w����!n�ƁЋ��G�j���š�'�zz��4f[�e7� i����im�7�I'��x ��a��P��j)$�c2��6*�6zE�6�s�y_gz��N�Ҩ,�J}}��,Qr���Ue3#e��W�0p4���I)'�w Ɲl:����$�"KH<hC���ʸmH�#��a 1!x��|x�.���M�t��T؎�h�9Y��I90 ���S�A&� -�/�B���J�y^�8�4<��? -dک�w>䓌c�E�q8n�u�7�Ť~w���%�rkV,�xZ�HD��/�����B�Q:����ժ�����ƙ��muuh����vܓη��n� Qp�D,��En�z1�%؎��m�L��H%���]��߿�\8X7WSAc,�|��P�����5�� -fC��ቷZ`�,��n�~#]�Y]�~��ý=�3��Q�*������y�8M�ήt���~r�_�����~���p����ş�����LJ�?O�QƑ�����;�0��MGendstream +xڽ]o�6�=���*�-R"%À4يM���0쁑hK�-y�H�����(Yv�n���x_t�,�?>�9�C��� %�,ۜ��ޝq�)ń� +'��c�&B�����wg�_D8S2����h*���.�ӻ�nM����/�Ļd���՜^��t���N�+�0�����0�L���u�+x���B������i�d=�1\F� pJ��XŖ�q�����Y�Rᑜ�L�TX�k�"��S�P�#$��&LI���=����F]A�맹��9��1��Rz����Bz�Ng7%�ueI]W��uNĮ0S��mY���[��gB�JT�0��3�Ğ�]4,�<��Pd�u�$�5���餫����j��X�l ��U�XV��:=U☚���PZB9KX��xH�b*(-��-~���J٬Cu�$źE�N7sd<���$�G�������)P�s��J��Y��C+�X��V�џͲ\v�����Һݙ��nʇF��^�O�Ra2��k�ug\�E�T�dII�5�t(�W7�i���oVo�%v\(b���&3!wP_�R��*���[B<�E��X��c��\����`���t�<��y��"d�+�e�S5��� +s�2B���N\|�>��r +�q �q4��Ppq��mc�{(s�| ��@(�nʬ��z�Ᏺ����ׯ�g�q�?���oM�u��WWD���Y��'�R����|%�r�����eP0��[�)��1�A��k�\)ǥ1!�]��=�l}��eSo���4`I������R�E����(��+�θi��l����W S�´�k6Ns��a�V2^p�͜�{�4�g?ߍ۟Kh��t�l�SO��˟��'����Ԇ}��B.\b!0q�$<*���~�\���Km��9yPP��Š3T] ^����mG�Vg���ze��P��������������N�P3@�5c��l(�6����}�.�C��G�U#4�L>�~����O�eEpQ� +[H�7&��صǮ�A�����ك<fC��G�m���x���߯ �B��O��q#R�����{�C�O���l�4f[�e7� i����im�7}�N��y ��a���>����P�q�x��Q�^�WTi�{0��LO�ӡ4*&�R_�c1K�&�o}U��Hzo��3,M'�;)��BBc��a���M'0����_d �c�P�Xw� �b�Qc1"��������:���lJ��fSq`'"���d5v�r`F&���L~_D�rGÕ�Dq\ix_�(�i�����O2�C���pT�E�m�,���I�?��ʭY�L/����"�v�_>yW��� +�G�@�cGT�> +��g6����������'�o���nA��ȉX���ܺ�bYJ2�;��l�L��H%�L�m��C�/���T�ZKG?�$&,Co���n�n�����nx�X20ƶ�ũ�HWu��Ԥ�5���ݞ���U�f����Y�&tgW���U���/ĉ���v����p��\��ş�����LJ�e%y8j�8���������M@endstream endobj -4971 0 obj << +4906 0 obj << /Type /Page -/Contents 4972 0 R -/Resources 4970 0 R +/Contents 4907 0 R +/Resources 4905 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 4864 0 R -/Annots [ 4988 0 R ] +/Parent 4851 0 R +/Annots [ 4923 0 R ] >> endobj -4988 0 obj << +4923 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [157.2677 413.7501 206.2336 424.3324] /Subtype /Link /A << /S /GoTo /D (modules-manual-download) >> >> endobj -4973 0 obj << -/D [4971 0 R /XYZ 71.731 729.2652 null] +4908 0 obj << +/D [4906 0 R /XYZ 71.731 729.2652 null] >> endobj 1974 0 obj << -/D [4971 0 R /XYZ 71.731 718.3063 null] +/D [4906 0 R /XYZ 71.731 718.3063 null] >> endobj 1006 0 obj << -/D [4971 0 R /XYZ 155.5214 676.3797 null] +/D [4906 0 R /XYZ 155.5214 676.3797 null] >> endobj 1975 0 obj << -/D [4971 0 R /XYZ 71.731 669.6658 null] +/D [4906 0 R /XYZ 71.731 669.6658 null] >> endobj 1010 0 obj << -/D [4971 0 R /XYZ 206.6123 624.303 null] +/D [4906 0 R /XYZ 206.6123 624.303 null] >> endobj -4974 0 obj << -/D [4971 0 R /XYZ 71.731 615.4802 null] +4909 0 obj << +/D [4906 0 R /XYZ 71.731 615.4802 null] >> endobj -4975 0 obj << -/D [4971 0 R /XYZ 71.731 582.6542 null] +4910 0 obj << +/D [4906 0 R /XYZ 71.731 582.6542 null] >> endobj -4976 0 obj << -/D [4971 0 R /XYZ 71.731 572.6916 null] +4911 0 obj << +/D [4906 0 R /XYZ 71.731 572.6916 null] >> endobj -4977 0 obj << -/D [4971 0 R /XYZ 71.731 572.6916 null] +4912 0 obj << +/D [4906 0 R /XYZ 71.731 572.6916 null] >> endobj -4978 0 obj << -/D [4971 0 R /XYZ 71.731 561.8114 null] +4913 0 obj << +/D [4906 0 R /XYZ 71.731 561.8114 null] >> endobj -4979 0 obj << -/D [4971 0 R /XYZ 71.731 551.2777 null] +4914 0 obj << +/D [4906 0 R /XYZ 71.731 551.2777 null] >> endobj -4980 0 obj << -/D [4971 0 R /XYZ 71.731 538.4988 null] +4915 0 obj << +/D [4906 0 R /XYZ 71.731 538.4988 null] >> endobj -4981 0 obj << -/D [4971 0 R /XYZ 71.731 527.9651 null] +4916 0 obj << +/D [4906 0 R /XYZ 71.731 527.9651 null] >> endobj -4982 0 obj << -/D [4971 0 R /XYZ 71.731 516.3088 null] +4917 0 obj << +/D [4906 0 R /XYZ 71.731 516.3088 null] >> endobj -4983 0 obj << -/D [4971 0 R /XYZ 76.7123 483.2918 null] +4918 0 obj << +/D [4906 0 R /XYZ 76.7123 483.2918 null] >> endobj -4984 0 obj << -/D [4971 0 R /XYZ 71.731 468.3478 null] +4919 0 obj << +/D [4906 0 R /XYZ 71.731 468.3478 null] >> endobj -4985 0 obj << -/D [4971 0 R /XYZ 486.2278 456.6915 null] +4920 0 obj << +/D [4906 0 R /XYZ 486.2278 456.6915 null] >> endobj -4986 0 obj << -/D [4971 0 R /XYZ 451.4238 445.0352 null] +4921 0 obj << +/D [4906 0 R /XYZ 451.4238 445.0352 null] >> endobj -4987 0 obj << -/D [4971 0 R /XYZ 71.731 426.5103 null] +4922 0 obj << +/D [4906 0 R /XYZ 71.731 426.5103 null] >> endobj 1976 0 obj << -/D [4971 0 R /XYZ 71.731 365.5334 null] +/D [4906 0 R /XYZ 71.731 365.5334 null] >> endobj 1014 0 obj << -/D [4971 0 R /XYZ 276.1797 320.2791 null] +/D [4906 0 R /XYZ 276.1797 320.2791 null] >> endobj -4989 0 obj << -/D [4971 0 R /XYZ 71.731 320.064 null] +4924 0 obj << +/D [4906 0 R /XYZ 71.731 320.064 null] >> endobj -4990 0 obj << -/D [4971 0 R /XYZ 71.731 301.4936 null] +4925 0 obj << +/D [4906 0 R /XYZ 71.731 301.4936 null] >> endobj -4991 0 obj << -/D [4971 0 R /XYZ 91.6563 266.7399 null] +4926 0 obj << +/D [4906 0 R /XYZ 91.6563 266.7399 null] >> endobj -4992 0 obj << -/D [4971 0 R /XYZ 349.077 266.7399 null] +4927 0 obj << +/D [4906 0 R /XYZ 349.077 266.7399 null] >> endobj -4993 0 obj << -/D [4971 0 R /XYZ 71.731 227.1882 null] +4928 0 obj << +/D [4906 0 R /XYZ 71.731 227.1882 null] >> endobj -4994 0 obj << -/D [4971 0 R /XYZ 71.731 204.1746 null] +4929 0 obj << +/D [4906 0 R /XYZ 71.731 204.1746 null] >> endobj -4995 0 obj << -/D [4971 0 R /XYZ 188.0244 191.3227 null] +4930 0 obj << +/D [4906 0 R /XYZ 188.0244 191.3227 null] >> endobj -4996 0 obj << -/D [4971 0 R /XYZ 158.3455 178.3713 null] +4931 0 obj << +/D [4906 0 R /XYZ 158.3455 178.3713 null] >> endobj -4997 0 obj << -/D [4971 0 R /XYZ 71.731 137.5244 null] +4932 0 obj << +/D [4906 0 R /XYZ 71.731 137.5244 null] >> endobj -4998 0 obj << -/D [4971 0 R /XYZ 71.731 112.4535 null] +4933 0 obj << +/D [4906 0 R /XYZ 71.731 112.4535 null] >> endobj -4999 0 obj << -/D [4971 0 R /XYZ 188.0244 101.6589 null] +4934 0 obj << +/D [4906 0 R /XYZ 188.0244 101.6589 null] >> endobj -4970 0 obj << +4905 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F44 2110 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5002 0 obj << -/Length 536 +4937 0 obj << +/Length 535 /Filter /FlateDecode >> stream -xڽ�Ms�0���:�B��[O:���� ��@�q��+��؍�8��ヰ���>����l>���,4F4���������m���q����̻a�(h���|�b�|2�"N"�ߝ��+ۢ�]ʱs��z'ڵ������R�Z���`�%��S�۸;U�e9����ٗl�g!�#��I�]�s�A�<` �b>'�T��l��bb�Yi�%�7���W(�D�TI�T^Q�K�n�n����9wP��K�٘ -�Y��$���;�o��N?0ǝ��am2ȸS7���� ɤ�����T��0���7�^� �Φ�J�U6~�*��7�&Slp�'���:���7=<U⥺Q�8�=�O>�ߘ�����]���l��$���;��i�4���\�;Y���ũ��ԛ��rF�euY�e���FnY���`h���3�^�f�=���U��� ��Ho6��M?ji�s���J7��^����"��^�Ez~�;��n�d˻?ƶ3֏PD���ދy>�9e�(�)�Y�_�G� -�-'endstream +xڽ��r�0��~ +��$�84�t&��=(��Q����W DZ�q:��a{���v%-��`�`�P��H�X5�T���oC�m��4�g� �@ ���F!�F �q�9ȋ��UוmQ��>a�w��z'۵T����TJ�Z�����%�W�۸;]�U9����٧|�� ܦpa��${���$!G4��Đ�պ)[3���l��� JٯѪ�-�=�ܫ��L�I#�l�te�2桮�>����11�N��4e��@�<�7�8�o!;ٛ���2�n����Iw'K��E4�^/� ���^�!aަUZOU�~�*��7&���X;��?W�@T�����\���F����(>����/��-��Fv�g!��Sa��i�{��.ɕ���{��P�::ς��g`D_V��^V +m��i�&�jk:{�~>�sZ����1>��{��f�����̓�q:{=�F�8���r�^d�k+������j]�m�ny���v�Fq��cx/��f���S��թy���_-endstream endobj -5001 0 obj << +4936 0 obj << /Type /Page -/Contents 5002 0 R -/Resources 5000 0 R +/Contents 4937 0 R +/Resources 4935 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 4851 0 R >> endobj -5003 0 obj << -/D [5001 0 R /XYZ 71.731 729.2652 null] +4938 0 obj << +/D [4936 0 R /XYZ 71.731 729.2652 null] >> endobj -5004 0 obj << -/D [5001 0 R /XYZ 158.3455 708.3437 null] +4939 0 obj << +/D [4936 0 R /XYZ 158.3455 708.3437 null] >> endobj -5005 0 obj << -/D [5001 0 R /XYZ 71.731 667.4969 null] +4940 0 obj << +/D [4936 0 R /XYZ 71.731 667.4969 null] >> endobj -5006 0 obj << -/D [5001 0 R /XYZ 71.731 642.426 null] +4941 0 obj << +/D [4936 0 R /XYZ 71.731 642.426 null] >> endobj -5007 0 obj << -/D [5001 0 R /XYZ 188.0244 631.6314 null] +4942 0 obj << +/D [4936 0 R /XYZ 188.0244 631.6314 null] >> endobj -5008 0 obj << -/D [5001 0 R /XYZ 158.3455 618.6799 null] +4943 0 obj << +/D [4936 0 R /XYZ 158.3455 618.6799 null] >> endobj -5009 0 obj << -/D [5001 0 R /XYZ 71.731 577.8331 null] +4944 0 obj << +/D [4936 0 R /XYZ 71.731 577.8331 null] >> endobj -5010 0 obj << -/D [5001 0 R /XYZ 71.731 554.8195 null] +4945 0 obj << +/D [4936 0 R /XYZ 71.731 554.8195 null] >> endobj -5011 0 obj << -/D [5001 0 R /XYZ 188.0244 541.9676 null] +4946 0 obj << +/D [4936 0 R /XYZ 188.0244 541.9676 null] >> endobj -5012 0 obj << -/D [5001 0 R /XYZ 158.3455 529.0162 null] +4947 0 obj << +/D [4936 0 R /XYZ 158.3455 529.0162 null] >> endobj -5013 0 obj << -/D [5001 0 R /XYZ 71.731 488.1693 null] +4948 0 obj << +/D [4936 0 R /XYZ 71.731 488.1693 null] >> endobj -5014 0 obj << -/D [5001 0 R /XYZ 71.731 463.0984 null] +4949 0 obj << +/D [4936 0 R /XYZ 71.731 463.0984 null] >> endobj -5015 0 obj << -/D [5001 0 R /XYZ 188.0244 452.3038 null] +4950 0 obj << +/D [4936 0 R /XYZ 188.0244 452.3038 null] >> endobj -5016 0 obj << -/D [5001 0 R /XYZ 158.3455 439.3524 null] +4951 0 obj << +/D [4936 0 R /XYZ 158.3455 439.3524 null] >> endobj -5017 0 obj << -/D [5001 0 R /XYZ 71.731 398.5056 null] +4952 0 obj << +/D [4936 0 R /XYZ 71.731 398.5056 null] >> endobj -5018 0 obj << -/D [5001 0 R /XYZ 71.731 373.4347 null] +4953 0 obj << +/D [4936 0 R /XYZ 71.731 373.4347 null] >> endobj -5019 0 obj << -/D [5001 0 R /XYZ 188.0244 362.6401 null] +4954 0 obj << +/D [4936 0 R /XYZ 188.0244 362.6401 null] >> endobj -5020 0 obj << -/D [5001 0 R /XYZ 158.3455 349.6887 null] +4955 0 obj << +/D [4936 0 R /XYZ 158.3455 349.6887 null] >> endobj -5021 0 obj << -/D [5001 0 R /XYZ 71.731 308.8418 null] +4956 0 obj << +/D [4936 0 R /XYZ 71.731 308.8418 null] >> endobj -5022 0 obj << -/D [5001 0 R /XYZ 71.731 283.7709 null] +4957 0 obj << +/D [4936 0 R /XYZ 71.731 283.7709 null] >> endobj -5023 0 obj << -/D [5001 0 R /XYZ 188.0244 272.9763 null] +4958 0 obj << +/D [4936 0 R /XYZ 188.0244 272.9763 null] >> endobj -5024 0 obj << -/D [5001 0 R /XYZ 158.3455 260.0249 null] +4959 0 obj << +/D [4936 0 R /XYZ 158.3455 260.0249 null] >> endobj -5025 0 obj << -/D [5001 0 R /XYZ 71.731 219.1781 null] +4960 0 obj << +/D [4936 0 R /XYZ 71.731 219.1781 null] >> endobj -5026 0 obj << -/D [5001 0 R /XYZ 71.731 196.1645 null] +4961 0 obj << +/D [4936 0 R /XYZ 71.731 196.1645 null] >> endobj -5027 0 obj << -/D [5001 0 R /XYZ 188.0244 183.3126 null] +4962 0 obj << +/D [4936 0 R /XYZ 188.0244 183.3126 null] >> endobj -5028 0 obj << -/D [5001 0 R /XYZ 158.3455 170.3611 null] +4963 0 obj << +/D [4936 0 R /XYZ 158.3455 170.3611 null] >> endobj -5029 0 obj << -/D [5001 0 R /XYZ 71.731 129.5143 null] +4964 0 obj << +/D [4936 0 R /XYZ 71.731 129.5143 null] >> endobj -5000 0 obj << +4935 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5033 0 obj << -/Length 700 +4967 0 obj << +/Length 699 /Filter /FlateDecode >> stream -xڽV]o�0}ϯ�����z�,j�lU�M���r� ��8J�_?c �M�[E�c��s���bd8��� ��{q1q���5��>��c�qЛ��%�A�a�X^�u@��k�����X&_ͣ��e��Z6��y�y��5˻�'e#Y�3����"���� -��}�B$�7����d��VG��@����6j��G$� ��dN��K|���� -�y���c*,L�M��u"j���e*eA�pV�)�+VQ[(0W0� ���h�������T�6� ��ՐS�^J�������� �B -��d�D� d?�����Lx[�-He�k<��%��J�0 vq��EQǧnx�s�S�Z�;m��n�}�H)�)1l�� ��|w��U�oR�ٕ^T�]-�r1�rQ����%x�9�'H�s?0?Tm��j5r��)JC�%H��Qt���9����4���T"�M7��n>��yͪ�pT�S �bd�|z콲�m��T��(�V徝���'��O��l\@�@;����_�Z��4��˗�Y���Zl���\�`���V��LX�4 �o�ּ�:V=��X�QM�6};\���r>n�9�c!��у�e*jx�nv�qv�"-o,��� }8,��L�P.?[�cf\��"�� -�A� @��p�Yg�{ԡ����6S�G��'�&� �Z�tendstream +xڽV�n�0}�W���`��uM�k��˦I�T��V�����Hi�F��F��.��s86��!#@ pՄ)�>�F\Lc�n�'���{�f9�o]נ���7�׆�9�"�3����X&_ͣ��e��Z6&�y�y��5˻�'e#Y�3����"���� +��}�B$�7����d��VG���P����6j�F$B +�OT2'�����E�y���c*,L�M��u"b���e*eA�pV�)�+VQ[(4W0� �V�h�������T�6�iȩ��/�V�~��fc��rH!��o2y"���k{�`V&������5���J�vq��EQǧnx�s�S�Z�;m��n�}�H)��k�XqAz ��p���ߤ̳+��#�R�*Z0��P�aD��.��p�䠞0p[����j��NW����Nq�Bq� UjG�YV��p�j�Ӵ˦GP��7�@cl��4��5���Q�O5��������� �w�z�Gy�*����G>�,r�`�Z�ڑ��n'����<�i�_�,�Z���b���"k�϶�de���|���Xױ:���5�u�C٦o�K��U�LJ�c�X�8��,��A�`k������|�]�%��'�H�)/d�9��w��;��ϖ������H�^�od��ȧ{{�Q�n�CpD�6Sˇ�'[�G����o�[endstream endobj -5032 0 obj << +4966 0 obj << /Type /Page -/Contents 5033 0 R -/Resources 5031 0 R +/Contents 4967 0 R +/Resources 4965 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 4851 0 R >> endobj -5034 0 obj << -/D [5032 0 R /XYZ 71.731 729.2652 null] +4968 0 obj << +/D [4966 0 R /XYZ 71.731 729.2652 null] >> endobj -5035 0 obj << -/D [5032 0 R /XYZ 71.731 718.3063 null] +4969 0 obj << +/D [4966 0 R /XYZ 71.731 718.3063 null] >> endobj -5036 0 obj << -/D [5032 0 R /XYZ 185.5337 708.3437 null] +4970 0 obj << +/D [4966 0 R /XYZ 185.5337 708.3437 null] >> endobj -5037 0 obj << -/D [5032 0 R /XYZ 155.8548 695.3923 null] +4971 0 obj << +/D [4966 0 R /XYZ 155.8548 695.3923 null] >> endobj -5038 0 obj << -/D [5032 0 R /XYZ 71.731 654.5454 null] +4972 0 obj << +/D [4966 0 R /XYZ 71.731 654.5454 null] >> endobj -5039 0 obj << -/D [5032 0 R /XYZ 71.731 629.4745 null] +4973 0 obj << +/D [4966 0 R /XYZ 71.731 629.4745 null] >> endobj -5040 0 obj << -/D [5032 0 R /XYZ 188.0244 618.6799 null] +4974 0 obj << +/D [4966 0 R /XYZ 188.0244 618.6799 null] >> endobj -5041 0 obj << -/D [5032 0 R /XYZ 158.3455 605.7285 null] +4975 0 obj << +/D [4966 0 R /XYZ 158.3455 605.7285 null] >> endobj 1977 0 obj << -/D [5032 0 R /XYZ 71.731 564.8817 null] +/D [4966 0 R /XYZ 71.731 564.8817 null] >> endobj 1018 0 obj << -/D [5032 0 R /XYZ 252.5255 519.6274 null] +/D [4966 0 R /XYZ 252.5255 519.6274 null] >> endobj -5042 0 obj << -/D [5032 0 R /XYZ 71.731 507.4562 null] +4976 0 obj << +/D [4966 0 R /XYZ 71.731 507.4562 null] >> endobj -5043 0 obj << -/D [5032 0 R /XYZ 71.731 488.006 null] +4977 0 obj << +/D [4966 0 R /XYZ 71.731 488.006 null] >> endobj -5044 0 obj << -/D [5032 0 R /XYZ 188.0244 475.1541 null] +4978 0 obj << +/D [4966 0 R /XYZ 188.0244 475.1541 null] >> endobj -5045 0 obj << -/D [5032 0 R /XYZ 158.3455 462.2027 null] +4979 0 obj << +/D [4966 0 R /XYZ 158.3455 462.2027 null] >> endobj -5046 0 obj << -/D [5032 0 R /XYZ 71.731 421.3559 null] +4980 0 obj << +/D [4966 0 R /XYZ 71.731 421.3559 null] >> endobj -5047 0 obj << -/D [5032 0 R /XYZ 71.731 396.285 null] +4981 0 obj << +/D [4966 0 R /XYZ 71.731 396.285 null] >> endobj -5048 0 obj << -/D [5032 0 R /XYZ 188.0244 385.4904 null] +4982 0 obj << +/D [4966 0 R /XYZ 188.0244 385.4904 null] >> endobj -5049 0 obj << -/D [5032 0 R /XYZ 158.3455 372.539 null] +4983 0 obj << +/D [4966 0 R /XYZ 158.3455 372.539 null] >> endobj -5050 0 obj << -/D [5032 0 R /XYZ 71.731 331.6921 null] +4984 0 obj << +/D [4966 0 R /XYZ 71.731 331.6921 null] >> endobj -5051 0 obj << -/D [5032 0 R /XYZ 71.731 306.6212 null] +4985 0 obj << +/D [4966 0 R /XYZ 71.731 306.6212 null] >> endobj -5052 0 obj << -/D [5032 0 R /XYZ 188.0244 295.8266 null] +4986 0 obj << +/D [4966 0 R /XYZ 188.0244 295.8266 null] >> endobj -5053 0 obj << -/D [5032 0 R /XYZ 158.3455 282.8752 null] +4987 0 obj << +/D [4966 0 R /XYZ 158.3455 282.8752 null] >> endobj -5054 0 obj << -/D [5032 0 R /XYZ 71.731 242.0284 null] +4988 0 obj << +/D [4966 0 R /XYZ 71.731 242.0284 null] >> endobj -5055 0 obj << -/D [5032 0 R /XYZ 71.731 216.9575 null] +4989 0 obj << +/D [4966 0 R /XYZ 71.731 216.9575 null] >> endobj -5056 0 obj << -/D [5032 0 R /XYZ 188.0244 206.1629 null] +4990 0 obj << +/D [4966 0 R /XYZ 188.0244 206.1629 null] >> endobj -5057 0 obj << -/D [5032 0 R /XYZ 158.3455 193.2114 null] +4991 0 obj << +/D [4966 0 R /XYZ 158.3455 193.2114 null] >> endobj -5058 0 obj << -/D [5032 0 R /XYZ 71.731 152.3646 null] +4992 0 obj << +/D [4966 0 R /XYZ 71.731 152.3646 null] >> endobj -5059 0 obj << -/D [5032 0 R /XYZ 71.731 129.351 null] +4993 0 obj << +/D [4966 0 R /XYZ 71.731 129.351 null] >> endobj -5060 0 obj << -/D [5032 0 R /XYZ 188.0244 116.4991 null] +4994 0 obj << +/D [4966 0 R /XYZ 188.0244 116.4991 null] >> endobj -5061 0 obj << -/D [5032 0 R /XYZ 158.3455 103.5477 null] +4995 0 obj << +/D [4966 0 R /XYZ 158.3455 103.5477 null] >> endobj -5031 0 obj << +4965 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5064 0 obj << +4998 0 obj << /Length 206 /Filter /FlateDecode >> stream x�}�?k�@�w -��`�$�ɺ�-Ih!�����N �v��Ǐ���� ��~H���*�JFሬ���;s�5�V�H93�-�����D�� -i�F�0Z �Լ珻]�7�sQrp�3N���S�M�K8�]W�C?M�ͤo������zhN]{(>�k�H��Tm�p7�WE�P�9���nRoh������I��uvs�����Svendstream +��`U:�ɺ�-Ih!�����N �v��Ǐ���� ��~H�1�Xc%���N�����k\�2��rf�[�)eK��)� �'�,*qh� R�?�vm�l�E���8��Ou7�/��Xw]}��46��Fy����М��P|��l�~��0�h�n��.�B�F��ݤ��X��A�$1�+�����uvs�����Stendstream endobj -5063 0 obj << +4997 0 obj << /Type /Page -/Contents 5064 0 R -/Resources 5062 0 R +/Contents 4998 0 R +/Resources 4996 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 5000 0 R >> endobj -5065 0 obj << -/D [5063 0 R /XYZ 71.731 729.2652 null] +4999 0 obj << +/D [4997 0 R /XYZ 71.731 729.2652 null] >> endobj -5062 0 obj << +4996 0 obj << /Font << /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5068 0 obj << +5003 0 obj << /Length 2587 /Filter /FlateDecode >> @@ -21229,79 +21038,78 @@ x �%:�@�-��t`p�@NYL'R�L'����aq���kS���;oK�v��-j�T606B'�'a��侤�u�"�~�Df�, �.�<`T&"ĺDt2�e1�k��a�E�QKm.Ubd�"�4����Wj���u�I��S���֟�������m�T��<��Pw �h~f���BǺ�G �~���k�}1&?`��_� Ό�]'�f��IrpI;�;e�]��F^��f�H�#��ol����QşC?��"F�H#.�q�Jf$R�W/i�o���/Y�r��c�F8e���]��� :ī:��Ԟdi�v�9 ��k�lќU��A֫��fdҀe�a��$�b�v�4V�K����ΰ�Q�9����Z��l��OT'"�>�uy1^Q)vT��/o݃���հ���C�"�� t"Nl�W��F�����I' �HJI���_N�Q��4)����@�|ک�/UF8<Q��[�b�@��(� UM����3�L��P��#'�UX�o1'���v�(��/�A�BQK9�'@��Pt`��2E����Lk�����r��PFXnq�~�P�ɀE�H����x��?����*�B�ԏP4� ����ӬA�4a��eb�Y����2 �����-��ʾf��w�*����J�"����~�|C% 3QZꭹ�Lw���u�������n�Eҽ�FQ�)��kf�r�J��1������\"a2SC�/�;1��V(2ѽP6� {-�ta���n�y� m]fx����@%�P*ٗ�<ŋ�^��jN�F�{˜�Wo�(��{?x0���}�:��G�һ�b� �81>(k!�Y�"�����ŧ��AЗ�@Tf������;��d��T���o��ux��k�������6��5�\�_�&��(\ 3T���b.�p�Qd������B�$h��&��=�ǖ�U���@�AW^��r�;J�y,q�e�K"���<\���ޅ��5�)n]b���%��࣐�-����4�!R���s�X�9Q��������'v%p�&�x_�7g�����kH -����]2�ӊCe=��lJ���~��������\U֓���c�(�G�� z-��dX#�R�E��扠������w�'�l�����=a�y<���4�Z�<I�(��$jţ��z�� -V�� -�endstream +����]2�ӊCe=��lJ���~��������\U֓���c�(�G�� z-��dX#�R�E��扠������w�'�l�����=a�y<���4�Z�<I�(��$jţ��z�� +V����endstream endobj -5067 0 obj << +5002 0 obj << /Type /Page -/Contents 5068 0 R -/Resources 5066 0 R +/Contents 5003 0 R +/Resources 5001 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 5000 0 R >> endobj -5069 0 obj << -/D [5067 0 R /XYZ 71.731 729.2652 null] +5004 0 obj << +/D [5002 0 R /XYZ 71.731 729.2652 null] >> endobj 1978 0 obj << -/D [5067 0 R /XYZ 71.731 718.3063 null] +/D [5002 0 R /XYZ 71.731 718.3063 null] >> endobj 1022 0 obj << -/D [5067 0 R /XYZ 531.42 703.236 null] +/D [5002 0 R /XYZ 531.42 703.236 null] >> endobj -5070 0 obj << -/D [5067 0 R /XYZ 71.731 682.1747 null] +5005 0 obj << +/D [5002 0 R /XYZ 71.731 682.1747 null] >> endobj -5071 0 obj << -/D [5067 0 R /XYZ 71.731 672.0599 null] +5006 0 obj << +/D [5002 0 R /XYZ 71.731 672.0599 null] >> endobj -5072 0 obj << -/D [5067 0 R /XYZ 71.731 662.0973 null] +5007 0 obj << +/D [5002 0 R /XYZ 71.731 662.0973 null] >> endobj 1979 0 obj << -/D [5067 0 R /XYZ 71.731 638.2831 null] +/D [5002 0 R /XYZ 71.731 638.2831 null] >> endobj 1026 0 obj << -/D [5067 0 R /XYZ 168.2049 594.97 null] +/D [5002 0 R /XYZ 168.2049 594.97 null] >> endobj -5073 0 obj << -/D [5067 0 R /XYZ 71.731 586.1472 null] +5008 0 obj << +/D [5002 0 R /XYZ 71.731 586.1472 null] >> endobj -5074 0 obj << -/D [5067 0 R /XYZ 71.731 527.4184 null] +5009 0 obj << +/D [5002 0 R /XYZ 71.731 527.4184 null] >> endobj -5075 0 obj << -/D [5067 0 R /XYZ 71.731 485.64 null] +5010 0 obj << +/D [5002 0 R /XYZ 71.731 485.64 null] >> endobj 1980 0 obj << -/D [5067 0 R /XYZ 71.731 415.9016 null] +/D [5002 0 R /XYZ 71.731 415.9016 null] >> endobj 1030 0 obj << -/D [5067 0 R /XYZ 312.7959 370.7468 null] +/D [5002 0 R /XYZ 312.7959 370.7468 null] >> endobj -5076 0 obj << -/D [5067 0 R /XYZ 71.731 358.5756 null] +5011 0 obj << +/D [5002 0 R /XYZ 71.731 358.5756 null] >> endobj -5077 0 obj << -/D [5067 0 R /XYZ 71.731 316.1466 null] +5012 0 obj << +/D [5002 0 R /XYZ 71.731 316.1466 null] >> endobj -5078 0 obj << -/D [5067 0 R /XYZ 71.731 285.2624 null] +5013 0 obj << +/D [5002 0 R /XYZ 71.731 285.2624 null] >> endobj -5079 0 obj << -/D [5067 0 R /XYZ 71.731 202.5725 null] +5014 0 obj << +/D [5002 0 R /XYZ 71.731 202.5725 null] >> endobj -5080 0 obj << -/D [5067 0 R /XYZ 71.731 171.6884 null] +5015 0 obj << +/D [5002 0 R /XYZ 71.731 171.6884 null] >> endobj -5081 0 obj << -/D [5067 0 R /XYZ 71.731 140.8042 null] +5016 0 obj << +/D [5002 0 R /XYZ 71.731 140.8042 null] >> endobj -5066 0 obj << +5001 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5084 0 obj << +5019 0 obj << /Length 2983 /Filter /FlateDecode >> @@ -21318,57 +21126,57 @@ _ �`�#y�bS��엑>�e�Y�L�kE��8�!�M��r �[��[@�B�;{�W����� 3z�A �\u��p^A�B�O��0��5iݾ�oY����a�:���%�7�dي;3�H�.wμ3����֙\�q�^�������s��kǤX��51�j�}�l�]6���}���2[�6 ���9_ׂ�TPP�&��Ƴ�P��)�F�r�&��G�O�O� ����s:�<R2��p��3l���0e�E�2萲u���U�:y7e�u$�������E�O��/yH��\9)IiL��UtoO�ȉ�+m��o� SH��T(&����K�>��&�O�����ꋤ�?d�̴~LN�J"��*�E]4��?k���mZ�`����:!��>G$aO:0�t`� )�Éy��+��L���+��!ܯ�@�����N��٤�5v��|�T2P6q�;�+�`$���i��FPK3 �A,[a�6�9�)Gɼ�b�JX�֢�:��z���f8`� % ���"B�W��e��Q��Q� m�&Q�0��pz��y�d��� ��`����*�hp�d5�z��{��0g���N�}&�0��hC&�Y��V��?��N9q�^c�0N\�Ä�U��F'f�+�]7�����}g�����p��Q��/��_l�\[S�X���Kߧ-���4Β[��L����5*h@H�C��=�^ �Vf��#=�f�R���f������gj_��������iY���ޞm��m�}~$[�K��)�#ۡ�s���߷/��w�H^��\�G�E��TF��`��kpD���l�8��h��`���;������>�`rSQm����bǖ�\d/Za�z�cӢh�7{$y�Ms�3`ܛ|�=,�.xöb��)�%;u�x���`k�����0�9�F8����V9қ �S�KP*��:��g�`�Y齲��\R`+�V���2 �A�|��U"'{Z��@��֛,���X �]�3 -Xgeb�;� ���Ar_�#���&�0�Za����؝,w���N��#��X���(�#��v<GiE�����R%�Hsf#`s��^��?��������������C�~g����7�Da�����$�endstream +Xgeb�;� ���Ar_�#���&�0�Za����؝,w���N��#��X���(�#��v<GiE�����R%�Hsf#`s��^��?��������������C�~g����7�Da����&$�endstream endobj -5083 0 obj << +5018 0 obj << /Type /Page -/Contents 5084 0 R -/Resources 5082 0 R +/Contents 5019 0 R +/Resources 5017 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 5000 0 R >> endobj -5085 0 obj << -/D [5083 0 R /XYZ 71.731 729.2652 null] +5020 0 obj << +/D [5018 0 R /XYZ 71.731 729.2652 null] >> endobj -5086 0 obj << -/D [5083 0 R /XYZ 71.731 662.3513 null] +5021 0 obj << +/D [5018 0 R /XYZ 71.731 662.3513 null] >> endobj -5087 0 obj << -/D [5083 0 R /XYZ 71.731 592.6128 null] +5022 0 obj << +/D [5018 0 R /XYZ 71.731 592.6128 null] >> endobj 1981 0 obj << -/D [5083 0 R /XYZ 71.731 535.8257 null] +/D [5018 0 R /XYZ 71.731 535.8257 null] >> endobj 1034 0 obj << -/D [5083 0 R /XYZ 237.0663 492.7282 null] +/D [5018 0 R /XYZ 237.0663 492.7282 null] >> endobj -5088 0 obj << -/D [5083 0 R /XYZ 71.731 480.2903 null] +5023 0 obj << +/D [5018 0 R /XYZ 71.731 480.2903 null] >> endobj -5089 0 obj << -/D [5083 0 R /XYZ 71.731 401.3311 null] +5024 0 obj << +/D [5018 0 R /XYZ 71.731 401.3311 null] >> endobj 1982 0 obj << -/D [5083 0 R /XYZ 71.731 381.341 null] +/D [5018 0 R /XYZ 71.731 381.341 null] >> endobj 1038 0 obj << -/D [5083 0 R /XYZ 254.1783 338.2435 null] +/D [5018 0 R /XYZ 254.1783 338.2435 null] >> endobj -5090 0 obj << -/D [5083 0 R /XYZ 71.731 325.8056 null] +5025 0 obj << +/D [5018 0 R /XYZ 71.731 325.8056 null] >> endobj -5091 0 obj << -/D [5083 0 R /XYZ 71.731 231.8377 null] +5026 0 obj << +/D [5018 0 R /XYZ 71.731 231.8377 null] >> endobj -5092 0 obj << -/D [5083 0 R /XYZ 71.731 200.9535 null] +5027 0 obj << +/D [5018 0 R /XYZ 71.731 200.9535 null] >> endobj -5082 0 obj << +5017 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5095 0 obj << -/Length 3095 +5030 0 obj << +/Length 3096 /Filter /FlateDecode >> stream @@ -21378,128 +21186,128 @@ xڝ] zV9>�]�+�8�!X]��PD�LR��!F��X���B�|ڤ�zy�l�إ�b�h�VP�/�}P�t]�����S'���ʃ9R(�Zk����n��-�ƜYQ19PN(� 8�Z�T�/%����c<�1>)���µ�m$���̋�vԧ�.z`���W�R-`�K��pe�'U:��AW��f��tm���c�b>/�����w[�mG��SR����F���`E���:Rk�Vg70Ի�P߇��cB��@�o!�-`@-N�O�۵%�7���/�ɮ*{� �9���3����e����Y��IXX7L�`�?,����&qS�m+MڥPƁ����j�����b�'�0[Iyq��k4�����Oii���`y��n�0��r)S���U��S%Yz�~ϕ��-ͲC�\- Ğ������ڠ�-:�8G���C|��hj![J�ѫ�t_~��K�m*�3���8W��gR/Mre@��ʙ?���z�T���lhcy��e`�0�6X��jz�Z.��C����i�����O��z�`I��.|ԅ7���������^�X���>��PJ<l)[r���v����(��)m|�������vCKwF�����}S<�A�[<�k'ԝ����~UW�#������X�ǧ��>� ���rD�)-Tȏ�A������S��$SӿM����y�|�����~K�IGg��H������A�.(l�LMx��M�^�0z�f��U{�&"��a�R��8����8fW�15��D(��Qsw ��J�����K����SL#��sg�ǖ�S�3����!g�S��z16�<�b͇A_�(��3�.%�h���� Hvl8GA�����M�>S3JP�X�u���3��b�G�6p0�YK��G�5���D�2��%���M���F��=9U����G��w��-��h�]�q?0 f֨�2��`��F�7zݜ;A� _�Q��X�yh��*��r�r��#d�aF��P��PX��`8�qf8��������s�{V���{zM��|��3-���CchBc����$G$���(��QiH3�m����[���)�Y�&=I��O�/�� 6��ܡ���7�0hi�%f8iUT��5� /iv��fc-7�z,� d�4],�6��"�h�Z����h���*{a�*{�_E������.�\HL -���q)Ll)30�~h=�?���9��d���o���P9�����f�#�[0Ց;9�vyi�Fľ'e��튑v6�î��p�?/ە��vuS�m���RuC�Mao� �,�������N��Մ��A��pk���I�u��?.T,�Q"<��<�,��� ��~Yޭ9�;6��)e�+'*l�����<�P}��ٱ��o���>n��O��e��&;4�]u�p�#���&w"�2��@�Ø`'��ֽ6,O�\0KRcI-=�}|86p2�6�Jv���@�<�����$�B��q�����h����y�J�#��M_���0R��Q2Z*͍�K���9��K�b��On ��Ť;|x1��g��y�D�����L���GZ������M��ښCF����iՠ����p-��-�(��/Ӹ���~�xy����P 5endstream +���q)Ll)30�~h=�?���9��d���o���P9�����f�#�[0Ց;9�vyi�Fľ'e��튑v6�î��p�?/ە��vuS�m���RuC�Mao� �,�������N��Մ��A��pk���I�u��?.T,�Q"<��<�,��� ��~Yޭ9�;6��)e�+'*l�����<�P}��ٱ��o���>n��O��e��&;4�]u�p�#���&w"�2��@�Ø`'��ֽ6,O�\0KRcI-=�}|86p2�6�Jv���@�<�����$�B��q�����h����y�J�#��M_���0R��Q2Z*͍�K���9��K�b��On ��Ť;|x1��g��y�D�����L���GZ������M��ښCF����iՠ����p-��-�(��/Ӹ��ڃlm������� 3endstream endobj -5094 0 obj << +5029 0 obj << /Type /Page -/Contents 5095 0 R -/Resources 5093 0 R +/Contents 5030 0 R +/Resources 5028 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5030 0 R +/Parent 5000 0 R >> endobj -5096 0 obj << -/D [5094 0 R /XYZ 71.731 729.2652 null] +5031 0 obj << +/D [5029 0 R /XYZ 71.731 729.2652 null] >> endobj -5097 0 obj << -/D [5094 0 R /XYZ 71.731 741.2204 null] +5032 0 obj << +/D [5029 0 R /XYZ 71.731 741.2204 null] >> endobj -5098 0 obj << -/D [5094 0 R /XYZ 71.731 718.3063 null] +5033 0 obj << +/D [5029 0 R /XYZ 71.731 718.3063 null] >> endobj 1983 0 obj << -/D [5094 0 R /XYZ 71.731 688.2541 null] +/D [5029 0 R /XYZ 71.731 688.2541 null] >> endobj 1042 0 obj << -/D [5094 0 R /XYZ 201.8268 645.1566 null] +/D [5029 0 R /XYZ 201.8268 645.1566 null] >> endobj -5099 0 obj << -/D [5094 0 R /XYZ 71.731 636.3338 null] +5034 0 obj << +/D [5029 0 R /XYZ 71.731 636.3338 null] >> endobj -5100 0 obj << -/D [5094 0 R /XYZ 71.731 582.5864 null] +5035 0 obj << +/D [5029 0 R /XYZ 71.731 582.5864 null] >> endobj -5101 0 obj << -/D [5094 0 R /XYZ 71.731 577.605 null] +5036 0 obj << +/D [5029 0 R /XYZ 71.731 577.605 null] >> endobj -5102 0 obj << -/D [5094 0 R /XYZ 89.6638 556.8478 null] +5037 0 obj << +/D [5029 0 R /XYZ 89.6638 556.8478 null] >> endobj -5103 0 obj << -/D [5094 0 R /XYZ 71.731 528.7881 null] +5038 0 obj << +/D [5029 0 R /XYZ 71.731 528.7881 null] >> endobj -5104 0 obj << -/D [5094 0 R /XYZ 89.6638 513.0122 null] +5039 0 obj << +/D [5029 0 R /XYZ 89.6638 513.0122 null] >> endobj -5105 0 obj << -/D [5094 0 R /XYZ 71.731 485.3261 null] +5040 0 obj << +/D [5029 0 R /XYZ 71.731 485.3261 null] >> endobj -5106 0 obj << -/D [5094 0 R /XYZ 89.6638 469.1766 null] +5041 0 obj << +/D [5029 0 R /XYZ 89.6638 469.1766 null] >> endobj -5107 0 obj << -/D [5094 0 R /XYZ 71.731 467.0197 null] +5042 0 obj << +/D [5029 0 R /XYZ 71.731 467.0197 null] >> endobj -5108 0 obj << -/D [5094 0 R /XYZ 89.6638 451.2438 null] +5043 0 obj << +/D [5029 0 R /XYZ 89.6638 451.2438 null] >> endobj -5109 0 obj << -/D [5094 0 R /XYZ 71.731 449.087 null] +5044 0 obj << +/D [5029 0 R /XYZ 71.731 449.087 null] >> endobj -5110 0 obj << -/D [5094 0 R /XYZ 89.6638 433.3111 null] +5045 0 obj << +/D [5029 0 R /XYZ 89.6638 433.3111 null] >> endobj -5111 0 obj << -/D [5094 0 R /XYZ 71.731 431.1542 null] +5046 0 obj << +/D [5029 0 R /XYZ 71.731 431.1542 null] >> endobj -5112 0 obj << -/D [5094 0 R /XYZ 89.6638 415.3783 null] +5047 0 obj << +/D [5029 0 R /XYZ 89.6638 415.3783 null] >> endobj -5113 0 obj << -/D [5094 0 R /XYZ 71.731 400.9873 null] +5048 0 obj << +/D [5029 0 R /XYZ 71.731 400.9873 null] >> endobj -5114 0 obj << -/D [5094 0 R /XYZ 89.6638 384.4941 null] +5049 0 obj << +/D [5029 0 R /XYZ 89.6638 384.4941 null] >> endobj -5115 0 obj << -/D [5094 0 R /XYZ 71.731 371.4431 null] +5050 0 obj << +/D [5029 0 R /XYZ 71.731 371.4431 null] >> endobj -5116 0 obj << -/D [5094 0 R /XYZ 89.6638 353.6099 null] +5051 0 obj << +/D [5029 0 R /XYZ 89.6638 353.6099 null] >> endobj -5117 0 obj << -/D [5094 0 R /XYZ 71.731 351.4531 null] +5052 0 obj << +/D [5029 0 R /XYZ 71.731 351.4531 null] >> endobj -5118 0 obj << -/D [5094 0 R /XYZ 89.6638 335.6772 null] +5053 0 obj << +/D [5029 0 R /XYZ 89.6638 335.6772 null] >> endobj -5119 0 obj << -/D [5094 0 R /XYZ 71.731 294.6661 null] +5054 0 obj << +/D [5029 0 R /XYZ 71.731 294.6661 null] >> endobj -5120 0 obj << -/D [5094 0 R /XYZ 89.6638 278.8901 null] +5055 0 obj << +/D [5029 0 R /XYZ 89.6638 278.8901 null] >> endobj -5121 0 obj << -/D [5094 0 R /XYZ 71.731 237.879 null] +5056 0 obj << +/D [5029 0 R /XYZ 71.731 237.879 null] >> endobj -5122 0 obj << -/D [5094 0 R /XYZ 89.6638 222.1031 null] +5057 0 obj << +/D [5029 0 R /XYZ 89.6638 222.1031 null] >> endobj -5123 0 obj << -/D [5094 0 R /XYZ 71.731 206.9948 null] +5058 0 obj << +/D [5029 0 R /XYZ 71.731 206.9948 null] >> endobj -5124 0 obj << -/D [5094 0 R /XYZ 89.6638 191.2189 null] +5059 0 obj << +/D [5029 0 R /XYZ 89.6638 191.2189 null] >> endobj -5125 0 obj << -/D [5094 0 R /XYZ 71.731 176.1106 null] +5060 0 obj << +/D [5029 0 R /XYZ 71.731 176.1106 null] >> endobj -5126 0 obj << -/D [5094 0 R /XYZ 89.6638 160.3347 null] +5061 0 obj << +/D [5029 0 R /XYZ 89.6638 160.3347 null] >> endobj -5127 0 obj << -/D [5094 0 R /XYZ 71.731 158.1779 null] +5062 0 obj << +/D [5029 0 R /XYZ 71.731 158.1779 null] >> endobj -5128 0 obj << -/D [5094 0 R /XYZ 89.6638 142.402 null] +5063 0 obj << +/D [5029 0 R /XYZ 89.6638 142.402 null] >> endobj -5129 0 obj << -/D [5094 0 R /XYZ 71.731 135.2638 null] +5064 0 obj << +/D [5029 0 R /XYZ 71.731 135.2638 null] >> endobj -5093 0 obj << +5028 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5132 0 obj << +5067 0 obj << /Length 2570 /Filter /FlateDecode >> @@ -21515,149 +21323,145 @@ xڝYK ,�R`ˁ�hP�,߇SιA�;H�EH��I���3P�C.u�+��J++X �THPIYl�(1N,U����;v�%#R��1�d4��8��9p���Պ����_ >�9�i��7J���(.�+1.#�J��QB<����Vo����%��G�m�O�\π>� �S��H��3��"�Lg(���zk��"p��(����jh�9�,3��x���a�ȝ3K�%N�!��F:�&�f��"�W:�8vc �юaʏ��>z��r�I�}�Z��ȹ��87KF��DK��Kt[~� -� -��ҭ/���ߢS� �����R/���- �l��P�K�?� VͽnSB�M�!��+rBw[��\�~���"�I�@�#-߀`bI�?0E���s��(Zl�#��lZP��[s����ϳ6J��|��8��O�z��,�PS|c�G���L�8��0���1d�����A�Pvfz8"��L�kSɞ�f�ט��36���I�E�z=�I�����e��y�>�����/�I�yx�GIh�`�~�ו��}5�endstream +��ҭ/���ߢS� �����R/���- �l��P�K�?� VͽnSB�M�!��+rBw[��\�~���"�I�@�#-߀`bI�?0E���s��(Zl�#��lZP��[s����ϳ6J��|��8��O�z��,�PS|c�G���L�8��0���1d�����A�Pvfz8"��L�kSɞ�f�ט��36���I�E�z=�I�����e��y�>�����/�I��(OGIh�`�ו���5�endstream endobj -5131 0 obj << +5066 0 obj << /Type /Page -/Contents 5132 0 R -/Resources 5130 0 R +/Contents 5067 0 R +/Resources 5065 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R +/Parent 5000 0 R >> endobj -5133 0 obj << -/D [5131 0 R /XYZ 71.731 729.2652 null] +5068 0 obj << +/D [5066 0 R /XYZ 71.731 729.2652 null] >> endobj -5134 0 obj << -/D [5131 0 R /XYZ 71.731 646.4758 null] +5069 0 obj << +/D [5066 0 R /XYZ 71.731 646.4758 null] >> endobj -5135 0 obj << -/D [5131 0 R /XYZ 71.731 561.7286 null] +5070 0 obj << +/D [5066 0 R /XYZ 71.731 561.7286 null] >> endobj 1984 0 obj << -/D [5131 0 R /XYZ 71.731 530.8444 null] +/D [5066 0 R /XYZ 71.731 530.8444 null] >> endobj 1046 0 obj << -/D [5131 0 R /XYZ 279.2956 487.7469 null] +/D [5066 0 R /XYZ 279.2956 487.7469 null] >> endobj -5136 0 obj << -/D [5131 0 R /XYZ 71.731 475.3089 null] +5071 0 obj << +/D [5066 0 R /XYZ 71.731 475.3089 null] >> endobj -5137 0 obj << -/D [5131 0 R /XYZ 71.731 433.1468 null] +5072 0 obj << +/D [5066 0 R /XYZ 71.731 433.1468 null] >> endobj -5138 0 obj << -/D [5131 0 R /XYZ 71.731 365.4656 null] +5073 0 obj << +/D [5066 0 R /XYZ 71.731 365.4656 null] >> endobj 2003 0 obj << -/D [5131 0 R /XYZ 71.731 321.6299 null] +/D [5066 0 R /XYZ 71.731 321.6299 null] >> endobj 1050 0 obj << -/D [5131 0 R /XYZ 303.2245 276.4752 null] +/D [5066 0 R /XYZ 303.2245 276.4752 null] >> endobj -5139 0 obj << -/D [5131 0 R /XYZ 71.731 267.6524 null] +5074 0 obj << +/D [5066 0 R /XYZ 71.731 267.6524 null] >> endobj -5140 0 obj << -/D [5131 0 R /XYZ 71.731 221.875 null] +5075 0 obj << +/D [5066 0 R /XYZ 71.731 221.875 null] >> endobj 2004 0 obj << -/D [5131 0 R /XYZ 71.731 178.0394 null] +/D [5066 0 R /XYZ 71.731 178.0394 null] >> endobj 1054 0 obj << -/D [5131 0 R /XYZ 394.7926 134.9419 null] +/D [5066 0 R /XYZ 394.7926 134.9419 null] >> endobj -5141 0 obj << -/D [5131 0 R /XYZ 71.731 122.5039 null] +5076 0 obj << +/D [5066 0 R /XYZ 71.731 122.5039 null] >> endobj -5130 0 obj << +5065 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5145 0 obj << -/Length 2425 +5079 0 obj << +/Length 2426 /Filter /FlateDecode >> stream -xڍYݏ���¸�ʀW�K�ӧk��\�&�eS���)��,9�8��}�������g~3C�����U�Y�h�Gi��˛`u���ބ�� <.�ߞ�<�����ߧQ�z.V�6��.[eq��p�z>��{w���h�X?DI�����w?���$�u�yZK��]u�3uŤ�\W�^����7Oσ\I���l����K���*"���6�H�kS����l���~��Ыj����jJ�1 \�a��s:w�cZ�-������ �Y�X�g��}~斲�Ovs�VeiWV"�[u:5�>�Ou���2Q����0��I��Cvg\-��=C'�rUwLR�kygZW��,�5����,���T(�n�����e�����|4f˼��Γ�w�=ld���*���SvYm��:�A����$['���������;�T#v�Z���32iY����R��������C�v���?FGl��{�nh|�VI�7Lz^g�Gr��1�ѿ��Ѹ*jY�չ�tb���o���P�Ntͼu+$0t����:��p�}�L��̏a9�"��m��T$`����{���4�Ԃ��SPMՙF8�.�a�����������ղp]ԝ����T9�3I�c��Tk�V��}Ӏ-s��x�[vԆ�c��9͏+����ʹz��/}+K�hՈ�V�W�'@װR;[��u�E)�4��� -�; -�-�.. �(NR:�E�v��]�5�j�x���01 -�$�G4�y'�@z���_��� ���3��x�{���� �rZd�lm̓��g�9P���sXG��w�i�(��ng�[��:$�r9��/�^@ke����ْҶ�G���H��z$5F�~@�����ą�3�aL Dz�U�F�ܹ���mE��W4��G��9��H�Ӷ�����1܉��L� S�e�ܙ |�i��`��/�HfYR�; -�m�Y�FTJ�mX���P�"u��:Ƹ���QDz)���[y|�O��GϠ x�8�@|L�8������&� 32*YkǵKr��v:���Su*M{掣�-����Ad�����o�Z�-<~g4� -0F�tw�Z�I�M�B��e<��S`gr�Q��ܛq�%�u�� -�BX/�� -:d�|D9a� �B�G�� -�!MtL-���Œ���C��6��Y���?��6��n�%�O��eh�5�9�=����J_�.�Ҷ��7�b��g<`k[��`dw�����h��bSu���,�A0��m��� �:dMYp:b� -l���m�Ȁ��ks��ن���B���/p�X�:���T|�o=���Vi��={��h�7=� ۆG���q�H�qV(���:�N�|d*'��T=�/�[H����W�QPQ�>��39�1� -�5J�3�U �H�m�����j�\y�t 5W6q�ߢ�^��I "�SYS�ǿﻞr^h��6(e����O�sK��W���{�P�Aܬ�� -��pwĤІ �b��+zP+2��ō���N�L���Hďl~Fp�ڻ�`-,��1������ŀ��Mi�����d��S!�"�-��ۚ� w�q��j��6v���@xc��n��C��ä_l��`���t �x��`r��D{�E��B-x�ekc�첑%�|E���u�oo7�W�T�>L����h���E�8�r���I���Y0D��,�d�u�{r�D&*��XYq�G���&U9�� k�����ia.G7ʈ�\ЭeU���x|���/�mI���f9@��[i�-]P��YH�,G7/|+�X�s>/�= ��M�ad��M{A�����,9H�1�縷1�K1��my�ƾ$�λ��'�Q�Gf�j ���0j�V;МML�M�Jd9P*��^���� �g�Vv���F0���}x�b6ªk��i8�S3��� Zw��io_�B�r$R[!��b�T��@�c��Y��Iq��l?�g���[|���6Z:�$��0������������5t��k����v��� V&����̛���O��W����6q�;��.���گg�������c�e������2��.<H�䩓�� R�)�d�X� Kec�KD�e�`ؑB�O��ѩ�d�0~��q����K�⭝��>D�c}Ko�������Ut��K�Lg߭�ꤿ�dW��5��dt/i�'ᾝ�pDd���$ĈOO�>���ux?�"����?�|f���=%�+���r��lrы2LBܤ�ʨ�}dËl]B��P#�J�ghii��C<Ic�!*99�����?�dn���C�:1/�B?�� n�ܢy��&���}&�(� -ple"���~r���;��W,sx^�V�D��f�:��g_��ka��ݾ��endstream +xڍYݏ���¸�ʀW�˒ӧk��\�&�eS���)��,9�8��}�������g~3C�����U�i�h�G�$Z�7��C߽ ��Ax\��=�y|ǫ���E��s�������t�Ƒ�%a�z>��{w���h�X?DI�����w?���$�u�zZK��]u�3uŤ�\W�^����7Oσ\I���6U����Q�od~��S����0�>��>�� ����y}��Rd����ux�Ɯ��VxKe.v��nxBw�/���s������ݜ�UYڕ�H�V�N�F�O��S�~��GT!��!��}n��W��l�3tR�Xk!Wu�$u��w�u�|��^C�aZ���!�� +M��!�ʩ��Z��ν,�Gc�Ի��<Y8�a#�TLVy^�Uǝ���j�LϘ��T'6&�: ��7�5�e �ݹ��K��_����I�RGݘu�������<��������Ax0�8b+���۽pC�[�JZ�a��: <����)���7��U�P�2��ŵ��,��x�&W�Rv�k�[!���N��֡g�s�g�Vf~�9��m�l��� �m��{�t��L��j��4�9w� ��v�/G-εl�����<v�m���ɜIR�ݥZ���x��ly�S�Ǔ,ز�6�,�S��i~\Aݟ�Go��K�~�[Y�@�F,���2?������v��/J�ԍW`�Q�lv�pI�Gq���e(j�����kT� +��L�ab�I��h��:N� ��lS;���7t/@WL��TB ��>�_� �i� ��5�� |�@9��k�a^�i�u���]�u�ۺ7d�!ٗ�V}Y�Z+�'�Ζ���>j4>F: ���@ �1����<�� .̞ c!�k�:7���4m+"l���/<�L�YLDX���,�M��a&�SQ6PL���Qsg&,�f`��/��#�eI!0�(��afu<Qq(�.�a ��C���d��2VDN@G�n��>�C=���M��M0e��P4;c�G���7�Ȩd��.��[:��h�Oթ4�;�Z���r����އ���j5��<�U�р�)� r8p��Mk�')V4�ͯ�3���N���)F)ro�E�|�QT�**�+ +a��+`�Y��u�a?���8j�U i�cjal=/��'z X�&@��%�����v�-�%x�/C���AE�q���U��u頔�-E����=�[�غ��#[��w���D������e��Al3u��DH�!kʂ��[U`cTnCF���\����6 �"�]}��Ʋ@����/��㨝x�D�ܶJ�܀�����Fs��1�m�6<z���sD�@B���B���7չvR�#S9����|��B� ���"����Z��!����y��TH�Q��A���1FWm %�-Us�ʃ^���������z�MJ��ʚ�@<�}����B��f��A)���fV?i��_ɯ�M�����J=��Y6\#��I� A��(�W�<�Vd:7��+d ���0����� +����w��ZX��c�ہ��� |��q��R�o�At"O�D�x#��"�ok.P�7����UګiL'����2���ņ���~����z��5⥻S�� "(�� +��Ŗ��5N��F���q�s�]�y|���^�S��0Ҟӣ��R���凢'E +Ng� o�P���B�!x��Ɂ��xb-d�=X%Nj�T�������g���kȦ���(#�rA��Uu����y����;�%�{��r�t�����[��*�� +Y�n^,�V8���|^j{ *�S�r��S��"�\��uYr<��c��K!#b�b'��4��}I�9�:J��F��e�5| j�[0è Z�@s6q�lrV"ˁRI��T�I0>����<�5��!�5����V-X�N�)���L����`�MR��}����Hm�R�iS 7{� ��gM{'�uʳ�X���nE�Q���h�ؓ�ä�k莺v���w7G��=�g���ڥ�g7X����{�3ob��>}�_qS����%�xXN��w�kk����{�w���4���@L��c�n��<ur�A@�4�t7{�R���aن-v���vt*�N�W��ݸ̂}��%y��N�`�ʱ��7[���o|�*:kk��t���VWu��W������rR��]�'ᾝ�pDd���$ĈOO�>���ux?�"����?�|f���=%�+���r��lrы2LBܤ�J��}dËl]B��P#�J�ghii��C<���CT4rr. �9h��I�B{��z3tb^�~� +�ܢ1�E�hMP���L�Q��� +��Dz���$?m3?w�W,sx^�V�D���nX����?q-��蛆endstream endobj -5144 0 obj << +5078 0 obj << /Type /Page -/Contents 5145 0 R -/Resources 5143 0 R +/Contents 5079 0 R +/Resources 5077 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R +/Parent 5000 0 R >> endobj -5146 0 obj << -/D [5144 0 R /XYZ 71.731 729.2652 null] +5080 0 obj << +/D [5078 0 R /XYZ 71.731 729.2652 null] >> endobj -5147 0 obj << -/D [5144 0 R /XYZ 71.731 675.3027 null] +5081 0 obj << +/D [5078 0 R /XYZ 71.731 675.3027 null] >> endobj 2005 0 obj << -/D [5144 0 R /XYZ 71.731 631.4671 null] +/D [5078 0 R /XYZ 71.731 631.4671 null] >> endobj 1058 0 obj << -/D [5144 0 R /XYZ 182.2872 588.3696 null] +/D [5078 0 R /XYZ 182.2872 588.3696 null] >> endobj -5148 0 obj << -/D [5144 0 R /XYZ 71.731 579.5468 null] +5082 0 obj << +/D [5078 0 R /XYZ 71.731 579.5468 null] >> endobj 2006 0 obj << -/D [5144 0 R /XYZ 71.731 494.9151 null] +/D [5078 0 R /XYZ 71.731 494.9151 null] >> endobj 1062 0 obj << -/D [5144 0 R /XYZ 188.3641 451.8176 null] +/D [5078 0 R /XYZ 188.3641 451.8176 null] >> endobj -5149 0 obj << -/D [5144 0 R /XYZ 71.731 442.9948 null] +5083 0 obj << +/D [5078 0 R /XYZ 71.731 442.9948 null] >> endobj 2007 0 obj << -/D [5144 0 R /XYZ 71.731 384.266 null] +/D [5078 0 R /XYZ 71.731 384.266 null] >> endobj 1066 0 obj << -/D [5144 0 R /XYZ 365.182 341.1686 null] +/D [5078 0 R /XYZ 365.182 341.1686 null] >> endobj -5150 0 obj << -/D [5144 0 R /XYZ 71.731 332.3458 null] +5084 0 obj << +/D [5078 0 R /XYZ 71.731 332.3458 null] >> endobj -5151 0 obj << -/D [5144 0 R /XYZ 179.3565 293.7066 null] +5085 0 obj << +/D [5078 0 R /XYZ 179.3565 293.7066 null] >> endobj -5152 0 obj << -/D [5144 0 R /XYZ 71.731 286.5684 null] +5086 0 obj << +/D [5078 0 R /XYZ 71.731 286.5684 null] >> endobj 2008 0 obj << -/D [5144 0 R /XYZ 71.731 216.8299 null] +/D [5078 0 R /XYZ 71.731 216.8299 null] >> endobj 1070 0 obj << -/D [5144 0 R /XYZ 433.2515 173.7324 null] +/D [5078 0 R /XYZ 433.2515 173.7324 null] >> endobj -5153 0 obj << -/D [5144 0 R /XYZ 71.731 161.5612 null] +5087 0 obj << +/D [5078 0 R /XYZ 71.731 161.5612 null] >> endobj -5154 0 obj << -/D [5144 0 R /XYZ 71.731 137.065 null] +5088 0 obj << +/D [5078 0 R /XYZ 71.731 137.065 null] >> endobj -5155 0 obj << -/D [5144 0 R /XYZ 71.731 127.1024 null] +5089 0 obj << +/D [5078 0 R /XYZ 71.731 127.1024 null] >> endobj -5143 0 obj << +5077 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R /F23 1250 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5158 0 obj << +5092 0 obj << /Length 764 /Filter /FlateDecode >> @@ -21667,30 +21471,30 @@ FI ��~XٮJ.T���]D����`�4��m�Ǡk!� :.W5�����/�E}yv5C|'��c�s��0���$�R�'�_q(,r?�bX�H�sվZ�7���9��� L$˙ľ�= _�� �Fo�$��K�X���3d�j�m+ڽu������C���>ȼO�)�[r��HS�&��Qd��f4 ���h�g���(�0��{F���9��S<>�c��T� x��������+���ʻ��Q�F�!��r<hJ�,I���)�vn۵��i �g,�!�`���%�"6���W6��R ��.����Ϩw��2V���d�\jsl,G/0�Y92�<�͙�A��D�V (+�'| -,#mKw�w�az��t�G�1�ڍ�7��lt+f��J#��R����q��*���6��pûNtdž�U��+c�;VTa��p�udl�.�Ez�vv�HO��/�����ɀ��9�����J;���^Ct\>�Ϡ���ØL�>��o��tl��.��L� �4�%)��z��|����(#1+�1�����oޑ������endstream +,#mKw�w�az��t�G�1�ڍ�7��lt+f��J#��R����q��*���6��pûNtdž�U��+c�;VTa��p�udl�.�Ez�vv�HO��/�����ɀ��9�����J;���^Ct\>�Ϡ���ØL�>��o��tl��.��L� �4�%)��z��|����(���J�L�r篾yG*����endstream endobj -5157 0 obj << +5091 0 obj << /Type /Page -/Contents 5158 0 R -/Resources 5156 0 R +/Contents 5092 0 R +/Resources 5090 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R +/Parent 5096 0 R >> endobj -5159 0 obj << -/D [5157 0 R /XYZ 71.731 729.2652 null] +5093 0 obj << +/D [5091 0 R /XYZ 71.731 729.2652 null] >> endobj -5160 0 obj << -/D [5157 0 R /XYZ 71.731 689.7649 null] +5094 0 obj << +/D [5091 0 R /XYZ 71.731 689.7649 null] >> endobj -5161 0 obj << -/D [5157 0 R /XYZ 71.731 647.7709 null] +5095 0 obj << +/D [5091 0 R /XYZ 71.731 647.7709 null] >> endobj -5156 0 obj << +5090 0 obj << /Font << /F33 1358 0 R /F27 1258 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5164 0 obj << -/Length 1841 +5099 0 obj << +/Length 1839 /Filter /FlateDecode >> stream @@ -21699,190 +21503,190 @@ xڭX_ _c�4hs�lJ�YVGS."�(�n�g1�n.8�� �@�8��D��B��3%1�$����#��v�c�x<��}��P;3\�R��SO��[��rO�� �p�������?�P��s�Z�vp���>��XK,d�S s~ �p�������R.��l�x��� eWk�E˙��FZ������:,�{}T���;�V�]o7"^��:� %���6��Օ�x�GKD'���dQ�H�#]�ql9��4:�K��7!Id/G(�PQ��+f_hc_hgƠ��u'[�a��1C�Dgݨ�W�x(җ����u�5pg�eE��v��n�o]�\����:�����{HJ�C`M�{Yb�e�^���an8y���0�����84���̰�oLm#����i�k3(����i�s���ǩ)�8ԇ<Y%)gIWK��`i�M��qj2���XEs��b\U �pVB�2��i7� ��喿��W+�w?��������q=�~����rsѶ����ʧ{��%8�yZ�����l���[qe�� ����:Wx#�����A���J}�3+&���cH��rd�r��CRH��QÁ�\ ��ƕ���'�fx��/�e߷�aD|���&�IHZ���H���7VQ���öS�X���5T!���D�E��S�Ʃ�a�_�L8��E\��v0f�j�K4���t9GD�3c�1O�o�?�F��?�@@�Sd4j� �$aE����3����|ᇈ�Z7:x"����,����W%��x�K��A�ÎF���p�6�(�| i���D�u�d�^/� �-���a㭶ޒ���(��n��sG��~��k��C<5�U��$Ϯ%��Bp����t��a��d,m@/�!E�.i��C�������M\�%i2���!���p�S����f��*��g�9x��QѶ�Ҷ��^��_|���B�_.�AQ�Y23��LO�0ī��-(�%Kyv�X>��T\W����=��`�������ʩ?���ک/���w��px>�)T��UL� -o�I�RL��z��u0u���x�3D�.Kkh��=��*Z�yvc�� Y� ��h�l���6J7����:�}أ�P��۽��5�j�_��j�:.����ILw-B�hy��rG9���bG�0�:C�_�m�����.\!R�1���8��r�H�<�M������п��R���p0��r�V��0H|q{��G��R۔�s���?Hm���s �"�LƙK�!dP���'Mh���s{ӏ��vc�endstream +o�I�RL��z��u0u���x�3D�.Kkh��=��*Z�yvc�� Y� ��h�l���6J7����:�}أ�P��۽��5�j�_��j�:.����ILw-B�hy��rG9���bG�0�:C�_�m�����.\!R�1���8��r�H�<�M������п��R���p0��r�V��0H|q{��G��R۔�s���?Hm���s �"�LƙK�!d��y1�A[<.�[�~�\����c�endstream endobj -5163 0 obj << +5098 0 obj << /Type /Page -/Contents 5164 0 R -/Resources 5162 0 R +/Contents 5099 0 R +/Resources 5097 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R -/Annots [ 5210 0 R ] +/Parent 5096 0 R +/Annots [ 5145 0 R ] >> endobj -5210 0 obj << +5145 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [374.7025 133.0074 436.4705 143.9114] /Subtype /Link /A << /S /GoTo /D (http-apache) >> >> endobj -5165 0 obj << -/D [5163 0 R /XYZ 71.731 729.2652 null] +5100 0 obj << +/D [5098 0 R /XYZ 71.731 729.2652 null] >> endobj 2009 0 obj << -/D [5163 0 R /XYZ 71.731 718.3063 null] +/D [5098 0 R /XYZ 71.731 718.3063 null] >> endobj 1074 0 obj << -/D [5163 0 R /XYZ 160.3549 703.236 null] +/D [5098 0 R /XYZ 160.3549 703.236 null] >> endobj -5166 0 obj << -/D [5163 0 R /XYZ 71.731 692.504 null] +5101 0 obj << +/D [5098 0 R /XYZ 71.731 692.504 null] >> endobj 1078 0 obj << -/D [5163 0 R /XYZ 208.3645 644.1007 null] +/D [5098 0 R /XYZ 208.3645 644.1007 null] >> endobj 4078 0 obj << -/D [5163 0 R /XYZ 71.731 629.1751 null] +/D [5098 0 R /XYZ 71.731 629.1751 null] >> endobj 1082 0 obj << -/D [5163 0 R /XYZ 117.1402 620.82 null] +/D [5098 0 R /XYZ 117.1402 620.82 null] >> endobj -5167 0 obj << -/D [5163 0 R /XYZ 71.731 615.7142 null] +5102 0 obj << +/D [5098 0 R /XYZ 71.731 615.7142 null] >> endobj -5168 0 obj << -/D [5163 0 R /XYZ 71.731 610.7329 null] +5103 0 obj << +/D [5098 0 R /XYZ 71.731 610.7329 null] >> endobj -5169 0 obj << -/D [5163 0 R /XYZ 118.3278 584.9545 null] +5104 0 obj << +/D [5098 0 R /XYZ 118.3278 584.9545 null] >> endobj -5170 0 obj << -/D [5163 0 R /XYZ 296.214 572.0031 null] +5105 0 obj << +/D [5098 0 R /XYZ 296.214 572.0031 null] >> endobj -5171 0 obj << -/D [5163 0 R /XYZ 71.731 536.1376 null] +5106 0 obj << +/D [5098 0 R /XYZ 71.731 536.1376 null] >> endobj 1086 0 obj << -/D [5163 0 R /XYZ 86.6464 483.8248 null] +/D [5098 0 R /XYZ 86.6464 483.8248 null] >> endobj -5172 0 obj << -/D [5163 0 R /XYZ 71.731 473.4955 null] +5107 0 obj << +/D [5098 0 R /XYZ 71.731 473.4955 null] >> endobj 1090 0 obj << -/D [5163 0 R /XYZ 107.6162 460.5441 null] +/D [5098 0 R /XYZ 107.6162 460.5441 null] >> endobj -5173 0 obj << -/D [5163 0 R /XYZ 71.731 453.5005 null] +5108 0 obj << +/D [5098 0 R /XYZ 71.731 453.5005 null] >> endobj -5174 0 obj << -/D [5163 0 R /XYZ 71.731 448.5192 null] +5109 0 obj << +/D [5098 0 R /XYZ 71.731 448.5192 null] >> endobj -5175 0 obj << -/D [5163 0 R /XYZ 256.795 411.7271 null] +5110 0 obj << +/D [5098 0 R /XYZ 256.795 411.7271 null] >> endobj -5176 0 obj << -/D [5163 0 R /XYZ 392.1662 411.7271 null] +5111 0 obj << +/D [5098 0 R /XYZ 392.1662 411.7271 null] >> endobj -5177 0 obj << -/D [5163 0 R /XYZ 71.731 409.5703 null] +5112 0 obj << +/D [5098 0 R /XYZ 71.731 409.5703 null] >> endobj -5178 0 obj << -/D [5163 0 R /XYZ 71.731 395.6226 null] +5113 0 obj << +/D [5098 0 R /XYZ 71.731 395.6226 null] >> endobj 1094 0 obj << -/D [5163 0 R /XYZ 320.8499 382.2377 null] +/D [5098 0 R /XYZ 320.8499 382.2377 null] >> endobj -5179 0 obj << -/D [5163 0 R /XYZ 71.731 369.6152 null] +5114 0 obj << +/D [5098 0 R /XYZ 71.731 369.6152 null] >> endobj -5180 0 obj << -/D [5163 0 R /XYZ 71.731 369.6152 null] +5115 0 obj << +/D [5098 0 R /XYZ 71.731 369.6152 null] >> endobj -5181 0 obj << -/D [5163 0 R /XYZ 71.731 369.6152 null] +5116 0 obj << +/D [5098 0 R /XYZ 71.731 369.6152 null] >> endobj -5182 0 obj << -/D [5163 0 R /XYZ 71.731 357.9429 null] +5117 0 obj << +/D [5098 0 R /XYZ 71.731 357.9429 null] >> endobj -5183 0 obj << -/D [5163 0 R /XYZ 111.5816 341.3909 null] +5118 0 obj << +/D [5098 0 R /XYZ 111.5816 341.3909 null] >> endobj -5184 0 obj << -/D [5163 0 R /XYZ 71.731 329.2714 null] +5119 0 obj << +/D [5098 0 R /XYZ 71.731 329.2714 null] >> endobj -5185 0 obj << -/D [5163 0 R /XYZ 71.731 329.2714 null] +5120 0 obj << +/D [5098 0 R /XYZ 71.731 329.2714 null] >> endobj -5186 0 obj << -/D [5163 0 R /XYZ 71.731 329.2714 null] +5121 0 obj << +/D [5098 0 R /XYZ 71.731 329.2714 null] >> endobj -5187 0 obj << -/D [5163 0 R /XYZ 71.731 317.0961 null] +5122 0 obj << +/D [5098 0 R /XYZ 71.731 317.0961 null] >> endobj -5188 0 obj << -/D [5163 0 R /XYZ 71.731 317.0961 null] +5123 0 obj << +/D [5098 0 R /XYZ 71.731 317.0961 null] >> endobj -5189 0 obj << -/D [5163 0 R /XYZ 71.731 317.0961 null] +5124 0 obj << +/D [5098 0 R /XYZ 71.731 317.0961 null] >> endobj -5190 0 obj << -/D [5163 0 R /XYZ 71.731 304.1446 null] +5125 0 obj << +/D [5098 0 R /XYZ 71.731 304.1446 null] >> endobj -5191 0 obj << -/D [5163 0 R /XYZ 111.5816 287.5926 null] +5126 0 obj << +/D [5098 0 R /XYZ 111.5816 287.5926 null] >> endobj -5192 0 obj << -/D [5163 0 R /XYZ 326.8524 274.6412 null] +5127 0 obj << +/D [5098 0 R /XYZ 326.8524 274.6412 null] >> endobj -5193 0 obj << -/D [5163 0 R /XYZ 71.731 262.5217 null] +5128 0 obj << +/D [5098 0 R /XYZ 71.731 262.5217 null] >> endobj -5194 0 obj << -/D [5163 0 R /XYZ 71.731 262.5217 null] +5129 0 obj << +/D [5098 0 R /XYZ 71.731 262.5217 null] >> endobj -5195 0 obj << -/D [5163 0 R /XYZ 71.731 262.5217 null] +5130 0 obj << +/D [5098 0 R /XYZ 71.731 262.5217 null] >> endobj -5196 0 obj << -/D [5163 0 R /XYZ 71.731 250.3464 null] +5131 0 obj << +/D [5098 0 R /XYZ 71.731 250.3464 null] >> endobj -5197 0 obj << -/D [5163 0 R /XYZ 111.5816 233.7944 null] +5132 0 obj << +/D [5098 0 R /XYZ 111.5816 233.7944 null] >> endobj -5198 0 obj << -/D [5163 0 R /XYZ 352.0179 233.7944 null] +5133 0 obj << +/D [5098 0 R /XYZ 352.0179 233.7944 null] >> endobj -5199 0 obj << -/D [5163 0 R /XYZ 135.3745 220.843 null] +5134 0 obj << +/D [5098 0 R /XYZ 135.3745 220.843 null] >> endobj -5200 0 obj << -/D [5163 0 R /XYZ 224.9831 220.843 null] +5135 0 obj << +/D [5098 0 R /XYZ 224.9831 220.843 null] >> endobj -5201 0 obj << -/D [5163 0 R /XYZ 297.9916 220.843 null] +5136 0 obj << +/D [5098 0 R /XYZ 297.9916 220.843 null] >> endobj -5202 0 obj << -/D [5163 0 R /XYZ 419.7283 220.843 null] +5137 0 obj << +/D [5098 0 R /XYZ 419.7283 220.843 null] >> endobj -5203 0 obj << -/D [5163 0 R /XYZ 111.5816 207.8915 null] +5138 0 obj << +/D [5098 0 R /XYZ 111.5816 207.8915 null] >> endobj -5204 0 obj << -/D [5163 0 R /XYZ 71.731 196.5481 null] +5139 0 obj << +/D [5098 0 R /XYZ 71.731 196.5481 null] >> endobj -5205 0 obj << -/D [5163 0 R /XYZ 71.731 196.5481 null] +5140 0 obj << +/D [5098 0 R /XYZ 71.731 196.5481 null] >> endobj -5206 0 obj << -/D [5163 0 R /XYZ 71.731 196.5481 null] +5141 0 obj << +/D [5098 0 R /XYZ 71.731 196.5481 null] >> endobj -5207 0 obj << -/D [5163 0 R /XYZ 71.731 183.5967 null] +5142 0 obj << +/D [5098 0 R /XYZ 71.731 183.5967 null] >> endobj -5208 0 obj << -/D [5163 0 R /XYZ 111.5816 167.0447 null] +5143 0 obj << +/D [5098 0 R /XYZ 111.5816 167.0447 null] >> endobj -5209 0 obj << -/D [5163 0 R /XYZ 71.731 146.9551 null] +5144 0 obj << +/D [5098 0 R /XYZ 71.731 146.9551 null] >> endobj -5211 0 obj << -/D [5163 0 R /XYZ 71.731 113.2464 null] +5146 0 obj << +/D [5098 0 R /XYZ 71.731 113.2464 null] >> endobj -5162 0 obj << +5097 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F32 1266 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5214 0 obj << +5149 0 obj << /Length 1454 /Filter /FlateDecode >> @@ -21891,146 +21695,146 @@ xڕWM '��fݰu�"��MF���5���#~b�6C��>��قNZk(�^\1fJ.�n�Ռ�/H�f�l� �28�H;��=�OMs/|l(F�H�vp�� �˔�y�>C�x�ϐl�&~����H(�z%��}�s*ؓ�)�?Ұ� ���,ĸ��$�I�XhЙ+ܽC��{\}Q���x�&��|��$��4�j�9�UQ�xSܠ�ѓ��R�� �YA -�'_^�c�õ�>Cd�����z�{��" �Jf�!��~����'[�?L{�|�GMD���[� r��P��DEV4�+��wd�u�j�%p'n�S��!��s��"*�5�=�Ò||�{eT�#�5�sϒc�U��f|;@t�{q�y�2;��~d�����T��X�-�<<U0�^�@E�(��"�*�� ���Y��_$Q��T��1D��g���H���5fq���7;m!���R�Д��i�T 8�`{�Ff"p��Ǟ��� z���#�P�U�u�va�'��Ϫ."dYUg�+��d�ZF�ȩeY�k��./R`@��� G�rp��E���f��{9)����j�kI�і����`�zR�qU��V2r��5khdw����F�[���6�:�h�����~3�p�od�!��ѽ_R�,g�?zu�rx9�iYL�БI��7�����_����endstream +�'_^�c�õ�>Cd�����z�{��" �Jf�!��~����'[�?L{�|�GMD���[� r��P��DEV4�+��wd�u�j�%p'n�S��!��s��"*�5�=�Ò||�{eT�#�5�sϒc�U��f|;@t�{q�y�2;��~d�����T��X�-�<<U0�^�@E�(��"�*�� ���Y��_$Q��T��1D��g���H���5fq���7;m!���R�Д��i�T 8�`{�Ff"p��Ǟ��� z���#�P�U�u�va�'��Ϫ."dYUg�+��d�ZF�ȩeY�k��./R`@��� G�rp��E���f��{9)����j�kI�і����`�zR�qU��V2r��5khdw����F�[���6�:�h�����~3�p�od�!��ѽ_R�,g�?zu�rx9�iYL�БI\��7�����_����endstream endobj -5213 0 obj << +5148 0 obj << /Type /Page -/Contents 5214 0 R -/Resources 5212 0 R +/Contents 5149 0 R +/Resources 5147 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R +/Parent 5096 0 R >> endobj -5215 0 obj << -/D [5213 0 R /XYZ 71.731 729.2652 null] +5150 0 obj << +/D [5148 0 R /XYZ 71.731 729.2652 null] >> endobj 1098 0 obj << -/D [5213 0 R /XYZ 86.6464 703.6802 null] +/D [5148 0 R /XYZ 86.6464 703.6802 null] >> endobj -5216 0 obj << -/D [5213 0 R /XYZ 71.731 693.3509 null] +5151 0 obj << +/D [5148 0 R /XYZ 71.731 693.3509 null] >> endobj 1102 0 obj << -/D [5213 0 R /XYZ 91.0983 680.3995 null] +/D [5148 0 R /XYZ 91.0983 680.3995 null] >> endobj -5217 0 obj << -/D [5213 0 R /XYZ 71.731 673.2016 null] +5152 0 obj << +/D [5148 0 R /XYZ 71.731 673.2016 null] >> endobj -5218 0 obj << -/D [5213 0 R /XYZ 71.731 668.2203 null] +5153 0 obj << +/D [5148 0 R /XYZ 71.731 668.2203 null] >> endobj -5219 0 obj << -/D [5213 0 R /XYZ 101.8648 657.4854 null] +5154 0 obj << +/D [5148 0 R /XYZ 101.8648 657.4854 null] >> endobj -5220 0 obj << -/D [5213 0 R /XYZ 236.362 644.534 null] +5155 0 obj << +/D [5148 0 R /XYZ 236.362 644.534 null] >> endobj -5221 0 obj << -/D [5213 0 R /XYZ 284.4011 644.534 null] +5156 0 obj << +/D [5148 0 R /XYZ 284.4011 644.534 null] >> endobj -5222 0 obj << -/D [5213 0 R /XYZ 71.731 619.1293 null] +5157 0 obj << +/D [5148 0 R /XYZ 71.731 619.1293 null] >> endobj 1106 0 obj << -/D [5213 0 R /XYZ 131.5064 606.1778 null] +/D [5148 0 R /XYZ 131.5064 606.1778 null] >> endobj -5223 0 obj << -/D [5213 0 R /XYZ 71.731 598.9799 null] +5158 0 obj << +/D [5148 0 R /XYZ 71.731 598.9799 null] >> endobj -5224 0 obj << -/D [5213 0 R /XYZ 71.731 593.9986 null] +5159 0 obj << +/D [5148 0 R /XYZ 71.731 593.9986 null] >> endobj 2114 0 obj << -/D [5213 0 R /XYZ 71.731 544.9076 null] +/D [5148 0 R /XYZ 71.731 544.9076 null] >> endobj 1110 0 obj << -/D [5213 0 R /XYZ 109.9273 531.9562 null] +/D [5148 0 R /XYZ 109.9273 531.9562 null] >> endobj -5225 0 obj << -/D [5213 0 R /XYZ 71.731 524.7583 null] +5160 0 obj << +/D [5148 0 R /XYZ 71.731 524.7583 null] >> endobj -5226 0 obj << -/D [5213 0 R /XYZ 71.731 519.7769 null] +5161 0 obj << +/D [5148 0 R /XYZ 71.731 519.7769 null] >> endobj -5227 0 obj << -/D [5213 0 R /XYZ 71.731 486.128 null] +5162 0 obj << +/D [5148 0 R /XYZ 71.731 486.128 null] >> endobj 1114 0 obj << -/D [5213 0 R /XYZ 86.6464 433.8152 null] +/D [5148 0 R /XYZ 86.6464 433.8152 null] >> endobj 2203 0 obj << -/D [5213 0 R /XYZ 71.731 423.2278 null] +/D [5148 0 R /XYZ 71.731 423.2278 null] >> endobj 1118 0 obj << -/D [5213 0 R /XYZ 202.5889 410.5345 null] +/D [5148 0 R /XYZ 202.5889 410.5345 null] >> endobj -5228 0 obj << -/D [5213 0 R /XYZ 71.731 403.491 null] +5163 0 obj << +/D [5148 0 R /XYZ 71.731 403.491 null] >> endobj -5229 0 obj << -/D [5213 0 R /XYZ 71.731 398.5096 null] +5164 0 obj << +/D [5148 0 R /XYZ 71.731 398.5096 null] >> endobj -5230 0 obj << -/D [5213 0 R /XYZ 71.731 398.5096 null] +5165 0 obj << +/D [5148 0 R /XYZ 71.731 398.5096 null] >> endobj -5231 0 obj << -/D [5213 0 R /XYZ 257.3634 374.669 null] +5166 0 obj << +/D [5148 0 R /XYZ 257.3634 374.669 null] >> endobj -5232 0 obj << -/D [5213 0 R /XYZ 71.731 349.2643 null] +5167 0 obj << +/D [5148 0 R /XYZ 71.731 349.2643 null] >> endobj 1122 0 obj << -/D [5213 0 R /XYZ 127.0732 336.3128 null] +/D [5148 0 R /XYZ 127.0732 336.3128 null] >> endobj -5233 0 obj << -/D [5213 0 R /XYZ 71.731 329.2693 null] +5168 0 obj << +/D [5148 0 R /XYZ 71.731 329.2693 null] >> endobj -5234 0 obj << -/D [5213 0 R /XYZ 71.731 324.288 null] +5169 0 obj << +/D [5148 0 R /XYZ 71.731 324.288 null] >> endobj 2787 0 obj << -/D [5213 0 R /XYZ 71.731 262.0912 null] +/D [5148 0 R /XYZ 71.731 262.0912 null] >> endobj 1126 0 obj << -/D [5213 0 R /XYZ 248.6554 249.1397 null] +/D [5148 0 R /XYZ 248.6554 249.1397 null] >> endobj -5235 0 obj << -/D [5213 0 R /XYZ 71.731 242.0962 null] +5170 0 obj << +/D [5148 0 R /XYZ 71.731 242.0962 null] >> endobj -5236 0 obj << -/D [5213 0 R /XYZ 71.731 237.1149 null] +5171 0 obj << +/D [5148 0 R /XYZ 71.731 237.1149 null] >> endobj -5237 0 obj << -/D [5213 0 R /XYZ 71.731 237.1149 null] +5172 0 obj << +/D [5148 0 R /XYZ 71.731 237.1149 null] >> endobj -5238 0 obj << -/D [5213 0 R /XYZ 180.012 226.2257 null] +5173 0 obj << +/D [5148 0 R /XYZ 180.012 226.2257 null] >> endobj -5239 0 obj << -/D [5213 0 R /XYZ 118.4953 213.2742 null] +5174 0 obj << +/D [5148 0 R /XYZ 118.4953 213.2742 null] >> endobj 3174 0 obj << -/D [5213 0 R /XYZ 71.731 187.8695 null] +/D [5148 0 R /XYZ 71.731 187.8695 null] >> endobj -5240 0 obj << -/D [5213 0 R /XYZ 71.731 187.8695 null] +5175 0 obj << +/D [5148 0 R /XYZ 71.731 187.8695 null] >> endobj 1130 0 obj << -/D [5213 0 R /XYZ 109.3898 174.9181 null] +/D [5148 0 R /XYZ 109.3898 174.9181 null] >> endobj -5241 0 obj << -/D [5213 0 R /XYZ 71.731 169.7575 null] +5176 0 obj << +/D [5148 0 R /XYZ 71.731 169.7575 null] >> endobj -5242 0 obj << -/D [5213 0 R /XYZ 71.731 164.7761 null] +5177 0 obj << +/D [5148 0 R /XYZ 71.731 164.7761 null] >> endobj -5243 0 obj << -/D [5213 0 R /XYZ 109.5683 153.2991 null] +5178 0 obj << +/D [5148 0 R /XYZ 109.5683 153.2991 null] >> endobj -5212 0 obj << +5147 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F33 1358 0 R /F60 2636 0 R /F35 1709 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5246 0 obj << +5181 0 obj << /Length 1391 /Filter /FlateDecode >> @@ -22038,393 +21842,392 @@ stream xڕWKs�6��W�Vy&V%J���v�6ӝ����큖h[IԒT2�/@P~d5���@����@NW ��U��E�b&8[��]�:���] �1㩀���gE\�L�6�J�?�}�=+VU\ �{گ�4\d�")�,ϊ�S�W�ҭ7�'�4��v�qT��'�ռ�� �� ��u�d���:ei�MQ�F}�Z�z58;k��,i���������$au;�մ֙v�fI4� �����lU³E��N��g� �����?k��!p�_��X��c����G툦f�&��ʟ�8�NDU�i.�*-�ӵ�q��c�׀7j��ʒ�D��`�E�v����ӻm�i�TNR ��+��9����]'ò�}�dh�����Q���`�j��ST ��;�^�i)��+�����@�5�� 8/x��훬�K��%b�B�=���&�,feBTm���p�ľD���s~/����Ө��&i�u?NY�����[�Ƕ>�h������[A����`�441!~�����;8�u�O��V�êur�F�Bs�z �G�'���)��m{��^ZI��d���OZj�֑dk��������,?i��oo�9��~���IK����l�mv/@�,�����d?u�B�X��,�ZD?�����R��A� ���7Y��"�*H�"�Q֨aNv���_�hxU;>��V�Pw�&[ ���x�ݛ���O��1T�~�R2�sL�l~��/+TpO�u�Dj�ӯ�i�«�Z�D�U����Y��GLk�M���Bx�O`�4� ��O'B˺V� B��Z�\��o�N45* ��^]�?in��9�Ja�A�� �UCP9T�n�M�I{��/���� 컲�c���hx�_��p݇���w�i��~�@�9 ,> -8RP���1��7��)��F�$�S�ڱ�VO�V��ƝU��U`q�I�c���i�H@ ���"B�E����߬����Ҿ����u��W؋|���v�n�}��_phբ����= FGO��r>��ē�HU�.�MC��������iO�@�������v<�`�;tL�y���������'Ӻ��W5|>���)�!ز;-b�d��g�9��(2�ꃥ��=M��Jȸ�p>7���$��8I�2�-F���7*�|�a|i��r�0�1�4��H��nJ�yY���+hH�f��R��Ȳ��x���w[��9�,�m�9G-h���4�Il���<YR�2�×�A�_�Qr�;�e2��C��l>I_��K�Z�_����٣����Nv�!9wz��R~�}�t�'��@_+Sx�����\a���sxu��� ߐ�����|n��w -endstream +8RP���1��7��)��F�$�S�ڱ�VO�V��ƝU��U`q�I�c���i�H@ ���"B�E����߬����Ҿ����u��W؋|���v�n�}��_phբ����= FGO��r>��ē�HU�.�MC��������iO�@�������v<�`�;tL�y���������'Ӻ��W5|>���)�!ز;-b�d��g�9��(2�ꃥ��=M��Jȸ�p>7���$��8I�2�-F���7*�|�a|i��r�0�1�4��H��nJ�yY���+hH�f��R��Ȳ��x���w[��9�,�m�9G-h���4�Il���<YR�2�×�A�_�Qr�;�e2��C��l>I_��K�Z�_����٣����Nv�!9wz��R~�}�t�'��@_+Sx�����\a���sxu��� ߐ&����|n��Xwendstream endobj -5245 0 obj << +5180 0 obj << /Type /Page -/Contents 5246 0 R -/Resources 5244 0 R +/Contents 5181 0 R +/Resources 5179 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5142 0 R +/Parent 5096 0 R >> endobj -5247 0 obj << -/D [5245 0 R /XYZ 71.731 729.2652 null] +5182 0 obj << +/D [5180 0 R /XYZ 71.731 729.2652 null] >> endobj -5248 0 obj << -/D [5245 0 R /XYZ 71.731 741.2204 null] +5183 0 obj << +/D [5180 0 R /XYZ 71.731 741.2204 null] >> endobj -5249 0 obj << -/D [5245 0 R /XYZ 527.5668 708.3437 null] +5184 0 obj << +/D [5180 0 R /XYZ 527.5668 708.3437 null] >> endobj -5250 0 obj << -/D [5245 0 R /XYZ 71.731 691.2429 null] +5185 0 obj << +/D [5180 0 R /XYZ 71.731 691.2429 null] >> endobj -5251 0 obj << -/D [5245 0 R /XYZ 194.7222 681.7434 null] +5186 0 obj << +/D [5180 0 R /XYZ 194.7222 681.7434 null] >> endobj -5252 0 obj << -/D [5245 0 R /XYZ 71.731 606.3263 null] +5187 0 obj << +/D [5180 0 R /XYZ 71.731 606.3263 null] >> endobj 1134 0 obj << -/D [5245 0 R /XYZ 86.6464 554.0134 null] +/D [5180 0 R /XYZ 86.6464 554.0134 null] >> endobj 4004 0 obj << -/D [5245 0 R /XYZ 71.731 543.6842 null] +/D [5180 0 R /XYZ 71.731 543.6842 null] >> endobj 1138 0 obj << -/D [5245 0 R /XYZ 109.9275 530.7327 null] +/D [5180 0 R /XYZ 109.9275 530.7327 null] >> endobj -5253 0 obj << -/D [5245 0 R /XYZ 71.731 525.627 null] +5188 0 obj << +/D [5180 0 R /XYZ 71.731 525.627 null] >> endobj -5254 0 obj << -/D [5245 0 R /XYZ 71.731 520.6456 null] +5189 0 obj << +/D [5180 0 R /XYZ 71.731 520.6456 null] >> endobj -5255 0 obj << -/D [5245 0 R /XYZ 408.8762 494.8672 null] +5190 0 obj << +/D [5180 0 R /XYZ 408.8762 494.8672 null] >> endobj -5256 0 obj << -/D [5245 0 R /XYZ 91.6563 481.9158 null] +5191 0 obj << +/D [5180 0 R /XYZ 91.6563 481.9158 null] >> endobj -5257 0 obj << -/D [5245 0 R /XYZ 71.731 456.5111 null] +5192 0 obj << +/D [5180 0 R /XYZ 71.731 456.5111 null] >> endobj 1142 0 obj << -/D [5245 0 R /XYZ 126.3357 443.5596 null] +/D [5180 0 R /XYZ 126.3357 443.5596 null] >> endobj -5258 0 obj << -/D [5245 0 R /XYZ 71.731 438.4539 null] +5193 0 obj << +/D [5180 0 R /XYZ 71.731 438.4539 null] >> endobj -5259 0 obj << -/D [5245 0 R /XYZ 71.731 433.4725 null] +5194 0 obj << +/D [5180 0 R /XYZ 71.731 433.4725 null] >> endobj -5260 0 obj << -/D [5245 0 R /XYZ 71.731 358.8772 null] +5195 0 obj << +/D [5180 0 R /XYZ 71.731 358.8772 null] >> endobj 1146 0 obj << -/D [5245 0 R /XYZ 87.8032 306.5644 null] +/D [5180 0 R /XYZ 87.8032 306.5644 null] >> endobj -5261 0 obj << -/D [5245 0 R /XYZ 71.731 295.977 null] +5196 0 obj << +/D [5180 0 R /XYZ 71.731 295.977 null] >> endobj 1150 0 obj << -/D [5245 0 R /XYZ 106.9586 283.2837 null] +/D [5180 0 R /XYZ 106.9586 283.2837 null] >> endobj -5262 0 obj << -/D [5245 0 R /XYZ 71.731 276.2401 null] +5197 0 obj << +/D [5180 0 R /XYZ 71.731 276.2401 null] >> endobj -5263 0 obj << -/D [5245 0 R /XYZ 71.731 271.2588 null] +5198 0 obj << +/D [5180 0 R /XYZ 71.731 271.2588 null] >> endobj -5264 0 obj << -/D [5245 0 R /XYZ 135.3051 260.3696 null] +5199 0 obj << +/D [5180 0 R /XYZ 135.3051 260.3696 null] >> endobj -5265 0 obj << -/D [5245 0 R /XYZ 477.1051 247.4182 null] +5200 0 obj << +/D [5180 0 R /XYZ 477.1051 247.4182 null] >> endobj -5266 0 obj << -/D [5245 0 R /XYZ 91.6563 234.4667 null] +5201 0 obj << +/D [5180 0 R /XYZ 91.6563 234.4667 null] >> endobj -5267 0 obj << -/D [5245 0 R /XYZ 71.731 211.5527 null] +5202 0 obj << +/D [5180 0 R /XYZ 71.731 211.5527 null] >> endobj 1154 0 obj << -/D [5245 0 R /XYZ 83.217 159.2398 null] +/D [5180 0 R /XYZ 83.217 159.2398 null] >> endobj -5268 0 obj << -/D [5245 0 R /XYZ 71.731 148.6525 null] +5203 0 obj << +/D [5180 0 R /XYZ 71.731 148.6525 null] >> endobj 1158 0 obj << -/D [5245 0 R /XYZ 121.7728 135.9591 null] +/D [5180 0 R /XYZ 121.7728 135.9591 null] >> endobj -5269 0 obj << -/D [5245 0 R /XYZ 71.731 128.9156 null] +5204 0 obj << +/D [5180 0 R /XYZ 71.731 128.9156 null] >> endobj -5270 0 obj << -/D [5245 0 R /XYZ 71.731 123.9343 null] +5205 0 obj << +/D [5180 0 R /XYZ 71.731 123.9343 null] >> endobj -5244 0 obj << +5179 0 obj << /Font << /F27 1258 0 R /F23 1250 0 R /F44 2110 0 R /F35 1709 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5273 0 obj << +5208 0 obj << /Length 1488 /Filter /FlateDecode >> stream xڭ]o�6�=�2S%�#o���-[�aF�m���Rr ���G9r,��P0���}��.���4di�O_�E�����/BG' �"L`3�u%���O�)�����<`����a=�JDȂ8T��w����K��<&@,V<b<"Q}/�a�m�+�W�O3�a���m�i������qN'�C����?gy����r����(�<,#1ru�A��zZw�* 4��n�k��:n�� �K.�=�sO� �Y9Z��*i������G���{Ֆh:*CD[C>"�Cw�����ز��-�����˪|�b���z���[�5p>\��{w��5����7���VŖ�7�ͷ��%��=��#ӣ��F^��K�/$��{R����U|�3�W� ;\A�����PxB��ݺV���R�%(�� ����U��P�'�sY;Y*}<h�G"1H���W�_�Xd�_I�2w<�X������Q�V�sY�,N���N ��,�� �,�>�YH J�Y�_�� ��eq8rF��5�:� ˃$q�F}�UF��=�М�P�Hd/d�z?#ؤ,�3~�(k2�_�\��W�32#d��d�vΫKE>Z�f��*�X�� j�"�p*7��?~}k� �c[xy��`6bN!ڦ�Om\�8�O����/��c�e�E�H����"Mm:�j������L�X������������HOۋ�n�#gL�f���l�QR�lk-K��mmtC_]������Gs�ԬЍ 0ddc���4���V�˫���]]���"������=S�^�k���aK���D!����xI/�ݸ��j�8t�j��q3�j,�<eY.H�Y|�uD3)�gv� �W�O�l;4���/� AID���-y>��9�� =��/�c^�1��t��2<� ,m"���HF+�s���|���W܌�cz�8��r�O�Wc�O/���{�a ����Τ��،��w�圅��?̩S��8�H��~l���|�Y>靫��q�pծ�nK��R��m�;��<�X��c�m�h�3�� �X>-�TJ��'%��T��W����7N�{;�=dgl�����8"�q��0|-x#�� -^g�����%���W�+zb�#��7�!�X&���<�) ���#�`��Gn���������l�H����.��e0�Qt�A=Xec}���n�/z���Y���֟k�G����tD;`�-��"���Sv������'�!��n���@���::՟��P�ݦ��m�IB�*�OTg�[M�����b�C��T��LchI�ao;��Z��p��۹�����5v8�b��@90�c����I7�n�><��)Z����qɞ���F(V�V���m��X0�q�;�0V+��@z�|�����������pw���?�^V���3w?����jBs>� ��A�%GN�W�����4L�endstream +^g�����%���W�+zb�#��7�!�X&���<�) ���#�`��Gn���������l�H����.��e0�Qt�A=Xec}���n�/z���Y���֟k�G����tD;`�-��"���Sv������'�!��n���@���::՟��P�ݦ��m�IB�*�OTg�[M�����b�C��T��LchI�ao;��Z��p��۹�����5v8�b��@90�c����I7�n�><��)Z����qɞ���F(V�V���m��X0�q�;�0V+��@z�|�����������pw���?�^V���3w?����jBs>� ��A�%GN�W/��3�3��endstream endobj -5272 0 obj << +5207 0 obj << /Type /Page -/Contents 5273 0 R -/Resources 5271 0 R +/Contents 5208 0 R +/Resources 5206 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5308 0 R -/Annots [ 5286 0 R ] +/Parent 5096 0 R +/Annots [ 5221 0 R ] >> endobj -5286 0 obj << +5221 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] /Rect [221.9349 488.6257 256.6546 499.5297] /Subtype /Link /A << /S /GoTo /D (gloss-rdbms) >> >> endobj -5274 0 obj << -/D [5272 0 R /XYZ 71.731 729.2652 null] +5209 0 obj << +/D [5207 0 R /XYZ 71.731 729.2652 null] >> endobj 1162 0 obj << -/D [5272 0 R /XYZ 88.9395 651.0495 null] +/D [5207 0 R /XYZ 88.9395 651.0495 null] >> endobj -5275 0 obj << -/D [5272 0 R /XYZ 71.731 640.7203 null] +5210 0 obj << +/D [5207 0 R /XYZ 71.731 640.7203 null] >> endobj 1166 0 obj << -/D [5272 0 R /XYZ 193.5729 627.7689 null] +/D [5207 0 R /XYZ 193.5729 627.7689 null] >> endobj -5276 0 obj << -/D [5272 0 R /XYZ 71.731 620.5709 null] +5211 0 obj << +/D [5207 0 R /XYZ 71.731 620.5709 null] >> endobj -5277 0 obj << -/D [5272 0 R /XYZ 71.731 615.5896 null] +5212 0 obj << +/D [5207 0 R /XYZ 71.731 615.5896 null] >> endobj -5278 0 obj << -/D [5272 0 R /XYZ 488.7181 604.8548 null] +5213 0 obj << +/D [5207 0 R /XYZ 488.7181 604.8548 null] >> endobj -5279 0 obj << -/D [5272 0 R /XYZ 91.6563 566.0005 null] +5214 0 obj << +/D [5207 0 R /XYZ 91.6563 566.0005 null] >> endobj -5280 0 obj << -/D [5272 0 R /XYZ 364.9621 566.0005 null] +5215 0 obj << +/D [5207 0 R /XYZ 364.9621 566.0005 null] >> endobj -5281 0 obj << -/D [5272 0 R /XYZ 478.8046 566.0005 null] +5216 0 obj << +/D [5207 0 R /XYZ 478.8046 566.0005 null] >> endobj -5282 0 obj << -/D [5272 0 R /XYZ 154.739 553.0491 null] +5217 0 obj << +/D [5207 0 R /XYZ 154.739 553.0491 null] >> endobj -5283 0 obj << -/D [5272 0 R /XYZ 71.731 527.6443 null] +5218 0 obj << +/D [5207 0 R /XYZ 71.731 527.6443 null] >> endobj 1170 0 obj << -/D [5272 0 R /XYZ 106.052 514.6929 null] +/D [5207 0 R /XYZ 106.052 514.6929 null] >> endobj -5284 0 obj << -/D [5272 0 R /XYZ 71.731 507.6494 null] +5219 0 obj << +/D [5207 0 R /XYZ 71.731 507.6494 null] >> endobj -5285 0 obj << -/D [5272 0 R /XYZ 71.731 502.668 null] +5220 0 obj << +/D [5207 0 R /XYZ 71.731 502.668 null] >> endobj -5287 0 obj << -/D [5272 0 R /XYZ 444.2551 491.7788 null] +5222 0 obj << +/D [5207 0 R /XYZ 444.2551 491.7788 null] >> endobj -5288 0 obj << -/D [5272 0 R /XYZ 71.731 476.6706 null] +5223 0 obj << +/D [5207 0 R /XYZ 71.731 476.6706 null] >> endobj -5289 0 obj << -/D [5272 0 R /XYZ 71.731 461.7266 null] +5224 0 obj << +/D [5207 0 R /XYZ 71.731 461.7266 null] >> endobj -5290 0 obj << -/D [5272 0 R /XYZ 71.731 461.7266 null] +5225 0 obj << +/D [5207 0 R /XYZ 71.731 461.7266 null] >> endobj -5291 0 obj << -/D [5272 0 R /XYZ 71.731 448.7752 null] +5226 0 obj << +/D [5207 0 R /XYZ 71.731 448.7752 null] >> endobj -5292 0 obj << -/D [5272 0 R /XYZ 111.5816 432.9992 null] +5227 0 obj << +/D [5207 0 R /XYZ 111.5816 432.9992 null] >> endobj -5293 0 obj << -/D [5272 0 R /XYZ 71.731 420.8798 null] +5228 0 obj << +/D [5207 0 R /XYZ 71.731 420.8798 null] >> endobj -5294 0 obj << -/D [5272 0 R /XYZ 71.731 420.8798 null] +5229 0 obj << +/D [5207 0 R /XYZ 71.731 420.8798 null] >> endobj -5295 0 obj << -/D [5272 0 R /XYZ 71.731 407.9283 null] +5230 0 obj << +/D [5207 0 R /XYZ 71.731 407.9283 null] >> endobj -5296 0 obj << -/D [5272 0 R /XYZ 111.5816 392.1524 null] +5231 0 obj << +/D [5207 0 R /XYZ 111.5816 392.1524 null] >> endobj -5297 0 obj << -/D [5272 0 R /XYZ 315.2763 392.1524 null] +5232 0 obj << +/D [5207 0 R /XYZ 315.2763 392.1524 null] >> endobj -5298 0 obj << -/D [5272 0 R /XYZ 71.731 380.0329 null] +5233 0 obj << +/D [5207 0 R /XYZ 71.731 380.0329 null] >> endobj -5299 0 obj << -/D [5272 0 R /XYZ 71.731 380.0329 null] +5234 0 obj << +/D [5207 0 R /XYZ 71.731 380.0329 null] >> endobj -5300 0 obj << -/D [5272 0 R /XYZ 71.731 367.0815 null] +5235 0 obj << +/D [5207 0 R /XYZ 71.731 367.0815 null] >> endobj -5301 0 obj << -/D [5272 0 R /XYZ 111.5816 351.3056 null] +5236 0 obj << +/D [5207 0 R /XYZ 111.5816 351.3056 null] >> endobj -5302 0 obj << -/D [5272 0 R /XYZ 71.731 328.3915 null] +5237 0 obj << +/D [5207 0 R /XYZ 71.731 328.3915 null] >> endobj 1174 0 obj << -/D [5272 0 R /XYZ 85.5101 276.0787 null] +/D [5207 0 R /XYZ 85.5101 276.0787 null] >> endobj 2728 0 obj << -/D [5272 0 R /XYZ 71.731 265.7494 null] +/D [5207 0 R /XYZ 71.731 265.7494 null] >> endobj 1178 0 obj << -/D [5272 0 R /XYZ 176.6962 252.798 null] +/D [5207 0 R /XYZ 176.6962 252.798 null] >> endobj -5303 0 obj << -/D [5272 0 R /XYZ 71.731 245.6001 null] +5238 0 obj << +/D [5207 0 R /XYZ 71.731 245.6001 null] >> endobj -5304 0 obj << -/D [5272 0 R /XYZ 71.731 240.6188 null] +5239 0 obj << +/D [5207 0 R /XYZ 71.731 240.6188 null] >> endobj -5305 0 obj << -/D [5272 0 R /XYZ 71.731 240.6188 null] +5240 0 obj << +/D [5207 0 R /XYZ 71.731 240.6188 null] >> endobj 3400 0 obj << -/D [5272 0 R /XYZ 71.731 204.4792 null] +/D [5207 0 R /XYZ 71.731 204.4792 null] >> endobj 1182 0 obj << -/D [5272 0 R /XYZ 109.1703 191.5278 null] +/D [5207 0 R /XYZ 109.1703 191.5278 null] >> endobj -5306 0 obj << -/D [5272 0 R /XYZ 71.731 186.422 null] +5241 0 obj << +/D [5207 0 R /XYZ 71.731 186.422 null] >> endobj -5307 0 obj << -/D [5272 0 R /XYZ 71.731 181.4406 null] +5242 0 obj << +/D [5207 0 R /XYZ 71.731 181.4406 null] >> endobj -5271 0 obj << +5206 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F35 1709 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5312 0 obj << -/Length 1304 +5246 0 obj << +/Length 1305 /Filter /FlateDecode >> stream xڍW�o�6�_a`/23�h}�-i���:���=,{�eZ"*�I5M����(�Ʉ5�y���d�_�*VpXҊ�y����"^5 ��" *�<gi��@,H7/XU��js��fwqu��UŪd��)R\2���jw�'���q$M��w�;�g� lӌ�6iʪd�x�[e�[o8�FF9'"����)� ۿ�e���$�#F�;ei���E�;I�htcDOD'�f�dD��[|�6X�� ��8uA��/@��:ɢoj�:���K��$�n�l}�jpҌF:yXC���F�N ���:��Yl��%ћ���έA-�$F����s�P.��S{�QΡ�6�^�Y� Ya^~r9�n6�x��]8k�Ya}��7[Β�(��n���:����"�fE|��(B�@��VD0Mc�ge�n6UɊ�,��KӼ��>�T�B>)gi�?]���i�?]��-^Ķ ��9��=��5CYI�j�p[FGm��'ACƵ��C-�#����^[G�N�uRF��Y��:��b$��WD�����!Xj2\gpd�]8��x��*��t7�oA$��~C�%\�Q�I(Ȅ���68��=L�#�^Jg�߫A�SplT�C��%LQ���2�Ze_�A���~�\�k�� L,z��k�KԜ�3��Xt��ƍ��(�L��� L��ŪS���\�m���U��5�$���&�"�@ ;�L�}�.i�FC��.��0�dw �E�K7N��]��8��?�ϲ��xE�N�+�� �5p�� ��G�d�����Ko�Y,�kO���!V3�(@J.{"=|@M,�Z:�V��u�Ḟ#8�$tÃ̢`���}�Zu>=\�Rj~ṚWc[��,bW�tY�,O�M4�_�w�F�/���5N2����ap��O����rz��Om�k/����Q�'�����uK��鷺�������un���j���kϛ�g,����d��_>�%�m�Jc��}}7����p�ҿ�Z���~����������kG+�a�+������z���.IEв��m��e a�5FO��B�q�T=��/x�~��Ƞ�����s+ �ƈڵ�7�?^�M܅���<͡E�XM;�65�7�;"F1Ȱ}hUT:ݜ�`����p�麆�]�UP("�0�>�+da�C��(����p1 -�a��eĺE9`y)?z�������%q 1;u��G=�������0�!�� (�k��w���p�nw��_�ے� �u�APٜ��_Ͼ�2@s���� �J�2����B���^�endstream +�a��eĺE9`y)?z�������%q 1;u��G=�������0�!�� (�k��w���p�nw��_�ے� �u�APٜ��_Ͼ�2@s���� �J��e�ӯ���?���^�endstream endobj -5311 0 obj << +5245 0 obj << /Type /Page -/Contents 5312 0 R -/Resources 5310 0 R +/Contents 5246 0 R +/Resources 5244 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5308 0 R +/Parent 5096 0 R >> endobj -5313 0 obj << -/D [5311 0 R /XYZ 71.731 729.2652 null] +5247 0 obj << +/D [5245 0 R /XYZ 71.731 729.2652 null] >> endobj -5314 0 obj << -/D [5311 0 R /XYZ 71.731 718.3063 null] +5248 0 obj << +/D [5245 0 R /XYZ 71.731 718.3063 null] >> endobj 1186 0 obj << -/D [5311 0 R /XYZ 90.2612 708.3437 null] +/D [5245 0 R /XYZ 90.2612 708.3437 null] >> endobj -5315 0 obj << -/D [5311 0 R /XYZ 71.731 703.2379 null] +5249 0 obj << +/D [5245 0 R /XYZ 71.731 703.2379 null] >> endobj -5316 0 obj << -/D [5311 0 R /XYZ 71.731 698.2566 null] +5250 0 obj << +/D [5245 0 R /XYZ 71.731 698.2566 null] >> endobj -5317 0 obj << -/D [5311 0 R /XYZ 134.824 659.5268 null] +5251 0 obj << +/D [5245 0 R /XYZ 134.824 659.5268 null] >> endobj -5318 0 obj << -/D [5311 0 R /XYZ 71.731 636.6127 null] +5252 0 obj << +/D [5245 0 R /XYZ 71.731 636.6127 null] >> endobj 1190 0 obj << -/D [5311 0 R /XYZ 87.8032 584.2999 null] +/D [5245 0 R /XYZ 87.8032 584.2999 null] >> endobj -5319 0 obj << -/D [5311 0 R /XYZ 71.731 572.8966 null] +5253 0 obj << +/D [5245 0 R /XYZ 71.731 572.8966 null] >> endobj 1194 0 obj << -/D [5311 0 R /XYZ 86.6748 561.0192 null] +/D [5245 0 R /XYZ 86.6748 561.0192 null] >> endobj -5320 0 obj << -/D [5311 0 R /XYZ 71.731 555.5199 null] +5254 0 obj << +/D [5245 0 R /XYZ 71.731 555.5199 null] >> endobj -5321 0 obj << -/D [5311 0 R /XYZ 71.731 550.5386 null] +5255 0 obj << +/D [5245 0 R /XYZ 71.731 550.5386 null] >> endobj -5322 0 obj << -/D [5311 0 R /XYZ 71.731 550.5386 null] +5256 0 obj << +/D [5245 0 R /XYZ 71.731 550.5386 null] >> endobj -5323 0 obj << -/D [5311 0 R /XYZ 119.8414 538.1051 null] +5257 0 obj << +/D [5245 0 R /XYZ 119.8414 538.1051 null] >> endobj -5324 0 obj << -/D [5311 0 R /XYZ 167.6439 538.1051 null] +5258 0 obj << +/D [5245 0 R /XYZ 167.6439 538.1051 null] >> endobj -5325 0 obj << -/D [5311 0 R /XYZ 249.4106 538.1051 null] +5259 0 obj << +/D [5245 0 R /XYZ 249.4106 538.1051 null] >> endobj -5326 0 obj << -/D [5311 0 R /XYZ 442.1221 512.2022 null] +5260 0 obj << +/D [5245 0 R /XYZ 442.1221 512.2022 null] >> endobj -5327 0 obj << -/D [5311 0 R /XYZ 71.731 476.3367 null] +5261 0 obj << +/D [5245 0 R /XYZ 71.731 476.3367 null] >> endobj 1198 0 obj << -/D [5311 0 R /XYZ 86.6464 424.0239 null] +/D [5245 0 R /XYZ 86.6464 424.0239 null] >> endobj -5309 0 obj << -/D [5311 0 R /XYZ 71.731 413.6946 null] +5243 0 obj << +/D [5245 0 R /XYZ 71.731 413.6946 null] >> endobj 1202 0 obj << -/D [5311 0 R /XYZ 269.3776 400.7432 null] +/D [5245 0 R /XYZ 269.3776 400.7432 null] >> endobj -5328 0 obj << -/D [5311 0 R /XYZ 71.731 393.5453 null] +5262 0 obj << +/D [5245 0 R /XYZ 71.731 393.5453 null] >> endobj -5329 0 obj << -/D [5311 0 R /XYZ 71.731 388.564 null] +5263 0 obj << +/D [5245 0 R /XYZ 71.731 388.564 null] >> endobj -5330 0 obj << -/D [5311 0 R /XYZ 71.731 339.473 null] +5264 0 obj << +/D [5245 0 R /XYZ 71.731 339.473 null] >> endobj 1206 0 obj << -/D [5311 0 R /XYZ 165.299 326.5215 null] +/D [5245 0 R /XYZ 165.299 326.5215 null] >> endobj -5331 0 obj << -/D [5311 0 R /XYZ 71.731 319.3236 null] +5265 0 obj << +/D [5245 0 R /XYZ 71.731 319.3236 null] >> endobj -5332 0 obj << -/D [5311 0 R /XYZ 71.731 314.3423 null] +5266 0 obj << +/D [5245 0 R /XYZ 71.731 314.3423 null] >> endobj -5333 0 obj << -/D [5311 0 R /XYZ 476.5536 303.6075 null] +5267 0 obj << +/D [5245 0 R /XYZ 476.5536 303.6075 null] >> endobj -5334 0 obj << -/D [5311 0 R /XYZ 71.731 267.742 null] +5268 0 obj << +/D [5245 0 R /XYZ 71.731 267.742 null] >> endobj 1210 0 obj << -/D [5311 0 R /XYZ 85.5101 215.4291 null] +/D [5245 0 R /XYZ 85.5101 215.4291 null] >> endobj 4005 0 obj << -/D [5311 0 R /XYZ 71.731 204.8418 null] +/D [5245 0 R /XYZ 71.731 204.8418 null] >> endobj 1214 0 obj << -/D [5311 0 R /XYZ 107.2772 192.1484 null] +/D [5245 0 R /XYZ 107.2772 192.1484 null] >> endobj -5335 0 obj << -/D [5311 0 R /XYZ 71.731 187.0426 null] +5269 0 obj << +/D [5245 0 R /XYZ 71.731 187.0426 null] >> endobj -5336 0 obj << -/D [5311 0 R /XYZ 71.731 182.0613 null] +5270 0 obj << +/D [5245 0 R /XYZ 71.731 182.0613 null] >> endobj -5337 0 obj << -/D [5311 0 R /XYZ 382.967 156.2829 null] +5271 0 obj << +/D [5245 0 R /XYZ 382.967 156.2829 null] >> endobj -5310 0 obj << +5244 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj -5340 0 obj << +5274 0 obj << /Length 1975 /Filter /FlateDecode >> @@ -22432,127 +22235,127 @@ stream xڕM��4�>��*1�� 'fv�Z��n����g+��9�גy~=�������Z�Vw����O<",X�*��,~�O���#�}%�$��0�D�;��,)ª��ݚ����Ͽ���*�r8�IQ&iR<웟���>~���� -V��8KvqV"�]��u�o,�ep0#!���{<�cCGoU�F���TC$�r|�:�V��I\KC:~3*�fZ��k!DUF�n�,`��~�Fd���Qt {:P���To�S��`���e"�/:)�#�("n������aטz:)@8m�$�F^K�MÌ�M�mto��Lc���3�-�ؤ���yѮ���W?T�-����R&Y�9%i i;��M�Z�%�`6q���0uDٱ/B �d5"�B���C1?ލ�8�XTL�- "݁?�Ɠ|:�i4p2�� � dh�/� =:�/���B5D����g��N�����}v�����t�S�k�/Q����1*.��Ēo�`�������l&f7�9�s��#a�(�|��@aҾ!� b�#O1J�=��br��N��B�Yt��z�!������L�g������]��oJ�0�g+�q�@���0��Ca�Ԏ"�8��j���4�}��qLr�~��(P�@Q����7���B�p*��gR�K{v��3�f�هG6���L1xEy�8N�Ī�q�g"�2�3n�b-�n��������^6"���*cȃhՙ��Ꭿ[3Y��T@�@qt1ѩV�� f�a2�kP���"�"!ŗ��c�a�9�Sz)��潪Y���a��j�J��p�Ƙ��tgV��������7Z���o��$��h�vHCȓR�T����j��������b��Q{s/�(3�z�7�f�khmTݑ�^hA]�7��B|�~)��xe�gF���fK촸b��U��_R��L� ��� ��%Y �|�?�t�~o��D����6ڞs��s�/A�AX�#r�3�bk��Vףؗ��]�p��! �:>9�����&�.�P��[�>B����v;��нz��P�����gh�'~�[��N��0B�T����R��p>�Iv��b�Ѧ_%�HF�)�%�{>��-�c"����։r�RF["�c�J��5�\~��3�v'��(~���~����}=5��kc���� Ԥ���V�E��O�H% q4�!����z��j-�>$�<�JGXG��o���y�S�%��<h��en��H��Mj<o�,��w�W�>�R4z�eb���I u-eHT�Bm�^��q�����f -8�����4���X�^��a���v�sQ��#��7���"L��[Ͻ�/�̦���W�U�,�Le��h�����r��k0��欳~��㔲�;&�ڱl�\��@�B}��0[2aA���9;��剷� G�89M�賈y��<nK�9�Ҕ8#�l��d�>0L��{�.9t�'��6u�� �=�����Ͻ��BeU�^���� >G���8��{搵��U�խ�'p�+A�,ڳ��`^{��i�5��Aŕ�Kj��i����1-�Xy�YPN��Z!����FЍ=��y0�t����*�n����L h�}ͱϦ�oh1/��ր�%ޘz���`g[=bh#�+@0S4���l���,�J͇֜����l��'�l����ܳ��럄Ta���۫�6���l�����s[ź���H���];��$|�&EN���)Vε ��+�r{�搲�/�A?7iXg�̎��J꺥�p�y�K��9�P]�֒�@W<_᪉������<s>�������H�g54&�>��0.P~"��K��g�q������V��O-ؽ_|l�A�l��Y���X�r�"P�$�¸��k�ዧ�i~�p�U�Zt����_��K3˽?��d�����]����H%e�p�Ho�-��ݑ�;�5O}endstream +8�����4���X�^��a���v�sQ��#��7���"L��[Ͻ�/�̦���W�U�,�Le��h�����r��k0��欳~��㔲�;&�ڱl�\��@�B}��0[2aA���9;��剷� G�89M�賈y��<nK�9�Ҕ8#�l��d�>0L��{�.9t�'��6u�� �=�����Ͻ��BeU�^���� >G���8��{搵��U�խ�'p�+A�,ڳ��`^{��i�5��Aŕ�Kj��i����1-�Xy�YPN��Z!����FЍ=��y0�t����*�n����L h�}ͱϦ�oh1/��ր�%ޘz���`g[=bh#�+@0S4���l���,�J͇֜����l��'�l����ܳ��럄Ta���۫�6���l�����s[ź���H���];��$|�&EN���)Vε ��+�r{�搲�/�A?7iXg�̎��J꺥�p�y�K��9�P]�֒�@W<_᪉������<s>�������H�g54&�>��0.P~"��K��g�q������V��O-ؽ_|l�A�l��Y���X�r�"P�$�¸��k�ዧ�i~�p�U�Zt����_��K3˽?��d�����]����H%e�po�-��ݑ�;��O{endstream endobj -5339 0 obj << +5273 0 obj << /Type /Page -/Contents 5340 0 R -/Resources 5338 0 R +/Contents 5274 0 R +/Resources 5272 0 R /MediaBox [0 0 609.7136 789.0411] -/Parent 5308 0 R +/Parent 5306 0 R >> endobj -5341 0 obj << -/D [5339 0 R /XYZ 71.731 729.2652 null] +5275 0 obj << +/D [5273 0 R /XYZ 71.731 729.2652 null] >> endobj -5342 0 obj << -/D [5339 0 R /XYZ 71.731 718.3063 null] +5276 0 obj << +/D [5273 0 R /XYZ 71.731 718.3063 null] >> endobj -5343 0 obj << -/D [5339 0 R /XYZ 71.731 718.3063 null] +5277 0 obj << +/D [5273 0 R /XYZ 71.731 718.3063 null] >> endobj 1218 0 obj << -/D [5339 0 R /XYZ 103.2824 708.3437 null] +/D [5273 0 R /XYZ 103.2824 708.3437 null] >> endobj -5344 0 obj << -/D [5339 0 R /XYZ 71.731 703.2379 null] +5278 0 obj << +/D [5273 0 R /XYZ 71.731 703.2379 null] >> endobj -5345 0 obj << -/D [5339 0 R /XYZ 71.731 698.2566 null] +5279 0 obj << +/D [5273 0 R /XYZ 71.731 698.2566 null] >> endobj -5346 0 obj << -/D [5339 0 R /XYZ 71.731 698.2566 null] +5280 0 obj << +/D [5273 0 R /XYZ 71.731 698.2566 null] >> endobj -5347 0 obj << -/D [5339 0 R /XYZ 166.8364 685.4296 null] +5281 0 obj << +/D [5273 0 R /XYZ 166.8364 685.4296 null] >> endobj -5348 0 obj << -/D [5339 0 R /XYZ 408.4751 672.4782 null] +5282 0 obj << +/D [5273 0 R /XYZ 408.4751 672.4782 null] >> endobj -5349 0 obj << -/D [5339 0 R /XYZ 243.4665 659.5268 null] +5283 0 obj << +/D [5273 0 R /XYZ 243.4665 659.5268 null] >> endobj -5350 0 obj << -/D [5339 0 R /XYZ 246.8008 659.5268 null] +5284 0 obj << +/D [5273 0 R /XYZ 246.8008 659.5268 null] >> endobj -5351 0 obj << -/D [5339 0 R /XYZ 298.9104 659.5268 null] +5285 0 obj << +/D [5273 0 R /XYZ 298.9104 659.5268 null] >> endobj -5352 0 obj << -/D [5339 0 R /XYZ 448.559 659.5268 null] +5286 0 obj << +/D [5273 0 R /XYZ 448.559 659.5268 null] >> endobj -5353 0 obj << -/D [5339 0 R /XYZ 164.884 646.5753 null] +5287 0 obj << +/D [5273 0 R /XYZ 164.884 646.5753 null] >> endobj -5354 0 obj << -/D [5339 0 R /XYZ 481.1574 646.5753 null] +5288 0 obj << +/D [5273 0 R /XYZ 481.1574 646.5753 null] >> endobj -5355 0 obj << -/D [5339 0 R /XYZ 132.3631 633.6239 null] +5289 0 obj << +/D [5273 0 R /XYZ 132.3631 633.6239 null] >> endobj -5356 0 obj << -/D [5339 0 R /XYZ 71.731 610.7098 null] +5290 0 obj << +/D [5273 0 R /XYZ 71.731 610.7098 null] >> endobj 1222 0 obj << -/D [5339 0 R /XYZ 84.3534 558.397 null] +/D [5273 0 R /XYZ 84.3534 558.397 null] >> endobj -5357 0 obj << -/D [5339 0 R /XYZ 71.731 548.0677 null] +5291 0 obj << +/D [5273 0 R /XYZ 71.731 548.0677 null] >> endobj 1226 0 obj << -/D [5339 0 R /XYZ 150.0465 535.1163 null] +/D [5273 0 R /XYZ 150.0465 535.1163 null] >> endobj -5358 0 obj << -/D [5339 0 R /XYZ 71.731 527.9184 null] +5292 0 obj << +/D [5273 0 R /XYZ 71.731 527.9184 null] >> endobj -5359 0 obj << -/D [5339 0 R /XYZ 71.731 522.9371 null] +5293 0 obj << +/D [5273 0 R /XYZ 71.731 522.9371 null] >> endobj -5360 0 obj << -/D [5339 0 R /XYZ 192.9628 499.2508 null] +5294 0 obj << +/D [5273 0 R /XYZ 192.9628 499.2508 null] >> endobj -5361 0 obj << -/D [5339 0 R /XYZ 71.731 447.9432 null] +5295 0 obj << +/D [5273 0 R /XYZ 71.731 447.9432 null] >> endobj 1230 0 obj << -/D [5339 0 R /XYZ 193.2643 434.9918 null] +/D [5273 0 R /XYZ 193.2643 434.9918 null] >> endobj -5362 0 obj << -/D [5339 0 R /XYZ 71.731 427.7939 null] +5296 0 obj << +/D [5273 0 R /XYZ 71.731 427.7939 null] >> endobj -5363 0 obj << -/D [5339 0 R /XYZ 71.731 422.8125 null] +5297 0 obj << +/D [5273 0 R /XYZ 71.731 422.8125 null] >> endobj -5364 0 obj << -/D [5339 0 R /XYZ 71.731 363.2608 null] +5298 0 obj << +/D [5273 0 R /XYZ 71.731 363.2608 null] >> endobj 1234 0 obj << -/D [5339 0 R /XYZ 84.3534 310.9479 null] +/D [5273 0 R /XYZ 84.3534 310.9479 null] >> endobj -5365 0 obj << -/D [5339 0 R /XYZ 71.731 300.6187 null] +5299 0 obj << +/D [5273 0 R /XYZ 71.731 300.6187 null] >> endobj 1238 0 obj << -/D [5339 0 R /XYZ 163.9645 287.6672 null] +/D [5273 0 R /XYZ 163.9645 287.6672 null] >> endobj -5366 0 obj << -/D [5339 0 R /XYZ 71.731 280.4693 null] +5300 0 obj << +/D [5273 0 R /XYZ 71.731 280.4693 null] >> endobj -5367 0 obj << -/D [5339 0 R /XYZ 71.731 275.488 null] +5301 0 obj << +/D [5273 0 R /XYZ 71.731 275.488 null] >> endobj -5368 0 obj << -/D [5339 0 R /XYZ 71.731 249.6449 null] +5302 0 obj << +/D [5273 0 R /XYZ 71.731 249.6449 null] >> endobj -5369 0 obj << -/D [5339 0 R /XYZ 71.731 239.6823 null] +5303 0 obj << +/D [5273 0 R /XYZ 71.731 239.6823 null] >> endobj -5370 0 obj << -/D [5339 0 R /XYZ 71.731 176.6352 null] +5304 0 obj << +/D [5273 0 R /XYZ 71.731 176.6352 null] >> endobj -5371 0 obj << -/D [5339 0 R /XYZ 469.8557 143.6075 null] +5305 0 obj << +/D [5273 0 R /XYZ 469.8557 143.6075 null] >> endobj -5338 0 obj << +5272 0 obj << /Font << /F23 1250 0 R /F27 1258 0 R /F33 1358 0 R >> /ProcSet [ /PDF /Text ] >> endobj @@ -22564,29 +22367,31 @@ endobj /Filter /FlateDecode >> stream -x��T{<Ti�KiV��K��䖹�5�\�& r+"��1N�9�9g2�R�Um"��S�l$�"�Tj�[o�)����K���3S[���c�����y�g��3���{����y��<o_Kg��PҒEg:�7�C$�Ljʹ���0D"�������K�=����WL(�~$ ��_,���px�G8h�%r���kQ�0�HD �zy�[�q����0 ��(\�p�' Q6o���<D^4A��� �Bsj,��B9�a<!�?@��!��y����r"��� -���C�q����8J�#H��#BPY��V�����Hyn�h�EP�<�+��QR�Q2KBJ���\�0�!�P�I�ܔ�Ge�ʊ,8̇p��&J�ҖO�C���!�P Q��Q�k@HD�i,6��21�#(�!�%��-� ��6øb@���U��P������TV`�\�:S?�����Ob��3s�!Fo�_���:+D���}�M��(H�4>&~[��/@�xz% Q�:�|j�L:�-�+1��FHn$����?ʃq�[�AK[�8�/�F��Z�((�/����hF���r�����7�'�'R�ka5�{��ovq�� ֒,Y����ر���C� -��z5D�S�2Y�~߽V!�d��\�'��mm �$4&%ɶ��,���`���G�Hj��8����o1���e͔��+��Y�@� -�O�"�Κ�@ ��n����Z[0��Y��3���6�_�R��C�_�'˕b��2��پ l�h�����I�c�o]���5���p��9q��.�No_Xak��͟r�/0)v�g�j� 3����gM艱�MV�����t��\�τ�[�gS�*��*�8���oaj��3���^�T�ܥoq4e��ͪS�n:��4ȿ���B��I%�E��eJ��+#J�Eݡm����ku'�>d������h�g��a��(��ɱrZ������}����u�?�fu�z�?ۧ��3��|�J��۳_w����N:�����'rt�G-��#������j����g�%tU[�#�ٺn��'c/$�\W��a� �e���˞);�0`a��n{G�@k�=���Xk��y�& �N�15��z� -���)����'�x �zu�HG�! =�z��_��4]����6!��ٌ�G�\�b��B֚�4�7�\��H�h]��=������ڡ�K�YIs���T�M�?k#��:��Ӕ]�:���c�N����F� ����'�}�qviI k�������ۮ�!%�7ҳ^�TJ��t��?K�̭?��iSґ�˴�qMJv�{J3Z��h*ҡ}a�]����R�{��k�m�zzs� ��Xx��P_�.��[���DҳWܜ���acC��4ջZ���骕x�_Rs�����:=�}n�i��c�ca�s薾��t��8�*g[��O��ڳ^E�zd���fU�/z��$o�`e^:X^FK�1*����՜��t�@���Ӟ� �إ�� ��|�]U%SI`�j��v_\���JS�_y�ͳl�hx�R>֥���Q�-&���2z�6�_V#-�>r�$�� ���}R6���݁ j�:2��Q�N���H��E�#{���J6}�;�J)ߩc�7����v���Ė��UA?��|�b�c����4f�fF�^B)UR�T�]g<����H;W��`��� I�ss��n��S{+�+��iS�伪�|A�����\#�0,��Y�] �����ֶ�eL-ưK����}����jV/�'%.�f��5�����8AE黼���jg.�}�K��،��gI��l�<~]J�C�y�a�ހ�>�&�bY�a9z�L�&���!���ӛ�tt������T_�9�M��@w�����<B0u�C������0����No)��Y�^a�l��"O�z�s���ޞ�-�3��;�/�a;=qf���g���;�t'Xg�(Y7O���pq�>7F92����0{z�v��4f$�5� -��^�.�N�Pm��o�I�h��tgx�2� vn��ZBk�x��4�c�[ �B²��#��zk�����j��m4��ᔠ$L�-�r��������X�z��Tۢ�D�n��� -�7�L�=��X��\z��k������\�$ �Q���%endstream +x��T{<Ti�KiV��K��䖹�5�\6% ʥ�3�8�L��X�ɪ6� +Qڈ)[6IZ*�ح7�Y5��K,I��3S[���c�����y�g��3���{����y��<ﵖ�<,^���%��t�n��H0�ԚiM36v�a�D0� "a�+���,{�goO3��0G�$�[��b�d4�Ë>©@[#������pD�W/��+9��ԝ��a�!�� .�D�0J�f Á��p1��ȋ&蔖3 @a.Bm��\X(�!�G!A��8��0�@P�@ē@���p(!�QQG�ycIpqDH*����u�)�M �p*��qEQ0J*8J�bIA @�bR�+<� +�*7%&�E"���C���!�'� ��������'��{H(�(vc���5 $��4��I���Ɛۿ ����牄p[`\1 �w��a� ��p���TV`�\�:S?�����Ob��3s�!Fo�_���:�E���}�M��( +��9h|L����50_$����J�uF��t�[!�#b�獐� �)(p?���)�����q�oD�S��QP0�_65E�_�u+�,�7���)?I�!UлVc���fLb-Y���� +�۱��>�?dQ��>�WC$��A�)������a<N��������m���P�II���A,�:�<X,?��AG1���"2N~oh�[�f�bY3��;�J��>B+��Sz�ǩ���(P��c��0,������$aSf�a����k nA�װT����Js%�X��̯�/+�I/mrx}1����7��yW}������w|N�|�+���V�Zt�3B�� H����١h����l�Yrrl�AS���?b&��%W2k�s��6nƹ��i�J3��=�]��3�ܤ���kW�Ԯ��-��L6^�Eu�½������[G���T�Gs�,S��\V�ph/� +i����lZ�;���-?wo�{�m������1���c�g5V1g�L�[�b͒��>ۯ��3��|�����Q55�t8y�7��1O����[NW�םݭ�����] ��;R誶�[�m��'O�Fc��:�B]��6\;��=Szȡ��xٽ����V{�͝�V�]�y�& �N���15� +}�� ;~�{�pl�Su��^�:l������F��ܯr��^VWX�T�|��#V.Y�~�F���kV���ܟu>[Y�\�^�*q/�G���/�v���cVҜ�"Uk����+�N ���4eN'm����������p��$�ԩt�����Z��D֙�:t�}�5,�d����W%�1�~�;���%o�֟�ʹ)�h��ھ�&%�Խ�-�Y4���P}Y�r���;�~3���r{���"��i5��10�W������!.��U�&?���95M����e�j%����\w3zs���C�f����X�����oe�(ݽ��EN�ʹV�Sx��nPQ�Qmx��*�����ɛ/Z�WĆ��ђu��J3�9�s5g?.��z����u���/ɴXkC�;fW�EJU=�:��W�2�Ҕ�V^j�,["ꇔ�˴r^:���d�,�7���5���K;����ק��9]��#��1OY�q�x�Ծ�W�>�7 ;�d��ǸsΫ��]:��S�P�7mȺ`Hly�h]��~�˧��<7Nn�1�0�����zX��2��8��$<�A��*�c��7$=�ͭ�Һ�/O�`/���M]����]�V��s�TC��CfIv%��H�s��چ�1�C. Ro���v<<���Y����X�t�U�@/�r�~����^_ +���(��/QSC�b3�ٟ#���]��u)��Ɇ�z��@�Ke��q��3q�4N��;��nm���}���7>{GS}mK�$7IK�1l��/���Yy���'�ܪ�:��8�g��z��I��<�ꙛ�����{�;������|�4���ę)^�;����� � #d�<���Cő��h���B�Q�(`��Q*3�n�HLk����e�ߵ ]ʝP��T��֝l�6����v�e|�ܪ����>�ȉiN�+ַN��e�G��4�t�%K�h=�d^�1�)AI�.]��c�#Fe�c�^�-橶E͉J]65'nLo4�(}H�g-�X����rς�7���'��I, +�#i��$�endstream endobj 2777 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5372 0 R +/Encoding 5307 0 R /FirstChar 202 /LastChar 204 -/Widths 5373 0 R -/BaseFont /WSTENU+Dingbats +/Widths 5308 0 R +/BaseFont /JTOXHD+Dingbats /FontDescriptor 2775 0 R >> endobj 2775 0 obj << /Ascent 708 /CapHeight 708 /Descent 0 -/FontName /WSTENU+Dingbats +/FontName /JTOXHD+Dingbats /ItalicAngle 0 /StemV 0 /XHeight 400 @@ -22595,14 +22400,14 @@ endobj /CharSet (/a150/a151/a152) /FontFile 2776 0 R >> endobj -5373 0 obj +5308 0 obj [788 788 788 ] endobj -5372 0 obj << +5307 0 obj << /Type /Encoding /Differences [ 0 /.notdef 202/a150/a151/a152 205/.notdef] >> endobj -5374 0 obj << +5309 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj @@ -22616,7 +22421,7 @@ endobj stream x��wUp]˒��e1�3333X��333Z�`133�b����b����~o����&�D��]�Y+W�ʪ؛�XI�^���(ao�B����P��5vu�������1�1�Ñ��:�\,��Č\�<� �)@h`a0sssÑD�<�,�-\�T_U4�ii��i�+`���?;�-���܀6��@;�?�퍪@ ��0��D���$T� _�@;��� @����� gi�sR���6�X�L��L-�*͙���3����4��� �at��Ep�:�Z:;�yX:̝��\����`igb�j��?v3�� 98��������d���l�d����UIL�<],�\���l�� �7�ijo��WI�����Y�9\�.�2L-�l�<�����d�7 WgK;�2�8͍�Lm���`�`�՝� �O�98�x�������`���1c�cf�����OnsK;8ƿE���������ÿ�܀N7�ꯙ��C������` -4�cT�w��@��S��O����W�_��&�j�����<�+�����������s�����1�W����������0��@�]���A����LL�0Z:KXz�M�,]L,�fF6z�����)�����G˿��gfb��������_Mg��hg������7oFiyU )��M��R�������b�V����,�����xӳ��Y8��\��.Nf��"��0��\��8Yz�t�����w�����J�_`��L�M��U#;�?�����&�NN�����)����8�4�[]�7� �J��p������c u(mT+*����O���4|� eh���h�\<sx?��9�чiCٛ +4�cT�w��@��S��O����W�_��&�j�����<�+�����������s�����1�W����������0��@�]���A����LL�0Z:KXz�M�,]L,�fF6z�����)�����G˿��gfb��������_Mg��hg������7oF qI Qq��M��R�������b�V����,�����xӳ��Y8��\��.Nf��"��0��\��8Yz�t�����w�����J�_`��L�M��U#;�?�����&�NN�����)����8�4�[]�7� �J��p������c u(mT+*����O���4|� eh���h�\<sx?��9�чiCٛ ����KJ�_��I��I{Ĩ_��q��}�SnB��I�pwRYE�� �`��� ���:�ԭ ����ዟIZC<Frj]��9E���#�����p�/��<��xXr^7D����\<A���ޑ4�G��6�B�L�#�\�������#�WX�'�����#Į�N^A�Is}�C��{�Mf�ķ՝��I2g�k��'���fKu#��n��9����.p�Ǐ�|;����"Ra�! �Aב ����_�l���捕�ո�!{��gpW�2����gc���,������d���l�� ֠�[`��(���>�,�u� ��As�ȫj��s�l�sT��d�w^s�MMS�x�����9I1T 0��-�HC���[QܓDc���� �Z�aη~�G��f7�c������]��Ǩu����G��#�pKC=ћ���χ�9i��br��^Uu�<�Q�K�?� �Fix�e�yL�W~X�d�ъ<Kv�������>�'-&22<jFj�֮0L�<���M�=0aRE4f"���Z�x��U�ҝ\�ɮk:M?:6��}:�b�5��j��a���a�Q���RMIs�Ͱ�F%�KM�֕�����ѽ #&H�+\�y�3�f w)EK�ko0���m�P�A��*x���Q���9D�������i��MJ�y�F��;1�Ŀ��,��6���@bw����w�ѥ�P���O2��t+?��яu��f�������Ё�[�t��N�\\�O �/+?� @@ -22664,23 +22469,23 @@ Yɳ (^9��4 ��&�,��T�$[n��~%oD��r�}GH&����� �wp�y����Ü0�1҆�&z�]�Q��l����]���L���</��8:�Q�iSk���ȳ�����Y>��n� ���E��08(W@���P)t��2�;��u����pܔ�� n��ׅ7����S�V������R3o=5�w3���Re�!�/ӾJ�Ғ����;i��ЫPÆ�p�Y�-�M����P��9}�<����h���ƭ�LB +�6����wj��8r~\��#!<��l�X?��� ��Q�}YL�H_�k���&}Y�?/=�^LSd��]��dNPlu�Q�)��t���cjB���#l[L�D�@�7��/�p]�F��Mn�p��#�[/G0"y����k͏�OR)N���g�����w8`���e�/w��+����lF�J�S|K���4�h�����*N��rMȸ �8�ݎ'����羚s.!xXy�٧�'eB$M�+v��m�\��]JR�%��G6!� ��4��jEF�4/>J$��k?���� ,q���o��c���嚕��h��U�+a/c*��;V~;�J���]�p���?�j�8)�Bd$qY��q��ՉhJ���[9>��l^{�W�rهj Ex6�`����X�����W�!D���d@���`���:ŀ����ISЀW�ͱ�I������p�aASb�Sy��;M�u��|�?o1٘@�*D��K^�2�M+�� �OԵ�l���t��q������ �s��V����W����������!�S�R������H�Q��������'?J��3��7gy��}.B!�)ۊ3�I������9|����V ��qẴ�7f�w~H�%��}��HD��?F����.�a��<�e��AxOwt� �c��T1ŝx���t�r�qć��TW@��z�r���_T!ɪ2���^-�F�{�O�/EO�O��mՒ&˴�)���&֍5�(`D5����>�� ̮鎤1OR�����rfRFz"����8��h�~�;dX��P��H��f�/Iۖ]���Uc�xv4'�!��ݼz_�'i�S��5�0�n�E�g㺕S����ݍ-{�X[՟3�d0l�?�Pl�`Ce鲊0n"s&j���m9��-XV1pu�Y���zI�%�)��p�W�bP�5a�T'ϯ��W� -��QԶ��]��xl�Cm}����YA�7GK��}!�I-�� )&�W���լ}�_CՇi�`#[)��mF� ���.s3+I<�Ь�;��%Z g���"�/���L�)뗜��T�T]w�.Ac���')BintzD(�~e��Dq��N����:e�[�jmfD��pke�9�eډf���wnj��&"}�2�b�3��S\4���t�8 W0i\��/��'I�+5:��ؘ�2k��z ��I�����lmR�!�uT̘��TYP+f�@�����U�*+K靴εڜ�{�D�e_��H��6�wW��ؘ��W��g�K�P�� C�k��娾�yWHc�u5����N�T �L���(iVt���%V���i�t�rg��O�j����A�~ ��_��~�2�C��#r�I�U��Gl��G�E�N��E!�L�m;e��i?GI]O�a��Ք#�IL�>x���*ӷ���e�S��1�ݕ���8S�R�$�~K��j˸�a���"�E���|m������]E���$^m�Ca�B����im��c�Kn��p��ƧWi#��Q*�>���@_��N�-MFJ=2�\"�9*�4s���/�(/����z/��q+�s:������Q�����A�ե� �9hA��ۍ1�^��� 9�Y��}&J�}~�����S�?��;C���Od�5"Ro��oa�-ȩ���W�������@���Y�:�:*ǩ2�p��� ���������5���x�dendstream +��QԶ��]��xl�Cm}����YA�7GK��}!�I-�� )&�W���լ}�_CՇi�`#[)��mF� ���.s3+I<�Ь�;��%Z g���"�/���L�)뗜��T�T]w�.Ac���')BintzD(�~e��Dq��N����:e�[�jmfD��pke�9�eډf���wnj��&"}�2�b�3��S\4���t�8 W0i\��/��'I�+5:��ؘ�2k��z ��I�����lmR�!�uT̘��TYP+f�@�����U�*+K靴εڜ�{�D�e_��H��6�wW��ؘ��W��g�K�P�� C�k��娾�yWHc�u5����N�T �L���(iVt���%V���i�t�rg��O�j����A�~ ��_��~�2�C��#r�I�U��Gl��G�E�N��E!�L�m;e��i?GI]O�a��Ք#�IL�>x���*ӷ���e�S��1�ݕ���8S�R�$�~K��j˸�a���"�E���|m������]E���$^m�Ca�B����im��c�Kn��p��ƧWi#��Q*�>���@_��N�-MFJ=2�\"�9*�4s���/�(/����z/��q+�s:������Q�����A�ե� �9hA��ۍ1�^��� 9�Y��}&J�}~�����S�?��;C���Od�5"Ro��oa�-ȩ���W�������@���Y�:�:*ǩ2�p��� ���������5���Kendstream endobj 2636 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 38 /LastChar 122 -/Widths 5375 0 R -/BaseFont /BIMSWH+NimbusMonL-Bold +/Widths 5310 0 R +/BaseFont /WEGFCE+NimbusMonL-Bold /FontDescriptor 2634 0 R >> endobj 2634 0 obj << /Ascent 623 /CapHeight 552 /Descent -126 -/FontName /BIMSWH+NimbusMonL-Bold +/FontName /WEGFCE+NimbusMonL-Bold /ItalicAngle 0 /StemV 101 /XHeight 439 @@ -22689,7 +22494,7 @@ endobj /CharSet (/ampersand/asterisk/hyphen/period/slash/zero/one/two/five/eight/colon/less/equal/greater/A/B/C/D/G/I/L/M/N/P/S/U/Z/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 2635 0 R >> endobj -5375 0 obj +5310 0 obj [600 0 0 0 600 0 0 600 600 600 600 600 600 0 0 600 0 0 600 0 600 0 600 600 600 0 0 600 600 600 600 0 0 600 0 600 0 0 600 600 600 0 600 0 0 600 0 600 0 0 0 0 600 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 2399 0 obj << @@ -22705,7 +22510,7 @@ x �w��zؽb�d�'g'3G��3�5�����u:[�8���z��WOs��˟���^i^Qg� �tw���09�ۚx��~%�w�U��l�� �@KGs[���+�+����g���ҽ�����_ѐ�������ւ���5���knK��ϰȀ- �6ֿ��.���\��mퟙ�{-������-�X!ί)��3���}"�$���o��'�j�_���<�+�����������}��^o@�瞱5q��k\��W����� �WG-����߿�2�&��" �|������o3�I -�4W9�Y,Ll_��/���h_��k[_�XY�S��ـ����7��k��r�U<�������w����: ���@���R������������`b����px��|���Ѱ�s�`��r�2���^������_h$�f�?���l6��4���\_5����6���_c�͐� f��S�S�kJ��v���l_\�^��_����Wn�T��0����1{h��-K�3ԍkK�5 x�K�CAד��B��ð�bX��z��u�C~ F��UsgcTEհ� �x�����Ο�5���=��Yr���(����#����[����o_/`{� �� R � RG�;d +�4W9�Y,Ll_��/���h_��k[_�XY�S��ـ����7��k��r�U<������(�w����: ���@���R������������`b����px��|���Ѱ�s�`��r�2���^������_h$�f�?���l6��4���\_5����6���_c�͐� f��S�S�kJ��v���l_\�^��_����Wn�T��0����1{h��-K�3ԍkK�5 x�K�CAד��B��ð�bX��z��u�C~ F��UsgcTEհ� �x�����Ο�5���=��Yr���(����#����[����o_/`{� �� R � RG�;d �j�{�3lA��F��es�`Y�J=$~�H�Q��b��~��ۑ�!��(�Su���&��=_��s�g�&U�����&[�}���R��ga��>ɿ�6�n2�o�ӟ-˜ڷ"b�$J����T\�y����[9y� .6��fi���u���}���Z���=�'���jy�"d!���bM|겏���k�C�x�O~*J� ���/J�L4�_U��S��D\Ʃ�Z�^����H��zJP���f�3�˛g xa8n��T'fo/9�MQ�~⥻�/���E6���Ѡ�w=W l_ "����!LG��#��R�EvK�m��vd7��Y�F�n I�]�jq�Q/M<a�n��WC��c��P5MHlm���R?2���U^����4"�U"�� * �����{}8� ���wc�����L�h0��a�u�.ݭ�')�:B�e�EzN?�:5�oׇMf�{|-0ds���~�}�3<�=�2����QBT�k�}��D�mj��I;��:�V4Mگ�Q:))�p�*R� a�����h�o��ҟn��P�{Ɇ�0�v�q�Z�ĪK���ȳ�e�l.��ɒ����r���a�ş�yI�H��*"D���Q��|����L�t�|���އ���p%������~��n���TD:&[{0.���9���1�]@T�"�<�p�z�}A�/ ���V�_�4C�Y�';VAG(r@�������6A�m:t����m�Ѳؗ�cF�6.��ղ�o�W��t��#*W��I v�u�o� ˌ�R @@ -22732,23 +22537,23 @@ T ��|߭���A�Цba�aq'�i���:jgǔ��ۑɍzb�,����.���P���F���v��,�މ(��@5W|[�Q�p���y��aA8d��# ug¿n���gF��9�{+��DW�$<��J_�PL`��K~�+Cyu��;Ds�;S|��K�O� Tf�6)8蔯}�� ����MƕA�E:P'#Y���@�3�,���?�t.d���t�>�����F�d�lK�t���������)�We�a�yZH-��w)��*�M��i.윳���l�ml�%m��?�� �?Qn�o���S9G�I{���v����������c��;Z����)�l�`E䴡"/��b��C�X��Nz(g�����e�e�����!g�nz���x��BHͮׄ� ���<|ܐ>�S'�`uw>��P�>#v�ѩ���T6�<��r(֠_2`>����a\c�O8��mgQ������v�B���X"���ݱ�@��g����H�Ch$<��"���/&}.�H?֟U�c_���<�9D$(A- �ZS�Ӫ��v��֡4�u�=����)16t����M܊+^�a�ro^��N7�r�"��zV�$|&�� ���q�z\� �,���q�%�!u�2�=���k0��me!��3F�^���0a��`��97e N� \�H����N��q�� E7L<a���w�c0����)�Y�3����[���H&�J��j�$��8kom�E9k^���0��g9w�.}^s�`�y�!Zy�l֑��븭Cկ���R;�T�\�٦�빟��(��.Cз�{�Te�������S>�{���Y�"� -*�o*&�����A���O��M�!v&�6H����endstream +*�o*&�����A���O��M�!v&�6H��b��endstream endobj 2400 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 36 /LastChar 121 -/Widths 5376 0 R -/BaseFont /VJIVPO+NimbusMonL-ReguObli +/Widths 5311 0 R +/BaseFont /EOBLVA+NimbusMonL-ReguObli /FontDescriptor 2398 0 R >> endobj 2398 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /VJIVPO+NimbusMonL-ReguObli +/FontName /EOBLVA+NimbusMonL-ReguObli /ItalicAngle -12 /StemV 43 /XHeight 426 @@ -22757,7 +22562,7 @@ endobj /CharSet (/dollar/quoteright/parenleft/parenright/comma/period/O/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/w/y) /FontFile 2399 0 R >> endobj -5376 0 obj +5311 0 obj [600 0 0 600 600 600 0 0 600 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 ] endobj 2122 0 obj << @@ -22772,7 +22577,7 @@ x ������ �>3@�� ���v0���cfee���KPP`��/ v����n`{��lO�`(�T��_ �����˟�L�..�B���s����p2?+���9�!p����� zj̓��4���ܡ�Al���g����j�� V��g�� �?6+��� -��N��Ț�OjOG�_ ��9��������;�}m ������w�z�����apq,m@.���ӑ������c�j����9�@.����߫�O�k ��{��]����R��Q�b�����)%{�e����s��������o���/-��j����V�(�@�-=i�����p�Y0�5�̀�ɯs��L�#c �i��\;^���!��r���)��I�O�8T�T��8���Q�6���ߎz�\���7�vI��=����������R��d�����ܖ]P����� +��N��Ț�OjOG�_ ��9��������;�}m ������w�z�����apq,m@.���ӑ������c�j����9�@.����߫�O�k ��{��]�����PT4�c�����)%{�e����s��������o���/-��j����V�(�@�-=i�����p�Y0�5�̀�ɯs��L�#c �i��\;^���!��r���)��I�O�8T�T��8���Q�6���ߎz�\���7�vI��=����������R��d�����ܖ]P����� ���/L��d;;?�_j�_Ie� �� � ���4��p��� W8�I��N�)�_{��S�`���8 ��V������pg���y���ѕ�#�q��[�Ԯ��7�R �ư�X��*2bX,�l4����T>A(>�B�G���Ћ��L���(���]iϯ �4%W�bң��a0"����w��Q)�Jr���w��o�����4�Pg�e��A�ɘJ��7�J����em�f�s�RX|�3a�.�'E�B��ܷ��-���A�>%���Kl�5zL��A�R�)��������%�ݹ�ŹG���٣u��\�Tw��X��m�(DO*�xC��O���K�W�OD�V*��[;�"�8�4��"9ՉJ���@���s���|�����;�^����}���/�/�;� �h\�I��~b�\�_KYANء��[���:��V��Մ�F`Y�Wצt�z������$���7��a�c�� @@ -22813,23 +22618,23 @@ w �&��a��5'RV���3f���I��@�X�����h9�y����J��235��Z\�{�^�Dbyy/L�Ky��v!F��1d�?�������:��~y����MQ�T�����J����-���P6@�3�E�U�Ɋ�s��"�y0�O2o%b�H����*��M�)�ȉzS|��!d8�u�����s��{ ��FE�Z"r�f#���f���]?߭c��:_ "��3����%��3�������Z�SqKk��$Ҙ�md����,-�h{ٻ}����!�C�O.Ӕ~�x�F:1�X|愎ˋ7��?a�<��dRby7t��N�=�����hSxDn��D�;�Y��;3��d�O����q���[x�g|4��4�q�ӹ�������$�V��BYp'oPB(��g���{���$�$0��K�T��+DZ���*��<Β�?Y�ݭ�^��̱���h��̍9#���6��i�hSa����ʾ[���ڷf�Ւ�$K�܇�������Ղ$�Tj�f�����o6�0�r����S>+�%�~���(� �.��XRk����y��nX����l��Z�?6'�,��ɴ6ܱ,=��(=>%[KC8C��@� �j�U� ���Ϫ��nQ��t6���:�I���ؔP�Ɣ��kaQ��kO����g -�4b�X1p��FgrPʡ�ӫ���9��m�Y����1eu�2;�˟��~D��ۿ�H7m��H�_~��y)BnWXm%x��>�H�y��-N�rZ�UY�>�:���}� ������_~0�?�� {�9��`������]`�?����_�3�endstream +�4b�X1p��FgrPʡ�ӫ���9��m�Y����1eu�2;�˟��~D��ۿ�H7m��H�_~��y)BnWXm%x��>�H�y��-N�rZ�UY�>�:���}� ������_~0�?�� {�9��`������]`�?����_X�3�endstream endobj 2123 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 122 -/Widths 5377 0 R -/BaseFont /RLSTIB+NimbusSanL-ReguItal +/Widths 5312 0 R +/BaseFont /VPIIYW+NimbusSanL-ReguItal /FontDescriptor 2121 0 R >> endobj 2121 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /RLSTIB+NimbusSanL-ReguItal +/FontName /VPIIYW+NimbusSanL-ReguItal /ItalicAngle -12 /StemV 88 /XHeight 523 @@ -22838,7 +22643,7 @@ endobj /CharSet (/fi/quoteright/hyphen/period/zero/one/two/three/four/five/six/seven/eight/nine/A/B/C/D/G/K/L/M/N/O/P/Q/R/S/T/U/W/underscore/a/b/c/d/e/f/g/h/i/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 2122 0 R >> endobj -5377 0 obj +5312 0 obj [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222 0 0 0 0 0 333 278 0 556 556 556 556 556 556 556 556 556 556 0 0 0 0 0 0 0 667 667 722 722 0 0 778 0 0 0 667 556 833 722 778 667 778 722 667 611 722 0 944 0 0 0 0 0 0 0 556 0 556 556 500 556 556 278 556 556 222 0 0 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 ] endobj 2109 0 obj << @@ -22849,67 +22654,68 @@ endobj /Filter /FlateDecode >> stream -x��{U\�_�%�Npwww� �ݡ�B -+<x���Npww ���2�w���}�i��7U�9k�o���٧ފ�BU�E��� ��p�������\5�@J,��k7�? � �&l��!�0A�f�?������9';9� ;� ǟ5;�?]�U]�����0���CI;Z�9�@` 7''{ �R����bp$��S�f%�rt�rZۀ���u�����p��{��!���A���{G��2�����.���+V��L���]rz0�I������cu�b�l -�YJ9:�%����g�@�ş�����7;����?`+ ��o-Y�9�i���n��� -�!����y�9��9����O��Rjz9�Fr���,}}��ȭ��]�@+������;������߉��C�� �Z������_�`�����f`�'�;+;;9�_������#���_�*f�r6i I ����Q���$Y8���Y8�y�L�E�W�����o����d����ʑ\������-�\\��&9��Ƙ����8���r���!;�������G����`�{Y7{���B�w;����J�D��#�f.�n�����^��@�ߧ�����6�ZH����i�U� �T�-l�>.�p��o���� -��&��p�p��i��\]����(����Rʀ,-� kr �4s��'�m����Ǟ�Пw����)��X �,:Z}�����X+A�����k�W���7R�=�+T� -�]w�r��긍h��24dh�L4����d+<v�|�)k��� �%����a|~jװ�EŽ���$�F�#�?ɣ����'8"Ҋ�*�O����A�������Ǻ��m��R�?�4�<�}�Gn>}����2]X�D���C�_��� vO�p>۔wX=9�|�2rZc*$�l^�9h�Z�d��ÄK*��Av�[�"H�i�����س<�,���~��D��h]���zO:���W�f��Vo�ec� ���Z�pK���A��ZG"~g�z$���w�K���Xu��Y�{ɦ�X�9C�8�h ����.�.W���.V���2�ůesnУ���y�3!gh�}(:�%C�dž���κ������1�֜(�U~�'HN�|JV�QBd�t��Q��>v���hEgM�I�`���y&��"p��<���R��=Ϟdz�Zօp[]c������J�J���W��y�ie��~臐�Y�N0��Ok4wj�����ջ�Z((��b��ҩ�*�*D �{k|̡�MsP -�}��F&���#i�$[:,�T����D�%`.e�cE�A|Ў��%\a����� �����mWP�RL��Z+� 1�J,h�,��C �E��!nˉ {5���S1��Y&4�t�� �-�"W��o~+��avgO��fGnn��ф?�銪��d��ڠj��s��I��ݖ |7���+�,)���*��"2�6��{S�w�W3[zطԃ�͕g�ڈ�?zDkg�����&c�.�x�R�<�Vz=���̭#>��������zƧ�c���P�Ͼ��?B��zP����~��� ,�c�c�(ۛA�B���Yk�O���Ye��!��Ń�k�qjc��>�:"��?{��g�*N�w�P��0����F�oY��G��%���(�c;��~"ôg��j����Y��G�j,ʤ@k� _�OJ��T����X��Uh�[�%Uł�#w��߄�m&��dVr��.�R>;\����d1��$o���� ->�Z��$t]b�~}�Ȣ�,9��1�]��i�u;:����K�SV눲C��S��p�p7��b��Y.������J�]��b����@�p?oG�ד:W�`*nF�����Bc�yUy�h�L�?�rҠ}H,J,ʽ/�إ�>��� īғ������<�sYw���.s�����O�����2��Q���f��ؓ�e)=���n.�U����d����A��N�V��SXj��S~p_%��� ��ml�-�!ѩr�l:��r���3|r�0�&�J���<Zuc�%[lB�b����:�М3i�~�y�:>��u2�ĸ��X���x�Q�%��J���U�H[�89��;���g���k��=�I1����Q��Qݽ�ͥ��d�Oՙ)L��=E�+�U���@V��7h ���p��*�S~v�N�$��dc�ۇ��N�+壬\#�[����{�h�k.�[s���z�25E�r��Xӥ�b�w.��q-�O��TfY�8����)�;ɀI{��R����L~2$~,� �{O�� �nG�]��`�A�����|�[2 ����{�n%He�?�Ӱ@zK;��Z�l�B��zi���L��NC֔8���C`���;�.xp��2cf�'�7ZV���аG�}�`z����e�N��ѫ9mm�h�܄���Y�5�h��]Kە�h�9���A��"{uH.���4j�\�C8*����) j�)�.�s������v~���5��F���y�Z��T��$u�[��.��L�B�)<6�~��W��$$��V�zY��P�MH所������pS� -S,fT(\60��������q�*��M�=�9>�x�@�gvc(w%������Ve'�Q&{`��M#e>�+3�^$1�L�+T4��q�Z/�yn*6n��P ��e��A�5~V=<]�w����ػ���a�N�D�\ѐ�Wm�q�q#��x:)�ylr�����s7��B�[}����Y�l_�� �)fM} -+�f7�%�u�#-��m -.f�Î|/�nH����?X��)�cO�ɸ,���F�� �0D1����*����/(��^��nl��ɨ�����q�`��w���XQ��t�u!M&l�\'M�ʯ�gc�\K@{�ߐ���ų�G��μ��h��f�`PӋ����"F�z1&��` �9M���%����:�Vڝw�1��s��Rӣ�m`'(���y�VM��h6Y�W��Z�y�WpD㗭a��(=}_�[���p�r�m�9�Ԯ���b���Њ�._��k�y�I�3�B�т_�wP�n��_��kԧ��кG��dd�������x�{�9L$W���۰�zL�X*��#�h�`��= Ol�:�o84�۔HGȦz�N���������dJIFr�e�L۷������P�z�:���+��QB�Ѵ��x��B2;�w��|���^q����v��\�Oc�����d��#ܵLK�M/�<�wH���+g{o�j��yA0��'�\�?�$�1��W>=;�Mg�����"#��1���Ju�A�3�h~.��l\\@�.�D��ptT���y�PT%'��s��ٚɉ�{Jy��3Q�Y?��')|�u}���+���h�[Z����Q�CV6�`1���P��p�%#�V��ivJ�0r�� �hF2:�g}'��Ƚ�o�H��E$��Y|U7�AL�:\6O��#� � ([U�=��J��h��F�A�Ş-ق&�(��`G���2�}�9y���7��|�蔦2R�IhQ���/|F�����ό��S�v��1������b0�H�fW5w��ݪ�~ ���w6]�nZ��Ď��l����z�츌����ۖ�~( ��� ��"ڿ@��%��ZATcBs�_h ���8�,���%�m.�]���avZ��g�M�f�-}���� �[Х��ʴ�t�q?�7�hA�g��Ɯ=bo�ŨE"H�0�s����l�h��&£�hHɀP�-�r���K*�G@�J|�h��d�[4��Aߧ�l���*�A��:�8�:�;�@ąnJ1`���%h�n6H�AW!���Y�}p�k���1�0�W��ڠ|w�����l��Uam��u�$�Ť��[ņU(�ˌSY0n�\La�_ܦS-C�L��&�p�J�e�X^Giʮ�\�˼ݩ���� -�5 ��K���g����!� -�0&�җVr��=�LN9�F���Ԟ^�"�_��������Y+H�����f�t ��sK��?�f5mw�l�N������Co��#��A;B�J�ɹ'7d��9Ny��n���9��P@�ly�OmR��~��Ս����^�٬��~N(�bC�y%�ts$�"i��>�Oyof�q��PÙ�we��J!f�4a��`��2�^�q���K��"�;�q��B�!��zoU���,��,�|nZ�]�[v��XQg��&4i0ά1�����|[?_uw#BD��r�y&��d��j�����a�Q� �L��ZJv="�G6�9i��Ovޏx�Ё�#�ߏ��Y��%���G�(Sx�G����+�JG�ڭ`�MaG��&;R(چWj��ޓB�X��T�+��"9���?�Į�(I�g���~��������-��T�I�a���Ob����-Y��._9��ʹ c���Ȟ^�p���Nψ�t[�x�r��qoo\���a�U�b�g+}�: -"��� ��Di5��"z�h��ۖ���;�p�C����n]~H[��UF_!�d�K�Ih�\Ȉ�1�� -����!I¡����D�m����3x��Gf�����9p�M�=H�"��$��R�โ���e-�e��G~��\�I&��˦�\Q!����-�����{�P4��#�G���3�~��#�ӡ���s��0ߐk�w�OZ�p�H��Dl�,��V�֞��e-��m���5�w:�2��A.>�z�� C\�9���A�7���V<�0-�-�J����/�_0�m����W&ɩĚPw���F��)Eοr�ά'��g.�~n��u��R���G��2���W�d-%�*c�]�D������b���KM�),��+����*VŬ�~7���n�|5%���B8>��Z��o]}����'h�f���*���&n�ѰM�I�eA���A�)�h�tB��P�N� ��6�%���z}��k� -���@�عڒ����X'C ��=dTJ"N\��$�� -;�dn�V@%-@�̉�o�&�'ᶓ������?'�b�W�0e�EM���ּTb���hk�x���~gX���U���J�)2$m��%��O�ޤ��L�#�*9d���7�s&"�T�G'�T�=��GM�4NWw% � !�L���n?��tS_湁K�߳*�)qb�&d�\#E�`����r����ߕ^kgd��]�9q$`{`S=�j`R@y��pTG��a��h�{�)قs'�ֵQ�u<bv����� -���@�W�����@�ꮚ��E�����B���aec�P��8�ԱG���lA���R�ͥ{]�P��M�ǐ7��~�} �`h�r& ��[�_jq�� ��.���K�7�S��d�:���gE>��)@�x��?��%��K�+ڋ_�� �j]&�^��lV�4 Y��'�R����2ˉ������\g����e����v.�ҸI�B�~��L��q|��J��ğ�q�d}?" �~z㰎����U�pi�C�0���FԦ�y��m���iޑ��/��_�U-��s����U�I-y�k�I����q��W�[���5���js�(=ř��;�Z�=1�iP����֕��Y�}��$l�z�K� �v��*�$u�ȗս�xh����W��R���W���<e�k��|�L����(�8���E.��Z�d^�j�AH�����Oՙ#9AN��ܫ���(� -���aw�vǘ_���N&��x$-nN��ԷO@Ɇ��k��7 ��03��Cd1�� �;���b��a��-��d�-3]q4�V���n�a�7�� ~|��3ɱ�m�kV�f����F7�|�� 4!��ML/�ג�qNB��U@��� -0�X):�t۸/�fa{�q�.�>(����\�2���Q��ޫrͅj܇,�Ug��o� -����T?q���=�8G�ri ~���V��+�T#��� y�38�@�uU�C���$��r�1D�{x^l�x7�C�&x�b�x\�³x��D^�Mz�E���x�����!&>y���_OZ�S4㧳IML\o�,o�"8X��ըI�2�h����s0��I��:��̫�!}��d?�ta����_ -����UK:�M>����qL]�~������&~|?��W���!��CҚp -��7���<�b�����g�Y_�2����3�����/�p�8��l�i���.d���e]�%��7��Y�C������c7S�lw,�GzL`�Fco�j�(�erX!ky|���G���"5��JG #R�mM��58����>Q"�GA :��ӧ���d�J�����$>ɮx6�m8��%~O۲��!X]_u������n�p�S��n����7�Y8hb�+zm���G�<�e��ӥ�,��*�Fa�\�(z�VI��r�)(K7o�S�~�� �[& [Q;0ܨ;��^e@%��#�F8Z(}�k;� 'j����{$��Ĥ9-<�����2x3P|^ޔ]�v�mz���w�5�B�L�t�͐��xn�� L�PD,(k�BǢ���D*���_�3��kV`�ͰQ+B^;u���8�b��}?+��BQ������hq�����0<��`ס�b<�QМ|���C�֏v \f4w)�ʌM�g�hw�p�o`��\LyB�:(i^��/�B�j�{�=�J��"VC�/�i��Hd|I�yV��^�7TF09+K���5��H�J�z�|g~�� <�S����9�H�Z�@���I� %�d)��9x=�N��٢x(S�,M��s�P����)-��D2͐�Yy�I��cxY)��e!q�A�$�*߽<:���|�����6��j�)�*0m��~z�M��ҏa�����̮]i���C�o�"A�=�� -|2$��)M���ӁЂ�o='&�����EH�.��O�����W��Wly�̷t�o�έS�'ǩ���B5<��yW���55��z�b�K.�f�?G��},0!*�J ~<{�c�ևK2,���82y%�'���+g���&n���1?_�����`j�Aw���o�ʂ��_�0� U�R�ۜwr�N����?o5� -&�g�iY��+}�7ٶF�ւƧ��~�����H��`�hE5�'-�g�h1����qv�J �*Ʒ*ʑo�#y�B��1���t������YA�?L�g_����u}1V�(YvKc��� ^��:�����M�kU� ����,��>��wGҳ������a-O�W�J|��BU���3�O� ��y:9fQ���z2)�=^�胰#/�JI5 -0H -0K9�*M���kIm�_� -��z����S}Ʒ쀸ߕ ��'��k!��)�6����a�`��o�5��(�s>��sJ�J���#��^g����]g��ӣ�|�n:HG-�Aay�����xt{��\�yi�U�7i�.#KOy��p�L�Q@�UG�T.����)]zb�B@�� ��9�y>���N 8�Hg�Vհ9���A�3E&� us�ɿ&�C"��-�y�}|x>:��ի<x�����W�F�}������P����5�?�ҳ������@�����;�3��?C�ڬ��y��C*m�ixM������Z5h�پ2�{� �v mG7e��vo��s�����7pH�E[~�k�]_����/��ad�^�Q�EN�E+����\��n@���A���@�c^�������}�J�swN�+7�Pm��/��5��rf,H�c����>�b�,I�by��C�W�;�)�Ƞ�Q��[��};i�WC�� %u��V�o���M{5�J���)�n~D��#X^`F�*�Q����Z4s�wv�j� -�B犯<ibY�D�ʊAFNݗa�����@�{M���7�Đ@C�Bd�=9��c"����V�6����W��R��/���FfWe��ި�Z�I� �OU��C��m5~}�����y���o�v�-}�>7�ʭw���.�?�/���B�>x� .���k��q�E�qg��@�?(Gf~���k[������� �f ������x9d��%�,�x���7x��B9]���,�'�*8���3������%M �����Ѯ���4��H�O�秂H -i���m�pz��1(ߠ������s���I���S֛I���Т����|*�5��ś���o�͛3=l���i�ϴN����V�E�hȷ\ -����j���"����ž��E �)M�����D��� -,��k���<�2���i�����|��ie}J��2�����у��h ��E��rk��Hw�$܊�FV ��jBC&�����ì����5Ӹ -ʠ'�rXoŮ�9}֦��'ѯ�s����Ի��h�<�dT����F%*t;��b��l&\U��wPb���G:4r��E���&bS�o��?w�s�j�&_U�f�k�I����Ǯc���M̪1��;�H�/�|t��\�<��=��� �����()N�k���+�&��1[a�UP`�V�9˶��*OC+۶�P����F$��B�.3�OiO����W��o6�Je\Ig���z'.� #��\trnZ�MC@,Q]�\}a��(c��ݣB����V�K�a�-j,��%bf3��oux�r?�n�\��7���t��A�� -���x�\ j@1��w���J��Fͥ���yu�n���:�C�CvI��r�Q̫�??р7�b ���5]U�#m:�ʖFQ�G� f�Z���I��_����c���T���/TD탿/Jc��/�sD�r�y��R[��<��\�GΆ�&����f��H�ޗ��Y� -�N@C��c�?!��XK;J�h�%�j����k3�q5��8}q� rQ���]���н^�U-V�{6'�MÚ�ʌi=���7�c��K��4TiǮ]5�z��;�,��:��V�4�H=�X/Rmҗ�D>�5^㊣n*`b��n�ĈB�����g���`��qʉ5���u�=:�o��DX�N�{�3Oc ���S?���;��xs_��mn�XU��z2��نi`�%0B���)EV�C-�<�DR�@q��G�B����ąf�7y�J%$/_��U�Xѓ�������C��=�8��!LV V�}�=g���;^���n1�J�I�3=��;�Q���Y�,����@� ��Xc�5d�KuhF�B��a�3D��=?�h���y����ĵN���r��� p�����&̠|���n��m&�pq�U��@.Ԕ���:���[,�� *1�'R�,w8��i���W��a�N������"= -���w��N=~�0������]@�����.�����.M����)�P)q e"0�E��NA�` -��k�Ds�J�Bde��<$t={V%�WZ]� -�,��P�6MQY��ƪ�ޑ�2�Ǣ��X�E;Iv�!��wI�v�����5�&ӡZ��_c��g��G�8�|�����{ĺϹ��uybSS6��]V*J�V%�s,�p��lx�������{RX���<��st\�ek�Ks�jD,md��cP�]1�� �aRf�钓,�Q�� ށ�jp��(bRn��~f��bnS�x��eۼ���1��=:0�%����<�%�bB�k)��'���A��'p3�r���f�&^�8�������l�-G���.���gǠ0� -�I[>VQ6�-vN�SHр��5w��/v{�Ex�8o��d�+<�N�Sʆbm��Nj���#�o�E�s?qaW���Z���z�Q�Ye� �Y���yp���Ȳ����{�<-J��+��P�����9�6T�S�L(��g] *� ��k5�b���_}_�lc���U](<�>�*xyKr�u��6��"c������T�>/� U@�ϛ��|��Yj�],�e��bmԩYV�*��Ͳ���*n��y��V�E�h�b�N��$4�x�����ߤÂ�X��>:=A��)5��o [z�j�� ��x��Rr�,w���wە�͉���t{�$r��ۂ�^��E�����Ds��FX������0���9��)d|͠���8c��Wc4�'�~���e�X�����J��'�-ѣ]3K�^��l�k��ᕿ���'�6$hhN�NW����E�u�E*Sd���C*�/�>[[�t03Dz����Zb� ҫ[r G?9uT�~P═�v����6��iD��S�x�k��7,3��:���tNJ( 08<s��ğ��ޣz���N �s�Ks]���/e�!�)�1)�h��),����� �c�v4�-��;k�~��#����I���ں�4�wz'j�+|&�+�F��ӎ�����M�t��9�Z�c��p��td6xl|T�����ooζ�_�r��2�%.��ƛ����c�*��o~>�^��KW����!�@+�W�=�MjQ��!��n9}m.'}�K Y>�Š;�/� r�su��L����|�ƍ�PtPOσ�O|�H9������G�يI[�KC��>���Ϣ{u�����#\�r�V��{ix��`|D��/���'����mM��x�+���{,�q+��桌�\�_�&o\ߪ-1{��Tu��CT^~J"A�PO5w\6���h�7��Z\�^^C�ڭз��+V�2K���x�yl�� ��y�t+�&�-Q I�W��[��:��ߴ"���ҋ/�+��_k"`�7��2����K�;V�8kD�A����b�)��^�˦.�]A���g]&6>�r�8v�UT*<1���������D,�e �+��Or,LZqNɆfB9��\�@'���M�Œ�����b�2gG -�F�,JɎ�),6��}nd[z�K�i��I䭭���,,<bP��/M�φ��/*�[��w����.�����Sn�+���2�}���u�n����7�|��GQ{S��o�����\�X�b�ު(?�ּ�҃Tq�/ -w�P$���i�'ͷ��o�t��PtϮ�/�S�,�97���[����B�A�bo�y�Z��6�<�|��JD ?�� ӄU������{4�V�ژg%}m -^��2>1F�g�wǖ"�G͊ox������+�0�.��/k����LK������w3P���5Sq���(��X7WL��ߚ��5P)�Ug$m�P�\�գ�4�}A_�*��|�-��^<��]t�L�vkS�`�y�����S��}.�&.7H�����f�癁�K�k�����{��S�}wv.��8(m���P�dlax�7N���H@o��5��rq������E�2=fgx��Nk�C�M'����O�g3#�S�EgZ��G�e#�IgZK�� �i��N�j��^� �Mg���.�u.x��]��E����W�/�cu*��ϙg� -�4�1�rp�UY"������~�ѿ� �]��{����4���Q+E� -�1 -���L*���*��%��wf��&�ɘb�8)� c��6l�"� ����lW��;t���������m���D��O�+UJxC��n��~�l� Y�IQ-�k3:C�o�Rղ����E���%��0-W�˧`�*j���f�?z�uR*B1�ŖFǢ���h_�(Ӻ�ڃ.@�H�.�ESā�!�gIu��ORpp�W�#����-k1���-Ԕ�t�8���ΐ�x�'���������A���OX��\��f.vH>.�W���_@�_��endstream +x��{U\�_�%�Npwww���N�Vx�`����� �'��;���}�{n���y��T=|笵���^g�z+ +5M +'������.H�t�pw�4)�h�l����<�H44Z@��?�?��+�tI����Z������������<��\�tr$Ws::�����W �%�d����5ݝ���+ �����%�M���Oe���\����hc&����e`bb��! @n���\�����Yx������GB���)��X5ks+ ��v��m�`gA66gks���͚��1�)Td%������_�I]���f�w��AN� ����� ���d��̦ ����+���/��&�a�d`�$���,m��J������l���uvr&�6wp��H�n��r��;���'������ +h &����9������+��]�^������}��2�s�VN ����;��tT>J��2�{�����t�#����M�����gR�( +�p���?���C�́�U'��$@�N�o珏�h����g6���6���]_� ����kt��y��L͟��8R�����sȺ;8�����A��7r%�q0w��psG�����¿��>�����Rd��O��n�@/��li��q���V���5'7�_7�������8-[��=����,�F@V��Rd�dِk��L����?��hKwW�?��������5�O����iu��R�]���z "O���\_y�~��q#�8@�B ���Wq���H�M؊�B+CC�����y�H���ca�bA�G��6 ��\!��\�%L��O�;������zЧ����s� y28<rQ�#"�*�AT=Zb�} �P�w�W�[�f�OC���:�L���������lqiH�'`!L �xeA�_�'�;���b[�e�R?�\����y�y��<�u���%z����.i�<��5~� u�m�V��k�S������3�՞�n�M��������������cM�fA�6��Z�m��=7� �_hD[:��{���^�5�j���Wl��GN�����A�&2��j�ru�Q9b�{����ڶ�}zZ�^�rF�G��\2�Q�l�-q�k���ܱ���l�IR=�G��G��+gd�]E�`D�)m!�Dx���$��f;:k�o�&���i�g��T��L�*��qx�d�������Ҩ�:�x?'����T�W��H��F=ϻo;���� �|݊�N��}z��s�x��܇�H����}�ba�5;��n�v)T��G�c.U\��R��k�2�(�I���QQ���M�(� �s9[+�-�N<�,��*����'��o�ƣ +�b2M�z�%�yMRa�dE�=����x(qGn�X���{n@Ľ��� +�i�30�|�h�n�ݐ��&����d��|Tg��=�3mڞ����˟&�YLOT� �(��UϦ����\"�p~WV����;J�P��뚰&�������-!�u?�I��rOF67F� cN���Q��;O����]{|�i�!��ۡ�����������$O�ۿM"� �雜-ȎK^�Ba��uc~���C���7�27M���k��l'p +�>he��u=_�IfW�Y�2H �j��eV���WO���������p3ۀPu�X�����ӄ�4B�?rt���1#A%�FA�V��=�^Q�nW���=��r`Q&���aǪ*U�Q9�jmaq� Ԡ�um���8� +n����5i�N�c�ˬ.��]դ~,u�"a��f�I�iLE�A|� H��"��b�M�Uv�g���=���v��қ3�anE ��.aO!��)8��ha� ;�Od��z!��kd0�+w�!�vl�����y�!A_�Bْ���.*B +�5�M�%�2%���Y��1�8�8�Hs� +��z/�F_�S�����#t�1���̍A��uv�s��x�G��ɲ�bϞW��@n��@V�&��EW��_�ʤt�,.��Rە���C*A�,h����qIv(GDg��s��+���x�)9#|[(m�" �i5M w�� �KQ�W$B�.H� �5�|�6)BbItp-�9W�J����T�'�d M��(`�n�ٛ�/y�D|���J��Wƥ�� b|�W�.��-�5�f0m^٤ެ�2TE6���Y)n��u䣓�Y���~|L���Ax���ֲ�n_�[{�/�O�r͌�����D;>�pi�Y�L�D�3W�+�VBwŒř-�����+�цS��`��2��^ā<L�aN��ML�P�z���o��!�cY^����b�N���^ +F�o�%]�>���hPu��8�3���*�qߙF2�:yV�3�R� 6�S��Ȩfc�w���ű�e�B�E��9��C_�� 3g7�w��e�H �x�?$fd�S��_Sf���Y���3��O�|W���X'�q��ֳ�S=�����.rd(+vЀ��lL��G=F�"�o�����T�D~7�M����[w�mL ����� �JU.�B��m����K�t��D��SS��F�i�abr�oE�ו�` ����H(a�^�߉��k0�b�E�_g?����$n}GE���p��������]�Fk�9r6�U��a��Ԭp�LY@��̼�E�<"!�H��2qҶ�O�s��ƀ�ۮ'T�PsՃF�wXu�߇�OW���t�~,������-C�0|7d�g�hh��뎬����!|<�T�|6��������Oa��m;�!��r�v��t�F%��Ӫ�3��d�qN@��Oq-!E¬��Q���w��,������'g+��Se2���zy1�����Q,$09-��iy���F��W꺨���y2�����sAܻ� ���]kjw�.���D��c�۔�Mb�M�\\�[h_�I�^X<��i�s��;.��o�Q�(5����lb$�W2�!Mv�K�ݳ$JOY���sl������+mu}�%_w�#k[��ԥ�*��S���X�5��� +�j��3�~W����}\RB.S�����`��ӛ8U��:5^5��K�˺?Mr!cT0^�/f�����q�拷~�VM�kxB{OA|(̘iN�Q~0���Dr3,tϻid����©8V��!����|�����s�EY�C)��p�lV�/��+_X]��^��lCF���d4�QGf۬s��[ `>Ÿ������5-�C���'+-$�XtO*�מ�����b�Hȅ�<.Z/��J�q1�]ϴ����3s�4te�z�N��>Q�s�q�ƅn�#^��CeU��y&34M^�'���i��w�˨�-:���f�K�g3���mY7�{����x�����+��9�m��H�'&g�o��}���D �2^�d�y�(�}B�צv��1:w��Z#,Ӣ���m�b�݇(a�2������F߬� +���`�"ngЌet�/�N�v���� �4���IXͲ�jnAm��b �l^2m�:�Pvj~��A�I1��͖C,��}۲�-��+�!$N�������ԯ�X��1�-�d �:Ӱ�B�/���Ià/6^"�� �7b�}21�v�`�ͯ�2繁{��� +�m{�ݵC�k `�%���;6���ss?6�v��W@t͛r/+Btx��H>X�)��:������e��괺���"����~E~�V��myQ|�]1m7����Z��VE� ��G��i��� +%�q,o�نn����97v��ʋQ�D��i��A�����b�]�G�Ɉ$��,G"Z��� �T���4��v�n�Ȥ�dZ�~@Y5��I-UʓR}mdi�m2wX)���=��A��M��`�&!\-����� !�Do9z�'�̟-f�C�����s�h��TE�}�6��S�ȷ�U��aD���!�ir�E���[��� >Z0#�=LW!�\`y]�i�����g�߱��(��5"�H�S^d���*�`�+?Z�E��s9�$��.DlrgF!�`A��<�&Z&f� e'|������~����wp:&�z��rŎ�h���y�� +qW���N���0�K_^踍K��l��*3~���P`�\e�R��A]��&����ʷ2^접AN(�R#�%�$�bi�L�*��ws�xVt���M����J�Ps3�p�z0�,D`?Ť���5Hx_�ك�$��h1��[�?�*X�Pkus!/-��=�JA�8�s@R�4�g΄Kg�nd�c�����!2�W9�"F�2�|�B�O��f�0��RA&�w=%�>���/���к�����t�ܨŷ��b'�p��Ç�Qc�T^Gr�Q������юNk��@ğ��d�)N�v�:������F����k��HN���O�q4J�9�y�џ��9��}��ZJ9�!)5�tI���^#�s$<䫿��2���&#�g�ީ^����!��C��Uٞ#��πk��?�j_N�lg�QGCD6Wt���)��~�GDo��zߖԹ��N�3�q��7?7l���䵎�(��Jz�3 �u1A~]�s5�<"I<r@��KXxr���~����^g:����K4<� (b�N���u ^���X�Cڦ���w�.t�Zd8>o)���::��qx��*������"�N���cP?���l�f���<)�&L r����i��N4�>����%�����Ko��ϕP�m�X�։n�1�[>ȥ�7��y!b�K}G�6<h�&ؽ���W�Ŏ�~)��q�E0�+f��\~�|��9�X�! +㮲G3Ҙ����A�ٍ����e�����Ӣ��P8I�@�(���Z����Ee��G�(�#N�$��ܢ܌�"� +_����M�&v�T�S4��s��m̌�q����gg���}�e�Ƴ��#���f�RGW��5V�.���%���&�j���٤3����"e}�J�\������Q���z�{�-����#�A0�@��{Ĩ�L��JIb3u���i���ڀ�Y�_}xZ����;N��C��7����_���9VL5��;r�_�V����D��� 8�iFOx��is�;P%��Y.�:�Ȑ��F�� +8-�~�*7���t��H����BΝ�:W�cb��V����3s +�< Zۓ4�&��7���x7R�K}��f,{��]=H��0)���$*# ��������K�~V&�u��G�6�K�&�/�Gu�>.{���/��#8cS�۰�# �i_�dr�Zh��*Ҽ��������=.��=�|�J�Ȋ�0 ���ӄ*���A��=��a�g+,^�bݓJ�d!��*��b*?��u��=��[ yЈ%C�*�E?Z�$�n�q��E�K&�!�r&4?�vO�v�>�PX�!��P{���W�����(a�2^�~� +��fh�w� +�r6e��)xبBo<i��|���9N��d~�p`G� o�Mw���I��-Z +�<�+muZC�ӣ=W"P40ᢂ�-�$�$�����&2ڒ�O�ҵ���8�+0Q�B�K��Ks`�EW +T�V�x7]�v�4f߱>v&T�m�乞����G���m�_��*��#cj -<M��gW'��-�m�Ť�g@I�nW�ז�d�G��-U�%���;�skĒ58�^���L�A��F_���!�������)�ݸ�o�xe����Av���D�$rUZ�/�J`�X��B:!.�C��� �t���^�V�G�4�X��h��k�7���3�s:5�#iy{f0��s +J1���Tb�9���)��"����PL8��T����|�44S�隣�� +��VDL3{��Bl��{��i��]�}G���DA��(���-n�)A�lRF���K�0:>���H�t�Y�j� ���C��[�u��a��g� +<�Q�~�b��A��k>L�!t9�6; �[Sv������Ʃ��m���y��+Cy�.�\C)�:����h�[��i��ڝ������ŕ`����#�a꽣�R�������!KUs��^��<$���s��(Bhe&�m�O N1�#XL��}hN��.�u���y���K�9�7� �������O!W�)S�\>2o�F��*��@�ŭ���(�Η_��2nx�4�Ob����ɤO���U�(U�kBq�ֵ�S��J�,���!3�>�^�i+���/�c>z�?��u� ���@�2T��T�8���VI/d��w�5R���Nr�ݳ�0�30���M|�j���V)�E�� -�'�����7+'�J��3����vAKlQ�D@t��fL� \��z��W�I�ʮ�5�i:��%����P?K"����NQU����l�����h�O�]`� �h���g���#}�p� e�ǰɷGYx�U���Z��Q������2KP +�&~�Z�����V�B����H����1��*��N�ɷ�1B�_:�m9Qs�?|mx@���@L���cĐ�e)a�(�7���C�Cloѡߌ���H�N5�ƔHo��6��N�дEĒ���9l<fp�'I����e3���Q��,�"�s�����&z1�1s������+�>�AJN����,�#+�]��,��X��'��|��a��F� �R��8�d����� +���6/���doC���1�į�z�3j�> +/a5�1��nB�F%��_d����u�@e��s��`���z��`�ƣ�ti�~(p�) �:��9��'�"���~ߟҙTBM�⋟��w����+N�2C���N��>m_����L��k�Wf�vi=Eē�3;YG�RdJ���=ȣ�L�(�O�� �E���ɯ%���f\d��j.����їճ'��џJt�PR ������`#R���D�/}<]mh�6�br�M`J\Q�銾�d�F�9ynkp@ն��B[������UeJ� + *Tӓ�h��I���.Q�q�Ã�c��5_Ja����a<U������"(���L�͏����h��ck��l�̟i��I��#Ӌ��wc3���xC��x_��3����E�)n|Q��'TQO;�p���8KR���c"�����*�̟��mÖ�DD���t�vmF�"k���Z���E�_sW;��<i�[u`�����`����CpFhT)�uap�|�=���5r����� �ý�տ�_����$z�zY7��d�Sd�5��}��%�!j�.�J��{F Quj-��σ�Ұ��v%������<��D�y��F�7�*�cA�̽@a�`��8���3�c�y���)�Z���>;*� +��\������ܕ�F��B�*����!��������!y�D���U�ÞlЃ<�^���L��a�mI� b�qn�y������,��D�����D�Fݝ7C�IJ�'�&����zT���W���C�����K�� T�آ���,=�y8G��;�gL�_MS�8�2*�t��-�-��6K#�P�Y�� +Z'5�l3��GM��d�?�O�|�L7�� ��Z�P��O���)��� ���"��JO���)P$rz�jP���i�R��C c[�����p[�a��":�#�����O\�����s� ^�i�a�u]�6>���0�1f�2��o ��:A�]��Q ��y�O�D�0_���yG�-�E���(�tm| ~~.�Q��x-rD ������/rg���z�1f��e2��O�m�{�;�i��/��Enܸ����?a��]�*�� �N^���J1c�$EJ���(�0��g�Ԣ�����k�Ll�f����3�M�n��� ��~�1�j���*����gx{U�����O`y�Y��'=^[�ZѬ���s��k�8�8�|�ɓ+�e��2r~�#��e��LJ���r����� +I�4�-E6~!��xN���1�Ê�%�R����C���ӕM<����*��g�[�7Ks 8���3Cq������/�S�\�></��=��u�o�ϭq�?�m���� ��Rt]b���s�:(h��e\��x=Q����QY�x8�;���h?{�-��yA��@�!�(;:] �%A��vK%#��Ʃ� _E�Di��r�ɬ +N"�� ���`�o*���C}���C��k� ��6��s=�ř �b�Bz){G�����~�E��B�(.�'��<��C�7���Vr-����`5�JJ]DJ������L��lۉp�@z�������N15�#��VbD�:@����� g�di�f��iIStZ�T��2�-�=V�� +��Vv0O������.rֳ��g�Pmb�H٘Zf�L�|zM�Jc�h,1VFjv�s��ܞ~9��:�굙D~��ؔŽ2�#�`6/3LG�8�=��NE r�4��2�z��_�'(DN��e��E�����u�2�>�+-F:�/�l`��Y� +ݞ9��r)� F�~�(�u��#����R�Q��/^IgΏ]�������7���z�#��q�����S�ZL�_�L��W�?�Yy-R�T ���B�ir�����&�5��$�� c�֙�2��(0Bk��]Ld���ڕg�����(=L�d��A�baxW��g�g��k��[��2n��6)p���W㉐��/ �9���f ��nv�KB�.+���c������sT�S��~��q�`����}:�[ٳ:�w��4缐8!��2t0NĪ�Oȶ�m)!^z/W�X�"�M�}�i�Yk���ĂK��j�)�ˑ/���|E%���f,���h`�;|�&f�غ����au[��(ד�&3n��DG�t������$�C����W*�Ρߗ屵W��"�y�6< Hi��R^h`�ߣ�#X�R)��s��$�3M���=X��:NA�Z��? ��Y˻ʍi/$��k�s�2cp5��9�p�!�Q5:'ܘ��н_7�,�V���&Kf`-�dƵ����3���s�.W۳��L�](����;��M���/O5SO<5�Ԛ�*�mOø�h� ��7y�~&1&P龱�/�Q��,)�Py�rr=�9*k�k����A1�������\�<��<H�3��%�:P��y��&N�2���te���V�k�4��}F���LK�@:�\��t��Գq�G�매�V�wy�j%$o?��5�8��ǖ�&���\#҈}�x��\!LV V����}���{^�H��^1�j�)�sK}��L�{�1�2��9�l��B�� �I���8�ud�+ hFG�"W���sD��B}����K��Μ��n���,r���)p�� ���6ܰr�� �a�S2�P���&�m� ��Vn����&���{&,�%� *1�*)T�Z��N�����H�e����.��'�>��O���g�?t �N�aV��/��N����5HB/Ɩg�Q��d��������c���!t1@�#u\�y���? �3;a{^�����ѫ�� +��fW�A(���[f?����4P�I�����Gj, ���dM{�P���dA{�Mܻ��:ә0m�/�����+?�cb��>�[���;f=�<��:�<����F�(%Y��=�}��P6�Mv�,����*�����c���ڶK�C��oEW��}��aԁ��9h��,KA|\uxN�w�R��1���צu�U ���R "}ձ�νq{MLc�@��y�.7���kK�E� +�������PYu�p��܊���������5�v4'��Ç&&s?�g�y���x���)8��ʕ|ʎOF��@��n����R4p�o�g��~J1?�;;�Y��%�s鴲C�X�C��� =���{�]q��\�ՃF�v�����V�wHV���\�Z ��g����O���Ϡ�1e(����=[*�iL&��ǞD�������#���_~_��^ ���}"�\)<�>�)x�Hqvt��5���#�`�9�Ӟ��T��,�"UAT.���}k�Yn�]��e��fm֭[Q����Ͷ���*n��i��V�E���j�N�"4�z����sآÂ�Z��9>=C��+5�o[y�l +����x��Rr�<�Oǵ�.ͩ��+�tg�$rŏ���~��%���W��>D��fX��o�����%��9tbݰ���$s��g c�'�a���u�D�����S�j���ѓ}+K�~��\<�K�!��u��ܭ*�i4 4'G��AhWo,�"���2��v�K�gb��m?:���Fynm��D�m�����*��)��Hp���xh�H�5c��M(�W=+5��V2x����~x`E�;be�OK��S=���ϻ�- U�����%���1-�hJ�-*䝾����g��2�+��;o�y��+����*�RxccS\^�7�=�>�̍V�i��yW�[I���s&���F�� ��L�g*g2<6>*E��f��g��O#��+��2W�)�-���q~�4�w_B�������8�Pt�5ߛϾ���(u��P �4��ˁ�Ӂ���l�ob�]�W����yz!��xt~��с(���g�#�~h���M-`��c���m���rR_T�R���zjq�Q���R��ު�tM<�;0>"p�'�x҇�M�4���z��C���}�����G�P&?L���S6o�ԗ��Owk�GB�!�oU�IP�nj�Y8�A�g6?E�,�Ƭ��b�U����*uE��Qd��}��$��}�t/�&�+S M�W�Xw�2�4ز*�~�ҏ/�'��_o*`�7�2����K�7^�8gL�A����r�9��A�˶!�CA#��gC&6>�j�$���]T*" 1��������L,��k�>Reߔ`X���ܲM��Jfe�d�nJ���hf�e�{�ѯhK�ʜ]���}s(�$��g�ؐc��Q��qfi�>�Qwv�k{s��p����?��?����������nE�r�-��M���WV���i�o ��NOv<�L�|��/�;,?��:� ^��Y?:�sUci�m"���|7_�y�V���,�C�<7����R��~��kXA�-����cRG�;��A��,��<(r`YA��El]䇽E`�je���H�I�z: %�D�I��6r�9���<x��.�9�Z����mrj����W��=' +��ar@(~����`�f���f��6+Cp@f(������D-�+0o%��2�~Y�}�a�,��)�='�k]�����i#��v���I$}���^jȭZ0�\JF�bN�3uǝm��m��o'�'L�b�=�E� �[���`�_����� ��]c��E\�X�Ey?�9�����M���hk��N��F��Tz�N������**�WzX�Yĭ��cwG�gﻔ;tC�)���~�23�>7^v���P~d�U6F�r�����&���~��TIՂpaL�������߃�Y����|����)�1N�j��yλ��G�� �;�'��� +I$<��W0Ѿ_ɬ��]���pL���+cm<]�rT��\�0����2:�p�yZ2g��^���i�� +;�0�`Ӷ%����@X�n���K����ig�]?�Iގ)\$��Z-��7���E1����N ���������s����m5m+���=��Xr�M1r�z| +��g���*Q�Vc7��0g�b�9l�t, +�dD�:D���>t�f� Ѯh�b��a<�j��|��C�Z��7��K!�7lafl�&���tF|�8���|��o�������B��`� +vr4w�G�u���\��+��� ��endstream endobj 2110 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 149 -/Widths 5378 0 R -/BaseFont /DABSEE+NimbusSanL-Regu +/Widths 5313 0 R +/BaseFont /VNJANW+NimbusSanL-Regu /FontDescriptor 2108 0 R >> endobj 2108 0 obj << /Ascent 712 /CapHeight 712 /Descent -213 -/FontName /DABSEE+NimbusSanL-Regu +/FontName /VNJANW+NimbusSanL-Regu /ItalicAngle 0 /StemV 85 /XHeight 523 @@ -22918,7 +22724,7 @@ endobj /CharSet (/fi/fl/exclam/quotedbl/numbersign/dollar/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/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/backslash/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/bullet) /FontFile 2109 0 R >> endobj -5378 0 obj +5313 0 obj [500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 355 556 556 0 0 222 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 0 556 833 722 778 667 778 722 667 611 722 667 944 667 667 0 0 278 0 0 556 0 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 350 ] endobj 1708 0 obj << @@ -22929,7 +22735,7 @@ endobj /Filter /FlateDecode >> stream -xڬ�S�em�%��m۶m�v�mgV�Ҷ���m۶������>��}�{V��&�Ę�ܱ#9��*��������������H�����E� G�bn�F�W�CN.�ln�j��3v5�!�47#37%ba!b���!'up�r���r%�RWѤ����O�?&D&^�S�����@D��������������Q�ܜ��ʜ���ΜHTQI[ZA��JRA�H�`�llG��fbgmJ$gmjp1�&�pp&����������\�b ��8��Z�u3�45w�GEG�h�lo������څ�������D��S;7��+�p�7!Gg���u��\\]L��]��FU���<]��]���b�WM�`������ퟒ������u5����{���Ĝ��������o�`�������b ���舜�-�����]\������;�Y'��V�������Z���]]��,`�Y��4u������ϠH,����Cn���?u����6�ꟙ�����������Q���oH"��;���H�o������z����_9��.�����_�%�������,��ƁH��cg���27�����?8�WCM��H��G���o3�� ab`������������������N�+W��;�Y��2�o3�虙���N�����O���Ce0����%���ŕ�e�i��N��J�/��j^����;����?""�D>�o =+'�߀\��~��h��0��Y����ړH�o�L���?��<��q����?���j0�;^�K�������/��������nn�in +xڬ�S�em�%��m۶m�v�mgV�Ҷ���m۶������>��}�{V��&�Ę�ܱ#9��*��������������H�����E� G�bn�F�W�CN.�ln�j��3v5�!�47#37%ba!b���!'up�r���r%�RWѤ����O�?&D&^�S�����@D��������������Q�ܜ��ʜ���ΜHTQI[ZA��JRA�H�`�llG��fbgmJ$gmjp1�&�pp&����������\�b ��8��Z�u3�45w�GEG�h�lo������څ�������D��S;7��+�p�7!Gg���u��\\]L��]��FU���<]��]���b�WM�`������ퟒ������u5����{���Ĝ��������o�`�������b ���舜�-�����]\������;�Y'��V�������Z���]]��,`�Y��4u������ϠH,����Cn���?u����6�ꟙ�����������Q���oH"��;���H�o������z����_9��.�����_�%�������,��ƁH��cg���27�����?8�WCM��H��G���o3�� ab`������������������N�+W��;�Y��2�o3�虙���N�����O���Ce0����%���UeTeDh��N��J�/��j^����;����?""�D>�o =+'�߀\��~��h��0��Y����ړH�o�L���?��<��q����?���j0�;^�K�������/��������nn�in ���`�j�3+õ3odJLw��t$̱�I��0���W���=�*���0���?^����dh���0�(������R�"oStq�3��g\j���.���p0i�O)��~A��t�:CݾR�����8"���7&�w#5��]\R$���P������?¥�M�&�u��� t���Q��h�ý��C���c�ON�Cm/��dY���J���K�w�j?��¸[���N�����t#w��k��x��%�͂l$y��p��������G�[�U�.k�h�8"g��r�Fmwt!��[��2�*ω$��,i��w����]ʙ��;�ga)1\�F����p7ߋ Nˍ����(LJ��\*{u��ĸ��%VxB�0�h����|bl.S�n�[T{M�-�@��]�'��N��$�A��a��=��}1x��@�Yu�}�6�A3�Xdx�H�YY@f'l�U<��EQ�����Z�S�FWW��9:��0��ğ�k�����`�?��[$ p��ԝ�}A��F�������~���k�u"T��u�&����Y�3) ���AYe9q9 m�,z8%�H����zS�J�OM�[�X I��k�#}� w��Bၩѿ����ފ �Ҵ�'�B�As�.�$ݟ7�y�c#��[��K����`��]�7�� x�:�l���x�¹�w5���FX�=RS�}���}��#��#��T�������2=��OջC2]z��"BGWP1z� �PCa���F3J��z}�_}I����I�,FI��6h10�q1��v����B��0��o���h�Ul/��pjg��i������`p�P�t��7*N�8h����3.��YA��x�FAM���K&��7�#�#�O������C͔���=2�,��� 㶢���Q�Ί�l�W�>��vm3rC����Q��e�ۨ�EN �����̢���,{+u�h�TW[�:�]f���\���,t��|x"����DL�cP=�ʩ{�_2� ��ch p��[Y�?�r\j���9�a��y �D�p�F���Q���if=����̰��7�m�S���0\r�%�^ަmS֑��!��gV7��v�=��v��%�Ā�#X������2��<��օ�F� ��^�M�r:,�^����["w�����Jb]���*��m�@ՄQn|�gbxK�m�U{���-�YlƖ�,�d�㫃������ˉ[�$1\��8��z#�$�J��K��T�-r�Yg2[w�Xᙔ֩e]�.���E"7������ U��S!�9 ���T��4}���~O@�}��$���F��6�^��I������=�$=^Z�(ą�"�)d�p��'��MȾ!�oD���+c����ߣ����qo��.�e$[,��.7�3����������B�aé�2R9d��n�ەY���fU�@}r����h:1Z-�s��T�l�:��j�9�{���k�En��01�77$�HWU��P��1�:��5q�r��ж�v�*�u�'-y�QYx�6=�%�F�5� @@ -22986,23 +22792,23 @@ ep �AÜ? �k|j;*��-�e�&k*.��Wt��F7[[������6y�M�J��k�d{��;������S{�؍s���=��ǻ�|���5��*�P���S�t��-~�O��55��ۃ])��z8��ꬲk�zo' ]�(�>/p<v�S'��Ē)��_0?��ԕ,H6�"�.a�ڍS�B>~��D�20J�m�7L��O:>Y6�N��E�$���kX1I�ң���s��X�wP�&AS4-��[���NcD�d�s����J3l]lf�/�<щ�\FZ)G>��x�<7$/�~��ٔ�d*�,\����i �1�k�#�x(�>�R��K��J�6 Me�ٔ�Һ�9]�kS��]<�I�����`Tp$��ojO<��eq[Q����io�+�ڪ^M*�����ʴ8-�i[5�|���Ҥ*~/5[�V����Y�Htq�\G��{����#�s!�+��YKu��8�z��-Q�݅�3T������8cw����i��ft�qݴXb�Of���֥�{̅��Bm��E2/L�Orqj��L����c� �l�UC�y���<4^o����������}2�Adf ��>�5d��*�Δ�odu��Ц�('��Zy�'{��wew�8���2�K$��6�:��o,Oѯ���Ϳ\�Y��'��)6�m�X|�A!�n�Iѧ�_(��|�摸n���!����[��D�g��Ҹ��r��F���)s��?��r>w��>T�l��)|��W뿚R�]��8������%>��� �ȟ���xF�+щ��{l~��VgP#�i�-���?祔��ҧ�҄D-��j�������F�_exP8%��z���{ڇ"+ ��X��ƅ�#Y������g��<]�G�=�I����O�u*z�WҿUI;hM�8qR1���T���R�O�A���|��Ͼ��Z��ɝ���]��XyO��h�|�=��hI���P?p�Z�l}DZ �.ƨ�_�{t�W���o&�B^�����5[��S{MB�R$q�`{[8��oKa`Y��h���>��a����~����j�&"��t����*4��1s��z,̹Exj�Q�ψ�.�'�v:,��Z]�u�C�b��뻃j�]�6��V+�G�r�ug��D^#g��?��#�V~�tK����W�f��B(xϷ$Z#[L>{Ң%�CF�P���8v�"^��5���� �.(�Eߴ�{z^�DV��\�ے@E��4]`hH�Q���{����4n ����K4��O̓@ -�2���O�A-H [��A�^'�(������+�頹W_9�?���6 ��G�!��4��ٱ8/���~a���@����f���i'*�兩4�o���F�{����~Q�:�axb�E�6����+��'���g,��+���nΨ�_�3ʛ�?[|��endstream +�2���O�A-H [��A�^'�(������+�頹W_9�?���6 ��G�!��4��ٱ8/���~a���@����f���i'*�兩4�o���F�{����~Q�:�axb�E�6����+��'���g,��+���nΨ�_�3ʛ�?����endstream endobj 1709 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 34 /LastChar 126 -/Widths 5379 0 R -/BaseFont /EQYOJA+NimbusMonL-Regu +/Widths 5314 0 R +/BaseFont /ROJSJB+NimbusMonL-Regu /FontDescriptor 1707 0 R >> endobj 1707 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 -/FontName /EQYOJA+NimbusMonL-Regu +/FontName /ROJSJB+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 @@ -23011,7 +22817,7 @@ endobj /CharSet (/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/seven/eight/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde) /FontFile 1708 0 R >> endobj -5379 0 obj +5314 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 1357 0 obj << @@ -23023,7 +22829,7 @@ endobj >> stream xڬ�UT�Ͳ%��K�pwwwww�����E�N���P��K����ݧO�so�t���Ɨ13fD䌌1��XI�^���(�`�J����P��3qsQq�Sp���WZ�I���b�p���@cW+{1cW @h�XX�����p��QG/g+KW����&5--�Z��0��䯧���=���;����h������Q�Z�V�@�������$�JRA �:�-B����� ge -�wR����^�L�ͬ�)ͅ�/�����4����4:����vV..�V.�gc{g�����7�u3�'��vs�%����w��_�/����������+�oT%1���ji��Ol��0����N3S�J����/�jle�pz���0�rq�5���/���տ�ps��������@cg3[���_������� �ߪ7vt�����ÿv���\]���p�,c����mae��O�Hۛ;����m7ss��������g��&al�`o�0��1*8�� ���S��O����[�o���M�����v��_����p��U0������3������w�����[cg�?�����jlge��r���5����r�W��!��-�*D�����o�����'�L����`nl����eW�7:�Z�����������_05K+S��`�7�7��5���_0j�k��J�����6+�� +�wR����^�L�ͬ�)ͅ�/�����4����4:����vV..�V.�gc{g�����7�u3�'��vs�%����w��_�/����������+�oT%1���ji��Ol��0����N3S�J����/�jle�pz���0�rq�5���/���տ�ps��������@cg3[���_������� �ߪ7vt�����ÿv���\]���p�,c����mae��O�Hۛ;����m7ss��������g��&al�`o�0��1*8�� ���S��O����[�o���M�����v��_����p��U0������3������w�����[cg�?�����jlge��r���5����r�W��!��-�*D�����o�����'�L����`nl����eW�7:�Z�����������_05K+S��`�7�7��5���_0�� �H�����6+�� W5/G �FҔw0�_��DD<>����zN�����u�fa��� �/"��\��:[yt���������+��B#no�`�O��ۛ�m��e�6usv���������c��K�zM��WLyC�3s�\� F��t���G�+��J�kz2#w���ׅ14��|vx-�9~����}���M^���R��nStq�3T f�k��\/�����`�8ܝRV1(�"��bu��~�$u/� ���o�ј�������"��������p�-d�m~,9�;"EL�S>����w�xty���3��#� �Yl��/� T��;Ŀ��J�xe��)�>�ذ�� W�5�>Ώ:R��W|�D�5<����Gh��v��ש~����$ݓ�\�1u�bY��y�;Ec����+2y(��o>�{��>�i�z?]_����ڤ H(�xў�D��eZA��Ĥ�v�1��Ya"dV�~��8��D8�T)ѱi^��#������k�E4������Q�T~ ���\s�Ka�G�o��&�yѰ�xDL`du�A��-W r��Ц$y��ʑ/I�Q�.N���7^Z\Nν���Г<W��ʰ)�N�G�K���pY>��H*vNF8�q�=�0ܷg�o�q/hӸ��D�l^���r�����I&(�r��2yx�o����������.?�W�zS��.���jR�%�z�H�,Q�.|����Pc�o2�Y"I�4H��o��xdsh���vF�]�۟i�um�Q""F���1�������f���i �l�{ %���ngs��w���WS�%�7$�?-����YM���!$���ěz{�ݍ�����|�v�.5�&� �b���9��gӣ.82�Rm��\#�W����Y ����}R�"T� @@ -23079,23 +22885,23 @@ P �w�Ya��� ���E�9�*��W�� ��&�����WTcc����@��X��D�),� �g���:��c�=_@/1h�&_��������d���ij�A 8�ľWfC��ș�&塓�8�J|����HKF�E�}J���z���oc��� c�,ܣ�-���s���pFeC�����*<�S*O�\�g�/0��%Jw�K١�� �k�%w��=>Ic����&�Mu{ͯ���#�4口*��"�pЇ�n�9y -��h֥n��9x�+����بq�MӮC�,�AV��Z�%�]�V�4_�"����L��z^1��D��H(r�J��(ۦ�D�9��Oe;m�I�ֹ�"�n����^�T�.t����R;9��������nx$Sˋz7(S����,ҭ)� ��������B�K'������X"�+}3��DJ�;A�z�������-�l��E�V�������n�%����'"(Z��tUzCjH�����;&�U������bJ{mj��r�����������27S��$����Ɔ�S�/���P�]u_Y����~/�V�,��� �X ʾvy�^����Nff�%���j�����HzD��)1 ��bk;յ��!ïGފ��e�s��/v��X��*lCWN���Hϼj�K��-��i$�&?������ΨC���0~�]$�T0 �.mn�WG�K����> m��X/*o�b��3f">�.Y�A����_ܬ�����SB������M�4Nړ��S=���uK"Q`�sRse����i�g�lb7�+��W��ys��76tW~ �}�W_�,�8��!V����8FL�_t+foǜ�����v�ɌŸ.itxۆ��7W�u��N�%��ϱs�z@k���5F��!��D��n�褩��UE�����~�GJ��b���;���ui'��ʓ�ϣ��ڵ'�7�#�.�RǸU����7�!0����ų��KG� �B���S*b��b9��Ѫ��}\u��$� �W�����a����?\�]���|%!�Z<���!endstream +��h֥n��9x�+����بq�MӮC�,�AV��Z�%�]�V�4_�"����L��z^1��D��H(r�J��(ۦ�D�9��Oe;m�I�ֹ�"�n����^�T�.t����R;9��������nx$Sˋz7(S����,ҭ)� ��������B�K'������X"�+}3��DJ�;A�z�������-�l��E�V�������n�%����'"(Z��tUzCjH�����;&�U������bJ{mj��r�����������27S��$����Ɔ�S�/���P�]u_Y����~/�V�,��� �X ʾvy�^����Nff�%���j�����HzD��)1 ��bk;յ��!ïGފ��e�s��/v��X��*lCWN���Hϼj�K��-��i$�&?������ΨC���0~�]$�T0 �.mn�WG�K����> m��X/*o�b��3f">�.Y�A����_ܬ�����SB������M�4Nړ��S=���uK"Q`�sRse����i�g�lb7�+��W��ys��76tW~ �}�W_�,�8��!V����8FL�_t+foǜ�����v�ɌŸ.itxۆ��7W�u��N�%��ϱs�z@k���5F��!��D��n�褩��UE�����~�GJ��b���;���ui'��ʓ�ϣ��ڵ'�7�#�.�RǸU����7�!0����ų��KG� �B���S*b��b9��Ѫ��}\u��$� �W�����a����?\�]���|%!�Z<���$endstream endobj 1358 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 122 -/Widths 5380 0 R -/BaseFont /WEWCKH+NimbusRomNo9L-ReguItal +/Widths 5315 0 R +/BaseFont /STAAZI+NimbusRomNo9L-ReguItal /FontDescriptor 1356 0 R >> endobj 1356 0 obj << /Ascent 669 /CapHeight 669 /Descent -193 -/FontName /WEWCKH+NimbusRomNo9L-ReguItal +/FontName /STAAZI+NimbusRomNo9L-ReguItal /ItalicAngle -15.5 /StemV 78 /XHeight 441 @@ -23104,7 +22910,7 @@ endobj /CharSet (/fi/percent/quoteright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/less/greater/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 1357 0 R >> endobj -5380 0 obj +5315 0 obj [500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 333 0 0 500 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 0 675 0 675 0 0 611 611 667 722 611 611 722 722 333 0 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 ] endobj 1265 0 obj << @@ -23115,7 +22921,7 @@ endobj /Filter /FlateDecode >> stream -x��vc�e�fڶ�m۶m۪�mTfUڶ3+m۶QiO}����q���t���q"���g�]{�)�� �:��;ػ�1�3r���\����d���L���l0dd"�fF�V��F�f�� 3S��� ������Cqp�r���tP�)kP����S� ����5<]�,����l���]�@�_;���\-���V�f�E-)y ����@��������flke��21�w1��;8l�q��8؛Z����,!������ꏛ�����_*Z�������˟g��������O \�V�&�n��#7w�������?�?`�.�.&�V���?QE����������.V���?��&n����������������X�f�S+G[#�?���9:[�M������h�fFΦ�f..`�`�U�� �O�9:�z�����p�ru1�5��ab����Ol+{��fE������������͜�.�_3C������������A���OH���]�����?����������������������n���Fv�;�g�����,�E�f����Y�z�����Z��l�lM�U'�j��$B���H��������������%����O����ٛ�9�Zٛ����%�112��N���������Cefo������o��2"�4��r��P����z9���o��9����/aaO�7;'��������C�������7�?�rF��V���?y32������y��1{ӿ�F�����Ϥ���/������}��d���g�����fu���'�:�g�k-f�Є�N_�P�cI�ja~@�C�z�W��{M(}��g����ǁ4��H�-Ew��U�/ Uo>�&y�a�~ |ƹF�����6�6;����~�;�T�3��U��{~��#�����x�N�F �ڂ�s�䓧G������[��\��xh2w0x����l\m� +x��vc�e�fڶ�m۶m۪�mTfUڶ3+m۶QiO}����q���t���q"���g�]{�)�� �:��;ػ�1�3r���\����d���L���l0dd"�fF�V��F�f�� 3S��� ������Cqp�r���tP�)kP����S� ����5<]�,����l���]�@�_;���\-���V�f�E-)y ����@��������flke��21�w1��;8l�q��8؛Z����,!������ꏛ�����_*Z�������˟g��������O \�V�&�n��#7w�������?�?`�.�.&�V���?QE����������.V���?��&n����������������X�f�S+G[#�?���9:[�M������h�fFΦ�f..`�`�U�� �O�9:�z�����p�ru1�5��ab����Ol+{��fE������������͜�.�_3C������������A���OH���]�����?����������������������n���Fv�;�g�����,�E�f����Y�z�����Z��l�lM�U'�j��$B���H��������������%����O����ٛ�9�Zٛ����%�112��N���������Cefo������o�*Z�Ҋ4��r��P����z9���o��9����/aaO�7;'��������C�������7�?�rF��V���?y32������y��1{ӿ�F�����Ϥ���/������}��d���g�����fu���'�:�g�k-f�Є�N_�P�cI�ja~@�C�z�W��{M(}��g����ǁ4��H�-Ew��U�/ Uo>�&y�a�~ |ƹF�����6�6;����~�;�T�3��U��{~��#�����x�N�F �ڂ�s�䓧G������[��\��xh2w0x����l\m� �8�p�*Tb�3��3w�yt�ݎ4�����S0 �x�鰰a�r�ñF>��������qo���(�"���?����>�!Mm�, T�<�[X�KdQ&�aAY�Sc�W�ߌaR2e��������f1��e���wI��RE'��/Pd���*L���2���$q�\����әE�٦3�Z�eo����N����*��'ѭ����iF8�ߗ �dPZ\��j�դ��t�+:2�P $i�C��{��W6�HlJpT��&��0\vOj]�r�kcWfrr�>%� Tq3���ws%Z�Wɥ�����٢>y��!M�I23qU3l�ҁ~#�*�<Ф���X�f"���~iY�עJ �(�}�%N7͞���Qt]�n��擇_8�o��+���Ԣ*(�ؓO��_$ a�^�-(I��o����ԉ�E�Hf6�9`r �*Y}Q'>T���"}�Ҥ�}^�i���"Eem 8k��qF��;�>:EDl���@+M��>�;1��Y#%��H@>*p�dE�� y�����������U��=p��q}c!�:2w{H:�����-���i}��� �#��Z}��NRU���0�$&їd~` �U%���^O,ȑ��������Tb]u�uÝ=$��KV}T�1�3�=@/3���T*Q����r.ْ�R�g+�F!��}�~L�۫+'qJP��H&���6�)d��O�X�vUaO�*��OJ���Q��E:F;��S��f����ᔠ-��ꆒ��C�|YĢ���(��=g-��[T�ɮ�MEa @@ -23172,23 +22978,23 @@ b8 uC1����Oo��!c����iGnf.�ނ�X���������|n�L�R�����F���ek�{��7P'͚!h�� I�^��}I�ܕyu���i������ӣ�4|��������6��S��dJ�m��o�Q����n�;��99/����0g���d�7s��8�j/-%ύ��2`0��"��f�Pik&m�����Q>U�]�^T��B���E[�5iP;F����H��W5ռg0զ(���w�ߧM�����3Y #�Ʈ �M�ц<��N�,�W���h!��3_c_&�`�:�&�B��hM�X[��ẕ����Tg���o�\��5�͜9����s3��SY�nW༾bڅ�.?���-m���iBȿ��\kv8]NdS��x�Z'��zT�8��g�[pط�b������P)���}�:�:4s矕� -�V�܄d#�h͐�0�}�0�急@����W��`�)�&h�z=�5em���۰cXv��I����P`cc�z�(�3�70��� �[3#gW;#g��;��endstream +�V�܄d#�h͐�0�}�0�急@����W��`�)�&h�z=�5em���۰cXv��I����P`cc�z�(�3�70��� �[3#gW;#g��qVendstream endobj 1266 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 125 -/Widths 5381 0 R -/BaseFont /BBHKCD+NimbusRomNo9L-Medi +/Widths 5316 0 R +/BaseFont /SYLJPW+NimbusRomNo9L-Medi /FontDescriptor 1264 0 R >> endobj 1264 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 -/FontName /BBHKCD+NimbusRomNo9L-Medi +/FontName /SYLJPW+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 @@ -23197,7 +23003,7 @@ endobj /CharSet (/fi/quotedbl/dollar/quoteright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/greater/A/B/C/D/E/F/G/I/L/M/N/P/R/S/T/U/V/backslash/underscore/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) /FontFile 1265 0 R >> endobj -5381 0 obj +5316 0 obj [556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 555 0 500 0 0 333 0 0 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 0 0 0 570 0 0 722 667 722 722 667 611 778 0 389 0 0 667 944 722 0 611 0 722 556 667 722 722 0 0 0 0 0 278 0 0 500 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 ] endobj 1257 0 obj << @@ -23210,7 +23016,7 @@ endobj stream xڬ�ctf]�&��b۸c۶m���b۶�m���Q����zO�����}~�1���&���؛�XI�^����\��H����P��7qsUq�Wp䖣W1�t���Ò�����Č��<�Ms3���)������ Kut�r�����U4�ii��S� ���?4=]�-�_�������!��U��@+s����9@TQI[ZA@%���4w0w1�(���Y��M�\ͩ�.�����f������K�`pu27���f�ij���d�bo����`� �t1v����`�`j�f�O���J�����_�_0%GW������7���Ŀ�Z���j�W p��ki�h��OI������[;����b��̬]�쌽�����b��4�\�,�3:�����������_����t�?��/�;9�y����_V�3k����,3�ߘ����-�`��iG�3ӿ�fnN��s7w�W�����I�9:�y��-`�C���Xf��#�������[��#��r��\�����_�%��������w��1v���3�9�?�������clom�����֚��N���& 4��a˿�010�[h�*a�in�d 4�X���ٿ��f�.v����W[��LL�E�femj�� ��V�;��� -������%t�h�7�_�J����7��Q�����<�#"�� �g��гp1���fa��� �/ ��<�]�=��fb�W����ϓ��w0u4�gtT��f�� +�����%DD�u4i�7�_�J����7��Q�����<�#"�� �g��гp1���fa��� �/ ��<�]�=��fb�W����ϓ��w0u4�gtT��f�� �Q�����%�_�o��q��ܛ�{��®�8���ddg��G��t�����:�7���9��gD�rW�ׇ2���|vx-�9}����c�Q���_�'�(B٢��=b4(G�<�^����`�8ܛVV1({�$��bu��~� u/ @'{rB�3Mo���FnAm(>;�H>y~��黅8��͋�!�uG��p���Q���à:LN��;2��s(�Jf��ڼ8L������D�y�$kg�P�q��Xi�G�I� =X�Ը6�����O���,P7�."�?]up5�a2u���}�̍.؈�/�u�x��Ӿ�7��G��< ��G7KR*� ��J�+J�k �{���ש!y���h}�Wu���r�pI� @@ -23286,23 +23092,23 @@ Y K�rt�zU�?��M����s�k����,Sp �*���Mf�Ol.�� ��I�:���x�$���:����*����E5��B�+�ctCg�&]����� $ת�s��% ޛ���c{�Q�,�jc����3'�E� מ�U_d�2hi����z�c�}:6�L�-Z�XC$�~���?iD�ȣ���P���¥�� ����᳂��x��H�8i�����Oy�@e�}�%U��,$�䱚'�;�NK����}�驑�Bs�j�Wgzi/�pq�Q �]�NN��L\w,�`[qs��k쥫B6�BF�P`2�<������`.�zߴ �������6ԅԲ+�OQׅCd3�F��Nf�0C�Q�>��6�8Qρ%5���,�Ϗ��b?YVNR�u/�sfY'�}*P����?�=d�I���0;Ջ��K�D\ZXL"<^�J^s Jיw!!7%�]�zk����EV&�W�������<N��9e��@�fPt��L֛�yC4�5��6/��?X�R�WT�ٝ�!^8�0n��9���bf�-��Wkx���gbW��3Yu���x� Ζ/j���H��Fe�G������G������������{�,����mYݰ���߷͈��:��Y.CD��9r��m�L�+�>R5��ʧ���Z�q�+�~��������@g���_]�"GqA�/���?4�n}�k�'��|�oH�Gs��F�������GƇC)Qa4ߏ����<,��],�eu��:�_�t�(���^u�ʯ$WM�ʒ�М���,�(D5U P����g���4�l�5�L��7��t�0��[��(����t'��5��G�k�!NB��Z��L��i�] >�~ݏ'�[ ���X��Kv�4�&��(���h��}����B�=��8H8f�����A��o���4/�:�`_���@s�x��o6WAc�۫����~����7i�, ����3��>_�q�.%�DG�cH���lczѶjVP_1�y��aj��Pl��2�$�#H��Epo)�(�8[����,�g�2Q��6�>�Gt="t32*7�x2�n�:V�F��f��+ds���.���?&�V>"�Ա(�^�4��`'va�*�[\���=���˞�@w��,Lآ�A���v�V>��f�g2,q� jj-��diƜϿL���$8��`&���y�� �6ן���=f1b��u>�O��O-��`��RJ�������B�=/G��ʲ+.^�hs�ă����Z-/��np�4�� �����e�65������C� Y��a��!����ԌG�� �� -"��i�v������1�Oǩ&��D��Rw��X�ϸ;�����\%�e�A����T�<�ETe-�zq:L ��v^@��sl����>�wx7Au�"�lfҨ�S��/ [��Hi]������X���Pt'�}u �C��ߒ�xN�<��&-�B�*81Me܂����k�Q����i�$���R���e����M9�RBL���ݰ��P��"������X������5����H5D�Tlň����4�SN;R�r��sa9�()~18^��k�'����>Ǖ������Y��.�N���L���þc����H%����{�[<��P<���t�����ך�{3��B�/�_�st���n*����6>�h��笚i(���8J�5��S|�G$�:�!�D��=i8���$d+3�#F#�U[�FS��T��-]�3\2�C���5P�d�J����hj��#1�h)ppK �|/��/]�L��<[����s���˭�F�R�>�ƩK�I����k`����d�M�<"�m�F���p��5S��X�q�Њ(��+��<�c�����}�RH�,��M�ϷF�'��P�6Lp�-X�6��w��V�qk�u;�M�Џ�<�^����ҚHb>��,�E�%]�n�8ʻb!��A�z������+� �P�`k)�ח��@L8fn������t~��F;���k3���;ru�ݛ����2\���O���&�t|"��h�~�Lխ���>`��72I�[P���w��1$��^�BG��!��� ���O,��\ݝ�\������endstream +"��i�v������1�Oǩ&��D��Rw��X�ϸ;�����\%�e�A����T�<�ETe-�zq:L ��v^@��sl����>�wx7Au�"�lfҨ�S��/ [��Hi]������X���Pt'�}u �C��ߒ�xN�<��&-�B�*81Me܂����k�Q����i�$���R���e����M9�RBL���ݰ��P��"������X������5����H5D�Tlň����4�SN;R�r��sa9�()~18^��k�'����>Ǖ������Y��.�N���L���þc����H%����{�[<��P<���t�����ך�{3��B�/�_�st���n*����6>�h��笚i(���8J�5��S|�G$�:�!�D��=i8���$d+3�#F#�U[�FS��T��-]�3\2�C���5P�d�J����hj��#1�h)ppK �|/��/]�L��<[����s���˭�F�R�>�ƩK�I����k`����d�M�<"�m�F���p��5S��X�q�Њ(��+��<�c�����}�RH�,��M�ϷF�'��P�6Lp�-X�6��w��V�qk�u;�M�Џ�<�^����ҚHb>��,�E�%]�n�8ʻb!��A�z������+� �P�`k)�ח��@L8fn������t~��F;���k3���;ru�ݛ����2\���O���&�t|"��h�~�Lխ���>`��72I�[P���w��1$��^�BG��!��� ���O,��\ݝ�\������endstream endobj 1258 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 151 -/Widths 5382 0 R -/BaseFont /QOGNZD+NimbusRomNo9L-Regu +/Widths 5317 0 R +/BaseFont /FBBIZW+NimbusRomNo9L-Regu /FontDescriptor 1256 0 R >> endobj 1256 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 -/FontName /QOGNZD+NimbusRomNo9L-Regu +/FontName /FBBIZW+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 @@ -23311,7 +23117,7 @@ endobj /CharSet (/fi/fl/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/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/bullet/emdash) /FontFile 1257 0 R >> endobj -5382 0 obj +5317 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 500 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 350 0 1000 ] endobj 1249 0 obj << @@ -23322,71 +23128,93 @@ endobj /Filter /FlateDecode >> stream -x��teP�ݖ.��N������и���!�w�`�=8 ������9S�ί��u�vUW�K������7 ������P�������]� -��pw�2wPf�t[ޝ<H44R.@s7�����P��H-���$�������� @��������O�_)�����t�8�h�?<�`G'{���;���p��A` @JM�@AU@/���:�]���uw0���:��֎.��?������\Y߱$\��W'�%������W��t����@��s���9@�`w������&�����a�{Swtus�t9�ޫ�K��������_�]A�a���{�����_-�{�y����\n@/��jY�V W'���{�w0'��4�]A6�d�pژ�X�����0��M�}�S��NN`�O;���@n�@�5+�{MK���6 $��E���������ӿ�<�.����ax'an����X���T��K��{*����� �����+�����W���%������u�U�������q(�zc��\s{������D=�?�W -n��c�p�y�����N��,�h�r��X���g��_�� -�9�ߵ�{����iۂ,��:���!��տ2��o�l�ښZ� -L�������������;��C���?��0$%���,|\�.v��������/�� ��O[�������4;�߭��������8X:Z��'Zn�V�����..��}��[�w��%���Hˋ��B�ӳ2�j��ƥ?��r@�9�6hU;��G��4{� cm�|k�^8rz�Qd������Ͼ��S1�`��v�1톰���f�E���+o�������4)y�#���rA8�g��(¡�sB�L�����h���-<:�M:����1<4�s ۷C̔�H#��J�%�9�X�P��7Ƣ�#i�:�7�O��k}��i�`���Pa��{\lv �6Y=��Z��6���R�h_!�~NK�Π�$ٹ�����WP<�Z��/ '�m��Pd۪�N?���*��΅�5�b�T��4����4.R��(����j��,FWy��`�8�Tj(�3u8S�Q�]�D�v�Z�V?q|O�<��5�3I�]�R��@]h]���G��6����f���r�{�-K8:�2Y�Z\�]-^NN΄�cK�������G&�m��hHn�В�f -�kW<ǚB�6��~��(p}�#��<��x�F��]��IUb����г"zDC�C����z�o9�7�lP�5�(�lܾ��؞!V�Vq�����yGt�\b ��K��/�F���W�3�S����� -e���)O-�:�݄���*g4x)Y�[ˮ��!i�� w?��~��Z���T��#sJs���oѐ�|��w ��Ltl)� qQ��32�]J.C��ʪWI�P��$w>V�Fos��v2�Tb�T� �t�Z�k�ϯ�iK��)��}Pk��R9 {d[ZysC��l�B]�jZ��BW{�,�P�K��YL%�)�Lh�A6ᯝ���}�m�Q|�l�(��*��5���\Y��{VPX��$��;��O,���a�K��u8����k�ƭ���ˇqL�� �9�o�R�|>����a�E���߾��L9�0�3Qs$���؎Ck���@�<��.cיQ���Adѐ���Dd�X����^�(f��������\Ǥ�GƟ��zܻ�I�=Jz~I��w@����Nv��c����iB�T����(ma�϶Vb�v�U -��?�7�P�n�����D5Ěw�ޡ� -��c��k:�۴cd8Aȹ��Y<����5���f:�°W39���9h��p��%�'��� -羦/��`)��=��6�c���B5� ��8�bZ%�� 6:�U7i&�[Xncv'��{u���b*�t����$R:NwS4�eB�w�Qw\��1���}��8�p��]�@D*�+��4DuD�Ue�mV�a�h���0��}�2F�>��[�P�)}��a~݉͗�F��.�Ȧ�W�:�9���`ן#�9��������4ꕰ�c�����ѣ�qF�@n��{nѫ?����8�|��[&����D�W�g���z�7�t'�����dm�7�*�QV���v뭿N���x��,��D��7�[�e�upԠ��%6�������~ u����� �ˡ��:P�5�n3�+g��?'{� }�r>TWd�_3ެI�n�ɬ��i��t���~����2��_��a0����$s�.e��fu��䷷i���I*�����V���Yմ/d`ٝ5-qݣ�?����]�S��"?ɮW��<k�=楴�.����g�rLj��2_ɠ���I�����#���7y�����[�tm@��1�rR�gh��E��#�����P�=g<���~�u���2ꦜtxdk�eK|�i����Y�� "f����?ۥ��ڹ�}>��B*�����f��T�>����?{yE�Z�u82�T�5j� -�����P9IG�vw"�?/�����]������b)���D����EV�qFEMJNCbP�U�$��0���O�'�̳���� %k���-���A^� �1��RQ����αUʷSM���#�ܜᣋ���C�n�g�j.�`��(\�'2N4,ٗ�V �Z��f�����j�@�@�z���^V�������C�FK`���d�1�y -��N�[%�������u��f�Y]�-��̽x�xz��Ϩ>�����xT��X_|��D���Uab�V[���qz�O�s��P��:���딓���Z,T!�&�s�s�}2/������$��|S��&���9����GZ=VH�`S/�I�nW�N* �e�B�K��"��1�`��=F�������l\�:�<���"�R*mg������}��>��4H�G O�;���S�����O����V�'�38j�ʮ������5%<�Ts����Q4��<M������ 9��2���7 ��(���ZJZ�Ɍ����d�ȸ�(�'�����v�S2�}��w���<f��:g{�H�e�b���!%ڱ�*�3�� -~�9�V�����q"�q^�����gZB2}aN�A�E��P�̈�o�9��"p� �Fu� -#'t*�O����7��F�i閒tVN�:����sz������ֳ�e�_}[�b����)"LDs>r�#��B�"7$1�:+��ϱ�P˒?6��7%V�a4v�Мe�4^���=�"�6F����iG��� -��b6�}U֧�Oyqr����j�J�|Ģ��(կ��m�CC�Pk��j0&l�a]�"|z��W����9~_h��BIi�g<�ATVE;6��&B�p�ƕ�ۆhg�u��;GA�d(�O��Z咙��d`����w�Kn�پ�l=�����k���8wMˀ1�@�Gݨ`��@1+q��e�wk��`�'�p�7�VU�v��x+Ҭ+�}���_����1�H�1)�>� l��������S�2�س�����tfO -��HÞ�V��\甔a� Y����Y+���ژ�ySV�����@�4�N�1:V�kW�<���$��g���?8h�J]��������6$={ߠ��&0B�G-�g��W~����BO��)<��Xب��"��r}@����ۥ`yŻ��>^q��}��ګ�4��I@B��� i��� ��ItT�d���W�_g+���j��-4��M.v/�~t� 5��q�LƓ�����" �1��5����}�un�s�wW� �0�i�ٞ��|Y�r��S�JK`�t����=v����]�Q���/���~W��ei����0�˓{f�������/�Z*_g��g$�?q�zJ��hגc��CT�[�2g)�����}.�T�>�T��p��%�^�.Df����4�__��+��������xLs�l9�ڭ��Fg��^ou5;���S�æ$���6��"����A���G�o��������o;�ڑ_4�s{�Y�V�` -�4^HY��]�ym�?�>��o�N ���!I��$�)����Nj�[R�������o7�4��S�8���E|�L���#��n�p�+��$�H -3 qE�z:�}�cJ2sy���id�_كA�E��<�q��H���$o�Ve���&^ց3���r|��o����oa�+�N��y�k�/�t��3.e��J��,"eo}���9���\g��-��RRYv-�UE �>�tVM�E��}��Q<4�5��/����B��W�m9+�с_�/��YJ�� ��w�60���H۹�`'�~�#�[�+��@U� � ���uMR��ײ�ާy_v�'���Aa2��E�IgM�ьD"xud0��bX/�ӫ�I�D`�Mw��|?���lk�����Ճ����N��������h;�����/0b"� -�|���ܹ�Z� -�r@ �ݍm��h��4o>)/0S�U�a �)�O��q�^�q��oGk,�$�E�!t��)�G�ѨN��CT��U�ς�/�9I��;j�9��}�9J�Nk>��Fl�� ��k���[i�W�^F�Pp��j���"��Y�)AI���⭰NT�|�P.���r���Gynx�S'�h�ON�,�ob� ؖ����O�x�އ�-cc�P�va���ڿjη"�mLI�����J��I�����L�_�@fJ4��N}�ዲd�^u_Q�NM�{w^�#vc>�����L�x���IL>H�}2w��0�#w�U��V������Ӳ�w� KI�ǰ�A3=��e��o��c�=r}'D�L�)���p��c��c-;�F�z���Y��EFJ-Nr����r�:����I��77��F���,�餖�\��3C�wm Ǐ�D�NTmN�wkΔ����'��b��O��U� ����rn�T��Կ�_<�h3�κo�~�KV��$@��Kc˄~1d��z��J�@���&�'�b�6�;�f���:A�@�o��*��]A�Ǭ����D,~���N$' ������K�?�u䁴8r�"~O�#}��i3@���`�w� ��m��*e�s�NNbɺ�a|٠jLG"��ٙ}u<�'TP��I���Q�Wǻ<��h�F����_�%�$�����.PIi��<����ͳN!Ю����vRg��:���)4O�A��K��S�~�7�&+���Vy]���{�������g��|��!��c��t�b�I���J��-��.h��L=>�Z�5c�E�h���]b��n)R���������tmR���6#o���nZ��5�*t��3p��#�C����/�y�Q��/+������1���R糪` -��$*$-Or�f��GE�2���,.p�6�Ҏ�%~XY��ߊ!~��`���*ڗY˸�ǃ�Viߍ^\˄N��*���}�Y#��O%$>t?kD��r+z�� ��6�����闔۹!U:d��3��n�7Eg��z�9t�t2�CZ۰�l<d����A;�If�v�d(-�tJX�5����ZʪI{�?vF��N�3�~��!�[Ns������EV��A�7�{<�A��P ]��m�؏h�{�Ӌ��>ndF< M�(6v!����+r[;�ژ� 8�d��SRP -�;��Q�=Ҧ�j$>JN#U��f�ĩ%���HqkB��D�8��.X����pE��R}Ӆ g��}���~��AA�S�i��o"|�%5�ï����e9�=Q*r� 3�?����c��D����eV��WC�<ʐ�W -6��t�[�@tjp�Ӻ�TL��rW�l3��]�l���j��V��L��Wĥ���)���AM�ʠ���l���=Uv��-,cI7�ep���2Nj:�l���c�U�gϮǶb�eM ?$c���+[���O��k��e��s����DM��c���q���C|uK��`��?� -�t�*~�-Ŋ9��rMA`ù.6�k|+!Pb+�B�ꎜ�d��[� �6(� f���<�ȗ� �h��qx�uǝ�!�O�j�([�k�����*�1}��������I@��H��P����㳠՟9���5�>���5��?}:��cK��0� 4�=���L�D��SШW2�<1�6~��Y���;��L$_ܻ�,��=��da6ZP�F}�H���&\$��y� �:d��GX����WӞ��ɦ�Ԛ[U.���@eИQ�w$�69X$u�YRe�����]Y*{7�1���Ӱ{��P���q�L_�����bz��´�) �*�w����P�|�(&�?|e�r�Uq�w�A��A(�? LE��E��oct���&B(�����2F��L�E(��h��92�~��A�Y��΅�#�������)�\$�sHN�ɲT�r�^�A��z�������m�&��LM���g�� -y��r�ا��e�K�P�f�Wd���N�%S�S���)�v�H@W��F��������kijԑB��e��m�a�ʝὟ�l�t��`�ǹ�S�����Y�Q�N���` �2��u�n�H_ab��țZ~�A�9c���k�����y��R�6��ˤps�*�Wv�1�F�.gGwl���]j���}�DW'�1#<p��P,n�G���l,G=�gL��$�:Ͼ1(�0�Gyj��@�O~��b<t^ �ĥѼZ~ ��K���Ioa��;�قg�t[�l"��&o$.��\���wѮ`] lj���۷��� ���dj|�Y�~����$X54o�s��4�p�� �|].c*�X��:�">V�Z�Bv1�1��L,�F#�l'���T�<в��)7�G��Q������6�)���������,�$�梈����7u�(�9:�jK?���@ _�F9�4�>gN1����MA��������6D~��1oW���w*��P��-n�l%��*5U��T~�ՃW߁�&�Jq�(TtːtM�L�7E�O���]�9���+��+O �#!(?(�vnj��.����ʼ����j`�3�4W��W�.���q,�n�vМ"���C���!ET���S���(�Ͼ<7�ڥ�����IZĿ�F�7Sn��C���{�t������R�>�u6��I$#��G��OJ�����*%=����J��(���%}�����9��o.A�K�$[�[K`]�����uh�0pJ�ǵ<��u��=b�z�hm^`�r����0L�@;@�x��<zxݚ�3OT���1���%}r��̀1t c��>l�[7��h�:)E�D���cYT�H��ل��9�g��¡K��l����X&V�!�,J�A�ʢ�� ͩ��������I?&4?��A"!��p}��D��,z���re!V[s�F�~Uw��9݄V1��A� ߢ���9p��I�x���ɋ.��Qmq-�����Nc�aIKa0�,�B�_�0��cJ�;����9ک7E[p�&7&1��'�?���0vD��^���녝��"/���I0��CW1 ~8����I4�Gv���K~-.%�������2��2���82rƙ��P����#��+Z?�5�CwBӠ�������5��|���o ڕ����IMr��j)L����=�V(�"LI�o���� !��o1��6e�k+X��#�s� �F�KSKM�'a��D��2^`xM�ٓ�)ԗ�v���?�_�Dz{�CF���8~�5���ڨ��5�}T��%��,�:�W�?s����:퐥q����}H�q -�q�D��r��^[-��ӻ��(E��2���U[ը���#Rc��}��Dʰ��份��F�/��ъ�s�S|�>��{z���?���U~ r<��r7�1$��{Nݡ�?p�e���7p6eC�U��C���1����Y\A;�\�)�w?������U�}�ğţ+ܡf�Fe �%Z�'�j��G�V�KD4����;��n�(��A��]|��g�Z��m����ĸ���_���x����� ��e��+٢�1O��� �d1r`�� O'Q���uף`aA �Sq���ɩ�S��:jC�yٷG�T0�w����с�+�� �͵��������Jjc�S����m%�kf������!�B�� - e��6`l9�<�s�o�釞����X)��|��n�UC� u����V�0Ɖ��6j���:�G²�c�k��U흝,�ϛnJbc����V��U��]Q0"�0���'L���[�J�_�WI �,�t0 -�����Ј�P� 6�o�"�M�p�3�@�hP��=� 1)vS�����$����t�Pi[1n������g���ˑ�I� �Բ���?��"���?����������ח`q�>6�V��2Z���� c$N���~<��ʮ��碈#��α=8��1r���oQ�W�����-��t47P�|�Cl*�[B%���\?6�}�#��>Ӳ~�:5M���`]EI��Z4ѩ�Kڍ��KYmK�Y��ӥ����h~}(��A�b���97Q�U+�F�6��]��rT�>q;y���H���e.��|�۾_���gJJ��\,��=�XDV%��z���y�*��I����P�"[�L��xV��*�˰b�Q!���U1|��u������H�������d���b�]�"[��ؙ���D�h-H���G����DB [G.��u�4~˹�)�(�9/T�|�(m�5�<M��Z�k�D�Q<��G�1���¸>�w�z$R��0T��D�{�x�$�dž4J��_��_&� ���P=��dЊfH!� �O�=�j�Ў�����9Ԅ���q��\+�s�'� Y��yH�;:cd��/W�������~���F�V�ͥw���ʹ�+3>H-�����r�_ -�5\���F3�%���v7���ֺ^�TU{���vc�8T�C�~5œ/�N�m�]ݕ�K����J�/���}+7�q���+uD��İMP 9�%|!Mi�QE)��>�0n4>G�� 7���FjV&��nJ�a�Ý*�:���d��`t*Uk*���9C�::���+ gʮR���ᬤFpy��'Dm�4�to�� -0nf��=���d?M\��SN��0�HG{��p��ݦf� �/j��L^Y�XO����}*���:zؿ�Z�������wGP��H:��7v!R�Q�Ҝ>�q���a�wKxt�F�{~��04�I�UҘQ�="ՊQ>�aj�gG���+{Q@�nrM����n�-s3#4��IPw���a�d�������̈́�@��e?�ZZ<�&�=P�J�f�������Ǩ����'���擄�1�� �6�ңw����[18�W�%܂�P@�1��Ǜ�"�g��I�����Y-#�}�J����&� -ɱ�he���K����sOyu�+&�pq�q���s�o[�z&_��=�mGFX��Y+8)T���^�aF?(��ޫCCg'�*�R�o����N[툪w1d����9t��� F��������d���:`�SX�g� �k$N0�,/�aD����J^f�*�K�+G��7Br"���s�0�\�WЪu���醊S.��FI�N�=�r�(/s�E�N��p�G(�r�pE�h��o�$�.((]A����je��{�ȈX��&ղ -�y�u�py�LV5B�ر1���Bc��L��y5��r��@�?H��t�k��ј��i��2��=̏�������6ɹ�_2���@�z���vBVE��P��<�C%2fT~YA���"6�p3�C�RJݔ�����C�,�^Sl+[���/��Y\m �������N/B#�����#�rv��ov�p�_ z�2�e. �x�^C��8�$WU�G���H��7Ń�-���R[ྡྷ�pdžvmh�yE�.�?�9�� � `N:�ũ#<{��G��ʜ�e�h��W��`��� Ka�ե�#�����h��z�>��h�}"�}_��)ǁ�l��2�����H -R -Uh�&�N�{����4��G�9�as8��@����{��p�3�t��z�SݗM�>�ّ�]���������f �4*W< -Hk(7ʴC¬f"Oɟ����^�����/�������hMe������Չ?��5:�f�c��p7x�l䗫\���=����AAO����TE��}yC�" �5R`������f�夞��U>�����e7;�s[W 3ΥF!�*���)v��-�y��� -�l�I�k��UY���樰C$�jGU -f��������5���&����\���)|�ђpz�y]nl�N��ʥ)�^wX�5�'�w�S7��|ܝC��8��ڵ �_\�1o�k��44���k��>��Fw��1����1��,�Й*t_�Q�w@�7��������vķ���.?*��ѧ���F�˿2�,$fT ��J��]��_���;I}�eg������� -����Z�M�_��z��?j��;�\����G���*�5�'(:ȴi�ï�\Y�3���x�$W�l��=X������\���*���ףn/�ϡ.�+���1秈��������}���h�3�x}9�˱dj�Lx��7� >p�d�F�"�vӣ�T|��^㏉ِ���E�>�.�t����%����u3��MГ�WW�[�M�m���r~Z4}�l�W���o����sH{Z��O�阎� <�3L�럊8@(����y:��<D��0�ޜpr3�L�־h,���' �c�"��Gʸ�<{u���7�?�"^ma�s_�!�<�&:S�ґo�4P�� �#ʭS�[�8�T�Cs��ҝE�E�{�½D�6��H��,7�����gs���!�цg�J��Ցo�!��C���_z�����F���{[��K�"�����B'��=���x�T|�>���Z�@�I�g�z����a�<6RVB�NՈS��]��g -�0a�LZ��ت�ez�v�˩_���@<DM�"����"�! -��^�oʚ*n�s�a��4�S�Z5�������셔�*�.�����Ί�Y1�"�zA�9j=��3��5vLѳ0w�V���hͶ�'Ψ�pDڑ7�KǞlf;8����6�Ĵ��,5a㵄��FA��a���H�ouu%��s�ŷFf,��5�ܓvc߾N�m�еr����a-&��l\/�=%}��Yk��b�Ep4P����jIĹ"�k쨇�8t�~���!�� �~� �Y������s]&�����ϋL�"�²��e�,��ã�l��q]�V�r���V{��N�p�\��%�o���Œ��Š:|��R����cǤ=S��*^���'����\%�����) -H��J��fS�?b.I�Τ���}�z�r!t6����͌�����<mR6t�D=,�o���s�Z��5Ez�G��~����'[�E�s�uv��G 'E�QbeQ��W��� ��1�i%�Sߦ=U�v���ՖT�SVkM��i�T/t�܊�� �t���p;��҉�E4��'�|ew���I���A@&��<�P*�0ʰ��乺��6�����=~E�f��>[��S厂�_��ej�N��N^�Qޯ�a���� u�S�5�Pr�z��P�5���0_�!o�yZx�.���aA� �N�?����D��5�>P����(�Sq���h�kM����_�ƣ��HK `�9�o��I������Wv�Zd(�3�'�/|��h8��^�v��V��)�7蕪a������C?�:����d�i���_1^�$ -����iݽ�*��'�v �#�Y!韫���f�-���锆_�'���!�Fv�8�d)/v`+� '�f3}�z�V�^se�7�����>���a�٢m�eo�F��8=z�l��!���W؟��-��A�|�R�݊5�QQ;�H ��@u���� "Ĉ�� �7[*v��LP�(E��&�d]XT�F�WF�?�qnF����v#:�G��"/8/��Ԩ~xͪvͰA�T\��Qц C��U��{$`qpr�;�'z~����Ї,�]��+���S�0F�C�.���I�l�rV�g ���:6��X���Mʱ���>�uΛ̚4��:��ӕ�:����劃Xa��C2�_(�������>dΦ�Ԙt(�`8�>9�X`�W��Q�����L�`=��]4s�2��J<�20�/�?���n��[~�����4��Y�hvs��y�����-vS���vh�@4�7��@�Vo��|�!���w�S�t�~����x�4�6ͳ�" ���. - �,�*���`�'�feǘ7��YF�{�,����Z��il�4��ā� -t�j&�Pb+%4�7��T���V��d�Rb�"t p��#�D� -��!��uE8�����c2�&���Q����> ���o��<�n�jޓP���Z�`�`���G?O�I��,�{����� �"%����+)�� ���K�����b�X�h�y��bטc|�ךr��� -���2V%]��F���iaʯo�48��|�M�p:,e�����Y`v��/;<sP�"�s���|���w�V�N�Rց�9!qؓ���)��8V�'@��k��Dz�� �+=d[!*�R�;%�;���I߷MQs���X����c��?�.n�Ӂ�g-T��7�#O�Ŵ���wX!�۰�)��yA��:���<fL��L��i�����=[)q���;-��+�b&�<;�^����o�=�y`�,om(��C�%H=�+~�n��*/�נ�ǧ5�� ��OW����B7��?|�xb^̖&�9��58 -ĥ������k�U`�@d��cxЏN���G_���R�;��+ob�a�p�vDSD%��H�^2�2F�+m��k/��K��|�ƉO�M:e���8�Əس:z,P�T�������y���: =�!8i��r�9*q��fʠc`�Ce:ԥ� -�9�LMkF�66��X�~x�{tHx�����BK�ψ8�l�0��8��[�2�ƾ�J�zmO�jUm��6�VuHNj���+�F��r�E��m��t�A�3�u�me�K�?���������E���te���s���d[�Vk]�*I_$��\�t�%%J7��$RB�Ρ�W��"/�I�H�yڈ�m(T����ޒ`��kȣ��Z1���f�a!�4�� y�I�&�3=H��� ���>2���5A�X��x�R��d����~�h͡p�� -�q�/J�y�0��'�1�B�H=g�y�t��=��MH ��V��1wPE����ӝ����JIQ��>b.������������]���]������endstream +x��teP�ݖ.��N�������FB��,w������$��[.�wf�L�;�f��U]�.��z�z��4�Z,��� YG7VvA��������A�E�l xw� ��H���n���@7� @d �Y�89H4�)G'o[k7�����?=��̽�=�~����@���;:ك��!���@ �� `e��� T���r�:�9������m-�ʶ W�������pt����5W�w, W�����}?��9�b8�\�m]]߿���k������`w˿����&�����a�{Swtus�p�ur�WU���O7��_�]m���G��LKG��Z�;��u�:��@^n�2,m]��@����`N.��pw�u��'f���b ���üc�5�� �O������v�;�?8غ���V�H��5-��k[�: ���( +V����-ݝ�=�r�{@���; ����` �BbSut{/ ������'�����+����?�_5�O��z��Z�Vڿ/�?��� +P����_�@{[������z�0��@܀�c�p�~�����N[WY[/������ � +~���~K�������c�p���KL�����ᯡ� +�9X�+�wy��ͦ����&������Y�請i{;���>T-���CR�������`�b�{�l�\�n�����@��U�n.�^��M�s������i�������_{��t�|_��p��pwqyW�������/9��@Z^t� +�����V��74.����z(̩�A�� �ڱ'0=�@��KMk��[����"��H/��'t��ğ����s����i7�ͤ5�X/��|^yƐ�]w�����I��d���=C�GA��Z�EZ}n'F#Vm��1m���������Kؾb��8D!T�/Aι�b�:��1�%I�ɽ�}:�\�K�xM�\��}Ć +���:P�Kp������)���^/�A�@� +��sZ�U5'��D�X@l���Y�ֺ�|I8�m��x�"�V-w���]��P��v.\G-p��{P!��tK|�RӸH b��n����w�]�aԃ]�lRa`�U@������L�G�Ktu%�-jy�[���=������$Q|v9K%�u�u��%��d�#<*�Ac���1�y�,��[��:����j�rrr&L��\��?2��lECr��,�4S�]���9��I���uFA�������I��4���F�LB���+8~7,���#Br��?(�|��Qg�r�yFad��}����t����h55L̛8����%h��1��nd�~��1S=�~:ٟ�P��������C�Mh�I�rF���U����*I�&��p�C��Gy���J�92�4���� ���_ +}b8�Dǖ��_>#�ߥ�2T ��z�D +%�Lr�c�1n�67Kl'#IE!FO��J��U����ʜ���>��y�����Z/�����G���77Tɦ)$�U>��)*t%�'�r ��սĠٚU�T���˄�d����ޗ���W�֏�>�Ba�_�8͕���g �%Obe����D��ʯ�,Q��Y����n�Fl�j/��|�ċ���3�v�)���#<q���X�(����\Ȕc;5Gbف�x0�&��T̃)�2v�寏D� ���O�A���:��b68��+���:& ?2�\������O��Qr��K*ľ�WgL�p�����O����ud�l��V�lk%�n�Z�0��������N����NT#A�y��Z��:;����M;F���9��S�/\3j,Aqi��)q5�s.�a��V�� +�HZ"�<qL�p�k�bz��b_!0�#�m�1F�y�!T��)�U2�lnb�Z�aAp�f���6&awR{0�W�N/)��L�)�I�!��tg1E3_&�x�u7���Q�S�(ؗ���� �����D�R���ZOCTG�_Uf��a��&Z9 +#�ۗ-cd����E���G��םXih4��R�l�zu�3�\�v�9B������-~�)�M�^ [96�nx=�g��-{�-z��w��ޝ%�OQx�����"����J��^�X��Ɩ��ҕ�� ��Rś"�j����=�n���鏂�V�����_�(��&�k6�̶���F����R���ߕ~��a9#�v^鴦�m&v�T����d���/c^·�L�kƛ5I�m9���>�ԛN}ߏP��X�_�+�7����d�ѥl��Δ����6��0Ie�1X`�� +W8�����,����%�{4��1}`���s�RB�'�� +���҃g���Ǽ�����W�q�)w���@+���dYi�<?�[x�'�`�O[��H�4�3�-'5}�F^d�>2Mnި.� +50�sf���_�'m��^{YFݔ��l��l�O3 ���6���A��uTw�g��_�B;ϧ7SH% ���L�uٖ�O�����^^A��Vs��$ձD���½j�4>TN�Ƿݝ�ϋf,+�`�im�p��}��c��k"F�j�"+y��8#��&% +�!1 +��ͪGE@AT�ħ��K�YR��㆒�5I����� /�]��Zl��(Z�YsE��*�۩��j���#�ܜᣋ���C�n�g� +���[��M�D�'���C+�H-VD3U��� E5uA�N J=r�c/+��y]~~t�!E�%0k�Pvz�B/���VI��3���vx�3���DAVWw��.s/��:��2�3�����1�D=�c?��b�f!y�\�X��F1x������/��NA&-�:�{�y�sUH� ����\c����tD��8��0�)yAI�.`έ��e���V��"���B���<��JBa�{����R�_�H�j�uo.���a�o�!$d0$W�ξO8������J�٨-#(�{�&�O�<���Q�S�� d�ñF�D0�5Ǔ����Ɖ������`|G?e=zM 3�0'k<dM>+O����E�#qCF���/%��M��!�c%����s2���052.' +�I��|����Ɣ�w�b�+#G�������-Rg٬e~bH�v���� +��n���mN�U'.�f��8�8���vDf�3-!���0'���E��P�̈�o�9��"p� �Fu@ +�#'t*�O����7��F�i閒tVN�:����sz������ֳ�E�_}[�b����)"LDs>r�#��B�"7$1�:+��ϱ�P��?ւ�7%��a4v�Мe�4^���=�"�6F����iG��� +��b6�}U֧�Oyqr����j�J�|Ģ��(կ��m�CC�Pk��j0&l�a]�"|z��W�A��9~_h��BIi�g<�ATVE;6��&B�p�ƕ�ۆhg�u��;GA�d(�O��Z咙��d`����w�Kn�پ�l=�����k���8wMˀ1�@�Gݨ`��@1+q��e�wk��`�'�p�7�VU�v��xKҬ+�}���_����1�H�1)�>� l��������S�2�س��s���tfO +��HÞ�V��\甔a� Y����Y+���ژ�ySV�����@�4�N�1:V�+W�<���$��g���?8h�J]��������6$={ߠ��&0B�G��g�+�m���BO��)<��Xب��"��r}@����ۥ`yŻ��5}����h�-�Wwiz����̃��zy�A���訂�,ه�P��F����5�W[hHi�\�6^L��j��3�♌'-M[��Ec� +&�k��K����ܲ�����A +aHӄ�=����\�"ǧȕ������7$z�B�����12�_�ny������@7�ma��'���W�&I/6'�5�1^��T��l �HP����Ѯ%�ܛ���{��e�R"��� �\�ͩ�}������K�=��]��xQ��h����*��������xLs�l9�ڭ��Fg��^ou5;���S�æ$���6��"����A���G�o��������o;�ڑ_4�s{�Y���` +��4^HY��]�ym�?�>�o�N ���!I��$�)����Nj�[R�������o7�4��S�8���E|�H���#��n�p�+��$�H +3 qE�z:�}�cJ2sy���id�_كA�E��<�q��H���$o�Ve���&^ց3���r|��o����on�+�N��y�k�/�t��3.e��J��,"eo}���9���\g��-��RRYv-�UE�"|H�0����&}�����xhNk._:u�S�4��b%�rVp�� _\׳�:���m`�u���s��N���GP�::�WRS��� +*&W#�+ꚤP'��&�Ee�O��dO�^��d�#�R�ΚJ��D���`зŰ^'�W��h��*R���m�~ +#,DE��.η�7>��-� �����7�7���!Ѷ��ҋC����K���f�Rp��j�*|�%��v7�I¼�R�^�|R^`����@$�S����� �$���ߎ�X<I���C���S���Q��'��l?+�J�9_2s�8�w��s���s(�x�8��Fl�� ��k���[i�W�^F�Pp�� +�ZC���ٔ�$��}�VX'�^�Q(�T�X9�I�<7<�U4 ��'�X���7�][ؖ����O�x�އ�-cc�P�va���ڿjη"��MI�����J��I�����L�_�@fJ4��N}�ዲ`�^u_Q�NM�{w^�#vc>�����L�x���IL>H�}��ב���r��_�si��iY�;Y����c�Ġ�^�2��7�_�����"H&���~8W����ȱ�F�o����,��"#��'�Jp��a9c������$]ӛ��]��\w�tRKuL.��!Ȼ6�V��Ge"R'�6'��gJ��P��e�������mz�{9�t*�i�_�/�E��Ogݏ7p��%+Lz� +���إ��eB���l��|�R tm�u�m��W��rF��Y��z�R�CVo�.���c�m��F"�?^��'��nh�����%��:�@Z�o�'�H?oZ��d4��]{C5x[)�JY�ܮ��X�.@_6�ӑ�,hvf_�� ԃ�Fu������.��.�Q0�����f *���,'i�TR�0�jb�{�S���p|�����=����a +͓Pc�j�ԫ��ͯ��7�"�U^�m0��>�Gd9P_��A�/?�7D�zl���bT?I�PSi��%u�-w�I���[3�Y��ث�%F|�"u�]��:���Yl@�&U�L�i3�F)/�����^�B�8=��9?:�<�+x�ҟ'E���ү}AJ�OÛ.u>� +�pOL�B��$wh�KxT�.S*���q!m� ��Y���e����Q�'Yv:�g���}����~<�m�����ŵLH����j��G̐5by�TB�C��F��/��;�P�i�aN�I��~I���R�Cv<Cn�V�yStp�\11�����[��Q�چ-`�!�o�LډO2c�3$Ci�X�#P�zW��=�d�RVM�c��3]tڞ����ب`)@ܒp�����}�,�\�z�A�� ���ULܶ���ֻg:�� ��Ff�����R`c�l��"!��3_�5p���Q'[����Rpݑn���6�F#�Qr���~6K'N-AM�F�["�$�Qut�<���+�께.��p|�Wk���<�<��f��&�_XR`~���&.�yP����9���O�Ÿ#�'���Nw.��b�Q�ԾR��� �x�r�S���-٦b�L���xHd��Uf�gC��Հ���[��2]n^������o5e+�J��}�/�T�q�:6��%����7P�8�阳�/~��V�=�ۈy�5%�����Үl�CG<�S`N�� +���9j�N5e��e`�O:�퓣S��-�"<���G;�4+PpV<���1��6V���5� ��x���@���]�;r�iL�n7�۠�7�EJs��#_.��=��5�w���?�٣l��UZ��w�����K�rb6�%=�^#�Ck�3�ς�:�+�s��0�������|仏-��V�5���p"3YݎOA�^e�D��|���u�g:�[�3A�|q�ڲ s��\撅�dN}��9�"y*:�p��J��&��-�a!&[_M{��&�~RknU�����AcF�ߑ��HPD�`��UgI��۟�{we��E|��ƨ��O���B��o\lj2}�;+۷��� +�bt�4P��m�g�CI� d�1�7��+��ۮ��$�[�GB��a*Z��(B�~+��U��BA/�-0-�1�7xe-B1V�F�̑9��o�:��v.t<�U��U=O@�`�G�!9'�R��i{]|Qꍚ��j6:��hC�35�+���j*�Ztˁc�"(��U/�B}��_��L�;!�L�{L9Է�d��b ]M�-��7���RG +��#��6%���*w��~n|�9� (�a�O�Z6�g�F�O8u�j�5t�lR��U�#}���3#oj��1��z�U�^�Z��6� ,��m*_�I��Uh��,c0#�<]Ύ�X#QG��(���v��NcFx�܉��� ����X�zrϘN}Iu�}cPv=`R���"��m�X��rg�x���K�y��T#֗�������wT�Ϯ;�(��D��L�H\*��s#��]����0���o�!�n�������(#��I�jh��� #�i����A&�,�\�Tֱ��UbE|�6����b�c,�L,�F#�l'���Th���Ô��#ay�OѨ���{VJk���vz���{g�}��p�(bs�r�M=Ju�N���O�d=ۄ/_����?Z��?���pp�����bv���i"?�[�ճ-���Jm%T�~�[3[ʸ;�J�F���>��y���w��I�R? +�2$],� G���S��fd�;E��/@�Jy6����H� +D��1�v���;q��vx�B ��pf�f�ʘ�����e�t�6�#ԁk�)�1-�=>14�]RD����>Ż��R���sӪ]JLO졛D�KB�����fʭ2sH2"�v��`=�Y��G����u�1�d����(r�I�5T6Be��G3W�_I��w����~`2=g��@��%�zɓ�a�~k ������_7������y\˳9�Yei�#6�whٮ���Z�~�8�Ih�h�w��x:�D�<ވ��^�'�Q�xC2����u#����R�H�i�9�E� ����MȞ���.�,�ȶh�O߈eb����ta�q�,�nhN��.���د�L�1���9o ����;�{�&j9�`�s�=_�+�ښ7:�����&���t �9��w���́{�L���s&��N^t�v�G��� �~���4��#�b[������cL�w�^>>G;��h.��f�$��������Ǝ��A�VK�}����]�<>v! ��:t����~��_��D�yd�x�����Rb/�� +?Oo�!#��(�i�##g��J ��X(:"N����[�?4p'4 ����/�����e$|KЮ�h�Oj��WKa*��?F@p�ٵB�aJ�|�t��m�O~�yu�.� X[�ҝa������ij���$�����W� +��b1{��?��r�N����+�Ho�|��b���e�U�V����J��$���Z����gn��u^^��4Nw�_㝠I\5�C�=n��\�q�k���szw6��C\悶_�j�5�1p�Bj�0��W�H�a�|�7�����4Z�z�{�o����yOO�L�*~\�"Ǔ���+w3C�Я����'hQ�jJxg�Q�t^��<d�:s;������՞�}�3��\���_E���M��P<��j�mT��~Y����x���V��k��DDs�]οS?�v�4� +��G�(F�]��P+�M�Oi��%<��g�`��z��;Z�X˰�- +������M#7���tEY�Xw=�����0�7��K8����:�����ԘG�}{�JSz��8>����I> +Y_���P�J ���60�A:���VR�f�?^oI�,d>�_��RvLmƖ#��<��֝~��ZȎ���;�w��^5�P�yh%� c��j�f���c{$,[)0F�6�_����b���$6���9kY�Z�9�#"�h�x��ix�u�d��e|���\L��Z���8{��`C.�F/��D���fˏ���#��b7�����K���N� +�����{Kk��}ƻ�����dN�M-Z��cA/r:}��Hh��؋<�~} ��cn%./��I�o�0F��K��Sy���.�8ri��s���1#�:��vU{U�k(ނ@)LG����[wbS���*\����y��#Y�����֩i����*JB�ײ��N^B��X��ն�ߑ?<]ڿ���ׇB�4-�q?�1�s�A\u�2knm�U��,G���������$��]�>������n讚}���!�!��}�h�ѣ�E�aU� �w�J���R���KI� +5)�Ž�4��gh��+v�yZX���]��a�̌4��~���NfH Q(6�� �eI��٪*N9@V���p�K�_���N$�u��)�Q�L㷜[�ҌB�c�bA�ȗ���f]��iJM�*]�$*���>B����������#�R���B�l&�����$!�?6�Q��"m�2Iѭ|����'�V4C +iL�}2�U+�v�%��P�g�ǩ +�s�H�}�p&Xd���! �茑��\��@濒/� + �,���K�ε��s�Wf|�Zn�����0<�Fk��')�f�.J +#��6n.�ֺ^�TU{���vc�8T�C�~5œ/�J�m�]ݕ�K����J�/���}+7�q���+uD��İMP 9�%|!Mi�QE)��>�0n4>G�� 7���FjV&��nJ�a�Ý*�:���d��`t*Uk*���9C�::���+ gʮR���ᬤFpy��'Dm�4�to�� +0nf��=���d?M\�Y����aT���8��R/%�M � �/ +\G&��i��V����n=��E�A���``��� +��`"������(� �z즀kX����5���_l�*(�rR�o�4fT2D�H�b�p������n~��^P��\pA"z(�q�����r�]�`e1�(>�jc�es3�'Ы}��è����fҵ�����+�5��1j!/�Ɖ��8p��>�ؾ�Z\z�NPQ2v+g�*��[� +�5���xS_���6i�C�c��9�ed��V ]ؿ�dP!9���3�uik�%���#��=u�$.�2�{�x�A�m+Q�䋘�����h�|<kE��/��rۗf�� +������ �����s��E�Ӗ;��]Yf�?yݨ��5��~�w"'`6Y(��X����4�E�I�/��;bQfab@���٨��&����Ѕ܇H����/� ��j���}��┋/�Qҵb��\8�������R.�-x�M����+���:�@�����`o��֤ZV�3O�..ob�ɲF(;6�_Sh`�W� 9�2�&" 6T�����)ߛ�u�>>3�O9-�qbQ�1������ޟ_߆!9W�K�m�>e&��x~���UQ��(�����E���_V�+�CŪ��#�L�R7�9x��D�(K����F=��˭�9��DW[���n!㭻��Nj��(.��B�H��8���-\{�W���Lu�K�'ެ��x?�-�U��o̹�x��F��y�������6ܱ�][�F�}^�K�OlN�h��4����pq�Ϟ;��%�R�L-��*�l�a)���z�#���UM�P/ه�-��CD���|9�8H���X�~�rIAJ�� ���I}�;|p��|��4�`1l����8p�7�.B|��N�XO~���i"���<kv�rףy�vG��A��F�Y�"����ʍ2�0+���S���A�d�W�����d�!��"�4ZS����c�au"��C�q�����ب!܍�'��*k�hd>0s�D�S���y2UQ}<k�E��Hz��a��#4��*E9�'�{�� Į�k����������Us�QȦ�?�d��f�m�`^�`��*�ER�ڱ{U�� ��9*�I��Q���+%>@+��v��3�Ia�?/�k +�|� ��p^�[�,�ri +�W��}�� ����~#w'��h-ή�vm����f��A�Z��$> ��Fs��W����� Fҡ�4����eC@:S���9�����"����|^P�5sЎ�V���G%x;��tb�����Hr�Wƞ�Č +��[i��k"��wBz�/����,y�~|כ��aЖ�[�� ��P�y}�G���|�}�˟��A����Á]%���E�6mu���=�|�WH��q���ڃ��^����5�Ɋ�2 +H}=�����2�R� s~��;�}�}A�g �@#�H�����9_�e S�f,�������� CH�4�7��%��[^�L̆�E�/����v!��T�-�%<������l��T��Jߺo*l����U���Ӣ�gK��/X}�6�ޞ[ �;ە����������;Ä��������y�����Ct1xA��Y'73�dn��\p�:�)"�{��γW �!��j��� +)��a�0љ:��|;��ڰ��NpQn�ݼ���QE�́v�Jw��y�����#�γ�0|Zs�ͅO4�G��*�wjTTG��W�г�+� Z�)z��m%~/�O���Cr��r�$����7�SM,��0 +hA`w$� .�I"�ߊ�m屑�Zw�F���� +�?S� �g�Z��V-�÷S_N��&P��!j���(��� Qغ�%������=g�H�8��U� �~|�q�q�^H�1���h��p{�ﬨ�� (Ҭ���փ +9�8�Qc�=swa���l*}�ZG�y�t��f��#X_�l�f����&���0>�z�Qqs�8�*=��[]]ɳ�\{���yMF ���ط�l�=t��8�Eq~X� #8�F�bOI_1@֚뫘k qu��Zq����;�a/��_ .kwuC�_!o�#�k����G� ���-��"��9G��7�(�g�/c����}\�C&�UF��b���&�ʖ���m�XӻA��\ZH[���t옴g�y^��K��D���� ������>�9E�VQi�l��G�% ٙ��#���PoW.��:v�ظ��1q����uʆ�������㭲�q�[KR��Hp4k��//~��Y�>�_g'^~�pR�%����<pe_J�0/�P�?�mڣQ�m7Iy[nI�<e����4˜�K�Bw}��ͭx��k����n�RU:Q������5_��)%x�A/%c���6�:��:�G�2lc/y�n,� �����d�_�q�Y�A����b�T�� ��d�����;e�W~��+`��7���rJ��ONW/�#ʳF���6��i�;C��Ű3,H�������Ñ(�ݲ��鵻��v*Nu��|m�� @���k�xt<i 1g�\9ɓ�5��n#\�Ev&�����s-GS����a�H�=���}�j��9���/`G��O�N�r:�8�eZ���C�W�!����dD��AZw��J"鉿]���>EV�G������Yz��ŧr:��W�5�EoȺф7�6Yʋ؊y� ��L_������\Y:��a��������;Fr6h�m�۳�'N�$��j�}jG*���9�C˺i[R�R���n��������n�:�O~s�b�M+[�7*v��L�`Q�\QM2ɺ����8���so}��܌֙$��Ft6�,�E^p^���Q'��e�a�0��|���5�x�Թ�H����lwDO����I�Y��N�W�a��*a����]� �� +� 嬠����u����U��c/p4}��7�5iX9u¹�+ xuxZK5���^��dl�PNM3�Mץ�}0ȜM۩1 >�PD�p�}r$�6�T��H�,��睙��zH?ܻh�4 e0�x�e`�_��9E5�V+������ip+j�����z%�2�!�{�[�HC���.�h�o|����ެp�!�»��:X?F�u<FI��Y\�����q�� pjC�s0��b�2�c̛���,��D�a��S-��46X�Ck��Oe{�j&�Pb#%2�7��T���V��d�Rb�cK���uGd{�i#l8�X����rz��Îɼ��b�Gi3S���W�/�!��T�1īyOB�/ocႅ�u���<' `�T��J���&@����[A����O$ +�/� +s� +�1cy���A��]c���_k~�]T +*�6b�X�t�G@�{l>��)������2�M7��鰐5N6��g���~����AA�\2�γ�uJ���[:EKY���aOZXt�s��J�Xݞ���9�ˢk'����M���JA�d�>��'}�6E�-[F����d��g���lt�s˟d<k�G��yŖ�ݿ� +a݆�N�W����)�X/�)03` +d:N�`$(�}���J�k����Ӳ��� 6�a��ȳ��E����������g���ֆr>H;�Z��s�������} Jz|Z�.�P��t��N,t3����7�'��li�9��0 +��@\�Z�=MΞ�vA_�D�>����J>}��ʭ/E�#��&��� oG4ETb/���%*c�O��6����Xܱ�O�gk��$nڤS�/�H��i���=�C��eO�AP��j���ћ� ��s��FJ�!��r���:�<T�C]�`������f�ic3ُ%a�G�����x�9+�������p��sY���E-�a�������$�V�V��mBjU�t�����bh�X,'��I�֫H�;�Y��VֺD��i�H+hn?��8(MW�p:��I��ie��n��T�E���N'_8�QR�t��O"%����qeш)��b��ɁԞ���ІB�Q)��-���<�ߪ� `��NC8����h28ӃQ����H�#S�\����/e�MF����� +�I-����������z"3�E��s���L�����khesU$���?1�)�鿮���#��[��H��� �0���ht�C�?����endstream endobj 1250 0 obj << /Type /Font /Subtype /Type1 -/Encoding 5374 0 R +/Encoding 5309 0 R /FirstChar 2 /LastChar 122 -/Widths 5383 0 R -/BaseFont /LTRSDI+NimbusSanL-Bold +/Widths 5318 0 R +/BaseFont /IRVKOG+NimbusSanL-Bold /FontDescriptor 1248 0 R >> endobj 1248 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 -/FontName /LTRSDI+NimbusSanL-Bold +/FontName /IRVKOG+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 @@ -23395,165 +23223,165 @@ endobj /CharSet (/fi/fl/exclam/quotedbl/ampersand/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 1249 0 R >> endobj -5383 0 obj +5318 0 obj [611 611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 474 0 0 0 722 278 333 333 0 0 278 333 278 278 556 556 556 556 556 556 556 556 556 556 333 0 0 0 0 0 0 722 722 722 722 667 611 778 722 278 556 722 611 833 722 778 667 778 722 667 611 722 667 944 667 667 611 0 0 0 0 556 0 556 611 556 611 556 333 611 611 278 278 556 278 889 611 611 611 611 389 556 333 611 556 778 556 556 500 ] endobj 1251 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [1242 0 R 1253 0 R 1260 0 R 1405 0 R 1550 0 R 1695 0 R] >> endobj 1938 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [1843 0 R 1986 0 R 2011 0 R 2018 0 R 2047 0 R 2101 0 R] >> endobj 2150 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [2116 0 R 2152 0 R 2174 0 R 2205 0 R 2265 0 R 2301 0 R] >> endobj 2349 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [2318 0 R 2351 0 R 2384 0 R 2426 0 R 2463 0 R 2487 0 R] >> endobj 2569 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [2523 0 R 2571 0 R 2609 0 R 2646 0 R 2676 0 R 2705 0 R] >> endobj 2756 0 obj << /Type /Pages /Count 6 -/Parent 5384 0 R +/Parent 5319 0 R /Kids [2730 0 R 2758 0 R 2789 0 R 2807 0 R 2839 0 R 2865 0 R] >> endobj 2929 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [2897 0 R 2931 0 R 2965 0 R 2998 0 R 3024 0 R 3062 0 R] >> endobj 3126 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [3104 0 R 3128 0 R 3148 0 R 3176 0 R 3219 0 R 3255 0 R] >> endobj 3288 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [3275 0 R 3290 0 R 3333 0 R 3378 0 R 3402 0 R 3451 0 R] >> endobj 3507 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [3477 0 R 3509 0 R 3532 0 R 3569 0 R 3613 0 R 3653 0 R] >> endobj 3735 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [3690 0 R 3737 0 R 3769 0 R 3789 0 R 3823 0 R 3843 0 R] >> endobj 3905 0 obj << /Type /Pages /Count 6 -/Parent 5385 0 R +/Parent 5320 0 R /Kids [3871 0 R 3907 0 R 3943 0 R 3972 0 R 3977 0 R 4007 0 R] >> endobj 4095 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R +/Parent 5321 0 R /Kids [4080 0 R 4097 0 R 4125 0 R 4176 0 R 4210 0 R 4221 0 R] >> endobj 4275 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R +/Parent 5321 0 R /Kids [4255 0 R 4277 0 R 4303 0 R 4326 0 R 4345 0 R 4358 0 R] >> endobj 4409 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R +/Parent 5321 0 R /Kids [4373 0 R 4411 0 R 4451 0 R 4490 0 R 4520 0 R 4536 0 R] >> endobj 4569 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R -/Kids [4552 0 R 4571 0 R 4589 0 R 4596 0 R 4624 0 R 4656 0 R] +/Parent 5321 0 R +/Kids [4552 0 R 4571 0 R 4589 0 R 4596 0 R 4624 0 R 4655 0 R] >> endobj -4720 0 obj << +4718 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R -/Kids [4683 0 R 4722 0 R 4740 0 R 4775 0 R 4807 0 R 4828 0 R] +/Parent 5321 0 R +/Kids [4683 0 R 4720 0 R 4745 0 R 4763 0 R 4773 0 R 4800 0 R] >> endobj -4864 0 obj << +4851 0 obj << /Type /Pages /Count 6 -/Parent 5386 0 R -/Kids [4838 0 R 4866 0 R 4891 0 R 4918 0 R 4927 0 R 4971 0 R] +/Parent 5321 0 R +/Kids [4825 0 R 4853 0 R 4862 0 R 4906 0 R 4936 0 R 4966 0 R] >> endobj -5030 0 obj << +5000 0 obj << /Type /Pages /Count 6 -/Parent 5387 0 R -/Kids [5001 0 R 5032 0 R 5063 0 R 5067 0 R 5083 0 R 5094 0 R] +/Parent 5322 0 R +/Kids [4997 0 R 5002 0 R 5018 0 R 5029 0 R 5066 0 R 5078 0 R] >> endobj -5142 0 obj << +5096 0 obj << /Type /Pages /Count 6 -/Parent 5387 0 R -/Kids [5131 0 R 5144 0 R 5157 0 R 5163 0 R 5213 0 R 5245 0 R] +/Parent 5322 0 R +/Kids [5091 0 R 5098 0 R 5148 0 R 5180 0 R 5207 0 R 5245 0 R] >> endobj -5308 0 obj << +5306 0 obj << /Type /Pages -/Count 3 -/Parent 5387 0 R -/Kids [5272 0 R 5311 0 R 5339 0 R] +/Count 1 +/Parent 5322 0 R +/Kids [5273 0 R] >> endobj -5384 0 obj << +5319 0 obj << /Type /Pages /Count 36 -/Parent 5388 0 R +/Parent 5323 0 R /Kids [1251 0 R 1938 0 R 2150 0 R 2349 0 R 2569 0 R 2756 0 R] >> endobj -5385 0 obj << +5320 0 obj << /Type /Pages /Count 36 -/Parent 5388 0 R +/Parent 5323 0 R /Kids [2929 0 R 3126 0 R 3288 0 R 3507 0 R 3735 0 R 3905 0 R] >> endobj -5386 0 obj << +5321 0 obj << /Type /Pages /Count 36 -/Parent 5388 0 R -/Kids [4095 0 R 4275 0 R 4409 0 R 4569 0 R 4720 0 R 4864 0 R] +/Parent 5323 0 R +/Kids [4095 0 R 4275 0 R 4409 0 R 4569 0 R 4718 0 R 4851 0 R] >> endobj -5387 0 obj << +5322 0 obj << /Type /Pages -/Count 15 -/Parent 5388 0 R -/Kids [5030 0 R 5142 0 R 5308 0 R] +/Count 13 +/Parent 5323 0 R +/Kids [5000 0 R 5096 0 R 5306 0 R] >> endobj -5388 0 obj << +5323 0 obj << /Type /Pages -/Count 123 -/Kids [5384 0 R 5385 0 R 5386 0 R 5387 0 R] +/Count 121 +/Kids [5319 0 R 5320 0 R 5321 0 R 5322 0 R] >> endobj -5389 0 obj << +5324 0 obj << /Type /Outlines /First 3 0 R /Last 1235 0 R @@ -23567,7 +23395,7 @@ endobj 1235 0 obj << /Title 1236 0 R /A 1233 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1223 0 R /First 1239 0 R /Last 1239 0 R @@ -23589,7 +23417,7 @@ endobj 1223 0 obj << /Title 1224 0 R /A 1221 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1211 0 R /Next 1235 0 R /First 1227 0 R @@ -23612,7 +23440,7 @@ endobj 1211 0 obj << /Title 1212 0 R /A 1209 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1199 0 R /Next 1223 0 R /First 1215 0 R @@ -23635,7 +23463,7 @@ endobj 1199 0 obj << /Title 1200 0 R /A 1197 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1191 0 R /Next 1211 0 R /First 1203 0 R @@ -23650,7 +23478,7 @@ endobj 1191 0 obj << /Title 1192 0 R /A 1189 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1175 0 R /Next 1199 0 R /First 1195 0 R @@ -23680,7 +23508,7 @@ endobj 1175 0 obj << /Title 1176 0 R /A 1173 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1163 0 R /Next 1191 0 R /First 1179 0 R @@ -23703,7 +23531,7 @@ endobj 1163 0 obj << /Title 1164 0 R /A 1161 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1155 0 R /Next 1175 0 R /First 1167 0 R @@ -23718,7 +23546,7 @@ endobj 1155 0 obj << /Title 1156 0 R /A 1153 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1147 0 R /Next 1163 0 R /First 1159 0 R @@ -23733,7 +23561,7 @@ endobj 1147 0 obj << /Title 1148 0 R /A 1145 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1135 0 R /Next 1155 0 R /First 1151 0 R @@ -23756,7 +23584,7 @@ endobj 1135 0 obj << /Title 1136 0 R /A 1133 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1115 0 R /Next 1147 0 R /First 1139 0 R @@ -23793,7 +23621,7 @@ endobj 1115 0 obj << /Title 1116 0 R /A 1113 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1099 0 R /Next 1135 0 R /First 1119 0 R @@ -23823,7 +23651,7 @@ endobj 1099 0 obj << /Title 1100 0 R /A 1097 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1087 0 R /Next 1115 0 R /First 1103 0 R @@ -23846,7 +23674,7 @@ endobj 1087 0 obj << /Title 1088 0 R /A 1085 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1079 0 R /Next 1099 0 R /First 1091 0 R @@ -23861,7 +23689,7 @@ endobj 1079 0 obj << /Title 1080 0 R /A 1077 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1075 0 R /Next 1087 0 R /First 1083 0 R @@ -23871,7 +23699,7 @@ endobj 1075 0 obj << /Title 1076 0 R /A 1073 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1023 0 R /Next 1079 0 R >> endobj @@ -23960,7 +23788,7 @@ endobj 1023 0 obj << /Title 1024 0 R /A 1021 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 1007 0 R /Next 1075 0 R /First 1027 0 R @@ -23989,7 +23817,7 @@ endobj 1007 0 obj << /Title 1008 0 R /A 1005 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 995 0 R /Next 1023 0 R /First 1011 0 R @@ -24011,7 +23839,7 @@ endobj 995 0 obj << /Title 996 0 R /A 993 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 959 0 R /Next 1007 0 R /First 999 0 R @@ -24075,7 +23903,7 @@ endobj 959 0 obj << /Title 960 0 R /A 957 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 911 0 R /Next 995 0 R /First 963 0 R @@ -24092,65 +23920,65 @@ endobj /Title 952 0 R /A 949 0 R /Parent 911 0 R -/Prev 947 0 R +/Prev 923 0 R /Next 955 0 R >> endobj 947 0 obj << /Title 948 0 R /A 945 0 R -/Parent 911 0 R -/Prev 919 0 R -/Next 951 0 R +/Parent 923 0 R +/Prev 943 0 R >> endobj 943 0 obj << /Title 944 0 R /A 941 0 R -/Parent 919 0 R +/Parent 923 0 R /Prev 939 0 R +/Next 947 0 R >> endobj 939 0 obj << /Title 940 0 R /A 937 0 R -/Parent 919 0 R +/Parent 923 0 R /Prev 935 0 R /Next 943 0 R >> endobj 935 0 obj << /Title 936 0 R /A 933 0 R -/Parent 919 0 R +/Parent 923 0 R /Prev 931 0 R /Next 939 0 R >> endobj 931 0 obj << /Title 932 0 R /A 929 0 R -/Parent 919 0 R +/Parent 923 0 R /Prev 927 0 R /Next 935 0 R >> endobj 927 0 obj << /Title 928 0 R /A 925 0 R -/Parent 919 0 R -/Prev 923 0 R +/Parent 923 0 R /Next 931 0 R >> endobj 923 0 obj << /Title 924 0 R /A 921 0 R -/Parent 919 0 R -/Next 927 0 R +/Parent 911 0 R +/Prev 919 0 R +/Next 951 0 R +/First 927 0 R +/Last 947 0 R +/Count -6 >> endobj 919 0 obj << /Title 920 0 R /A 917 0 R /Parent 911 0 R /Prev 915 0 R -/Next 947 0 R -/First 923 0 R -/Last 943 0 R -/Count -6 +/Next 923 0 R >> endobj 915 0 obj << /Title 916 0 R @@ -24161,7 +23989,7 @@ endobj 911 0 obj << /Title 912 0 R /A 909 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 715 0 R /Next 959 0 R /First 915 0 R @@ -24515,7 +24343,7 @@ endobj 715 0 obj << /Title 716 0 R /A 713 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 679 0 R /Next 911 0 R /First 719 0 R @@ -24582,7 +24410,7 @@ endobj 679 0 obj << /Title 680 0 R /A 677 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 367 0 R /Next 715 0 R /First 683 0 R @@ -25143,7 +24971,7 @@ endobj 367 0 obj << /Title 368 0 R /A 365 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 39 0 R /Next 679 0 R /First 371 0 R @@ -25739,7 +25567,7 @@ endobj 39 0 obj << /Title 40 0 R /A 37 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 15 0 R /Next 367 0 R /First 43 0 R @@ -25782,7 +25610,7 @@ endobj 15 0 obj << /Title 16 0 R /A 13 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 11 0 R /Next 39 0 R /First 19 0 R @@ -25792,5450 +25620,5385 @@ endobj 11 0 obj << /Title 12 0 R /A 9 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 7 0 R /Next 15 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Prev 3 0 R /Next 11 0 R >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R -/Parent 5389 0 R +/Parent 5324 0 R /Next 7 0 R >> endobj -5390 0 obj << -/Names [(1.0) 2 0 R (10.0) 958 0 R (10.50.1) 962 0 R (10.51.1) 966 0 R (10.52.1) 970 0 R (10.53.1) 974 0 R (10.54.1) 978 0 R (10.55.1) 982 0 R (10.56.1) 986 0 R (10.57.1) 990 0 R (1000) 2883 0 R (1001) 2884 0 R (1002) 2885 0 R (1003) 2886 0 R (1005) 2888 0 R (1006) 2889 0 R (1008) 2892 0 R (1009) 2893 0 R (101) 2086 0 R (1010) 2894 0 R (1011) 2895 0 R (1012) 2900 0 R (1013) 2868 0 R (1014) 2901 0 R (1016) 2902 0 R (1017) 2903 0 R (1018) 2904 0 R (1019) 2905 0 R (102) 2087 0 R (1021) 2906 0 R (1022) 2907 0 R (1023) 2908 0 R (1024) 2909 0 R (1027) 2910 0 R (1028) 2911 0 R (103) 2088 0 R (1030) 2912 0 R (1032) 2914 0 R (1033) 2915 0 R (1034) 2916 0 R (1036) 2917 0 R (1038) 2919 0 R (1039) 2920 0 R (104) 2089 0 R (1041) 2921 0 R (1043) 2923 0 R (1044) 2924 0 R (1045) 2925 0 R (1048) 2926 0 R (105) 2090 0 R (1050) 2928 0 R (1053) 2935 0 R (1054) 2936 0 R (1055) 2937 0 R (1056) 2938 0 R (1057) 2939 0 R (1058) 2940 0 R (1059) 2941 0 R (106) 2091 0 R (1060) 2942 0 R (1061) 2943 0 R (1062) 2944 0 R (1063) 2945 0 R (1064) 2946 0 R (1067) 2947 0 R (1068) 2948 0 R (1069) 2949 0 R (107) 2092 0 R (1070) 2950 0 R (1071) 2951 0 R (1072) 2952 0 R (1073) 2953 0 R (1074) 2954 0 R (1075) 2955 0 R (1076) 2956 0 R (1077) 2957 0 R (1078) 2958 0 R (1079) 2959 0 R (108) 2093 0 R (1080) 2960 0 R (1081) 2961 0 R (1082) 2962 0 R (1083) 2963 0 R (1084) 2968 0 R (1085) 2969 0 R (1086) 2934 0 R (1089) 2970 0 R (109) 2094 0 R (1090) 2971 0 R (1091) 2972 0 R (1092) 2973 0 R (1093) 2974 0 R (1094) 2975 0 R (1095) 2976 0 R (1096) 2977 0 R (1097) 2978 0 R (1098) 2979 0 R (1099) 2980 0 R (11.0) 994 0 R (11.58.1) 998 0 R (11.59.1) 1002 0 R (110) 2095 0 R (1100) 2981 0 R (1101) 2982 0 R (1102) 2983 0 R (1106) 2985 0 R (1107) 2986 0 R (1108) 2987 0 R (1109) 2988 0 R (111) 2096 0 R (1110) 2989 0 R (1111) 2990 0 R (1112) 2991 0 R (1113) 2992 0 R (1115) 2994 0 R (1116) 2995 0 R (1117) 2996 0 R (1118) 3001 0 R (1119) 3002 0 R (112) 2097 0 R (1120) 3003 0 R (1121) 3004 0 R (1122) 3005 0 R (1123) 3006 0 R (1124) 3007 0 R (1125) 3008 0 R (1126) 3009 0 R (1127) 3010 0 R (1128) 3011 0 R (1129) 3012 0 R (113) 2098 0 R (1130) 3013 0 R (1132) 3015 0 R (1135) 3016 0 R (1136) 3017 0 R (1138) 3019 0 R (1139) 3020 0 R (114) 2099 0 R (1140) 3021 0 R (1141) 3022 0 R (1146) 3027 0 R (1149) 3028 0 R (1150) 3029 0 R (1152) 3030 0 R (1154) 3031 0 R (1155) 3032 0 R (1156) 3033 0 R (1158) 3034 0 R (1159) 3035 0 R (1160) 3036 0 R (1161) 3037 0 R (1162) 3038 0 R (1163) 3039 0 R (1164) 3040 0 R (1166) 3041 0 R (1167) 3042 0 R (1168) 3043 0 R (1169) 3044 0 R (117) 2103 0 R (1170) 3045 0 R (1171) 3046 0 R (1172) 3047 0 R (1174) 3048 0 R (1175) 3049 0 R (1176) 3050 0 R (1177) 3051 0 R (1178) 3052 0 R (1179) 3053 0 R (1180) 3054 0 R (1182) 3055 0 R (1183) 3056 0 R (1184) 3057 0 R (1186) 3058 0 R (1187) 3059 0 R (1188) 3060 0 R (1189) 3065 0 R (119) 2104 0 R (1190) 3066 0 R (1191) 3067 0 R (1193) 3068 0 R (1194) 3069 0 R (1195) 3070 0 R (1196) 3071 0 R (1197) 3072 0 R (1198) 3073 0 R (1199) 3074 0 R (12.0) 1006 0 R (12.60.1) 1010 0 R (12.61.1) 1014 0 R (12.62.1) 1018 0 R (120) 2105 0 R (1201) 3075 0 R (1202) 3076 0 R (1203) 3077 0 R (1204) 3078 0 R (1205) 3079 0 R (1206) 3080 0 R (1207) 3081 0 R (1209) 3082 0 R (121) 2106 0 R (1210) 3083 0 R (1211) 3084 0 R (1212) 3085 0 R (1213) 3086 0 R (1214) 3087 0 R (1215) 3088 0 R (1217) 3089 0 R (1218) 3090 0 R (1219) 3091 0 R (1220) 3092 0 R (1221) 3093 0 R (1222) 3094 0 R (1224) 3095 0 R (1225) 3096 0 R (1226) 3097 0 R (1227) 3098 0 R (1228) 3099 0 R (1230) 3100 0 R (1231) 3101 0 R (1232) 3102 0 R (1235) 3107 0 R (1238) 3108 0 R (1239) 3109 0 R (1241) 3110 0 R (1242) 3111 0 R (1243) 3112 0 R (1244) 3113 0 R (1246) 3114 0 R (1247) 3115 0 R (1248) 3116 0 R (1249) 3117 0 R (1252) 3118 0 R (1255) 3119 0 R (1256) 3120 0 R (1258) 3121 0 R (1259) 3122 0 R (1260) 3123 0 R (1261) 3124 0 R (1262) 3125 0 R (1263) 3131 0 R (1265) 3132 0 R (1266) 3133 0 R (1267) 3134 0 R (1270) 3135 0 R (1271) 3136 0 R (1273) 3137 0 R (1274) 3138 0 R (1275) 3139 0 R (1277) 3140 0 R (1278) 3141 0 R (1279) 3142 0 R (1282) 3143 0 R (1283) 3144 0 R (1286) 3145 0 R (1287) 3146 0 R (1290) 3151 0 R (1292) 3153 0 R (1294) 3154 0 R (1295) 3155 0 R (1296) 3156 0 R (1298) 3157 0 R (1299) 3158 0 R (13.0) 1022 0 R (13.63.1) 1026 0 R (13.64.1) 1030 0 R (13.65.1) 1034 0 R (13.66.1) 1038 0 R (13.67.1) 1042 0 R (13.68.1) 1046 0 R (13.69.1) 1050 0 R (13.70.1) 1054 0 R (13.71.1) 1058 0 R (13.72.1) 1062 0 R (13.73.1) 1066 0 R (13.74.1) 1070 0 R (1300) 3159 0 R (1303) 3161 0 R (1304) 3162 0 R (1305) 3163 0 R (1309) 3165 0 R (1310) 3166 0 R (1311) 3167 0 R (1312) 3168 0 R (1313) 3169 0 R (1316) 3171 0 R (1317) 3172 0 R (1318) 3173 0 R (1321) 3180 0 R (1322) 3181 0 R (1323) 3182 0 R (1324) 3183 0 R (1325) 3184 0 R (1328) 3186 0 R (1329) 3187 0 R (1330) 3188 0 R (1331) 3189 0 R (1332) 3190 0 R (1333) 3191 0 R (1334) 3192 0 R (1335) 3193 0 R (1336) 3194 0 R (1337) 3195 0 R (1338) 3196 0 R (1339) 3197 0 R (1342) 3199 0 R (1343) 3200 0 R (1344) 3201 0 R (1345) 3202 0 R (1348) 3204 0 R (1349) 3205 0 R (1350) 3206 0 R (1351) 3207 0 R (1354) 3209 0 R (1355) 3210 0 R (1356) 3211 0 R (1357) 3212 0 R (1360) 3214 0 R (1361) 3215 0 R (1362) 3216 0 R (1363) 3217 0 R (1366) 3222 0 R (1367) 3223 0 R (1368) 3224 0 R (1370) 3226 0 R (1371) 3227 0 R (1374) 3229 0 R (1375) 3230 0 R (1376) 3231 0 R (1377) 3232 0 R (1378) 3233 0 R (1381) 3235 0 R (1382) 3236 0 R (1385) 3238 0 R (1386) 3239 0 R (1389) 3241 0 R (1390) 3242 0 R (1391) 3243 0 R (1392) 3244 0 R (1395) 3245 0 R (1396) 3246 0 R (1398) 3247 0 R (1399) 3248 0 R (14.0) 1074 0 R (1400) 3249 0 R (1401) 3250 0 R (1403) 3251 0 R (1404) 3252 0 R (1405) 3253 0 R (1407) 3258 0 R (1408) 3259 0 R (1409) 3260 0 R (1411) 3261 0 R (1412) 3262 0 R (1413) 3263 0 R (1415) 3264 0 R (1416) 3265 0 R (1417) 3266 0 R (1420) 3267 0 R (1423) 3268 0 R (1426) 3269 0 R (1427) 3270 0 R (1428) 3271 0 R (1429) 3272 0 R (1430) 3273 0 R (1433) 3278 0 R (1438) 3279 0 R (1439) 3280 0 R (1440) 3281 0 R (1445) 3282 0 R (1446) 3283 0 R (1447) 3284 0 R (1448) 3285 0 R (1449) 3286 0 R (1450) 3287 0 R (1455) 3294 0 R (1456) 3295 0 R (1457) 3296 0 R (1458) 3297 0 R (1462) 3300 0 R (1463) 3301 0 R (1464) 3302 0 R (1465) 3303 0 R (1466) 3304 0 R (1467) 3305 0 R (1468) 3306 0 R (1469) 3307 0 R (1470) 3308 0 R (1471) 3309 0 R (1472) 3310 0 R (1475) 3311 0 R (1476) 3312 0 R (1477) 3313 0 R (1478) 3314 0 R (1479) 3315 0 R (1480) 3316 0 R (1481) 3317 0 R (1482) 3318 0 R (1483) 3319 0 R (1484) 3320 0 R (1485) 3321 0 R (1486) 3322 0 R (1487) 3323 0 R (1488) 3324 0 R (1489) 3325 0 R (1490) 3326 0 R (1491) 3327 0 R (1492) 3328 0 R (1493) 3329 0 R (1494) 3330 0 R (1495) 3331 0 R (1496) 3337 0 R (1497) 3338 0 R (1498) 3339 0 R (1499) 3340 0 R (15.0) 1078 0 R (15.74.100.2) 1082 0 R (1500) 3341 0 R (1501) 3342 0 R (1502) 3343 0 R (1503) 3344 0 R (1504) 3345 0 R (1505) 3346 0 R (1506) 3347 0 R (1507) 3348 0 R (1508) 3349 0 R (1509) 3350 0 R (1510) 3351 0 R (1511) 3352 0 R (1512) 3353 0 R (1513) 3354 0 R (1514) 3355 0 R (1515) 3356 0 R (1516) 3357 0 R (1517) 3358 0 R (1518) 3359 0 R (1519) 3360 0 R (1520) 3361 0 R (1521) 3362 0 R (1522) 3363 0 R (1523) 3364 0 R (1524) 3365 0 R (1525) 3366 0 R (1526) 3367 0 R (1527) 3368 0 R (1528) 3369 0 R (1529) 3370 0 R (1532) 3371 0 R (1533) 3372 0 R (1537) 3374 0 R (1538) 3375 0 R (1539) 3376 0 R (1540) 3336 0 R (1542) 3382 0 R (1543) 3383 0 R (1544) 3384 0 R (1545) 3385 0 R (1548) 3386 0 R (1549) 3387 0 R (1550) 3388 0 R (1551) 3389 0 R (1552) 3390 0 R (1553) 3391 0 R (1556) 3392 0 R (1559) 3395 0 R (1560) 3396 0 R (1561) 3397 0 R (1562) 3398 0 R (1563) 3399 0 R (1565) 3405 0 R (1566) 3406 0 R (1567) 3407 0 R (1569) 3381 0 R (1570) 3408 0 R (1571) 3409 0 R (1573) 3410 0 R (1574) 3411 0 R (1575) 3412 0 R (1577) 3413 0 R (1578) 3414 0 R (1579) 3415 0 R (1581) 3416 0 R (1582) 3417 0 R (1583) 3418 0 R (1585) 3419 0 R (1586) 3420 0 R (1587) 3421 0 R (1589) 3422 0 R (1590) 3423 0 R (1591) 3424 0 R (1593) 3425 0 R (1594) 3426 0 R (1595) 3427 0 R (1597) 3428 0 R (1598) 3429 0 R (1599) 3430 0 R (16.0) 1086 0 R (16.74.101.2) 1090 0 R (16.74.101.56.3) 1094 0 R (1601) 3431 0 R (1602) 3432 0 R (1603) 3433 0 R (1604) 3434 0 R (1608) 3436 0 R (1609) 3437 0 R (1610) 3438 0 R (1611) 3439 0 R (1612) 3440 0 R (1613) 3441 0 R (1614) 3442 0 R (1615) 3443 0 R (1616) 3444 0 R (1617) 3445 0 R (1618) 3446 0 R (1619) 3447 0 R (1620) 3448 0 R (1624) 3454 0 R (1627) 3455 0 R (1628) 3456 0 R (1630) 3458 0 R (1632) 3460 0 R (1636) 3462 0 R (1637) 3463 0 R (1638) 3464 0 R (1639) 3465 0 R (1641) 3467 0 R (1642) 3468 0 R (1644) 3470 0 R (1645) 3471 0 R (1646) 3472 0 R (1647) 3473 0 R (1648) 3474 0 R (1649) 3475 0 R (1650) 3480 0 R (1651) 3481 0 R (1652) 3482 0 R (1653) 3483 0 R (1654) 3484 0 R (1655) 3485 0 R (1656) 3486 0 R (1657) 3487 0 R (1658) 3488 0 R (1659) 3489 0 R (1660) 3490 0 R (1661) 3491 0 R (1662) 3492 0 R (1663) 3493 0 R (1664) 3494 0 R (1665) 3495 0 R (1666) 3496 0 R (1669) 3497 0 R (1670) 3498 0 R (1671) 3499 0 R (1672) 3500 0 R (1673) 3501 0 R (1674) 3502 0 R (1675) 3503 0 R (1676) 3504 0 R (1677) 3505 0 R (1678) 3506 0 R (1679) 3513 0 R (1680) 3514 0 R (1681) 3515 0 R (1682) 3516 0 R (1683) 3517 0 R (1684) 3518 0 R (1685) 3519 0 R (1686) 3520 0 R (1687) 3521 0 R (1688) 3522 0 R (1689) 3523 0 R (1690) 3524 0 R (1691) 3525 0 R (1692) 3526 0 R (1693) 3527 0 R (1694) 3528 0 R (1695) 3529 0 R (1696) 3530 0 R (1697) 3535 0 R (1698) 3512 0 R (1699) 3536 0 R (17.0) 1098 0 R (17.74.102.2) 1102 0 R (17.74.103.2) 1106 0 R (17.74.104.2) 1110 0 R (1700) 3537 0 R (1704) 3539 0 R (1705) 3540 0 R (1706) 3541 0 R (1707) 3542 0 R (1708) 3543 0 R (1709) 3544 0 R (1710) 3545 0 R (1711) 3546 0 R (1712) 3547 0 R (1713) 3548 0 R (1714) 3549 0 R (1715) 3550 0 R (1716) 3551 0 R (1717) 3552 0 R (1718) 3553 0 R (1719) 3554 0 R (1720) 3555 0 R (1721) 3556 0 R (1722) 3557 0 R (1723) 3558 0 R (1724) 3559 0 R (1727) 3560 0 R (1728) 3561 0 R (1729) 3562 0 R (1730) 3563 0 R (1731) 3564 0 R (1732) 3565 0 R (1733) 3566 0 R (1734) 3567 0 R (1735) 3572 0 R (1738) 3573 0 R (1739) 3574 0 R (1740) 3575 0 R (1741) 3576 0 R (1742) 3577 0 R (1743) 3578 0 R (1744) 3579 0 R (1745) 3580 0 R (1746) 3581 0 R (1747) 3582 0 R (1748) 3583 0 R (1749) 3584 0 R (1750) 3585 0 R (1753) 3586 0 R (1754) 3587 0 R (1755) 3588 0 R (1756) 3589 0 R (1759) 3590 0 R (1760) 3591 0 R (1761) 3592 0 R (1762) 3593 0 R (1763) 3594 0 R (1764) 3595 0 R (1765) 3596 0 R (1766) 3597 0 R (1767) 3598 0 R (1768) 3599 0 R (1769) 3600 0 R (1770) 3601 0 R (1771) 3602 0 R (1772) 3603 0 R (1773) 3604 0 R (1774) 3605 0 R (1775) 3606 0 R (1776) 3607 0 R (1777) 3608 0 R (1778) 3609 0 R (1779) 3610 0 R (1780) 3611 0 R (1781) 3617 0 R (1782) 3618 0 R (1783) 3619 0 R (1784) 3620 0 R (1785) 3621 0 R (1790) 3622 0 R (1791) 3623 0 R (1793) 3624 0 R (1794) 3625 0 R (1795) 3626 0 R (1796) 3627 0 R (1798) 3628 0 R (1799) 3629 0 R (18.0) 1114 0 R (18.74.105.2) 1118 0 R (18.74.106.2) 1122 0 R (18.74.107.2) 1126 0 R (18.74.108.2) 1130 0 R (1800) 3630 0 R (1801) 3631 0 R (1802) 3632 0 R (1804) 3633 0 R (1805) 3634 0 R (1806) 3635 0 R (1807) 3636 0 R (1808) 3637 0 R (1809) 3638 0 R (1810) 3639 0 R (1813) 3640 0 R (1814) 3641 0 R (1815) 3642 0 R (1816) 3643 0 R (1817) 3644 0 R (1818) 3645 0 R (1819) 3646 0 R (182) 2112 0 R (1820) 3647 0 R (1821) 3648 0 R (1822) 3649 0 R (1823) 3650 0 R (1826) 3651 0 R (1829) 3656 0 R (183) 2113 0 R (1830) 3616 0 R (1832) 3657 0 R (1833) 3658 0 R (1834) 3659 0 R (1835) 3660 0 R (1836) 3661 0 R (1837) 3662 0 R (1838) 3663 0 R (1839) 3664 0 R (1840) 3665 0 R (1841) 3666 0 R (1842) 3667 0 R (1843) 3668 0 R (1844) 3669 0 R (1845) 3670 0 R (1846) 3671 0 R (1847) 3672 0 R (1850) 3673 0 R (1851) 3674 0 R (1852) 3675 0 R (1853) 3676 0 R (1854) 3677 0 R (1857) 3678 0 R (1858) 3679 0 R (1859) 3680 0 R (1860) 3681 0 R (1861) 3682 0 R (1864) 3683 0 R (1865) 3684 0 R (1869) 3686 0 R (1870) 3687 0 R (1873) 3693 0 R (1876) 3695 0 R (1877) 3696 0 R (1878) 3697 0 R (188) 2118 0 R (1881) 3699 0 R (1882) 3700 0 R (1883) 3701 0 R (1884) 3702 0 R (1885) 3703 0 R (1886) 3704 0 R (1887) 3705 0 R (1888) 3706 0 R (1889) 3707 0 R (189) 2119 0 R (1890) 3708 0 R (1891) 3709 0 R (1892) 3710 0 R (1893) 3711 0 R (1894) 3712 0 R (1895) 3713 0 R (1896) 3714 0 R (1897) 3715 0 R (1898) 3716 0 R (1899) 3717 0 R (19.0) 1134 0 R (19.74.109.2) 1138 0 R (19.74.110.2) 1142 0 R (190) 2120 0 R (1900) 3718 0 R (1901) 3719 0 R (1902) 3720 0 R (1903) 3721 0 R (1904) 3722 0 R (1905) 3723 0 R (1906) 3724 0 R (1907) 3725 0 R (1908) 3726 0 R (1909) 3727 0 R (191) 2124 0 R (1910) 3728 0 R (1911) 3729 0 R (1914) 3731 0 R (1915) 3732 0 R (1916) 3733 0 R (1919) 3741 0 R (1920) 3742 0 R (1923) 3744 0 R (1924) 3745 0 R (1925) 3746 0 R (1926) 3747 0 R (1927) 3748 0 R (1928) 3749 0 R (193) 2127 0 R (1931) 3751 0 R (1932) 3752 0 R (1935) 3754 0 R (1936) 3755 0 R (1937) 3756 0 R (1938) 3757 0 R (194) 2128 0 R (1941) 3759 0 R (1944) 3761 0 R (1945) 3762 0 R (1946) 3763 0 R (1947) 3764 0 R (195) 2129 0 R (1950) 3766 0 R (1951) 3767 0 R (1954) 3773 0 R (1955) 3774 0 R (1956) 3740 0 R (1958) 3775 0 R (1959) 3776 0 R (196) 2130 0 R (1960) 3777 0 R (1961) 3778 0 R (1964) 3779 0 R (1965) 3780 0 R (1967) 3782 0 R (197) 2131 0 R (1970) 3783 0 R (1971) 3784 0 R (1972) 3785 0 R (1973) 3786 0 R (1974) 3787 0 R (1977) 3792 0 R (1978) 3772 0 R (198) 2132 0 R (1983) 3793 0 R (1984) 3794 0 R (1985) 3795 0 R (1986) 3796 0 R (1987) 3797 0 R (1988) 3798 0 R (1989) 3799 0 R (199) 2133 0 R (1990) 3800 0 R (1998) 3804 0 R (1999) 3805 0 R (2.0) 6 0 R (20.0) 1146 0 R (20.74.111.2) 1150 0 R (2000) 3806 0 R (2001) 3807 0 R (2002) 3808 0 R (2003) 3809 0 R (2005) 3811 0 R (2006) 3812 0 R (2007) 3813 0 R (2008) 3814 0 R (2009) 3815 0 R (2010) 3816 0 R (2013) 3817 0 R (2017) 3819 0 R (202) 2135 0 R (2020) 3820 0 R (2021) 3821 0 R (2024) 3826 0 R (2025) 3827 0 R (2026) 3828 0 R (2029) 3829 0 R (2030) 3830 0 R (2031) 3831 0 R (2032) 3832 0 R (2033) 3833 0 R (2034) 3834 0 R (2035) 3835 0 R (2038) 3836 0 R (2039) 3837 0 R (2042) 3838 0 R (2043) 3839 0 R (2044) 3840 0 R (2045) 3841 0 R (2046) 3846 0 R (2047) 3847 0 R (2048) 3848 0 R (2049) 3849 0 R (205) 2137 0 R (2050) 3850 0 R (2051) 3851 0 R (2052) 3852 0 R (2053) 3853 0 R (2054) 3854 0 R (2055) 3855 0 R (2056) 3856 0 R (2057) 3857 0 R (2060) 3858 0 R (2061) 3859 0 R (2062) 3860 0 R (2063) 3861 0 R (2064) 3862 0 R (2065) 3863 0 R (2068) 3864 0 R (2069) 3865 0 R (2070) 3866 0 R (2071) 3867 0 R (2072) 3868 0 R (2073) 3869 0 R (2074) 3874 0 R (2076) 3877 0 R (2077) 3878 0 R (2079) 3880 0 R (208) 2139 0 R (2080) 3881 0 R (2082) 3883 0 R (2083) 3884 0 R (2085) 3886 0 R (2086) 3887 0 R (2087) 3888 0 R (2090) 3889 0 R (2091) 3890 0 R (2092) 3891 0 R (2093) 3892 0 R (2094) 3893 0 R (2095) 3894 0 R (2096) 3895 0 R (2097) 3896 0 R (2098) 3897 0 R (2099) 3898 0 R (21.0) 1154 0 R (21.74.112.2) 1158 0 R (2100) 3899 0 R (2101) 3900 0 R (2102) 3901 0 R (2103) 3902 0 R (2104) 3903 0 R (2105) 3904 0 R (2106) 3910 0 R (2107) 3911 0 R (211) 2141 0 R (2111) 3913 0 R (2112) 3914 0 R (2113) 3915 0 R (2114) 3916 0 R (2115) 3917 0 R (2117) 3919 0 R (2118) 3920 0 R (2120) 3921 0 R (2121) 3922 0 R (2122) 3923 0 R (2123) 3924 0 R (2125) 3925 0 R (2126) 3926 0 R (2127) 3927 0 R (2128) 3928 0 R (2130) 3929 0 R (2131) 3930 0 R (2132) 3931 0 R (2133) 3932 0 R (2135) 3933 0 R (2136) 3934 0 R (2137) 3935 0 R (2138) 3936 0 R (214) 2143 0 R (2140) 3937 0 R (2141) 3938 0 R (2142) 3939 0 R (2143) 3940 0 R (2146) 3946 0 R (2147) 3947 0 R (2148) 3948 0 R (2149) 3949 0 R (2153) 3951 0 R (2154) 3952 0 R (2155) 3953 0 R (2156) 3954 0 R (2158) 3956 0 R (2159) 3957 0 R (2161) 3959 0 R (2162) 3960 0 R (2164) 1692 0 R (2166) 3962 0 R (217) 2145 0 R (2170) 3964 0 R (2171) 3965 0 R (2172) 3966 0 R (2173) 3967 0 R (2174) 3968 0 R (2175) 3969 0 R (2176) 3970 0 R (2177) 3975 0 R (2180) 3980 0 R (2181) 3981 0 R (2182) 3982 0 R (2187) 3983 0 R (2190) 3984 0 R (2192) 3986 0 R (2193) 3987 0 R (2194) 3988 0 R (2195) 3989 0 R (2197) 3991 0 R (2198) 3992 0 R (2199) 3993 0 R (22.0) 1162 0 R (22.74.113.2) 1166 0 R (22.74.114.2) 1170 0 R (2200) 3994 0 R (2201) 3995 0 R (2202) 3996 0 R (2203) 3997 0 R (2204) 3998 0 R (2205) 3999 0 R (2206) 4000 0 R (2207) 4001 0 R (221) 2146 0 R (2211) 4002 0 R (2212) 4003 0 R (2217) 4010 0 R (2218) 4011 0 R (2219) 4012 0 R (222) 2147 0 R (2220) 4013 0 R (2224) 4016 0 R (2225) 4017 0 R (2226) 4018 0 R (2227) 4019 0 R (2228) 4020 0 R (2229) 4021 0 R (223) 2148 0 R (2231) 4022 0 R (2232) 4023 0 R (2233) 4024 0 R (2234) 4025 0 R (2235) 4026 0 R (2236) 4027 0 R (2237) 4028 0 R (2238) 4029 0 R (2239) 4030 0 R (224) 2149 0 R (2240) 4031 0 R (2241) 4032 0 R (2242) 4033 0 R (2243) 4034 0 R (2244) 4035 0 R (2245) 4036 0 R (2246) 4037 0 R (2247) 4038 0 R (2248) 4039 0 R (2249) 4040 0 R (2250) 4041 0 R (2251) 4042 0 R (2253) 4043 0 R (2254) 4044 0 R (2255) 4045 0 R (2256) 4046 0 R (2257) 4047 0 R (2258) 4048 0 R (2259) 4049 0 R (2260) 4050 0 R (2261) 4051 0 R (2263) 4052 0 R (2264) 4053 0 R (2265) 4054 0 R (2266) 4055 0 R (2267) 4056 0 R (2268) 4057 0 R (2269) 4058 0 R (227) 2154 0 R (2270) 4059 0 R (2271) 4060 0 R (2272) 4061 0 R (2273) 4062 0 R (2274) 4063 0 R (2275) 4064 0 R (2276) 4065 0 R (2277) 4066 0 R (2278) 4067 0 R (2279) 4068 0 R (2280) 4069 0 R (2281) 4070 0 R (2282) 4071 0 R (2283) 4072 0 R (2284) 4073 0 R (2285) 4074 0 R (2286) 4075 0 R (2287) 4076 0 R (2288) 4077 0 R (2289) 4083 0 R (2290) 4084 0 R (2291) 4085 0 R (2292) 4086 0 R (2293) 4087 0 R (2299) 4089 0 R (23.0) 1174 0 R (23.74.115.2) 1178 0 R (23.74.116.2) 1182 0 R (23.74.117.2) 1186 0 R (230) 2155 0 R (2300) 4090 0 R (2301) 4091 0 R (2302) 4092 0 R (2303) 4093 0 R (2304) 4094 0 R (2309) 4100 0 R (231) 2156 0 R (2310) 4101 0 R (2311) 4102 0 R (2312) 4103 0 R (2315) 4104 0 R (2316) 4105 0 R (2317) 4106 0 R (2318) 4107 0 R (2319) 4108 0 R (232) 2157 0 R (2320) 4109 0 R (2321) 4110 0 R (2322) 4111 0 R (2323) 4112 0 R (2324) 4113 0 R (2325) 4114 0 R (2326) 4115 0 R (2327) 4116 0 R (2328) 4117 0 R (2329) 4118 0 R (233) 2158 0 R (2330) 4119 0 R (2331) 4120 0 R (2332) 4121 0 R (2333) 4122 0 R (2334) 4123 0 R (2335) 4128 0 R (2336) 4129 0 R (2337) 4130 0 R (2338) 4131 0 R (234) 2159 0 R (2341) 4132 0 R (2342) 4133 0 R (2343) 4134 0 R (2344) 4135 0 R (2345) 4136 0 R (2346) 4137 0 R (2347) 4138 0 R (235) 2160 0 R (236) 2161 0 R (2368) 4140 0 R (2369) 4141 0 R (237) 2162 0 R (2370) 4142 0 R (2371) 4143 0 R (2372) 4144 0 R (2373) 4145 0 R (2374) 4146 0 R (2375) 4147 0 R (2376) 4148 0 R (2377) 4149 0 R (2378) 4150 0 R (2379) 4151 0 R (238) 2163 0 R (2380) 4152 0 R (2381) 4153 0 R (2382) 4154 0 R (2383) 4155 0 R (2384) 4156 0 R (2385) 4157 0 R (2386) 4158 0 R (2387) 4159 0 R (2388) 4160 0 R (2389) 4161 0 R (2390) 4162 0 R (2391) 4163 0 R (2392) 4164 0 R (2393) 4165 0 R (2394) 4166 0 R (2395) 4167 0 R (2396) 4168 0 R (2397) 4169 0 R (2398) 4170 0 R (2399) 4171 0 R (24) 2020 0 R (24.0) 1190 0 R (24.74.118.2) 1194 0 R (2400) 4172 0 R (2401) 4173 0 R (2402) 4179 0 R (2403) 4180 0 R (2404) 4181 0 R (2405) 4182 0 R (2406) 4183 0 R (2407) 4184 0 R (2408) 4185 0 R (2409) 4186 0 R (241) 2164 0 R (2410) 4187 0 R (2411) 4188 0 R (2412) 4189 0 R (2413) 4190 0 R (2414) 4191 0 R (242) 2165 0 R (243) 2166 0 R (2435) 4193 0 R (2436) 4194 0 R (2437) 4195 0 R (2438) 4196 0 R (2439) 4197 0 R (244) 2167 0 R (2440) 4198 0 R (2441) 4199 0 R (2442) 4200 0 R (2443) 4201 0 R (2444) 4202 0 R (2445) 4203 0 R (2446) 4204 0 R (2449) 4205 0 R (245) 2168 0 R (2451) 4207 0 R (2452) 4208 0 R (2455) 4214 0 R (2460) 4215 0 R (2461) 4216 0 R (2462) 4217 0 R (2463) 4218 0 R (2467) 4224 0 R (2468) 4213 0 R (2469) 4225 0 R (2470) 4226 0 R (2471) 4227 0 R (2472) 4228 0 R (2473) 4229 0 R (2474) 4230 0 R (2475) 4231 0 R (2476) 4232 0 R (2477) 4233 0 R (2478) 4234 0 R (2479) 4235 0 R (248) 2169 0 R (2480) 4236 0 R (2481) 4237 0 R (2482) 4238 0 R (2483) 4239 0 R (2486) 4240 0 R (2487) 4241 0 R (249) 2170 0 R (2490) 4242 0 R (2491) 4243 0 R (2492) 4244 0 R (2493) 4245 0 R (2494) 4246 0 R (2495) 4247 0 R (2496) 4248 0 R (2497) 4249 0 R (2498) 4250 0 R (2499) 4251 0 R (25) 2021 0 R (25.0) 1198 0 R (25.74.119.2) 1202 0 R (25.74.120.2) 1206 0 R (250) 2171 0 R (2500) 4252 0 R (2501) 4253 0 R (2502) 4258 0 R (2505) 4259 0 R (2506) 4260 0 R (2507) 4261 0 R (2508) 4262 0 R (2509) 4263 0 R (251) 2172 0 R (2510) 4264 0 R (2513) 4265 0 R (2514) 4266 0 R (2515) 4267 0 R (2516) 4268 0 R (2517) 4269 0 R (252) 2176 0 R (2520) 4270 0 R (2523) 4271 0 R (2524) 4272 0 R (2525) 4273 0 R (2546) 4280 0 R (2549) 4281 0 R (255) 2177 0 R (2550) 4282 0 R (2552) 4284 0 R (2553) 4285 0 R (2554) 4286 0 R (2555) 4287 0 R (256) 2178 0 R (2560) 4288 0 R (2561) 4289 0 R (2562) 4290 0 R (2563) 4291 0 R (2564) 4292 0 R (2565) 4293 0 R (2566) 4294 0 R (2567) 4295 0 R (2568) 4296 0 R (2569) 4297 0 R (2570) 4298 0 R (2571) 4299 0 R (2572) 4300 0 R (2573) 4301 0 R (2574) 4306 0 R (2575) 4307 0 R (2576) 4308 0 R (2577) 4309 0 R (2578) 4310 0 R (2579) 4311 0 R (258) 2180 0 R (2580) 4312 0 R (2581) 4313 0 R (2582) 4314 0 R (2583) 4315 0 R (2584) 4316 0 R (2585) 4317 0 R (2586) 4318 0 R (2587) 4319 0 R (2588) 4320 0 R (2589) 4321 0 R (259) 2181 0 R (2592) 4322 0 R (2593) 4323 0 R (2594) 4324 0 R (2597) 4329 0 R (2598) 4330 0 R (2599) 4331 0 R (26) 2022 0 R (26.0) 1210 0 R (26.74.121.2) 1214 0 R (26.74.122.2) 1218 0 R (260) 2182 0 R (2600) 4332 0 R (2601) 4333 0 R (2602) 4334 0 R (2603) 4335 0 R (2604) 4336 0 R (2605) 4337 0 R (2606) 4338 0 R (2609) 4339 0 R (2610) 4340 0 R (2611) 4341 0 R (2621) 4343 0 R (2624) 4349 0 R (2627) 4350 0 R (263) 2183 0 R (2630) 4351 0 R (2633) 4352 0 R (2636) 4353 0 R (2637) 4354 0 R (264) 2184 0 R (2640) 4355 0 R (2643) 4356 0 R (2644) 1831 0 R (2646) 4362 0 R (2647) 4363 0 R (2648) 4348 0 R (265) 2185 0 R (2657) 4365 0 R (266) 2186 0 R (2660) 4366 0 R (2661) 4367 0 R (2664) 4368 0 R (2667) 4369 0 R (2668) 4370 0 R (2669) 4371 0 R (267) 2187 0 R (2672) 4376 0 R (2673) 4377 0 R (2674) 4361 0 R (2676) 4378 0 R (2677) 4379 0 R (2678) 4380 0 R (268) 2188 0 R (2681) 4381 0 R (2684) 4382 0 R (2685) 4383 0 R (2686) 4384 0 R (2687) 4385 0 R (2688) 4386 0 R (2689) 4387 0 R (269) 2189 0 R (2690) 4388 0 R (2691) 4389 0 R (2692) 4390 0 R (2693) 4391 0 R (2694) 4392 0 R (2695) 4393 0 R (2696) 4394 0 R (2697) 4395 0 R (2698) 4396 0 R (2699) 4397 0 R (27.0) 1222 0 R (27.74.123.2) 1226 0 R (27.74.124.2) 1230 0 R (270) 2190 0 R (2700) 4398 0 R (2701) 4399 0 R (2702) 4400 0 R (2703) 4401 0 R (2704) 4402 0 R (2705) 4403 0 R (2708) 4404 0 R (2709) 4405 0 R (271) 2191 0 R (2710) 4406 0 R (2711) 4407 0 R (2712) 4408 0 R (2713) 4414 0 R (2714) 4415 0 R (2715) 4416 0 R (2716) 4417 0 R (2717) 4418 0 R (2718) 4419 0 R (2719) 4420 0 R (272) 2192 0 R (2720) 4421 0 R (2721) 4422 0 R (2722) 4423 0 R (2723) 4424 0 R (2724) 4425 0 R (2725) 4426 0 R (2726) 4427 0 R (2727) 4428 0 R (2728) 4429 0 R (2729) 4430 0 R (273) 2193 0 R (2730) 4431 0 R (2731) 4432 0 R (2732) 4433 0 R (2733) 4434 0 R (2734) 4435 0 R (2735) 4436 0 R (2736) 4437 0 R (2737) 4438 0 R (2738) 4439 0 R (2739) 4440 0 R (2740) 4441 0 R (2741) 4442 0 R (2742) 4443 0 R (2743) 4444 0 R (2744) 4445 0 R (2745) 4446 0 R (2746) 4447 0 R (2747) 4448 0 R (2748) 4449 0 R (2749) 4455 0 R (2750) 4456 0 R (2751) 4457 0 R (2752) 4458 0 R (2755) 4459 0 R (2759) 4461 0 R (276) 2194 0 R (2760) 4462 0 R (2761) 4463 0 R (2764) 4464 0 R (2765) 4465 0 R (2766) 4466 0 R (2767) 4467 0 R (2769) 4468 0 R (277) 2195 0 R (2770) 4469 0 R (2771) 4470 0 R (2773) 4471 0 R (2774) 4472 0 R (2775) 4473 0 R (2777) 4474 0 R (2778) 4475 0 R (2779) 4476 0 R (2781) 4477 0 R (2782) 4478 0 R (2783) 4479 0 R (2785) 4480 0 R (2786) 4481 0 R (2787) 4482 0 R (2789) 4483 0 R (279) 2197 0 R (2790) 4484 0 R (2791) 4485 0 R (2793) 4486 0 R (2794) 4487 0 R (2795) 4488 0 R (2797) 4493 0 R (2798) 4494 0 R (2799) 4495 0 R (28) 2024 0 R (28.0) 1234 0 R (28.74.125.2) 1238 0 R (280) 2198 0 R (2801) 4454 0 R (2802) 4496 0 R (2803) 4497 0 R (2805) 4498 0 R (2806) 4499 0 R (2807) 4500 0 R (2809) 4501 0 R (281) 2199 0 R (2810) 4502 0 R (2811) 4503 0 R (2813) 4504 0 R (2814) 4505 0 R (2815) 4506 0 R (2817) 4507 0 R (2818) 4508 0 R (2819) 4509 0 R (282) 2200 0 R (2820) 4510 0 R (2821) 4511 0 R (2825) 4513 0 R (2828) 4514 0 R (2829) 4515 0 R (283) 2201 0 R (2830) 4516 0 R (2831) 4517 0 R (2832) 4518 0 R (2835) 4523 0 R (2836) 4524 0 R (2837) 4525 0 R (2838) 4526 0 R (2839) 4527 0 R (284) 2202 0 R (2840) 4528 0 R (2841) 1942 0 R (2843) 4529 0 R (2844) 4530 0 R (2845) 4531 0 R (2846) 4532 0 R (2847) 4533 0 R (285) 2207 0 R (2850) 4534 0 R (2851) 4540 0 R (2854) 4541 0 R (2855) 4542 0 R (2856) 4543 0 R (2857) 4544 0 R (2858) 4545 0 R (2859) 4546 0 R (286) 2208 0 R (2860) 4547 0 R (2861) 4548 0 R (2864) 4549 0 R (2865) 4550 0 R (2866) 4555 0 R (2867) 4556 0 R (2868) 4539 0 R (2869) 4557 0 R (2871) 4559 0 R (2872) 4560 0 R (2876) 4562 0 R (2877) 4563 0 R (2878) 4564 0 R (2881) 4565 0 R (2882) 4566 0 R (2883) 4567 0 R (2884) 4568 0 R (2885) 4574 0 R (2886) 4575 0 R (2887) 4576 0 R (2888) 4577 0 R (289) 2211 0 R (2891) 4578 0 R (2892) 4579 0 R (2893) 4580 0 R (2895) 4582 0 R (2896) 4583 0 R (2897) 4584 0 R (2898) 4585 0 R (2899) 4586 0 R (290) 2212 0 R (2900) 4587 0 R (2901) 1949 0 R (2903) 4592 0 R (2904) 4593 0 R (2905) 4594 0 R (291) 2213 0 R (2910) 4599 0 R (2911) 4600 0 R (2912) 4601 0 R (2913) 4602 0 R (2914) 4603 0 R (2915) 4604 0 R (2916) 4605 0 R (2917) 4606 0 R (2918) 4607 0 R (2919) 4608 0 R (292) 2214 0 R (2920) 4609 0 R (2923) 4610 0 R (2924) 4611 0 R (2928) 4613 0 R (2929) 4614 0 R (293) 2215 0 R (2930) 4615 0 R (2931) 4616 0 R (2932) 4617 0 R (2933) 4618 0 R (2934) 4619 0 R (2935) 4620 0 R (2936) 4621 0 R (2937) 4622 0 R (294) 2216 0 R (2940) 4628 0 R (2941) 4629 0 R (2942) 4630 0 R (2943) 4631 0 R (2944) 4632 0 R (2945) 4633 0 R (2946) 4634 0 R (2947) 4635 0 R (2948) 4636 0 R (2949) 4637 0 R (295) 2217 0 R (2950) 4638 0 R (2951) 4639 0 R (2952) 4640 0 R (2953) 4641 0 R (2954) 4642 0 R (2955) 4643 0 R (2956) 4644 0 R (2957) 4645 0 R (2958) 4646 0 R (2959) 4647 0 R (296) 2218 0 R (2960) 4648 0 R (2961) 4649 0 R (2962) 4650 0 R (2963) 4651 0 R (2966) 4652 0 R (2967) 4653 0 R (2968) 4654 0 R (2969) 4627 0 R (297) 2219 0 R (2971) 4660 0 R (2972) 4661 0 R (2973) 4662 0 R (2974) 4663 0 R (2975) 4664 0 R (2978) 4665 0 R (2979) 4666 0 R (298) 2220 0 R (2980) 4667 0 R (2981) 4668 0 R (2982) 4669 0 R (2983) 4670 0 R (2984) 4671 0 R (2985) 4672 0 R (2986) 4673 0 R (2987) 4674 0 R (2988) 4675 0 R (2989) 4676 0 R (299) 2221 0 R (2990) 4677 0 R (2991) 4678 0 R (2992) 4679 0 R (2993) 4680 0 R (2994) 4681 0 R (2997) 4687 0 R (2998) 4659 0 R (3.0) 10 0 R (300) 2222 0 R (3000) 4688 0 R (3001) 4689 0 R (3002) 4690 0 R (3003) 4691 0 R (3004) 4692 0 R (3005) 4693 0 R (3006) 4694 0 R (3007) 4695 0 R (3008) 4696 0 R (3009) 4697 0 R (301) 2223 0 R (3010) 4698 0 R (3011) 4699 0 R (3012) 4700 0 R (3013) 4701 0 R (3014) 4702 0 R (3015) 4703 0 R (3016) 4704 0 R (3017) 4705 0 R (3018) 4706 0 R (3019) 4707 0 R (302) 2224 0 R (3020) 4708 0 R (3021) 4709 0 R (3022) 4710 0 R (3023) 4711 0 R (3024) 4712 0 R (3025) 4713 0 R (3026) 4714 0 R (3027) 4715 0 R (3028) 4716 0 R (3029) 4717 0 R (303) 2225 0 R (3030) 4718 0 R (3031) 4719 0 R (3032) 4686 0 R (3034) 4725 0 R (3035) 4726 0 R (3036) 4727 0 R (3037) 4728 0 R (3038) 4729 0 R (3039) 4730 0 R (304) 2226 0 R (3042) 4731 0 R (3043) 4732 0 R (3046) 4733 0 R (3047) 4734 0 R (3048) 4735 0 R (3049) 4736 0 R (305) 2227 0 R (3050) 4737 0 R (3051) 4738 0 R (3052) 4743 0 R (3053) 4744 0 R (3054) 4745 0 R (3055) 4746 0 R (3056) 4747 0 R (3057) 4748 0 R (3058) 4749 0 R (3059) 4750 0 R (306) 2228 0 R (3060) 4751 0 R (3061) 4752 0 R (3062) 4753 0 R (3063) 4754 0 R (3064) 4755 0 R (3065) 4756 0 R (3066) 4757 0 R (3067) 4758 0 R (3068) 4759 0 R (3069) 4760 0 R (307) 2229 0 R (3074) 4762 0 R (3075) 4763 0 R (3076) 4764 0 R (3077) 4765 0 R (3078) 4766 0 R (3079) 4767 0 R (308) 2230 0 R (3080) 4768 0 R (3081) 4769 0 R (3082) 4770 0 R (3083) 4771 0 R (3084) 4772 0 R (3085) 4773 0 R (3086) 4779 0 R (3087) 4780 0 R (3088) 4781 0 R (3089) 4782 0 R (3090) 4783 0 R (3091) 4784 0 R (3092) 4785 0 R (3093) 4786 0 R (3094) 4787 0 R (3095) 4788 0 R (3096) 4789 0 R (3097) 4790 0 R (3098) 4791 0 R (3099) 4792 0 R (31) 2025 0 R (310) 2232 0 R (3100) 4793 0 R (3101) 4794 0 R (3102) 4795 0 R (3103) 4796 0 R (3104) 4797 0 R (3105) 4798 0 R (3106) 4799 0 R (3107) 4800 0 R (3108) 4801 0 R (3109) 4802 0 R (311) 2233 0 R (3110) 4803 0 R (3111) 4804 0 R (3112) 4805 0 R (3115) 4811 0 R (3116) 4812 0 R (3117) 4778 0 R (3118) 4813 0 R (3119) 4814 0 R (312) 2234 0 R (3120) 4815 0 R (3121) 4816 0 R (3122) 4817 0 R (3123) 4818 0 R (3124) 4819 0 R (3125) 4820 0 R (3126) 4821 0 R (3127) 4822 0 R (3128) 4823 0 R (3129) 4824 0 R (313) 2235 0 R (3130) 4825 0 R (3131) 4826 0 R (3132) 4810 0 R (3134) 4831 0 R (3135) 4832 0 R (3136) 4833 0 R (3137) 4834 0 R (314) 2236 0 R (3140) 4835 0 R (3141) 4836 0 R (3144) 4841 0 R (3147) 4842 0 R (3148) 4843 0 R (3149) 4844 0 R (315) 2237 0 R (3150) 4845 0 R (3153) 4848 0 R (3154) 4849 0 R (3155) 4850 0 R (3156) 4851 0 R (3157) 4852 0 R (3160) 4853 0 R (3161) 4854 0 R (3162) 4855 0 R (3163) 4856 0 R (3164) 4857 0 R (3168) 4858 0 R (3169) 4859 0 R (317) 2239 0 R (3170) 4860 0 R (3171) 4861 0 R (3172) 4862 0 R (3173) 4863 0 R (3174) 4869 0 R (3177) 4870 0 R (3178) 4871 0 R (3179) 4872 0 R (318) 2240 0 R (3180) 4873 0 R (3181) 4874 0 R (3182) 4875 0 R (3183) 4876 0 R (3184) 4877 0 R (3187) 4878 0 R (3188) 4879 0 R (3189) 4880 0 R (319) 2241 0 R (3190) 4881 0 R (3191) 4882 0 R (3192) 4883 0 R (3193) 4884 0 R (3194) 4885 0 R (3195) 4886 0 R (3196) 4887 0 R (3199) 4888 0 R (32) 2026 0 R (320) 2242 0 R (3200) 4889 0 R (3201) 4894 0 R (3202) 4895 0 R (3203) 4896 0 R (3204) 4897 0 R (3207) 4899 0 R (3208) 4900 0 R (3209) 4901 0 R (321) 2243 0 R (3210) 4902 0 R (3211) 4903 0 R (3214) 4905 0 R (3215) 4906 0 R (3216) 4907 0 R (3217) 4908 0 R (3218) 4909 0 R (3219) 4910 0 R (322) 2244 0 R (3220) 4911 0 R (3224) 4912 0 R (3225) 4913 0 R (3226) 4914 0 R (3227) 4915 0 R (323) 2245 0 R (3231) 4921 0 R (3232) 4922 0 R (3233) 4923 0 R (3234) 4924 0 R (3235) 4925 0 R (3238) 4930 0 R (3239) 4931 0 R (3242) 4932 0 R (3243) 4933 0 R (3244) 4934 0 R (3245) 4935 0 R (3246) 4936 0 R (3247) 4937 0 R (3248) 4938 0 R (3249) 4939 0 R (325) 2247 0 R (3250) 4940 0 R (3251) 4941 0 R (3252) 4942 0 R (3253) 4943 0 R (3254) 4944 0 R (3255) 4945 0 R (3256) 4946 0 R (3257) 4947 0 R (3258) 4948 0 R (3259) 4949 0 R (326) 2248 0 R (3260) 4950 0 R (3261) 4951 0 R (3262) 4952 0 R (3263) 4953 0 R (3264) 4954 0 R (3265) 4955 0 R (3266) 4956 0 R (3267) 4957 0 R (3268) 4958 0 R (3269) 4959 0 R (327) 2249 0 R (3270) 4960 0 R (3273) 4961 0 R (3274) 4962 0 R (3275) 4963 0 R (3276) 4964 0 R (3277) 4965 0 R (3278) 4966 0 R (3279) 4967 0 R (328) 2250 0 R (3280) 4968 0 R (3281) 4969 0 R (3286) 4974 0 R (3287) 4975 0 R (3288) 4976 0 R (3289) 4977 0 R (3290) 4978 0 R (3291) 4979 0 R (3292) 4980 0 R (3293) 4981 0 R (3294) 4982 0 R (3295) 4983 0 R (3296) 4984 0 R (3297) 4985 0 R (3298) 4986 0 R (3299) 4987 0 R (33) 2027 0 R (330) 2252 0 R (3303) 4989 0 R (3304) 4990 0 R (3305) 4991 0 R (3306) 4992 0 R (3307) 4993 0 R (3308) 4994 0 R (3309) 4995 0 R (331) 2253 0 R (3310) 4996 0 R (3311) 4997 0 R (3312) 4998 0 R (3313) 4999 0 R (3314) 5004 0 R (3315) 5005 0 R (3316) 5006 0 R (3317) 5007 0 R (3318) 5008 0 R (3319) 5009 0 R (3320) 5010 0 R (3321) 5011 0 R (3322) 5012 0 R (3323) 5013 0 R (3324) 5014 0 R (3325) 5015 0 R (3326) 5016 0 R (3327) 5017 0 R (3328) 5018 0 R (3329) 5019 0 R (333) 2255 0 R (3330) 5020 0 R (3331) 5021 0 R (3332) 5022 0 R (3333) 5023 0 R (3334) 5024 0 R (3335) 5025 0 R (3336) 5026 0 R (3337) 5027 0 R (3338) 5028 0 R (3339) 5029 0 R (334) 2256 0 R (3340) 5035 0 R (3341) 5036 0 R (3342) 5037 0 R (3343) 5038 0 R (3344) 5039 0 R (3345) 5040 0 R (3346) 5041 0 R (3349) 5042 0 R (3350) 5043 0 R (3351) 5044 0 R (3352) 5045 0 R (3353) 5046 0 R (3354) 5047 0 R (3355) 5048 0 R (3356) 5049 0 R (3357) 5050 0 R (3358) 5051 0 R (3359) 5052 0 R (336) 2258 0 R (3360) 5053 0 R (3361) 5054 0 R (3362) 5055 0 R (3363) 5056 0 R (3364) 5057 0 R (3365) 5058 0 R (3366) 5059 0 R (3367) 5060 0 R (3368) 5061 0 R (337) 2259 0 R (3371) 5070 0 R (3372) 5071 0 R (3373) 5072 0 R (3376) 5073 0 R (3377) 5074 0 R (3378) 5075 0 R (3381) 5076 0 R (3382) 5077 0 R (3383) 5078 0 R (3384) 5079 0 R (3385) 5080 0 R (3386) 5081 0 R (3387) 5086 0 R (3388) 5087 0 R (339) 2261 0 R (3391) 5088 0 R (3392) 5089 0 R (3395) 5090 0 R (3396) 5091 0 R (3397) 5092 0 R (3398) 5098 0 R (340) 2262 0 R (3401) 5099 0 R (3402) 5100 0 R (3403) 5101 0 R (3404) 5102 0 R (3405) 5103 0 R (3406) 5104 0 R (3407) 5105 0 R (3408) 5106 0 R (3409) 5107 0 R (341) 2263 0 R (3410) 5108 0 R (3411) 5109 0 R (3412) 5110 0 R (3413) 5111 0 R (3414) 5112 0 R (3415) 5113 0 R (3416) 5114 0 R (3417) 5115 0 R (3418) 5116 0 R (3419) 5117 0 R (342) 2267 0 R (3420) 5118 0 R (3421) 5119 0 R (3422) 5120 0 R (3423) 5121 0 R (3424) 5122 0 R (3425) 5123 0 R (3426) 5124 0 R (3427) 5125 0 R (3428) 5126 0 R (3429) 5127 0 R (343) 2268 0 R (3430) 5128 0 R (3431) 5129 0 R (3432) 5097 0 R (3433) 5134 0 R (3434) 5135 0 R (3437) 5136 0 R (3438) 5137 0 R (3439) 5138 0 R (344) 2269 0 R (3442) 5139 0 R (3443) 5140 0 R (3446) 5141 0 R (3447) 5147 0 R (3450) 5148 0 R (3453) 5149 0 R (3456) 5150 0 R (3457) 5151 0 R (3458) 5152 0 R (346) 2271 0 R (3461) 5153 0 R (3462) 5154 0 R (3463) 5155 0 R (3464) 5160 0 R (3465) 5161 0 R (3467) 5166 0 R (347) 2272 0 R (3471) 5167 0 R (3472) 5168 0 R (3473) 5169 0 R (3474) 5170 0 R (3479) 5173 0 R (348) 2273 0 R (3480) 5174 0 R (3481) 5175 0 R (3482) 5176 0 R (3483) 5177 0 R (3484) 5178 0 R (3486) 5179 0 R (3487) 5180 0 R (3488) 5181 0 R (3489) 5182 0 R (349) 2274 0 R (3490) 5183 0 R (3492) 5184 0 R (3493) 5185 0 R (3494) 5186 0 R (3495) 5187 0 R (3496) 5188 0 R (3497) 5189 0 R (3498) 5190 0 R (3499) 5191 0 R (350) 2275 0 R (3500) 5192 0 R (3502) 5193 0 R (3503) 5194 0 R (3504) 5195 0 R (3505) 5196 0 R (3506) 5197 0 R (3507) 5198 0 R (3508) 5199 0 R (3509) 5200 0 R (351) 2276 0 R (3510) 5201 0 R (3511) 5202 0 R (3512) 5203 0 R (3514) 5204 0 R (3515) 5205 0 R (3516) 5206 0 R (3517) 5207 0 R (3518) 5208 0 R (3519) 5209 0 R (3524) 5216 0 R (3525) 5217 0 R (3526) 5218 0 R (3527) 5219 0 R (3528) 5220 0 R (3529) 5221 0 R (353) 2278 0 R (3531) 5222 0 R (3532) 5223 0 R (3533) 5224 0 R (3536) 5225 0 R (3537) 5226 0 R (354) 2279 0 R (3543) 5228 0 R (3544) 5229 0 R (3545) 5230 0 R (3546) 5231 0 R (3549) 5233 0 R (355) 2280 0 R (3550) 5234 0 R (3554) 5235 0 R (3555) 5236 0 R (3556) 5237 0 R (3557) 5238 0 R (3558) 5239 0 R (356) 2281 0 R (3561) 5240 0 R (3562) 5241 0 R (3563) 5242 0 R (3564) 5243 0 R (3565) 5249 0 R (3566) 5250 0 R (3567) 5251 0 R (357) 2282 0 R (3572) 5253 0 R (3573) 5254 0 R (3574) 5255 0 R (3575) 5256 0 R (3578) 5258 0 R (3579) 5259 0 R (358) 2283 0 R (3584) 5262 0 R (3585) 5263 0 R (3586) 5264 0 R (3587) 5265 0 R (3588) 5266 0 R (359) 2284 0 R (3593) 5269 0 R (3594) 5270 0 R (36) 2028 0 R (360) 2285 0 R (3600) 5276 0 R (3601) 5277 0 R (3602) 5278 0 R (3603) 5279 0 R (3604) 5280 0 R (3605) 5281 0 R (3606) 5282 0 R (3609) 5284 0 R (361) 2286 0 R (3610) 5285 0 R (3612) 5287 0 R (3613) 5288 0 R (3615) 5289 0 R (3616) 5290 0 R (3617) 5291 0 R (3618) 5292 0 R (362) 2287 0 R (3620) 5293 0 R (3621) 5294 0 R (3622) 5295 0 R (3623) 5296 0 R (3624) 5297 0 R (3626) 5298 0 R (3627) 5299 0 R (3628) 5300 0 R (3629) 5301 0 R (3635) 5303 0 R (3636) 5304 0 R (3637) 5305 0 R (3640) 5306 0 R (3641) 5307 0 R (3643) 5314 0 R (3644) 5315 0 R (3645) 5316 0 R (3646) 5317 0 R (365) 2288 0 R (3650) 5319 0 R (3651) 5320 0 R (3652) 5321 0 R (3653) 5322 0 R (3654) 5323 0 R (3655) 5324 0 R (3656) 5325 0 R (3657) 5326 0 R (366) 2289 0 R (3663) 5328 0 R (3664) 5329 0 R (3668) 5331 0 R (3669) 5332 0 R (3670) 5333 0 R (3675) 5335 0 R (3676) 5336 0 R (3677) 5337 0 R (3679) 5342 0 R (3680) 5343 0 R (3681) 5344 0 R (3682) 5345 0 R (3683) 5346 0 R (3684) 5347 0 R (3685) 5348 0 R (3686) 5349 0 R (3687) 5350 0 R (3688) 5351 0 R (3689) 5352 0 R (369) 2290 0 R (3690) 5353 0 R (3691) 5354 0 R (3692) 5355 0 R (3697) 5358 0 R (3698) 5359 0 R (3699) 5360 0 R (37) 2029 0 R (3703) 5362 0 R (3704) 5363 0 R (3709) 5366 0 R (3710) 5367 0 R (3711) 5368 0 R (3712) 5371 0 R (3713) 5369 0 R (3714) 5370 0 R (372) 2291 0 R (373) 2292 0 R (374) 2293 0 R (375) 2294 0 R (376) 2295 0 R (377) 2296 0 R (378) 2297 0 R (379) 2298 0 R (38) 2030 0 R (380) 2299 0 R (383) 2303 0 R (386) 2304 0 R (389) 2305 0 R (39) 2031 0 R (392) 2306 0 R (393) 2307 0 R (396) 2308 0 R (399) 2309 0 R (4.0) 14 0 R (4.1.1) 18 0 R (4.2.1) 22 0 R (4.3.1) 26 0 R (4.4.1) 30 0 R (4.5.1) 34 0 R (40) 2032 0 R (402) 2310 0 R (403) 2311 0 R (404) 2312 0 R (405) 2313 0 R (406) 2314 0 R (408) 2316 0 R (409) 2321 0 R (41) 2033 0 R (410) 2322 0 R (411) 2323 0 R (414) 2324 0 R (415) 2325 0 R (416) 2326 0 R (417) 2327 0 R (418) 2328 0 R (419) 2329 0 R (42) 2034 0 R (420) 2330 0 R (423) 2331 0 R (424) 2332 0 R (428) 2334 0 R (429) 2335 0 R (43) 2035 0 R (430) 2336 0 R (431) 2337 0 R (432) 2338 0 R (433) 2339 0 R (434) 2340 0 R (435) 2341 0 R (436) 2342 0 R (437) 2343 0 R (438) 2344 0 R (439) 2345 0 R (44) 2036 0 R (440) 2346 0 R (441) 2347 0 R (442) 2348 0 R (443) 2354 0 R (444) 2355 0 R (445) 2356 0 R (446) 2357 0 R (447) 2358 0 R (449) 2360 0 R (45) 2037 0 R (450) 2361 0 R (453) 2362 0 R (459) 2366 0 R (46) 2038 0 R (460) 2367 0 R (463) 2368 0 R (464) 2369 0 R (465) 2370 0 R (466) 2371 0 R (467) 2372 0 R (468) 2373 0 R (469) 2374 0 R (47) 2039 0 R (470) 2375 0 R (471) 2376 0 R (472) 2377 0 R (475) 2379 0 R (476) 2380 0 R (477) 2381 0 R (478) 2382 0 R (479) 2387 0 R (48) 2040 0 R (481) 2388 0 R (482) 2389 0 R (483) 2390 0 R (484) 2391 0 R (485) 2392 0 R (486) 2393 0 R (489) 2395 0 R (49) 2041 0 R (490) 2396 0 R (491) 2397 0 R (492) 2401 0 R (494) 2403 0 R (495) 2404 0 R (496) 2405 0 R (497) 2406 0 R (498) 2407 0 R (499) 2408 0 R (5.0) 38 0 R (5.10.1) 238 0 R (5.10.17.19.3) 246 0 R (5.10.17.2) 242 0 R (5.10.17.20.3) 250 0 R (5.10.17.21.3) 254 0 R (5.10.17.22.3) 258 0 R (5.10.18.2) 262 0 R (5.10.18.23.3) 266 0 R (5.10.18.24.3) 270 0 R (5.10.19.2) 274 0 R (5.11.1) 278 0 R (5.11.20.2) 282 0 R (5.11.21.2) 286 0 R (5.11.21.25.12.4) 294 0 R (5.11.21.25.13.4) 298 0 R (5.11.21.25.14.4) 302 0 R (5.11.21.25.3) 290 0 R (5.11.22.2) 306 0 R (5.11.23.2) 310 0 R (5.11.24.2) 314 0 R (5.11.24.26.3) 318 0 R (5.11.25.2) 322 0 R (5.11.25.27.3) 326 0 R (5.12.1) 330 0 R (5.12.26.2) 334 0 R (5.12.27.2) 338 0 R (5.12.27.28.3) 342 0 R (5.12.27.29.3) 346 0 R (5.12.27.30.3) 350 0 R (5.12.27.31.3) 354 0 R (5.12.28.2) 358 0 R (5.12.29.2) 362 0 R (5.6.1) 42 0 R (5.6.1.2) 46 0 R (5.6.2.1.3) 54 0 R (5.6.2.2) 50 0 R (5.6.2.2.3) 58 0 R (5.6.2.3.3) 62 0 R (5.6.3.2) 66 0 R (5.6.4.2) 70 0 R (5.6.5.10.3) 102 0 R (5.6.5.11.3) 106 0 R (5.6.5.12.3) 110 0 R (5.6.5.2) 74 0 R (5.6.5.4.3) 78 0 R (5.6.5.5.3) 82 0 R (5.6.5.6.3) 86 0 R (5.6.5.7.3) 90 0 R (5.6.5.8.3) 94 0 R (5.6.5.9.3) 98 0 R (5.6.6.2) 114 0 R (5.6.7.2) 118 0 R (5.7.1) 122 0 R (5.7.10.2) 186 0 R (5.7.11.17.10.4) 198 0 R (5.7.11.17.11.4) 202 0 R (5.7.11.17.3) 194 0 R (5.7.11.18.3) 206 0 R (5.7.11.2) 190 0 R (5.7.12.2) 210 0 R (5.7.8.2) 126 0 R (5.7.9.13.3) 134 0 R (5.7.9.14.1.4) 142 0 R (5.7.9.14.2.4) 146 0 R (5.7.9.14.3) 138 0 R (5.7.9.14.3.4) 150 0 R (5.7.9.14.4.4) 154 0 R (5.7.9.15.3) 158 0 R (5.7.9.15.5.4) 162 0 R (5.7.9.15.6.4) 166 0 R (5.7.9.16.3) 170 0 R (5.7.9.16.7.4) 174 0 R (5.7.9.16.8.4) 178 0 R (5.7.9.16.9.4) 182 0 R (5.7.9.2) 130 0 R (5.8.1) 214 0 R (5.8.13.2) 218 0 R (5.8.14.2) 222 0 R (5.8.15.2) 226 0 R (5.8.16.2) 230 0 R (5.9.1) 234 0 R (50) 2042 0 R (500) 2409 0 R (501) 2410 0 R (502) 2411 0 R (503) 2412 0 R (504) 2413 0 R (505) 2414 0 R (506) 2415 0 R (508) 2416 0 R (509) 2417 0 R (51) 2043 0 R (510) 2418 0 R (511) 2419 0 R (512) 2420 0 R (513) 2421 0 R (514) 2422 0 R (515) 2423 0 R (516) 2424 0 R (517) 2429 0 R (518) 2430 0 R (519) 2431 0 R (52) 2044 0 R (522) 2432 0 R (524) 2433 0 R (525) 2434 0 R (526) 2435 0 R (527) 2436 0 R (529) 2438 0 R (53) 2045 0 R (530) 2439 0 R (531) 2440 0 R (532) 2441 0 R (533) 2442 0 R (534) 2443 0 R (535) 2444 0 R (536) 2445 0 R (537) 2446 0 R (538) 2447 0 R (54) 2049 0 R (540) 2448 0 R (541) 2449 0 R (542) 2450 0 R (543) 2451 0 R (544) 2452 0 R (545) 2453 0 R (546) 2454 0 R (547) 2455 0 R (548) 2456 0 R (549) 2457 0 R (55) 2050 0 R (550) 2458 0 R (551) 2459 0 R (554) 2460 0 R (556) 2461 0 R (557) 2466 0 R (558) 2467 0 R (559) 2468 0 R (56) 2051 0 R (560) 2469 0 R (561) 2470 0 R (562) 2471 0 R (564) 2472 0 R (565) 2473 0 R (566) 2474 0 R (567) 2475 0 R (568) 2476 0 R (569) 2477 0 R (57) 2052 0 R (570) 2478 0 R (572) 2479 0 R (573) 2480 0 R (574) 2481 0 R (575) 2482 0 R (576) 1393 0 R (578) 2483 0 R (579) 2484 0 R (58) 2053 0 R (580) 2485 0 R (581) 2490 0 R (582) 2491 0 R (583) 2492 0 R (586) 2493 0 R (587) 2494 0 R (589) 2496 0 R (59) 2054 0 R (592) 2497 0 R (598) 2501 0 R (599) 2502 0 R (6.0) 366 0 R (6.13.1) 370 0 R (6.13.30.2) 374 0 R (6.13.31.2) 378 0 R (6.13.32.2) 382 0 R (6.13.33.2) 386 0 R (6.13.34.2) 390 0 R (6.13.35.2) 394 0 R (6.13.36.2) 398 0 R (6.13.37.2) 402 0 R (6.13.38.2) 406 0 R (6.13.39.2) 410 0 R (6.13.40.2) 414 0 R (6.13.41.2) 418 0 R (6.13.42.2) 422 0 R (6.13.43.2) 426 0 R (6.13.44.2) 430 0 R (6.13.45.2) 434 0 R (6.14.1) 438 0 R (6.14.46.2) 442 0 R (6.14.47.2) 446 0 R (6.14.47.32.3) 450 0 R (6.14.47.33.15.4) 458 0 R (6.14.47.33.16.4) 462 0 R (6.14.47.33.3) 454 0 R (6.14.47.34.3) 466 0 R (6.14.47.35.3) 470 0 R (6.14.47.36.3) 474 0 R (6.15.1) 478 0 R (6.16.1) 482 0 R (6.16.48.2) 486 0 R (6.16.49.2) 490 0 R (6.16.50.2) 494 0 R (6.16.51.2) 498 0 R (6.16.51.37.3) 502 0 R (6.17.1) 506 0 R (6.18.1) 510 0 R (6.19.1) 514 0 R (6.20.1) 518 0 R (6.20.52.2) 522 0 R (6.20.53.2) 526 0 R (6.20.53.38.3) 530 0 R (6.20.54.2) 534 0 R (6.20.55.2) 538 0 R (6.20.55.39.3) 542 0 R (6.20.55.40.3) 546 0 R (6.20.56.2) 550 0 R (6.20.56.41.3) 554 0 R (6.20.56.42.17.4) 562 0 R (6.20.56.42.18.4) 566 0 R (6.20.56.42.19.4) 570 0 R (6.20.56.42.20.4) 574 0 R (6.20.56.42.21.4) 578 0 R (6.20.56.42.22.4) 582 0 R (6.20.56.42.23.4) 586 0 R (6.20.56.42.24.4) 590 0 R (6.20.56.42.25.4) 594 0 R (6.20.56.42.26.4) 598 0 R (6.20.56.42.27.4) 602 0 R (6.20.56.42.3) 558 0 R (6.20.56.43.3) 606 0 R (6.21.1) 610 0 R (6.22.1) 614 0 R (6.22.57.2) 618 0 R (6.22.58.2) 622 0 R (6.22.59.2) 626 0 R (6.23.1) 630 0 R (6.23.60.2) 634 0 R (6.23.61.2) 638 0 R (6.24.1) 642 0 R (6.25.1) 646 0 R (6.26.1) 650 0 R (6.27.1) 654 0 R (6.27.62.2) 658 0 R (6.27.63.2) 662 0 R (6.27.64.2) 666 0 R (6.27.65.2) 670 0 R (6.28.1) 674 0 R (600) 2503 0 R (602) 2504 0 R (603) 2505 0 R (604) 2506 0 R (606) 2507 0 R (607) 2508 0 R (608) 2509 0 R (609) 2510 0 R (610) 2511 0 R (611) 2512 0 R (612) 2513 0 R (613) 2514 0 R (614) 2515 0 R (615) 2516 0 R (616) 2517 0 R (617) 2518 0 R (619) 2520 0 R (62) 2055 0 R (621) 2526 0 R (622) 2527 0 R (623) 2528 0 R (624) 2529 0 R (625) 2530 0 R (626) 2531 0 R (627) 2532 0 R (629) 2533 0 R (63) 2056 0 R (630) 2534 0 R (631) 2535 0 R (632) 2536 0 R (636) 2537 0 R (637) 2538 0 R (638) 2539 0 R (640) 2540 0 R (641) 2541 0 R (642) 2542 0 R (644) 2543 0 R (645) 2544 0 R (646) 2545 0 R (647) 2546 0 R (648) 2547 0 R (649) 2548 0 R (65) 2057 0 R (650) 2549 0 R (651) 2550 0 R (652) 2551 0 R (654) 2552 0 R (655) 2553 0 R (656) 2554 0 R (657) 2555 0 R (658) 2556 0 R (659) 2557 0 R (66) 2058 0 R (660) 2558 0 R (661) 2559 0 R (662) 2560 0 R (663) 2561 0 R (664) 2562 0 R (665) 2563 0 R (666) 2564 0 R (667) 2565 0 R (668) 2566 0 R (669) 2567 0 R (67) 2059 0 R (670) 2568 0 R (671) 2574 0 R (672) 2575 0 R (673) 2576 0 R (674) 2577 0 R (675) 2578 0 R (676) 2579 0 R (68) 2060 0 R (680) 2580 0 R (681) 2581 0 R (682) 2582 0 R (683) 2583 0 R (684) 2584 0 R (685) 2585 0 R (686) 2586 0 R (687) 2587 0 R (688) 2588 0 R (689) 2589 0 R (690) 2590 0 R (691) 2591 0 R (692) 2592 0 R (693) 2593 0 R (694) 2594 0 R (695) 2595 0 R (696) 2596 0 R (697) 2597 0 R (698) 2598 0 R (699) 2599 0 R (7.0) 678 0 R (7.29.1) 682 0 R (7.29.66.2) 686 0 R (7.29.67.2) 690 0 R (7.29.68.2) 694 0 R (7.30.1) 698 0 R (7.30.69.2) 702 0 R (7.31.1) 706 0 R (7.31.70.2) 710 0 R (70) 2061 0 R (700) 2600 0 R (701) 2601 0 R (702) 2602 0 R (703) 2603 0 R (704) 2604 0 R (705) 2605 0 R (706) 2606 0 R (71) 2062 0 R (710) 2612 0 R (711) 2613 0 R (713) 2615 0 R (714) 2616 0 R (715) 2617 0 R (716) 2618 0 R (718) 2620 0 R (719) 2621 0 R (72) 2063 0 R (720) 2622 0 R (721) 2623 0 R (722) 2624 0 R (723) 2625 0 R (724) 2626 0 R (725) 2627 0 R (729) 2629 0 R (73) 2064 0 R (730) 1399 0 R (732) 2630 0 R (733) 2631 0 R (734) 2632 0 R (735) 2633 0 R (736) 2637 0 R (737) 2638 0 R (738) 2639 0 R (739) 2640 0 R (740) 2641 0 R (741) 2642 0 R (742) 2643 0 R (745) 2644 0 R (746) 2649 0 R (747) 2650 0 R (748) 2651 0 R (749) 2652 0 R (75) 2065 0 R (750) 2653 0 R (753) 2654 0 R (755) 2656 0 R (756) 2657 0 R (757) 2658 0 R (758) 2659 0 R (759) 2660 0 R (76) 2066 0 R (760) 2661 0 R (761) 2662 0 R (764) 2663 0 R (765) 2664 0 R (766) 2665 0 R (767) 2666 0 R (768) 2667 0 R (769) 2668 0 R (77) 2067 0 R (770) 2669 0 R (771) 2670 0 R (772) 2671 0 R (773) 2672 0 R (774) 2673 0 R (775) 2674 0 R (778) 2680 0 R (779) 2681 0 R (78) 2068 0 R (780) 2682 0 R (781) 2683 0 R (782) 2684 0 R (783) 2685 0 R (784) 2686 0 R (785) 2687 0 R (786) 2688 0 R (787) 2689 0 R (788) 2690 0 R (789) 2691 0 R (790) 2692 0 R (791) 2693 0 R (792) 2694 0 R (795) 2695 0 R (796) 2696 0 R (797) 2697 0 R (8.0) 714 0 R (8.32.1) 718 0 R (8.33.1) 722 0 R (8.34.1) 726 0 R (8.35.1) 730 0 R (8.36.1) 734 0 R (8.36.71.2) 738 0 R (8.36.71.44.3) 742 0 R (8.36.71.45.3) 746 0 R (8.36.71.46.3) 750 0 R (8.36.72.2) 754 0 R (8.36.73.2) 758 0 R (8.36.74.2) 762 0 R (8.36.75.2) 766 0 R (8.37.1) 770 0 R (8.37.76.2) 774 0 R (8.37.77.2) 778 0 R (8.38.1) 782 0 R (8.38.78.2) 786 0 R (8.38.78.47.3) 790 0 R (8.38.78.48.3) 794 0 R (8.38.78.49.3) 798 0 R (8.38.78.50.3) 802 0 R (8.38.78.51.3) 806 0 R (8.38.78.52.3) 810 0 R (8.38.78.53.3) 814 0 R (8.39.1) 818 0 R (8.39.79.2) 822 0 R (8.39.80.2) 826 0 R (8.39.81.2) 830 0 R (8.39.82.2) 834 0 R (8.40.1) 838 0 R (8.41.1) 842 0 R (8.41.83.2) 846 0 R (8.41.84.2) 850 0 R (8.41.85.2) 854 0 R (8.41.86.2) 858 0 R (8.41.87.2) 862 0 R (8.42.1) 866 0 R (8.42.88.2) 870 0 R (8.42.89.2) 874 0 R (8.42.89.54.3) 878 0 R (8.42.89.55.3) 882 0 R (8.43.1) 886 0 R (8.44.1) 890 0 R (8.44.90.2) 894 0 R (8.44.91.2) 898 0 R (8.44.92.2) 902 0 R (8.44.93.2) 906 0 R (80) 2069 0 R (800) 2698 0 R (801) 2699 0 R (804) 2700 0 R (805) 2701 0 R (806) 2702 0 R (807) 2703 0 R (808) 2679 0 R (81) 2070 0 R (811) 2708 0 R (814) 2711 0 R (815) 2712 0 R (816) 2713 0 R (817) 2714 0 R (818) 2715 0 R (819) 2716 0 R (82) 2071 0 R (820) 2717 0 R (821) 2718 0 R (822) 2719 0 R (823) 2720 0 R (824) 2721 0 R (825) 2722 0 R (826) 2723 0 R (827) 2724 0 R (828) 2725 0 R (829) 2726 0 R (83) 2072 0 R (830) 2727 0 R (833) 2733 0 R (836) 2736 0 R (837) 2737 0 R (838) 2738 0 R (839) 2739 0 R (840) 2740 0 R (841) 2741 0 R (842) 2742 0 R (843) 2743 0 R (846) 2744 0 R (85) 2073 0 R (850) 2745 0 R (853) 2746 0 R (854) 2747 0 R (855) 2748 0 R (859) 2750 0 R (86) 2074 0 R (860) 2751 0 R (861) 2752 0 R (862) 2753 0 R (863) 2754 0 R (864) 2755 0 R (865) 2761 0 R (867) 2763 0 R (868) 2764 0 R (869) 2765 0 R (87) 2075 0 R (870) 2766 0 R (871) 2767 0 R (872) 2768 0 R (873) 2769 0 R (874) 2770 0 R (875) 2771 0 R (876) 2772 0 R (877) 2773 0 R (878) 2774 0 R (88) 2076 0 R (882) 2778 0 R (883) 2779 0 R (885) 2780 0 R (887) 2781 0 R (890) 2782 0 R (891) 2783 0 R (892) 2784 0 R (895) 1513 0 R (897) 2785 0 R (899) 1514 0 R (9.0) 910 0 R (9.45.1) 914 0 R (9.46.1) 918 0 R (9.46.94.2) 922 0 R (9.46.95.2) 926 0 R (9.46.96.2) 930 0 R (9.46.97.2) 934 0 R (9.46.98.2) 938 0 R (9.46.99.2) 942 0 R (9.47.1) 946 0 R (9.48.1) 950 0 R (9.49.1) 954 0 R (90) 2077 0 R (901) 2792 0 R (902) 2793 0 R (903) 2794 0 R (904) 2795 0 R (905) 2796 0 R (906) 2797 0 R (907) 1515 0 R (909) 2798 0 R (91) 2078 0 R (911) 2799 0 R (912) 2800 0 R (913) 2801 0 R (915) 2802 0 R (916) 2803 0 R (917) 2804 0 R (918) 2805 0 R (92) 2079 0 R (920) 2810 0 R (921) 2811 0 R (922) 2812 0 R (923) 2813 0 R (924) 2814 0 R (925) 2815 0 R (926) 2816 0 R (927) 2817 0 R (928) 2818 0 R (929) 2819 0 R (93) 2080 0 R (930) 2820 0 R (931) 2821 0 R (932) 2822 0 R (933) 2823 0 R (934) 1516 0 R (936) 2824 0 R (937) 2825 0 R (938) 2826 0 R (939) 2827 0 R (940) 2828 0 R (941) 2829 0 R (942) 2830 0 R (943) 2831 0 R (944) 2832 0 R (945) 2833 0 R (946) 2834 0 R (947) 2835 0 R (948) 2836 0 R (949) 2837 0 R (95) 2081 0 R (952) 2843 0 R (953) 2844 0 R (954) 2845 0 R (955) 2846 0 R (956) 1518 0 R (958) 2847 0 R (959) 1519 0 R (96) 2082 0 R (961) 2848 0 R (962) 2849 0 R (963) 2850 0 R (964) 2851 0 R (965) 2852 0 R (966) 2853 0 R (967) 2854 0 R (968) 1520 0 R (97) 2083 0 R (970) 2855 0 R (971) 2856 0 R (972) 2857 0 R (974) 2859 0 R (975) 2860 0 R (976) 2861 0 R (977) 2862 0 R (978) 2863 0 R (98) 2084 0 R (981) 2869 0 R (982) 2870 0 R (983) 2871 0 R (984) 2872 0 R (985) 2873 0 R (986) 2874 0 R (987) 2842 0 R (99) 2085 0 R (990) 2875 0 R (991) 2876 0 R (992) 2877 0 R (993) 2878 0 R (994) 2879 0 R (997) 2880 0 R (998) 2881 0 R (999) 2882 0 R (Doc-Start) 1246 0 R (about) 1359 0 R (accountpreferences) 1840 0 R (add-custom-fields) 1679 0 R (admin-usermatching) 1548 0 R (administration) 1531 0 R (apache-addtype) 1402 0 R (attachments) 1821 0 R (boolean) 1810 0 R (bug_page) 1807 0 R (bug_status_workflow) 1685 0 R (bugreports) 1818 0 R (bzldap) 1542 0 R (bzradius) 1543 0 R (casesensitivity) 1815 0 R (charts) 1941 0 R (charts-new-series) 1943 0 R (classifications) 1655 0 R (cloningbugs) 1820 0 R (cmdline) 1972 0 R (cmdline-bugmail) 1973 0 R (comment-wrapping) 1833 0 R (commenting) 1832 0 R (components) 1662 0 R (comps-vers-miles-products) 1659 0 R (configuration) 1386 0 R (conventions) 1364 0 R (copyright) 1360 0 R (create-groups) 1689 0 R (create-product) 1657 0 R (createnewusers) 1651 0 R (credits) 1363 0 R (cust-change-permissions) 1960 0 R (cust-hooks) 1959 0 R (cust-skins) 1951 0 R (cust-templates) 1952 0 R (custom-fields) 1678 0 R (customization) 1950 0 R (database-engine) 1388 0 R (database-schema) 1389 0 R (defaultuser) 1648 0 R (delete-custom-fields) 1681 0 R (dependencytree) 1834 0 R (disclaimer) 1361 0 R (edit-custom-fields) 1680 0 R (edit-groups) 1690 0 R (edit-products) 1658 0 R (edit-values) 1682 0 R (edit-values-delete) 1684 0 R (edit-values-list) 1683 0 R (emailpreferences) 1838 0 R (extraconfig) 1398 0 R (fillingbugs) 1819 0 R (flag-askto) 1669 0 R (flag-type-attachment) 1671 0 R (flag-type-bug) 1672 0 R (flag-types) 1670 0 R (flag-values) 1668 0 R (flags) 1944 0 R (flags-about) 1667 0 R (flags-admin) 1673 0 R (flags-create) 1675 0 R (flags-create-field-active) 3734 0 R (flags-create-field-category) 3698 0 R (flags-create-field-cclist) 3758 0 R (flags-create-field-description) 3694 0 R (flags-create-field-multiplicable) 3753 0 R (flags-create-field-name) 3688 0 R (flags-create-field-requestable) 3743 0 R (flags-create-field-sortkey) 3730 0 R (flags-create-field-specific) 3750 0 R (flags-create-grant-group) 3760 0 R (flags-create-request-group) 3765 0 R (flags-delete) 1676 0 R (flags-edit) 1674 0 R (flags-overview) 1665 0 R (flags-simpleexample) 1666 0 R (general-advice) 1963 0 R (generalpreferences) 1837 0 R (gfdl) 1978 0 R (gfdl-0) 1979 0 R (gfdl-1) 1980 0 R (gfdl-10) 2007 0 R (gfdl-2) 1981 0 R (gfdl-3) 1982 0 R (gfdl-4) 1983 0 R (gfdl-5) 1984 0 R (gfdl-6) 2003 0 R (gfdl-7) 2004 0 R (gfdl-8) 2005 0 R (gfdl-9) 2006 0 R (gfdl-howto) 2008 0 R (gloss-a) 5171 0 R (gloss-apache) 5172 0 R (gloss-b) 5211 0 R (gloss-bugzilla) 2114 0 R (gloss-c) 5227 0 R (gloss-cgi) 2203 0 R (gloss-component) 5232 0 R (gloss-contrib) 3174 0 R (gloss-cpan) 2787 0 R (gloss-d) 5252 0 R (gloss-daemon) 4004 0 R (gloss-dos) 5257 0 R (gloss-g) 5260 0 R (gloss-groups) 5261 0 R (gloss-htaccess) 4078 0 R (gloss-j) 5267 0 R (gloss-javascript) 5268 0 R (gloss-m) 5248 0 R (gloss-mta) 5275 0 R (gloss-mysql) 5283 0 R (gloss-p) 5302 0 R (gloss-ppm) 2728 0 R (gloss-product) 3400 0 R (gloss-q) 5318 0 R (gloss-r) 5327 0 R (gloss-rdbms) 5309 0 R (gloss-regexp) 5330 0 R (gloss-s) 5334 0 R (gloss-service) 4005 0 R (gloss-t) 5356 0 R (gloss-target-milestone) 5357 0 R (gloss-tcl) 5361 0 R (gloss-z) 5364 0 R (gloss-zarro) 5365 0 R (glossary) 2009 0 R (group-control-examples) 1661 0 R (groups) 1688 0 R (hintsandtips) 1830 0 R (http) 1394 0 R (http-apache) 1395 0 R (http-apache-mod_cgi) 2500 0 R (http-apache-mod_perl) 2521 0 R (http-iis) 1396 0 R (impersonatingusers) 1654 0 R (index) 1247 0 R (individual-buglists) 1817 0 R (install-MTA) 1384 0 R (install-bzfiles) 1373 0 R (install-config-bugzilla) 1397 0 R (install-database) 1368 0 R (install-modules-chart-lines) 1378 0 R (install-modules-dbd-mysql) 1375 0 R (install-modules-gd) 1377 0 R (install-modules-gd-graph) 1379 0 R (install-modules-gd-text) 1380 0 R (install-modules-patchreader) 1383 0 R (install-modules-soap-lite) 1382 0 R (install-modules-template) 1376 0 R (install-modules-xml-twig) 1381 0 R (install-mysql) 1369 0 R (install-oracle) 1371 0 R (install-perl) 1367 0 R (install-perlmodules) 1374 0 R (install-perlmodules-manual) 1974 0 R (install-perlmodules-nonroot) 1517 0 R (install-pg) 1370 0 R (install-setupdatabase-adduser) 2394 0 R (install-webserver) 1372 0 R (installation) 1366 0 R (installation-whining) 1401 0 R (installation-whining-cron) 1400 0 R (installing-bugzilla) 1365 0 R (integration) 1961 0 R (keywords) 1677 0 R (lifecycle) 1808 0 R (lifecycle-image) 2016 0 R (list) 1816 0 R (localconfig) 1387 0 R (macosx-libraries) 1510 0 R (macosx-sendmail) 1509 0 R (manageusers) 1649 0 R (milestones) 1664 0 R (modifyusers) 1652 0 R (modules-manual-download) 1976 0 R (modules-manual-instructions) 1975 0 R (modules-manual-optional) 1977 0 R (multiple-bz-dbs) 1403 0 R (multiplecharts) 1813 0 R (myaccount) 1806 0 R (mysql) 1390 0 R (mysql-max-allowed-packet) 2378 0 R (negation) 1812 0 R (newversions) 1362 0 R (nonroot) 1512 0 R (oracle) 1392 0 R (os-linux) 1511 0 R (os-macosx) 1508 0 R (os-specific) 1502 0 R (os-win32) 1503 0 R (page.1) 1245 0 R (page.10) 2320 0 R (page.100) 5003 0 R (page.101) 5034 0 R (page.102) 5065 0 R (page.103) 5069 0 R (page.104) 5085 0 R (page.105) 5096 0 R (page.106) 5133 0 R (page.107) 5146 0 R (page.108) 5159 0 R (page.109) 5165 0 R (page.11) 2353 0 R (page.110) 5215 0 R (page.111) 5247 0 R (page.112) 5274 0 R (page.113) 5313 0 R (page.114) 5341 0 R (page.12) 2386 0 R (page.13) 2428 0 R (page.14) 2465 0 R (page.15) 2489 0 R (page.16) 2525 0 R (page.17) 2573 0 R (page.18) 2611 0 R (page.19) 2648 0 R (page.2) 1255 0 R (page.20) 2678 0 R (page.21) 2707 0 R (page.22) 2732 0 R (page.23) 2760 0 R (page.24) 2791 0 R (page.25) 2809 0 R (page.26) 2841 0 R (page.27) 2867 0 R (page.28) 2899 0 R (page.29) 2933 0 R (page.3) 1262 0 R (page.30) 2967 0 R (page.31) 3000 0 R (page.32) 3026 0 R (page.33) 3064 0 R (page.34) 3106 0 R (page.35) 3130 0 R (page.36) 3150 0 R (page.37) 3178 0 R (page.38) 3221 0 R (page.39) 3257 0 R (page.4) 1407 0 R (page.40) 3277 0 R (page.41) 3292 0 R (page.42) 3335 0 R (page.43) 3380 0 R (page.44) 3404 0 R (page.45) 3453 0 R (page.46) 3479 0 R (page.47) 3511 0 R (page.48) 3534 0 R (page.49) 3571 0 R (page.5) 1552 0 R (page.50) 3615 0 R (page.51) 3655 0 R (page.52) 3692 0 R (page.53) 3739 0 R (page.54) 3771 0 R (page.55) 3791 0 R (page.56) 3825 0 R (page.57) 3845 0 R (page.58) 3873 0 R (page.59) 3909 0 R (page.6) 1697 0 R (page.60) 3945 0 R (page.61) 3974 0 R (page.62) 3979 0 R (page.63) 4009 0 R (page.64) 4082 0 R (page.65) 4099 0 R (page.66) 4127 0 R (page.67) 4178 0 R (page.68) 4212 0 R (page.69) 4223 0 R (page.7) 1845 0 R (page.70) 4257 0 R (page.71) 4279 0 R (page.72) 4305 0 R (page.73) 4328 0 R (page.74) 4347 0 R (page.75) 4360 0 R (page.76) 4375 0 R (page.77) 4413 0 R (page.78) 4453 0 R (page.79) 4492 0 R (page.8) 1988 0 R (page.80) 4522 0 R (page.81) 4538 0 R (page.82) 4554 0 R (page.83) 4573 0 R (page.84) 4591 0 R (page.85) 4598 0 R (page.86) 4626 0 R (page.87) 4658 0 R (page.88) 4685 0 R (page.89) 4724 0 R (page.9) 2013 0 R (page.90) 4742 0 R (page.91) 4777 0 R (page.92) 4809 0 R (page.93) 4830 0 R (page.94) 4840 0 R (page.95) 4868 0 R (page.96) 4893 0 R (page.97) 4920 0 R (page.98) 4929 0 R (page.99) 4973 0 R (param-LDAPBaseDN) 3203 0 R (param-LDAPbinddn) 3198 0 R (param-LDAPmailattribute) 3213 0 R (param-LDAPserver) 3185 0 R (param-LDAPuidattribute) 3208 0 R (param-RADIUS_email_suffix) 3240 0 R (param-RADIUS_secret) 3237 0 R (param-RADIUS_server) 3234 0 R (param-admin-policies) 1534 0 R (param-attachments) 1536 0 R (param-bug-change-policies) 1537 0 R (param-bugfields) 1538 0 R (param-bugmoving) 1539 0 R (param-dependency-graphs) 1540 0 R (param-email) 1544 0 R (param-group-security) 1541 0 R (param-patchviewer) 1545 0 R (param-querydefaults) 1546 0 R (param-requiredsettings) 1533 0 R (param-shadowdatabase) 1547 0 R (param-user-authentication) 1535 0 R (param-user_verify_class_for_ldap) 3179 0 R (param-user_verify_class_for_radius) 3228 0 R (parameters) 1532 0 R (paranoid-security) 1967 0 R (patches) 1971 0 R (patchviewer) 1822 0 R (patchviewer_bonsai_lxr) 1828 0 R (patchviewer_collapse) 1826 0 R (patchviewer_context) 1825 0 R (patchviewer_diff) 1824 0 R (patchviewer_link) 1827 0 R (patchviewer_unified_diff) 1829 0 R (patchviewer_view) 1823 0 R (permissionsettings) 1841 0 R (postgresql) 1391 0 R (product-group-controls) 1660 0 R (products) 1656 0 R (pronouns) 1811 0 R (query) 1809 0 R (quicksearch) 1814 0 R (quips) 1687 0 R (reporting) 1939 0 R (reports) 1940 0 R (sanitycheck) 1693 0 R (savedsearches) 1839 0 R (security) 1795 0 R (security-bugzilla) 1802 0 R (security-bugzilla-charset) 1803 0 R (security-os) 1796 0 R (security-os-accounts) 1798 0 R (security-os-chroot) 1799 0 R (security-os-ports) 1797 0 R (security-webserver) 1800 0 R (security-webserver-access) 1801 0 R (self-registration) 3293 0 R (suexec) 1521 0 R (table.1) 2107 0 R (table.2) 3801 0 R (table.3) 4139 0 R (table.4) 4192 0 R (table.5) 4274 0 R (table.6) 4342 0 R (table.7) 4364 0 R (table.8) 4761 0 R (template-directory) 1953 0 R (template-edit) 1955 0 R (template-formats) 1956 0 R (template-http-accept) 1958 0 R (template-method) 1954 0 R (template-specific) 1957 0 R (timetracking) 1835 0 R (trbl-dbdSponge) 1966 0 R (trbl-index) 1969 0 R (trbl-passwd-encryption) 1970 0 R (trbl-perlmodule) 1965 0 R (trbl-relogin-everyone) 1968 0 R (trbl-relogin-everyone-restrict) 4904 0 R (trbl-relogin-everyone-share) 4898 0 R (trbl-testserver) 1964 0 R (troubleshooting) 1962 0 R (upgrade) 1522 0 R (upgrade-before) 1523 0 R (upgrade-completion) 1529 0 R (upgrade-cvs) 1526 0 R (upgrade-files) 1524 0 R (upgrade-modified) 1525 0 R (upgrade-notifications) 1530 0 R (upgrade-patches) 1528 0 R (upgrade-tarball) 1527 0 R (user-account-creation) 3299 0 R (user-account-deletion) 1653 0 R (user-account-search) 1650 0 R (useradmin) 1647 0 R (userpreferences) 1836 0 R (users-and-groups) 1691 0 R (using) 1804 0 R (using-intro) 1805 0 R (using-mod_perl-with-bugzilla) 1385 0 R (versions) 1663 0 R (voting) 1686 0 R (whining) 1945 0 R (whining-overview) 1946 0 R (whining-query) 1948 0 R (whining-schedule) 1947 0 R (win32-email) 1507 0 R (win32-http) 1506 0 R (win32-perl) 1504 0 R (win32-perl-modules) 1505 0 R] +5325 0 obj << +/Names [(1.0) 2 0 R (10.0) 958 0 R (10.50.1) 962 0 R (10.51.1) 966 0 R (10.52.1) 970 0 R (10.53.1) 974 0 R (10.54.1) 978 0 R (10.55.1) 982 0 R (10.56.1) 986 0 R (10.57.1) 990 0 R (1000) 2883 0 R (1001) 2884 0 R (1002) 2885 0 R (1003) 2886 0 R (1005) 2888 0 R (1006) 2889 0 R (1008) 2892 0 R (1009) 2893 0 R (101) 2086 0 R (1010) 2894 0 R (1011) 2895 0 R (1012) 2900 0 R (1013) 2868 0 R (1014) 2901 0 R (1016) 2902 0 R (1017) 2903 0 R (1018) 2904 0 R (1019) 2905 0 R (102) 2087 0 R (1021) 2906 0 R (1022) 2907 0 R (1023) 2908 0 R (1024) 2909 0 R (1027) 2910 0 R (1028) 2911 0 R (103) 2088 0 R (1030) 2912 0 R (1032) 2914 0 R (1033) 2915 0 R (1034) 2916 0 R (1036) 2917 0 R (1038) 2919 0 R (1039) 2920 0 R (104) 2089 0 R (1041) 2921 0 R (1043) 2923 0 R (1044) 2924 0 R (1045) 2925 0 R (1048) 2926 0 R (105) 2090 0 R (1050) 2928 0 R (1053) 2935 0 R (1054) 2936 0 R (1055) 2937 0 R (1056) 2938 0 R (1057) 2939 0 R (1058) 2940 0 R (1059) 2941 0 R (106) 2091 0 R (1060) 2942 0 R (1061) 2943 0 R (1062) 2944 0 R (1063) 2945 0 R (1064) 2946 0 R (1067) 2947 0 R (1068) 2948 0 R (1069) 2949 0 R (107) 2092 0 R (1070) 2950 0 R (1071) 2951 0 R (1072) 2952 0 R (1073) 2953 0 R (1074) 2954 0 R (1075) 2955 0 R (1076) 2956 0 R (1077) 2957 0 R (1078) 2958 0 R (1079) 2959 0 R (108) 2093 0 R (1080) 2960 0 R (1081) 2961 0 R (1082) 2962 0 R (1083) 2963 0 R (1084) 2968 0 R (1085) 2969 0 R (1086) 2934 0 R (1089) 2970 0 R (109) 2094 0 R (1090) 2971 0 R (1091) 2972 0 R (1092) 2973 0 R (1093) 2974 0 R (1094) 2975 0 R (1095) 2976 0 R (1096) 2977 0 R (1097) 2978 0 R (1098) 2979 0 R (1099) 2980 0 R (11.0) 994 0 R (11.58.1) 998 0 R (11.59.1) 1002 0 R (110) 2095 0 R (1100) 2981 0 R (1101) 2982 0 R (1102) 2983 0 R (1106) 2985 0 R (1107) 2986 0 R (1108) 2987 0 R (1109) 2988 0 R (111) 2096 0 R (1110) 2989 0 R (1111) 2990 0 R (1112) 2991 0 R (1113) 2992 0 R (1115) 2994 0 R (1116) 2995 0 R (1117) 2996 0 R (1118) 3001 0 R (1119) 3002 0 R (112) 2097 0 R (1120) 3003 0 R (1121) 3004 0 R (1122) 3005 0 R (1123) 3006 0 R (1124) 3007 0 R (1125) 3008 0 R (1126) 3009 0 R (1127) 3010 0 R (1128) 3011 0 R (1129) 3012 0 R (113) 2098 0 R (1130) 3013 0 R (1132) 3015 0 R (1135) 3016 0 R (1136) 3017 0 R (1138) 3019 0 R (1139) 3020 0 R (114) 2099 0 R (1140) 3021 0 R (1141) 3022 0 R (1146) 3027 0 R (1149) 3028 0 R (1150) 3029 0 R (1152) 3030 0 R (1154) 3031 0 R (1155) 3032 0 R (1156) 3033 0 R (1158) 3034 0 R (1159) 3035 0 R (1160) 3036 0 R (1161) 3037 0 R (1162) 3038 0 R (1163) 3039 0 R (1164) 3040 0 R (1166) 3041 0 R (1167) 3042 0 R (1168) 3043 0 R (1169) 3044 0 R (117) 2103 0 R (1170) 3045 0 R (1171) 3046 0 R (1172) 3047 0 R (1174) 3048 0 R (1175) 3049 0 R (1176) 3050 0 R (1177) 3051 0 R (1178) 3052 0 R (1179) 3053 0 R (1180) 3054 0 R (1182) 3055 0 R (1183) 3056 0 R (1184) 3057 0 R (1186) 3058 0 R (1187) 3059 0 R (1188) 3060 0 R (1189) 3065 0 R (119) 2104 0 R (1190) 3066 0 R (1191) 3067 0 R (1193) 3068 0 R (1194) 3069 0 R (1195) 3070 0 R (1196) 3071 0 R (1197) 3072 0 R (1198) 3073 0 R (1199) 3074 0 R (12.0) 1006 0 R (12.60.1) 1010 0 R (12.61.1) 1014 0 R (12.62.1) 1018 0 R (120) 2105 0 R (1201) 3075 0 R (1202) 3076 0 R (1203) 3077 0 R (1204) 3078 0 R (1205) 3079 0 R (1206) 3080 0 R (1207) 3081 0 R (1209) 3082 0 R (121) 2106 0 R (1210) 3083 0 R (1211) 3084 0 R (1212) 3085 0 R (1213) 3086 0 R (1214) 3087 0 R (1215) 3088 0 R (1217) 3089 0 R (1218) 3090 0 R (1219) 3091 0 R (1220) 3092 0 R (1221) 3093 0 R (1222) 3094 0 R (1224) 3095 0 R (1225) 3096 0 R (1226) 3097 0 R (1227) 3098 0 R (1228) 3099 0 R (1230) 3100 0 R (1231) 3101 0 R (1232) 3102 0 R (1235) 3107 0 R (1238) 3108 0 R (1239) 3109 0 R (1241) 3110 0 R (1242) 3111 0 R (1243) 3112 0 R (1244) 3113 0 R (1246) 3114 0 R (1247) 3115 0 R (1248) 3116 0 R (1249) 3117 0 R (1252) 3118 0 R (1255) 3119 0 R (1256) 3120 0 R (1258) 3121 0 R (1259) 3122 0 R (1260) 3123 0 R (1261) 3124 0 R (1262) 3125 0 R (1263) 3131 0 R (1265) 3132 0 R (1266) 3133 0 R (1267) 3134 0 R (1270) 3135 0 R (1271) 3136 0 R (1273) 3137 0 R (1274) 3138 0 R (1275) 3139 0 R (1277) 3140 0 R (1278) 3141 0 R (1279) 3142 0 R (1282) 3143 0 R (1283) 3144 0 R (1286) 3145 0 R (1287) 3146 0 R (1290) 3151 0 R (1292) 3153 0 R (1294) 3154 0 R (1295) 3155 0 R (1296) 3156 0 R (1298) 3157 0 R (1299) 3158 0 R (13.0) 1022 0 R (13.63.1) 1026 0 R (13.64.1) 1030 0 R (13.65.1) 1034 0 R (13.66.1) 1038 0 R (13.67.1) 1042 0 R (13.68.1) 1046 0 R (13.69.1) 1050 0 R (13.70.1) 1054 0 R (13.71.1) 1058 0 R (13.72.1) 1062 0 R (13.73.1) 1066 0 R (13.74.1) 1070 0 R (1300) 3159 0 R (1303) 3161 0 R (1304) 3162 0 R (1305) 3163 0 R (1309) 3165 0 R (1310) 3166 0 R (1311) 3167 0 R (1312) 3168 0 R (1313) 3169 0 R (1316) 3171 0 R (1317) 3172 0 R (1318) 3173 0 R (1321) 3180 0 R (1322) 3181 0 R (1323) 3182 0 R (1324) 3183 0 R (1325) 3184 0 R (1328) 3186 0 R (1329) 3187 0 R (1330) 3188 0 R (1331) 3189 0 R (1332) 3190 0 R (1333) 3191 0 R (1334) 3192 0 R (1335) 3193 0 R (1336) 3194 0 R (1337) 3195 0 R (1338) 3196 0 R (1339) 3197 0 R (1342) 3199 0 R (1343) 3200 0 R (1344) 3201 0 R (1345) 3202 0 R (1348) 3204 0 R (1349) 3205 0 R (1350) 3206 0 R (1351) 3207 0 R (1354) 3209 0 R (1355) 3210 0 R (1356) 3211 0 R (1357) 3212 0 R (1360) 3214 0 R (1361) 3215 0 R (1362) 3216 0 R (1363) 3217 0 R (1366) 3222 0 R (1367) 3223 0 R (1368) 3224 0 R (1370) 3226 0 R (1371) 3227 0 R (1374) 3229 0 R (1375) 3230 0 R (1376) 3231 0 R (1377) 3232 0 R (1378) 3233 0 R (1381) 3235 0 R (1382) 3236 0 R (1385) 3238 0 R (1386) 3239 0 R (1389) 3241 0 R (1390) 3242 0 R (1391) 3243 0 R (1392) 3244 0 R (1395) 3245 0 R (1396) 3246 0 R (1398) 3247 0 R (1399) 3248 0 R (14.0) 1074 0 R (1400) 3249 0 R (1401) 3250 0 R (1403) 3251 0 R (1404) 3252 0 R (1405) 3253 0 R (1407) 3258 0 R (1408) 3259 0 R (1409) 3260 0 R (1411) 3261 0 R (1412) 3262 0 R (1413) 3263 0 R (1415) 3264 0 R (1416) 3265 0 R (1417) 3266 0 R (1420) 3267 0 R (1423) 3268 0 R (1426) 3269 0 R (1427) 3270 0 R (1428) 3271 0 R (1429) 3272 0 R (1430) 3273 0 R (1433) 3278 0 R (1438) 3279 0 R (1439) 3280 0 R (1440) 3281 0 R (1445) 3282 0 R (1446) 3283 0 R (1447) 3284 0 R (1448) 3285 0 R (1449) 3286 0 R (1450) 3287 0 R (1455) 3294 0 R (1456) 3295 0 R (1457) 3296 0 R (1458) 3297 0 R (1462) 3300 0 R (1463) 3301 0 R (1464) 3302 0 R (1465) 3303 0 R (1466) 3304 0 R (1467) 3305 0 R (1468) 3306 0 R (1469) 3307 0 R (1470) 3308 0 R (1471) 3309 0 R (1472) 3310 0 R (1475) 3311 0 R (1476) 3312 0 R (1477) 3313 0 R (1478) 3314 0 R (1479) 3315 0 R (1480) 3316 0 R (1481) 3317 0 R (1482) 3318 0 R (1483) 3319 0 R (1484) 3320 0 R (1485) 3321 0 R (1486) 3322 0 R (1487) 3323 0 R (1488) 3324 0 R (1489) 3325 0 R (1490) 3326 0 R (1491) 3327 0 R (1492) 3328 0 R (1493) 3329 0 R (1494) 3330 0 R (1495) 3331 0 R (1496) 3337 0 R (1497) 3338 0 R (1498) 3339 0 R (1499) 3340 0 R (15.0) 1078 0 R (15.74.100.2) 1082 0 R (1500) 3341 0 R (1501) 3342 0 R (1502) 3343 0 R (1503) 3344 0 R (1504) 3345 0 R (1505) 3346 0 R (1506) 3347 0 R (1507) 3348 0 R (1508) 3349 0 R (1509) 3350 0 R (1510) 3351 0 R (1511) 3352 0 R (1512) 3353 0 R (1513) 3354 0 R (1514) 3355 0 R (1515) 3356 0 R (1516) 3357 0 R (1517) 3358 0 R (1518) 3359 0 R (1519) 3360 0 R (1520) 3361 0 R (1521) 3362 0 R (1522) 3363 0 R (1523) 3364 0 R (1524) 3365 0 R (1525) 3366 0 R (1526) 3367 0 R (1527) 3368 0 R (1528) 3369 0 R (1529) 3370 0 R (1532) 3371 0 R (1533) 3372 0 R (1537) 3374 0 R (1538) 3375 0 R (1539) 3376 0 R (1540) 3336 0 R (1542) 3382 0 R (1543) 3383 0 R (1544) 3384 0 R (1545) 3385 0 R (1548) 3386 0 R (1549) 3387 0 R (1550) 3388 0 R (1551) 3389 0 R (1552) 3390 0 R (1553) 3391 0 R (1556) 3392 0 R (1559) 3395 0 R (1560) 3396 0 R (1561) 3397 0 R (1562) 3398 0 R (1563) 3399 0 R (1565) 3405 0 R (1566) 3406 0 R (1567) 3407 0 R (1569) 3381 0 R (1570) 3408 0 R (1571) 3409 0 R (1573) 3410 0 R (1574) 3411 0 R (1575) 3412 0 R (1577) 3413 0 R (1578) 3414 0 R (1579) 3415 0 R (1581) 3416 0 R (1582) 3417 0 R (1583) 3418 0 R (1585) 3419 0 R (1586) 3420 0 R (1587) 3421 0 R (1589) 3422 0 R (1590) 3423 0 R (1591) 3424 0 R (1593) 3425 0 R (1594) 3426 0 R (1595) 3427 0 R (1597) 3428 0 R (1598) 3429 0 R (1599) 3430 0 R (16.0) 1086 0 R (16.74.101.2) 1090 0 R (16.74.101.56.3) 1094 0 R (1601) 3431 0 R (1602) 3432 0 R (1603) 3433 0 R (1604) 3434 0 R (1608) 3436 0 R (1609) 3437 0 R (1610) 3438 0 R (1611) 3439 0 R (1612) 3440 0 R (1613) 3441 0 R (1614) 3442 0 R (1615) 3443 0 R (1616) 3444 0 R (1617) 3445 0 R (1618) 3446 0 R (1619) 3447 0 R (1620) 3448 0 R (1624) 3454 0 R (1627) 3455 0 R (1628) 3456 0 R (1630) 3458 0 R (1632) 3460 0 R (1636) 3462 0 R (1637) 3463 0 R (1638) 3464 0 R (1639) 3465 0 R (1641) 3467 0 R (1642) 3468 0 R (1644) 3470 0 R (1645) 3471 0 R (1646) 3472 0 R (1647) 3473 0 R (1648) 3474 0 R (1649) 3475 0 R (1650) 3480 0 R (1651) 3481 0 R (1652) 3482 0 R (1653) 3483 0 R (1654) 3484 0 R (1655) 3485 0 R (1656) 3486 0 R (1657) 3487 0 R (1658) 3488 0 R (1659) 3489 0 R (1660) 3490 0 R (1661) 3491 0 R (1662) 3492 0 R (1663) 3493 0 R (1664) 3494 0 R (1665) 3495 0 R (1666) 3496 0 R (1669) 3497 0 R (1670) 3498 0 R (1671) 3499 0 R (1672) 3500 0 R (1673) 3501 0 R (1674) 3502 0 R (1675) 3503 0 R (1676) 3504 0 R (1677) 3505 0 R (1678) 3506 0 R (1679) 3513 0 R (1680) 3514 0 R (1681) 3515 0 R (1682) 3516 0 R (1683) 3517 0 R (1684) 3518 0 R (1685) 3519 0 R (1686) 3520 0 R (1687) 3521 0 R (1688) 3522 0 R (1689) 3523 0 R (1690) 3524 0 R (1691) 3525 0 R (1692) 3526 0 R (1693) 3527 0 R (1694) 3528 0 R (1695) 3529 0 R (1696) 3530 0 R (1697) 3535 0 R (1698) 3512 0 R (1699) 3536 0 R (17.0) 1098 0 R (17.74.102.2) 1102 0 R (17.74.103.2) 1106 0 R (17.74.104.2) 1110 0 R (1700) 3537 0 R (1704) 3539 0 R (1705) 3540 0 R (1706) 3541 0 R (1707) 3542 0 R (1708) 3543 0 R (1709) 3544 0 R (1710) 3545 0 R (1711) 3546 0 R (1712) 3547 0 R (1713) 3548 0 R (1714) 3549 0 R (1715) 3550 0 R (1716) 3551 0 R (1717) 3552 0 R (1718) 3553 0 R (1719) 3554 0 R (1720) 3555 0 R (1721) 3556 0 R (1722) 3557 0 R (1723) 3558 0 R (1724) 3559 0 R (1727) 3560 0 R (1728) 3561 0 R (1729) 3562 0 R (1730) 3563 0 R (1731) 3564 0 R (1732) 3565 0 R (1733) 3566 0 R (1734) 3567 0 R (1735) 3572 0 R (1738) 3573 0 R (1739) 3574 0 R (1740) 3575 0 R (1741) 3576 0 R (1742) 3577 0 R (1743) 3578 0 R (1744) 3579 0 R (1745) 3580 0 R (1746) 3581 0 R (1747) 3582 0 R (1748) 3583 0 R (1749) 3584 0 R (1750) 3585 0 R (1753) 3586 0 R (1754) 3587 0 R (1755) 3588 0 R (1756) 3589 0 R (1759) 3590 0 R (1760) 3591 0 R (1761) 3592 0 R (1762) 3593 0 R (1763) 3594 0 R (1764) 3595 0 R (1765) 3596 0 R (1766) 3597 0 R (1767) 3598 0 R (1768) 3599 0 R (1769) 3600 0 R (1770) 3601 0 R (1771) 3602 0 R (1772) 3603 0 R (1773) 3604 0 R (1774) 3605 0 R (1775) 3606 0 R (1776) 3607 0 R (1777) 3608 0 R (1778) 3609 0 R (1779) 3610 0 R (1780) 3611 0 R (1781) 3617 0 R (1782) 3618 0 R (1783) 3619 0 R (1784) 3620 0 R (1785) 3621 0 R (1790) 3622 0 R (1791) 3623 0 R (1793) 3624 0 R (1794) 3625 0 R (1795) 3626 0 R (1796) 3627 0 R (1798) 3628 0 R (1799) 3629 0 R (18.0) 1114 0 R (18.74.105.2) 1118 0 R (18.74.106.2) 1122 0 R (18.74.107.2) 1126 0 R (18.74.108.2) 1130 0 R (1800) 3630 0 R (1801) 3631 0 R (1802) 3632 0 R (1804) 3633 0 R (1805) 3634 0 R (1806) 3635 0 R (1807) 3636 0 R (1808) 3637 0 R (1809) 3638 0 R (1810) 3639 0 R (1813) 3640 0 R (1814) 3641 0 R (1815) 3642 0 R (1816) 3643 0 R (1817) 3644 0 R (1818) 3645 0 R (1819) 3646 0 R (182) 2112 0 R (1820) 3647 0 R (1821) 3648 0 R (1822) 3649 0 R (1823) 3650 0 R (1826) 3651 0 R (1829) 3656 0 R (183) 2113 0 R (1830) 3616 0 R (1832) 3657 0 R (1833) 3658 0 R (1834) 3659 0 R (1835) 3660 0 R (1836) 3661 0 R (1837) 3662 0 R (1838) 3663 0 R (1839) 3664 0 R (1840) 3665 0 R (1841) 3666 0 R (1842) 3667 0 R (1843) 3668 0 R (1844) 3669 0 R (1845) 3670 0 R (1846) 3671 0 R (1847) 3672 0 R (1850) 3673 0 R (1851) 3674 0 R (1852) 3675 0 R (1853) 3676 0 R (1854) 3677 0 R (1857) 3678 0 R (1858) 3679 0 R (1859) 3680 0 R (1860) 3681 0 R (1861) 3682 0 R (1864) 3683 0 R (1865) 3684 0 R (1869) 3686 0 R (1870) 3687 0 R (1873) 3693 0 R (1876) 3695 0 R (1877) 3696 0 R (1878) 3697 0 R (188) 2118 0 R (1881) 3699 0 R (1882) 3700 0 R (1883) 3701 0 R (1884) 3702 0 R (1885) 3703 0 R (1886) 3704 0 R (1887) 3705 0 R (1888) 3706 0 R (1889) 3707 0 R (189) 2119 0 R (1890) 3708 0 R (1891) 3709 0 R (1892) 3710 0 R (1893) 3711 0 R (1894) 3712 0 R (1895) 3713 0 R (1896) 3714 0 R (1897) 3715 0 R (1898) 3716 0 R (1899) 3717 0 R (19.0) 1134 0 R (19.74.109.2) 1138 0 R (19.74.110.2) 1142 0 R (190) 2120 0 R (1900) 3718 0 R (1901) 3719 0 R (1902) 3720 0 R (1903) 3721 0 R (1904) 3722 0 R (1905) 3723 0 R (1906) 3724 0 R (1907) 3725 0 R (1908) 3726 0 R (1909) 3727 0 R (191) 2124 0 R (1910) 3728 0 R (1911) 3729 0 R (1914) 3731 0 R (1915) 3732 0 R (1916) 3733 0 R (1919) 3741 0 R (1920) 3742 0 R (1923) 3744 0 R (1924) 3745 0 R (1925) 3746 0 R (1926) 3747 0 R (1927) 3748 0 R (1928) 3749 0 R (193) 2127 0 R (1931) 3751 0 R (1932) 3752 0 R (1935) 3754 0 R (1936) 3755 0 R (1937) 3756 0 R (1938) 3757 0 R (194) 2128 0 R (1941) 3759 0 R (1944) 3761 0 R (1945) 3762 0 R (1946) 3763 0 R (1947) 3764 0 R (195) 2129 0 R (1950) 3766 0 R (1951) 3767 0 R (1954) 3773 0 R (1955) 3774 0 R (1956) 3740 0 R (1958) 3775 0 R (1959) 3776 0 R (196) 2130 0 R (1960) 3777 0 R (1961) 3778 0 R (1964) 3779 0 R (1965) 3780 0 R (1967) 3782 0 R (197) 2131 0 R (1970) 3783 0 R (1971) 3784 0 R (1972) 3785 0 R (1973) 3786 0 R (1974) 3787 0 R (1977) 3792 0 R (1978) 3772 0 R (198) 2132 0 R (1983) 3793 0 R (1984) 3794 0 R (1985) 3795 0 R (1986) 3796 0 R (1987) 3797 0 R (1988) 3798 0 R (1989) 3799 0 R (199) 2133 0 R (1990) 3800 0 R (1998) 3804 0 R (1999) 3805 0 R (2.0) 6 0 R (20.0) 1146 0 R (20.74.111.2) 1150 0 R (2000) 3806 0 R (2001) 3807 0 R (2002) 3808 0 R (2003) 3809 0 R (2005) 3811 0 R (2006) 3812 0 R (2007) 3813 0 R (2008) 3814 0 R (2009) 3815 0 R (2010) 3816 0 R (2013) 3817 0 R (2017) 3819 0 R (202) 2135 0 R (2020) 3820 0 R (2021) 3821 0 R (2024) 3826 0 R (2025) 3827 0 R (2026) 3828 0 R (2029) 3829 0 R (2030) 3830 0 R (2031) 3831 0 R (2032) 3832 0 R (2033) 3833 0 R (2034) 3834 0 R (2035) 3835 0 R (2038) 3836 0 R (2039) 3837 0 R (2042) 3838 0 R (2043) 3839 0 R (2044) 3840 0 R (2045) 3841 0 R (2046) 3846 0 R (2047) 3847 0 R (2048) 3848 0 R (2049) 3849 0 R (205) 2137 0 R (2050) 3850 0 R (2051) 3851 0 R (2052) 3852 0 R (2053) 3853 0 R (2054) 3854 0 R (2055) 3855 0 R (2056) 3856 0 R (2057) 3857 0 R (2060) 3858 0 R (2061) 3859 0 R (2062) 3860 0 R (2063) 3861 0 R (2064) 3862 0 R (2065) 3863 0 R (2068) 3864 0 R (2069) 3865 0 R (2070) 3866 0 R (2071) 3867 0 R (2072) 3868 0 R (2073) 3869 0 R (2074) 3874 0 R (2076) 3877 0 R (2077) 3878 0 R (2079) 3880 0 R (208) 2139 0 R (2080) 3881 0 R (2082) 3883 0 R (2083) 3884 0 R (2085) 3886 0 R (2086) 3887 0 R (2087) 3888 0 R (2090) 3889 0 R (2091) 3890 0 R (2092) 3891 0 R (2093) 3892 0 R (2094) 3893 0 R (2095) 3894 0 R (2096) 3895 0 R (2097) 3896 0 R (2098) 3897 0 R (2099) 3898 0 R (21.0) 1154 0 R (21.74.112.2) 1158 0 R (2100) 3899 0 R (2101) 3900 0 R (2102) 3901 0 R (2103) 3902 0 R (2104) 3903 0 R (2105) 3904 0 R (2106) 3910 0 R (2107) 3911 0 R (211) 2141 0 R (2111) 3913 0 R (2112) 3914 0 R (2113) 3915 0 R (2114) 3916 0 R (2115) 3917 0 R (2117) 3919 0 R (2118) 3920 0 R (2120) 3921 0 R (2121) 3922 0 R (2122) 3923 0 R (2123) 3924 0 R (2125) 3925 0 R (2126) 3926 0 R (2127) 3927 0 R (2128) 3928 0 R (2130) 3929 0 R (2131) 3930 0 R (2132) 3931 0 R (2133) 3932 0 R (2135) 3933 0 R (2136) 3934 0 R (2137) 3935 0 R (2138) 3936 0 R (214) 2143 0 R (2140) 3937 0 R (2141) 3938 0 R (2142) 3939 0 R (2143) 3940 0 R (2146) 3946 0 R (2147) 3947 0 R (2148) 3948 0 R (2149) 3949 0 R (2153) 3951 0 R (2154) 3952 0 R (2155) 3953 0 R (2156) 3954 0 R (2158) 3956 0 R (2159) 3957 0 R (2161) 3959 0 R (2162) 3960 0 R (2164) 1692 0 R (2166) 3962 0 R (217) 2145 0 R (2170) 3964 0 R (2171) 3965 0 R (2172) 3966 0 R (2173) 3967 0 R (2174) 3968 0 R (2175) 3969 0 R (2176) 3970 0 R (2177) 3975 0 R (2180) 3980 0 R (2181) 3981 0 R (2182) 3982 0 R (2187) 3983 0 R (2190) 3984 0 R (2192) 3986 0 R (2193) 3987 0 R (2194) 3988 0 R (2195) 3989 0 R (2197) 3991 0 R (2198) 3992 0 R (2199) 3993 0 R (22.0) 1162 0 R (22.74.113.2) 1166 0 R (22.74.114.2) 1170 0 R (2200) 3994 0 R (2201) 3995 0 R (2202) 3996 0 R (2203) 3997 0 R (2204) 3998 0 R (2205) 3999 0 R (2206) 4000 0 R (2207) 4001 0 R (221) 2146 0 R (2211) 4002 0 R (2212) 4003 0 R (2217) 4010 0 R (2218) 4011 0 R (2219) 4012 0 R (222) 2147 0 R (2220) 4013 0 R (2224) 4016 0 R (2225) 4017 0 R (2226) 4018 0 R (2227) 4019 0 R (2228) 4020 0 R (2229) 4021 0 R (223) 2148 0 R (2231) 4022 0 R (2232) 4023 0 R (2233) 4024 0 R (2234) 4025 0 R (2235) 4026 0 R (2236) 4027 0 R (2237) 4028 0 R (2238) 4029 0 R (2239) 4030 0 R (224) 2149 0 R (2240) 4031 0 R (2241) 4032 0 R (2242) 4033 0 R (2243) 4034 0 R (2244) 4035 0 R (2245) 4036 0 R (2246) 4037 0 R (2247) 4038 0 R (2248) 4039 0 R (2249) 4040 0 R (2250) 4041 0 R (2251) 4042 0 R (2253) 4043 0 R (2254) 4044 0 R (2255) 4045 0 R (2256) 4046 0 R (2257) 4047 0 R (2258) 4048 0 R (2259) 4049 0 R (2260) 4050 0 R (2261) 4051 0 R (2263) 4052 0 R (2264) 4053 0 R (2265) 4054 0 R (2266) 4055 0 R (2267) 4056 0 R (2268) 4057 0 R (2269) 4058 0 R (227) 2154 0 R (2270) 4059 0 R (2271) 4060 0 R (2272) 4061 0 R (2273) 4062 0 R (2274) 4063 0 R (2275) 4064 0 R (2276) 4065 0 R (2277) 4066 0 R (2278) 4067 0 R (2279) 4068 0 R (2280) 4069 0 R (2281) 4070 0 R (2282) 4071 0 R (2283) 4072 0 R (2284) 4073 0 R (2285) 4074 0 R (2286) 4075 0 R (2287) 4076 0 R (2288) 4077 0 R (2289) 4083 0 R (2290) 4084 0 R (2291) 4085 0 R (2292) 4086 0 R (2293) 4087 0 R (2299) 4089 0 R (23.0) 1174 0 R (23.74.115.2) 1178 0 R (23.74.116.2) 1182 0 R (23.74.117.2) 1186 0 R (230) 2155 0 R (2300) 4090 0 R (2301) 4091 0 R (2302) 4092 0 R (2303) 4093 0 R (2304) 4094 0 R (2309) 4100 0 R (231) 2156 0 R (2310) 4101 0 R (2311) 4102 0 R (2312) 4103 0 R (2315) 4104 0 R (2316) 4105 0 R (2317) 4106 0 R (2318) 4107 0 R (2319) 4108 0 R (232) 2157 0 R (2320) 4109 0 R (2321) 4110 0 R (2322) 4111 0 R (2323) 4112 0 R (2324) 4113 0 R (2325) 4114 0 R (2326) 4115 0 R (2327) 4116 0 R (2328) 4117 0 R (2329) 4118 0 R (233) 2158 0 R (2330) 4119 0 R (2331) 4120 0 R (2332) 4121 0 R (2333) 4122 0 R (2334) 4123 0 R (2335) 4128 0 R (2336) 4129 0 R (2337) 4130 0 R (2338) 4131 0 R (234) 2159 0 R (2341) 4132 0 R (2342) 4133 0 R (2343) 4134 0 R (2344) 4135 0 R (2345) 4136 0 R (2346) 4137 0 R (2347) 4138 0 R (235) 2160 0 R (236) 2161 0 R (2368) 4140 0 R (2369) 4141 0 R (237) 2162 0 R (2370) 4142 0 R (2371) 4143 0 R (2372) 4144 0 R (2373) 4145 0 R (2374) 4146 0 R (2375) 4147 0 R (2376) 4148 0 R (2377) 4149 0 R (2378) 4150 0 R (2379) 4151 0 R (238) 2163 0 R (2380) 4152 0 R (2381) 4153 0 R (2382) 4154 0 R (2383) 4155 0 R (2384) 4156 0 R (2385) 4157 0 R (2386) 4158 0 R (2387) 4159 0 R (2388) 4160 0 R (2389) 4161 0 R (2390) 4162 0 R (2391) 4163 0 R (2392) 4164 0 R (2393) 4165 0 R (2394) 4166 0 R (2395) 4167 0 R (2396) 4168 0 R (2397) 4169 0 R (2398) 4170 0 R (2399) 4171 0 R (24) 2020 0 R (24.0) 1190 0 R (24.74.118.2) 1194 0 R (2400) 4172 0 R (2401) 4173 0 R (2402) 4179 0 R (2403) 4180 0 R (2404) 4181 0 R (2405) 4182 0 R (2406) 4183 0 R (2407) 4184 0 R (2408) 4185 0 R (2409) 4186 0 R (241) 2164 0 R (2410) 4187 0 R (2411) 4188 0 R (2412) 4189 0 R (2413) 4190 0 R (2414) 4191 0 R (242) 2165 0 R (243) 2166 0 R (2435) 4193 0 R (2436) 4194 0 R (2437) 4195 0 R (2438) 4196 0 R (2439) 4197 0 R (244) 2167 0 R (2440) 4198 0 R (2441) 4199 0 R (2442) 4200 0 R (2443) 4201 0 R (2444) 4202 0 R (2445) 4203 0 R (2446) 4204 0 R (2449) 4205 0 R (245) 2168 0 R (2451) 4207 0 R (2452) 4208 0 R (2455) 4214 0 R (2460) 4215 0 R (2461) 4216 0 R (2462) 4217 0 R (2463) 4218 0 R (2467) 4224 0 R (2468) 4213 0 R (2469) 4225 0 R (2470) 4226 0 R (2471) 4227 0 R (2472) 4228 0 R (2473) 4229 0 R (2474) 4230 0 R (2475) 4231 0 R (2476) 4232 0 R (2477) 4233 0 R (2478) 4234 0 R (2479) 4235 0 R (248) 2169 0 R (2480) 4236 0 R (2481) 4237 0 R (2482) 4238 0 R (2483) 4239 0 R (2486) 4240 0 R (2487) 4241 0 R (249) 2170 0 R (2490) 4242 0 R (2491) 4243 0 R (2492) 4244 0 R (2493) 4245 0 R (2494) 4246 0 R (2495) 4247 0 R (2496) 4248 0 R (2497) 4249 0 R (2498) 4250 0 R (2499) 4251 0 R (25) 2021 0 R (25.0) 1198 0 R (25.74.119.2) 1202 0 R (25.74.120.2) 1206 0 R (250) 2171 0 R (2500) 4252 0 R (2501) 4253 0 R (2502) 4258 0 R (2505) 4259 0 R (2506) 4260 0 R (2507) 4261 0 R (2508) 4262 0 R (2509) 4263 0 R (251) 2172 0 R (2510) 4264 0 R (2513) 4265 0 R (2514) 4266 0 R (2515) 4267 0 R (2516) 4268 0 R (2517) 4269 0 R (252) 2176 0 R (2520) 4270 0 R (2523) 4271 0 R (2524) 4272 0 R (2525) 4273 0 R (2546) 4280 0 R (2549) 4281 0 R (255) 2177 0 R (2550) 4282 0 R (2552) 4284 0 R (2553) 4285 0 R (2554) 4286 0 R (2555) 4287 0 R (256) 2178 0 R (2560) 4288 0 R (2561) 4289 0 R (2562) 4290 0 R (2563) 4291 0 R (2564) 4292 0 R (2565) 4293 0 R (2566) 4294 0 R (2567) 4295 0 R (2568) 4296 0 R (2569) 4297 0 R (2570) 4298 0 R (2571) 4299 0 R (2572) 4300 0 R (2573) 4301 0 R (2574) 4306 0 R (2575) 4307 0 R (2576) 4308 0 R (2577) 4309 0 R (2578) 4310 0 R (2579) 4311 0 R (258) 2180 0 R (2580) 4312 0 R (2581) 4313 0 R (2582) 4314 0 R (2583) 4315 0 R (2584) 4316 0 R (2585) 4317 0 R (2586) 4318 0 R (2587) 4319 0 R (2588) 4320 0 R (2589) 4321 0 R (259) 2181 0 R (2592) 4322 0 R (2593) 4323 0 R (2594) 4324 0 R (2597) 4329 0 R (2598) 4330 0 R (2599) 4331 0 R (26) 2022 0 R (26.0) 1210 0 R (26.74.121.2) 1214 0 R (26.74.122.2) 1218 0 R (260) 2182 0 R (2600) 4332 0 R (2601) 4333 0 R (2602) 4334 0 R (2603) 4335 0 R (2604) 4336 0 R (2605) 4337 0 R (2606) 4338 0 R (2609) 4339 0 R (2610) 4340 0 R (2611) 4341 0 R (2621) 4343 0 R (2624) 4349 0 R (2627) 4350 0 R (263) 2183 0 R (2630) 4351 0 R (2633) 4352 0 R (2636) 4353 0 R (2637) 4354 0 R (264) 2184 0 R (2640) 4355 0 R (2643) 4356 0 R (2644) 1831 0 R (2646) 4362 0 R (2647) 4363 0 R (2648) 4348 0 R (265) 2185 0 R (2657) 4365 0 R (266) 2186 0 R (2660) 4366 0 R (2661) 4367 0 R (2664) 4368 0 R (2667) 4369 0 R (2668) 4370 0 R (2669) 4371 0 R (267) 2187 0 R (2672) 4376 0 R (2673) 4377 0 R (2674) 4361 0 R (2676) 4378 0 R (2677) 4379 0 R (2678) 4380 0 R (268) 2188 0 R (2681) 4381 0 R (2684) 4382 0 R (2685) 4383 0 R (2686) 4384 0 R (2687) 4385 0 R (2688) 4386 0 R (2689) 4387 0 R (269) 2189 0 R (2690) 4388 0 R (2691) 4389 0 R (2692) 4390 0 R (2693) 4391 0 R (2694) 4392 0 R (2695) 4393 0 R (2696) 4394 0 R (2697) 4395 0 R (2698) 4396 0 R (2699) 4397 0 R (27.0) 1222 0 R (27.74.123.2) 1226 0 R (27.74.124.2) 1230 0 R (270) 2190 0 R (2700) 4398 0 R (2701) 4399 0 R (2702) 4400 0 R (2703) 4401 0 R (2704) 4402 0 R (2705) 4403 0 R (2708) 4404 0 R (2709) 4405 0 R (271) 2191 0 R (2710) 4406 0 R (2711) 4407 0 R (2712) 4408 0 R (2713) 4414 0 R (2714) 4415 0 R (2715) 4416 0 R (2716) 4417 0 R (2717) 4418 0 R (2718) 4419 0 R (2719) 4420 0 R (272) 2192 0 R (2720) 4421 0 R (2721) 4422 0 R (2722) 4423 0 R (2723) 4424 0 R (2724) 4425 0 R (2725) 4426 0 R (2726) 4427 0 R (2727) 4428 0 R (2728) 4429 0 R (2729) 4430 0 R (273) 2193 0 R (2730) 4431 0 R (2731) 4432 0 R (2732) 4433 0 R (2733) 4434 0 R (2734) 4435 0 R (2735) 4436 0 R (2736) 4437 0 R (2737) 4438 0 R (2738) 4439 0 R (2739) 4440 0 R (2740) 4441 0 R (2741) 4442 0 R (2742) 4443 0 R (2743) 4444 0 R (2744) 4445 0 R (2745) 4446 0 R (2746) 4447 0 R (2747) 4448 0 R (2748) 4449 0 R (2749) 4455 0 R (2750) 4456 0 R (2751) 4457 0 R (2752) 4458 0 R (2755) 4459 0 R (2759) 4461 0 R (276) 2194 0 R (2760) 4462 0 R (2761) 4463 0 R (2764) 4464 0 R (2765) 4465 0 R (2766) 4466 0 R (2767) 4467 0 R (2769) 4468 0 R (277) 2195 0 R (2770) 4469 0 R (2771) 4470 0 R (2773) 4471 0 R (2774) 4472 0 R (2775) 4473 0 R (2777) 4474 0 R (2778) 4475 0 R (2779) 4476 0 R (2781) 4477 0 R (2782) 4478 0 R (2783) 4479 0 R (2785) 4480 0 R (2786) 4481 0 R (2787) 4482 0 R (2789) 4483 0 R (279) 2197 0 R (2790) 4484 0 R (2791) 4485 0 R (2793) 4486 0 R (2794) 4487 0 R (2795) 4488 0 R (2797) 4493 0 R (2798) 4494 0 R (2799) 4495 0 R (28) 2024 0 R (28.0) 1234 0 R (28.74.125.2) 1238 0 R (280) 2198 0 R (2801) 4454 0 R (2802) 4496 0 R (2803) 4497 0 R (2805) 4498 0 R (2806) 4499 0 R (2807) 4500 0 R (2809) 4501 0 R (281) 2199 0 R (2810) 4502 0 R (2811) 4503 0 R (2813) 4504 0 R (2814) 4505 0 R (2815) 4506 0 R (2817) 4507 0 R (2818) 4508 0 R (2819) 4509 0 R (282) 2200 0 R (2820) 4510 0 R (2821) 4511 0 R (2825) 4513 0 R (2828) 4514 0 R (2829) 4515 0 R (283) 2201 0 R (2830) 4516 0 R (2831) 4517 0 R (2832) 4518 0 R (2835) 4523 0 R (2836) 4524 0 R (2837) 4525 0 R (2838) 4526 0 R (2839) 4527 0 R (284) 2202 0 R (2840) 4528 0 R (2841) 1942 0 R (2843) 4529 0 R (2844) 4530 0 R (2845) 4531 0 R (2846) 4532 0 R (2847) 4533 0 R (285) 2207 0 R (2850) 4534 0 R (2851) 4540 0 R (2854) 4541 0 R (2855) 4542 0 R (2856) 4543 0 R (2857) 4544 0 R (2858) 4545 0 R (2859) 4546 0 R (286) 2208 0 R (2860) 4547 0 R (2861) 4548 0 R (2864) 4549 0 R (2865) 4550 0 R (2866) 4555 0 R (2867) 4556 0 R (2868) 4539 0 R (2869) 4557 0 R (2871) 4559 0 R (2872) 4560 0 R (2876) 4562 0 R (2877) 4563 0 R (2878) 4564 0 R (2881) 4565 0 R (2882) 4566 0 R (2883) 4567 0 R (2884) 4568 0 R (2885) 4574 0 R (2886) 4575 0 R (2887) 4576 0 R (2888) 4577 0 R (289) 2211 0 R (2891) 4578 0 R (2892) 4579 0 R (2893) 4580 0 R (2895) 4582 0 R (2896) 4583 0 R (2897) 4584 0 R (2898) 4585 0 R (2899) 4586 0 R (290) 2212 0 R (2900) 4587 0 R (2901) 1949 0 R (2903) 4592 0 R (2904) 4593 0 R (2905) 4594 0 R (291) 2213 0 R (2910) 4599 0 R (2911) 4600 0 R (2912) 4601 0 R (2915) 4602 0 R (2916) 4603 0 R (2917) 4604 0 R (2918) 4605 0 R (2919) 4606 0 R (292) 2214 0 R (2920) 4607 0 R (2921) 4608 0 R (2922) 4609 0 R (2923) 4610 0 R (2924) 4611 0 R (2925) 4612 0 R (2928) 4613 0 R (2929) 4614 0 R (293) 2215 0 R (2933) 4616 0 R (2934) 4617 0 R (2935) 4618 0 R (2936) 4619 0 R (2937) 4620 0 R (2938) 4621 0 R (2939) 4622 0 R (294) 2216 0 R (2940) 4627 0 R (2941) 4628 0 R (2942) 4629 0 R (2945) 4630 0 R (2946) 4631 0 R (2947) 4632 0 R (2948) 4633 0 R (2949) 4634 0 R (295) 2217 0 R (2950) 4635 0 R (2951) 4636 0 R (2952) 4637 0 R (2953) 4638 0 R (2954) 4639 0 R (2955) 4640 0 R (2956) 4641 0 R (2957) 4642 0 R (2958) 4643 0 R (2959) 4644 0 R (296) 2218 0 R (2960) 4645 0 R (2961) 4646 0 R (2962) 4647 0 R (2963) 4648 0 R (2964) 4649 0 R (2965) 4650 0 R (2966) 4651 0 R (2967) 4652 0 R (2968) 4653 0 R (297) 2219 0 R (2971) 4658 0 R (2972) 4659 0 R (2973) 4660 0 R (2974) 4661 0 R (2975) 4662 0 R (2976) 4663 0 R (2977) 4664 0 R (2978) 4665 0 R (2979) 4666 0 R (298) 2220 0 R (2980) 4667 0 R (2983) 4668 0 R (2984) 4669 0 R (2985) 4670 0 R (2986) 4671 0 R (2987) 4672 0 R (2988) 4673 0 R (2989) 4674 0 R (299) 2221 0 R (2990) 4675 0 R (2991) 4676 0 R (2992) 4677 0 R (2993) 4678 0 R (2994) 4679 0 R (2995) 4680 0 R (2996) 4681 0 R (2997) 4686 0 R (2998) 4687 0 R (2999) 4688 0 R (3.0) 10 0 R (300) 2222 0 R (3002) 4689 0 R (3003) 4690 0 R (3004) 4691 0 R (3005) 4692 0 R (3006) 4693 0 R (3007) 4694 0 R (3008) 4695 0 R (3009) 4696 0 R (301) 2223 0 R (3010) 4697 0 R (3011) 4698 0 R (3012) 4699 0 R (3013) 4700 0 R (3014) 4701 0 R (3015) 4702 0 R (3016) 4703 0 R (3017) 4704 0 R (3018) 4705 0 R (3019) 4706 0 R (302) 2224 0 R (3020) 4707 0 R (3021) 4708 0 R (3022) 4709 0 R (3023) 4710 0 R (3024) 4711 0 R (3025) 4712 0 R (3026) 4713 0 R (3027) 4714 0 R (3028) 4715 0 R (3029) 4716 0 R (303) 2225 0 R (3030) 4717 0 R (3031) 4723 0 R (3032) 4724 0 R (3033) 4725 0 R (3034) 4726 0 R (3035) 4727 0 R (3036) 4728 0 R (3037) 4729 0 R (3038) 4730 0 R (3039) 4731 0 R (304) 2226 0 R (3040) 4732 0 R (3041) 4733 0 R (3042) 4734 0 R (3043) 4735 0 R (3044) 4736 0 R (3047) 4737 0 R (3048) 4738 0 R (305) 2227 0 R (3051) 4739 0 R (3052) 4740 0 R (3053) 4741 0 R (3054) 4742 0 R (3055) 4743 0 R (3056) 4748 0 R (3057) 4749 0 R (3058) 4750 0 R (3059) 4751 0 R (306) 2228 0 R (3060) 4752 0 R (3061) 4753 0 R (3062) 4754 0 R (3063) 4755 0 R (3064) 4756 0 R (3065) 4757 0 R (3066) 4758 0 R (3067) 4759 0 R (3068) 4760 0 R (3069) 4761 0 R (307) 2229 0 R (3070) 4766 0 R (3071) 4767 0 R (3072) 4768 0 R (3073) 4769 0 R (3076) 4770 0 R (3077) 4771 0 R (308) 2230 0 R (3080) 4776 0 R (3083) 4777 0 R (3084) 4778 0 R (3085) 4779 0 R (3086) 4780 0 R (3089) 4783 0 R (3090) 4784 0 R (3091) 4785 0 R (3092) 4786 0 R (3093) 4787 0 R (3096) 4788 0 R (3097) 4789 0 R (3098) 4790 0 R (3099) 4791 0 R (31) 2025 0 R (310) 2232 0 R (3100) 4792 0 R (3104) 4793 0 R (3105) 4794 0 R (3106) 4795 0 R (3107) 4796 0 R (3108) 4797 0 R (3109) 4798 0 R (311) 2233 0 R (3110) 4803 0 R (3113) 4804 0 R (3114) 4805 0 R (3115) 4806 0 R (3116) 4807 0 R (3117) 4808 0 R (3118) 4809 0 R (3119) 4810 0 R (312) 2234 0 R (3120) 4811 0 R (3123) 4812 0 R (3124) 4813 0 R (3125) 4814 0 R (3126) 4815 0 R (3127) 4816 0 R (3128) 4817 0 R (3129) 4818 0 R (313) 2235 0 R (3130) 4819 0 R (3131) 4820 0 R (3132) 4821 0 R (3135) 4822 0 R (3136) 4823 0 R (3137) 4828 0 R (3138) 4829 0 R (3139) 4830 0 R (314) 2236 0 R (3140) 4831 0 R (3143) 4833 0 R (3144) 4834 0 R (3145) 4835 0 R (3146) 4836 0 R (3147) 4837 0 R (315) 2237 0 R (3150) 4839 0 R (3151) 4840 0 R (3152) 4841 0 R (3153) 4842 0 R (3154) 4843 0 R (3155) 4844 0 R (3156) 4845 0 R (3160) 4846 0 R (3161) 4847 0 R (3162) 4848 0 R (3163) 4849 0 R (3167) 4856 0 R (3168) 4857 0 R (3169) 4858 0 R (317) 2239 0 R (3170) 4859 0 R (3171) 4860 0 R (3174) 4865 0 R (3175) 4866 0 R (3178) 4867 0 R (3179) 4868 0 R (318) 2240 0 R (3180) 4869 0 R (3181) 4870 0 R (3182) 4871 0 R (3183) 4872 0 R (3184) 4873 0 R (3185) 4874 0 R (3186) 4875 0 R (3187) 4876 0 R (3188) 4877 0 R (3189) 4878 0 R (319) 2241 0 R (3190) 4879 0 R (3191) 4880 0 R (3192) 4881 0 R (3193) 4882 0 R (3194) 4883 0 R (3195) 4884 0 R (3196) 4885 0 R (3197) 4886 0 R (3198) 4887 0 R (3199) 4888 0 R (32) 2026 0 R (320) 2242 0 R (3200) 4889 0 R (3201) 4890 0 R (3202) 4891 0 R (3203) 4892 0 R (3204) 4893 0 R (3205) 4894 0 R (3206) 4895 0 R (3209) 4896 0 R (321) 2243 0 R (3210) 4897 0 R (3211) 4898 0 R (3212) 4899 0 R (3213) 4900 0 R (3214) 4901 0 R (3215) 4902 0 R (3216) 4903 0 R (3217) 4904 0 R (322) 2244 0 R (3222) 4909 0 R (3223) 4910 0 R (3224) 4911 0 R (3225) 4912 0 R (3226) 4913 0 R (3227) 4914 0 R (3228) 4915 0 R (3229) 4916 0 R (323) 2245 0 R (3230) 4917 0 R (3231) 4918 0 R (3232) 4919 0 R (3233) 4920 0 R (3234) 4921 0 R (3235) 4922 0 R (3239) 4924 0 R (3240) 4925 0 R (3241) 4926 0 R (3242) 4927 0 R (3243) 4928 0 R (3244) 4929 0 R (3245) 4930 0 R (3246) 4931 0 R (3247) 4932 0 R (3248) 4933 0 R (3249) 4934 0 R (325) 2247 0 R (3250) 4939 0 R (3251) 4940 0 R (3252) 4941 0 R (3253) 4942 0 R (3254) 4943 0 R (3255) 4944 0 R (3256) 4945 0 R (3257) 4946 0 R (3258) 4947 0 R (3259) 4948 0 R (326) 2248 0 R (3260) 4949 0 R (3261) 4950 0 R (3262) 4951 0 R (3263) 4952 0 R (3264) 4953 0 R (3265) 4954 0 R (3266) 4955 0 R (3267) 4956 0 R (3268) 4957 0 R (3269) 4958 0 R (327) 2249 0 R (3270) 4959 0 R (3271) 4960 0 R (3272) 4961 0 R (3273) 4962 0 R (3274) 4963 0 R (3275) 4964 0 R (3276) 4969 0 R (3277) 4970 0 R (3278) 4971 0 R (3279) 4972 0 R (328) 2250 0 R (3280) 4973 0 R (3281) 4974 0 R (3282) 4975 0 R (3285) 4976 0 R (3286) 4977 0 R (3287) 4978 0 R (3288) 4979 0 R (3289) 4980 0 R (3290) 4981 0 R (3291) 4982 0 R (3292) 4983 0 R (3293) 4984 0 R (3294) 4985 0 R (3295) 4986 0 R (3296) 4987 0 R (3297) 4988 0 R (3298) 4989 0 R (3299) 4990 0 R (33) 2027 0 R (330) 2252 0 R (3300) 4991 0 R (3301) 4992 0 R (3302) 4993 0 R (3303) 4994 0 R (3304) 4995 0 R (3307) 5005 0 R (3308) 5006 0 R (3309) 5007 0 R (331) 2253 0 R (3312) 5008 0 R (3313) 5009 0 R (3314) 5010 0 R (3317) 5011 0 R (3318) 5012 0 R (3319) 5013 0 R (3320) 5014 0 R (3321) 5015 0 R (3322) 5016 0 R (3323) 5021 0 R (3324) 5022 0 R (3327) 5023 0 R (3328) 5024 0 R (333) 2255 0 R (3331) 5025 0 R (3332) 5026 0 R (3333) 5027 0 R (3334) 5033 0 R (3337) 5034 0 R (3338) 5035 0 R (3339) 5036 0 R (334) 2256 0 R (3340) 5037 0 R (3341) 5038 0 R (3342) 5039 0 R (3343) 5040 0 R (3344) 5041 0 R (3345) 5042 0 R (3346) 5043 0 R (3347) 5044 0 R (3348) 5045 0 R (3349) 5046 0 R (3350) 5047 0 R (3351) 5048 0 R (3352) 5049 0 R (3353) 5050 0 R (3354) 5051 0 R (3355) 5052 0 R (3356) 5053 0 R (3357) 5054 0 R (3358) 5055 0 R (3359) 5056 0 R (336) 2258 0 R (3360) 5057 0 R (3361) 5058 0 R (3362) 5059 0 R (3363) 5060 0 R (3364) 5061 0 R (3365) 5062 0 R (3366) 5063 0 R (3367) 5064 0 R (3368) 5032 0 R (3369) 5069 0 R (337) 2259 0 R (3370) 5070 0 R (3373) 5071 0 R (3374) 5072 0 R (3375) 5073 0 R (3378) 5074 0 R (3379) 5075 0 R (3382) 5076 0 R (3383) 5081 0 R (3386) 5082 0 R (3389) 5083 0 R (339) 2261 0 R (3392) 5084 0 R (3393) 5085 0 R (3394) 5086 0 R (3397) 5087 0 R (3398) 5088 0 R (3399) 5089 0 R (340) 2262 0 R (3400) 5094 0 R (3401) 5095 0 R (3403) 5101 0 R (3407) 5102 0 R (3408) 5103 0 R (3409) 5104 0 R (341) 2263 0 R (3410) 5105 0 R (3415) 5108 0 R (3416) 5109 0 R (3417) 5110 0 R (3418) 5111 0 R (3419) 5112 0 R (342) 2267 0 R (3420) 5113 0 R (3422) 5114 0 R (3423) 5115 0 R (3424) 5116 0 R (3425) 5117 0 R (3426) 5118 0 R (3428) 5119 0 R (3429) 5120 0 R (343) 2268 0 R (3430) 5121 0 R (3431) 5122 0 R (3432) 5123 0 R (3433) 5124 0 R (3434) 5125 0 R (3435) 5126 0 R (3436) 5127 0 R (3438) 5128 0 R (3439) 5129 0 R (344) 2269 0 R (3440) 5130 0 R (3441) 5131 0 R (3442) 5132 0 R (3443) 5133 0 R (3444) 5134 0 R (3445) 5135 0 R (3446) 5136 0 R (3447) 5137 0 R (3448) 5138 0 R (3450) 5139 0 R (3451) 5140 0 R (3452) 5141 0 R (3453) 5142 0 R (3454) 5143 0 R (3455) 5144 0 R (346) 2271 0 R (3460) 5151 0 R (3461) 5152 0 R (3462) 5153 0 R (3463) 5154 0 R (3464) 5155 0 R (3465) 5156 0 R (3467) 5157 0 R (3468) 5158 0 R (3469) 5159 0 R (347) 2272 0 R (3472) 5160 0 R (3473) 5161 0 R (3479) 5163 0 R (348) 2273 0 R (3480) 5164 0 R (3481) 5165 0 R (3482) 5166 0 R (3485) 5168 0 R (3486) 5169 0 R (349) 2274 0 R (3490) 5170 0 R (3491) 5171 0 R (3492) 5172 0 R (3493) 5173 0 R (3494) 5174 0 R (3497) 5175 0 R (3498) 5176 0 R (3499) 5177 0 R (350) 2275 0 R (3500) 5178 0 R (3501) 5184 0 R (3502) 5185 0 R (3503) 5186 0 R (3508) 5188 0 R (3509) 5189 0 R (351) 2276 0 R (3510) 5190 0 R (3511) 5191 0 R (3514) 5193 0 R (3515) 5194 0 R (3520) 5197 0 R (3521) 5198 0 R (3522) 5199 0 R (3523) 5200 0 R (3524) 5201 0 R (3529) 5204 0 R (353) 2278 0 R (3530) 5205 0 R (3536) 5211 0 R (3537) 5212 0 R (3538) 5213 0 R (3539) 5214 0 R (354) 2279 0 R (3540) 5215 0 R (3541) 5216 0 R (3542) 5217 0 R (3545) 5219 0 R (3546) 5220 0 R (3548) 5222 0 R (3549) 5223 0 R (355) 2280 0 R (3551) 5224 0 R (3552) 5225 0 R (3553) 5226 0 R (3554) 5227 0 R (3556) 5228 0 R (3557) 5229 0 R (3558) 5230 0 R (3559) 5231 0 R (356) 2281 0 R (3560) 5232 0 R (3562) 5233 0 R (3563) 5234 0 R (3564) 5235 0 R (3565) 5236 0 R (357) 2282 0 R (3571) 5238 0 R (3572) 5239 0 R (3573) 5240 0 R (3576) 5241 0 R (3577) 5242 0 R (3579) 5248 0 R (358) 2283 0 R (3580) 5249 0 R (3581) 5250 0 R (3582) 5251 0 R (3586) 5253 0 R (3587) 5254 0 R (3588) 5255 0 R (3589) 5256 0 R (359) 2284 0 R (3590) 5257 0 R (3591) 5258 0 R (3592) 5259 0 R (3593) 5260 0 R (3599) 5262 0 R (36) 2028 0 R (360) 2285 0 R (3600) 5263 0 R (3604) 5265 0 R (3605) 5266 0 R (3606) 5267 0 R (361) 2286 0 R (3611) 5269 0 R (3612) 5270 0 R (3613) 5271 0 R (3615) 5276 0 R (3616) 5277 0 R (3617) 5278 0 R (3618) 5279 0 R (3619) 5280 0 R (362) 2287 0 R (3620) 5281 0 R (3621) 5282 0 R (3622) 5283 0 R (3623) 5284 0 R (3624) 5285 0 R (3625) 5286 0 R (3626) 5287 0 R (3627) 5288 0 R (3628) 5289 0 R (3633) 5292 0 R (3634) 5293 0 R (3635) 5294 0 R (3639) 5296 0 R (3640) 5297 0 R (3645) 5300 0 R (3646) 5301 0 R (3647) 5302 0 R (3648) 5305 0 R (3649) 5303 0 R (365) 2288 0 R (3650) 5304 0 R (366) 2289 0 R (369) 2290 0 R (37) 2029 0 R (372) 2291 0 R (373) 2292 0 R (374) 2293 0 R (375) 2294 0 R (376) 2295 0 R (377) 2296 0 R (378) 2297 0 R (379) 2298 0 R (38) 2030 0 R (380) 2299 0 R (383) 2303 0 R (386) 2304 0 R (389) 2305 0 R (39) 2031 0 R (392) 2306 0 R (393) 2307 0 R (396) 2308 0 R (399) 2309 0 R (4.0) 14 0 R (4.1.1) 18 0 R (4.2.1) 22 0 R (4.3.1) 26 0 R (4.4.1) 30 0 R (4.5.1) 34 0 R (40) 2032 0 R (402) 2310 0 R (403) 2311 0 R (404) 2312 0 R (405) 2313 0 R (406) 2314 0 R (408) 2316 0 R (409) 2321 0 R (41) 2033 0 R (410) 2322 0 R (411) 2323 0 R (414) 2324 0 R (415) 2325 0 R (416) 2326 0 R (417) 2327 0 R (418) 2328 0 R (419) 2329 0 R (42) 2034 0 R (420) 2330 0 R (423) 2331 0 R (424) 2332 0 R (428) 2334 0 R (429) 2335 0 R (43) 2035 0 R (430) 2336 0 R (431) 2337 0 R (432) 2338 0 R (433) 2339 0 R (434) 2340 0 R (435) 2341 0 R (436) 2342 0 R (437) 2343 0 R (438) 2344 0 R (439) 2345 0 R (44) 2036 0 R (440) 2346 0 R (441) 2347 0 R (442) 2348 0 R (443) 2354 0 R (444) 2355 0 R (445) 2356 0 R (446) 2357 0 R (447) 2358 0 R (449) 2360 0 R (45) 2037 0 R (450) 2361 0 R (453) 2362 0 R (459) 2366 0 R (46) 2038 0 R (460) 2367 0 R (463) 2368 0 R (464) 2369 0 R (465) 2370 0 R (466) 2371 0 R (467) 2372 0 R (468) 2373 0 R (469) 2374 0 R (47) 2039 0 R (470) 2375 0 R (471) 2376 0 R (472) 2377 0 R (475) 2379 0 R (476) 2380 0 R (477) 2381 0 R (478) 2382 0 R (479) 2387 0 R (48) 2040 0 R (481) 2388 0 R (482) 2389 0 R (483) 2390 0 R (484) 2391 0 R (485) 2392 0 R (486) 2393 0 R (489) 2395 0 R (49) 2041 0 R (490) 2396 0 R (491) 2397 0 R (492) 2401 0 R (494) 2403 0 R (495) 2404 0 R (496) 2405 0 R (497) 2406 0 R (498) 2407 0 R (499) 2408 0 R (5.0) 38 0 R (5.10.1) 238 0 R (5.10.17.19.3) 246 0 R (5.10.17.2) 242 0 R (5.10.17.20.3) 250 0 R (5.10.17.21.3) 254 0 R (5.10.17.22.3) 258 0 R (5.10.18.2) 262 0 R (5.10.18.23.3) 266 0 R (5.10.18.24.3) 270 0 R (5.10.19.2) 274 0 R (5.11.1) 278 0 R (5.11.20.2) 282 0 R (5.11.21.2) 286 0 R (5.11.21.25.12.4) 294 0 R (5.11.21.25.13.4) 298 0 R (5.11.21.25.14.4) 302 0 R (5.11.21.25.3) 290 0 R (5.11.22.2) 306 0 R (5.11.23.2) 310 0 R (5.11.24.2) 314 0 R (5.11.24.26.3) 318 0 R (5.11.25.2) 322 0 R (5.11.25.27.3) 326 0 R (5.12.1) 330 0 R (5.12.26.2) 334 0 R (5.12.27.2) 338 0 R (5.12.27.28.3) 342 0 R (5.12.27.29.3) 346 0 R (5.12.27.30.3) 350 0 R (5.12.27.31.3) 354 0 R (5.12.28.2) 358 0 R (5.12.29.2) 362 0 R (5.6.1) 42 0 R (5.6.1.2) 46 0 R (5.6.2.1.3) 54 0 R (5.6.2.2) 50 0 R (5.6.2.2.3) 58 0 R (5.6.2.3.3) 62 0 R (5.6.3.2) 66 0 R (5.6.4.2) 70 0 R (5.6.5.10.3) 102 0 R (5.6.5.11.3) 106 0 R (5.6.5.12.3) 110 0 R (5.6.5.2) 74 0 R (5.6.5.4.3) 78 0 R (5.6.5.5.3) 82 0 R (5.6.5.6.3) 86 0 R (5.6.5.7.3) 90 0 R (5.6.5.8.3) 94 0 R (5.6.5.9.3) 98 0 R (5.6.6.2) 114 0 R (5.6.7.2) 118 0 R (5.7.1) 122 0 R (5.7.10.2) 186 0 R (5.7.11.17.10.4) 198 0 R (5.7.11.17.11.4) 202 0 R (5.7.11.17.3) 194 0 R (5.7.11.18.3) 206 0 R (5.7.11.2) 190 0 R (5.7.12.2) 210 0 R (5.7.8.2) 126 0 R (5.7.9.13.3) 134 0 R (5.7.9.14.1.4) 142 0 R (5.7.9.14.2.4) 146 0 R (5.7.9.14.3) 138 0 R (5.7.9.14.3.4) 150 0 R (5.7.9.14.4.4) 154 0 R (5.7.9.15.3) 158 0 R (5.7.9.15.5.4) 162 0 R (5.7.9.15.6.4) 166 0 R (5.7.9.16.3) 170 0 R (5.7.9.16.7.4) 174 0 R (5.7.9.16.8.4) 178 0 R (5.7.9.16.9.4) 182 0 R (5.7.9.2) 130 0 R (5.8.1) 214 0 R (5.8.13.2) 218 0 R (5.8.14.2) 222 0 R (5.8.15.2) 226 0 R (5.8.16.2) 230 0 R (5.9.1) 234 0 R (50) 2042 0 R (500) 2409 0 R (501) 2410 0 R (502) 2411 0 R (503) 2412 0 R (504) 2413 0 R (505) 2414 0 R (506) 2415 0 R (508) 2416 0 R (509) 2417 0 R (51) 2043 0 R (510) 2418 0 R (511) 2419 0 R (512) 2420 0 R (513) 2421 0 R (514) 2422 0 R (515) 2423 0 R (516) 2424 0 R (517) 2429 0 R (518) 2430 0 R (519) 2431 0 R (52) 2044 0 R (522) 2432 0 R (524) 2433 0 R (525) 2434 0 R (526) 2435 0 R (527) 2436 0 R (529) 2438 0 R (53) 2045 0 R (530) 2439 0 R (531) 2440 0 R (532) 2441 0 R (533) 2442 0 R (534) 2443 0 R (535) 2444 0 R (536) 2445 0 R (537) 2446 0 R (538) 2447 0 R (54) 2049 0 R (540) 2448 0 R (541) 2449 0 R (542) 2450 0 R (543) 2451 0 R (544) 2452 0 R (545) 2453 0 R (546) 2454 0 R (547) 2455 0 R (548) 2456 0 R (549) 2457 0 R (55) 2050 0 R (550) 2458 0 R (551) 2459 0 R (554) 2460 0 R (556) 2461 0 R (557) 2466 0 R (558) 2467 0 R (559) 2468 0 R (56) 2051 0 R (560) 2469 0 R (561) 2470 0 R (562) 2471 0 R (564) 2472 0 R (565) 2473 0 R (566) 2474 0 R (567) 2475 0 R (568) 2476 0 R (569) 2477 0 R (57) 2052 0 R (570) 2478 0 R (572) 2479 0 R (573) 2480 0 R (574) 2481 0 R (575) 2482 0 R (576) 1393 0 R (578) 2483 0 R (579) 2484 0 R (58) 2053 0 R (580) 2485 0 R (581) 2490 0 R (582) 2491 0 R (583) 2492 0 R (586) 2493 0 R (587) 2494 0 R (589) 2496 0 R (59) 2054 0 R (592) 2497 0 R (598) 2501 0 R (599) 2502 0 R (6.0) 366 0 R (6.13.1) 370 0 R (6.13.30.2) 374 0 R (6.13.31.2) 378 0 R (6.13.32.2) 382 0 R (6.13.33.2) 386 0 R (6.13.34.2) 390 0 R (6.13.35.2) 394 0 R (6.13.36.2) 398 0 R (6.13.37.2) 402 0 R (6.13.38.2) 406 0 R (6.13.39.2) 410 0 R (6.13.40.2) 414 0 R (6.13.41.2) 418 0 R (6.13.42.2) 422 0 R (6.13.43.2) 426 0 R (6.13.44.2) 430 0 R (6.13.45.2) 434 0 R (6.14.1) 438 0 R (6.14.46.2) 442 0 R (6.14.47.2) 446 0 R (6.14.47.32.3) 450 0 R (6.14.47.33.15.4) 458 0 R (6.14.47.33.16.4) 462 0 R (6.14.47.33.3) 454 0 R (6.14.47.34.3) 466 0 R (6.14.47.35.3) 470 0 R (6.14.47.36.3) 474 0 R (6.15.1) 478 0 R (6.16.1) 482 0 R (6.16.48.2) 486 0 R (6.16.49.2) 490 0 R (6.16.50.2) 494 0 R (6.16.51.2) 498 0 R (6.16.51.37.3) 502 0 R (6.17.1) 506 0 R (6.18.1) 510 0 R (6.19.1) 514 0 R (6.20.1) 518 0 R (6.20.52.2) 522 0 R (6.20.53.2) 526 0 R (6.20.53.38.3) 530 0 R (6.20.54.2) 534 0 R (6.20.55.2) 538 0 R (6.20.55.39.3) 542 0 R (6.20.55.40.3) 546 0 R (6.20.56.2) 550 0 R (6.20.56.41.3) 554 0 R (6.20.56.42.17.4) 562 0 R (6.20.56.42.18.4) 566 0 R (6.20.56.42.19.4) 570 0 R (6.20.56.42.20.4) 574 0 R (6.20.56.42.21.4) 578 0 R (6.20.56.42.22.4) 582 0 R (6.20.56.42.23.4) 586 0 R (6.20.56.42.24.4) 590 0 R (6.20.56.42.25.4) 594 0 R (6.20.56.42.26.4) 598 0 R (6.20.56.42.27.4) 602 0 R (6.20.56.42.3) 558 0 R (6.20.56.43.3) 606 0 R (6.21.1) 610 0 R (6.22.1) 614 0 R (6.22.57.2) 618 0 R (6.22.58.2) 622 0 R (6.22.59.2) 626 0 R (6.23.1) 630 0 R (6.23.60.2) 634 0 R (6.23.61.2) 638 0 R (6.24.1) 642 0 R (6.25.1) 646 0 R (6.26.1) 650 0 R (6.27.1) 654 0 R (6.27.62.2) 658 0 R (6.27.63.2) 662 0 R (6.27.64.2) 666 0 R (6.27.65.2) 670 0 R (6.28.1) 674 0 R (600) 2503 0 R (602) 2504 0 R (603) 2505 0 R (604) 2506 0 R (606) 2507 0 R (607) 2508 0 R (608) 2509 0 R (609) 2510 0 R (610) 2511 0 R (611) 2512 0 R (612) 2513 0 R (613) 2514 0 R (614) 2515 0 R (615) 2516 0 R (616) 2517 0 R (617) 2518 0 R (619) 2520 0 R (62) 2055 0 R (621) 2526 0 R (622) 2527 0 R (623) 2528 0 R (624) 2529 0 R (625) 2530 0 R (626) 2531 0 R (627) 2532 0 R (629) 2533 0 R (63) 2056 0 R (630) 2534 0 R (631) 2535 0 R (632) 2536 0 R (636) 2537 0 R (637) 2538 0 R (638) 2539 0 R (640) 2540 0 R (641) 2541 0 R (642) 2542 0 R (644) 2543 0 R (645) 2544 0 R (646) 2545 0 R (647) 2546 0 R (648) 2547 0 R (649) 2548 0 R (65) 2057 0 R (650) 2549 0 R (651) 2550 0 R (652) 2551 0 R (654) 2552 0 R (655) 2553 0 R (656) 2554 0 R (657) 2555 0 R (658) 2556 0 R (659) 2557 0 R (66) 2058 0 R (660) 2558 0 R (661) 2559 0 R (662) 2560 0 R (663) 2561 0 R (664) 2562 0 R (665) 2563 0 R (666) 2564 0 R (667) 2565 0 R (668) 2566 0 R (669) 2567 0 R (67) 2059 0 R (670) 2568 0 R (671) 2574 0 R (672) 2575 0 R (673) 2576 0 R (674) 2577 0 R (675) 2578 0 R (676) 2579 0 R (68) 2060 0 R (680) 2580 0 R (681) 2581 0 R (682) 2582 0 R (683) 2583 0 R (684) 2584 0 R (685) 2585 0 R (686) 2586 0 R (687) 2587 0 R (688) 2588 0 R (689) 2589 0 R (690) 2590 0 R (691) 2591 0 R (692) 2592 0 R (693) 2593 0 R (694) 2594 0 R (695) 2595 0 R (696) 2596 0 R (697) 2597 0 R (698) 2598 0 R (699) 2599 0 R (7.0) 678 0 R (7.29.1) 682 0 R (7.29.66.2) 686 0 R (7.29.67.2) 690 0 R (7.29.68.2) 694 0 R (7.30.1) 698 0 R (7.30.69.2) 702 0 R (7.31.1) 706 0 R (7.31.70.2) 710 0 R (70) 2061 0 R (700) 2600 0 R (701) 2601 0 R (702) 2602 0 R (703) 2603 0 R (704) 2604 0 R (705) 2605 0 R (706) 2606 0 R (71) 2062 0 R (710) 2612 0 R (711) 2613 0 R (713) 2615 0 R (714) 2616 0 R (715) 2617 0 R (716) 2618 0 R (718) 2620 0 R (719) 2621 0 R (72) 2063 0 R (720) 2622 0 R (721) 2623 0 R (722) 2624 0 R (723) 2625 0 R (724) 2626 0 R (725) 2627 0 R (729) 2629 0 R (73) 2064 0 R (730) 1399 0 R (732) 2630 0 R (733) 2631 0 R (734) 2632 0 R (735) 2633 0 R (736) 2637 0 R (737) 2638 0 R (738) 2639 0 R (739) 2640 0 R (740) 2641 0 R (741) 2642 0 R (742) 2643 0 R (745) 2644 0 R (746) 2649 0 R (747) 2650 0 R (748) 2651 0 R (749) 2652 0 R (75) 2065 0 R (750) 2653 0 R (753) 2654 0 R (755) 2656 0 R (756) 2657 0 R (757) 2658 0 R (758) 2659 0 R (759) 2660 0 R (76) 2066 0 R (760) 2661 0 R (761) 2662 0 R (764) 2663 0 R (765) 2664 0 R (766) 2665 0 R (767) 2666 0 R (768) 2667 0 R (769) 2668 0 R (77) 2067 0 R (770) 2669 0 R (771) 2670 0 R (772) 2671 0 R (773) 2672 0 R (774) 2673 0 R (775) 2674 0 R (778) 2680 0 R (779) 2681 0 R (78) 2068 0 R (780) 2682 0 R (781) 2683 0 R (782) 2684 0 R (783) 2685 0 R (784) 2686 0 R (785) 2687 0 R (786) 2688 0 R (787) 2689 0 R (788) 2690 0 R (789) 2691 0 R (790) 2692 0 R (791) 2693 0 R (792) 2694 0 R (795) 2695 0 R (796) 2696 0 R (797) 2697 0 R (8.0) 714 0 R (8.32.1) 718 0 R (8.33.1) 722 0 R (8.34.1) 726 0 R (8.35.1) 730 0 R (8.36.1) 734 0 R (8.36.71.2) 738 0 R (8.36.71.44.3) 742 0 R (8.36.71.45.3) 746 0 R (8.36.71.46.3) 750 0 R (8.36.72.2) 754 0 R (8.36.73.2) 758 0 R (8.36.74.2) 762 0 R (8.36.75.2) 766 0 R (8.37.1) 770 0 R (8.37.76.2) 774 0 R (8.37.77.2) 778 0 R (8.38.1) 782 0 R (8.38.78.2) 786 0 R (8.38.78.47.3) 790 0 R (8.38.78.48.3) 794 0 R (8.38.78.49.3) 798 0 R (8.38.78.50.3) 802 0 R (8.38.78.51.3) 806 0 R (8.38.78.52.3) 810 0 R (8.38.78.53.3) 814 0 R (8.39.1) 818 0 R (8.39.79.2) 822 0 R (8.39.80.2) 826 0 R (8.39.81.2) 830 0 R (8.39.82.2) 834 0 R (8.40.1) 838 0 R (8.41.1) 842 0 R (8.41.83.2) 846 0 R (8.41.84.2) 850 0 R (8.41.85.2) 854 0 R (8.41.86.2) 858 0 R (8.41.87.2) 862 0 R (8.42.1) 866 0 R (8.42.88.2) 870 0 R (8.42.89.2) 874 0 R (8.42.89.54.3) 878 0 R (8.42.89.55.3) 882 0 R (8.43.1) 886 0 R (8.44.1) 890 0 R (8.44.90.2) 894 0 R (8.44.91.2) 898 0 R (8.44.92.2) 902 0 R (8.44.93.2) 906 0 R (80) 2069 0 R (800) 2698 0 R (801) 2699 0 R (804) 2700 0 R (805) 2701 0 R (806) 2702 0 R (807) 2703 0 R (808) 2679 0 R (81) 2070 0 R (811) 2708 0 R (814) 2711 0 R (815) 2712 0 R (816) 2713 0 R (817) 2714 0 R (818) 2715 0 R (819) 2716 0 R (82) 2071 0 R (820) 2717 0 R (821) 2718 0 R (822) 2719 0 R (823) 2720 0 R (824) 2721 0 R (825) 2722 0 R (826) 2723 0 R (827) 2724 0 R (828) 2725 0 R (829) 2726 0 R (83) 2072 0 R (830) 2727 0 R (833) 2733 0 R (836) 2736 0 R (837) 2737 0 R (838) 2738 0 R (839) 2739 0 R (840) 2740 0 R (841) 2741 0 R (842) 2742 0 R (843) 2743 0 R (846) 2744 0 R (85) 2073 0 R (850) 2745 0 R (853) 2746 0 R (854) 2747 0 R (855) 2748 0 R (859) 2750 0 R (86) 2074 0 R (860) 2751 0 R (861) 2752 0 R (862) 2753 0 R (863) 2754 0 R (864) 2755 0 R (865) 2761 0 R (867) 2763 0 R (868) 2764 0 R (869) 2765 0 R (87) 2075 0 R (870) 2766 0 R (871) 2767 0 R (872) 2768 0 R (873) 2769 0 R (874) 2770 0 R (875) 2771 0 R (876) 2772 0 R (877) 2773 0 R (878) 2774 0 R (88) 2076 0 R (882) 2778 0 R (883) 2779 0 R (885) 2780 0 R (887) 2781 0 R (890) 2782 0 R (891) 2783 0 R (892) 2784 0 R (895) 1513 0 R (897) 2785 0 R (899) 1514 0 R (9.0) 910 0 R (9.45.1) 914 0 R (9.46.1) 918 0 R (9.47.1) 922 0 R (9.47.94.2) 926 0 R (9.47.95.2) 930 0 R (9.47.96.2) 934 0 R (9.47.97.2) 938 0 R (9.47.98.2) 942 0 R (9.47.99.2) 946 0 R (9.48.1) 950 0 R (9.49.1) 954 0 R (90) 2077 0 R (901) 2792 0 R (902) 2793 0 R (903) 2794 0 R (904) 2795 0 R (905) 2796 0 R (906) 2797 0 R (907) 1515 0 R (909) 2798 0 R (91) 2078 0 R (911) 2799 0 R (912) 2800 0 R (913) 2801 0 R (915) 2802 0 R (916) 2803 0 R (917) 2804 0 R (918) 2805 0 R (92) 2079 0 R (920) 2810 0 R (921) 2811 0 R (922) 2812 0 R (923) 2813 0 R (924) 2814 0 R (925) 2815 0 R (926) 2816 0 R (927) 2817 0 R (928) 2818 0 R (929) 2819 0 R (93) 2080 0 R (930) 2820 0 R (931) 2821 0 R (932) 2822 0 R (933) 2823 0 R (934) 1516 0 R (936) 2824 0 R (937) 2825 0 R (938) 2826 0 R (939) 2827 0 R (940) 2828 0 R (941) 2829 0 R (942) 2830 0 R (943) 2831 0 R (944) 2832 0 R (945) 2833 0 R (946) 2834 0 R (947) 2835 0 R (948) 2836 0 R (949) 2837 0 R (95) 2081 0 R (952) 2843 0 R (953) 2844 0 R (954) 2845 0 R (955) 2846 0 R (956) 1518 0 R (958) 2847 0 R (959) 1519 0 R (96) 2082 0 R (961) 2848 0 R (962) 2849 0 R (963) 2850 0 R (964) 2851 0 R (965) 2852 0 R (966) 2853 0 R (967) 2854 0 R (968) 1520 0 R (97) 2083 0 R (970) 2855 0 R (971) 2856 0 R (972) 2857 0 R (974) 2859 0 R (975) 2860 0 R (976) 2861 0 R (977) 2862 0 R (978) 2863 0 R (98) 2084 0 R (981) 2869 0 R (982) 2870 0 R (983) 2871 0 R (984) 2872 0 R (985) 2873 0 R (986) 2874 0 R (987) 2842 0 R (99) 2085 0 R (990) 2875 0 R (991) 2876 0 R (992) 2877 0 R (993) 2878 0 R (994) 2879 0 R (997) 2880 0 R (998) 2881 0 R (999) 2882 0 R (Doc-Start) 1246 0 R (about) 1359 0 R (accountpreferences) 1840 0 R (add-custom-fields) 1679 0 R (admin-usermatching) 1548 0 R (administration) 1531 0 R (apache-addtype) 1402 0 R (attachments) 1821 0 R (boolean) 1810 0 R (bug_page) 1807 0 R (bug_status_workflow) 1685 0 R (bugreports) 1818 0 R (bzldap) 1542 0 R (bzradius) 1543 0 R (casesensitivity) 1815 0 R (charts) 1941 0 R (charts-new-series) 1943 0 R (classifications) 1655 0 R (cloningbugs) 1820 0 R (cmdline) 1972 0 R (cmdline-bugmail) 1973 0 R (comment-wrapping) 1833 0 R (commenting) 1832 0 R (components) 1662 0 R (comps-vers-miles-products) 1659 0 R (configuration) 1386 0 R (conventions) 1364 0 R (copyright) 1360 0 R (create-groups) 1689 0 R (create-product) 1657 0 R (createnewusers) 1651 0 R (credits) 1363 0 R (cust-change-permissions) 1960 0 R (cust-skins) 1952 0 R (cust-templates) 1953 0 R (custom-fields) 1678 0 R (customization) 1950 0 R (database-engine) 1388 0 R (database-schema) 1389 0 R (defaultuser) 1648 0 R (delete-custom-fields) 1681 0 R (dependencytree) 1834 0 R (disclaimer) 1361 0 R (edit-custom-fields) 1680 0 R (edit-groups) 1690 0 R (edit-products) 1658 0 R (edit-values) 1682 0 R (edit-values-delete) 1684 0 R (edit-values-list) 1683 0 R (emailpreferences) 1838 0 R (extensions) 1951 0 R (extraconfig) 1398 0 R (fillingbugs) 1819 0 R (flag-askto) 1669 0 R (flag-type-attachment) 1671 0 R (flag-type-bug) 1672 0 R (flag-types) 1670 0 R (flag-values) 1668 0 R (flags) 1944 0 R (flags-about) 1667 0 R (flags-admin) 1673 0 R (flags-create) 1675 0 R (flags-create-field-active) 3734 0 R (flags-create-field-category) 3698 0 R (flags-create-field-cclist) 3758 0 R (flags-create-field-description) 3694 0 R (flags-create-field-multiplicable) 3753 0 R (flags-create-field-name) 3688 0 R (flags-create-field-requestable) 3743 0 R (flags-create-field-sortkey) 3730 0 R (flags-create-field-specific) 3750 0 R (flags-create-grant-group) 3760 0 R (flags-create-request-group) 3765 0 R (flags-delete) 1676 0 R (flags-edit) 1674 0 R (flags-overview) 1665 0 R (flags-simpleexample) 1666 0 R (general-advice) 1963 0 R (generalpreferences) 1837 0 R (gfdl) 1978 0 R (gfdl-0) 1979 0 R (gfdl-1) 1980 0 R (gfdl-10) 2007 0 R (gfdl-2) 1981 0 R (gfdl-3) 1982 0 R (gfdl-4) 1983 0 R (gfdl-5) 1984 0 R (gfdl-6) 2003 0 R (gfdl-7) 2004 0 R (gfdl-8) 2005 0 R (gfdl-9) 2006 0 R (gfdl-howto) 2008 0 R (gloss-a) 5106 0 R (gloss-apache) 5107 0 R (gloss-b) 5146 0 R (gloss-bugzilla) 2114 0 R (gloss-c) 5162 0 R (gloss-cgi) 2203 0 R (gloss-component) 5167 0 R (gloss-contrib) 3174 0 R (gloss-cpan) 2787 0 R (gloss-d) 5187 0 R (gloss-daemon) 4004 0 R (gloss-dos) 5192 0 R (gloss-g) 5195 0 R (gloss-groups) 5196 0 R (gloss-htaccess) 4078 0 R (gloss-j) 5202 0 R (gloss-javascript) 5203 0 R (gloss-m) 5183 0 R (gloss-mta) 5210 0 R (gloss-mysql) 5218 0 R (gloss-p) 5237 0 R (gloss-ppm) 2728 0 R (gloss-product) 3400 0 R (gloss-q) 5252 0 R (gloss-r) 5261 0 R (gloss-rdbms) 5243 0 R (gloss-regexp) 5264 0 R (gloss-s) 5268 0 R (gloss-service) 4005 0 R (gloss-t) 5290 0 R (gloss-target-milestone) 5291 0 R (gloss-tcl) 5295 0 R (gloss-z) 5298 0 R (gloss-zarro) 5299 0 R (glossary) 2009 0 R (group-control-examples) 1661 0 R (groups) 1688 0 R (hintsandtips) 1830 0 R (http) 1394 0 R (http-apache) 1395 0 R (http-apache-mod_cgi) 2500 0 R (http-apache-mod_perl) 2521 0 R (http-iis) 1396 0 R (impersonatingusers) 1654 0 R (index) 1247 0 R (individual-buglists) 1817 0 R (install-MTA) 1384 0 R (install-bzfiles) 1373 0 R (install-config-bugzilla) 1397 0 R (install-database) 1368 0 R (install-modules-chart-lines) 1378 0 R (install-modules-dbd-mysql) 1375 0 R (install-modules-gd) 1377 0 R (install-modules-gd-graph) 1379 0 R (install-modules-gd-text) 1380 0 R (install-modules-patchreader) 1383 0 R (install-modules-soap-lite) 1382 0 R (install-modules-template) 1376 0 R (install-modules-xml-twig) 1381 0 R (install-mysql) 1369 0 R (install-oracle) 1371 0 R (install-perl) 1367 0 R (install-perlmodules) 1374 0 R (install-perlmodules-manual) 1974 0 R (install-perlmodules-nonroot) 1517 0 R (install-pg) 1370 0 R (install-setupdatabase-adduser) 2394 0 R (install-webserver) 1372 0 R (installation) 1366 0 R (installation-whining) 1401 0 R (installation-whining-cron) 1400 0 R (installing-bugzilla) 1365 0 R (integration) 1961 0 R (keywords) 1677 0 R (lifecycle) 1808 0 R (lifecycle-image) 2016 0 R (list) 1816 0 R (localconfig) 1387 0 R (macosx-libraries) 1510 0 R (macosx-sendmail) 1509 0 R (manageusers) 1649 0 R (milestones) 1664 0 R (modifyusers) 1652 0 R (modules-manual-download) 1976 0 R (modules-manual-instructions) 1975 0 R (modules-manual-optional) 1977 0 R (multiple-bz-dbs) 1403 0 R (multiplecharts) 1813 0 R (myaccount) 1806 0 R (mysql) 1390 0 R (mysql-max-allowed-packet) 2378 0 R (negation) 1812 0 R (newversions) 1362 0 R (nonroot) 1512 0 R (oracle) 1392 0 R (os-linux) 1511 0 R (os-macosx) 1508 0 R (os-specific) 1502 0 R (os-win32) 1503 0 R (page.1) 1245 0 R (page.10) 2320 0 R (page.100) 4999 0 R (page.101) 5004 0 R (page.102) 5020 0 R (page.103) 5031 0 R (page.104) 5068 0 R (page.105) 5080 0 R (page.106) 5093 0 R (page.107) 5100 0 R (page.108) 5150 0 R (page.109) 5182 0 R (page.11) 2353 0 R (page.110) 5209 0 R (page.111) 5247 0 R (page.112) 5275 0 R (page.12) 2386 0 R (page.13) 2428 0 R (page.14) 2465 0 R (page.15) 2489 0 R (page.16) 2525 0 R (page.17) 2573 0 R (page.18) 2611 0 R (page.19) 2648 0 R (page.2) 1255 0 R (page.20) 2678 0 R (page.21) 2707 0 R (page.22) 2732 0 R (page.23) 2760 0 R (page.24) 2791 0 R (page.25) 2809 0 R (page.26) 2841 0 R (page.27) 2867 0 R (page.28) 2899 0 R (page.29) 2933 0 R (page.3) 1262 0 R (page.30) 2967 0 R (page.31) 3000 0 R (page.32) 3026 0 R (page.33) 3064 0 R (page.34) 3106 0 R (page.35) 3130 0 R (page.36) 3150 0 R (page.37) 3178 0 R (page.38) 3221 0 R (page.39) 3257 0 R (page.4) 1407 0 R (page.40) 3277 0 R (page.41) 3292 0 R (page.42) 3335 0 R (page.43) 3380 0 R (page.44) 3404 0 R (page.45) 3453 0 R (page.46) 3479 0 R (page.47) 3511 0 R (page.48) 3534 0 R (page.49) 3571 0 R (page.5) 1552 0 R (page.50) 3615 0 R (page.51) 3655 0 R (page.52) 3692 0 R (page.53) 3739 0 R (page.54) 3771 0 R (page.55) 3791 0 R (page.56) 3825 0 R (page.57) 3845 0 R (page.58) 3873 0 R (page.59) 3909 0 R (page.6) 1697 0 R (page.60) 3945 0 R (page.61) 3974 0 R (page.62) 3979 0 R (page.63) 4009 0 R (page.64) 4082 0 R (page.65) 4099 0 R (page.66) 4127 0 R (page.67) 4178 0 R (page.68) 4212 0 R (page.69) 4223 0 R (page.7) 1845 0 R (page.70) 4257 0 R (page.71) 4279 0 R (page.72) 4305 0 R (page.73) 4328 0 R (page.74) 4347 0 R (page.75) 4360 0 R (page.76) 4375 0 R (page.77) 4413 0 R (page.78) 4453 0 R (page.79) 4492 0 R (page.8) 1988 0 R (page.80) 4522 0 R (page.81) 4538 0 R (page.82) 4554 0 R (page.83) 4573 0 R (page.84) 4591 0 R (page.85) 4598 0 R (page.86) 4626 0 R (page.87) 4657 0 R (page.88) 4685 0 R (page.89) 4722 0 R (page.9) 2013 0 R (page.90) 4747 0 R (page.91) 4765 0 R (page.92) 4775 0 R (page.93) 4802 0 R (page.94) 4827 0 R (page.95) 4855 0 R (page.96) 4864 0 R (page.97) 4908 0 R (page.98) 4938 0 R (page.99) 4968 0 R (param-LDAPBaseDN) 3203 0 R (param-LDAPbinddn) 3198 0 R (param-LDAPmailattribute) 3213 0 R (param-LDAPserver) 3185 0 R (param-LDAPuidattribute) 3208 0 R (param-RADIUS_email_suffix) 3240 0 R (param-RADIUS_secret) 3237 0 R (param-RADIUS_server) 3234 0 R (param-admin-policies) 1534 0 R (param-attachments) 1536 0 R (param-bug-change-policies) 1537 0 R (param-bugfields) 1538 0 R (param-bugmoving) 1539 0 R (param-dependency-graphs) 1540 0 R (param-email) 1544 0 R (param-group-security) 1541 0 R (param-patchviewer) 1545 0 R (param-querydefaults) 1546 0 R (param-requiredsettings) 1533 0 R (param-shadowdatabase) 1547 0 R (param-user-authentication) 1535 0 R (param-user_verify_class_for_ldap) 3179 0 R (param-user_verify_class_for_radius) 3228 0 R (parameters) 1532 0 R (paranoid-security) 1967 0 R (patches) 1971 0 R (patchviewer) 1822 0 R (patchviewer_bonsai_lxr) 1828 0 R (patchviewer_collapse) 1826 0 R (patchviewer_context) 1825 0 R (patchviewer_diff) 1824 0 R (patchviewer_link) 1827 0 R (patchviewer_unified_diff) 1829 0 R (patchviewer_view) 1823 0 R (permissionsettings) 1841 0 R (postgresql) 1391 0 R (product-group-controls) 1660 0 R (products) 1656 0 R (pronouns) 1811 0 R (query) 1809 0 R (quicksearch) 1814 0 R (quips) 1687 0 R (reporting) 1939 0 R (reports) 1940 0 R (sanitycheck) 1693 0 R (savedsearches) 1839 0 R (security) 1795 0 R (security-bugzilla) 1802 0 R (security-bugzilla-charset) 1803 0 R (security-os) 1796 0 R (security-os-accounts) 1798 0 R (security-os-chroot) 1799 0 R (security-os-ports) 1797 0 R (security-webserver) 1800 0 R (security-webserver-access) 1801 0 R (self-registration) 3293 0 R (suexec) 1521 0 R (table.1) 2107 0 R (table.2) 3801 0 R (table.3) 4139 0 R (table.4) 4192 0 R (table.5) 4274 0 R (table.6) 4342 0 R (table.7) 4364 0 R (template-directory) 1954 0 R (template-edit) 1956 0 R (template-formats) 1957 0 R (template-http-accept) 1959 0 R (template-method) 1955 0 R (template-specific) 1958 0 R (timetracking) 1835 0 R (trbl-dbdSponge) 1966 0 R (trbl-index) 1969 0 R (trbl-passwd-encryption) 1970 0 R (trbl-perlmodule) 1965 0 R (trbl-relogin-everyone) 1968 0 R (trbl-relogin-everyone-restrict) 4838 0 R (trbl-relogin-everyone-share) 4832 0 R (trbl-testserver) 1964 0 R (troubleshooting) 1962 0 R (upgrade) 1522 0 R (upgrade-before) 1523 0 R (upgrade-completion) 1529 0 R (upgrade-cvs) 1526 0 R (upgrade-files) 1524 0 R (upgrade-modified) 1525 0 R (upgrade-notifications) 1530 0 R (upgrade-patches) 1528 0 R (upgrade-tarball) 1527 0 R (user-account-creation) 3299 0 R (user-account-deletion) 1653 0 R (user-account-search) 1650 0 R (useradmin) 1647 0 R (userpreferences) 1836 0 R (users-and-groups) 1691 0 R (using) 1804 0 R (using-intro) 1805 0 R (using-mod_perl-with-bugzilla) 1385 0 R (versions) 1663 0 R (voting) 1686 0 R (whining) 1945 0 R (whining-overview) 1946 0 R (whining-query) 1948 0 R (whining-schedule) 1947 0 R (win32-email) 1507 0 R (win32-http) 1506 0 R (win32-perl) 1504 0 R (win32-perl-modules) 1505 0 R] /Limits [(1.0) (win32-perl-modules)] >> endobj -5391 0 obj << -/Kids [5390 0 R] +5326 0 obj << +/Kids [5325 0 R] >> endobj -5392 0 obj << -/Dests 5391 0 R +5327 0 obj << +/Dests 5326 0 R >> endobj -5393 0 obj << +5328 0 obj << /Type /Catalog -/Pages 5388 0 R -/Outlines 5389 0 R -/Names 5392 0 R +/Pages 5323 0 R +/Outlines 5324 0 R +/Names 5327 0 R /PageMode /UseOutlines /OpenAction 1241 0 R >> endobj -5394 0 obj << +5329 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20091118182338-08'00') +/CreationDate (D:20100131173839-08'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref -0 5395 +0 5330 0000000000 65535 f 0000000009 00000 n -0000029229 00000 n -0001179771 00000 n +0000029215 00000 n +0001169087 00000 n 0000000048 00000 n 0000000110 00000 n -0000103832 00000 n -0001179686 00000 n +0000103821 00000 n +0001169002 00000 n 0000000149 00000 n 0000000184 00000 n -0000417243 00000 n -0001179599 00000 n +0000417579 00000 n +0001168915 00000 n 0000000223 00000 n 0000000257 00000 n -0000420361 00000 n -0001179473 00000 n +0000420697 00000 n +0001168789 00000 n 0000000297 00000 n 0000000343 00000 n -0000420487 00000 n -0001179399 00000 n +0000420823 00000 n +0001168715 00000 n 0000000385 00000 n 0000000430 00000 n -0000420871 00000 n -0001179312 00000 n +0000421207 00000 n +0001168628 00000 n 0000000472 00000 n 0000000506 00000 n -0000421188 00000 n -0001179225 00000 n +0000421524 00000 n +0001168541 00000 n 0000000548 00000 n 0000000584 00000 n -0000425288 00000 n -0001179138 00000 n +0000425624 00000 n +0001168454 00000 n 0000000626 00000 n 0000000657 00000 n -0000430174 00000 n -0001179064 00000 n +0000430510 00000 n +0001168380 00000 n 0000000699 00000 n 0000000743 00000 n -0000434637 00000 n -0001178936 00000 n +0000434973 00000 n +0001168252 00000 n 0000000783 00000 n 0000000832 00000 n -0000434764 00000 n -0001178823 00000 n +0000435100 00000 n +0001168139 00000 n 0000000874 00000 n 0000000910 00000 n -0000435980 00000 n -0001178749 00000 n +0000436316 00000 n +0001168065 00000 n 0000000954 00000 n 0000000984 00000 n -0000438236 00000 n -0001178625 00000 n +0000438572 00000 n +0001167941 00000 n 0000001028 00000 n 0000001069 00000 n -0000438426 00000 n -0001178551 00000 n +0000438762 00000 n +0001167867 00000 n 0000001115 00000 n 0000001148 00000 n -0000439136 00000 n -0001178464 00000 n +0000439472 00000 n +0001167780 00000 n 0000001194 00000 n 0000001232 00000 n -0000439586 00000 n -0001178390 00000 n +0000439922 00000 n +0001167706 00000 n 0000001278 00000 n 0000001312 00000 n -0000443312 00000 n -0001178303 00000 n +0000443648 00000 n +0001167619 00000 n 0000001356 00000 n 0000001392 00000 n -0000443764 00000 n -0001178216 00000 n +0000444100 00000 n +0001167532 00000 n 0000001436 00000 n 0000001470 00000 n -0000444606 00000 n -0001178090 00000 n +0000444942 00000 n +0001167406 00000 n 0000001514 00000 n 0000001552 00000 n -0000457091 00000 n -0001178016 00000 n +0000457428 00000 n +0001167332 00000 n 0000001598 00000 n 0000001636 00000 n -0000457347 00000 n -0001177929 00000 n +0000457684 00000 n +0001167245 00000 n 0000001682 00000 n 0000001735 00000 n -0000457538 00000 n -0001177842 00000 n +0000457875 00000 n +0001167158 00000 n 0000001781 00000 n 0000001820 00000 n -0000460689 00000 n -0001177755 00000 n +0000461026 00000 n +0001167071 00000 n 0000001866 00000 n 0000001914 00000 n -0000460881 00000 n -0001177668 00000 n +0000461218 00000 n +0001166984 00000 n 0000001960 00000 n 0000002005 00000 n -0000461073 00000 n -0001177579 00000 n +0000461410 00000 n +0001166895 00000 n 0000002051 00000 n 0000002096 00000 n -0000461265 00000 n -0001177488 00000 n +0000461602 00000 n +0001166804 00000 n 0000002144 00000 n 0000002190 00000 n -0000461524 00000 n -0001177396 00000 n +0000461861 00000 n +0001166712 00000 n 0000002238 00000 n 0000002290 00000 n -0000461717 00000 n -0001177318 00000 n +0000462054 00000 n +0001166634 00000 n 0000002338 00000 n 0000002388 00000 n -0000461910 00000 n -0001177227 00000 n +0000462247 00000 n +0001166543 00000 n 0000002433 00000 n 0000002487 00000 n -0000465784 00000 n -0001177149 00000 n +0000466121 00000 n +0001166465 00000 n 0000002532 00000 n 0000002589 00000 n -0000466369 00000 n -0001177019 00000 n +0000466706 00000 n +0001166335 00000 n 0000002632 00000 n 0000002670 00000 n -0000466627 00000 n -0001176940 00000 n +0000466964 00000 n +0001166256 00000 n 0000002715 00000 n 0000002753 00000 n -0000472001 00000 n -0001176808 00000 n +0000472338 00000 n +0001166124 00000 n 0000002798 00000 n 0000002840 00000 n -0000472194 00000 n -0001176729 00000 n +0000472531 00000 n +0001166045 00000 n 0000002888 00000 n 0000002941 00000 n -0000472453 00000 n -0001176597 00000 n +0000472790 00000 n +0001165913 00000 n 0000002989 00000 n 0000003023 00000 n -0000473236 00000 n -0001176518 00000 n +0000473573 00000 n +0001165834 00000 n 0000003073 00000 n 0000003145 00000 n -0000476494 00000 n -0001176425 00000 n +0000476831 00000 n +0001165741 00000 n 0000003195 00000 n 0000003263 00000 n -0000477011 00000 n -0001176332 00000 n +0000477348 00000 n +0001165648 00000 n 0000003313 00000 n 0000003363 00000 n -0000478184 00000 n -0001176253 00000 n +0000478521 00000 n +0001165569 00000 n 0000003413 00000 n 0000003487 00000 n -0000481759 00000 n -0001176121 00000 n +0000482096 00000 n +0001165437 00000 n 0000003535 00000 n 0000003574 00000 n -0000481887 00000 n -0001176042 00000 n +0000482224 00000 n +0001165358 00000 n 0000003624 00000 n 0000003679 00000 n -0000482859 00000 n -0001175963 00000 n +0000483196 00000 n +0001165279 00000 n 0000003729 00000 n 0000003780 00000 n -0000483768 00000 n -0001175845 00000 n +0000484105 00000 n +0001165161 00000 n 0000003828 00000 n 0000003863 00000 n -0000483896 00000 n -0001175766 00000 n +0000484233 00000 n +0001165082 00000 n 0000003913 00000 n 0000003967 00000 n -0000486829 00000 n -0001175673 00000 n +0000487166 00000 n +0001164989 00000 n 0000004017 00000 n 0000004068 00000 n -0000487349 00000 n -0001175594 00000 n +0000487686 00000 n +0001164910 00000 n 0000004118 00000 n 0000004173 00000 n -0000487736 00000 n -0001175501 00000 n +0000488073 00000 n +0001164817 00000 n 0000004219 00000 n 0000004259 00000 n -0000491949 00000 n -0001175369 00000 n +0000492286 00000 n +0001164685 00000 n 0000004305 00000 n 0000004342 00000 n -0000492271 00000 n -0001175251 00000 n +0000492608 00000 n +0001164567 00000 n 0000004391 00000 n 0000004441 00000 n -0000492464 00000 n -0001175172 00000 n +0000492801 00000 n +0001164488 00000 n 0000004493 00000 n 0000004548 00000 n -0000497757 00000 n -0001175093 00000 n +0000498094 00000 n +0001164409 00000 n 0000004600 00000 n 0000004656 00000 n -0000503933 00000 n -0001175014 00000 n +0000504270 00000 n +0001164330 00000 n 0000004705 00000 n 0000004773 00000 n -0000509160 00000 n -0001174935 00000 n +0000509497 00000 n +0001164251 00000 n 0000004819 00000 n 0000004854 00000 n -0000510197 00000 n -0001174804 00000 n +0000510534 00000 n +0001164120 00000 n 0000004897 00000 n 0000004955 00000 n -0000510390 00000 n -0001174725 00000 n +0000510727 00000 n +0001164041 00000 n 0000005001 00000 n 0000005038 00000 n -0000511225 00000 n -0001174632 00000 n +0000511562 00000 n +0001163948 00000 n 0000005084 00000 n 0000005127 00000 n -0000514320 00000 n -0001174539 00000 n +0000514657 00000 n +0001163855 00000 n 0000005173 00000 n 0000005207 00000 n -0000514963 00000 n -0001174460 00000 n +0000515300 00000 n +0001163776 00000 n 0000005253 00000 n 0000005330 00000 n -0000519008 00000 n -0001174368 00000 n +0000519345 00000 n +0001163684 00000 n 0000005373 00000 n 0000005452 00000 n -0000520115 00000 n -0001174237 00000 n +0000520452 00000 n +0001163553 00000 n 0000005496 00000 n 0000005550 00000 n -0000520436 00000 n -0001174119 00000 n +0000520773 00000 n +0001163435 00000 n 0000005597 00000 n 0000005641 00000 n -0000520694 00000 n -0001174040 00000 n +0000521031 00000 n +0001163356 00000 n 0000005691 00000 n 0000005730 00000 n -0000523637 00000 n -0001173947 00000 n +0000523974 00000 n +0001163263 00000 n 0000005780 00000 n 0000005830 00000 n -0000528173 00000 n -0001173854 00000 n +0000528510 00000 n +0001163170 00000 n 0000005880 00000 n 0000005930 00000 n -0000528883 00000 n -0001173775 00000 n +0000529220 00000 n +0001163091 00000 n 0000005980 00000 n 0000006022 00000 n -0000529076 00000 n -0001173643 00000 n +0000529413 00000 n +0001162959 00000 n 0000006069 00000 n 0000006104 00000 n -0000529269 00000 n -0001173564 00000 n +0000529606 00000 n +0001162880 00000 n 0000006154 00000 n 0000006191 00000 n -0000529592 00000 n -0001173485 00000 n +0000529929 00000 n +0001162801 00000 n 0000006241 00000 n 0000006309 00000 n -0000534625 00000 n -0001173406 00000 n +0000534962 00000 n +0001162722 00000 n 0000006356 00000 n 0000006402 00000 n -0000534947 00000 n -0001173275 00000 n +0000535284 00000 n +0001162591 00000 n 0000006446 00000 n 0000006506 00000 n -0000535076 00000 n -0001173196 00000 n +0000535413 00000 n +0001162512 00000 n 0000006553 00000 n 0000006592 00000 n -0000537375 00000 n -0001173064 00000 n +0000537712 00000 n +0001162380 00000 n 0000006639 00000 n 0000006671 00000 n -0000537893 00000 n -0001172960 00000 n +0000538230 00000 n +0001162276 00000 n 0000006721 00000 n 0000006774 00000 n -0000538022 00000 n -0001172881 00000 n +0000538359 00000 n +0001162197 00000 n 0000006827 00000 n 0000006889 00000 n -0000538278 00000 n -0001172788 00000 n +0000538615 00000 n +0001162104 00000 n 0000006942 00000 n 0000006996 00000 n -0000540712 00000 n -0001172709 00000 n +0000541049 00000 n +0001162025 00000 n 0000007049 00000 n 0000007099 00000 n -0000541749 00000 n -0001172616 00000 n +0000542086 00000 n +0001161932 00000 n 0000007146 00000 n 0000007177 00000 n -0000546020 00000 n -0001172523 00000 n +0000546357 00000 n +0001161839 00000 n 0000007224 00000 n 0000007263 00000 n -0000546409 00000 n -0001172391 00000 n +0000546746 00000 n +0001161707 00000 n 0000007310 00000 n 0000007348 00000 n -0000546602 00000 n -0001172326 00000 n +0000546939 00000 n +0001161642 00000 n 0000007398 00000 n 0000007452 00000 n -0000547182 00000 n -0001172208 00000 n +0000547519 00000 n +0001161524 00000 n 0000007499 00000 n 0000007534 00000 n -0000551472 00000 n -0001172143 00000 n +0000551809 00000 n +0001161459 00000 n 0000007584 00000 n 0000007637 00000 n -0000551991 00000 n -0001172026 00000 n +0000552328 00000 n +0001161342 00000 n 0000007681 00000 n 0000007731 00000 n -0000552443 00000 n -0001171947 00000 n +0000552780 00000 n +0001161263 00000 n 0000007778 00000 n 0000007823 00000 n -0000557623 00000 n -0001171815 00000 n +0000557961 00000 n +0001161131 00000 n 0000007870 00000 n 0000007921 00000 n -0000558588 00000 n -0001171736 00000 n +0000558926 00000 n +0001161052 00000 n 0000007971 00000 n 0000008034 00000 n -0000561286 00000 n -0001171643 00000 n +0000561624 00000 n +0001160959 00000 n 0000008084 00000 n 0000008132 00000 n -0000562196 00000 n -0001171550 00000 n +0000562534 00000 n +0001160866 00000 n 0000008182 00000 n 0000008238 00000 n -0000566782 00000 n -0001171471 00000 n +0000567120 00000 n +0001160787 00000 n 0000008288 00000 n 0000008340 00000 n -0000567817 00000 n -0001171378 00000 n +0000568155 00000 n +0001160694 00000 n 0000008387 00000 n 0000008437 00000 n -0000572345 00000 n -0001171299 00000 n +0000572683 00000 n +0001160615 00000 n 0000008484 00000 n 0000008550 00000 n -0000575133 00000 n -0001171166 00000 n +0000575471 00000 n +0001160482 00000 n 0000008591 00000 n 0000008644 00000 n -0000575261 00000 n -0001171047 00000 n +0000575599 00000 n +0001160363 00000 n 0000008688 00000 n 0000008735 00000 n -0000575452 00000 n -0001170968 00000 n +0000575790 00000 n +0001160284 00000 n 0000008782 00000 n 0000008826 00000 n -0000585768 00000 n -0001170875 00000 n +0000586106 00000 n +0001160191 00000 n 0000008873 00000 n 0000008923 00000 n -0000585961 00000 n -0001170782 00000 n +0000586299 00000 n +0001160098 00000 n 0000008970 00000 n 0000009016 00000 n -0000586735 00000 n -0001170689 00000 n +0000587073 00000 n +0001160005 00000 n 0000009063 00000 n 0000009101 00000 n -0000586928 00000 n -0001170596 00000 n +0000587266 00000 n +0001159912 00000 n 0000009148 00000 n 0000009194 00000 n -0000590189 00000 n -0001170503 00000 n +0000590527 00000 n +0001159819 00000 n 0000009241 00000 n 0000009278 00000 n -0000590829 00000 n -0001170410 00000 n +0000591167 00000 n +0001159726 00000 n 0000009325 00000 n 0000009362 00000 n -0000591087 00000 n -0001170317 00000 n +0000591425 00000 n +0001159633 00000 n 0000009409 00000 n 0000009453 00000 n -0000595447 00000 n -0001170224 00000 n +0000595785 00000 n +0001159540 00000 n 0000009500 00000 n 0000009541 00000 n -0000596283 00000 n -0001170131 00000 n +0000596621 00000 n +0001159447 00000 n 0000009588 00000 n 0000009635 00000 n -0000604426 00000 n -0001170038 00000 n +0000604764 00000 n +0001159354 00000 n 0000009682 00000 n 0000009731 00000 n -0000605972 00000 n -0001169945 00000 n +0000606310 00000 n +0001159261 00000 n 0000009778 00000 n 0000009811 00000 n -0000610006 00000 n -0001169852 00000 n +0000610344 00000 n +0001159168 00000 n 0000009858 00000 n 0000009898 00000 n -0000610198 00000 n -0001169759 00000 n +0000610536 00000 n +0001159075 00000 n 0000009945 00000 n 0000009987 00000 n -0000610390 00000 n -0001169666 00000 n +0000610728 00000 n +0001158982 00000 n 0000010034 00000 n 0000010077 00000 n -0000613547 00000 n -0001169587 00000 n +0000613885 00000 n +0001158903 00000 n 0000010124 00000 n 0000010165 00000 n -0000613740 00000 n -0001169455 00000 n +0000614078 00000 n +0001158771 00000 n 0000010209 00000 n 0000010253 00000 n -0000613869 00000 n -0001169376 00000 n +0000614207 00000 n +0001158692 00000 n 0000010300 00000 n 0000010352 00000 n -0000614190 00000 n -0001169258 00000 n +0000614528 00000 n +0001158574 00000 n 0000010399 00000 n 0000010446 00000 n -0000614318 00000 n -0001169179 00000 n +0000614656 00000 n +0001158495 00000 n 0000010496 00000 n 0000010553 00000 n -0000618138 00000 n -0001169047 00000 n +0000618476 00000 n +0001158363 00000 n 0000010603 00000 n 0000010650 00000 n -0000618267 00000 n -0001168968 00000 n +0000618605 00000 n +0001158284 00000 n 0000010703 00000 n 0000010750 00000 n -0000618655 00000 n -0001168889 00000 n +0000618993 00000 n +0001158205 00000 n 0000010803 00000 n 0000010870 00000 n -0000619495 00000 n -0001168796 00000 n +0000619833 00000 n +0001158112 00000 n 0000010920 00000 n 0000010964 00000 n -0000626970 00000 n -0001168703 00000 n +0000627308 00000 n +0001158019 00000 n 0000011014 00000 n 0000011057 00000 n -0000627228 00000 n -0001168624 00000 n +0000627566 00000 n +0001157940 00000 n 0000011107 00000 n 0000011155 00000 n -0000631117 00000 n -0001168531 00000 n +0000631455 00000 n +0001157847 00000 n 0000011199 00000 n 0000011239 00000 n -0000631630 00000 n -0001168399 00000 n +0000631968 00000 n +0001157715 00000 n 0000011283 00000 n 0000011316 00000 n -0000636365 00000 n -0001168320 00000 n +0000636703 00000 n +0001157636 00000 n 0000011363 00000 n 0000011411 00000 n -0000641175 00000 n -0001168227 00000 n +0000641513 00000 n +0001157543 00000 n 0000011458 00000 n 0000011501 00000 n -0000641368 00000 n -0001168134 00000 n +0000641706 00000 n +0001157450 00000 n 0000011548 00000 n 0000011635 00000 n -0000641751 00000 n -0001168016 00000 n +0000642089 00000 n +0001157332 00000 n 0000011682 00000 n 0000011745 00000 n -0000646787 00000 n -0001167951 00000 n +0000647125 00000 n +0001157267 00000 n 0000011795 00000 n 0000011861 00000 n -0000653521 00000 n -0001167858 00000 n +0000653859 00000 n +0001157174 00000 n 0000011905 00000 n 0000011940 00000 n -0000655011 00000 n -0001167765 00000 n +0000655349 00000 n +0001157081 00000 n 0000011984 00000 n 0000012017 00000 n -0000658334 00000 n -0001167672 00000 n +0000658672 00000 n +0001156988 00000 n 0000012061 00000 n 0000012096 00000 n -0000659295 00000 n -0001167540 00000 n +0000659633 00000 n +0001156856 00000 n 0000012140 00000 n 0000012170 00000 n -0000659680 00000 n -0001167461 00000 n +0000660018 00000 n +0001156777 00000 n 0000012217 00000 n 0000012260 00000 n -0000663847 00000 n -0001167329 00000 n +0000664185 00000 n +0001156645 00000 n 0000012307 00000 n 0000012345 00000 n -0000663976 00000 n -0001167264 00000 n +0000664314 00000 n +0001156580 00000 n 0000012395 00000 n 0000012430 00000 n -0000665265 00000 n -0001167171 00000 n +0000665603 00000 n +0001156487 00000 n 0000012477 00000 n 0000012523 00000 n -0000666112 00000 n -0001167039 00000 n +0000666450 00000 n +0001156355 00000 n 0000012570 00000 n 0000012615 00000 n -0000669003 00000 n -0001166960 00000 n +0000669341 00000 n +0001156276 00000 n 0000012665 00000 n 0000012710 00000 n -0000670235 00000 n -0001166881 00000 n +0000670573 00000 n +0001156197 00000 n 0000012760 00000 n 0000012798 00000 n -0000670689 00000 n -0001166763 00000 n +0000671027 00000 n +0001156079 00000 n 0000012845 00000 n 0000012891 00000 n -0000671143 00000 n -0001166684 00000 n +0000671481 00000 n +0001156000 00000 n 0000012941 00000 n 0000012984 00000 n -0000671402 00000 n -0001166551 00000 n +0000671740 00000 n +0001155867 00000 n 0000013034 00000 n 0000013078 00000 n -0000674637 00000 n -0001166472 00000 n +0000674975 00000 n +0001155788 00000 n 0000013131 00000 n 0000013166 00000 n -0000674829 00000 n -0001166379 00000 n +0000675167 00000 n +0001155695 00000 n 0000013219 00000 n 0000013261 00000 n -0000675154 00000 n -0001166286 00000 n +0000675492 00000 n +0001155602 00000 n 0000013314 00000 n 0000013353 00000 n -0000677300 00000 n -0001166193 00000 n +0000677638 00000 n +0001155509 00000 n 0000013406 00000 n 0000013445 00000 n -0000680056 00000 n -0001166100 00000 n +0000680394 00000 n +0001155416 00000 n 0000013498 00000 n 0000013535 00000 n -0000680315 00000 n -0001166007 00000 n +0000680653 00000 n +0001155323 00000 n 0000013588 00000 n 0000013630 00000 n -0000680838 00000 n -0001165914 00000 n +0000681176 00000 n +0001155230 00000 n 0000013683 00000 n 0000013738 00000 n -0000681094 00000 n -0001165821 00000 n +0000681432 00000 n +0001155137 00000 n 0000013791 00000 n 0000013835 00000 n -0000681485 00000 n -0001165728 00000 n +0000681823 00000 n +0001155044 00000 n 0000013888 00000 n 0000013926 00000 n -0000681678 00000 n -0001165635 00000 n +0000682016 00000 n +0001154951 00000 n 0000013979 00000 n 0000014022 00000 n -0000682068 00000 n -0001165556 00000 n +0000682406 00000 n +0001154872 00000 n 0000014075 00000 n 0000014120 00000 n -0000685274 00000 n -0001165477 00000 n +0000685612 00000 n +0001154793 00000 n 0000014170 00000 n 0000014214 00000 n -0000685795 00000 n -0001165384 00000 n +0000686133 00000 n +0001154700 00000 n 0000014258 00000 n 0000014291 00000 n -0000686115 00000 n -0001165252 00000 n +0000686453 00000 n +0001154568 00000 n 0000014335 00000 n 0000014374 00000 n -0000690235 00000 n -0001165173 00000 n +0000690573 00000 n +0001154489 00000 n 0000014421 00000 n 0000014469 00000 n -0000691788 00000 n -0001165080 00000 n +0000692126 00000 n +0001154396 00000 n 0000014516 00000 n 0000014565 00000 n -0000691979 00000 n -0001165001 00000 n +0000692317 00000 n +0001154317 00000 n 0000014612 00000 n 0000014662 00000 n -0000692172 00000 n -0001164869 00000 n +0000692510 00000 n +0001154185 00000 n 0000014706 00000 n 0000014744 00000 n -0000695006 00000 n -0001164790 00000 n +0000695344 00000 n +0001154106 00000 n 0000014791 00000 n 0000014847 00000 n -0000695329 00000 n -0001164711 00000 n +0000695667 00000 n +0001154027 00000 n 0000014894 00000 n 0000014943 00000 n -0000695904 00000 n -0001164618 00000 n +0000696242 00000 n +0001153934 00000 n 0000014987 00000 n 0000015032 00000 n -0000696161 00000 n -0001164525 00000 n +0000696499 00000 n +0001153841 00000 n 0000015076 00000 n 0000015108 00000 n -0000700507 00000 n -0001164432 00000 n +0000700845 00000 n +0001153748 00000 n 0000015152 00000 n 0000015183 00000 n -0000701020 00000 n -0001164300 00000 n +0000701358 00000 n +0001153616 00000 n 0000015227 00000 n 0000015278 00000 n -0000706559 00000 n -0001164221 00000 n +0000706897 00000 n +0001153537 00000 n 0000015325 00000 n 0000015368 00000 n -0000711204 00000 n -0001164128 00000 n +0000711542 00000 n +0001153444 00000 n 0000015415 00000 n 0000015489 00000 n -0000717216 00000 n -0001164035 00000 n +0000717554 00000 n +0001153351 00000 n 0000015536 00000 n 0000015589 00000 n -0000717858 00000 n -0001163956 00000 n +0000718196 00000 n +0001153272 00000 n 0000015636 00000 n 0000015700 00000 n -0000718051 00000 n -0001163877 00000 n +0000718389 00000 n +0001153193 00000 n 0000015744 00000 n 0000015813 00000 n -0000722790 00000 n -0001163744 00000 n +0000723128 00000 n +0001153060 00000 n 0000015854 00000 n 0000015902 00000 n -0000723110 00000 n -0001163626 00000 n +0000723448 00000 n +0001152942 00000 n 0000015946 00000 n 0000015987 00000 n -0000723239 00000 n -0001163547 00000 n +0000723577 00000 n +0001152863 00000 n 0000016034 00000 n 0000016073 00000 n -0000723432 00000 n -0001163454 00000 n +0000723770 00000 n +0001152770 00000 n 0000016120 00000 n 0000016167 00000 n -0000724604 00000 n -0001163375 00000 n +0000724942 00000 n +0001152691 00000 n 0000016214 00000 n 0000016256 00000 n -0000727728 00000 n -0001163243 00000 n +0000728066 00000 n +0001152559 00000 n 0000016300 00000 n 0000016335 00000 n -0000727857 00000 n -0001163178 00000 n +0000728195 00000 n +0001152494 00000 n 0000016382 00000 n 0000016464 00000 n -0000734523 00000 n -0001163060 00000 n +0000734861 00000 n +0001152376 00000 n 0000016508 00000 n 0000016541 00000 n -0000734652 00000 n -0001162995 00000 n +0000734990 00000 n +0001152311 00000 n 0000016588 00000 n 0000016659 00000 n -0000737963 00000 n -0001162861 00000 n +0000738301 00000 n +0001152177 00000 n 0000016700 00000 n 0000016745 00000 n -0000738091 00000 n -0001162782 00000 n +0000738429 00000 n +0001152098 00000 n 0000016789 00000 n 0000016826 00000 n -0000738480 00000 n -0001162689 00000 n +0000738818 00000 n +0001152005 00000 n 0000016870 00000 n 0000016920 00000 n -0000743819 00000 n -0001162596 00000 n +0000744157 00000 n +0001151912 00000 n 0000016964 00000 n 0000017005 00000 n -0000751243 00000 n -0001162503 00000 n +0000751581 00000 n +0001151819 00000 n 0000017049 00000 n 0000017093 00000 n -0000802720 00000 n -0001162371 00000 n +0000803058 00000 n +0001151687 00000 n 0000017137 00000 n 0000017180 00000 n -0000805806 00000 n -0001162253 00000 n +0000806144 00000 n +0001151569 00000 n 0000017227 00000 n 0000017268 00000 n -0000806970 00000 n -0001162174 00000 n +0000807308 00000 n +0001151490 00000 n 0000017318 00000 n 0000017367 00000 n -0000807227 00000 n -0001162081 00000 n +0000807565 00000 n +0001151397 00000 n 0000017417 00000 n 0000017454 00000 n -0000811123 00000 n -0001162002 00000 n +0000811461 00000 n +0001151318 00000 n 0000017504 00000 n 0000017548 00000 n -0000811639 00000 n -0001161909 00000 n +0000811977 00000 n +0001151225 00000 n 0000017595 00000 n 0000017633 00000 n -0000812094 00000 n -0001161816 00000 n +0000812432 00000 n +0001151132 00000 n 0000017680 00000 n 0000017735 00000 n -0000812286 00000 n -0001161723 00000 n +0000812624 00000 n +0001151039 00000 n 0000017782 00000 n 0000017818 00000 n -0000816177 00000 n -0001161644 00000 n +0000816515 00000 n +0001150960 00000 n 0000017865 00000 n 0000017925 00000 n -0000816694 00000 n -0001161512 00000 n +0000817032 00000 n +0001150828 00000 n 0000017969 00000 n 0000018005 00000 n -0000816823 00000 n -0001161433 00000 n +0000817161 00000 n +0001150749 00000 n 0000018052 00000 n 0000018098 00000 n -0000822190 00000 n -0001161354 00000 n +0000822528 00000 n +0001150670 00000 n 0000018145 00000 n 0000018193 00000 n -0000825357 00000 n -0001161222 00000 n +0000825695 00000 n +0001150538 00000 n 0000018237 00000 n 0000018273 00000 n -0000826130 00000 n -0001161118 00000 n +0000826468 00000 n +0001150434 00000 n 0000018320 00000 n 0000018359 00000 n -0000826514 00000 n -0001161039 00000 n +0000826852 00000 n +0001150355 00000 n 0000018409 00000 n 0000018469 00000 n -0000829063 00000 n -0001160946 00000 n +0000829401 00000 n +0001150262 00000 n 0000018519 00000 n 0000018589 00000 n -0000829256 00000 n -0001160853 00000 n +0000829594 00000 n +0001150169 00000 n 0000018639 00000 n 0000018699 00000 n -0000829447 00000 n -0001160760 00000 n +0000829785 00000 n +0001150076 00000 n 0000018749 00000 n 0000018822 00000 n -0000829639 00000 n -0001160667 00000 n +0000829977 00000 n +0001149983 00000 n 0000018872 00000 n 0000018932 00000 n -0000829832 00000 n -0001160574 00000 n +0000830170 00000 n +0001149890 00000 n 0000018982 00000 n 0000019034 00000 n -0000830089 00000 n -0001160495 00000 n +0000830427 00000 n +0001149811 00000 n 0000019084 00000 n 0000019136 00000 n -0000830282 00000 n -0001160363 00000 n +0000830620 00000 n +0001149679 00000 n 0000019180 00000 n 0000019219 00000 n -0000832844 00000 n -0001160284 00000 n +0000833182 00000 n +0001149600 00000 n 0000019266 00000 n 0000019310 00000 n -0000833231 00000 n -0001160191 00000 n +0000833569 00000 n +0001149507 00000 n 0000019357 00000 n 0000019392 00000 n -0000833488 00000 n -0001160098 00000 n +0000833826 00000 n +0001149414 00000 n 0000019439 00000 n 0000019493 00000 n -0000833681 00000 n -0001160019 00000 n +0000834019 00000 n +0001149335 00000 n 0000019540 00000 n 0000019582 00000 n -0000837119 00000 n -0001159926 00000 n +0000837457 00000 n +0001149242 00000 n 0000019626 00000 n 0000019676 00000 n -0000837573 00000 n -0001159794 00000 n +0000837911 00000 n +0001149110 00000 n 0000019720 00000 n 0000019762 00000 n -0000837766 00000 n -0001159715 00000 n +0000838104 00000 n +0001149031 00000 n 0000019809 00000 n 0000019856 00000 n -0000839308 00000 n -0001159622 00000 n +0000839646 00000 n +0001148938 00000 n 0000019903 00000 n 0000019948 00000 n -0000848114 00000 n -0001159529 00000 n +0000848452 00000 n +0001148845 00000 n 0000019995 00000 n 0000020037 00000 n -0000848307 00000 n -0001159436 00000 n +0000848645 00000 n +0001148752 00000 n 0000020084 00000 n 0000020129 00000 n -0000848632 00000 n -0001159357 00000 n +0000848970 00000 n +0001148673 00000 n 0000020176 00000 n 0000020215 00000 n -0000854023 00000 n -0001159225 00000 n +0000854361 00000 n +0001148541 00000 n 0000020259 00000 n 0000020303 00000 n -0000854214 00000 n -0001159146 00000 n +0000854552 00000 n +0001148462 00000 n 0000020350 00000 n 0000020385 00000 n -0000857598 00000 n -0001159028 00000 n +0000857936 00000 n +0001148344 00000 n 0000020432 00000 n 0000020466 00000 n -0000858111 00000 n -0001158949 00000 n +0000858449 00000 n +0001148265 00000 n 0000020516 00000 n 0000020561 00000 n -0000858559 00000 n -0001158870 00000 n +0000858897 00000 n +0001148186 00000 n 0000020611 00000 n 0000020663 00000 n -0000861339 00000 n -0001158777 00000 n +0000861677 00000 n +0001148093 00000 n 0000020707 00000 n 0000020738 00000 n -0000861979 00000 n -0001158659 00000 n +0000862317 00000 n +0001147975 00000 n 0000020782 00000 n 0000020815 00000 n -0000865826 00000 n -0001158580 00000 n +0000866164 00000 n +0001147896 00000 n 0000020862 00000 n 0000020899 00000 n -0000866146 00000 n -0001158487 00000 n +0000866484 00000 n +0001147803 00000 n 0000020946 00000 n 0000020990 00000 n -0000870097 00000 n -0001158394 00000 n +0000870435 00000 n +0001147710 00000 n 0000021037 00000 n 0000021081 00000 n -0000871864 00000 n -0001158315 00000 n +0000872202 00000 n +0001147631 00000 n 0000021128 00000 n 0000021175 00000 n -0000874951 00000 n -0001158182 00000 n +0000875160 00000 n +0001147498 00000 n 0000021216 00000 n 0000021267 00000 n -0000875079 00000 n -0001158103 00000 n +0000875288 00000 n +0001147419 00000 n 0000021311 00000 n -0000021348 00000 n -0000875921 00000 n -0001157971 00000 n -0000021392 00000 n -0000021439 00000 n -0000876177 00000 n -0001157892 00000 n -0000021486 00000 n -0000021541 00000 n -0000880092 00000 n -0001157799 00000 n -0000021588 00000 n -0000021646 00000 n -0000881775 00000 n -0001157706 00000 n -0000021693 00000 n -0000021741 00000 n -0000885926 00000 n -0001157613 00000 n -0000021788 00000 n -0000021841 00000 n -0000890940 00000 n -0001157520 00000 n -0000021888 00000 n -0000021935 00000 n -0000896304 00000 n -0001157441 00000 n -0000021982 00000 n -0000022059 00000 n -0000896561 00000 n -0001157348 00000 n -0000022103 00000 n -0000022160 00000 n -0000910478 00000 n -0001157255 00000 n -0000022204 00000 n -0000022260 00000 n -0000913794 00000 n -0001157176 00000 n -0000022304 00000 n -0000022371 00000 n -0000917244 00000 n -0001157043 00000 n -0000022413 00000 n -0000022460 00000 n -0000917436 00000 n -0001156964 00000 n -0000022505 00000 n -0000022544 00000 n -0000918150 00000 n -0001156871 00000 n -0000022589 00000 n -0000022665 00000 n -0000918599 00000 n -0001156778 00000 n -0000022710 00000 n -0000022806 00000 n -0000921332 00000 n -0001156685 00000 n -0000022851 00000 n -0000022906 00000 n -0000921974 00000 n -0001156592 00000 n -0000022951 00000 n -0000023009 00000 n -0000922752 00000 n -0001156499 00000 n -0000023054 00000 n -0000023126 00000 n -0000926863 00000 n -0001156406 00000 n -0000023171 00000 n -0000023249 00000 n -0000928548 00000 n -0001156327 00000 n -0000023294 00000 n -0000023413 00000 n -0000932343 00000 n -0001156192 00000 n -0000023455 00000 n -0000023494 00000 n -0000932600 00000 n -0001156111 00000 n -0000023539 00000 n -0000023593 00000 n -0000934618 00000 n -0001156029 00000 n -0000023639 00000 n -0000023703 00000 n -0000937525 00000 n -0001155890 00000 n -0000023746 00000 n -0000023814 00000 n -0000937655 00000 n -0001155806 00000 n -0000023860 00000 n -0000023898 00000 n -0000938685 00000 n -0001155707 00000 n -0000023944 00000 n -0000023988 00000 n -0000943667 00000 n -0001155623 00000 n -0000024034 00000 n -0000024076 00000 n -0000948604 00000 n -0001155482 00000 n -0000024119 00000 n -0000024182 00000 n -0000948923 00000 n -0001155398 00000 n -0000024228 00000 n -0000024260 00000 n -0000949241 00000 n -0001155299 00000 n -0000024306 00000 n -0000024358 00000 n -0000953239 00000 n -0001155200 00000 n -0000024404 00000 n -0000024444 00000 n -0000953496 00000 n -0001155101 00000 n -0000024490 00000 n -0000024533 00000 n -0000957414 00000 n -0001155002 00000 n -0000024579 00000 n -0000024616 00000 n -0000962609 00000 n -0001154903 00000 n -0000024662 00000 n -0000024705 00000 n -0000962931 00000 n -0001154804 00000 n -0000024751 00000 n -0000024799 00000 n -0000963188 00000 n -0001154705 00000 n -0000024845 00000 n -0000024903 00000 n -0000966244 00000 n -0001154606 00000 n -0000024949 00000 n -0000024984 00000 n -0000966438 00000 n -0001154507 00000 n -0000025030 00000 n -0000025065 00000 n -0000966631 00000 n -0001154408 00000 n -0000025111 00000 n -0000025168 00000 n -0000966954 00000 n -0001154324 00000 n -0000025214 00000 n -0000025277 00000 n -0000970920 00000 n -0001154225 00000 n -0000025320 00000 n -0000025349 00000 n -0000971048 00000 n -0001154085 00000 n -0000025392 00000 n -0000025427 00000 n -0000971178 00000 n -0001154016 00000 n -0000025477 00000 n -0000025507 00000 n -0000971565 00000 n -0001153876 00000 n -0000025550 00000 n -0000025572 00000 n -0000971694 00000 n -0001153766 00000 n -0000025622 00000 n -0000025649 00000 n -0000972147 00000 n -0001153697 00000 n -0000025702 00000 n -0000025766 00000 n -0000976134 00000 n -0001153557 00000 n -0000025809 00000 n -0000025831 00000 n -0000976263 00000 n -0001153447 00000 n -0000025881 00000 n -0000025905 00000 n -0000976715 00000 n -0001153363 00000 n -0000025955 00000 n -0000025986 00000 n -0000976973 00000 n -0001153279 00000 n -0000026036 00000 n -0000026065 00000 n -0000977230 00000 n -0001153139 00000 n -0000026108 00000 n -0000026130 00000 n -0000977359 00000 n -0001153029 00000 n -0000026180 00000 n -0000026225 00000 n -0000977745 00000 n -0001152945 00000 n -0000026275 00000 n -0000026305 00000 n -0000978002 00000 n -0001152846 00000 n -0000026355 00000 n -0000026410 00000 n -0000978519 00000 n -0001152762 00000 n -0000026460 00000 n -0000026488 00000 n -0000980895 00000 n -0001152622 00000 n -0000026531 00000 n -0000026553 00000 n -0000981024 00000 n -0001152512 00000 n -0000026603 00000 n -0000026630 00000 n -0000981412 00000 n -0001152443 00000 n -0000026680 00000 n -0000026711 00000 n -0000981670 00000 n -0001152303 00000 n -0000026754 00000 n -0000026776 00000 n -0000981798 00000 n -0001152234 00000 n -0000026826 00000 n -0000026853 00000 n -0000982253 00000 n -0001152094 00000 n -0000026896 00000 n -0000026918 00000 n -0000982381 00000 n -0001152025 00000 n -0000026968 00000 n -0000026999 00000 n -0000984644 00000 n -0001151885 00000 n -0000027042 00000 n -0000027064 00000 n -0000984773 00000 n -0001151775 00000 n -0000027114 00000 n -0000027158 00000 n -0000985359 00000 n -0001151706 00000 n -0000027208 00000 n -0000027234 00000 n -0000986585 00000 n -0001151566 00000 n -0000027277 00000 n -0000027299 00000 n -0000986714 00000 n -0001151456 00000 n -0000027349 00000 n -0000027390 00000 n -0000987035 00000 n -0001151372 00000 n -0000027440 00000 n -0000027468 00000 n -0000988983 00000 n -0001151288 00000 n -0000027518 00000 n -0000027543 00000 n -0000989305 00000 n -0001151148 00000 n -0000027586 00000 n -0000027608 00000 n -0000989434 00000 n -0001151079 00000 n -0000027658 00000 n -0000027681 00000 n -0000990019 00000 n -0001150939 00000 n -0000027724 00000 n -0000027746 00000 n -0000990148 00000 n -0001150829 00000 n -0000027796 00000 n -0000027854 00000 n -0000990404 00000 n -0001150760 00000 n -0000027904 00000 n -0000027943 00000 n -0000990726 00000 n -0001150620 00000 n -0000027986 00000 n -0000028008 00000 n -0000990855 00000 n -0001150510 00000 n -0000028058 00000 n -0000028086 00000 n -0000993590 00000 n -0001150441 00000 n -0000028136 00000 n -0000028162 00000 n -0000994504 00000 n -0001150301 00000 n -0000028205 00000 n -0000028227 00000 n -0000994632 00000 n -0001150191 00000 n -0000028277 00000 n -0000028314 00000 n -0000994956 00000 n -0001150122 00000 n -0000028364 00000 n -0000028406 00000 n -0000995214 00000 n -0001149997 00000 n -0000028449 00000 n -0000028471 00000 n -0000995343 00000 n -0001149928 00000 n -0000028521 00000 n -0000028559 00000 n -0000028911 00000 n -0000029292 00000 n -0000028613 00000 n -0000029037 00000 n -0000029101 00000 n -0000029165 00000 n -0001145798 00000 n -0001132014 00000 n -0001145624 00000 n -0001146683 00000 n -0000030162 00000 n -0000029972 00000 n -0000029366 00000 n -0000030098 00000 n -0001130887 00000 n -0001109041 00000 n -0001130710 00000 n -0000103894 00000 n -0000088232 00000 n -0000030250 00000 n -0000103768 00000 n -0000089180 00000 n -0001108176 00000 n -0001091870 00000 n -0001107999 00000 n -0000089332 00000 n -0000089484 00000 n -0000089640 00000 n -0000089796 00000 n -0000089953 00000 n -0000090110 00000 n -0000090268 00000 n -0000090426 00000 n -0000090580 00000 n -0000090734 00000 n -0000090892 00000 n -0000091050 00000 n -0000091214 00000 n -0000091379 00000 n -0000091537 00000 n -0000091695 00000 n -0000091855 00000 n -0000092014 00000 n -0000092178 00000 n -0000092341 00000 n -0000092502 00000 n -0000092662 00000 n -0000092820 00000 n -0000092977 00000 n -0000093138 00000 n -0000093299 00000 n -0000093464 00000 n -0000093628 00000 n -0000093790 00000 n -0000093951 00000 n -0000094118 00000 n -0000094284 00000 n -0000094457 00000 n -0000094629 00000 n -0000094801 00000 n -0000094972 00000 n -0000095138 00000 n -0000095303 00000 n -0000095478 00000 n -0000095652 00000 n -0000095824 00000 n -0000095995 00000 n -0000096164 00000 n -0000096332 00000 n -0000096504 00000 n -0000096675 00000 n -0000096847 00000 n -0000097019 00000 n -0000097194 00000 n -0000097368 00000 n -0000097527 00000 n -0000097685 00000 n -0000097861 00000 n -0000098037 00000 n -0000098197 00000 n -0000098358 00000 n -0000098516 00000 n -0000098674 00000 n -0000098837 00000 n -0000099000 00000 n -0000099162 00000 n -0000099325 00000 n -0000099478 00000 n -0000099631 00000 n -0000099789 00000 n -0000099947 00000 n -0000100100 00000 n -0000100254 00000 n -0000100405 00000 n -0000100556 00000 n -0000100708 00000 n -0000100860 00000 n -0000101019 00000 n -0000101178 00000 n -0000101332 00000 n -0000101486 00000 n -0000101657 00000 n -0000101828 00000 n -0000101985 00000 n -0000102144 00000 n -0000102295 00000 n -0000102446 00000 n -0000102619 00000 n -0000102792 00000 n -0000102959 00000 n -0000103126 00000 n -0000103287 00000 n -0000103449 00000 n -0000103608 00000 n -0001091024 00000 n -0001072799 00000 n -0001090843 00000 n -0000420297 00000 n -0000420424 00000 n -0000420807 00000 n -0000421125 00000 n -0000425224 00000 n -0000428262 00000 n -0000434573 00000 n -0000434700 00000 n -0000435916 00000 n -0000438172 00000 n -0000438363 00000 n -0000439072 00000 n -0000439522 00000 n -0000443248 00000 n -0000443700 00000 n -0000444542 00000 n -0000457026 00000 n -0000457283 00000 n -0000457474 00000 n -0000458183 00000 n -0000460817 00000 n -0000461009 00000 n -0000461201 00000 n -0000461460 00000 n -0000461653 00000 n -0000461846 00000 n -0000465720 00000 n -0000466305 00000 n -0000466563 00000 n -0000471937 00000 n -0000472130 00000 n -0000472389 00000 n -0000481696 00000 n -0000483704 00000 n -0000487672 00000 n -0000486375 00000 n -0000492207 00000 n -0000503869 00000 n -0000509096 00000 n -0000510134 00000 n -0000510326 00000 n -0000511161 00000 n -0000514256 00000 n -0000514899 00000 n -0000515810 00000 n -0000177956 00000 n -0000161802 00000 n -0000104010 00000 n -0000177892 00000 n -0000162786 00000 n -0000162944 00000 n -0000163103 00000 n -0000163259 00000 n -0000163415 00000 n -0000163572 00000 n -0000163729 00000 n -0000163895 00000 n -0000164061 00000 n -0000164219 00000 n -0000164377 00000 n -0000164536 00000 n -0000164695 00000 n -0000164852 00000 n -0000165009 00000 n -0000165172 00000 n -0000165335 00000 n -0000165499 00000 n -0000165663 00000 n -0000165818 00000 n -0000165973 00000 n -0000166127 00000 n -0000166282 00000 n -0000166433 00000 n -0000166584 00000 n -0000166735 00000 n -0000166886 00000 n -0000167036 00000 n -0000167186 00000 n -0000167337 00000 n -0000167488 00000 n -0000167663 00000 n -0000167838 00000 n -0000167988 00000 n -0000168138 00000 n -0000168289 00000 n -0000168440 00000 n -0000168591 00000 n -0000168742 00000 n -0000168896 00000 n -0000169050 00000 n -0000169203 00000 n -0000169357 00000 n -0000169519 00000 n -0000169681 00000 n -0000169840 00000 n -0000170000 00000 n -0000170164 00000 n -0000170328 00000 n -0000170487 00000 n -0000170646 00000 n -0000170809 00000 n -0000170972 00000 n -0000171135 00000 n -0000171298 00000 n -0000171464 00000 n -0000171630 00000 n -0000171799 00000 n -0000171968 00000 n -0000172128 00000 n -0000172290 00000 n -0000172447 00000 n -0000172605 00000 n -0000172774 00000 n -0000172944 00000 n -0000173110 00000 n -0000173276 00000 n -0000173449 00000 n -0000173622 00000 n -0000173786 00000 n -0000173951 00000 n -0000174124 00000 n -0000174297 00000 n -0000174459 00000 n -0000174621 00000 n -0000174783 00000 n -0000174946 00000 n -0000175117 00000 n -0000175288 00000 n -0000175456 00000 n -0000175624 00000 n -0000175778 00000 n -0000175932 00000 n -0000176088 00000 n -0000176244 00000 n -0000176403 00000 n -0000176562 00000 n -0000176727 00000 n -0000176892 00000 n -0000177059 00000 n -0000177226 00000 n -0000177393 00000 n -0000177560 00000 n -0000177726 00000 n -0000520051 00000 n -0000520372 00000 n -0000520631 00000 n -0000523574 00000 n -0000524858 00000 n -0000528819 00000 n -0000529012 00000 n -0000529205 00000 n -0000529528 00000 n -0000534561 00000 n -0000534883 00000 n -0000535012 00000 n -0000535205 00000 n -0000537829 00000 n -0000541685 00000 n -0000542730 00000 n -0000546345 00000 n -0000546538 00000 n -0000547119 00000 n -0000547770 00000 n -0000551927 00000 n -0000552378 00000 n -0000557559 00000 n -0000558524 00000 n -0000558781 00000 n -0000562132 00000 n -0000566718 00000 n -0000567755 00000 n -0000572281 00000 n -0000575069 00000 n -0000575197 00000 n -0000575389 00000 n -0000585704 00000 n -0000585897 00000 n -0000586671 00000 n -0000586864 00000 n -0000590125 00000 n -0000590765 00000 n -0000591023 00000 n -0000591282 00000 n -0000596219 00000 n -0000601681 00000 n -0000605908 00000 n -0000609942 00000 n -0000610134 00000 n -0000610327 00000 n -0000610776 00000 n -0000252680 00000 n -0000236508 00000 n -0000178058 00000 n -0000252616 00000 n -0000237492 00000 n -0000237647 00000 n -0000237804 00000 n -0000237963 00000 n -0000238122 00000 n -0000238281 00000 n -0000238440 00000 n -0000238607 00000 n -0000238774 00000 n -0000238936 00000 n -0000239098 00000 n -0000239257 00000 n -0000239416 00000 n -0000239583 00000 n -0000239751 00000 n -0000239917 00000 n -0000240083 00000 n -0000240245 00000 n -0000240408 00000 n -0000240562 00000 n -0000240717 00000 n -0000240879 00000 n -0000241041 00000 n -0000241202 00000 n -0000241363 00000 n -0000241536 00000 n -0000241709 00000 n -0000241878 00000 n -0000242047 00000 n -0000242217 00000 n -0000242387 00000 n -0000242544 00000 n -0000242702 00000 n -0000242856 00000 n -0000243011 00000 n -0000243168 00000 n -0000243326 00000 n -0000243487 00000 n -0000243649 00000 n -0000243816 00000 n -0000243983 00000 n -0000244141 00000 n -0000244299 00000 n -0000244458 00000 n -0000244617 00000 n -0000244774 00000 n -0000244931 00000 n -0000245089 00000 n -0000245247 00000 n -0000245415 00000 n -0000245583 00000 n -0000245744 00000 n -0000245905 00000 n -0000246064 00000 n -0000246223 00000 n -0000246381 00000 n -0000246539 00000 n -0000246699 00000 n -0000246859 00000 n -0000247018 00000 n -0000247177 00000 n -0000247332 00000 n -0000247488 00000 n -0000247648 00000 n -0000247809 00000 n -0000247974 00000 n -0000248139 00000 n -0000248305 00000 n -0000248471 00000 n -0000248639 00000 n -0000248807 00000 n -0000248965 00000 n -0000249124 00000 n -0000249286 00000 n -0000249448 00000 n -0000249614 00000 n -0000249780 00000 n -0000249945 00000 n -0000250112 00000 n -0000250265 00000 n -0000250419 00000 n -0000250571 00000 n -0000250724 00000 n -0000250877 00000 n -0000251031 00000 n -0000251192 00000 n -0000251353 00000 n -0000251510 00000 n -0000251667 00000 n -0000251831 00000 n -0000251995 00000 n -0000252147 00000 n -0000252299 00000 n -0000252457 00000 n -0000613676 00000 n -0000613805 00000 n -0000614126 00000 n -0000614254 00000 n -0000614772 00000 n -0000619431 00000 n -0000626906 00000 n -0000627164 00000 n -0000631053 00000 n -0000631566 00000 n -0000636301 00000 n -0000637271 00000 n -0000641304 00000 n -0000641688 00000 n -0000646723 00000 n -0000653457 00000 n -0000654947 00000 n -0000653201 00000 n -0000659231 00000 n -0000659616 00000 n -0000663784 00000 n -0000663912 00000 n -0000665201 00000 n -0000666048 00000 n -0000666240 00000 n -0000670171 00000 n -0000670625 00000 n -0000671079 00000 n -0000671338 00000 n -0000682263 00000 n -0000685731 00000 n -0000686051 00000 n -0000686502 00000 n -0000691724 00000 n -0000691915 00000 n -0000692108 00000 n -0000694942 00000 n -0000695265 00000 n -0000695841 00000 n -0000696097 00000 n -0000700443 00000 n -0000700956 00000 n -0000706495 00000 n -0000711140 00000 n -0000717152 00000 n -0000717794 00000 n -0000717987 00000 n -0000328149 00000 n -0000311935 00000 n -0000252768 00000 n -0000328085 00000 n -0000312919 00000 n -0000313072 00000 n -0000313227 00000 n -0000313385 00000 n -0000313544 00000 n -0000313708 00000 n -0000313872 00000 n -0000314040 00000 n -0000314208 00000 n -0001071817 00000 n -0001051630 00000 n -0001071642 00000 n -0000314374 00000 n -0000314540 00000 n -0000314705 00000 n -0000314871 00000 n -0000315043 00000 n -0000315215 00000 n -0000315379 00000 n -0000315544 00000 n -0000315717 00000 n -0000315890 00000 n -0000316042 00000 n -0000316195 00000 n -0000316353 00000 n -0000316512 00000 n -0000316668 00000 n -0000316825 00000 n -0000316980 00000 n -0000317136 00000 n -0000317292 00000 n -0000317449 00000 n -0000317601 00000 n -0000317754 00000 n -0000317907 00000 n -0000318060 00000 n -0000318216 00000 n -0000318372 00000 n -0000318528 00000 n -0000318684 00000 n -0000318846 00000 n -0000319008 00000 n -0000319167 00000 n -0000319326 00000 n -0000319489 00000 n -0000319652 00000 n -0000319804 00000 n -0000319956 00000 n -0000320122 00000 n -0000320288 00000 n -0000320445 00000 n -0000320603 00000 n -0000320761 00000 n -0000320920 00000 n -0000321079 00000 n -0000321238 00000 n -0000321396 00000 n -0000321555 00000 n -0000321714 00000 n -0000321873 00000 n -0000322037 00000 n -0000322201 00000 n -0000322363 00000 n -0000322526 00000 n -0000322693 00000 n -0000322860 00000 n -0000323028 00000 n -0000323196 00000 n -0000323360 00000 n -0000323524 00000 n -0000323694 00000 n -0000323864 00000 n -0000324036 00000 n -0000324208 00000 n -0000324367 00000 n -0000324527 00000 n -0000324679 00000 n -0000324831 00000 n -0000324989 00000 n -0000325147 00000 n -0000325310 00000 n -0000325473 00000 n -0000325635 00000 n -0000325797 00000 n -0000325956 00000 n -0000326116 00000 n -0000326278 00000 n -0000326441 00000 n -0000326607 00000 n -0000326773 00000 n -0000326937 00000 n -0000327101 00000 n -0000327262 00000 n -0000327423 00000 n -0000327588 00000 n -0000327753 00000 n -0000327919 00000 n -0000722726 00000 n -0000723046 00000 n -0000723175 00000 n -0000723368 00000 n -0000724540 00000 n -0000724798 00000 n -0000727793 00000 n -0000734460 00000 n -0000734588 00000 n -0000737899 00000 n -0000738027 00000 n -0000738416 00000 n -0000743755 00000 n -0000751179 00000 n -0000749432 00000 n -0000803043 00000 n -0000806907 00000 n -0000807163 00000 n -0000811059 00000 n -0000811575 00000 n -0000812030 00000 n -0000812222 00000 n -0000816113 00000 n -0000816630 00000 n -0000816759 00000 n -0000822126 00000 n -0000822448 00000 n -0000826066 00000 n -0000826450 00000 n -0000826642 00000 n -0000829192 00000 n -0000829384 00000 n -0000829575 00000 n -0000829768 00000 n -0000830025 00000 n -0000830218 00000 n -0000830411 00000 n -0000833167 00000 n -0000833424 00000 n -0000833617 00000 n -0000833939 00000 n -0000837509 00000 n -0000837702 00000 n -0000839244 00000 n -0000848050 00000 n -0000848243 00000 n -0000848568 00000 n -0000401766 00000 n -0000385988 00000 n -0000328265 00000 n -0000401702 00000 n -0000386954 00000 n -0000387110 00000 n -0000387267 00000 n -0000387422 00000 n -0000387577 00000 n -0000387730 00000 n -0000387883 00000 n -0000388035 00000 n -0000388187 00000 n -0000388352 00000 n -0000388517 00000 n -0000388669 00000 n -0000388822 00000 n -0000388975 00000 n -0000389129 00000 n -0000389293 00000 n -0000389457 00000 n -0000389621 00000 n -0000389785 00000 n -0000389946 00000 n -0000390107 00000 n -0000390259 00000 n -0000390411 00000 n -0000390571 00000 n -0000390732 00000 n -0000390889 00000 n -0000391047 00000 n -0000391208 00000 n -0000391370 00000 n -0000391536 00000 n -0000391702 00000 n -0000391864 00000 n -0000392026 00000 n -0000392187 00000 n -0000392348 00000 n -0000392512 00000 n +0000021355 00000 n +0000875610 00000 n +0001147326 00000 n +0000021399 00000 n +0000021436 00000 n +0000876450 00000 n +0001147194 00000 n +0000021480 00000 n +0000021527 00000 n +0000876707 00000 n +0001147115 00000 n +0000021574 00000 n +0000021629 00000 n +0000880635 00000 n +0001147022 00000 n +0000021676 00000 n +0000021734 00000 n +0000885838 00000 n +0001146929 00000 n +0000021781 00000 n +0000021829 00000 n +0000886614 00000 n +0001146836 00000 n +0000021876 00000 n +0000021929 00000 n +0000891439 00000 n +0001146743 00000 n +0000021976 00000 n +0000022023 00000 n +0000897181 00000 n +0001146664 00000 n +0000022070 00000 n +0000022147 00000 n +0000897438 00000 n +0001146571 00000 n +0000022191 00000 n +0000022247 00000 n +0000903130 00000 n +0001146492 00000 n +0000022291 00000 n +0000022358 00000 n +0000906580 00000 n +0001146359 00000 n +0000022400 00000 n +0000022447 00000 n +0000906772 00000 n +0001146280 00000 n +0000022492 00000 n +0000022531 00000 n +0000907486 00000 n +0001146187 00000 n +0000022576 00000 n +0000022652 00000 n +0000907935 00000 n +0001146094 00000 n +0000022697 00000 n +0000022793 00000 n +0000910669 00000 n +0001146001 00000 n +0000022838 00000 n +0000022893 00000 n +0000911311 00000 n +0001145908 00000 n +0000022938 00000 n +0000022996 00000 n +0000912089 00000 n +0001145815 00000 n +0000023041 00000 n +0000023113 00000 n +0000916200 00000 n +0001145722 00000 n +0000023158 00000 n +0000023236 00000 n +0000917885 00000 n +0001145643 00000 n +0000023281 00000 n +0000023400 00000 n +0000921679 00000 n +0001145508 00000 n +0000023442 00000 n +0000023481 00000 n +0000921936 00000 n +0001145427 00000 n +0000023526 00000 n +0000023580 00000 n +0000923954 00000 n +0001145345 00000 n +0000023626 00000 n +0000023690 00000 n +0000926860 00000 n +0001145206 00000 n +0000023733 00000 n +0000023801 00000 n +0000926990 00000 n +0001145122 00000 n +0000023847 00000 n +0000023885 00000 n +0000928020 00000 n +0001145023 00000 n +0000023931 00000 n +0000023975 00000 n +0000933000 00000 n +0001144939 00000 n +0000024021 00000 n +0000024063 00000 n +0000937937 00000 n +0001144798 00000 n +0000024106 00000 n +0000024169 00000 n +0000938256 00000 n +0001144714 00000 n +0000024215 00000 n +0000024247 00000 n +0000938574 00000 n +0001144615 00000 n +0000024293 00000 n +0000024345 00000 n +0000942572 00000 n +0001144516 00000 n +0000024391 00000 n +0000024431 00000 n +0000942829 00000 n +0001144417 00000 n +0000024477 00000 n +0000024520 00000 n +0000946748 00000 n +0001144318 00000 n +0000024566 00000 n +0000024603 00000 n +0000951943 00000 n +0001144219 00000 n +0000024649 00000 n +0000024692 00000 n +0000952265 00000 n +0001144120 00000 n +0000024738 00000 n +0000024786 00000 n +0000952522 00000 n +0001144021 00000 n +0000024832 00000 n +0000024890 00000 n +0000955579 00000 n +0001143922 00000 n +0000024936 00000 n +0000024971 00000 n +0000955773 00000 n +0001143823 00000 n +0000025017 00000 n +0000025052 00000 n +0000955966 00000 n +0001143724 00000 n +0000025098 00000 n +0000025155 00000 n +0000956289 00000 n +0001143640 00000 n +0000025201 00000 n +0000025264 00000 n +0000960253 00000 n +0001143541 00000 n +0000025307 00000 n +0000025336 00000 n +0000960381 00000 n +0001143401 00000 n +0000025379 00000 n +0000025414 00000 n +0000960511 00000 n +0001143332 00000 n +0000025464 00000 n +0000025494 00000 n +0000960898 00000 n +0001143192 00000 n +0000025537 00000 n +0000025559 00000 n +0000961027 00000 n +0001143082 00000 n +0000025609 00000 n +0000025636 00000 n +0000961480 00000 n +0001143013 00000 n +0000025689 00000 n +0000025753 00000 n +0000965467 00000 n +0001142873 00000 n +0000025796 00000 n +0000025818 00000 n +0000965596 00000 n +0001142763 00000 n +0000025868 00000 n +0000025892 00000 n +0000966048 00000 n +0001142679 00000 n +0000025942 00000 n +0000025973 00000 n +0000966306 00000 n +0001142595 00000 n +0000026023 00000 n +0000026052 00000 n +0000966563 00000 n +0001142455 00000 n +0000026095 00000 n +0000026117 00000 n +0000966692 00000 n +0001142345 00000 n +0000026167 00000 n +0000026212 00000 n +0000967078 00000 n +0001142261 00000 n +0000026262 00000 n +0000026292 00000 n +0000967335 00000 n +0001142162 00000 n +0000026342 00000 n +0000026397 00000 n +0000967852 00000 n +0001142078 00000 n +0000026447 00000 n +0000026475 00000 n +0000970228 00000 n +0001141938 00000 n +0000026518 00000 n +0000026540 00000 n +0000970357 00000 n +0001141828 00000 n +0000026590 00000 n +0000026617 00000 n +0000970745 00000 n +0001141759 00000 n +0000026667 00000 n +0000026698 00000 n +0000971003 00000 n +0001141619 00000 n +0000026741 00000 n +0000026763 00000 n +0000971131 00000 n +0001141550 00000 n +0000026813 00000 n +0000026840 00000 n +0000971586 00000 n +0001141410 00000 n +0000026883 00000 n +0000026905 00000 n +0000971714 00000 n +0001141341 00000 n +0000026955 00000 n +0000026986 00000 n +0000973977 00000 n +0001141201 00000 n +0000027029 00000 n +0000027051 00000 n +0000974106 00000 n +0001141091 00000 n +0000027101 00000 n +0000027145 00000 n +0000974692 00000 n +0001141022 00000 n +0000027195 00000 n +0000027221 00000 n +0000975918 00000 n +0001140882 00000 n +0000027264 00000 n +0000027286 00000 n +0000976047 00000 n +0001140772 00000 n +0000027336 00000 n +0000027377 00000 n +0000976368 00000 n +0001140688 00000 n +0000027427 00000 n +0000027455 00000 n +0000978317 00000 n +0001140604 00000 n +0000027505 00000 n +0000027530 00000 n +0000978639 00000 n +0001140464 00000 n +0000027573 00000 n +0000027595 00000 n +0000978768 00000 n +0001140395 00000 n +0000027645 00000 n +0000027668 00000 n +0000979353 00000 n +0001140255 00000 n +0000027711 00000 n +0000027733 00000 n +0000979482 00000 n +0001140145 00000 n +0000027783 00000 n +0000027841 00000 n +0000979738 00000 n +0001140076 00000 n +0000027891 00000 n +0000027930 00000 n +0000980060 00000 n +0001139936 00000 n +0000027973 00000 n +0000027995 00000 n +0000980189 00000 n +0001139826 00000 n +0000028045 00000 n +0000028073 00000 n +0000982924 00000 n +0001139757 00000 n +0000028123 00000 n +0000028149 00000 n +0000983838 00000 n +0001139617 00000 n +0000028192 00000 n +0000028214 00000 n +0000983966 00000 n +0001139507 00000 n +0000028264 00000 n +0000028301 00000 n +0000984290 00000 n +0001139438 00000 n +0000028351 00000 n +0000028393 00000 n +0000984548 00000 n +0001139313 00000 n +0000028436 00000 n +0000028458 00000 n +0000984677 00000 n +0001139244 00000 n +0000028508 00000 n +0000028546 00000 n +0000028897 00000 n +0000029278 00000 n +0000028600 00000 n +0000029023 00000 n +0000029087 00000 n +0000029151 00000 n +0001135132 00000 n +0001121348 00000 n +0001134958 00000 n +0001136017 00000 n +0000030149 00000 n +0000029959 00000 n +0000029352 00000 n +0000030085 00000 n +0001120221 00000 n +0001098375 00000 n +0001120044 00000 n +0000103883 00000 n +0000088221 00000 n +0000030237 00000 n +0000103757 00000 n +0000089169 00000 n +0001097510 00000 n +0001081204 00000 n +0001097333 00000 n +0000089321 00000 n +0000089473 00000 n +0000089629 00000 n +0000089785 00000 n +0000089942 00000 n +0000090099 00000 n +0000090257 00000 n +0000090415 00000 n +0000090569 00000 n +0000090723 00000 n +0000090881 00000 n +0000091039 00000 n +0000091203 00000 n +0000091368 00000 n +0000091526 00000 n +0000091684 00000 n +0000091844 00000 n +0000092003 00000 n +0000092167 00000 n +0000092330 00000 n +0000092491 00000 n +0000092651 00000 n +0000092809 00000 n +0000092966 00000 n +0000093127 00000 n +0000093288 00000 n +0000093453 00000 n +0000093617 00000 n +0000093779 00000 n +0000093940 00000 n +0000094107 00000 n +0000094273 00000 n +0000094446 00000 n +0000094618 00000 n +0000094790 00000 n +0000094961 00000 n +0000095127 00000 n +0000095292 00000 n +0000095467 00000 n +0000095641 00000 n +0000095813 00000 n +0000095984 00000 n +0000096153 00000 n +0000096321 00000 n +0000096493 00000 n +0000096664 00000 n +0000096836 00000 n +0000097008 00000 n +0000097183 00000 n +0000097357 00000 n +0000097516 00000 n +0000097674 00000 n +0000097850 00000 n +0000098026 00000 n +0000098186 00000 n +0000098347 00000 n +0000098505 00000 n +0000098663 00000 n +0000098826 00000 n +0000098989 00000 n +0000099151 00000 n +0000099314 00000 n +0000099467 00000 n +0000099620 00000 n +0000099778 00000 n +0000099936 00000 n +0000100089 00000 n +0000100243 00000 n +0000100394 00000 n +0000100545 00000 n +0000100697 00000 n +0000100849 00000 n +0000101008 00000 n +0000101167 00000 n +0000101321 00000 n +0000101475 00000 n +0000101646 00000 n +0000101817 00000 n +0000101974 00000 n +0000102133 00000 n +0000102284 00000 n +0000102435 00000 n +0000102608 00000 n +0000102781 00000 n +0000102948 00000 n +0000103115 00000 n +0000103276 00000 n +0000103438 00000 n +0000103597 00000 n +0001080358 00000 n +0001062133 00000 n +0001080177 00000 n +0000420633 00000 n +0000420760 00000 n +0000421143 00000 n +0000421461 00000 n +0000425560 00000 n +0000428598 00000 n +0000434909 00000 n +0000435036 00000 n +0000436252 00000 n +0000438508 00000 n +0000438699 00000 n +0000439408 00000 n +0000439858 00000 n +0000443584 00000 n +0000444036 00000 n +0000444878 00000 n +0000457363 00000 n +0000457620 00000 n +0000457811 00000 n +0000458520 00000 n +0000461154 00000 n +0000461346 00000 n +0000461538 00000 n +0000461797 00000 n +0000461990 00000 n +0000462183 00000 n +0000466057 00000 n +0000466642 00000 n +0000466900 00000 n +0000472274 00000 n +0000472467 00000 n +0000472726 00000 n +0000482033 00000 n +0000484041 00000 n +0000488009 00000 n +0000486712 00000 n +0000492544 00000 n +0000504206 00000 n +0000509433 00000 n +0000510471 00000 n +0000510663 00000 n +0000511498 00000 n +0000514593 00000 n +0000515236 00000 n +0000516147 00000 n +0000177945 00000 n +0000161791 00000 n +0000103999 00000 n +0000177881 00000 n +0000162775 00000 n +0000162933 00000 n +0000163092 00000 n +0000163248 00000 n +0000163404 00000 n +0000163561 00000 n +0000163718 00000 n +0000163884 00000 n +0000164050 00000 n +0000164208 00000 n +0000164366 00000 n +0000164525 00000 n +0000164684 00000 n +0000164841 00000 n +0000164998 00000 n +0000165161 00000 n +0000165324 00000 n +0000165488 00000 n +0000165652 00000 n +0000165807 00000 n +0000165962 00000 n +0000166116 00000 n +0000166271 00000 n +0000166422 00000 n +0000166573 00000 n +0000166724 00000 n +0000166875 00000 n +0000167025 00000 n +0000167175 00000 n +0000167326 00000 n +0000167477 00000 n +0000167652 00000 n +0000167827 00000 n +0000167977 00000 n +0000168127 00000 n +0000168278 00000 n +0000168429 00000 n +0000168580 00000 n +0000168731 00000 n +0000168885 00000 n +0000169039 00000 n +0000169192 00000 n +0000169346 00000 n +0000169508 00000 n +0000169670 00000 n +0000169829 00000 n +0000169989 00000 n +0000170153 00000 n +0000170317 00000 n +0000170476 00000 n +0000170635 00000 n +0000170798 00000 n +0000170961 00000 n +0000171124 00000 n +0000171287 00000 n +0000171453 00000 n +0000171619 00000 n +0000171788 00000 n +0000171957 00000 n +0000172117 00000 n +0000172279 00000 n +0000172436 00000 n +0000172594 00000 n +0000172763 00000 n +0000172933 00000 n +0000173099 00000 n +0000173265 00000 n +0000173438 00000 n +0000173611 00000 n +0000173775 00000 n +0000173940 00000 n +0000174113 00000 n +0000174286 00000 n +0000174448 00000 n +0000174610 00000 n +0000174772 00000 n +0000174935 00000 n +0000175106 00000 n +0000175277 00000 n +0000175445 00000 n +0000175613 00000 n +0000175767 00000 n +0000175921 00000 n +0000176077 00000 n +0000176233 00000 n +0000176392 00000 n +0000176551 00000 n +0000176716 00000 n +0000176881 00000 n +0000177048 00000 n +0000177215 00000 n +0000177382 00000 n +0000177549 00000 n +0000177715 00000 n +0000520388 00000 n +0000520709 00000 n +0000520968 00000 n +0000523911 00000 n +0000525195 00000 n +0000529156 00000 n +0000529349 00000 n +0000529542 00000 n +0000529865 00000 n +0000534898 00000 n +0000535220 00000 n +0000535349 00000 n +0000535542 00000 n +0000538166 00000 n +0000542022 00000 n +0000543067 00000 n +0000546682 00000 n +0000546875 00000 n +0000547456 00000 n +0000548107 00000 n +0000552264 00000 n +0000552715 00000 n +0000557897 00000 n +0000558862 00000 n +0000559119 00000 n +0000562470 00000 n +0000567056 00000 n +0000568093 00000 n +0000572619 00000 n +0000575407 00000 n +0000575535 00000 n +0000575727 00000 n +0000586042 00000 n +0000586235 00000 n +0000587009 00000 n +0000587202 00000 n +0000590463 00000 n +0000591103 00000 n +0000591361 00000 n +0000591620 00000 n +0000596557 00000 n +0000602019 00000 n +0000606246 00000 n +0000610280 00000 n +0000610472 00000 n +0000610665 00000 n +0000611114 00000 n +0000252669 00000 n +0000236497 00000 n +0000178047 00000 n +0000252605 00000 n +0000237481 00000 n +0000237636 00000 n +0000237793 00000 n +0000237952 00000 n +0000238111 00000 n +0000238270 00000 n +0000238429 00000 n +0000238596 00000 n +0000238763 00000 n +0000238925 00000 n +0000239087 00000 n +0000239246 00000 n +0000239405 00000 n +0000239572 00000 n +0000239740 00000 n +0000239906 00000 n +0000240072 00000 n +0000240234 00000 n +0000240397 00000 n +0000240551 00000 n +0000240706 00000 n +0000240868 00000 n +0000241030 00000 n +0000241191 00000 n +0000241352 00000 n +0000241525 00000 n +0000241698 00000 n +0000241867 00000 n +0000242036 00000 n +0000242206 00000 n +0000242376 00000 n +0000242533 00000 n +0000242691 00000 n +0000242845 00000 n +0000243000 00000 n +0000243157 00000 n +0000243315 00000 n +0000243476 00000 n +0000243638 00000 n +0000243805 00000 n +0000243972 00000 n +0000244130 00000 n +0000244288 00000 n +0000244447 00000 n +0000244606 00000 n +0000244763 00000 n +0000244920 00000 n +0000245078 00000 n +0000245236 00000 n +0000245404 00000 n +0000245572 00000 n +0000245733 00000 n +0000245894 00000 n +0000246053 00000 n +0000246212 00000 n +0000246370 00000 n +0000246528 00000 n +0000246688 00000 n +0000246848 00000 n +0000247007 00000 n +0000247166 00000 n +0000247321 00000 n +0000247477 00000 n +0000247637 00000 n +0000247798 00000 n +0000247963 00000 n +0000248128 00000 n +0000248294 00000 n +0000248460 00000 n +0000248628 00000 n +0000248796 00000 n +0000248954 00000 n +0000249113 00000 n +0000249275 00000 n +0000249437 00000 n +0000249603 00000 n +0000249769 00000 n +0000249934 00000 n +0000250101 00000 n +0000250254 00000 n +0000250408 00000 n +0000250560 00000 n +0000250713 00000 n +0000250866 00000 n +0000251020 00000 n +0000251181 00000 n +0000251342 00000 n +0000251499 00000 n +0000251656 00000 n +0000251820 00000 n +0000251984 00000 n +0000252136 00000 n +0000252288 00000 n +0000252446 00000 n +0000614014 00000 n +0000614143 00000 n +0000614464 00000 n +0000614592 00000 n +0000615110 00000 n +0000619769 00000 n +0000627244 00000 n +0000627502 00000 n +0000631391 00000 n +0000631904 00000 n +0000636639 00000 n +0000637609 00000 n +0000641642 00000 n +0000642026 00000 n +0000647061 00000 n +0000653795 00000 n +0000655285 00000 n +0000653539 00000 n +0000659569 00000 n +0000659954 00000 n +0000664122 00000 n +0000664250 00000 n +0000665539 00000 n +0000666386 00000 n +0000666578 00000 n +0000670509 00000 n +0000670963 00000 n +0000671417 00000 n +0000671676 00000 n +0000682601 00000 n +0000686069 00000 n +0000686389 00000 n +0000686840 00000 n +0000692062 00000 n +0000692253 00000 n +0000692446 00000 n +0000695280 00000 n +0000695603 00000 n +0000696179 00000 n +0000696435 00000 n +0000700781 00000 n +0000701294 00000 n +0000706833 00000 n +0000711478 00000 n +0000717490 00000 n +0000718132 00000 n +0000718325 00000 n +0000328138 00000 n +0000311924 00000 n +0000252757 00000 n +0000328074 00000 n +0000312908 00000 n +0000313061 00000 n +0000313216 00000 n +0000313374 00000 n +0000313533 00000 n +0000313697 00000 n +0000313861 00000 n +0000314029 00000 n +0000314197 00000 n +0001061151 00000 n +0001040964 00000 n +0001060976 00000 n +0000314363 00000 n +0000314529 00000 n +0000314694 00000 n +0000314860 00000 n +0000315032 00000 n +0000315204 00000 n +0000315368 00000 n +0000315533 00000 n +0000315706 00000 n +0000315879 00000 n +0000316031 00000 n +0000316184 00000 n +0000316342 00000 n +0000316501 00000 n +0000316657 00000 n +0000316814 00000 n +0000316969 00000 n +0000317125 00000 n +0000317281 00000 n +0000317438 00000 n +0000317590 00000 n +0000317743 00000 n +0000317896 00000 n +0000318049 00000 n +0000318205 00000 n +0000318361 00000 n +0000318517 00000 n +0000318673 00000 n +0000318835 00000 n +0000318997 00000 n +0000319156 00000 n +0000319315 00000 n +0000319478 00000 n +0000319641 00000 n +0000319793 00000 n +0000319945 00000 n +0000320111 00000 n +0000320277 00000 n +0000320434 00000 n +0000320592 00000 n +0000320750 00000 n +0000320909 00000 n +0000321068 00000 n +0000321227 00000 n +0000321385 00000 n +0000321544 00000 n +0000321703 00000 n +0000321862 00000 n +0000322026 00000 n +0000322190 00000 n +0000322352 00000 n +0000322515 00000 n +0000322682 00000 n +0000322849 00000 n +0000323017 00000 n +0000323185 00000 n +0000323349 00000 n +0000323513 00000 n +0000323683 00000 n +0000323853 00000 n +0000324025 00000 n +0000324197 00000 n +0000324356 00000 n +0000324516 00000 n +0000324668 00000 n +0000324820 00000 n +0000324978 00000 n +0000325136 00000 n +0000325299 00000 n +0000325462 00000 n +0000325624 00000 n +0000325786 00000 n +0000325945 00000 n +0000326105 00000 n +0000326267 00000 n +0000326430 00000 n +0000326596 00000 n +0000326762 00000 n +0000326926 00000 n +0000327090 00000 n +0000327251 00000 n +0000327412 00000 n +0000327577 00000 n +0000327742 00000 n +0000327908 00000 n +0000723064 00000 n +0000723384 00000 n +0000723513 00000 n +0000723706 00000 n +0000724878 00000 n +0000725136 00000 n +0000728131 00000 n +0000734798 00000 n +0000734926 00000 n +0000738237 00000 n +0000738365 00000 n +0000738754 00000 n +0000744093 00000 n +0000751517 00000 n +0000749770 00000 n +0000803381 00000 n +0000807245 00000 n +0000807501 00000 n +0000811397 00000 n +0000811913 00000 n +0000812368 00000 n +0000812560 00000 n +0000816451 00000 n +0000816968 00000 n +0000817097 00000 n +0000822464 00000 n +0000822786 00000 n +0000826404 00000 n +0000826788 00000 n +0000826980 00000 n +0000829530 00000 n +0000829722 00000 n +0000829913 00000 n +0000830106 00000 n +0000830363 00000 n +0000830556 00000 n +0000830749 00000 n +0000833505 00000 n +0000833762 00000 n +0000833955 00000 n +0000834277 00000 n +0000837847 00000 n +0000838040 00000 n +0000839582 00000 n +0000848388 00000 n +0000848581 00000 n +0000848906 00000 n +0000402101 00000 n +0000386323 00000 n +0000328254 00000 n +0000402037 00000 n +0000387289 00000 n +0000387445 00000 n +0000387602 00000 n +0000387757 00000 n +0000387912 00000 n +0000388065 00000 n +0000388218 00000 n +0000388370 00000 n +0000388522 00000 n +0000388687 00000 n +0000388852 00000 n +0000389004 00000 n +0000389157 00000 n +0000389310 00000 n +0000389464 00000 n +0000389628 00000 n +0000389792 00000 n +0000389956 00000 n +0000390120 00000 n +0000390281 00000 n +0000390442 00000 n +0000390594 00000 n +0000390746 00000 n +0000390906 00000 n +0000391067 00000 n +0000391224 00000 n +0000391382 00000 n +0000391539 00000 n +0000391697 00000 n +0000391858 00000 n +0000392020 00000 n +0000392185 00000 n +0000392350 00000 n +0000392513 00000 n 0000392676 00000 n -0000392841 00000 n -0000393006 00000 n -0000393174 00000 n -0000393342 00000 n -0000393499 00000 n -0000393657 00000 n -0000393827 00000 n -0000393998 00000 n -0000394154 00000 n -0000394311 00000 n -0000394472 00000 n -0000394634 00000 n -0000394795 00000 n -0000394957 00000 n -0000395119 00000 n -0000395282 00000 n -0000395444 00000 n -0000395607 00000 n -0000395768 00000 n -0000395930 00000 n -0000396094 00000 n -0000396259 00000 n -0000396426 00000 n +0000392837 00000 n +0000392998 00000 n +0000393162 00000 n +0000393326 00000 n +0000393491 00000 n +0000393656 00000 n +0000393824 00000 n +0000393992 00000 n +0000394162 00000 n +0000394333 00000 n +0000394489 00000 n +0000394646 00000 n +0000394807 00000 n +0000394969 00000 n +0000395130 00000 n +0000395292 00000 n +0000395454 00000 n +0000395617 00000 n +0000395779 00000 n +0000395942 00000 n +0000396103 00000 n +0000396265 00000 n +0000396429 00000 n 0000396594 00000 n -0000396751 00000 n -0000396909 00000 n -0000397077 00000 n -0000397246 00000 n -0000397399 00000 n -0000397553 00000 n -0000397707 00000 n -0000397862 00000 n -0000398024 00000 n -0000398187 00000 n -0000398360 00000 n -0000398534 00000 n -0000398708 00000 n -0000398883 00000 n -0000399053 00000 n -0000399224 00000 n -0000399393 00000 n -0000399563 00000 n -0000399713 00000 n -0000399865 00000 n -0000400017 00000 n -0000400170 00000 n -0000400323 00000 n -0000400477 00000 n -0000400630 00000 n -0000400784 00000 n -0000400937 00000 n -0000401091 00000 n -0000401243 00000 n -0000401397 00000 n -0000401549 00000 n -0001146808 00000 n -0000853959 00000 n -0000854151 00000 n -0000852677 00000 n -0000858047 00000 n -0000858495 00000 n -0000861275 00000 n -0000861915 00000 n -0000865761 00000 n -0000866082 00000 n -0000870033 00000 n -0000870738 00000 n -0000874887 00000 n -0000875015 00000 n -0000875857 00000 n -0000876113 00000 n -0000876896 00000 n -0000881712 00000 n -0000885862 00000 n -0000887090 00000 n -0000896240 00000 n -0000896497 00000 n -0000907218 00000 n -0000913730 00000 n -0000917180 00000 n -0000917372 00000 n -0000918086 00000 n -0000918536 00000 n -0000921268 00000 n -0000921910 00000 n -0000922688 00000 n -0000926799 00000 n -0000927184 00000 n -0000932279 00000 n -0000932536 00000 n -0000934554 00000 n -0000937461 00000 n -0000937591 00000 n -0000938621 00000 n -0000943603 00000 n -0000948540 00000 n -0000948859 00000 n -0000949177 00000 n -0000953175 00000 n -0000953433 00000 n -0000957350 00000 n -0000962545 00000 n -0000414657 00000 n -0000412171 00000 n -0000401882 00000 n -0000414593 00000 n -0000412435 00000 n -0000412588 00000 n -0000412742 00000 n -0000412895 00000 n -0000413049 00000 n -0000413201 00000 n -0000413354 00000 n -0000413506 00000 n -0000413659 00000 n -0000413813 00000 n -0000413968 00000 n -0000414124 00000 n -0000414282 00000 n -0000414437 00000 n -0000962867 00000 n -0000963124 00000 n -0000966180 00000 n -0000966374 00000 n -0000966568 00000 n -0000966890 00000 n -0000970856 00000 n -0000417306 00000 n -0000416698 00000 n -0000414759 00000 n -0000417179 00000 n -0000416854 00000 n -0000417016 00000 n -0000751504 00000 n -0000422425 00000 n -0000419999 00000 n -0000417408 00000 n -0000420551 00000 n -0000420615 00000 n -0000420679 00000 n -0000420146 00000 n -0000420743 00000 n -0000420935 00000 n -0000420998 00000 n -0000421062 00000 n -0000421252 00000 n -0000421316 00000 n -0000421380 00000 n -0000421446 00000 n -0000421512 00000 n -0000421576 00000 n -0000421640 00000 n -0000421706 00000 n -0000421772 00000 n -0000421836 00000 n -0000421900 00000 n -0000421966 00000 n -0000422031 00000 n -0000422097 00000 n -0000422163 00000 n -0000422229 00000 n -0000422293 00000 n -0000422359 00000 n -0000428326 00000 n -0000424704 00000 n -0000422541 00000 n -0000424830 00000 n -0000424896 00000 n -0000424962 00000 n -0000425028 00000 n -0000425094 00000 n -0000425158 00000 n -0000425350 00000 n -0000425414 00000 n -0000425478 00000 n -0000425542 00000 n -0000425608 00000 n -0000425672 00000 n -0000425737 00000 n -0000425801 00000 n -0000425867 00000 n -0000425929 00000 n -0000425993 00000 n -0000426057 00000 n -0000426123 00000 n -0000426187 00000 n -0000426252 00000 n -0000426316 00000 n -0000426382 00000 n -0000426446 00000 n -0000426510 00000 n -0000426574 00000 n -0000426640 00000 n -0000426704 00000 n -0000426769 00000 n -0000426833 00000 n -0000426899 00000 n -0000426963 00000 n -0000427028 00000 n -0000427092 00000 n -0000427158 00000 n -0000427222 00000 n -0000427286 00000 n -0000427350 00000 n -0000427415 00000 n -0000427481 00000 n -0000427547 00000 n -0000427613 00000 n -0000427679 00000 n -0000427745 00000 n -0000427811 00000 n -0000427877 00000 n -0000427943 00000 n -0000428005 00000 n -0000428069 00000 n -0000428133 00000 n -0000428197 00000 n -0000430688 00000 n -0000429867 00000 n -0000428442 00000 n -0000430238 00000 n -0000430302 00000 n -0000430366 00000 n -0000430430 00000 n -0000430494 00000 n -0001050566 00000 n -0001038353 00000 n -0001050392 00000 n -0000430014 00000 n -0000430558 00000 n -0000430622 00000 n -0000976909 00000 n -0000436302 00000 n -0000433081 00000 n -0000430832 00000 n -0000434828 00000 n -0000434892 00000 n -0000434956 00000 n -0001037593 00000 n -0001027574 00000 n -0001037415 00000 n -0000435022 00000 n -0000433291 00000 n -0000433450 00000 n -0000435086 00000 n -0000435150 00000 n -0000435214 00000 n -0000435280 00000 n -0000435344 00000 n -0000435407 00000 n -0000435469 00000 n -0000433606 00000 n -0000435533 00000 n -0000433765 00000 n -0000435597 00000 n -0000433927 00000 n -0000435661 00000 n -0000434091 00000 n -0000435725 00000 n -0000434252 00000 n -0000435789 00000 n -0000434416 00000 n -0000435853 00000 n -0000436044 00000 n -0000436108 00000 n -0000436172 00000 n -0000436236 00000 n -0001146933 00000 n -0000439906 00000 n -0000438046 00000 n -0000436446 00000 n -0000438299 00000 n -0000438490 00000 n -0000438554 00000 n -0000438618 00000 n -0000438682 00000 n -0000438748 00000 n -0000438812 00000 n -0000438876 00000 n -0000438942 00000 n -0000439008 00000 n -0000439200 00000 n -0000439264 00000 n -0000439328 00000 n -0000439392 00000 n -0000439458 00000 n -0000439650 00000 n -0000439712 00000 n -0000439776 00000 n -0000439840 00000 n -0000445186 00000 n -0000442710 00000 n -0000440036 00000 n -0000443184 00000 n -0000443376 00000 n -0000443440 00000 n -0000442866 00000 n -0000443504 00000 n -0000443570 00000 n -0000443634 00000 n -0000443828 00000 n -0000443892 00000 n -0000443956 00000 n -0000444022 00000 n -0000444088 00000 n -0000444154 00000 n -0000444218 00000 n -0000444284 00000 n -0000444349 00000 n -0000444414 00000 n -0000444478 00000 n -0000444670 00000 n -0000444734 00000 n -0000443023 00000 n -0000444800 00000 n -0000444864 00000 n -0000444930 00000 n -0000444994 00000 n -0000445058 00000 n -0000445122 00000 n -0000977295 00000 n -0000452758 00000 n -0000447917 00000 n -0000445316 00000 n -0000449666 00000 n -0000449730 00000 n -0000448136 00000 n -0000448301 00000 n -0000449796 00000 n -0000449860 00000 n -0000449924 00000 n -0000449988 00000 n -0000450052 00000 n -0000450118 00000 n -0000450184 00000 n -0000450249 00000 n -0000450313 00000 n -0000450379 00000 n -0000450443 00000 n -0000450506 00000 n -0000450572 00000 n -0000450635 00000 n -0000450700 00000 n -0000450764 00000 n -0000450828 00000 n -0000450892 00000 n -0000450957 00000 n -0000451020 00000 n -0000448474 00000 n -0000451085 00000 n -0000451149 00000 n -0000451214 00000 n -0000451278 00000 n -0000451342 00000 n -0000451406 00000 n -0000448646 00000 n -0000451471 00000 n -0000451535 00000 n -0000451600 00000 n -0000451664 00000 n -0000451729 00000 n -0000451794 00000 n -0000451858 00000 n -0000448817 00000 n -0000451923 00000 n -0000451987 00000 n -0000452052 00000 n -0000452115 00000 n -0000448981 00000 n -0000452180 00000 n -0000452244 00000 n +0000396761 00000 n +0000396929 00000 n +0000397086 00000 n +0000397244 00000 n +0000397412 00000 n +0000397581 00000 n +0000397734 00000 n +0000397888 00000 n +0000398042 00000 n +0000398197 00000 n +0000398359 00000 n +0000398522 00000 n +0000398695 00000 n +0000398869 00000 n +0000399043 00000 n +0000399218 00000 n +0000399388 00000 n +0000399559 00000 n +0000399728 00000 n +0000399898 00000 n +0000400048 00000 n +0000400200 00000 n +0000400352 00000 n +0000400505 00000 n +0000400658 00000 n +0000400812 00000 n +0000400965 00000 n +0000401119 00000 n +0000401272 00000 n +0000401426 00000 n +0000401578 00000 n +0000401732 00000 n +0000401884 00000 n +0001136142 00000 n +0000854297 00000 n +0000854489 00000 n +0000853015 00000 n +0000858385 00000 n +0000858833 00000 n +0000861613 00000 n +0000862253 00000 n +0000866099 00000 n +0000866420 00000 n +0000870371 00000 n +0000871076 00000 n +0000875096 00000 n +0000875224 00000 n +0000875546 00000 n +0000876386 00000 n +0000876643 00000 n +0000880571 00000 n +0000885774 00000 n +0000886550 00000 n +0000891375 00000 n +0000897117 00000 n +0000897374 00000 n +0000903066 00000 n +0000906516 00000 n +0000906708 00000 n +0000907422 00000 n +0000907872 00000 n +0000910605 00000 n +0000911247 00000 n +0000912025 00000 n +0000916136 00000 n +0000916521 00000 n +0000921615 00000 n +0000921872 00000 n +0000923890 00000 n +0000926796 00000 n +0000926926 00000 n +0000927956 00000 n +0000932936 00000 n +0000937873 00000 n +0000938192 00000 n +0000938510 00000 n +0000942508 00000 n +0000942766 00000 n +0000946684 00000 n +0000951879 00000 n +0000414993 00000 n +0000412507 00000 n +0000402217 00000 n +0000414929 00000 n +0000412771 00000 n +0000412924 00000 n +0000413078 00000 n +0000413231 00000 n +0000413385 00000 n +0000413537 00000 n +0000413690 00000 n +0000413842 00000 n +0000413995 00000 n +0000414149 00000 n +0000414304 00000 n +0000414460 00000 n +0000414618 00000 n +0000414773 00000 n +0000952201 00000 n +0000952458 00000 n +0000955515 00000 n +0000955709 00000 n +0000955903 00000 n +0000956225 00000 n +0000960189 00000 n +0000417642 00000 n +0000417034 00000 n +0000415095 00000 n +0000417515 00000 n +0000417190 00000 n +0000417352 00000 n +0000751842 00000 n +0000422761 00000 n +0000420335 00000 n +0000417744 00000 n +0000420887 00000 n +0000420951 00000 n +0000421015 00000 n +0000420482 00000 n +0000421079 00000 n +0000421271 00000 n +0000421334 00000 n +0000421398 00000 n +0000421588 00000 n +0000421652 00000 n +0000421716 00000 n +0000421782 00000 n +0000421848 00000 n +0000421912 00000 n +0000421976 00000 n +0000422042 00000 n +0000422108 00000 n +0000422172 00000 n +0000422236 00000 n +0000422302 00000 n +0000422367 00000 n +0000422433 00000 n +0000422499 00000 n +0000422565 00000 n +0000422629 00000 n +0000422695 00000 n +0000428662 00000 n +0000425040 00000 n +0000422877 00000 n +0000425166 00000 n +0000425232 00000 n +0000425298 00000 n +0000425364 00000 n +0000425430 00000 n +0000425494 00000 n +0000425686 00000 n +0000425750 00000 n +0000425814 00000 n +0000425878 00000 n +0000425944 00000 n +0000426008 00000 n +0000426073 00000 n +0000426137 00000 n +0000426203 00000 n +0000426265 00000 n +0000426329 00000 n +0000426393 00000 n +0000426459 00000 n +0000426523 00000 n +0000426588 00000 n +0000426652 00000 n +0000426718 00000 n +0000426782 00000 n +0000426846 00000 n +0000426910 00000 n +0000426976 00000 n +0000427040 00000 n +0000427105 00000 n +0000427169 00000 n +0000427235 00000 n +0000427299 00000 n +0000427364 00000 n +0000427428 00000 n +0000427494 00000 n +0000427558 00000 n +0000427622 00000 n +0000427686 00000 n +0000427751 00000 n +0000427817 00000 n +0000427883 00000 n +0000427949 00000 n +0000428015 00000 n +0000428081 00000 n +0000428147 00000 n +0000428213 00000 n +0000428279 00000 n +0000428341 00000 n +0000428405 00000 n +0000428469 00000 n +0000428533 00000 n +0000431024 00000 n +0000430203 00000 n +0000428778 00000 n +0000430574 00000 n +0000430638 00000 n +0000430702 00000 n +0000430766 00000 n +0000430830 00000 n +0001039900 00000 n +0001027687 00000 n +0001039726 00000 n +0000430350 00000 n +0000430894 00000 n +0000430958 00000 n +0000966242 00000 n +0000436638 00000 n +0000433417 00000 n +0000431168 00000 n +0000435164 00000 n +0000435228 00000 n +0000435292 00000 n +0001026927 00000 n +0001016908 00000 n +0001026749 00000 n +0000435358 00000 n +0000433627 00000 n +0000433786 00000 n +0000435422 00000 n +0000435486 00000 n +0000435550 00000 n +0000435616 00000 n +0000435680 00000 n +0000435743 00000 n +0000435805 00000 n +0000433942 00000 n +0000435869 00000 n +0000434101 00000 n +0000435933 00000 n +0000434263 00000 n +0000435997 00000 n +0000434427 00000 n +0000436061 00000 n +0000434588 00000 n +0000436125 00000 n +0000434752 00000 n +0000436189 00000 n +0000436380 00000 n +0000436444 00000 n +0000436508 00000 n +0000436572 00000 n +0001136267 00000 n +0000440242 00000 n +0000438382 00000 n +0000436782 00000 n +0000438635 00000 n +0000438826 00000 n +0000438890 00000 n +0000438954 00000 n +0000439018 00000 n +0000439084 00000 n +0000439148 00000 n +0000439212 00000 n +0000439278 00000 n +0000439344 00000 n +0000439536 00000 n +0000439600 00000 n +0000439664 00000 n +0000439728 00000 n +0000439794 00000 n +0000439986 00000 n +0000440048 00000 n +0000440112 00000 n +0000440176 00000 n +0000445522 00000 n +0000443046 00000 n +0000440372 00000 n +0000443520 00000 n +0000443712 00000 n +0000443776 00000 n +0000443202 00000 n +0000443840 00000 n +0000443906 00000 n +0000443970 00000 n +0000444164 00000 n +0000444228 00000 n +0000444292 00000 n +0000444358 00000 n +0000444424 00000 n +0000444490 00000 n +0000444554 00000 n +0000444620 00000 n +0000444685 00000 n +0000444750 00000 n +0000444814 00000 n +0000445006 00000 n +0000445070 00000 n +0000443359 00000 n +0000445136 00000 n +0000445200 00000 n +0000445266 00000 n +0000445330 00000 n +0000445394 00000 n +0000445458 00000 n +0000966628 00000 n +0000453095 00000 n +0000448254 00000 n +0000445652 00000 n +0000450003 00000 n +0000450067 00000 n +0000448473 00000 n +0000448638 00000 n +0000450133 00000 n +0000450197 00000 n +0000450261 00000 n +0000450325 00000 n +0000450389 00000 n +0000450455 00000 n +0000450521 00000 n +0000450586 00000 n +0000450650 00000 n +0000450716 00000 n +0000450780 00000 n +0000450843 00000 n +0000450909 00000 n +0000450972 00000 n +0000451037 00000 n +0000451101 00000 n +0000451165 00000 n +0000451229 00000 n +0000451294 00000 n +0000451357 00000 n +0000448811 00000 n +0000451422 00000 n +0000451486 00000 n +0000451551 00000 n +0000451615 00000 n +0000451679 00000 n +0000451743 00000 n +0000448983 00000 n +0000451808 00000 n +0000451872 00000 n +0000451937 00000 n +0000452001 00000 n +0000452066 00000 n +0000452131 00000 n +0000452195 00000 n 0000449154 00000 n -0000452309 00000 n -0000452373 00000 n -0000449325 00000 n -0000452438 00000 n -0000452502 00000 n -0000449495 00000 n -0000452567 00000 n -0000452629 00000 n -0000452694 00000 n -0000458247 00000 n -0000455298 00000 n -0000452902 00000 n -0000455800 00000 n -0000455865 00000 n -0000455929 00000 n -0000455454 00000 n -0000455994 00000 n -0000456058 00000 n -0000456123 00000 n -0000456187 00000 n -0000456252 00000 n -0000456316 00000 n -0000455628 00000 n -0000456381 00000 n -0000456445 00000 n -0000456510 00000 n -0000456574 00000 n -0000456639 00000 n -0000456703 00000 n -0000456768 00000 n -0000456832 00000 n -0000456897 00000 n -0000456961 00000 n -0000457155 00000 n -0000457219 00000 n -0000457410 00000 n -0000457601 00000 n -0000457665 00000 n -0000457729 00000 n -0000457793 00000 n -0000457858 00000 n -0000457923 00000 n -0000457988 00000 n -0000458052 00000 n -0000458117 00000 n -0000462361 00000 n -0000460384 00000 n -0000458377 00000 n -0000460753 00000 n -0000460945 00000 n -0000461137 00000 n -0000461330 00000 n -0000461394 00000 n -0000461589 00000 n -0000461782 00000 n -0000461975 00000 n -0000462039 00000 n -0000462103 00000 n -0000462167 00000 n -0000462231 00000 n -0000460531 00000 n -0000462297 00000 n -0000467662 00000 n -0000465162 00000 n -0000462491 00000 n -0000465464 00000 n -0000465528 00000 n -0000465592 00000 n -0000465656 00000 n -0000465848 00000 n -0000465912 00000 n -0000465977 00000 n -0000466043 00000 n -0000466109 00000 n -0000466173 00000 n -0000466239 00000 n -0000466433 00000 n -0000466497 00000 n -0000465309 00000 n -0000466691 00000 n -0000466754 00000 n -0000466820 00000 n -0000466886 00000 n -0000466949 00000 n -0000467012 00000 n -0000467076 00000 n -0000467142 00000 n -0000467208 00000 n -0000467272 00000 n -0000467338 00000 n -0000467402 00000 n -0000467466 00000 n -0000467532 00000 n -0000467596 00000 n -0001147058 00000 n -0000473557 00000 n -0000470624 00000 n -0000467792 00000 n -0000471417 00000 n -0000471481 00000 n -0000471547 00000 n -0000471613 00000 n -0000471677 00000 n -0000471743 00000 n -0000470798 00000 n -0000471807 00000 n -0000471871 00000 n -0000472066 00000 n -0000470952 00000 n -0000471105 00000 n -0000471263 00000 n -0000472259 00000 n -0000472323 00000 n -0000472518 00000 n -0000472582 00000 n -0000472648 00000 n -0000472714 00000 n -0000472780 00000 n -0000472846 00000 n -0000472911 00000 n -0000472977 00000 n -0000473041 00000 n -0000473107 00000 n -0000473172 00000 n -0000473300 00000 n -0000473364 00000 n -0000473427 00000 n -0000473493 00000 n -0000478832 00000 n -0000476060 00000 n +0000452260 00000 n +0000452324 00000 n +0000452389 00000 n +0000452452 00000 n +0000449318 00000 n +0000452517 00000 n +0000452581 00000 n +0000449491 00000 n +0000452646 00000 n +0000452710 00000 n +0000449662 00000 n +0000452775 00000 n +0000452839 00000 n +0000449832 00000 n +0000452904 00000 n +0000452966 00000 n +0000453031 00000 n +0000458584 00000 n +0000455635 00000 n +0000453239 00000 n +0000456137 00000 n +0000456202 00000 n +0000456266 00000 n +0000455791 00000 n +0000456331 00000 n +0000456395 00000 n +0000456460 00000 n +0000456524 00000 n +0000456589 00000 n +0000456653 00000 n +0000455965 00000 n +0000456718 00000 n +0000456782 00000 n +0000456847 00000 n +0000456911 00000 n +0000456976 00000 n +0000457040 00000 n +0000457105 00000 n +0000457169 00000 n +0000457234 00000 n +0000457298 00000 n +0000457492 00000 n +0000457556 00000 n +0000457747 00000 n +0000457938 00000 n +0000458002 00000 n +0000458066 00000 n +0000458130 00000 n +0000458195 00000 n +0000458260 00000 n +0000458325 00000 n +0000458389 00000 n +0000458454 00000 n +0000462698 00000 n +0000460721 00000 n +0000458714 00000 n +0000461090 00000 n +0000461282 00000 n +0000461474 00000 n +0000461667 00000 n +0000461731 00000 n +0000461926 00000 n +0000462119 00000 n +0000462312 00000 n +0000462376 00000 n +0000462440 00000 n +0000462504 00000 n +0000462568 00000 n +0000460868 00000 n +0000462634 00000 n +0000467999 00000 n +0000465499 00000 n +0000462828 00000 n +0000465801 00000 n +0000465865 00000 n +0000465929 00000 n +0000465993 00000 n +0000466185 00000 n +0000466249 00000 n +0000466314 00000 n +0000466380 00000 n +0000466446 00000 n +0000466510 00000 n +0000466576 00000 n +0000466770 00000 n +0000466834 00000 n +0000465646 00000 n +0000467028 00000 n +0000467091 00000 n +0000467157 00000 n +0000467223 00000 n +0000467286 00000 n +0000467349 00000 n +0000467413 00000 n +0000467479 00000 n +0000467545 00000 n +0000467609 00000 n +0000467675 00000 n +0000467739 00000 n +0000467803 00000 n +0000467869 00000 n +0000467933 00000 n +0001136392 00000 n +0000473894 00000 n +0000470961 00000 n +0000468129 00000 n +0000471754 00000 n +0000471818 00000 n +0000471884 00000 n +0000471950 00000 n +0000472014 00000 n +0000472080 00000 n +0000471135 00000 n +0000472144 00000 n +0000472208 00000 n +0000472403 00000 n +0000471289 00000 n +0000471442 00000 n +0000471600 00000 n +0000472596 00000 n +0000472660 00000 n +0000472855 00000 n +0000472919 00000 n +0000472985 00000 n +0000473051 00000 n +0000473117 00000 n +0000473183 00000 n +0000473248 00000 n +0000473314 00000 n +0000473378 00000 n +0000473444 00000 n +0000473509 00000 n +0000473637 00000 n 0000473701 00000 n -0000476366 00000 n -0000476430 00000 n -0000476559 00000 n -0000476623 00000 n -0000476687 00000 n -0000476753 00000 n -0000476817 00000 n -0000476881 00000 n -0000476947 00000 n -0000477076 00000 n -0000477140 00000 n -0000477206 00000 n -0001026996 00000 n -0001017014 00000 n -0001026817 00000 n -0000477271 00000 n -0000476207 00000 n -0000477336 00000 n -0000477400 00000 n -0000477466 00000 n -0000477532 00000 n -0000477598 00000 n -0000477664 00000 n -0000477730 00000 n -0000477794 00000 n -0000477860 00000 n -0000477924 00000 n -0000477989 00000 n -0000478055 00000 n -0000478120 00000 n -0000478248 00000 n -0000478311 00000 n -0000478375 00000 n -0000478440 00000 n -0000478506 00000 n -0000478572 00000 n -0000478636 00000 n -0000478701 00000 n -0000478767 00000 n -0000484025 00000 n -0000481134 00000 n -0000478976 00000 n -0000481440 00000 n -0000481504 00000 n -0000481568 00000 n -0000481632 00000 n -0000481823 00000 n -0000481952 00000 n -0000482016 00000 n -0000482082 00000 n -0000482148 00000 n -0000481281 00000 n -0000482214 00000 n -0000482278 00000 n -0000482342 00000 n -0000482407 00000 n -0000482471 00000 n -0000482535 00000 n -0000482600 00000 n -0000482664 00000 n -0000482730 00000 n -0000482796 00000 n -0000482924 00000 n -0000482988 00000 n -0000483054 00000 n -0000483120 00000 n -0000483184 00000 n -0000483248 00000 n -0000483312 00000 n -0000483376 00000 n -0000483442 00000 n -0000483506 00000 n -0000483572 00000 n -0000483638 00000 n -0000483832 00000 n -0000483961 00000 n -0000487992 00000 n -0000486185 00000 n -0000484183 00000 n -0000486311 00000 n -0000486439 00000 n -0000486503 00000 n -0000486569 00000 n -0000486633 00000 n -0000486699 00000 n -0000486765 00000 n -0000486894 00000 n -0000486958 00000 n -0000487024 00000 n -0000487090 00000 n -0000487156 00000 n -0000487220 00000 n -0000487286 00000 n -0000487414 00000 n -0000487478 00000 n -0000487544 00000 n -0000487608 00000 n -0000487800 00000 n -0000487864 00000 n -0000487929 00000 n -0000493760 00000 n -0000490852 00000 n -0000488136 00000 n -0000491691 00000 n -0000491755 00000 n -0000491819 00000 n -0000491883 00000 n -0000492012 00000 n -0000492076 00000 n -0000491026 00000 n -0000492141 00000 n -0000492336 00000 n -0000491198 00000 n -0000491365 00000 n -0000492400 00000 n -0000492529 00000 n -0000492593 00000 n -0000492657 00000 n -0000492721 00000 n -0000492787 00000 n -0000492853 00000 n -0000492917 00000 n -0000492983 00000 n -0000493049 00000 n -0000493113 00000 n -0000493177 00000 n -0000493243 00000 n -0000493308 00000 n -0000493371 00000 n -0000493434 00000 n -0000493500 00000 n -0000493565 00000 n -0000493629 00000 n -0000491533 00000 n -0000493695 00000 n -0000497693 00000 n -0000499903 00000 n -0000496786 00000 n -0000493904 00000 n -0000496912 00000 n -0000496976 00000 n -0000497041 00000 n -0000497107 00000 n -0000497173 00000 n -0000497239 00000 n -0000497305 00000 n -0000497371 00000 n -0000497435 00000 n -0000497501 00000 n -0000497567 00000 n -0000497631 00000 n -0000497822 00000 n -0000497886 00000 n -0000497950 00000 n -0000498014 00000 n -0000498080 00000 n -0000498146 00000 n -0000498210 00000 n -0000498274 00000 n -0000498338 00000 n -0000498404 00000 n -0000498470 00000 n -0000498535 00000 n -0000498601 00000 n -0000498666 00000 n -0000498730 00000 n -0000498794 00000 n -0000498859 00000 n -0000498925 00000 n -0000498991 00000 n -0000499057 00000 n -0000499123 00000 n -0000499189 00000 n -0000499253 00000 n -0000499317 00000 n -0000499381 00000 n -0000499447 00000 n -0000499511 00000 n -0000499577 00000 n -0000499641 00000 n -0000499707 00000 n -0000499773 00000 n -0000499839 00000 n -0001147183 00000 n -0000505754 00000 n -0000503095 00000 n -0000500061 00000 n -0000503413 00000 n -0000503477 00000 n -0000503543 00000 n -0000503609 00000 n -0000503673 00000 n -0000503739 00000 n -0000503803 00000 n -0000503998 00000 n -0000504062 00000 n -0000504128 00000 n -0000504194 00000 n -0000504260 00000 n -0000504326 00000 n -0000504392 00000 n -0000504457 00000 n -0000504522 00000 n -0000504588 00000 n -0000504650 00000 n -0000504716 00000 n -0000504782 00000 n -0000504848 00000 n -0000504912 00000 n -0000504978 00000 n -0000505042 00000 n -0000505106 00000 n -0000505170 00000 n -0000505234 00000 n -0000505298 00000 n -0000505362 00000 n -0000505428 00000 n -0000505494 00000 n -0000505558 00000 n -0000505622 00000 n -0000505688 00000 n -0000503242 00000 n -0000511354 00000 n -0000508387 00000 n -0000505898 00000 n -0000509032 00000 n -0000509225 00000 n -0000509289 00000 n -0000508552 00000 n -0000509355 00000 n -0000509418 00000 n -0000509482 00000 n -0000509546 00000 n -0000508715 00000 n -0000509612 00000 n -0000509678 00000 n -0000509744 00000 n -0000509809 00000 n -0000509875 00000 n -0000509939 00000 n -0000510005 00000 n -0000510070 00000 n -0000508873 00000 n -0000510262 00000 n -0000510454 00000 n -0000510517 00000 n -0000510580 00000 n -0000510643 00000 n -0001016335 00000 n -0001000622 00000 n -0001016160 00000 n -0000510709 00000 n -0000510773 00000 n -0000510839 00000 n -0000510903 00000 n -0000510967 00000 n -0000511031 00000 n -0000511095 00000 n -0000511290 00000 n -0000515874 00000 n -0000513569 00000 n -0000511512 00000 n -0000513870 00000 n -0000513934 00000 n -0000513998 00000 n -0000514062 00000 n -0000514126 00000 n -0000514190 00000 n -0000514385 00000 n -0000513716 00000 n -0000514449 00000 n -0000514512 00000 n -0000514576 00000 n -0000514640 00000 n -0000514704 00000 n -0000514769 00000 n -0000514833 00000 n -0000515028 00000 n -0000515092 00000 n -0000515158 00000 n -0000515224 00000 n -0000515290 00000 n -0000515356 00000 n -0000515422 00000 n -0000515486 00000 n -0000515552 00000 n -0000515618 00000 n -0000515682 00000 n -0000515746 00000 n -0000521019 00000 n -0000518754 00000 n -0000516004 00000 n -0000518880 00000 n -0000518944 00000 n -0000519073 00000 n -0000519137 00000 n -0000519203 00000 n -0000519269 00000 n -0000519335 00000 n -0000519401 00000 n -0000519467 00000 n -0000519531 00000 n -0000519595 00000 n -0000519661 00000 n -0000519727 00000 n -0000519793 00000 n -0000519859 00000 n -0000519923 00000 n -0000519987 00000 n -0000520180 00000 n -0000520243 00000 n -0000520306 00000 n -0000520501 00000 n -0000520565 00000 n -0000520759 00000 n -0000520823 00000 n -0000520889 00000 n -0000520955 00000 n -0000524922 00000 n -0000523033 00000 n -0000521149 00000 n -0000523510 00000 n -0000523701 00000 n -0000523189 00000 n -0000523355 00000 n -0000523765 00000 n -0000523829 00000 n -0000523895 00000 n -0000523959 00000 n -0000524023 00000 n -0000524087 00000 n -0000524151 00000 n -0000524215 00000 n -0000524279 00000 n -0000524343 00000 n -0000524407 00000 n -0000524471 00000 n -0000524535 00000 n -0000524600 00000 n -0000524664 00000 n -0000524729 00000 n -0000524794 00000 n -0000986650 00000 n -0000530045 00000 n -0000527461 00000 n +0000473764 00000 n +0000473830 00000 n +0000479169 00000 n +0000476397 00000 n +0000474038 00000 n +0000476703 00000 n +0000476767 00000 n +0000476896 00000 n +0000476960 00000 n +0000477024 00000 n +0000477090 00000 n +0000477154 00000 n +0000477218 00000 n +0000477284 00000 n +0000477413 00000 n +0000477477 00000 n +0000477543 00000 n +0001016330 00000 n +0001006348 00000 n +0001016151 00000 n +0000477608 00000 n +0000476544 00000 n +0000477673 00000 n +0000477737 00000 n +0000477803 00000 n +0000477869 00000 n +0000477935 00000 n +0000478001 00000 n +0000478067 00000 n +0000478131 00000 n +0000478197 00000 n +0000478261 00000 n +0000478326 00000 n +0000478392 00000 n +0000478457 00000 n +0000478585 00000 n +0000478648 00000 n +0000478712 00000 n +0000478777 00000 n +0000478843 00000 n +0000478909 00000 n +0000478973 00000 n +0000479038 00000 n +0000479104 00000 n +0000484362 00000 n +0000481471 00000 n +0000479313 00000 n +0000481777 00000 n +0000481841 00000 n +0000481905 00000 n +0000481969 00000 n +0000482160 00000 n +0000482289 00000 n +0000482353 00000 n +0000482419 00000 n +0000482485 00000 n +0000481618 00000 n +0000482551 00000 n +0000482615 00000 n +0000482679 00000 n +0000482744 00000 n +0000482808 00000 n +0000482872 00000 n +0000482937 00000 n +0000483001 00000 n +0000483067 00000 n +0000483133 00000 n +0000483261 00000 n +0000483325 00000 n +0000483391 00000 n +0000483457 00000 n +0000483521 00000 n +0000483585 00000 n +0000483649 00000 n +0000483713 00000 n +0000483779 00000 n +0000483843 00000 n +0000483909 00000 n +0000483975 00000 n +0000484169 00000 n +0000484298 00000 n +0000488329 00000 n +0000486522 00000 n +0000484520 00000 n +0000486648 00000 n +0000486776 00000 n +0000486840 00000 n +0000486906 00000 n +0000486970 00000 n +0000487036 00000 n +0000487102 00000 n +0000487231 00000 n +0000487295 00000 n +0000487361 00000 n +0000487427 00000 n +0000487493 00000 n +0000487557 00000 n +0000487623 00000 n +0000487751 00000 n +0000487815 00000 n +0000487881 00000 n +0000487945 00000 n +0000488137 00000 n +0000488201 00000 n +0000488266 00000 n +0000494097 00000 n +0000491189 00000 n +0000488473 00000 n +0000492028 00000 n +0000492092 00000 n +0000492156 00000 n +0000492220 00000 n +0000492349 00000 n +0000492413 00000 n +0000491363 00000 n +0000492478 00000 n +0000492673 00000 n +0000491535 00000 n +0000491702 00000 n +0000492737 00000 n +0000492866 00000 n +0000492930 00000 n +0000492994 00000 n +0000493058 00000 n +0000493124 00000 n +0000493190 00000 n +0000493254 00000 n +0000493320 00000 n +0000493386 00000 n +0000493450 00000 n +0000493514 00000 n +0000493580 00000 n +0000493645 00000 n +0000493708 00000 n +0000493771 00000 n +0000493837 00000 n +0000493902 00000 n +0000493966 00000 n +0000491870 00000 n +0000494032 00000 n +0000498030 00000 n +0000500240 00000 n +0000497123 00000 n +0000494241 00000 n +0000497249 00000 n +0000497313 00000 n +0000497378 00000 n +0000497444 00000 n +0000497510 00000 n +0000497576 00000 n +0000497642 00000 n +0000497708 00000 n +0000497772 00000 n +0000497838 00000 n +0000497904 00000 n +0000497968 00000 n +0000498159 00000 n +0000498223 00000 n +0000498287 00000 n +0000498351 00000 n +0000498417 00000 n +0000498483 00000 n +0000498547 00000 n +0000498611 00000 n +0000498675 00000 n +0000498741 00000 n +0000498807 00000 n +0000498872 00000 n +0000498938 00000 n +0000499003 00000 n +0000499067 00000 n +0000499131 00000 n +0000499196 00000 n +0000499262 00000 n +0000499328 00000 n +0000499394 00000 n +0000499460 00000 n +0000499526 00000 n +0000499590 00000 n +0000499654 00000 n +0000499718 00000 n +0000499784 00000 n +0000499848 00000 n +0000499914 00000 n +0000499978 00000 n +0000500044 00000 n +0000500110 00000 n +0000500176 00000 n +0001136517 00000 n +0000506091 00000 n +0000503432 00000 n +0000500398 00000 n +0000503750 00000 n +0000503814 00000 n +0000503880 00000 n +0000503946 00000 n +0000504010 00000 n +0000504076 00000 n +0000504140 00000 n +0000504335 00000 n +0000504399 00000 n +0000504465 00000 n +0000504531 00000 n +0000504597 00000 n +0000504663 00000 n +0000504729 00000 n +0000504794 00000 n +0000504859 00000 n +0000504925 00000 n +0000504987 00000 n +0000505053 00000 n +0000505119 00000 n +0000505185 00000 n +0000505249 00000 n +0000505315 00000 n +0000505379 00000 n +0000505443 00000 n +0000505507 00000 n +0000505571 00000 n +0000505635 00000 n +0000505699 00000 n +0000505765 00000 n +0000505831 00000 n +0000505895 00000 n +0000505959 00000 n +0000506025 00000 n +0000503579 00000 n +0000511691 00000 n +0000508724 00000 n +0000506235 00000 n +0000509369 00000 n +0000509562 00000 n +0000509626 00000 n +0000508889 00000 n +0000509692 00000 n +0000509755 00000 n +0000509819 00000 n +0000509883 00000 n +0000509052 00000 n +0000509949 00000 n +0000510015 00000 n +0000510081 00000 n +0000510146 00000 n +0000510212 00000 n +0000510276 00000 n +0000510342 00000 n +0000510407 00000 n +0000509210 00000 n +0000510599 00000 n +0000510791 00000 n +0000510854 00000 n +0000510917 00000 n +0000510980 00000 n +0001005669 00000 n +0000989956 00000 n +0001005494 00000 n +0000511046 00000 n +0000511110 00000 n +0000511176 00000 n +0000511240 00000 n +0000511304 00000 n +0000511368 00000 n +0000511432 00000 n +0000511627 00000 n +0000516211 00000 n +0000513906 00000 n +0000511849 00000 n +0000514207 00000 n +0000514271 00000 n +0000514335 00000 n +0000514399 00000 n +0000514463 00000 n +0000514527 00000 n +0000514722 00000 n +0000514053 00000 n +0000514786 00000 n +0000514849 00000 n +0000514913 00000 n +0000514977 00000 n +0000515041 00000 n +0000515106 00000 n +0000515170 00000 n +0000515365 00000 n +0000515429 00000 n +0000515495 00000 n +0000515561 00000 n +0000515627 00000 n +0000515693 00000 n +0000515759 00000 n +0000515823 00000 n +0000515889 00000 n +0000515955 00000 n +0000516019 00000 n +0000516083 00000 n +0000521356 00000 n +0000519091 00000 n +0000516341 00000 n +0000519217 00000 n +0000519281 00000 n +0000519410 00000 n +0000519474 00000 n +0000519540 00000 n +0000519606 00000 n +0000519672 00000 n +0000519738 00000 n +0000519804 00000 n +0000519868 00000 n +0000519932 00000 n +0000519998 00000 n +0000520064 00000 n +0000520130 00000 n +0000520196 00000 n +0000520260 00000 n +0000520324 00000 n +0000520517 00000 n +0000520580 00000 n +0000520643 00000 n +0000520838 00000 n +0000520902 00000 n +0000521096 00000 n +0000521160 00000 n +0000521226 00000 n +0000521292 00000 n +0000525259 00000 n +0000523370 00000 n +0000521486 00000 n +0000523847 00000 n +0000524038 00000 n +0000523526 00000 n +0000523692 00000 n +0000524102 00000 n +0000524166 00000 n +0000524232 00000 n +0000524296 00000 n +0000524360 00000 n +0000524424 00000 n +0000524488 00000 n +0000524552 00000 n +0000524616 00000 n +0000524680 00000 n +0000524744 00000 n +0000524808 00000 n +0000524872 00000 n +0000524937 00000 n +0000525001 00000 n 0000525066 00000 n -0000528109 00000 n -0000528238 00000 n -0000527626 00000 n -0000527799 00000 n -0000528302 00000 n -0000528365 00000 n -0000528428 00000 n -0000528494 00000 n -0000528559 00000 n -0000528623 00000 n -0000528689 00000 n -0000528753 00000 n -0000528948 00000 n -0000529141 00000 n -0000529334 00000 n -0000529398 00000 n -0000529464 00000 n -0000527951 00000 n -0000529657 00000 n -0000529721 00000 n -0000529785 00000 n -0000529850 00000 n -0000529916 00000 n -0000529980 00000 n -0001147308 00000 n -0000535268 00000 n -0000532921 00000 n -0000530175 00000 n -0000533395 00000 n -0000533459 00000 n -0000533077 00000 n -0000533523 00000 n -0000533587 00000 n -0000533651 00000 n -0000533717 00000 n -0000533783 00000 n -0000533848 00000 n -0000533914 00000 n -0000533980 00000 n -0000534046 00000 n -0000534112 00000 n -0000534176 00000 n -0000534241 00000 n -0000998393 00000 n -0000995896 00000 n -0000998224 00000 n -0000534305 00000 n -0000534368 00000 n -0000534432 00000 n -0000534495 00000 n -0000534690 00000 n -0000534753 00000 n -0000534817 00000 n -0000535141 00000 n -0000533235 00000 n -0000977938 00000 n -0000538603 00000 n -0000537185 00000 n -0000535412 00000 n -0000537311 00000 n -0000537440 00000 n -0000537504 00000 n -0000537567 00000 n -0000537632 00000 n -0000537697 00000 n -0000537763 00000 n -0000537958 00000 n -0000538087 00000 n -0000538151 00000 n -0000538214 00000 n -0000538343 00000 n -0000538407 00000 n -0000538473 00000 n -0000538539 00000 n -0000542794 00000 n -0000540522 00000 n -0000538747 00000 n -0000540648 00000 n -0000540777 00000 n -0000540841 00000 n -0000540905 00000 n -0000540970 00000 n -0000541036 00000 n -0000541100 00000 n -0000541164 00000 n -0000541230 00000 n -0000541296 00000 n -0000541360 00000 n -0000541426 00000 n -0000541490 00000 n -0000541554 00000 n -0000541619 00000 n -0000541813 00000 n -0000541877 00000 n -0000541941 00000 n -0000542007 00000 n -0000542073 00000 n -0000542139 00000 n -0000542205 00000 n -0000542270 00000 n -0000542336 00000 n -0000542402 00000 n -0000542468 00000 n -0000542534 00000 n -0000542600 00000 n -0000542664 00000 n -0000547834 00000 n -0000545570 00000 n -0000542966 00000 n -0000545892 00000 n -0000545956 00000 n -0000546085 00000 n -0000546148 00000 n -0000546213 00000 n -0000546279 00000 n -0000546474 00000 n -0000546667 00000 n -0000546730 00000 n -0000546796 00000 n -0000546860 00000 n -0000546924 00000 n -0000546988 00000 n -0000547053 00000 n -0000547247 00000 n -0000547311 00000 n -0000547377 00000 n -0000545717 00000 n -0000547443 00000 n -0000547509 00000 n -0000547573 00000 n -0000547639 00000 n -0000547704 00000 n -0000553347 00000 n -0000550705 00000 n -0000547978 00000 n -0000551344 00000 n -0000551408 00000 n -0000551537 00000 n -0000551601 00000 n -0000551665 00000 n -0000551731 00000 n -0000551797 00000 n -0000551863 00000 n -0000552056 00000 n -0000552120 00000 n -0000552184 00000 n -0000552248 00000 n -0000552312 00000 n -0000552508 00000 n -0000552572 00000 n -0000552636 00000 n -0000552700 00000 n -0000552765 00000 n -0000552831 00000 n -0000552895 00000 n -0000550870 00000 n -0000552960 00000 n -0000553024 00000 n -0000551029 00000 n -0000551187 00000 n -0000553089 00000 n -0000553153 00000 n -0000553218 00000 n -0000553284 00000 n -0000558845 00000 n -0000556026 00000 n -0000553491 00000 n -0000556845 00000 n -0000556909 00000 n -0000556975 00000 n -0000557039 00000 n -0000557103 00000 n -0000557167 00000 n -0000557233 00000 n -0000557299 00000 n -0000557363 00000 n -0000557427 00000 n -0000557493 00000 n -0000557688 00000 n -0000557752 00000 n -0000557816 00000 n -0000556200 00000 n -0000557879 00000 n -0000557943 00000 n -0000558008 00000 n -0000558074 00000 n -0000556358 00000 n -0000558138 00000 n -0000558202 00000 n -0000558267 00000 n -0000556521 00000 n -0000558331 00000 n -0000558395 00000 n -0000558460 00000 n -0000558653 00000 n -0000556682 00000 n -0000558717 00000 n -0001147433 00000 n -0000563368 00000 n -0000561032 00000 n -0000558975 00000 n -0000561158 00000 n -0000561222 00000 n -0000561351 00000 n -0000561415 00000 n -0000561478 00000 n -0000561542 00000 n -0000561608 00000 n -0000561674 00000 n -0000561740 00000 n -0000561806 00000 n -0000561870 00000 n -0000561934 00000 n -0000562000 00000 n -0000562066 00000 n -0000562261 00000 n -0000562325 00000 n -0000562390 00000 n -0000562454 00000 n -0000562520 00000 n -0000562584 00000 n -0000562650 00000 n -0000562716 00000 n -0000562780 00000 n -0000562846 00000 n -0000562910 00000 n -0000562976 00000 n -0000563042 00000 n -0000563108 00000 n -0000563174 00000 n -0000563240 00000 n -0000563306 00000 n -0000568593 00000 n -0000566047 00000 n -0000563526 00000 n -0000566522 00000 n -0000566586 00000 n -0000566652 00000 n -0000566847 00000 n -0000566911 00000 n -0000566975 00000 n -0000567041 00000 n -0000567105 00000 n -0000567169 00000 n -0000567235 00000 n -0000567301 00000 n -0000567364 00000 n -0000567430 00000 n -0000567495 00000 n -0000567559 00000 n -0000567623 00000 n -0000567689 00000 n -0000566203 00000 n -0000567882 00000 n -0000567946 00000 n -0000568010 00000 n -0000568074 00000 n -0000568138 00000 n -0000568203 00000 n -0000568269 00000 n -0000568333 00000 n -0000566362 00000 n -0000568398 00000 n -0000568462 00000 n -0000568527 00000 n -0000572801 00000 n -0000570835 00000 n -0000568765 00000 n -0000571308 00000 n -0000571372 00000 n -0000571436 00000 n -0000571502 00000 n -0000571568 00000 n -0000571632 00000 n -0000571698 00000 n -0000571764 00000 n -0000571828 00000 n -0000571894 00000 n -0000571958 00000 n -0000572023 00000 n -0000572088 00000 n -0000572152 00000 n -0000570991 00000 n -0000572217 00000 n -0000572410 00000 n -0000572474 00000 n -0000571150 00000 n -0000572538 00000 n -0000572603 00000 n -0000572669 00000 n -0000572735 00000 n -0000577648 00000 n -0000574879 00000 n -0000572945 00000 n -0000575005 00000 n -0000575325 00000 n -0000575517 00000 n -0000575581 00000 n -0000575645 00000 n -0000575709 00000 n -0000575773 00000 n -0000575837 00000 n -0000575902 00000 n -0000575966 00000 n -0000576030 00000 n -0000576095 00000 n -0000576159 00000 n -0000576225 00000 n -0000576291 00000 n -0000576357 00000 n -0000576421 00000 n -0000576485 00000 n -0000576550 00000 n -0000576614 00000 n -0000576679 00000 n -0000576745 00000 n -0000576809 00000 n -0000576873 00000 n -0000576937 00000 n -0000577002 00000 n -0000577066 00000 n -0000577131 00000 n -0000577196 00000 n -0000577262 00000 n -0000577326 00000 n -0000577390 00000 n -0000577455 00000 n -0000577519 00000 n -0000577583 00000 n -0000583183 00000 n -0000580535 00000 n -0000577764 00000 n -0000580661 00000 n -0000580725 00000 n -0000580791 00000 n -0000580857 00000 n -0000580922 00000 n -0000580986 00000 n -0000581050 00000 n -0000581115 00000 n -0000581179 00000 n -0000581244 00000 n -0000581309 00000 n -0000581374 00000 n -0000581438 00000 n -0000581501 00000 n -0000581566 00000 n -0000581632 00000 n -0000581696 00000 n -0000581760 00000 n -0000581826 00000 n -0000581890 00000 n -0000581954 00000 n -0000582018 00000 n -0000582082 00000 n -0000582146 00000 n -0000582212 00000 n -0000582278 00000 n -0000582342 00000 n -0000582406 00000 n -0000582471 00000 n -0000582537 00000 n -0000582602 00000 n -0000582668 00000 n -0000582731 00000 n -0000582795 00000 n -0000582860 00000 n -0000582926 00000 n -0000582991 00000 n -0000583055 00000 n -0000583119 00000 n -0000587441 00000 n -0000585514 00000 n -0000583327 00000 n -0000585640 00000 n -0000585833 00000 n -0000586025 00000 n -0000586089 00000 n -0000586153 00000 n -0000586217 00000 n -0000586281 00000 n -0000586346 00000 n -0000586412 00000 n -0000586476 00000 n -0000586540 00000 n -0000586605 00000 n -0000586800 00000 n -0000586993 00000 n -0000587057 00000 n -0000587121 00000 n -0000587185 00000 n -0000587249 00000 n -0000587314 00000 n -0000587378 00000 n -0001147558 00000 n -0000591346 00000 n -0000589678 00000 n -0000587557 00000 n -0000589804 00000 n -0000589868 00000 n -0000589932 00000 n -0000589996 00000 n -0000590060 00000 n -0000590254 00000 n -0000590318 00000 n -0000590381 00000 n -0000590443 00000 n -0000590507 00000 n -0000590572 00000 n -0000590636 00000 n -0000590700 00000 n -0000590893 00000 n -0000590957 00000 n -0000591152 00000 n -0000591216 00000 n -0000596865 00000 n -0000594576 00000 n -0000591476 00000 n -0000595383 00000 n -0000595512 00000 n -0000594750 00000 n -0000595576 00000 n -0000595640 00000 n -0000595704 00000 n -0000595768 00000 n -0000595833 00000 n -0000595897 00000 n -0000595961 00000 n -0000594903 00000 n -0000596026 00000 n -0000596090 00000 n -0000596154 00000 n -0000595062 00000 n -0000596348 00000 n -0000596411 00000 n -0000596475 00000 n -0000596539 00000 n -0000596605 00000 n -0000595223 00000 n -0000596671 00000 n -0000596737 00000 n -0000596801 00000 n -0000978391 00000 n -0000601745 00000 n -0000598971 00000 n +0000525131 00000 n +0000975983 00000 n +0000530382 00000 n +0000527798 00000 n +0000525403 00000 n +0000528446 00000 n +0000528575 00000 n +0000527963 00000 n +0000528136 00000 n +0000528639 00000 n +0000528702 00000 n +0000528765 00000 n +0000528831 00000 n +0000528896 00000 n +0000528960 00000 n +0000529026 00000 n +0000529090 00000 n +0000529285 00000 n +0000529478 00000 n +0000529671 00000 n +0000529735 00000 n +0000529801 00000 n +0000528288 00000 n +0000529994 00000 n +0000530058 00000 n +0000530122 00000 n +0000530187 00000 n +0000530253 00000 n +0000530317 00000 n +0001136642 00000 n +0000535605 00000 n +0000533258 00000 n +0000530512 00000 n +0000533732 00000 n +0000533796 00000 n +0000533414 00000 n +0000533860 00000 n +0000533924 00000 n +0000533988 00000 n +0000534054 00000 n +0000534120 00000 n +0000534185 00000 n +0000534251 00000 n +0000534317 00000 n +0000534383 00000 n +0000534449 00000 n +0000534513 00000 n +0000534578 00000 n +0000987727 00000 n +0000985230 00000 n +0000987558 00000 n +0000534642 00000 n +0000534705 00000 n +0000534769 00000 n +0000534832 00000 n +0000535027 00000 n +0000535090 00000 n +0000535154 00000 n +0000535478 00000 n +0000533572 00000 n +0000967271 00000 n +0000538940 00000 n +0000537522 00000 n +0000535749 00000 n +0000537648 00000 n +0000537777 00000 n +0000537841 00000 n +0000537904 00000 n +0000537969 00000 n +0000538034 00000 n +0000538100 00000 n +0000538295 00000 n +0000538424 00000 n +0000538488 00000 n +0000538551 00000 n +0000538680 00000 n +0000538744 00000 n +0000538810 00000 n +0000538876 00000 n +0000543131 00000 n +0000540859 00000 n +0000539084 00000 n +0000540985 00000 n +0000541114 00000 n +0000541178 00000 n +0000541242 00000 n +0000541307 00000 n +0000541373 00000 n +0000541437 00000 n +0000541501 00000 n +0000541567 00000 n +0000541633 00000 n +0000541697 00000 n +0000541763 00000 n +0000541827 00000 n +0000541891 00000 n +0000541956 00000 n +0000542150 00000 n +0000542214 00000 n +0000542278 00000 n +0000542344 00000 n +0000542410 00000 n +0000542476 00000 n +0000542542 00000 n +0000542607 00000 n +0000542673 00000 n +0000542739 00000 n +0000542805 00000 n +0000542871 00000 n +0000542937 00000 n +0000543001 00000 n +0000548171 00000 n +0000545907 00000 n +0000543303 00000 n +0000546229 00000 n +0000546293 00000 n +0000546422 00000 n +0000546485 00000 n +0000546550 00000 n +0000546616 00000 n +0000546811 00000 n +0000547004 00000 n +0000547067 00000 n +0000547133 00000 n +0000547197 00000 n +0000547261 00000 n +0000547325 00000 n +0000547390 00000 n +0000547584 00000 n +0000547648 00000 n +0000547714 00000 n +0000546054 00000 n +0000547780 00000 n +0000547846 00000 n +0000547910 00000 n +0000547976 00000 n +0000548041 00000 n +0000553684 00000 n +0000551042 00000 n +0000548315 00000 n +0000551681 00000 n +0000551745 00000 n +0000551874 00000 n +0000551938 00000 n +0000552002 00000 n +0000552068 00000 n +0000552134 00000 n +0000552200 00000 n +0000552393 00000 n +0000552457 00000 n +0000552521 00000 n +0000552585 00000 n +0000552649 00000 n +0000552845 00000 n +0000552909 00000 n +0000552973 00000 n +0000553037 00000 n +0000553102 00000 n +0000553168 00000 n +0000553232 00000 n +0000551207 00000 n +0000553297 00000 n +0000553361 00000 n +0000551366 00000 n +0000551524 00000 n +0000553426 00000 n +0000553490 00000 n +0000553555 00000 n +0000553621 00000 n +0000559183 00000 n +0000556364 00000 n +0000553828 00000 n +0000557183 00000 n +0000557247 00000 n +0000557313 00000 n +0000557377 00000 n +0000557441 00000 n +0000557505 00000 n +0000557571 00000 n +0000557637 00000 n +0000557701 00000 n +0000557765 00000 n +0000557831 00000 n +0000558026 00000 n +0000558090 00000 n +0000558154 00000 n +0000556538 00000 n +0000558217 00000 n +0000558281 00000 n +0000558346 00000 n +0000558412 00000 n +0000556696 00000 n +0000558476 00000 n +0000558540 00000 n +0000558605 00000 n +0000556859 00000 n +0000558669 00000 n +0000558733 00000 n +0000558798 00000 n +0000558991 00000 n +0000557020 00000 n +0000559055 00000 n +0001136767 00000 n +0000563706 00000 n +0000561370 00000 n +0000559313 00000 n +0000561496 00000 n +0000561560 00000 n +0000561689 00000 n +0000561753 00000 n +0000561816 00000 n +0000561880 00000 n +0000561946 00000 n +0000562012 00000 n +0000562078 00000 n +0000562144 00000 n +0000562208 00000 n +0000562272 00000 n +0000562338 00000 n +0000562404 00000 n +0000562599 00000 n +0000562663 00000 n +0000562728 00000 n +0000562792 00000 n +0000562858 00000 n +0000562922 00000 n +0000562988 00000 n +0000563054 00000 n +0000563118 00000 n +0000563184 00000 n +0000563248 00000 n +0000563314 00000 n +0000563380 00000 n +0000563446 00000 n +0000563512 00000 n +0000563578 00000 n +0000563644 00000 n +0000568931 00000 n +0000566385 00000 n +0000563864 00000 n +0000566860 00000 n +0000566924 00000 n +0000566990 00000 n +0000567185 00000 n +0000567249 00000 n +0000567313 00000 n +0000567379 00000 n +0000567443 00000 n +0000567507 00000 n +0000567573 00000 n +0000567639 00000 n +0000567702 00000 n +0000567768 00000 n +0000567833 00000 n +0000567897 00000 n +0000567961 00000 n +0000568027 00000 n +0000566541 00000 n +0000568220 00000 n +0000568284 00000 n +0000568348 00000 n +0000568412 00000 n +0000568476 00000 n +0000568541 00000 n +0000568607 00000 n +0000568671 00000 n +0000566700 00000 n +0000568736 00000 n +0000568800 00000 n +0000568865 00000 n +0000573139 00000 n +0000571173 00000 n +0000569103 00000 n +0000571646 00000 n +0000571710 00000 n +0000571774 00000 n +0000571840 00000 n +0000571906 00000 n +0000571970 00000 n +0000572036 00000 n +0000572102 00000 n +0000572166 00000 n +0000572232 00000 n +0000572296 00000 n +0000572361 00000 n +0000572426 00000 n +0000572490 00000 n +0000571329 00000 n +0000572555 00000 n +0000572748 00000 n +0000572812 00000 n +0000571488 00000 n +0000572876 00000 n +0000572941 00000 n +0000573007 00000 n +0000573073 00000 n +0000577986 00000 n +0000575217 00000 n +0000573283 00000 n +0000575343 00000 n +0000575663 00000 n +0000575855 00000 n +0000575919 00000 n +0000575983 00000 n +0000576047 00000 n +0000576111 00000 n +0000576175 00000 n +0000576240 00000 n +0000576304 00000 n +0000576368 00000 n +0000576433 00000 n +0000576497 00000 n +0000576563 00000 n +0000576629 00000 n +0000576695 00000 n +0000576759 00000 n +0000576823 00000 n +0000576888 00000 n +0000576952 00000 n +0000577017 00000 n +0000577083 00000 n +0000577147 00000 n +0000577211 00000 n +0000577275 00000 n +0000577340 00000 n +0000577404 00000 n +0000577469 00000 n +0000577534 00000 n +0000577600 00000 n +0000577664 00000 n +0000577728 00000 n +0000577793 00000 n +0000577857 00000 n +0000577921 00000 n +0000583521 00000 n +0000580873 00000 n +0000578102 00000 n +0000580999 00000 n +0000581063 00000 n +0000581129 00000 n +0000581195 00000 n +0000581260 00000 n +0000581324 00000 n +0000581388 00000 n +0000581453 00000 n +0000581517 00000 n +0000581582 00000 n +0000581647 00000 n +0000581712 00000 n +0000581776 00000 n +0000581839 00000 n +0000581904 00000 n +0000581970 00000 n +0000582034 00000 n +0000582098 00000 n +0000582164 00000 n +0000582228 00000 n +0000582292 00000 n +0000582356 00000 n +0000582420 00000 n +0000582484 00000 n +0000582550 00000 n +0000582616 00000 n +0000582680 00000 n +0000582744 00000 n +0000582809 00000 n +0000582875 00000 n +0000582940 00000 n +0000583006 00000 n +0000583069 00000 n +0000583133 00000 n +0000583198 00000 n +0000583264 00000 n +0000583329 00000 n +0000583393 00000 n +0000583457 00000 n +0000587779 00000 n +0000585852 00000 n +0000583665 00000 n +0000585978 00000 n +0000586171 00000 n +0000586363 00000 n +0000586427 00000 n +0000586491 00000 n +0000586555 00000 n +0000586619 00000 n +0000586684 00000 n +0000586750 00000 n +0000586814 00000 n +0000586878 00000 n +0000586943 00000 n +0000587138 00000 n +0000587331 00000 n +0000587395 00000 n +0000587459 00000 n +0000587523 00000 n +0000587587 00000 n +0000587652 00000 n +0000587716 00000 n +0001136892 00000 n +0000591684 00000 n +0000590016 00000 n +0000587895 00000 n +0000590142 00000 n +0000590206 00000 n +0000590270 00000 n +0000590334 00000 n +0000590398 00000 n +0000590592 00000 n +0000590656 00000 n +0000590719 00000 n +0000590781 00000 n +0000590845 00000 n +0000590910 00000 n +0000590974 00000 n +0000591038 00000 n +0000591231 00000 n +0000591295 00000 n +0000591490 00000 n +0000591554 00000 n +0000597203 00000 n +0000594914 00000 n +0000591814 00000 n +0000595721 00000 n +0000595850 00000 n +0000595088 00000 n +0000595914 00000 n +0000595978 00000 n +0000596042 00000 n +0000596106 00000 n +0000596171 00000 n +0000596235 00000 n +0000596299 00000 n +0000595241 00000 n +0000596364 00000 n +0000596428 00000 n +0000596492 00000 n +0000595400 00000 n +0000596686 00000 n +0000596749 00000 n +0000596813 00000 n +0000596877 00000 n +0000596943 00000 n +0000595561 00000 n 0000597009 00000 n -0000599097 00000 n -0000599161 00000 n -0000599225 00000 n -0000599289 00000 n -0000599354 00000 n -0000599420 00000 n -0000599486 00000 n -0000599552 00000 n -0000599616 00000 n -0000599679 00000 n -0000599744 00000 n -0000599808 00000 n -0000599874 00000 n -0000599940 00000 n -0000600004 00000 n -0000600068 00000 n -0000600132 00000 n -0000600196 00000 n -0000600262 00000 n -0000600327 00000 n -0000600392 00000 n -0000600456 00000 n -0000600520 00000 n -0000600585 00000 n -0000600649 00000 n -0000600715 00000 n -0000600778 00000 n -0000600842 00000 n -0000600907 00000 n -0000600971 00000 n -0000601037 00000 n -0000601099 00000 n -0000601163 00000 n -0000601228 00000 n -0000601292 00000 n -0000601358 00000 n -0000601422 00000 n -0000601486 00000 n -0000601551 00000 n -0000601615 00000 n -0000606614 00000 n -0000604062 00000 n -0000601875 00000 n -0000604362 00000 n -0000604491 00000 n -0000604555 00000 n -0000604618 00000 n -0000604209 00000 n -0000604682 00000 n -0000604746 00000 n -0000604810 00000 n -0000604874 00000 n -0000604938 00000 n -0000605003 00000 n -0000605069 00000 n -0000605135 00000 n -0000605200 00000 n -0000605264 00000 n -0000605328 00000 n -0000605393 00000 n -0000605457 00000 n -0000605521 00000 n -0000605586 00000 n -0000605650 00000 n -0000605714 00000 n -0000605779 00000 n -0000605843 00000 n -0000606036 00000 n -0000606100 00000 n -0000606164 00000 n -0000606228 00000 n -0000606292 00000 n -0000606357 00000 n -0000606423 00000 n -0000606485 00000 n -0000606549 00000 n -0000610840 00000 n -0000609173 00000 n -0000606744 00000 n -0000609299 00000 n -0000609363 00000 n -0000609427 00000 n -0000609491 00000 n -0000609556 00000 n -0000609620 00000 n -0000609684 00000 n -0000609749 00000 n -0000609813 00000 n -0000609877 00000 n -0000610070 00000 n -0000610263 00000 n -0000610455 00000 n -0000610519 00000 n -0000610583 00000 n -0000610648 00000 n -0000610712 00000 n -0000614836 00000 n -0000613357 00000 n -0000610956 00000 n -0000613483 00000 n -0000613612 00000 n -0000613934 00000 n -0000613998 00000 n -0000614062 00000 n -0000614382 00000 n -0000614446 00000 n -0000614512 00000 n -0000614578 00000 n -0000614642 00000 n -0000614708 00000 n -0001147683 00000 n -0000620915 00000 n -0000617769 00000 n -0000614952 00000 n -0000618074 00000 n -0000618203 00000 n -0000618332 00000 n -0000618396 00000 n -0000618462 00000 n -0000618527 00000 n -0000617916 00000 n -0000618591 00000 n -0000618720 00000 n -0000618784 00000 n -0000618850 00000 n -0000618913 00000 n -0000618977 00000 n -0000619042 00000 n -0000619106 00000 n -0000619171 00000 n -0000619235 00000 n -0000619299 00000 n -0000619365 00000 n -0000619560 00000 n -0000619623 00000 n -0000619687 00000 n -0000619751 00000 n -0000619816 00000 n -0000619881 00000 n -0000619947 00000 n -0000620011 00000 n -0000620076 00000 n -0000620141 00000 n -0000620205 00000 n -0000620270 00000 n -0000620335 00000 n -0000620399 00000 n -0000620464 00000 n -0000620529 00000 n -0000620593 00000 n -0000620658 00000 n -0000620723 00000 n -0000620787 00000 n -0000620852 00000 n -0000627487 00000 n -0000624272 00000 n -0000621045 00000 n -0000624577 00000 n -0000624641 00000 n -0000624705 00000 n -0000624769 00000 n -0000624835 00000 n -0000624900 00000 n -0000624966 00000 n -0000625030 00000 n -0000625095 00000 n -0000625160 00000 n -0000625223 00000 n -0000625288 00000 n -0000625353 00000 n -0000625417 00000 n -0000625482 00000 n -0000625547 00000 n -0000625610 00000 n -0000625675 00000 n -0000625740 00000 n -0000625804 00000 n -0000625869 00000 n -0000625934 00000 n -0000625998 00000 n -0000626063 00000 n -0000626128 00000 n -0000626192 00000 n -0000626257 00000 n -0000626322 00000 n -0000626386 00000 n -0000626451 00000 n -0000626516 00000 n -0000626582 00000 n -0000626646 00000 n -0000626711 00000 n -0000626776 00000 n -0000626841 00000 n -0000627035 00000 n -0000627099 00000 n -0000624419 00000 n -0000627293 00000 n -0000627357 00000 n -0000627423 00000 n -0000632080 00000 n -0000630189 00000 n -0000627645 00000 n -0000630668 00000 n -0000630732 00000 n -0000630796 00000 n -0000630859 00000 n -0000630923 00000 n -0000630987 00000 n -0000631182 00000 n -0000631246 00000 n -0000631309 00000 n -0000631372 00000 n -0000631436 00000 n -0000631502 00000 n -0000631694 00000 n -0000630345 00000 n -0000630505 00000 n -0000631758 00000 n -0000631822 00000 n -0000631886 00000 n -0000631952 00000 n -0000632016 00000 n -0000986971 00000 n -0000637335 00000 n -0000633830 00000 n -0000632210 00000 n -0000634312 00000 n -0000634376 00000 n -0000634440 00000 n -0000634504 00000 n -0000634569 00000 n -0000634631 00000 n -0000634696 00000 n -0000634760 00000 n -0000634824 00000 n -0000634889 00000 n -0000634953 00000 n -0000635017 00000 n -0000635082 00000 n -0000635145 00000 n -0000635209 00000 n -0000635274 00000 n -0000635338 00000 n -0000635402 00000 n -0000635467 00000 n -0000635531 00000 n -0000635595 00000 n -0000635658 00000 n -0000635722 00000 n -0000635786 00000 n -0000635851 00000 n -0000635915 00000 n -0000635979 00000 n -0000636044 00000 n -0000636108 00000 n -0000636172 00000 n -0000636237 00000 n -0000633986 00000 n -0000636430 00000 n -0000636494 00000 n -0000636558 00000 n -0000636622 00000 n -0000636687 00000 n -0000636753 00000 n -0000636819 00000 n -0000636883 00000 n -0000636948 00000 n -0000637014 00000 n -0000637078 00000 n -0000637142 00000 n -0000637206 00000 n -0000634154 00000 n -0000642594 00000 n -0000640135 00000 n -0000637437 00000 n -0000641111 00000 n -0000641240 00000 n -0000641433 00000 n -0000641497 00000 n -0000640318 00000 n -0000641560 00000 n -0000640476 00000 n -0000641624 00000 n -0000640632 00000 n -0000641816 00000 n -0000641880 00000 n -0000641946 00000 n -0000642012 00000 n -0000640789 00000 n -0000642076 00000 n -0000642140 00000 n -0000640942 00000 n -0000642204 00000 n -0000642268 00000 n -0000642332 00000 n -0000642396 00000 n -0000642462 00000 n -0000642528 00000 n -0000647494 00000 n -0000645427 00000 n -0000642710 00000 n -0000645553 00000 n -0000645617 00000 n -0000645681 00000 n -0000645747 00000 n -0000645813 00000 n -0000645879 00000 n -0000645945 00000 n -0000646011 00000 n -0000646075 00000 n -0000646141 00000 n -0000646205 00000 n -0000646271 00000 n -0000646335 00000 n -0000646400 00000 n -0000646464 00000 n -0000646529 00000 n -0000646593 00000 n -0000646657 00000 n -0000646852 00000 n -0000646916 00000 n -0000646982 00000 n -0000647046 00000 n -0000647110 00000 n -0000647174 00000 n -0000647238 00000 n -0000647302 00000 n -0000647366 00000 n -0000647430 00000 n -0001147808 00000 n -0000650482 00000 n -0000649076 00000 n -0000647610 00000 n -0000649202 00000 n -0000649266 00000 n -0000649330 00000 n -0000649394 00000 n -0000649458 00000 n -0000649522 00000 n -0000649586 00000 n -0000649650 00000 n -0000649714 00000 n -0000649778 00000 n -0000649841 00000 n -0000649906 00000 n -0000649970 00000 n -0000650034 00000 n -0000650098 00000 n -0000650163 00000 n -0000650227 00000 n -0000650290 00000 n -0000650354 00000 n -0000650418 00000 n -0000655585 00000 n -0000652837 00000 n -0000650584 00000 n -0000653137 00000 n -0000653265 00000 n -0000653329 00000 n -0000653393 00000 n -0000652984 00000 n -0000653586 00000 n -0000653650 00000 n -0000653714 00000 n -0000653780 00000 n -0000653844 00000 n -0000653908 00000 n -0000653970 00000 n -0000654035 00000 n -0000654101 00000 n -0000654166 00000 n -0000654230 00000 n -0000654293 00000 n -0000654357 00000 n -0000654421 00000 n -0000654486 00000 n -0000654552 00000 n -0000654618 00000 n -0000654684 00000 n -0000654750 00000 n -0000654816 00000 n -0000654882 00000 n -0000655076 00000 n -0000655140 00000 n -0000655202 00000 n -0000655266 00000 n -0000655330 00000 n -0000655393 00000 n -0000655457 00000 n -0000655522 00000 n -0000661175 00000 n -0000658079 00000 n -0000655715 00000 n -0000658205 00000 n -0000658269 00000 n -0000658396 00000 n -0000658460 00000 n -0000658524 00000 n -0000658588 00000 n -0000658652 00000 n -0000658716 00000 n -0000658780 00000 n -0000658845 00000 n -0000658909 00000 n -0000658973 00000 n -0000659037 00000 n -0000659102 00000 n -0000659166 00000 n -0000659360 00000 n -0000659424 00000 n -0000659487 00000 n -0000659550 00000 n -0000659745 00000 n -0000659809 00000 n -0000659875 00000 n -0000659941 00000 n -0000660005 00000 n -0000660071 00000 n -0000660135 00000 n -0000660200 00000 n -0000660266 00000 n -0000660330 00000 n -0000660396 00000 n -0000660460 00000 n -0000660525 00000 n -0000660590 00000 n -0000660655 00000 n -0000660719 00000 n -0000660784 00000 n -0000660850 00000 n -0000660914 00000 n -0000660979 00000 n -0000661045 00000 n -0000661111 00000 n -0000666304 00000 n -0000663205 00000 n -0000661305 00000 n -0000663331 00000 n -0000663395 00000 n -0000663459 00000 n -0000663524 00000 n -0000663589 00000 n -0000663655 00000 n -0000663719 00000 n -0000664041 00000 n -0000664104 00000 n -0000664170 00000 n -0000664234 00000 n -0000664298 00000 n -0000664362 00000 n -0000664427 00000 n -0000664490 00000 n -0000664553 00000 n -0000664617 00000 n -0000664682 00000 n -0000664748 00000 n -0000664812 00000 n -0000664876 00000 n -0000664940 00000 n -0000665005 00000 n -0000665071 00000 n -0000665135 00000 n -0000665330 00000 n -0000665394 00000 n -0000665460 00000 n -0000665525 00000 n -0000665591 00000 n -0000665657 00000 n -0000665721 00000 n -0000665786 00000 n -0000665850 00000 n -0000665916 00000 n -0000665982 00000 n -0000666176 00000 n -0000671657 00000 n -0000668632 00000 n -0000666420 00000 n -0000668939 00000 n -0000669068 00000 n -0000669132 00000 n -0000669198 00000 n -0000669262 00000 n -0000669326 00000 n -0000669392 00000 n -0000669456 00000 n -0000669521 00000 n -0000669587 00000 n -0000669651 00000 n -0000669716 00000 n -0000669780 00000 n -0000669846 00000 n -0000669909 00000 n -0000669974 00000 n -0000670039 00000 n -0000670105 00000 n -0000670300 00000 n -0000670364 00000 n -0000670430 00000 n -0000670496 00000 n -0000670560 00000 n -0000670754 00000 n -0000670818 00000 n -0000670884 00000 n -0000670949 00000 n -0000671015 00000 n -0000671208 00000 n -0000671272 00000 n -0000668779 00000 n -0000671466 00000 n -0000671530 00000 n -0000671594 00000 n -0000677619 00000 n -0000674447 00000 n -0000671773 00000 n -0000674573 00000 n -0000674701 00000 n -0000674765 00000 n -0000674894 00000 n -0000674958 00000 n -0000675024 00000 n -0000675090 00000 n -0000675219 00000 n -0000675283 00000 n -0000675347 00000 n -0000675413 00000 n -0000675477 00000 n -0000675541 00000 n -0000675606 00000 n -0000675671 00000 n -0000675737 00000 n -0000675803 00000 n -0000675867 00000 n -0000675933 00000 n -0000675996 00000 n -0000676061 00000 n -0000676126 00000 n -0000676190 00000 n -0000676256 00000 n -0000676322 00000 n -0000676388 00000 n -0000676454 00000 n -0000676520 00000 n -0000676584 00000 n -0000676650 00000 n -0000676714 00000 n -0000676778 00000 n -0000676842 00000 n -0000676907 00000 n -0000676973 00000 n -0000677039 00000 n -0000677105 00000 n -0000677171 00000 n -0000677236 00000 n -0000677365 00000 n -0000677429 00000 n -0000677492 00000 n -0000677555 00000 n -0001147933 00000 n -0000682327 00000 n -0000679802 00000 n -0000677721 00000 n -0000679928 00000 n -0000679992 00000 n -0000680121 00000 n -0000680185 00000 n -0000680251 00000 n -0000680380 00000 n -0000680444 00000 n -0000680510 00000 n -0000680576 00000 n -0000680642 00000 n -0000680708 00000 n -0000680774 00000 n -0000680903 00000 n -0000680966 00000 n -0000681030 00000 n -0000681159 00000 n -0000681223 00000 n -0000681289 00000 n -0000681355 00000 n -0000681421 00000 n -0000681550 00000 n -0000681614 00000 n -0000681742 00000 n -0000681806 00000 n -0000681872 00000 n -0000681938 00000 n -0000682004 00000 n -0000682133 00000 n -0000682197 00000 n -0000686566 00000 n -0000684840 00000 n -0000682429 00000 n -0000685146 00000 n -0000685210 00000 n -0000685339 00000 n -0000685403 00000 n -0000685469 00000 n -0000685533 00000 n -0000685599 00000 n -0000685665 00000 n -0000685860 00000 n -0000685924 00000 n -0000684987 00000 n -0000685987 00000 n -0000686180 00000 n -0000686244 00000 n -0000686308 00000 n -0000686372 00000 n -0000686436 00000 n -0000692367 00000 n -0000689348 00000 n -0000686696 00000 n -0000690171 00000 n -0000690300 00000 n -0000690364 00000 n -0000690430 00000 n -0000690494 00000 n -0000690559 00000 n -0000690624 00000 n -0000690688 00000 n -0000690753 00000 n -0000690818 00000 n -0000690884 00000 n -0000689522 00000 n +0000597075 00000 n +0000597139 00000 n +0000967724 00000 n +0000602083 00000 n +0000599309 00000 n +0000597347 00000 n +0000599435 00000 n +0000599499 00000 n +0000599563 00000 n +0000599627 00000 n +0000599692 00000 n +0000599758 00000 n +0000599824 00000 n +0000599890 00000 n +0000599954 00000 n +0000600017 00000 n +0000600082 00000 n +0000600146 00000 n +0000600212 00000 n +0000600278 00000 n +0000600342 00000 n +0000600406 00000 n +0000600470 00000 n +0000600534 00000 n +0000600600 00000 n +0000600665 00000 n +0000600730 00000 n +0000600794 00000 n +0000600858 00000 n +0000600923 00000 n +0000600987 00000 n +0000601053 00000 n +0000601116 00000 n +0000601180 00000 n +0000601245 00000 n +0000601309 00000 n +0000601375 00000 n +0000601437 00000 n +0000601501 00000 n +0000601566 00000 n +0000601630 00000 n +0000601696 00000 n +0000601760 00000 n +0000601824 00000 n +0000601889 00000 n +0000601953 00000 n +0000606952 00000 n +0000604400 00000 n +0000602213 00000 n +0000604700 00000 n +0000604829 00000 n +0000604893 00000 n +0000604956 00000 n +0000604547 00000 n +0000605020 00000 n +0000605084 00000 n +0000605148 00000 n +0000605212 00000 n +0000605276 00000 n +0000605341 00000 n +0000605407 00000 n +0000605473 00000 n +0000605538 00000 n +0000605602 00000 n +0000605666 00000 n +0000605731 00000 n +0000605795 00000 n +0000605859 00000 n +0000605924 00000 n +0000605988 00000 n +0000606052 00000 n +0000606117 00000 n +0000606181 00000 n +0000606374 00000 n +0000606438 00000 n +0000606502 00000 n +0000606566 00000 n +0000606630 00000 n +0000606695 00000 n +0000606761 00000 n +0000606823 00000 n +0000606887 00000 n +0000611178 00000 n +0000609511 00000 n +0000607082 00000 n +0000609637 00000 n +0000609701 00000 n +0000609765 00000 n +0000609829 00000 n +0000609894 00000 n +0000609958 00000 n +0000610022 00000 n +0000610087 00000 n +0000610151 00000 n +0000610215 00000 n +0000610408 00000 n +0000610601 00000 n +0000610793 00000 n +0000610857 00000 n +0000610921 00000 n +0000610986 00000 n +0000611050 00000 n +0000615174 00000 n +0000613695 00000 n +0000611294 00000 n +0000613821 00000 n +0000613950 00000 n +0000614272 00000 n +0000614336 00000 n +0000614400 00000 n +0000614720 00000 n +0000614784 00000 n +0000614850 00000 n +0000614916 00000 n +0000614980 00000 n +0000615046 00000 n +0001137017 00000 n +0000621253 00000 n +0000618107 00000 n +0000615290 00000 n +0000618412 00000 n +0000618541 00000 n +0000618670 00000 n +0000618734 00000 n +0000618800 00000 n +0000618865 00000 n +0000618254 00000 n +0000618929 00000 n +0000619058 00000 n +0000619122 00000 n +0000619188 00000 n +0000619251 00000 n +0000619315 00000 n +0000619380 00000 n +0000619444 00000 n +0000619509 00000 n +0000619573 00000 n +0000619637 00000 n +0000619703 00000 n +0000619898 00000 n +0000619961 00000 n +0000620025 00000 n +0000620089 00000 n +0000620154 00000 n +0000620219 00000 n +0000620285 00000 n +0000620349 00000 n +0000620414 00000 n +0000620479 00000 n +0000620543 00000 n +0000620608 00000 n +0000620673 00000 n +0000620737 00000 n +0000620802 00000 n +0000620867 00000 n +0000620931 00000 n +0000620996 00000 n +0000621061 00000 n +0000621125 00000 n +0000621190 00000 n +0000627825 00000 n +0000624610 00000 n +0000621383 00000 n +0000624915 00000 n +0000624979 00000 n +0000625043 00000 n +0000625107 00000 n +0000625173 00000 n +0000625238 00000 n +0000625304 00000 n +0000625368 00000 n +0000625433 00000 n +0000625498 00000 n +0000625561 00000 n +0000625626 00000 n +0000625691 00000 n +0000625755 00000 n +0000625820 00000 n +0000625885 00000 n +0000625948 00000 n +0000626013 00000 n +0000626078 00000 n +0000626142 00000 n +0000626207 00000 n +0000626272 00000 n +0000626336 00000 n +0000626401 00000 n +0000626466 00000 n +0000626530 00000 n +0000626595 00000 n +0000626660 00000 n +0000626724 00000 n +0000626789 00000 n +0000626854 00000 n +0000626920 00000 n +0000626984 00000 n +0000627049 00000 n +0000627114 00000 n +0000627179 00000 n +0000627373 00000 n +0000627437 00000 n +0000624757 00000 n +0000627631 00000 n +0000627695 00000 n +0000627761 00000 n +0000632418 00000 n +0000630527 00000 n +0000627983 00000 n +0000631006 00000 n +0000631070 00000 n +0000631134 00000 n +0000631197 00000 n +0000631261 00000 n +0000631325 00000 n +0000631520 00000 n +0000631584 00000 n +0000631647 00000 n +0000631710 00000 n +0000631774 00000 n +0000631840 00000 n +0000632032 00000 n +0000630683 00000 n +0000630843 00000 n +0000632096 00000 n +0000632160 00000 n +0000632224 00000 n +0000632290 00000 n +0000632354 00000 n +0000976304 00000 n +0000637673 00000 n +0000634168 00000 n +0000632548 00000 n +0000634650 00000 n +0000634714 00000 n +0000634778 00000 n +0000634842 00000 n +0000634907 00000 n +0000634969 00000 n +0000635034 00000 n +0000635098 00000 n +0000635162 00000 n +0000635227 00000 n +0000635291 00000 n +0000635355 00000 n +0000635420 00000 n +0000635483 00000 n +0000635547 00000 n +0000635612 00000 n +0000635676 00000 n +0000635740 00000 n +0000635805 00000 n +0000635869 00000 n +0000635933 00000 n +0000635996 00000 n +0000636060 00000 n +0000636124 00000 n +0000636189 00000 n +0000636253 00000 n +0000636317 00000 n +0000636382 00000 n +0000636446 00000 n +0000636510 00000 n +0000636575 00000 n +0000634324 00000 n +0000636768 00000 n +0000636832 00000 n +0000636896 00000 n +0000636960 00000 n +0000637025 00000 n +0000637091 00000 n +0000637157 00000 n +0000637221 00000 n +0000637286 00000 n +0000637352 00000 n +0000637416 00000 n +0000637480 00000 n +0000637544 00000 n +0000634492 00000 n +0000642932 00000 n +0000640473 00000 n +0000637775 00000 n +0000641449 00000 n +0000641578 00000 n +0000641771 00000 n +0000641835 00000 n +0000640656 00000 n +0000641898 00000 n +0000640814 00000 n +0000641962 00000 n +0000640970 00000 n +0000642154 00000 n +0000642218 00000 n +0000642284 00000 n +0000642350 00000 n +0000641127 00000 n +0000642414 00000 n +0000642478 00000 n +0000641280 00000 n +0000642542 00000 n +0000642606 00000 n +0000642670 00000 n +0000642734 00000 n +0000642800 00000 n +0000642866 00000 n +0000647832 00000 n +0000645765 00000 n +0000643048 00000 n +0000645891 00000 n +0000645955 00000 n +0000646019 00000 n +0000646085 00000 n +0000646151 00000 n +0000646217 00000 n +0000646283 00000 n +0000646349 00000 n +0000646413 00000 n +0000646479 00000 n +0000646543 00000 n +0000646609 00000 n +0000646673 00000 n +0000646738 00000 n +0000646802 00000 n +0000646867 00000 n +0000646931 00000 n +0000646995 00000 n +0000647190 00000 n +0000647254 00000 n +0000647320 00000 n +0000647384 00000 n +0000647448 00000 n +0000647512 00000 n +0000647576 00000 n +0000647640 00000 n +0000647704 00000 n +0000647768 00000 n +0001137142 00000 n +0000650820 00000 n +0000649414 00000 n +0000647948 00000 n +0000649540 00000 n +0000649604 00000 n +0000649668 00000 n +0000649732 00000 n +0000649796 00000 n +0000649860 00000 n +0000649924 00000 n +0000649988 00000 n +0000650052 00000 n +0000650116 00000 n +0000650179 00000 n +0000650244 00000 n +0000650308 00000 n +0000650372 00000 n +0000650436 00000 n +0000650501 00000 n +0000650565 00000 n +0000650628 00000 n +0000650692 00000 n +0000650756 00000 n +0000655923 00000 n +0000653175 00000 n +0000650922 00000 n +0000653475 00000 n +0000653603 00000 n +0000653667 00000 n +0000653731 00000 n +0000653322 00000 n +0000653924 00000 n +0000653988 00000 n +0000654052 00000 n +0000654118 00000 n +0000654182 00000 n +0000654246 00000 n +0000654308 00000 n +0000654373 00000 n +0000654439 00000 n +0000654504 00000 n +0000654568 00000 n +0000654631 00000 n +0000654695 00000 n +0000654759 00000 n +0000654824 00000 n +0000654890 00000 n +0000654956 00000 n +0000655022 00000 n +0000655088 00000 n +0000655154 00000 n +0000655220 00000 n +0000655414 00000 n +0000655478 00000 n +0000655540 00000 n +0000655604 00000 n +0000655668 00000 n +0000655731 00000 n +0000655795 00000 n +0000655860 00000 n +0000661513 00000 n +0000658417 00000 n +0000656053 00000 n +0000658543 00000 n +0000658607 00000 n +0000658734 00000 n +0000658798 00000 n +0000658862 00000 n +0000658926 00000 n +0000658990 00000 n +0000659054 00000 n +0000659118 00000 n +0000659183 00000 n +0000659247 00000 n +0000659311 00000 n +0000659375 00000 n +0000659440 00000 n +0000659504 00000 n +0000659698 00000 n +0000659762 00000 n +0000659825 00000 n +0000659888 00000 n +0000660083 00000 n +0000660147 00000 n +0000660213 00000 n +0000660279 00000 n +0000660343 00000 n +0000660409 00000 n +0000660473 00000 n +0000660538 00000 n +0000660604 00000 n +0000660668 00000 n +0000660734 00000 n +0000660798 00000 n +0000660863 00000 n +0000660928 00000 n +0000660993 00000 n +0000661057 00000 n +0000661122 00000 n +0000661188 00000 n +0000661252 00000 n +0000661317 00000 n +0000661383 00000 n +0000661449 00000 n +0000666642 00000 n +0000663543 00000 n +0000661643 00000 n +0000663669 00000 n +0000663733 00000 n +0000663797 00000 n +0000663862 00000 n +0000663927 00000 n +0000663993 00000 n +0000664057 00000 n +0000664379 00000 n +0000664442 00000 n +0000664508 00000 n +0000664572 00000 n +0000664636 00000 n +0000664700 00000 n +0000664765 00000 n +0000664828 00000 n +0000664891 00000 n +0000664955 00000 n +0000665020 00000 n +0000665086 00000 n +0000665150 00000 n +0000665214 00000 n +0000665278 00000 n +0000665343 00000 n +0000665409 00000 n +0000665473 00000 n +0000665668 00000 n +0000665732 00000 n +0000665798 00000 n +0000665863 00000 n +0000665929 00000 n +0000665995 00000 n +0000666059 00000 n +0000666124 00000 n +0000666188 00000 n +0000666254 00000 n +0000666320 00000 n +0000666514 00000 n +0000671995 00000 n +0000668970 00000 n +0000666758 00000 n +0000669277 00000 n +0000669406 00000 n +0000669470 00000 n +0000669536 00000 n +0000669600 00000 n +0000669664 00000 n +0000669730 00000 n +0000669794 00000 n +0000669859 00000 n +0000669925 00000 n +0000669989 00000 n +0000670054 00000 n +0000670118 00000 n +0000670184 00000 n +0000670247 00000 n +0000670312 00000 n +0000670377 00000 n +0000670443 00000 n +0000670638 00000 n +0000670702 00000 n +0000670768 00000 n +0000670834 00000 n +0000670898 00000 n +0000671092 00000 n +0000671156 00000 n +0000671222 00000 n +0000671287 00000 n +0000671353 00000 n +0000671546 00000 n +0000671610 00000 n +0000669117 00000 n +0000671804 00000 n +0000671868 00000 n +0000671932 00000 n +0000677957 00000 n +0000674785 00000 n +0000672111 00000 n +0000674911 00000 n +0000675039 00000 n +0000675103 00000 n +0000675232 00000 n +0000675296 00000 n +0000675362 00000 n +0000675428 00000 n +0000675557 00000 n +0000675621 00000 n +0000675685 00000 n +0000675751 00000 n +0000675815 00000 n +0000675879 00000 n +0000675944 00000 n +0000676009 00000 n +0000676075 00000 n +0000676141 00000 n +0000676205 00000 n +0000676271 00000 n +0000676334 00000 n +0000676399 00000 n +0000676464 00000 n +0000676528 00000 n +0000676594 00000 n +0000676660 00000 n +0000676726 00000 n +0000676792 00000 n +0000676858 00000 n +0000676922 00000 n +0000676988 00000 n +0000677052 00000 n +0000677116 00000 n +0000677180 00000 n +0000677245 00000 n +0000677311 00000 n +0000677377 00000 n +0000677443 00000 n +0000677509 00000 n +0000677574 00000 n +0000677703 00000 n +0000677767 00000 n +0000677830 00000 n +0000677893 00000 n +0001137267 00000 n +0000682665 00000 n +0000680140 00000 n +0000678059 00000 n +0000680266 00000 n +0000680330 00000 n +0000680459 00000 n +0000680523 00000 n +0000680589 00000 n +0000680718 00000 n +0000680782 00000 n +0000680848 00000 n +0000680914 00000 n +0000680980 00000 n +0000681046 00000 n +0000681112 00000 n +0000681241 00000 n +0000681304 00000 n +0000681368 00000 n +0000681497 00000 n +0000681561 00000 n +0000681627 00000 n +0000681693 00000 n +0000681759 00000 n +0000681888 00000 n +0000681952 00000 n +0000682080 00000 n +0000682144 00000 n +0000682210 00000 n +0000682276 00000 n +0000682342 00000 n +0000682471 00000 n +0000682535 00000 n +0000686904 00000 n +0000685178 00000 n +0000682767 00000 n +0000685484 00000 n +0000685548 00000 n +0000685677 00000 n +0000685741 00000 n +0000685807 00000 n +0000685871 00000 n +0000685937 00000 n +0000686003 00000 n +0000686198 00000 n +0000686262 00000 n +0000685325 00000 n +0000686325 00000 n +0000686518 00000 n +0000686582 00000 n +0000686646 00000 n +0000686710 00000 n +0000686774 00000 n +0000692705 00000 n 0000689686 00000 n -0000690948 00000 n -0000691012 00000 n -0000691077 00000 n -0000691142 00000 n -0000691206 00000 n -0000691271 00000 n -0000689850 00000 n -0000691336 00000 n -0000691400 00000 n -0000691465 00000 n -0000691530 00000 n -0000691594 00000 n -0000691659 00000 n -0000691851 00000 n -0000690007 00000 n -0000692044 00000 n -0000692237 00000 n -0000692301 00000 n -0000696480 00000 n -0000694752 00000 n -0000692483 00000 n -0000694878 00000 n -0000695071 00000 n -0000695135 00000 n -0000695201 00000 n -0000695393 00000 n -0000695457 00000 n -0000695521 00000 n -0000695584 00000 n -0000695649 00000 n -0000695713 00000 n -0000695777 00000 n -0000695969 00000 n -0000696033 00000 n -0000696225 00000 n -0000696288 00000 n -0000696352 00000 n -0000696416 00000 n -0000701470 00000 n -0000699477 00000 n -0000696582 00000 n -0000699603 00000 n -0000699667 00000 n -0000699732 00000 n -0000699796 00000 n -0000699861 00000 n -0000699926 00000 n -0000699990 00000 n -0000700055 00000 n -0000700120 00000 n -0000700184 00000 n -0000700249 00000 n -0000700314 00000 n -0000700378 00000 n -0000700572 00000 n -0000700636 00000 n -0000700700 00000 n -0000700765 00000 n -0000700828 00000 n -0000700892 00000 n -0000701085 00000 n -0000701149 00000 n -0000701213 00000 n -0000701277 00000 n -0000701341 00000 n -0000701406 00000 n -0000707658 00000 n -0000704765 00000 n -0000701572 00000 n -0000705787 00000 n -0000705851 00000 n -0000704948 00000 n -0000705116 00000 n -0000705916 00000 n -0000705980 00000 n -0000705283 00000 n -0000706045 00000 n -0000706109 00000 n -0000705453 00000 n -0000706174 00000 n -0000706238 00000 n -0000705617 00000 n -0000706304 00000 n -0000706366 00000 n -0000706430 00000 n -0000706624 00000 n -0000706688 00000 n -0000706752 00000 n -0000706813 00000 n -0000706878 00000 n -0000706944 00000 n -0000707010 00000 n -0000707074 00000 n -0000707139 00000 n -0000707205 00000 n -0000707269 00000 n -0000707334 00000 n -0000707398 00000 n -0000707462 00000 n -0000707527 00000 n -0000707592 00000 n -0001148058 00000 n -0000713005 00000 n -0000710308 00000 n -0000707774 00000 n -0000710946 00000 n -0000711010 00000 n -0000711075 00000 n -0000710473 00000 n -0000711268 00000 n -0000711332 00000 n -0000711398 00000 n -0000711463 00000 n -0000711527 00000 n -0000710631 00000 n -0000711591 00000 n -0000711657 00000 n -0000711721 00000 n -0000711785 00000 n -0000711849 00000 n -0000711913 00000 n -0000711978 00000 n -0000712042 00000 n -0000712106 00000 n -0000712170 00000 n -0000712235 00000 n -0000712299 00000 n -0000712363 00000 n -0000712427 00000 n -0000712491 00000 n -0000712555 00000 n -0000712619 00000 n -0000712683 00000 n -0000712748 00000 n -0000712812 00000 n -0000712876 00000 n -0000712940 00000 n -0000710788 00000 n -0000718567 00000 n -0000715845 00000 n -0000713107 00000 n -0000716831 00000 n -0000716895 00000 n -0000716959 00000 n -0000717023 00000 n -0000717087 00000 n -0000716028 00000 n -0000717281 00000 n -0000717345 00000 n -0000717408 00000 n -0000717472 00000 n -0000716186 00000 n -0000717537 00000 n -0000717601 00000 n -0000716343 00000 n -0000717665 00000 n -0000717729 00000 n -0000716502 00000 n -0000717923 00000 n -0000716662 00000 n -0000718116 00000 n -0000718180 00000 n -0000718243 00000 n -0000718307 00000 n -0000718373 00000 n -0000718439 00000 n -0000718503 00000 n -0000719511 00000 n -0000719255 00000 n -0000718697 00000 n -0000719381 00000 n -0000719445 00000 n -0000724862 00000 n -0000722186 00000 n -0000719613 00000 n -0000722662 00000 n -0000722854 00000 n -0000722918 00000 n -0000722983 00000 n -0000723304 00000 n -0000723496 00000 n -0000722342 00000 n -0000723560 00000 n -0000723626 00000 n -0000723692 00000 n -0000723758 00000 n -0000722501 00000 n -0000723824 00000 n -0000723889 00000 n -0000723954 00000 n -0000724019 00000 n -0000724084 00000 n -0000724150 00000 n -0000724216 00000 n -0000724280 00000 n -0000724344 00000 n -0000724409 00000 n -0000724474 00000 n -0000724668 00000 n -0000724732 00000 n -0000980960 00000 n -0000990791 00000 n -0000732205 00000 n -0000727187 00000 n +0000687034 00000 n +0000690509 00000 n +0000690638 00000 n +0000690702 00000 n +0000690768 00000 n +0000690832 00000 n +0000690897 00000 n +0000690962 00000 n +0000691026 00000 n +0000691091 00000 n +0000691156 00000 n +0000691222 00000 n +0000689860 00000 n +0000690024 00000 n +0000691286 00000 n +0000691350 00000 n +0000691415 00000 n +0000691480 00000 n +0000691544 00000 n +0000691609 00000 n +0000690188 00000 n +0000691674 00000 n +0000691738 00000 n +0000691803 00000 n +0000691868 00000 n +0000691932 00000 n +0000691997 00000 n +0000692189 00000 n +0000690345 00000 n +0000692382 00000 n +0000692575 00000 n +0000692639 00000 n +0000696818 00000 n +0000695090 00000 n +0000692821 00000 n +0000695216 00000 n +0000695409 00000 n +0000695473 00000 n +0000695539 00000 n +0000695731 00000 n +0000695795 00000 n +0000695859 00000 n +0000695922 00000 n +0000695987 00000 n +0000696051 00000 n +0000696115 00000 n +0000696307 00000 n +0000696371 00000 n +0000696563 00000 n +0000696626 00000 n +0000696690 00000 n +0000696754 00000 n +0000701808 00000 n +0000699815 00000 n +0000696920 00000 n +0000699941 00000 n +0000700005 00000 n +0000700070 00000 n +0000700134 00000 n +0000700199 00000 n +0000700264 00000 n +0000700328 00000 n +0000700393 00000 n +0000700458 00000 n +0000700522 00000 n +0000700587 00000 n +0000700652 00000 n +0000700716 00000 n +0000700910 00000 n +0000700974 00000 n +0000701038 00000 n +0000701103 00000 n +0000701166 00000 n +0000701230 00000 n +0000701423 00000 n +0000701487 00000 n +0000701551 00000 n +0000701615 00000 n +0000701679 00000 n +0000701744 00000 n +0000707996 00000 n +0000705103 00000 n +0000701910 00000 n +0000706125 00000 n +0000706189 00000 n +0000705286 00000 n +0000705454 00000 n +0000706254 00000 n +0000706318 00000 n +0000705621 00000 n +0000706383 00000 n +0000706447 00000 n +0000705791 00000 n +0000706512 00000 n +0000706576 00000 n +0000705955 00000 n +0000706642 00000 n +0000706704 00000 n +0000706768 00000 n +0000706962 00000 n +0000707026 00000 n +0000707090 00000 n +0000707151 00000 n +0000707216 00000 n +0000707282 00000 n +0000707348 00000 n +0000707412 00000 n +0000707477 00000 n +0000707543 00000 n +0000707607 00000 n +0000707672 00000 n +0000707736 00000 n +0000707800 00000 n +0000707865 00000 n +0000707930 00000 n +0001137392 00000 n +0000713343 00000 n +0000710646 00000 n +0000708112 00000 n +0000711284 00000 n +0000711348 00000 n +0000711413 00000 n +0000710811 00000 n +0000711606 00000 n +0000711670 00000 n +0000711736 00000 n +0000711801 00000 n +0000711865 00000 n +0000710969 00000 n +0000711929 00000 n +0000711995 00000 n +0000712059 00000 n +0000712123 00000 n +0000712187 00000 n +0000712251 00000 n +0000712316 00000 n +0000712380 00000 n +0000712444 00000 n +0000712508 00000 n +0000712573 00000 n +0000712637 00000 n +0000712701 00000 n +0000712765 00000 n +0000712829 00000 n +0000712893 00000 n +0000712957 00000 n +0000713021 00000 n +0000713086 00000 n +0000713150 00000 n +0000713214 00000 n +0000713278 00000 n +0000711126 00000 n +0000718905 00000 n +0000716183 00000 n +0000713445 00000 n +0000717169 00000 n +0000717233 00000 n +0000717297 00000 n +0000717361 00000 n +0000717425 00000 n +0000716366 00000 n +0000717619 00000 n +0000717683 00000 n +0000717746 00000 n +0000717810 00000 n +0000716524 00000 n +0000717875 00000 n +0000717939 00000 n +0000716681 00000 n +0000718003 00000 n +0000718067 00000 n +0000716840 00000 n +0000718261 00000 n +0000717000 00000 n +0000718454 00000 n +0000718518 00000 n +0000718581 00000 n +0000718645 00000 n +0000718711 00000 n +0000718777 00000 n +0000718841 00000 n +0000719849 00000 n +0000719593 00000 n +0000719035 00000 n +0000719719 00000 n +0000719783 00000 n +0000725200 00000 n +0000722524 00000 n +0000719951 00000 n +0000723000 00000 n +0000723192 00000 n +0000723256 00000 n +0000723321 00000 n +0000723642 00000 n +0000723834 00000 n +0000722680 00000 n +0000723898 00000 n +0000723964 00000 n +0000724030 00000 n +0000724096 00000 n +0000722839 00000 n +0000724162 00000 n +0000724227 00000 n +0000724292 00000 n +0000724357 00000 n +0000724422 00000 n +0000724488 00000 n +0000724554 00000 n +0000724618 00000 n +0000724682 00000 n +0000724747 00000 n +0000724812 00000 n 0000725006 00000 n -0000727664 00000 n -0000727922 00000 n -0000727986 00000 n -0000728052 00000 n -0000728116 00000 n -0000727343 00000 n -0000727505 00000 n -0000728180 00000 n -0000728245 00000 n -0000728309 00000 n -0000728374 00000 n -0000728438 00000 n -0000728502 00000 n -0000728567 00000 n -0000728632 00000 n -0000728697 00000 n -0000728763 00000 n -0000728829 00000 n -0000728894 00000 n -0000728959 00000 n -0000729024 00000 n -0000729088 00000 n -0000729152 00000 n -0000729216 00000 n -0000729281 00000 n -0000729346 00000 n -0000729411 00000 n -0000729475 00000 n -0000729539 00000 n -0000729604 00000 n -0000729668 00000 n -0000729732 00000 n -0000729797 00000 n -0000729861 00000 n -0000729927 00000 n -0000729993 00000 n -0000730059 00000 n -0000730124 00000 n -0000730189 00000 n -0000730253 00000 n -0000730317 00000 n -0000730383 00000 n -0000730447 00000 n -0000730513 00000 n -0000730579 00000 n -0000730645 00000 n -0000730711 00000 n -0000730777 00000 n -0000730843 00000 n -0000730909 00000 n -0000730975 00000 n -0000731041 00000 n -0000731106 00000 n -0000731171 00000 n -0000731235 00000 n -0000731299 00000 n -0000731365 00000 n -0000731430 00000 n -0000731495 00000 n -0000731560 00000 n -0000731624 00000 n -0000731688 00000 n -0000731753 00000 n -0000731818 00000 n -0000731883 00000 n -0000731948 00000 n -0000732012 00000 n -0000732076 00000 n -0000732141 00000 n -0000971114 00000 n -0000735108 00000 n -0000733772 00000 n -0000732349 00000 n -0000734070 00000 n -0000734134 00000 n -0000734200 00000 n -0000734266 00000 n -0000734332 00000 n -0000734396 00000 n -0000733919 00000 n -0000734717 00000 n -0000734781 00000 n -0000734847 00000 n -0000734912 00000 n -0000734978 00000 n -0000735042 00000 n -0001148183 00000 n -0000739835 00000 n -0000737709 00000 n -0000735238 00000 n -0000737835 00000 n -0000738156 00000 n -0000738220 00000 n -0000738286 00000 n -0000738350 00000 n -0000738544 00000 n -0000738607 00000 n -0000738670 00000 n -0000738734 00000 n -0000738798 00000 n -0000738863 00000 n -0000738929 00000 n -0000738995 00000 n -0000739061 00000 n -0000739127 00000 n -0000739191 00000 n -0000739255 00000 n -0000739320 00000 n -0000739384 00000 n -0000739449 00000 n -0000739513 00000 n -0000739577 00000 n -0000739642 00000 n -0000739706 00000 n -0000739771 00000 n -0000746595 00000 n -0000743304 00000 n -0000739965 00000 n -0000743430 00000 n -0000743494 00000 n -0000743559 00000 n -0000743625 00000 n -0000743691 00000 n -0000743884 00000 n -0000743948 00000 n -0000744012 00000 n -0000744076 00000 n -0000744140 00000 n -0000744205 00000 n -0000744270 00000 n -0000744335 00000 n -0000744399 00000 n -0000744463 00000 n -0000744528 00000 n -0000744593 00000 n -0000744657 00000 n -0000744722 00000 n -0000744787 00000 n -0000744851 00000 n -0000744916 00000 n -0000744981 00000 n -0000745045 00000 n -0000745110 00000 n -0000745175 00000 n -0000745238 00000 n -0000745303 00000 n -0000745368 00000 n -0000745432 00000 n -0000745497 00000 n -0000745562 00000 n -0000745626 00000 n -0000745691 00000 n -0000745756 00000 n -0000745820 00000 n -0000745885 00000 n -0000745950 00000 n -0000746014 00000 n -0000746079 00000 n -0000746144 00000 n -0000746208 00000 n -0000746273 00000 n -0000746338 00000 n -0000746402 00000 n -0000746467 00000 n -0000746532 00000 n -0000752932 00000 n -0000751568 00000 n -0000749058 00000 n -0000746697 00000 n -0000749368 00000 n -0000749496 00000 n -0000749561 00000 n -0000749626 00000 n -0000749689 00000 n -0000749754 00000 n -0000749819 00000 n -0000749883 00000 n -0000749948 00000 n -0000750013 00000 n -0000750077 00000 n -0000750142 00000 n -0000750207 00000 n -0000750273 00000 n -0000750339 00000 n -0000750403 00000 n -0000750467 00000 n -0000750532 00000 n -0000750597 00000 n -0000750661 00000 n -0000750726 00000 n -0000750791 00000 n -0000750855 00000 n -0000750920 00000 n -0000750985 00000 n -0000751049 00000 n -0000751114 00000 n -0000751308 00000 n -0000749205 00000 n -0000751372 00000 n -0000751438 00000 n -0000803107 00000 n -0000752785 00000 n -0000751670 00000 n -0000802528 00000 n -0000802592 00000 n -0000802656 00000 n -0000802785 00000 n -0000802849 00000 n -0000802915 00000 n -0000802979 00000 n -0000802367 00000 n -0000808068 00000 n -0000805616 00000 n -0000803260 00000 n -0000805742 00000 n -0000805871 00000 n -0000805935 00000 n -0000805999 00000 n -0000806065 00000 n -0000806131 00000 n -0000806197 00000 n -0000806261 00000 n -0000806325 00000 n -0000806389 00000 n -0000806454 00000 n -0000806519 00000 n -0000806583 00000 n -0000806648 00000 n -0000806713 00000 n -0000806777 00000 n -0000806842 00000 n -0000807035 00000 n -0000807099 00000 n -0000807291 00000 n -0000807355 00000 n -0000807419 00000 n -0000807482 00000 n -0000807548 00000 n -0000807612 00000 n -0000807678 00000 n -0000807742 00000 n -0000807808 00000 n -0000807872 00000 n -0000807938 00000 n -0000808002 00000 n -0000812607 00000 n -0000810805 00000 n -0000808170 00000 n -0000810931 00000 n -0000810995 00000 n -0000811188 00000 n -0000811252 00000 n -0000811318 00000 n -0000811382 00000 n -0000811447 00000 n -0000811511 00000 n -0000811704 00000 n -0000811768 00000 n -0000811834 00000 n -0000811900 00000 n -0000811964 00000 n -0000812159 00000 n -0000812351 00000 n -0000812415 00000 n -0000812479 00000 n -0000812543 00000 n -0001148308 00000 n -0000817792 00000 n -0000815675 00000 n -0000812723 00000 n -0000815985 00000 n -0000816049 00000 n -0000816241 00000 n -0000816304 00000 n -0000815822 00000 n -0000816369 00000 n -0000816433 00000 n -0000816499 00000 n -0000816564 00000 n -0000816888 00000 n -0000816952 00000 n -0000817018 00000 n -0000817082 00000 n -0000817146 00000 n -0000817210 00000 n -0000817275 00000 n -0000817341 00000 n -0000817407 00000 n -0000817471 00000 n -0000817535 00000 n -0000817601 00000 n -0000817666 00000 n -0000817730 00000 n -0000822511 00000 n -0000820901 00000 n -0000817908 00000 n -0000821027 00000 n -0000821091 00000 n -0000821156 00000 n -0000821221 00000 n -0000821285 00000 n -0000821350 00000 n -0000821416 00000 n -0000821480 00000 n -0000821544 00000 n -0000821609 00000 n -0000821674 00000 n -0000821738 00000 n -0000821803 00000 n -0000821867 00000 n -0000821932 00000 n -0000821998 00000 n -0000822062 00000 n -0000822254 00000 n -0000822318 00000 n -0000822384 00000 n -0000826706 00000 n -0000825167 00000 n -0000822627 00000 n -0000825293 00000 n -0000825422 00000 n -0000825486 00000 n -0000825549 00000 n -0000825613 00000 n -0000825677 00000 n -0000825740 00000 n -0000825806 00000 n -0000825871 00000 n -0000825937 00000 n -0000826001 00000 n -0000826195 00000 n -0000826258 00000 n -0000826322 00000 n -0000826386 00000 n -0000826579 00000 n -0000830475 00000 n -0000828809 00000 n -0000826822 00000 n -0000828935 00000 n -0000828999 00000 n -0000829128 00000 n -0000829321 00000 n -0000829511 00000 n -0000829704 00000 n -0000829897 00000 n -0000829961 00000 n -0000830154 00000 n -0000830347 00000 n -0000834003 00000 n -0000832590 00000 n -0000830577 00000 n -0000832716 00000 n -0000832780 00000 n -0000832909 00000 n -0000832973 00000 n -0000833039 00000 n -0000833103 00000 n -0000833296 00000 n -0000833360 00000 n -0000833553 00000 n -0000833746 00000 n -0000833809 00000 n -0000833875 00000 n -0000839695 00000 n -0000836929 00000 n -0000834105 00000 n -0000837055 00000 n -0000837184 00000 n -0000837248 00000 n -0000837314 00000 n -0000837380 00000 n -0000837445 00000 n -0000837638 00000 n -0000837830 00000 n -0000837893 00000 n -0000837956 00000 n -0000838020 00000 n -0000838085 00000 n -0000838149 00000 n -0000838213 00000 n -0000838277 00000 n -0000838342 00000 n -0000838406 00000 n -0000838471 00000 n -0000838535 00000 n -0000838600 00000 n -0000838663 00000 n -0000838728 00000 n -0000838792 00000 n -0000838857 00000 n -0000838921 00000 n -0000838986 00000 n -0000839050 00000 n -0000839115 00000 n -0000839179 00000 n -0000839373 00000 n -0000839437 00000 n -0000839500 00000 n -0000839565 00000 n -0000839631 00000 n -0001148433 00000 n -0000845380 00000 n -0000842861 00000 n -0000839811 00000 n -0000842987 00000 n -0000843051 00000 n -0000843115 00000 n -0000843181 00000 n -0000843245 00000 n -0000843311 00000 n -0000843377 00000 n -0000843441 00000 n -0000843507 00000 n -0000843571 00000 n -0000843635 00000 n -0000843699 00000 n -0000843764 00000 n -0000843827 00000 n -0000843892 00000 n -0000843958 00000 n -0000844022 00000 n -0000844087 00000 n -0000844153 00000 n -0000844216 00000 n -0000844281 00000 n -0000844346 00000 n -0000844410 00000 n -0000844474 00000 n -0000844539 00000 n -0000844603 00000 n -0000844667 00000 n -0000844731 00000 n -0000844797 00000 n -0000844862 00000 n -0000844928 00000 n -0000844992 00000 n -0000845056 00000 n -0000845122 00000 n -0000845186 00000 n -0000845252 00000 n -0000845316 00000 n -0000850304 00000 n -0000847360 00000 n -0000845496 00000 n -0000847660 00000 n -0000847724 00000 n -0000847788 00000 n -0000847852 00000 n -0000847918 00000 n -0000847984 00000 n -0000848179 00000 n -0000847507 00000 n -0000848372 00000 n -0000848436 00000 n -0000848502 00000 n -0000848697 00000 n -0000848761 00000 n -0000848825 00000 n -0000848891 00000 n -0000848955 00000 n -0000849019 00000 n -0000849083 00000 n -0000849148 00000 n -0000849212 00000 n -0000849276 00000 n -0000849341 00000 n -0000849405 00000 n -0000849469 00000 n -0000849534 00000 n -0000849598 00000 n -0000849662 00000 n -0000849727 00000 n -0000849791 00000 n -0000849855 00000 n -0000849920 00000 n -0000849982 00000 n -0000850046 00000 n -0000850111 00000 n -0000850175 00000 n -0000850239 00000 n -0000854599 00000 n -0000852295 00000 n -0000850406 00000 n -0000852613 00000 n -0000852741 00000 n -0000852805 00000 n -0000852869 00000 n -0000852934 00000 n -0000852998 00000 n -0000853063 00000 n -0000853127 00000 n -0000853191 00000 n -0000853256 00000 n -0000853320 00000 n -0000853384 00000 n -0000853449 00000 n -0000853512 00000 n -0000853576 00000 n -0000853641 00000 n -0000853705 00000 n -0000853769 00000 n -0000853834 00000 n -0000853896 00000 n -0000852442 00000 n -0000854088 00000 n -0000854279 00000 n -0000854343 00000 n -0000854407 00000 n -0000854471 00000 n -0000854535 00000 n -0000858688 00000 n -0000857408 00000 n -0000854715 00000 n -0000857534 00000 n -0000857663 00000 n -0000857727 00000 n -0000857791 00000 n -0000857855 00000 n -0000857919 00000 n -0000857983 00000 n -0000858175 00000 n -0000858239 00000 n -0000858303 00000 n -0000858367 00000 n -0000858431 00000 n -0000858624 00000 n -0000862172 00000 n -0000860957 00000 n -0000858804 00000 n -0000861083 00000 n -0000861147 00000 n -0000861211 00000 n -0000861404 00000 n -0000861468 00000 n -0000861532 00000 n -0000861596 00000 n -0000861660 00000 n -0000861724 00000 n -0000861787 00000 n -0000861851 00000 n -0000862044 00000 n -0000862108 00000 n -0000866469 00000 n -0000864876 00000 n -0000862274 00000 n -0000865373 00000 n -0000865437 00000 n -0000865503 00000 n -0000865569 00000 n -0000865032 00000 n -0000865633 00000 n -0000865698 00000 n -0000865200 00000 n -0000865891 00000 n -0000865954 00000 n -0000866018 00000 n -0000866211 00000 n -0000866275 00000 n -0000866339 00000 n -0000866403 00000 n -0001148558 00000 n -0000870801 00000 n -0000869416 00000 n -0000866585 00000 n -0000869715 00000 n -0000869779 00000 n -0000869843 00000 n -0000869907 00000 n -0000869970 00000 n -0000870162 00000 n -0000870226 00000 n -0000870290 00000 n -0000869563 00000 n -0000870354 00000 n -0000870416 00000 n -0000870480 00000 n -0000870544 00000 n -0000870608 00000 n -0000870672 00000 n -0000872120 00000 n -0000871674 00000 n -0000870917 00000 n -0000871800 00000 n -0000871929 00000 n -0000871993 00000 n -0000872056 00000 n -0000876960 00000 n -0000874508 00000 n -0000872236 00000 n -0000874823 00000 n -0000875144 00000 n -0000875208 00000 n -0000875274 00000 n -0000875338 00000 n -0000875403 00000 n -0000875469 00000 n -0000875533 00000 n -0000875598 00000 n -0000875664 00000 n -0000875729 00000 n -0000875793 00000 n -0000875986 00000 n -0000876050 00000 n -0000874655 00000 n -0000876242 00000 n -0000876306 00000 n -0000876372 00000 n -0000876438 00000 n -0000876504 00000 n -0000876568 00000 n -0000876634 00000 n -0000876698 00000 n -0000876764 00000 n -0000876830 00000 n -0000882033 00000 n -0000879838 00000 n -0000877104 00000 n -0000879964 00000 n -0000880028 00000 n -0000880157 00000 n -0000880221 00000 n -0000880285 00000 n -0000880350 00000 n -0000880416 00000 n -0000880479 00000 n -0000880542 00000 n -0000880606 00000 n -0000880669 00000 n -0000880735 00000 n -0000880799 00000 n -0000880863 00000 n -0000880929 00000 n -0000880993 00000 n -0000881057 00000 n -0000881121 00000 n -0000881185 00000 n -0000881251 00000 n -0000881317 00000 n -0000881383 00000 n -0000881448 00000 n -0000881514 00000 n -0000881580 00000 n -0000881646 00000 n -0000881839 00000 n -0000881903 00000 n -0000881967 00000 n -0000887154 00000 n -0000885284 00000 n -0000882191 00000 n -0000885410 00000 n -0000885474 00000 n -0000885538 00000 n -0000885602 00000 n -0000885666 00000 n -0000885730 00000 n -0000885796 00000 n -0000885991 00000 n -0000886055 00000 n -0000886121 00000 n -0000886185 00000 n -0000886251 00000 n -0000886315 00000 n -0000886380 00000 n -0000886444 00000 n -0000886508 00000 n -0000886572 00000 n -0000886636 00000 n -0000886701 00000 n -0000886765 00000 n -0000886829 00000 n -0000886895 00000 n -0000886959 00000 n -0000887024 00000 n -0000893134 00000 n -0000890686 00000 n -0000887284 00000 n -0000890812 00000 n -0000890876 00000 n -0000891005 00000 n -0000891069 00000 n -0000891133 00000 n -0000891197 00000 n -0000891261 00000 n -0000891325 00000 n -0000891391 00000 n -0000891455 00000 n -0000891519 00000 n -0000891583 00000 n -0000891647 00000 n -0000891713 00000 n -0000891779 00000 n -0000891845 00000 n -0000891909 00000 n -0000891973 00000 n -0000892037 00000 n -0000892101 00000 n -0000892165 00000 n -0000892229 00000 n -0000892293 00000 n -0000892357 00000 n -0000892421 00000 n -0000892486 00000 n -0000892550 00000 n -0000892614 00000 n -0000892678 00000 n -0000892744 00000 n -0000892810 00000 n -0000892872 00000 n -0000892936 00000 n -0000893002 00000 n -0000893068 00000 n -0001148683 00000 n -0000897012 00000 n -0000895664 00000 n -0000893264 00000 n -0000895790 00000 n -0000895854 00000 n -0000895918 00000 n -0000895984 00000 n -0000896048 00000 n -0000896112 00000 n -0000896176 00000 n -0000896369 00000 n -0000896433 00000 n -0000896625 00000 n -0000896689 00000 n -0000896755 00000 n -0000896819 00000 n -0000896883 00000 n -0000896947 00000 n -0000902482 00000 n -0000900285 00000 n -0000897142 00000 n -0000900411 00000 n -0000900475 00000 n -0000900539 00000 n -0000900603 00000 n -0000900668 00000 n -0000900733 00000 n -0000900798 00000 n -0000900864 00000 n -0000900928 00000 n -0000900992 00000 n -0000901057 00000 n -0000901123 00000 n -0000901189 00000 n -0000901253 00000 n -0000901319 00000 n -0000901385 00000 n -0000901451 00000 n -0000901515 00000 n -0000901581 00000 n -0000901645 00000 n -0000901709 00000 n -0000901773 00000 n -0000901837 00000 n -0000901901 00000 n -0000901965 00000 n -0000902029 00000 n -0000902095 00000 n -0000902159 00000 n -0000902225 00000 n -0000902291 00000 n -0000902356 00000 n -0000902420 00000 n -0000907281 00000 n -0000905216 00000 n -0000902598 00000 n -0000905342 00000 n -0000905406 00000 n -0000905470 00000 n -0000905534 00000 n -0000905600 00000 n -0000905664 00000 n -0000905727 00000 n -0000905793 00000 n -0000905857 00000 n -0000905922 00000 n -0000905986 00000 n -0000906050 00000 n -0000906114 00000 n -0000906177 00000 n -0000906241 00000 n -0000906305 00000 n -0000906369 00000 n -0000906435 00000 n -0000906501 00000 n -0000906567 00000 n -0000906631 00000 n -0000906697 00000 n -0000906763 00000 n -0000906828 00000 n -0000906892 00000 n -0000906957 00000 n -0000907023 00000 n -0000907089 00000 n -0000907154 00000 n -0000911578 00000 n -0000910224 00000 n -0000907383 00000 n +0000725070 00000 n +0000970293 00000 n +0000980125 00000 n +0000732543 00000 n +0000727525 00000 n +0000725344 00000 n +0000728002 00000 n +0000728260 00000 n +0000728324 00000 n +0000728390 00000 n +0000728454 00000 n +0000727681 00000 n +0000727843 00000 n +0000728518 00000 n +0000728583 00000 n +0000728647 00000 n +0000728712 00000 n +0000728776 00000 n +0000728840 00000 n +0000728905 00000 n +0000728970 00000 n +0000729035 00000 n +0000729101 00000 n +0000729167 00000 n +0000729232 00000 n +0000729297 00000 n +0000729362 00000 n +0000729426 00000 n +0000729490 00000 n +0000729554 00000 n +0000729619 00000 n +0000729684 00000 n +0000729749 00000 n +0000729813 00000 n +0000729877 00000 n +0000729942 00000 n +0000730006 00000 n +0000730070 00000 n +0000730135 00000 n +0000730199 00000 n +0000730265 00000 n +0000730331 00000 n +0000730397 00000 n +0000730462 00000 n +0000730527 00000 n +0000730591 00000 n +0000730655 00000 n +0000730721 00000 n +0000730785 00000 n +0000730851 00000 n +0000730917 00000 n +0000730983 00000 n +0000731049 00000 n +0000731115 00000 n +0000731181 00000 n +0000731247 00000 n +0000731313 00000 n +0000731379 00000 n +0000731444 00000 n +0000731509 00000 n +0000731573 00000 n +0000731637 00000 n +0000731703 00000 n +0000731768 00000 n +0000731833 00000 n +0000731898 00000 n +0000731962 00000 n +0000732026 00000 n +0000732091 00000 n +0000732156 00000 n +0000732221 00000 n +0000732286 00000 n +0000732350 00000 n +0000732414 00000 n +0000732479 00000 n +0000960447 00000 n +0000735446 00000 n +0000734110 00000 n +0000732687 00000 n +0000734408 00000 n +0000734472 00000 n +0000734538 00000 n +0000734604 00000 n +0000734670 00000 n +0000734734 00000 n +0000734257 00000 n +0000735055 00000 n +0000735119 00000 n +0000735185 00000 n +0000735250 00000 n +0000735316 00000 n +0000735380 00000 n +0001137517 00000 n +0000740173 00000 n +0000738047 00000 n +0000735576 00000 n +0000738173 00000 n +0000738494 00000 n +0000738558 00000 n +0000738624 00000 n +0000738688 00000 n +0000738882 00000 n +0000738945 00000 n +0000739008 00000 n +0000739072 00000 n +0000739136 00000 n +0000739201 00000 n +0000739267 00000 n +0000739333 00000 n +0000739399 00000 n +0000739465 00000 n +0000739529 00000 n +0000739593 00000 n +0000739658 00000 n +0000739722 00000 n +0000739787 00000 n +0000739851 00000 n +0000739915 00000 n +0000739980 00000 n +0000740044 00000 n +0000740109 00000 n +0000746933 00000 n +0000743642 00000 n +0000740303 00000 n +0000743768 00000 n +0000743832 00000 n +0000743897 00000 n +0000743963 00000 n +0000744029 00000 n +0000744222 00000 n +0000744286 00000 n +0000744350 00000 n +0000744414 00000 n +0000744478 00000 n +0000744543 00000 n +0000744608 00000 n +0000744673 00000 n +0000744737 00000 n +0000744801 00000 n +0000744866 00000 n +0000744931 00000 n +0000744995 00000 n +0000745060 00000 n +0000745125 00000 n +0000745189 00000 n +0000745254 00000 n +0000745319 00000 n +0000745383 00000 n +0000745448 00000 n +0000745513 00000 n +0000745576 00000 n +0000745641 00000 n +0000745706 00000 n +0000745770 00000 n +0000745835 00000 n +0000745900 00000 n +0000745964 00000 n +0000746029 00000 n +0000746094 00000 n +0000746158 00000 n +0000746223 00000 n +0000746288 00000 n +0000746352 00000 n +0000746417 00000 n +0000746482 00000 n +0000746546 00000 n +0000746611 00000 n +0000746676 00000 n +0000746740 00000 n +0000746805 00000 n +0000746870 00000 n +0000753270 00000 n +0000751906 00000 n +0000749396 00000 n +0000747035 00000 n +0000749706 00000 n +0000749834 00000 n +0000749899 00000 n +0000749964 00000 n +0000750027 00000 n +0000750092 00000 n +0000750157 00000 n +0000750221 00000 n +0000750286 00000 n +0000750351 00000 n +0000750415 00000 n +0000750480 00000 n +0000750545 00000 n +0000750611 00000 n +0000750677 00000 n +0000750741 00000 n +0000750805 00000 n +0000750870 00000 n +0000750935 00000 n +0000750999 00000 n +0000751064 00000 n +0000751129 00000 n +0000751193 00000 n +0000751258 00000 n +0000751323 00000 n +0000751387 00000 n +0000751452 00000 n +0000751646 00000 n +0000749543 00000 n +0000751710 00000 n +0000751776 00000 n +0000803445 00000 n +0000753123 00000 n +0000752008 00000 n +0000802866 00000 n +0000802930 00000 n +0000802994 00000 n +0000803123 00000 n +0000803187 00000 n +0000803253 00000 n +0000803317 00000 n +0000802705 00000 n +0000808406 00000 n +0000805954 00000 n +0000803598 00000 n +0000806080 00000 n +0000806209 00000 n +0000806273 00000 n +0000806337 00000 n +0000806403 00000 n +0000806469 00000 n +0000806535 00000 n +0000806599 00000 n +0000806663 00000 n +0000806727 00000 n +0000806792 00000 n +0000806857 00000 n +0000806921 00000 n +0000806986 00000 n +0000807051 00000 n +0000807115 00000 n +0000807180 00000 n +0000807373 00000 n +0000807437 00000 n +0000807629 00000 n +0000807693 00000 n +0000807757 00000 n +0000807820 00000 n +0000807886 00000 n +0000807950 00000 n +0000808016 00000 n +0000808080 00000 n +0000808146 00000 n +0000808210 00000 n +0000808276 00000 n +0000808340 00000 n +0000812945 00000 n +0000811143 00000 n +0000808508 00000 n +0000811269 00000 n +0000811333 00000 n +0000811526 00000 n +0000811590 00000 n +0000811656 00000 n +0000811720 00000 n +0000811785 00000 n +0000811849 00000 n +0000812042 00000 n +0000812106 00000 n +0000812172 00000 n +0000812238 00000 n +0000812302 00000 n +0000812497 00000 n +0000812689 00000 n +0000812753 00000 n +0000812817 00000 n +0000812881 00000 n +0001137642 00000 n +0000818130 00000 n +0000816013 00000 n +0000813061 00000 n +0000816323 00000 n +0000816387 00000 n +0000816579 00000 n +0000816642 00000 n +0000816160 00000 n +0000816707 00000 n +0000816771 00000 n +0000816837 00000 n +0000816902 00000 n +0000817226 00000 n +0000817290 00000 n +0000817356 00000 n +0000817420 00000 n +0000817484 00000 n +0000817548 00000 n +0000817613 00000 n +0000817679 00000 n +0000817745 00000 n +0000817809 00000 n +0000817873 00000 n +0000817939 00000 n +0000818004 00000 n +0000818068 00000 n +0000822849 00000 n +0000821239 00000 n +0000818246 00000 n +0000821365 00000 n +0000821429 00000 n +0000821494 00000 n +0000821559 00000 n +0000821623 00000 n +0000821688 00000 n +0000821754 00000 n +0000821818 00000 n +0000821882 00000 n +0000821947 00000 n +0000822012 00000 n +0000822076 00000 n +0000822141 00000 n +0000822205 00000 n +0000822270 00000 n +0000822336 00000 n +0000822400 00000 n +0000822592 00000 n +0000822656 00000 n +0000822722 00000 n +0000827044 00000 n +0000825505 00000 n +0000822965 00000 n +0000825631 00000 n +0000825760 00000 n +0000825824 00000 n +0000825887 00000 n +0000825951 00000 n +0000826015 00000 n +0000826078 00000 n +0000826144 00000 n +0000826209 00000 n +0000826275 00000 n +0000826339 00000 n +0000826533 00000 n +0000826596 00000 n +0000826660 00000 n +0000826724 00000 n +0000826917 00000 n +0000830813 00000 n +0000829147 00000 n +0000827160 00000 n +0000829273 00000 n +0000829337 00000 n +0000829466 00000 n +0000829659 00000 n +0000829849 00000 n +0000830042 00000 n +0000830235 00000 n +0000830299 00000 n +0000830492 00000 n +0000830685 00000 n +0000834341 00000 n +0000832928 00000 n +0000830915 00000 n +0000833054 00000 n +0000833118 00000 n +0000833247 00000 n +0000833311 00000 n +0000833377 00000 n +0000833441 00000 n +0000833634 00000 n +0000833698 00000 n +0000833891 00000 n +0000834084 00000 n +0000834147 00000 n +0000834213 00000 n +0000840033 00000 n +0000837267 00000 n +0000834443 00000 n +0000837393 00000 n +0000837522 00000 n +0000837586 00000 n +0000837652 00000 n +0000837718 00000 n +0000837783 00000 n +0000837976 00000 n +0000838168 00000 n +0000838231 00000 n +0000838294 00000 n +0000838358 00000 n +0000838423 00000 n +0000838487 00000 n +0000838551 00000 n +0000838615 00000 n +0000838680 00000 n +0000838744 00000 n +0000838809 00000 n +0000838873 00000 n +0000838938 00000 n +0000839001 00000 n +0000839066 00000 n +0000839130 00000 n +0000839195 00000 n +0000839259 00000 n +0000839324 00000 n +0000839388 00000 n +0000839453 00000 n +0000839517 00000 n +0000839711 00000 n +0000839775 00000 n +0000839838 00000 n +0000839903 00000 n +0000839969 00000 n +0001137767 00000 n +0000845718 00000 n +0000843199 00000 n +0000840149 00000 n +0000843325 00000 n +0000843389 00000 n +0000843453 00000 n +0000843519 00000 n +0000843583 00000 n +0000843649 00000 n +0000843715 00000 n +0000843779 00000 n +0000843845 00000 n +0000843909 00000 n +0000843973 00000 n +0000844037 00000 n +0000844102 00000 n +0000844165 00000 n +0000844230 00000 n +0000844296 00000 n +0000844360 00000 n +0000844425 00000 n +0000844491 00000 n +0000844554 00000 n +0000844619 00000 n +0000844684 00000 n +0000844748 00000 n +0000844812 00000 n +0000844877 00000 n +0000844941 00000 n +0000845005 00000 n +0000845069 00000 n +0000845135 00000 n +0000845200 00000 n +0000845266 00000 n +0000845330 00000 n +0000845394 00000 n +0000845460 00000 n +0000845524 00000 n +0000845590 00000 n +0000845654 00000 n +0000850642 00000 n +0000847698 00000 n +0000845834 00000 n +0000847998 00000 n +0000848062 00000 n +0000848126 00000 n +0000848190 00000 n +0000848256 00000 n +0000848322 00000 n +0000848517 00000 n +0000847845 00000 n +0000848710 00000 n +0000848774 00000 n +0000848840 00000 n +0000849035 00000 n +0000849099 00000 n +0000849163 00000 n +0000849229 00000 n +0000849293 00000 n +0000849357 00000 n +0000849421 00000 n +0000849486 00000 n +0000849550 00000 n +0000849614 00000 n +0000849679 00000 n +0000849743 00000 n +0000849807 00000 n +0000849872 00000 n +0000849936 00000 n +0000850000 00000 n +0000850065 00000 n +0000850129 00000 n +0000850193 00000 n +0000850258 00000 n +0000850320 00000 n +0000850384 00000 n +0000850449 00000 n +0000850513 00000 n +0000850577 00000 n +0000854937 00000 n +0000852633 00000 n +0000850744 00000 n +0000852951 00000 n +0000853079 00000 n +0000853143 00000 n +0000853207 00000 n +0000853272 00000 n +0000853336 00000 n +0000853401 00000 n +0000853465 00000 n +0000853529 00000 n +0000853594 00000 n +0000853658 00000 n +0000853722 00000 n +0000853787 00000 n +0000853850 00000 n +0000853914 00000 n +0000853979 00000 n +0000854043 00000 n +0000854107 00000 n +0000854172 00000 n +0000854234 00000 n +0000852780 00000 n +0000854426 00000 n +0000854617 00000 n +0000854681 00000 n +0000854745 00000 n +0000854809 00000 n +0000854873 00000 n +0000859026 00000 n +0000857746 00000 n +0000855053 00000 n +0000857872 00000 n +0000858001 00000 n +0000858065 00000 n +0000858129 00000 n +0000858193 00000 n +0000858257 00000 n +0000858321 00000 n +0000858513 00000 n +0000858577 00000 n +0000858641 00000 n +0000858705 00000 n +0000858769 00000 n +0000858962 00000 n +0000862510 00000 n +0000861295 00000 n +0000859142 00000 n +0000861421 00000 n +0000861485 00000 n +0000861549 00000 n +0000861742 00000 n +0000861806 00000 n +0000861870 00000 n +0000861934 00000 n +0000861998 00000 n +0000862062 00000 n +0000862125 00000 n +0000862189 00000 n +0000862382 00000 n +0000862446 00000 n +0000866807 00000 n +0000865214 00000 n +0000862612 00000 n +0000865711 00000 n +0000865775 00000 n +0000865841 00000 n +0000865907 00000 n +0000865370 00000 n +0000865971 00000 n +0000866036 00000 n +0000865538 00000 n +0000866229 00000 n +0000866292 00000 n +0000866356 00000 n +0000866549 00000 n +0000866613 00000 n +0000866677 00000 n +0000866741 00000 n +0001137892 00000 n +0000871139 00000 n +0000869754 00000 n +0000866923 00000 n +0000870053 00000 n +0000870117 00000 n +0000870181 00000 n +0000870245 00000 n +0000870308 00000 n +0000870500 00000 n +0000870564 00000 n +0000870628 00000 n +0000869901 00000 n +0000870692 00000 n +0000870754 00000 n +0000870818 00000 n +0000870882 00000 n +0000870946 00000 n +0000871010 00000 n +0000872458 00000 n +0000872012 00000 n +0000871255 00000 n +0000872138 00000 n +0000872267 00000 n +0000872331 00000 n +0000872394 00000 n +0000877228 00000 n +0000874719 00000 n +0000872574 00000 n +0000875032 00000 n +0000875353 00000 n +0000875417 00000 n +0000875481 00000 n +0000875675 00000 n +0000875739 00000 n +0000875805 00000 n +0000875869 00000 n +0000875934 00000 n +0000876000 00000 n +0000876064 00000 n +0000876129 00000 n +0000876195 00000 n +0000876260 00000 n +0000876323 00000 n +0000876515 00000 n +0000876579 00000 n +0000874866 00000 n +0000876772 00000 n +0000876836 00000 n +0000876902 00000 n +0000876968 00000 n +0000877034 00000 n +0000877098 00000 n +0000877164 00000 n +0000882258 00000 n +0000880183 00000 n +0000877344 00000 n +0000880309 00000 n +0000880373 00000 n +0000880439 00000 n +0000880505 00000 n +0000880700 00000 n +0000880764 00000 n +0000880828 00000 n +0000880893 00000 n +0000880959 00000 n +0000881023 00000 n +0000881087 00000 n +0000881151 00000 n +0000881215 00000 n +0000881281 00000 n +0000881345 00000 n +0000881409 00000 n +0000881475 00000 n +0000881539 00000 n +0000881603 00000 n +0000881667 00000 n +0000881731 00000 n +0000881797 00000 n +0000881863 00000 n +0000881929 00000 n +0000881994 00000 n +0000882060 00000 n +0000882126 00000 n +0000882192 00000 n +0000887584 00000 n +0000885584 00000 n +0000882416 00000 n +0000885710 00000 n +0000885903 00000 n +0000885967 00000 n +0000886031 00000 n +0000886097 00000 n +0000886161 00000 n +0000886227 00000 n +0000886291 00000 n +0000886355 00000 n +0000886419 00000 n +0000886484 00000 n +0000886679 00000 n +0000886743 00000 n +0000886809 00000 n +0000886873 00000 n +0000886939 00000 n +0000887003 00000 n +0000887069 00000 n +0000887133 00000 n +0000887197 00000 n +0000887261 00000 n +0000887325 00000 n +0000887390 00000 n +0000887454 00000 n +0000887518 00000 n +0000893370 00000 n +0000890989 00000 n +0000887714 00000 n +0000891115 00000 n +0000891179 00000 n +0000891243 00000 n +0000891309 00000 n +0000891504 00000 n +0000891568 00000 n +0000891632 00000 n +0000891696 00000 n +0000891760 00000 n +0000891824 00000 n +0000891888 00000 n +0000891952 00000 n +0000892018 00000 n +0000892082 00000 n +0000892146 00000 n +0000892210 00000 n +0000892274 00000 n +0000892340 00000 n +0000892406 00000 n +0000892472 00000 n +0000892536 00000 n +0000892600 00000 n +0000892664 00000 n +0000892728 00000 n +0000892792 00000 n +0000892856 00000 n +0000892920 00000 n +0000892983 00000 n +0000893046 00000 n +0000893111 00000 n +0000893177 00000 n +0000893241 00000 n +0000893305 00000 n +0001138017 00000 n +0000897827 00000 n +0000896020 00000 n +0000893500 00000 n +0000896146 00000 n +0000896210 00000 n +0000896276 00000 n +0000896340 00000 n +0000896404 00000 n +0000896470 00000 n +0000896536 00000 n +0000896602 00000 n +0000896666 00000 n +0000896732 00000 n +0000896796 00000 n +0000896861 00000 n +0000896925 00000 n +0000896989 00000 n +0000897053 00000 n +0000897246 00000 n +0000897310 00000 n +0000897503 00000 n +0000897567 00000 n +0000897633 00000 n +0000897697 00000 n +0000897761 00000 n +0000901198 00000 n +0000900102 00000 n +0000897957 00000 n +0000900228 00000 n +0000900292 00000 n +0000900358 00000 n +0000900422 00000 n +0000900487 00000 n +0000900553 00000 n +0000900619 00000 n +0000900683 00000 n +0000900748 00000 n +0000900812 00000 n +0000900876 00000 n +0000900942 00000 n +0000901006 00000 n +0000901070 00000 n +0000901134 00000 n +0000903325 00000 n +0000902617 00000 n +0000901300 00000 n +0000902743 00000 n +0000902807 00000 n +0000902871 00000 n +0000902937 00000 n +0000903002 00000 n +0000903195 00000 n +0000903259 00000 n +0000908381 00000 n +0000905976 00000 n +0000903455 00000 n +0000906452 00000 n +0000906644 00000 n +0000906837 00000 n +0000906901 00000 n +0000906967 00000 n +0000907033 00000 n +0000906132 00000 n +0000906292 00000 n +0000907097 00000 n +0000907162 00000 n +0000907226 00000 n +0000907292 00000 n +0000907356 00000 n +0000907551 00000 n +0000907615 00000 n +0000907680 00000 n +0000907746 00000 n +0000907809 00000 n +0000907998 00000 n +0000908062 00000 n +0000908126 00000 n +0000908190 00000 n +0000908255 00000 n +0000908318 00000 n +0000912282 00000 n 0000910350 00000 n -0000910414 00000 n -0000910543 00000 n -0000910607 00000 n -0000910672 00000 n +0000908525 00000 n +0000910476 00000 n +0000910540 00000 n 0000910734 00000 n -0000910800 00000 n -0000910866 00000 n -0000910929 00000 n -0000910994 00000 n -0000911060 00000 n -0000911126 00000 n -0000911190 00000 n -0000911256 00000 n -0000911320 00000 n -0000911384 00000 n -0000911450 00000 n -0000911514 00000 n -0000913989 00000 n -0000913280 00000 n -0000911708 00000 n -0000913406 00000 n -0000913470 00000 n -0000913534 00000 n -0000913600 00000 n -0000913666 00000 n -0000913859 00000 n -0000913923 00000 n -0000919045 00000 n -0000916640 00000 n -0000914119 00000 n -0000917116 00000 n -0000917308 00000 n -0000917501 00000 n -0000917565 00000 n -0000917631 00000 n -0000917697 00000 n -0000916796 00000 n -0000916956 00000 n -0000917761 00000 n -0000917826 00000 n -0000917890 00000 n -0000917956 00000 n -0000918020 00000 n -0000918215 00000 n -0000918279 00000 n -0000918344 00000 n -0000918410 00000 n -0000918473 00000 n -0000918662 00000 n -0000918726 00000 n -0000918790 00000 n -0000918854 00000 n -0000918919 00000 n -0000918982 00000 n -0001148808 00000 n -0000922945 00000 n -0000921013 00000 n -0000919189 00000 n -0000921139 00000 n -0000921203 00000 n -0000921397 00000 n -0000921461 00000 n -0000921524 00000 n -0000921588 00000 n -0000921654 00000 n -0000921718 00000 n -0000921782 00000 n -0000921846 00000 n -0000922039 00000 n -0000922103 00000 n -0000922169 00000 n -0000922233 00000 n -0000922297 00000 n -0000922363 00000 n -0000922428 00000 n -0000922494 00000 n -0000922558 00000 n -0000922622 00000 n -0000922816 00000 n -0000922880 00000 n -0000927248 00000 n -0000925266 00000 n -0000923089 00000 n -0000925571 00000 n -0000925635 00000 n -0000925699 00000 n -0000925765 00000 n -0000925829 00000 n -0000925893 00000 n -0000925957 00000 n -0000926021 00000 n -0000926085 00000 n -0000926151 00000 n -0000926217 00000 n -0000926281 00000 n -0000926344 00000 n -0000926408 00000 n -0000926472 00000 n -0000926537 00000 n -0000926603 00000 n -0000926667 00000 n -0000926733 00000 n -0000926928 00000 n -0000926992 00000 n -0000927056 00000 n -0000927120 00000 n -0000925413 00000 n -0000928933 00000 n -0000928358 00000 n -0000927392 00000 n -0000928484 00000 n -0000928613 00000 n -0000928677 00000 n -0000928740 00000 n -0000928805 00000 n -0000928869 00000 n -0000935266 00000 n -0000932089 00000 n -0000929049 00000 n -0000932215 00000 n -0000932406 00000 n -0000932470 00000 n -0000932665 00000 n -0000932729 00000 n -0000932795 00000 n -0000932861 00000 n -0000932927 00000 n -0000932993 00000 n -0000933057 00000 n -0000933123 00000 n -0000933187 00000 n -0000933251 00000 n -0000933315 00000 n -0000933381 00000 n -0000933445 00000 n -0000933509 00000 n -0000933575 00000 n -0000933641 00000 n -0000933707 00000 n -0000933773 00000 n -0000933839 00000 n -0000933905 00000 n -0000933969 00000 n -0000934035 00000 n -0000934099 00000 n -0000934163 00000 n -0000934229 00000 n -0000934293 00000 n -0000934358 00000 n -0000934422 00000 n -0000934488 00000 n -0000934684 00000 n -0000934748 00000 n -0000934814 00000 n -0000934880 00000 n -0000934944 00000 n -0000935009 00000 n -0000935074 00000 n -0000935138 00000 n -0000935202 00000 n -0000939462 00000 n -0000937079 00000 n -0000935410 00000 n -0000937397 00000 n -0000937720 00000 n -0000937784 00000 n -0000937848 00000 n -0000937912 00000 n -0000937976 00000 n -0000938040 00000 n -0000938104 00000 n -0000938168 00000 n -0000938232 00000 n -0000938296 00000 n -0000938361 00000 n -0000938425 00000 n -0000938491 00000 n -0000938557 00000 n -0000937226 00000 n -0000938751 00000 n -0000938814 00000 n -0000938878 00000 n -0000938943 00000 n -0000939008 00000 n -0000939072 00000 n -0000939136 00000 n -0000939202 00000 n -0000939268 00000 n -0000939332 00000 n -0000939396 00000 n -0000942088 00000 n -0000940209 00000 n -0000939592 00000 n -0000940335 00000 n -0000940399 00000 n -0000940465 00000 n -0000940529 00000 n -0000940592 00000 n -0000940658 00000 n -0000940724 00000 n -0000940788 00000 n -0000940852 00000 n -0000940918 00000 n -0000940984 00000 n -0000941048 00000 n -0000941112 00000 n -0000941178 00000 n -0000941244 00000 n -0000941308 00000 n -0000941372 00000 n -0000941438 00000 n -0000941504 00000 n -0000941568 00000 n -0000941632 00000 n -0000941698 00000 n -0000941764 00000 n -0000941828 00000 n -0000941892 00000 n -0000941958 00000 n -0000942024 00000 n -0001148933 00000 n -0000945029 00000 n -0000942957 00000 n -0000942176 00000 n -0000943083 00000 n -0000943147 00000 n -0000943211 00000 n -0000943277 00000 n -0000943343 00000 n -0000943407 00000 n -0000943471 00000 n -0000943537 00000 n -0000943733 00000 n -0000943797 00000 n -0000943860 00000 n -0000943926 00000 n -0000943992 00000 n -0000944056 00000 n -0000944119 00000 n -0000944185 00000 n -0000944250 00000 n -0000944314 00000 n -0000944378 00000 n -0000944444 00000 n -0000944510 00000 n -0000944574 00000 n -0000944638 00000 n -0000944704 00000 n -0000944770 00000 n -0000944834 00000 n -0000944897 00000 n -0000944963 00000 n -0000945608 00000 n -0000945418 00000 n -0000945131 00000 n -0000945544 00000 n -0000949691 00000 n -0000948350 00000 n -0000945682 00000 n -0000948476 00000 n -0000948667 00000 n -0000948731 00000 n -0000948795 00000 n -0000948987 00000 n -0000949051 00000 n -0000949115 00000 n -0000949307 00000 n -0000949371 00000 n -0000949435 00000 n -0000949499 00000 n -0000949563 00000 n -0000949627 00000 n -0000953754 00000 n -0000952857 00000 n -0000949793 00000 n -0000952983 00000 n -0000953047 00000 n -0000953111 00000 n -0000953305 00000 n -0000953369 00000 n -0000953562 00000 n -0000953626 00000 n -0000953690 00000 n -0000959474 00000 n -0000957032 00000 n -0000953856 00000 n -0000957158 00000 n -0000957222 00000 n -0000957286 00000 n -0000957480 00000 n -0000957544 00000 n -0000957608 00000 n -0000957671 00000 n -0000957736 00000 n -0000957800 00000 n -0000957865 00000 n -0000957929 00000 n -0000957994 00000 n -0000958058 00000 n -0000958123 00000 n -0000958186 00000 n -0000958251 00000 n -0000958315 00000 n -0000958380 00000 n -0000958444 00000 n -0000958509 00000 n -0000958573 00000 n -0000958638 00000 n -0000958702 00000 n -0000958767 00000 n -0000958831 00000 n -0000958896 00000 n -0000958959 00000 n -0000959024 00000 n -0000959088 00000 n -0000959153 00000 n -0000959217 00000 n -0000959282 00000 n -0000959346 00000 n -0000959410 00000 n -0000963318 00000 n -0000962227 00000 n -0000959576 00000 n -0000962353 00000 n -0000962417 00000 n -0000962481 00000 n -0000962675 00000 n -0000962739 00000 n -0000962803 00000 n -0000962997 00000 n -0000963061 00000 n -0000963254 00000 n -0001149058 00000 n -0000967211 00000 n -0000965926 00000 n -0000963420 00000 n -0000966052 00000 n -0000966116 00000 n -0000966310 00000 n -0000966504 00000 n -0000966696 00000 n -0000966760 00000 n -0000966826 00000 n -0000967020 00000 n -0000967084 00000 n -0000967147 00000 n -0000968476 00000 n -0000968158 00000 n -0000967313 00000 n -0000968284 00000 n -0000968348 00000 n -0000968412 00000 n -0000974279 00000 n +0000910798 00000 n +0000910861 00000 n +0000910925 00000 n +0000910991 00000 n +0000911055 00000 n +0000911119 00000 n +0000911183 00000 n +0000911376 00000 n +0000911440 00000 n +0000911506 00000 n +0000911570 00000 n +0000911634 00000 n +0000911700 00000 n +0000911765 00000 n +0000911831 00000 n +0000911895 00000 n +0000911959 00000 n +0000912153 00000 n +0000912217 00000 n +0000916585 00000 n +0000914603 00000 n +0000912426 00000 n +0000914908 00000 n +0000914972 00000 n +0000915036 00000 n +0000915102 00000 n +0000915166 00000 n +0000915230 00000 n +0000915294 00000 n +0000915358 00000 n +0000915422 00000 n +0000915488 00000 n +0000915554 00000 n +0000915618 00000 n +0000915681 00000 n +0000915745 00000 n +0000915809 00000 n +0000915874 00000 n +0000915940 00000 n +0000916004 00000 n +0000916070 00000 n +0000916265 00000 n +0000916329 00000 n +0000916393 00000 n +0000916457 00000 n +0000914750 00000 n +0001138142 00000 n +0000918270 00000 n +0000917695 00000 n +0000916729 00000 n +0000917821 00000 n +0000917950 00000 n +0000918014 00000 n +0000918077 00000 n +0000918142 00000 n +0000918206 00000 n +0000924602 00000 n +0000921425 00000 n +0000918386 00000 n +0000921551 00000 n +0000921742 00000 n +0000921806 00000 n +0000922001 00000 n +0000922065 00000 n +0000922131 00000 n +0000922197 00000 n +0000922263 00000 n +0000922329 00000 n +0000922393 00000 n +0000922459 00000 n +0000922523 00000 n +0000922587 00000 n +0000922651 00000 n +0000922717 00000 n +0000922781 00000 n +0000922845 00000 n +0000922911 00000 n +0000922977 00000 n +0000923043 00000 n +0000923109 00000 n +0000923175 00000 n +0000923241 00000 n +0000923305 00000 n +0000923371 00000 n +0000923435 00000 n +0000923499 00000 n +0000923565 00000 n +0000923629 00000 n +0000923694 00000 n +0000923758 00000 n +0000923824 00000 n +0000924020 00000 n +0000924084 00000 n +0000924150 00000 n +0000924216 00000 n +0000924280 00000 n +0000924345 00000 n +0000924410 00000 n +0000924474 00000 n +0000924538 00000 n +0000928797 00000 n +0000926414 00000 n +0000924746 00000 n +0000926732 00000 n +0000927055 00000 n +0000927119 00000 n +0000927183 00000 n +0000927247 00000 n +0000927311 00000 n +0000927375 00000 n +0000927439 00000 n +0000927503 00000 n +0000927567 00000 n +0000927631 00000 n +0000927696 00000 n +0000927760 00000 n +0000927826 00000 n +0000927892 00000 n +0000926561 00000 n +0000928086 00000 n +0000928149 00000 n +0000928213 00000 n +0000928278 00000 n +0000928343 00000 n +0000928407 00000 n +0000928471 00000 n +0000928537 00000 n +0000928603 00000 n +0000928667 00000 n +0000928731 00000 n +0000931422 00000 n +0000929543 00000 n +0000928927 00000 n +0000929669 00000 n +0000929733 00000 n +0000929799 00000 n +0000929863 00000 n +0000929926 00000 n +0000929992 00000 n +0000930058 00000 n +0000930122 00000 n +0000930186 00000 n +0000930252 00000 n +0000930318 00000 n +0000930382 00000 n +0000930446 00000 n +0000930512 00000 n +0000930578 00000 n +0000930642 00000 n +0000930706 00000 n +0000930772 00000 n +0000930838 00000 n +0000930902 00000 n +0000930966 00000 n +0000931032 00000 n +0000931098 00000 n +0000931162 00000 n +0000931226 00000 n +0000931292 00000 n +0000931358 00000 n +0000934362 00000 n +0000932290 00000 n +0000931510 00000 n +0000932416 00000 n +0000932480 00000 n +0000932544 00000 n +0000932610 00000 n +0000932676 00000 n +0000932740 00000 n +0000932804 00000 n +0000932870 00000 n +0000933066 00000 n +0000933130 00000 n +0000933193 00000 n +0000933259 00000 n +0000933325 00000 n +0000933389 00000 n +0000933452 00000 n +0000933518 00000 n +0000933583 00000 n +0000933647 00000 n +0000933711 00000 n +0000933777 00000 n +0000933843 00000 n +0000933907 00000 n +0000933971 00000 n +0000934037 00000 n +0000934103 00000 n +0000934167 00000 n +0000934230 00000 n +0000934296 00000 n +0000934941 00000 n +0000934751 00000 n +0000934464 00000 n +0000934877 00000 n +0001138267 00000 n +0000939024 00000 n +0000937683 00000 n +0000935015 00000 n +0000937809 00000 n +0000938000 00000 n +0000938064 00000 n +0000938128 00000 n +0000938320 00000 n +0000938384 00000 n +0000938448 00000 n +0000938640 00000 n +0000938704 00000 n +0000938768 00000 n +0000938832 00000 n +0000938896 00000 n +0000938960 00000 n +0000943087 00000 n +0000942190 00000 n +0000939126 00000 n +0000942316 00000 n +0000942380 00000 n +0000942444 00000 n +0000942638 00000 n +0000942702 00000 n +0000942895 00000 n +0000942959 00000 n +0000943023 00000 n +0000948808 00000 n +0000946366 00000 n +0000943189 00000 n +0000946492 00000 n +0000946556 00000 n +0000946620 00000 n +0000946814 00000 n +0000946878 00000 n +0000946942 00000 n +0000947005 00000 n +0000947070 00000 n +0000947134 00000 n +0000947199 00000 n +0000947263 00000 n +0000947328 00000 n +0000947392 00000 n +0000947457 00000 n +0000947520 00000 n +0000947585 00000 n +0000947649 00000 n +0000947714 00000 n +0000947778 00000 n +0000947843 00000 n +0000947907 00000 n +0000947972 00000 n +0000948036 00000 n +0000948101 00000 n +0000948165 00000 n +0000948230 00000 n +0000948293 00000 n +0000948358 00000 n +0000948422 00000 n +0000948487 00000 n +0000948551 00000 n +0000948616 00000 n +0000948680 00000 n +0000948744 00000 n +0000952652 00000 n +0000951561 00000 n +0000948910 00000 n +0000951687 00000 n +0000951751 00000 n +0000951815 00000 n +0000952009 00000 n +0000952073 00000 n +0000952137 00000 n +0000952331 00000 n +0000952395 00000 n +0000952588 00000 n +0000956546 00000 n +0000955261 00000 n +0000952754 00000 n +0000955387 00000 n +0000955451 00000 n +0000955645 00000 n +0000955839 00000 n +0000956031 00000 n +0000956095 00000 n +0000956161 00000 n +0000956355 00000 n +0000956419 00000 n +0000956482 00000 n +0000957811 00000 n +0000957493 00000 n +0000956648 00000 n +0000957619 00000 n +0000957683 00000 n +0000957747 00000 n +0001138392 00000 n +0000963612 00000 n +0000959819 00000 n +0000957899 00000 n +0000960125 00000 n +0000960318 00000 n +0000960575 00000 n +0000960639 00000 n +0000960703 00000 n +0000960769 00000 n +0000960834 00000 n +0000960963 00000 n +0000961093 00000 n +0000961157 00000 n +0000961221 00000 n +0000961286 00000 n +0000961352 00000 n +0000961416 00000 n +0000961546 00000 n +0000961610 00000 n +0000961674 00000 n +0000961738 00000 n +0000961802 00000 n +0000961868 00000 n +0000961932 00000 n +0000961996 00000 n +0000962060 00000 n +0000962124 00000 n +0000962188 00000 n +0000962252 00000 n +0000962316 00000 n +0000962382 00000 n +0000962448 00000 n +0000962512 00000 n +0000962576 00000 n +0000962640 00000 n +0000962704 00000 n +0000962770 00000 n +0000962836 00000 n +0000962901 00000 n +0000962966 00000 n +0000963031 00000 n +0000963096 00000 n +0000963162 00000 n +0000963226 00000 n +0000963290 00000 n +0000963354 00000 n +0000963418 00000 n +0000963484 00000 n +0000959966 00000 n +0000963548 00000 n +0000968112 00000 n +0000965277 00000 n +0000963742 00000 n +0000965403 00000 n +0000965532 00000 n +0000965661 00000 n +0000965725 00000 n +0000965789 00000 n +0000965855 00000 n +0000965919 00000 n +0000965984 00000 n +0000966114 00000 n +0000966178 00000 n +0000966372 00000 n +0000966436 00000 n +0000966500 00000 n +0000966758 00000 n +0000966821 00000 n +0000966885 00000 n +0000966949 00000 n +0000967014 00000 n +0000967144 00000 n +0000967208 00000 n +0000967401 00000 n +0000967465 00000 n +0000967529 00000 n +0000967593 00000 n +0000967658 00000 n +0000967788 00000 n +0000967918 00000 n +0000967982 00000 n +0000968046 00000 n +0000971908 00000 n +0000969714 00000 n +0000968242 00000 n +0000969840 00000 n +0000969904 00000 n +0000969968 00000 n +0000970034 00000 n +0000970098 00000 n +0000970164 00000 n +0000970423 00000 n 0000970486 00000 n -0000968564 00000 n -0000970792 00000 n -0000970985 00000 n -0000971242 00000 n -0000971306 00000 n -0000971370 00000 n -0000971436 00000 n -0000971501 00000 n -0000971630 00000 n -0000971760 00000 n -0000971824 00000 n -0000971888 00000 n -0000971953 00000 n -0000972019 00000 n -0000972083 00000 n -0000972213 00000 n -0000972277 00000 n -0000972341 00000 n -0000972405 00000 n -0000972469 00000 n -0000972535 00000 n -0000972599 00000 n -0000972663 00000 n -0000972727 00000 n -0000972791 00000 n -0000972855 00000 n -0000972919 00000 n -0000972983 00000 n -0000973049 00000 n -0000973115 00000 n -0000973179 00000 n -0000973243 00000 n -0000973307 00000 n -0000973371 00000 n -0000973437 00000 n -0000973503 00000 n -0000973568 00000 n -0000973633 00000 n -0000973698 00000 n -0000973763 00000 n -0000973829 00000 n -0000973893 00000 n -0000973957 00000 n -0000974021 00000 n -0000974085 00000 n -0000974151 00000 n -0000970633 00000 n -0000974215 00000 n -0000978779 00000 n -0000975944 00000 n -0000974409 00000 n -0000976070 00000 n -0000976199 00000 n -0000976328 00000 n -0000976392 00000 n -0000976456 00000 n -0000976522 00000 n -0000976586 00000 n -0000976651 00000 n -0000976781 00000 n -0000976845 00000 n -0000977039 00000 n -0000977103 00000 n -0000977167 00000 n -0000977425 00000 n -0000977488 00000 n -0000977552 00000 n -0000977616 00000 n -0000977681 00000 n -0000977811 00000 n -0000977875 00000 n -0000978068 00000 n -0000978132 00000 n -0000978196 00000 n -0000978260 00000 n -0000978325 00000 n -0000978455 00000 n -0000978585 00000 n -0000978649 00000 n -0000978713 00000 n -0000982575 00000 n -0000980381 00000 n -0000978909 00000 n -0000980507 00000 n -0000980571 00000 n -0000980635 00000 n -0000980701 00000 n -0000980765 00000 n -0000980831 00000 n -0000981090 00000 n -0000981153 00000 n -0000981217 00000 n -0000981283 00000 n -0000981348 00000 n -0000981478 00000 n -0000981542 00000 n -0000981606 00000 n -0000981735 00000 n -0000981864 00000 n -0000981928 00000 n -0000981992 00000 n -0000982058 00000 n -0000982124 00000 n -0000982189 00000 n -0000982317 00000 n -0000982447 00000 n -0000982511 00000 n -0000987228 00000 n -0000984274 00000 n -0000982705 00000 n -0000984580 00000 n -0000984709 00000 n -0000984839 00000 n -0000984903 00000 n -0000984967 00000 n -0000985033 00000 n -0000985098 00000 n -0000985164 00000 n -0000985230 00000 n -0000985295 00000 n -0000985424 00000 n -0000985488 00000 n -0000984421 00000 n -0000985551 00000 n -0000985617 00000 n -0000985681 00000 n -0000985745 00000 n -0000985809 00000 n -0000985873 00000 n -0000985939 00000 n -0000986003 00000 n -0000986067 00000 n -0000986131 00000 n -0000986197 00000 n -0000986263 00000 n -0000986327 00000 n -0000986391 00000 n -0000986455 00000 n -0000986521 00000 n -0000986779 00000 n -0000986843 00000 n -0000986907 00000 n -0000987101 00000 n -0000987164 00000 n -0001149183 00000 n -0000990084 00000 n -0000991114 00000 n -0000988729 00000 n -0000987344 00000 n -0000988855 00000 n -0000988919 00000 n -0000989048 00000 n -0000989112 00000 n -0000989176 00000 n -0000989241 00000 n -0000989370 00000 n -0000989499 00000 n -0000989563 00000 n -0000989627 00000 n -0000989691 00000 n -0000989757 00000 n -0000989823 00000 n -0000989889 00000 n -0000989955 00000 n -0000990214 00000 n -0000990278 00000 n -0000990341 00000 n -0000990469 00000 n -0000990533 00000 n -0000990597 00000 n -0000990663 00000 n -0000990921 00000 n -0000990985 00000 n -0000991049 00000 n -0000995794 00000 n -0000993272 00000 n -0000991216 00000 n -0000993398 00000 n -0000993462 00000 n -0000993526 00000 n -0000993656 00000 n -0000993720 00000 n -0000993784 00000 n -0000993848 00000 n -0000993914 00000 n -0000993980 00000 n -0000994046 00000 n -0000994112 00000 n -0000994178 00000 n -0000994243 00000 n -0000994308 00000 n -0000994374 00000 n -0000994440 00000 n -0000994568 00000 n -0000994698 00000 n -0000994762 00000 n -0000994826 00000 n -0000994892 00000 n -0000995022 00000 n -0000995086 00000 n -0000995150 00000 n -0000995279 00000 n -0000995409 00000 n -0000995473 00000 n -0000995536 00000 n -0000995600 00000 n -0000995664 00000 n -0000995728 00000 n -0000998635 00000 n -0000998602 00000 n -0000998733 00000 n -0001016717 00000 n -0001027319 00000 n -0001037978 00000 n -0001051138 00000 n -0001072414 00000 n -0001091467 00000 n -0001108638 00000 n -0001131506 00000 n -0001146268 00000 n -0001149281 00000 n -0001149407 00000 n -0001149533 00000 n -0001149659 00000 n -0001149758 00000 n -0001149850 00000 n -0001179843 00000 n -0001238577 00000 n -0001238618 00000 n -0001238658 00000 n -0001238793 00000 n +0000970550 00000 n +0000970616 00000 n +0000970681 00000 n +0000970811 00000 n +0000970875 00000 n +0000970939 00000 n +0000971068 00000 n +0000971197 00000 n +0000971261 00000 n +0000971325 00000 n +0000971391 00000 n +0000971457 00000 n +0000971522 00000 n +0000971650 00000 n +0000971780 00000 n +0000971844 00000 n +0000976561 00000 n +0000973607 00000 n +0000972038 00000 n +0000973913 00000 n +0000974042 00000 n +0000974172 00000 n +0000974236 00000 n +0000974300 00000 n +0000974366 00000 n +0000974431 00000 n +0000974497 00000 n +0000974563 00000 n +0000974628 00000 n +0000974757 00000 n +0000974821 00000 n +0000973754 00000 n +0000974884 00000 n +0000974950 00000 n +0000975014 00000 n +0000975078 00000 n +0000975142 00000 n +0000975206 00000 n +0000975272 00000 n +0000975336 00000 n +0000975400 00000 n +0000975464 00000 n +0000975530 00000 n +0000975596 00000 n +0000975660 00000 n +0000975724 00000 n +0000975788 00000 n +0000975854 00000 n +0000976112 00000 n +0000976176 00000 n +0000976240 00000 n +0000976434 00000 n +0000976497 00000 n +0000979418 00000 n +0000980448 00000 n +0000978063 00000 n +0000976677 00000 n +0000978189 00000 n +0000978253 00000 n +0000978382 00000 n +0000978446 00000 n +0000978510 00000 n +0000978575 00000 n +0000978704 00000 n +0000978833 00000 n +0000978897 00000 n +0000978961 00000 n +0000979025 00000 n +0000979091 00000 n +0000979157 00000 n +0000979223 00000 n +0000979289 00000 n +0000979548 00000 n +0000979612 00000 n +0000979675 00000 n +0000979803 00000 n +0000979867 00000 n +0000979931 00000 n +0000979997 00000 n +0000980255 00000 n +0000980319 00000 n +0000980383 00000 n +0000985128 00000 n +0000982606 00000 n +0000980550 00000 n +0000982732 00000 n +0000982796 00000 n +0000982860 00000 n +0000982990 00000 n +0000983054 00000 n +0000983118 00000 n +0000983182 00000 n +0000983248 00000 n +0000983314 00000 n +0000983380 00000 n +0000983446 00000 n +0000983512 00000 n +0000983577 00000 n +0000983642 00000 n +0000983708 00000 n +0000983774 00000 n +0000983902 00000 n +0000984032 00000 n +0000984096 00000 n +0000984160 00000 n +0000984226 00000 n +0000984356 00000 n +0000984420 00000 n +0000984484 00000 n +0000984613 00000 n +0000984743 00000 n +0000984807 00000 n +0000984870 00000 n +0000984934 00000 n +0000984998 00000 n +0000985062 00000 n +0001138517 00000 n +0000987969 00000 n +0000987936 00000 n +0000988067 00000 n +0001006051 00000 n +0001016653 00000 n +0001027312 00000 n +0001040472 00000 n +0001061748 00000 n +0001080801 00000 n +0001097972 00000 n +0001120840 00000 n +0001135602 00000 n +0001138597 00000 n +0001138723 00000 n +0001138849 00000 n +0001138975 00000 n +0001139074 00000 n +0001139166 00000 n +0001169159 00000 n +0001226938 00000 n +0001226979 00000 n +0001227019 00000 n +0001227154 00000 n trailer << -/Size 5395 -/Root 5393 0 R -/Info 5394 0 R -/ID [<53BAD8ED1D60E7F0E4D6B5033F709A54> <53BAD8ED1D60E7F0E4D6B5033F709A54>] +/Size 5330 +/Root 5328 0 R +/Info 5329 0 R +/ID [<E083C9D36FBE6F6432BD0C7E57EE759A> <E083C9D36FBE6F6432BD0C7E57EE759A>] >> startxref -1239057 +1227418 %%EOF diff --git a/docs/en/txt/Bugzilla-Guide.txt b/docs/en/txt/Bugzilla-Guide.txt index 740cdbce6..a8474f9c1 100644 --- a/docs/en/txt/Bugzilla-Guide.txt +++ b/docs/en/txt/Bugzilla-Guide.txt @@ -1,9 +1,9 @@ -The Bugzilla Guide - 3.5.2 Development Release +The Bugzilla Guide - 3.5.3 Development Release The Bugzilla Team - 2009-11-18 + 2010-01-31 This is the documentation for Bugzilla, a bug-tracking system from mozilla.org. Bugzilla is an enterprise-class piece of software that tracks @@ -75,9 +75,9 @@ The Bugzilla Team 6. Customizing Bugzilla - 6.1. Custom Skins - 6.2. Template Customization - 6.3. The Bugzilla Extension Mechanism + 6.1. Bugzilla Extensions + 6.2. Custom Skins + 6.3. Template Customization 6.4. Customizing Who Can Change What 6.5. Integrating Bugzilla with Third-Party Tools @@ -135,7 +135,7 @@ Chapter 1. About This Guide 1.1. Copyright Information - This document is copyright (c) 2000-2009 by the various Bugzilla + This document is copyright (c) 2000-2010 by the various Bugzilla contributors who wrote it. Permission is granted to copy, distribute and/or modify this document @@ -172,7 +172,7 @@ Chapter 1. About This Guide 1.3. New Versions - This is the 3.5.2 version of The Bugzilla Guide. It is so named to match the + This is the 3.5.3 version of The Bugzilla Guide. It is so named to match the current version of Bugzilla. This version of the guide, like its associated Bugzilla version, is a development version. @@ -484,7 +484,7 @@ Chapter 2. Installing Bugzilla 1. GD (1.20) for bug charting 2. Template::Plugin::GD::Image (1.20) for Graphical Reports - 3. Chart::Lines (1.0) for bug charting + 3. Chart::Lines (2.1) for bug charting 4. GD::Graph (any) for bug charting 5. GD::Text (any) for bug charting 6. XML::Twig (any) for bug import/export @@ -542,7 +542,7 @@ Chapter 2. Installing Bugzilla versions of the GD module won't work for you. _________________________________________________________________ -2.1.5.4. Chart::Lines (1.0) +2.1.5.4. Chart::Lines (2.1) The Chart::Lines module is only required if you want graphical reports. Note that earlier versions that 0.99c used GIFs, which are no longer supported by @@ -1672,7 +1672,7 @@ hmod o+r {} \; ; done If you have modified the code or templates of your Bugzilla, then upgrading requires a bit more thought and effort. A discussion of the various methods of updating compared with degree and methods of local customization can be - found in Section 6.2.2. + found in Section 6.3.2. The larger the jump you are trying to make, the more difficult it is going to be to upgrade if you have made local customizations. Upgrading from 3.0 @@ -4792,7 +4792,18 @@ Chapter 5. Using Bugzilla Chapter 6. Customizing Bugzilla -6.1. Custom Skins +6.1. Bugzilla Extensions + + One of the best ways to customize Bugzilla is by writing a Bugzilla + Extension. Bugzilla Extensions let you modify both the code and UI of + Bugzilla in a way that can be distributed to other Bugzilla users and ported + forward to future versions of Bugzilla with minimal effort. + + See the Bugzilla Extension documentation for information on how to write an + Extension. + _________________________________________________________________ + +6.2. Custom Skins Bugzilla allows you to have multiple skins. These are custom CSS and possibly also custom images for Bugzilla. To create a new custom skin, you @@ -4811,7 +4822,7 @@ Chapter 6. Customizing Bugzilla "Enabled" on the preference. _________________________________________________________________ -6.2. Template Customization +6.3. Template Customization Administrators can configure the look and feel of Bugzilla without having to edit Perl files or face the nightmare of massive merge conflicts when they @@ -4819,10 +4830,10 @@ Chapter 6. Customizing Bugzilla Templatization also makes localized versions of Bugzilla possible, for the first time. It's possible to have Bugzilla's UI language determined by the - user's browser. More information is available in Section 6.2.6. + user's browser. More information is available in Section 6.3.6. _________________________________________________________________ -6.2.1. Template Directory Structure +6.3.1. Template Directory Structure The template directory structure starts with top level directory named template, which contains a directory for each installed localization. The @@ -4840,7 +4851,7 @@ Chapter 6. Customizing Bugzilla templates. _________________________________________________________________ -6.2.2. Choosing a Customization Method +6.3.2. Choosing a Customization Method If you want to edit Bugzilla's templates, the first decision you must make is how you want to go about doing so. There are two choices, and which you @@ -4898,7 +4909,7 @@ Chapter 6. Customizing Bugzilla message. _________________________________________________________________ -6.2.3. How To Edit Templates +6.3.3. How To Edit Templates Note @@ -4931,7 +4942,7 @@ Chapter 6. Customizing Bugzilla internally, but your users don't need to know that. _________________________________________________________________ -6.2.4. Template Formats and Types +6.3.4. Template Formats and Types Some CGI's have the ability to use more than one template. For example, buglist.cgi can output itself as RDF, or as two formats of HTML (complex and @@ -4973,7 +4984,7 @@ Chapter 6. Customizing Bugzilla <cginame>.cgi?format=<formatname>&ctype=<type> . _________________________________________________________________ -6.2.5. Particular Templates +6.3.5. Particular Templates There are a few templates you may be particularly interested in customizing for your installation. @@ -5065,7 +5076,7 @@ Chapter 6. Customizing Bugzilla would appear in the initial comment. _________________________________________________________________ -6.2.6. Configuring Bugzilla to Detect the User's Language +6.3.6. Configuring Bugzilla to Detect the User's Language Bugzilla honours the user's Accept: HTTP header. You can install templates in other languages, and Bugzilla will pick the most appropriate according to @@ -5074,159 +5085,6 @@ Chapter 6. Customizing Bugzilla submitting new languages are also available from that location. _________________________________________________________________ -6.3. The Bugzilla Extension Mechanism - - Warning - - Note that the below paths are inconsistent and confusing. They will likely - be changed in Bugzilla 4.0. - - Extensions are a way for extensions to Bugzilla to insert code into the - standard Bugzilla templates and source files without modifying these files - themselves. The extension mechanism defines a consistent API for extending - the standard templates and source files in a way that cleanly separates - standard code from extension code. Hooks reduce merge conflicts and make it - easier to write extensions that work across multiple versions of Bugzilla, - making upgrading a Bugzilla installation with installed extensions easier. - Furthermore, they make it easy to install and remove extensions as each - extension is nothing more than a simple directory structure. - - There are two main types of hooks: code hooks and template hooks. Code hooks - allow extensions to invoke code at specific points in various source files, - while template hooks allow extensions to add elements to the Bugzilla user - interface. - - A hook is just a named place in a standard source or template file where - extension source code or template files for that hook get processed. Each - extension has a corresponding directory in the Bugzilla directory tree - (BUGZILLA_ROOT/extensions/extension_name). Hooking an extension source file - or template to a hook is as simple as putting the extension file into - extension's template or code directory. When Bugzilla processes the source - file or template and reaches the hook, it will process all extension files - in the hook's directory. The hooks themselves can be added into any source - file or standard template upon request by extension authors. - - To use hooks to extend Bugzilla, first make sure there is a hook at the - appropriate place within the source file or template you want to extend. The - exact appearance of a hook depends on if the hook is a code hook or a - template hook. - - Code hooks appear in Bugzilla source files as a single method call in the - format Bugzilla::Hook->process("name");. For instance, enter_bug.cgi may - invoke the hook "enter_bug-entrydefaultvars". Thus, a source file at - BUGZILLA_ROOT/extensions/EXTENSION_NAME/code/enter_bug-entrydefaultvars.pl - will be automatically invoked when the code hook is reached. - - Template hooks appear in the standard Bugzilla templates as a single - directive in the format [% Hook.process("name") %], where name is the unique - name of the hook. - - If you aren't sure what you want to extend or just want to browse the - available hooks, either use your favorite multi-file search tool (e.g. grep) - to search the standard templates for occurrences of Hook.process or the - source files for occurrences of Bugzilla::Hook::process. - - If there is no hook at the appropriate place within the Bugzilla source file - or template you want to extend, file a bug requesting one, specifying: - - the source or template file for which you are requesting a hook; - where in the file you would like the hook to be placed (line number/position - for latest version of the file in CVS or description of location); - the purpose of the hook; - a link to information about your extension, if any. - - The Bugzilla reviewers will promptly review each hook request, name the - hook, add it to the template or source file, and check the new version of - the template into CVS. - - You may optionally attach a patch to the bug which implements the hook and - check it in yourself after receiving approval from a Bugzilla reviewer. The - developers may suggest changes to the location of the hook based on their - analysis of your needs or so the hook can satisfy the needs of multiple - extensions, but the process of getting hooks approved and checked in is not - as stringent as the process for general changes to Bugzilla, and any - extension, whether released or still in development, can have hooks added to - meet their needs. - - After making sure the hook you need exists (or getting it added if not), add - your extension to the directory within the Bugzilla extensions tree - corresponding to the hook. - - That's it! Now, when the source file or template containing the hook is - processed, your extension file will be processed at the point where the hook - appears. - - For example, let's say you have an extension named Projman that adds project - management capabilities to Bugzilla. Projman has an administration interface - edit-projects.cgi, and you want to add a link to it into the navigation bar - at the bottom of every Bugzilla page for those users who are authorized to - administer projects. - - The navigation bar is generated by the template file useful-links.html.tmpl, - which is located in the global/ subdirectory on the standard Bugzilla - template path BUGZILLA_ROOT/template/en/default/. Looking in - useful-links.html.tmpl, you find the following hook at the end of the list - of standard Bugzilla administration links: -... - [% ', <a href="editkeywords.cgi">keywords</a>' - IF user.in_group('editkeywords') %] - [% Hook.process("edit") %] -... - - The corresponding extension file for this hook is - BUGZILLA_ROOT/extensions/projman/template/en/global/useful-links-edit.html.t - mpl. You then create that template file and add the following constant: -...[% ', <a href="edit-projects.cgi">projects</a>' IF user.in_group('projman_ad -mins') %] - - Voila! The link now appears after the other administration links in the - navigation bar for users in the projman_admins group. - - Now, let us say your extension adds a custom "project_manager" field to - enter_bug.cgi. You want to modify the CGI script to set the default project - manager to be productname@company.com. Looking at enter_bug.cgi, you see the - enter_bug-entrydefaultvars hook near the bottom of the file before the - default form values are set. The corresponding extension source file for - this hook is located at - BUGZILLA_ROOT/extensions/projman/code/enter_bug-entrydefaultvars.pl. You - then create that file and add the following: - $default{'project_manager'} = $product.'@company.com'; - - This code will be invoked whenever enter_bug.cgi is executed. Assuming that - the rest of the customization was completed (e.g. the custom field was added - to the enter_bug template and the required hooks were used in - process_bug.cgi), the new field will now have this default value. - - Notes: - - * If your extension includes entirely new templates in addition to - extensions of standard templates, it should store those new templates in - its BUGZILLA_ROOT/extensions/template/en/ directory. Extension template - directories, like the default/ and custom/ directories, are part of the - template search path, so putting templates there enables them to be - found by the template processor. - The template processor looks for templates first in the custom/ - directory (i.e. templates added by the specific installation), then in - the extensions/ directory (i.e. templates added by extensions), and - finally in the default/ directory (i.e. the standard Bugzilla - templates). Thus, installation-specific templates override both default - and extension templates. - * If you are looking to customize Bugzilla, you can also take advantage of - template hooks. To do so, create a directory in - BUGZILLA_ROOT/template/en/custom/hook/ that corresponds to the hook you - wish to use, then place your customization templates into those - directories. For example, if you wanted to use the hook "end" in - global/useful-links.html.tmpl, you would create the directory - BUGZILLA_ROOT/template/en/custom/hook/ - global/useful-links.html.tmpl/end/ and add your customization template - to this directory. - Obviously this method of customizing Bugzilla only lets you add code to - the standard source files and templates; you cannot change the existing - code. Nevertheless, for those customizations that only add code, this - method can reduce conflicts when merging changes, making upgrading your - customized Bugzilla installation easier. - _________________________________________________________________ - 6.4. Customizing Who Can Change What Warning @@ -5323,9 +5181,9 @@ mins') %] 6.5. Integrating Bugzilla with Third-Party Tools Many utilities and applications can integrate with Bugzilla, either on the - client- or server-side. None of them is maintained by the Bugzilla - community, nor are they being tested during our QA tests, so use them at - your own risk. They are listed at https://wiki.mozilla.org/Bugzilla:Addons. + client- or server-side. None of them are maintained by the Bugzilla + community, nor are they tested during our QA tests, so use them at your own + risk. They are listed at https://wiki.mozilla.org/Bugzilla:Addons. _________________________________________________________________ Appendix A. Troubleshooting diff --git a/docs/en/xml/Bugzilla-Guide.xml b/docs/en/xml/Bugzilla-Guide.xml index 3333b7e17..30a7dc003 100644 --- a/docs/en/xml/Bugzilla-Guide.xml +++ b/docs/en/xml/Bugzilla-Guide.xml @@ -32,10 +32,10 @@ For a devel release, simple bump bz-ver and bz-date --> -<!ENTITY bz-ver "3.5.2"> +<!ENTITY bz-ver "3.5.3"> <!ENTITY bz-nextver "3.6"> -<!ENTITY bz-date "2009-11-18"> -<!ENTITY current-year "2009"> +<!ENTITY bz-date "2010-01-31"> +<!ENTITY current-year "2010"> <!ENTITY landfillbase "http://landfill.bugzilla.org/bugzilla-tip/"> <!ENTITY bz "http://www.bugzilla.org/"> diff --git a/docs/en/xml/CVS/Entries b/docs/en/xml/CVS/Entries index a9524313b..3ea3c5ec6 100644 --- a/docs/en/xml/CVS/Entries +++ b/docs/en/xml/CVS/Entries @@ -1,16 +1,16 @@ -/.cvsignore/1.1/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_2 -/Bugzilla-Guide.xml/1.89/Thu Nov 19 02:14:27 2009//TBUGZILLA-3_5_2 -/about.xml/1.26/Fri Apr 4 06:48:18 2008//TBUGZILLA-3_5_2 -/administration.xml/1.96/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_2 -/conventions.xml/1.12/Fri Apr 4 06:48:20 2008//TBUGZILLA-3_5_2 -/customization.xml/1.47/Mon Aug 10 11:19:24 2009//TBUGZILLA-3_5_2 -/gfdl.xml/1.11/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_2 -/glossary.xml/1.26/Tue Aug 18 11:01:16 2009//TBUGZILLA-3_5_2 -/index.xml/1.6/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_2 -/installation.xml/1.172/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_2 -/modules.xml/1.16/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_2 -/patches.xml/1.25/Fri Apr 4 06:48:25 2008//TBUGZILLA-3_5_2 -/security.xml/1.20/Tue Aug 18 11:01:18 2009//TBUGZILLA-3_5_2 -/troubleshooting.xml/1.14/Sun Oct 18 23:35:00 2009//TBUGZILLA-3_5_2 -/using.xml/1.79/Fri Apr 4 06:48:26 2008//TBUGZILLA-3_5_2 +/.cvsignore/1.1/Fri Apr 4 06:48:17 2008//TBUGZILLA-3_5_3 +/Bugzilla-Guide.xml/1.90/Mon Feb 1 01:04:03 2010//TBUGZILLA-3_5_3 +/about.xml/1.26/Fri Apr 4 06:48:18 2008//TBUGZILLA-3_5_3 +/administration.xml/1.96/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_3 +/conventions.xml/1.12/Fri Apr 4 06:48:20 2008//TBUGZILLA-3_5_3 +/customization.xml/1.48/Sat Dec 12 22:20:09 2009//TBUGZILLA-3_5_3 +/gfdl.xml/1.11/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_3 +/glossary.xml/1.26/Tue Aug 18 11:01:16 2009//TBUGZILLA-3_5_3 +/index.xml/1.6/Fri Apr 4 06:48:21 2008//TBUGZILLA-3_5_3 +/installation.xml/1.172/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_3 +/modules.xml/1.16/Sat Oct 24 05:53:12 2009//TBUGZILLA-3_5_3 +/patches.xml/1.25/Fri Apr 4 06:48:25 2008//TBUGZILLA-3_5_3 +/security.xml/1.20/Tue Aug 18 11:01:18 2009//TBUGZILLA-3_5_3 +/troubleshooting.xml/1.14/Sun Oct 18 23:35:00 2009//TBUGZILLA-3_5_3 +/using.xml/1.79/Fri Apr 4 06:48:26 2008//TBUGZILLA-3_5_3 D diff --git a/docs/en/xml/CVS/Tag b/docs/en/xml/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/en/xml/CVS/Tag +++ b/docs/en/xml/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/en/xml/bugzilla.ent b/docs/en/xml/bugzilla.ent index 379703a54..bdd751e88 100644 --- a/docs/en/xml/bugzilla.ent +++ b/docs/en/xml/bugzilla.ent @@ -14,7 +14,7 @@ <!ENTITY min-email-mime-modifier-ver "1.442"> <!ENTITY min-uri-ver "any"> <!ENTITY min-gd-ver "1.20"> -<!ENTITY min-chart-lines-ver "1.0"> +<!ENTITY min-chart-lines-ver "2.1"> <!ENTITY min-template-plugin-gd-image-ver "any"> <!ENTITY min-gd-text-ver "any"> <!ENTITY min-gd-graph-ver "any"> diff --git a/docs/en/xml/customization.xml b/docs/en/xml/customization.xml index 24b1d4403..f397cff53 100644 --- a/docs/en/xml/customization.xml +++ b/docs/en/xml/customization.xml @@ -2,6 +2,23 @@ <chapter id="customization"> <title>Customizing Bugzilla</title> + <section id="extensions"> + <title>Bugzilla Extensions</title> + + <para> + One of the best ways to customize Bugzilla is by writing a Bugzilla + Extension. Bugzilla Extensions let you modify both the code and + UI of Bugzilla in a way that can be distributed to other Bugzilla + users and ported forward to future versions of Bugzilla with minimal + effort. + </para> + + <para> + See the <ulink url="api/Bugzilla/Extension.html">Bugzilla Extension + documentation</ulink> for information on how to write an Extension. + </para> + </section> + <section id="cust-skins"> <title>Custom Skins</title> @@ -438,241 +455,6 @@ </section> - <section id="cust-hooks"> - <title>The Bugzilla Extension Mechanism</title> - - <warning> - <para> - Note that the below paths are inconsistent and confusing. They will - likely be changed in Bugzilla 4.0. - </para> - </warning> - - <para> - Extensions are a way for extensions to Bugzilla to insert code - into the standard Bugzilla templates and source files - without modifying these files themselves. The extension mechanism - defines a consistent API for extending the standard templates and source files - in a way that cleanly separates standard code from extension code. - Hooks reduce merge conflicts and make it easier to write extensions that work - across multiple versions of Bugzilla, making upgrading a Bugzilla installation - with installed extensions easier. Furthermore, they make it easy to install - and remove extensions as each extension is nothing more than a - simple directory structure. - </para> - - <para> - There are two main types of hooks: code hooks and template hooks. Code - hooks allow extensions to invoke code at specific points in various - source files, while template hooks allow extensions to add elements to - the Bugzilla user interface. - </para> - - <para> - A hook is just a named place in a standard source or template file - where extension source code or template files for that hook get processed. - Each extension has a corresponding directory in the Bugzilla directory - tree (<filename>BUGZILLA_ROOT/extensions/extension_name</filename>). Hooking - an extension source file or template to a hook is as simple as putting - the extension file into extension's template or code directory. - When Bugzilla processes the source file or template and reaches the hook, - it will process all extension files in the hook's directory. - The hooks themselves can be added into any source file or standard template - upon request by extension authors. - </para> - - <para> - To use hooks to extend Bugzilla, first make sure there is - a hook at the appropriate place within the source file or template you - want to extend. The exact appearance of a hook depends on if the hook - is a code hook or a template hook. - </para> - - <para> - Code hooks appear in Bugzilla source files as a single method call - in the format <literal role="code">Bugzilla::Hook->process("<varname>name</varname>");</literal>. - For instance, <filename>enter_bug.cgi</filename> may invoke the hook - "<varname>enter_bug-entrydefaultvars</varname>". Thus, a source file at - <filename>BUGZILLA_ROOT/extensions/EXTENSION_NAME/code/enter_bug-entrydefaultvars.pl</filename> - will be automatically invoked when the code hook is reached. - </para> - - <para> - Template hooks appear in the standard Bugzilla templates as a - single directive in the format - <literal role="code">[% Hook.process("<varname>name</varname>") %]</literal>, - where <varname>name</varname> is the unique name of the hook. - </para> - - <para> - If you aren't sure what you want to extend or just want to browse the - available hooks, either use your favorite multi-file search - tool (e.g. <command>grep</command>) to search the standard templates - for occurrences of <methodname>Hook.process</methodname> or the source - files for occurrences of <methodname>Bugzilla::Hook::process</methodname>. - </para> - - <para> - If there is no hook at the appropriate place within the Bugzilla - source file or template you want to extend, - <ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=User%20Interface">file - a bug requesting one</ulink>, specifying: - </para> - - <simplelist> - <member>the source or template file for which you are - requesting a hook;</member> - <member> - where in the file you would like the hook to be placed - (line number/position for latest version of the file in CVS - or description of location); - </member> - <member>the purpose of the hook;</member> - <member>a link to information about your extension, if any.</member> - </simplelist> - - <para> - The Bugzilla reviewers will promptly review each hook request, - name the hook, add it to the template or source file, and check - the new version of the template into CVS. - </para> - - <para> - You may optionally attach a patch to the bug which implements the hook - and check it in yourself after receiving approval from a Bugzilla - reviewer. The developers may suggest changes to the location of the - hook based on their analysis of your needs or so the hook can satisfy - the needs of multiple extensions, but the process of getting hooks - approved and checked in is not as stringent as the process for general - changes to Bugzilla, and any extension, whether released or still in - development, can have hooks added to meet their needs. - </para> - - <para> - After making sure the hook you need exists (or getting it added if not), - add your extension to the directory within the Bugzilla - extensions tree corresponding to the hook. - </para> - - <para> - That's it! Now, when the source file or template containing the hook - is processed, your extension file will be processed at the point - where the hook appears. - </para> - - <para> - For example, let's say you have an extension named Projman that adds - project management capabilities to Bugzilla. Projman has an - administration interface <filename>edit-projects.cgi</filename>, - and you want to add a link to it into the navigation bar at the bottom - of every Bugzilla page for those users who are authorized - to administer projects. - </para> - - <para> - The navigation bar is generated by the template file - <filename>useful-links.html.tmpl</filename>, which is located in - the <filename>global/</filename> subdirectory on the standard Bugzilla - template path - <filename>BUGZILLA_ROOT/template/en/default/</filename>. - Looking in <filename>useful-links.html.tmpl</filename>, you find - the following hook at the end of the list of standard Bugzilla - administration links: - </para> - - <programlisting><![CDATA[... - [% ', <a href="editkeywords.cgi">keywords</a>' - IF user.in_group('editkeywords') %] - [% Hook.process("edit") %] -...]]></programlisting> - - <para> - The corresponding extension file for this hook is - <filename>BUGZILLA_ROOT/extensions/projman/template/en/global/useful-links-edit.html.tmpl</filename>. - You then create that template file and add the following constant: - </para> - - <programlisting><![CDATA[...[% ', <a href="edit-projects.cgi">projects</a>' IF user.in_group('projman_admins') %]]]></programlisting> - - <para> - Voila! The link now appears after the other administration links in the - navigation bar for users in the <literal>projman_admins</literal> group. - </para> - - <para> - Now, let us say your extension adds a custom "project_manager" field - to enter_bug.cgi. You want to modify the CGI script to set the default - project manager to be productname@company.com. Looking at - <filename>enter_bug.cgi</filename>, you see the enter_bug-entrydefaultvars - hook near the bottom of the file before the default form values are set. - The corresponding extension source file for this hook is located at - <filename>BUGZILLA_ROOT/extensions/projman/code/enter_bug-entrydefaultvars.pl</filename>. - You then create that file and add the following: - </para> - - <programlisting>$default{'project_manager'} = $product.'@company.com';</programlisting> - - <para> - This code will be invoked whenever enter_bug.cgi is executed. - Assuming that the rest of the customization was completed (e.g. the - custom field was added to the enter_bug template and the required hooks - were used in process_bug.cgi), the new field will now have this - default value. - </para> - - <para> - Notes: - </para> - - <itemizedlist> - <listitem> - <para> - If your extension includes entirely new templates in addition to - extensions of standard templates, it should store those new - templates in its - <filename>BUGZILLA_ROOT/extensions/template/en/</filename> - directory. Extension template directories, like the - <filename>default/</filename> and <filename>custom/</filename> - directories, are part of the template search path, so putting templates - there enables them to be found by the template processor. - </para> - - <para> - The template processor looks for templates first in the - <filename>custom/</filename> directory (i.e. templates added by the - specific installation), then in the <filename>extensions/</filename> - directory (i.e. templates added by extensions), and finally in the - <filename>default/</filename> directory (i.e. the standard Bugzilla - templates). Thus, installation-specific templates override both - default and extension templates. - </para> - </listitem> - - <listitem> - <para> - If you are looking to customize Bugzilla, you can also take advantage - of template hooks. To do so, create a directory in - <filename>BUGZILLA_ROOT/template/en/custom/hook/</filename> - that corresponds to the hook you wish to use, then place your - customization templates into those directories. For example, - if you wanted to use the hook "end" in - <filename>global/useful-links.html.tmpl</filename>, you would - create the directory <filename>BUGZILLA_ROOT/template/en/custom/hook/ - global/useful-links.html.tmpl/end/</filename> and add your customization - template to this directory. - </para> - - <para> - Obviously this method of customizing Bugzilla only lets you add code - to the standard source files and templates; you cannot change the - existing code. Nevertheless, for those customizations that only add - code, this method can reduce conflicts when merging changes, - making upgrading your customized Bugzilla installation easier. - </para> - </listitem> - </itemizedlist> - </section> - <section id="cust-change-permissions"> <title>Customizing Who Can Change What</title> @@ -795,8 +577,8 @@ <para> Many utilities and applications can integrate with Bugzilla, - either on the client- or server-side. None of them is maintained - by the Bugzilla community, nor are they being tested during our + either on the client- or server-side. None of them are maintained + by the Bugzilla community, nor are they tested during our QA tests, so use them at your own risk. They are listed at <ulink url="https://wiki.mozilla.org/Bugzilla:Addons" />. </para> diff --git a/docs/lib/CVS/Tag b/docs/lib/CVS/Tag index 1cec2e2b3..510ad3027 100644 --- a/docs/lib/CVS/Tag +++ b/docs/lib/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +TBUGZILLA-3_5_3 diff --git a/docs/lib/Pod/CVS/Tag b/docs/lib/Pod/CVS/Tag index 1cec2e2b3..510ad3027 100644 --- a/docs/lib/Pod/CVS/Tag +++ b/docs/lib/Pod/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +TBUGZILLA-3_5_3 diff --git a/docs/lib/Pod/Simple/CVS/Tag b/docs/lib/Pod/Simple/CVS/Tag index 1cec2e2b3..510ad3027 100644 --- a/docs/lib/Pod/Simple/CVS/Tag +++ b/docs/lib/Pod/Simple/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +TBUGZILLA-3_5_3 diff --git a/docs/lib/Pod/Simple/HTML/CVS/Entries b/docs/lib/Pod/Simple/HTML/CVS/Entries index 5361b7563..eb8473a61 100644 --- a/docs/lib/Pod/Simple/HTML/CVS/Entries +++ b/docs/lib/Pod/Simple/HTML/CVS/Entries @@ -1,2 +1,2 @@ -/Bugzilla.pm/1.1/Tue Sep 5 19:00:56 2006//TBUGZILLA-3_5_2 +/Bugzilla.pm/1.1/Tue Sep 5 19:00:56 2006//TBUGZILLA-3_5_3 D diff --git a/docs/lib/Pod/Simple/HTML/CVS/Tag b/docs/lib/Pod/Simple/HTML/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/lib/Pod/Simple/HTML/CVS/Tag +++ b/docs/lib/Pod/Simple/HTML/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries b/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries index 15d555f02..52339fb95 100644 --- a/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries +++ b/docs/lib/Pod/Simple/HTMLBatch/CVS/Entries @@ -1,2 +1,2 @@ -/Bugzilla.pm/1.7/Tue Oct 27 20:56:50 2009//TBUGZILLA-3_5_2 +/Bugzilla.pm/1.7/Tue Oct 27 20:56:50 2009//TBUGZILLA-3_5_3 D diff --git a/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag b/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag +++ b/docs/lib/Pod/Simple/HTMLBatch/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/editcomponents.cgi b/editcomponents.cgi index c550f0d8c..70afd9c9f 100755 --- a/editcomponents.cgi +++ b/editcomponents.cgi @@ -118,7 +118,7 @@ if ($action eq 'add') { if ($action eq 'new') { check_token_data($token, 'add_component'); # Do the user matching - Bugzilla::User::match_field ($cgi, { + Bugzilla::User::match_field ({ 'initialowner' => { 'type' => 'single' }, 'initialqacontact' => { 'type' => 'single' }, 'initialcc' => { 'type' => 'multi' }, @@ -219,7 +219,7 @@ if ($action eq 'edit') { if ($action eq 'update') { check_token_data($token, 'edit_component'); # Do the user matching - Bugzilla::User::match_field ($cgi, { + Bugzilla::User::match_field ({ 'initialowner' => { 'type' => 'single' }, 'initialqacontact' => { 'type' => 'single' }, 'initialcc' => { 'type' => 'multi' }, diff --git a/editflagtypes.cgi b/editflagtypes.cgi index b730ae2e5..4f85e6c65 100755 --- a/editflagtypes.cgi +++ b/editflagtypes.cgi @@ -47,6 +47,9 @@ local our $cgi = Bugzilla->cgi; local our $template = Bugzilla->template; local our $vars = {}; +# We need this everywhere. +$vars = get_products_and_components($vars); + # Make sure the user is logged in and is an administrator. my $user = Bugzilla->login(LOGIN_REQUIRED); $user->in_group('editcomponents') @@ -93,9 +96,6 @@ exit; ################################################################################ sub list { - # Restrict the list to the given product and component, if given. - $vars = get_products_and_components($vars); - my $product = validateProduct(scalar $cgi->param('product')); my $component = validateComponent($product, scalar $cgi->param('component')); my $product_id = $product ? $product->id : 0; @@ -178,9 +178,6 @@ sub edit { $flag_type = validateID(); } - # Fill $vars with products and components data. - $vars = get_products_and_components($vars); - $vars->{'last_action'} = $cgi->param('action'); if ($cgi->param('action') eq 'enter' || $cgi->param('action') eq 'copy') { $vars->{'action'} = "insert"; @@ -252,9 +249,6 @@ sub processCategoryChange { my %inclusions = clusion_array_to_hash(\@inclusions); my %exclusions = clusion_array_to_hash(\@exclusions); - # Fill $vars with products and components data. - $vars = get_products_and_components($vars); - my @groups = Bugzilla::Group->get_all; $vars->{'groups'} = \@groups; $vars->{'action'} = $cgi->param('action'); diff --git a/editgroups.cgi b/editgroups.cgi index e8d8cfe24..87a31816d 100755 --- a/editgroups.cgi +++ b/editgroups.cgi @@ -242,64 +242,15 @@ if ($action eq 'new') { if ($action eq 'del') { # Check that an existing group ID is given - my $gid = CheckGroupID($cgi->param('group')); - my ($name, $desc, $isbuggroup) = - $dbh->selectrow_array("SELECT name, description, isbuggroup " . - "FROM groups WHERE id = ?", undef, $gid); - - # System groups cannot be deleted! - if (!$isbuggroup) { - ThrowUserError("system_group_not_deletable", { name => $name }); - } - # Groups having a special role cannot be deleted. - my @special_groups; - foreach my $special_group (SPECIAL_GROUPS) { - if ($name eq Bugzilla->params->{$special_group}) { - push(@special_groups, $special_group); - } - } - if (scalar(@special_groups)) { - ThrowUserError('group_has_special_role', {'name' => $name, - 'groups' => \@special_groups}); - } - - # Group inheritance no longer appears in user_group_map. - my $grouplist = join(',', @{Bugzilla::Group->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 ($shared_queries) = + my $group = Bugzilla::Group->check({ id => $cgi->param('group') }); + $group->check_remove({ test_only => 1 }); + $vars->{'shared_queries'} = $dbh->selectrow_array('SELECT COUNT(*) FROM namedquery_group_map - WHERE group_id = ?', - undef, $gid); - - my $bug_ids = $dbh->selectcol_arrayref('SELECT bug_id FROM bug_group_map - WHERE group_id = ?', undef, $gid); - - my $hasbugs = scalar(@$bug_ids) ? 1 : 0; - my $buglist = join(',', @$bug_ids); - - my $hasproduct = Bugzilla::Product->new({'name' => $name}) ? 1 : 0; - - 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; - $vars->{'description'} = $desc; - $vars->{'hasusers'} = $hasusers; - $vars->{'hasbugs'} = $hasbugs; - $vars->{'hasproduct'} = $hasproduct; - $vars->{'hasflags'} = $hasflags; - $vars->{'shared_queries'} = $shared_queries; - $vars->{'buglist'} = $buglist; - $vars->{'token'} = issue_session_token('delete_group'); + WHERE group_id = ?', undef, $group->id); + + $vars->{'group'} = $group; + $vars->{'token'} = issue_session_token('delete_group'); print $cgi->header(); $template->process("admin/groups/delete.html.tmpl", $vars) @@ -315,91 +266,14 @@ if ($action eq 'del') { if ($action eq 'delete') { check_token_data($token, 'delete_group'); # Check that an existing group ID is given - my $gid = CheckGroupID($cgi->param('group')); - my ($name, $isbuggroup) = - $dbh->selectrow_array("SELECT name, isbuggroup FROM groups " . - "WHERE id = ?", undef, $gid); - - # System groups cannot be deleted! - if (!$isbuggroup) { - ThrowUserError("system_group_not_deletable", { name => $name }); - } - # Groups having a special role cannot be deleted. - my @special_groups; - foreach my $special_group (SPECIAL_GROUPS) { - if ($name eq Bugzilla->params->{$special_group}) { - push(@special_groups, $special_group); - } - } - if (scalar(@special_groups)) { - ThrowUserError('group_has_special_role', {'name' => $name, - 'groups' => \@special_groups}); - } - - my $cantdelete = 0; - - # Group inheritance no longer appears in user_group_map. - my $grouplist = join(',', @{Bugzilla::Group->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; - } - - 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; - } - - if (Bugzilla::Product->new({'name' => $name}) - && !defined $cgi->param('unbind')) - { - $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; - } - - $vars->{'gid'} = $gid; - $vars->{'name'} = $name; - - ThrowUserError('group_cannot_delete', $vars) if $cantdelete; - - $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 namedquery_group_map WHERE group_id = ?', - 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); - + my $group = Bugzilla::Group->check({ id => $cgi->param('group') }); + $vars->{'name'} = $group->name; + $group->remove_from_db({ + remove_from_users => scalar $cgi->param('removeusers'), + remove_from_bugs => scalar $cgi->param('removebugs'), + remove_from_flags => scalar $cgi->param('removeflags'), + remove_from_products => scalar $cgi->param('unbind'), + }); delete_token($token); $vars->{'message'} = 'group_deleted'; diff --git a/editparams.cgi b/editparams.cgi index 2c3e4089e..9b4f04e3c 100755 --- a/editparams.cgi +++ b/editparams.cgi @@ -74,7 +74,7 @@ foreach my $panel (keys %$param_panels) { my %hook_panels = map { $_->{name} => { params => $_->{param_list} } } @panels; # Note that this hook is also called in Bugzilla::Config. -Bugzilla::Hook::process('config-modify_panels', { panels => \%hook_panels }); +Bugzilla::Hook::process('config_modify_panels', { panels => \%hook_panels }); $vars->{panels} = \@panels; diff --git a/editproducts.cgi b/editproducts.cgi index e1356abbc..8433ed16b 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -176,18 +176,22 @@ if ($action eq 'new') { check_token_data($token, 'add_product'); - my $product = - Bugzilla::Product->create({classification => $classification_name, - name => $product_name, - description => scalar $cgi->param('description'), - version => scalar $cgi->param('version'), - defaultmilestone => scalar $cgi->param('defaultmilestone'), - milestoneurl => scalar $cgi->param('milestoneurl'), - isactive => scalar $cgi->param('is_active'), - votesperuser => scalar $cgi->param('votesperuser'), - maxvotesperbug => scalar $cgi->param('maxvotesperbug'), - votestoconfirm => scalar $cgi->param('votestoconfirm'), - create_series => scalar $cgi->param('createseries')}); + my %create_params = ( + classification => $classification_name, + name => $product_name, + description => scalar $cgi->param('description'), + version => scalar $cgi->param('version'), + defaultmilestone => scalar $cgi->param('defaultmilestone'), + isactive => scalar $cgi->param('is_active'), + create_series => scalar $cgi->param('createseries'), + allows_unconfirmed => scalar $cgi->param('allows_unconfirmed'), + ); + if (Bugzilla->params->{'usevotes'}) { + $create_params{votesperuser} = $cgi->param('votesperuser'); + $create_params{maxvotesperbug} = $cgi->param('maxvotesperbug'); + $create_params{votestoconfirm} = $cgi->param('votestoconfirm'); + } + my $product = Bugzilla::Product->create(\%create_params); delete_token($token); @@ -218,7 +222,7 @@ if ($action eq 'del') { $vars->{'product'} = $product; $vars->{'token'} = issue_session_token('delete_product'); - Bugzilla::Hook::process("product-confirm_delete", { vars => $vars }); + Bugzilla::Hook::process('product_confirm_delete', { vars => $vars }); $template->process("admin/products/confirm-delete.html.tmpl", $vars) || ThrowTemplateError($template->error()); @@ -233,7 +237,7 @@ if ($action eq 'delete') { my $product = $user->check_can_admin_product($product_name); check_token_data($token, 'delete_product'); - $product->remove_from_db; + $product->remove_from_db({ delete_series => scalar $cgi->param('delete_series')}); delete_token($token); $vars->{'message'} = 'product_deleted'; @@ -294,11 +298,13 @@ if ($action eq 'update') { $product->set_name($product_name); $product->set_description(scalar $cgi->param('description')); $product->set_default_milestone(scalar $cgi->param('defaultmilestone')); - $product->set_milestone_url(scalar $cgi->param('milestoneurl')); $product->set_is_active(scalar $cgi->param('is_active')); - $product->set_votes_per_user(scalar $cgi->param('votesperuser')); - $product->set_votes_per_bug(scalar $cgi->param('maxvotesperbug')); - $product->set_votes_to_confirm(scalar $cgi->param('votestoconfirm')); + if (Bugzilla->params->{'usevotes'}) { + $product->set_votes_per_user(scalar $cgi->param('votesperuser')); + $product->set_votes_per_bug(scalar $cgi->param('maxvotesperbug')); + $product->set_votes_to_confirm(scalar $cgi->param('votestoconfirm')); + } + $product->set_allows_unconfirmed(scalar $cgi->param('allows_unconfirmed')); my $changes = $product->update(); diff --git a/editusers.cgi b/editusers.cgi index b415fd0b0..e63f29fc5 100755 --- a/editusers.cgi +++ b/editusers.cgi @@ -203,9 +203,14 @@ if ($action eq 'search') { check_token_data($token, 'add_user'); + # When e.g. the 'Env' auth method is used, the password field + # is not displayed. In that case, set the password to *. + my $password = $cgi->param('password'); + $password = '*' if !defined $password; + my $new_user = Bugzilla::User->create({ login_name => scalar $cgi->param('login'), - cryptpassword => scalar $cgi->param('password'), + cryptpassword => $password, realname => scalar $cgi->param('name'), disabledtext => scalar $cgi->param('disabledtext'), disable_mail => scalar $cgi->param('disable_mail')}); diff --git a/editwhines.cgi b/editwhines.cgi index e93437647..c59cf8be5 100755 --- a/editwhines.cgi +++ b/editwhines.cgi @@ -37,6 +37,7 @@ use Bugzilla::User; use Bugzilla::Group; use Bugzilla::Token; use Bugzilla::Whine::Schedule; +use Bugzilla::Whine::Query; # require the user to have logged in my $user = Bugzilla->login(LOGIN_REQUIRED); @@ -192,7 +193,7 @@ if ($cgi->param('update')) { } } if (scalar %{$arglist}) { - &Bugzilla::User::match_field($cgi, $arglist); + Bugzilla::User::match_field($arglist); } for my $sid (@scheduleids) { @@ -267,16 +268,9 @@ if ($cgi->param('update')) { } # Check queries for changes - $sth = $dbh->prepare("SELECT id " . - "FROM whine_queries " . - "WHERE eventid=?"); - $sth->execute($eventid); - my @queries = (); - while (my ($qid) = $sth->fetchrow_array) { - push @queries, $qid; - } - - for my $qid (@queries) { + my $queries = Bugzilla::Whine::Query->match({ eventid => $eventid }); + for my $query (@$queries) { + my $qid = $query->id; if ($cgi->param("remove_query_$qid")) { $sth = $dbh->prepare("SELECT whine_queries.id " . @@ -371,32 +365,27 @@ for my $event_id (keys %{$events}) { $mailto = $schedule->mailto->name; } - my $this_schedule = { - 'day' => $schedule->run_day, - 'time' => $schedule->run_time, - 'mailto_type' => $mailto_type, - 'mailto' => $mailto, - 'id' => $schedule->id, - }; - push @{$events->{$event_id}->{'schedule'}}, $this_schedule; + push @{$events->{$event_id}->{'schedule'}}, + { + 'day' => $schedule->run_day, + 'time' => $schedule->run_time, + 'mailto_type' => $mailto_type, + 'mailto' => $mailto, + 'id' => $schedule->id, + }; } # queries - $sth = $dbh->prepare("SELECT query_name, title, sortkey, id, " . - "onemailperbug " . - "FROM whine_queries " . - "WHERE eventid=? " . - "ORDER BY sortkey"); - $sth->execute($event_id); - for my $row (@{$sth->fetchall_arrayref}) { - my $this_query = { - 'name' => $row->[0], - 'title' => $row->[1], - 'sort' => $row->[2], - 'id' => $row->[3], - 'onemailperbug' => $row->[4], - }; - push @{$events->{$event_id}->{'queries'}}, $this_query; + my $queries = Bugzilla::Whine::Query->match({ eventid => $event_id }); + for my $query (@$queries) { + push @{$events->{$event_id}->{'queries'}}, + { + 'name' => $query->name, + 'title' => $query->title, + 'sort' => $query->sortkey, + 'id' => $query->id, + 'onemailperbug' => $query->one_email_per_bug, + }; } } diff --git a/email_in.pl b/email_in.pl index 2d0ebe571..c7b11d8a7 100755 --- a/email_in.pl +++ b/email_in.pl @@ -44,13 +44,15 @@ use Pod::Usage; use Encode; use Bugzilla; +use Bugzilla::Attachment; use Bugzilla::Bug; -use Bugzilla::Constants qw(USAGE_MODE_EMAIL); +use Bugzilla::BugMail; +use Bugzilla::Constants qw(USAGE_MODE_EMAIL CMT_ATTACHMENT_CREATED); use Bugzilla::Error; use Bugzilla::Mailer; +use Bugzilla::Token; use Bugzilla::User; use Bugzilla::Util; -use Bugzilla::Token; ############# # Constants # @@ -74,9 +76,6 @@ sub parse_mail { my %fields; - # Email::Address->parse returns an array - my ($reporter) = Email::Address->parse($input_email->header('From')); - $fields{'reporter'} = $reporter->address; my $summary = $input_email->header('Subject'); if ($summary =~ /\[\S+ (\d+)\](.*)/i) { $fields{'bug_id'} = $1; @@ -107,19 +106,8 @@ sub parse_mail { # Otherwise, we stop parsing fields on the first blank line. $line = trim($line); last if !$line; - - if ($line =~ /^@(\S+)\s*=\s*(.*)\s*/) { + if ($line =~ /^\@(\S+)\s*(?:=|\s)\s*(.*)\s*/) { $current_field = lc($1); - # It's illegal to pass the reporter field as you could - # override the "From:" field of the message and bypass - # authentication checks, such as PGP. - if ($current_field eq 'reporter') { - # We reset the $current_field variable to something - # post_bug and process_bug will ignore, in case the - # attacker splits the reporter field on several lines. - $current_field = 'illegal_field'; - next; - } $fields{$current_field} = $2; } else { @@ -128,6 +116,10 @@ sub parse_mail { } } + %fields = %{ Bugzilla::Bug::map_fields(\%fields) }; + + my ($reporter) = Email::Address->parse($input_email->header('From')); + $fields{'reporter'} = $reporter->address; # The summary line only affects us if we're doing a post_bug. # We have to check it down here because there might have been @@ -150,24 +142,34 @@ sub parse_mail { } sub post_bug { - my ($fields_in) = @_; - my %fields = %$fields_in; - + my ($fields) = @_; debug_print('Posting a new bug...'); - my $cgi = Bugzilla->cgi; - foreach my $field (keys %fields) { - $cgi->param(-name => $field, -value => $fields{$field}); + # Bugzilla::Bug->create throws a confusing CodeError if + # the REQUIRED_CREATE_FIELDS are missing, but much more + # sensible errors if the fields exist but are just undef. + foreach my $field (Bugzilla::Bug::REQUIRED_CREATE_FIELDS) { + $fields->{$field} = undef if !exists $fields->{$field}; } - $cgi->param(-name => 'inbound_email', -value => 1); + my ($retval, $non_conclusive_fields) = + Bugzilla::User::match_field({ + 'assigned_to' => { 'type' => 'single' }, + 'qa_contact' => { 'type' => 'single' }, + 'cc' => { 'type' => 'multi' } + }, $fields, MATCH_SKIP_CONFIRM); - require 'post_bug.cgi'; + if ($retval != USER_MATCH_SUCCESS) { + ThrowUserError('user_match_too_many', {fields => $non_conclusive_fields}); + } + + my $bug = Bugzilla::Bug->create($fields); + debug_print("Created bug " . $bug->id); + return ($bug, $bug->comments->[0]); } sub process_bug { my ($fields_in) = @_; - my %fields = %$fields_in; my $bug_id = $fields{'bug_id'}; @@ -208,6 +210,52 @@ sub process_bug { $cgi->param('token', issue_hash_token([$bug->id, $bug->delta_ts])); require 'process_bug.cgi'; + debug_print("Bug processed."); + + my $added_comment; + if (trim($fields{'comment'})) { + $added_comment = $bug->comments->[-1]; + } + return ($bug, $added_comment); +} + +sub handle_attachments { + my ($bug, $attachments, $comment) = @_; + return if !$attachments; + debug_print("Handling attachments..."); + my $dbh = Bugzilla->dbh; + $dbh->bz_start_transaction(); + my ($update_comment, $update_bug); + foreach my $attachment (@$attachments) { + my $data = delete $attachment->{payload}; + debug_print("Inserting Attachment: " . Dumper($attachment), 2); + $attachment->{content_type} ||= 'application/octet-stream'; + my $obj = Bugzilla::Attachment->create({ + bug => $bug, + description => $attachment->{filename}, + filename => $attachment->{filename}, + mimetype => $attachment->{content_type}, + data => $data, + }); + # If we added a comment, and our comment does not already have a type, + # and this is our first attachment, then we make the comment an + # "attachment created" comment. + if ($comment and !$comment->type and !$update_comment) { + $comment->set_type(CMT_ATTACHMENT_CREATED, $obj->id); + $update_comment = 1; + } + else { + $bug->add_comment('', { type => CMT_ATTACHMENT_CREATED, + extra_data => $obj->id }); + $update_bug = 1; + } + } + # We only update the comments and bugs at the end of the transaction, + # because doing so modifies bugs_fulltext, which is a non-transactional + # table. + $bug->update() if $update_bug; + $comment->update() if $update_comment; + $dbh->bz_commit_transaction(); } ###################### @@ -340,10 +388,10 @@ pod2usage({-verbose => 0, -exitval => 1}) if $switch{'help'}; Bugzilla->usage_mode(USAGE_MODE_EMAIL); - my @mail_lines = <STDIN>; my $mail_text = join("", @mail_lines); my $mail_fields = parse_mail($mail_text); +my $attachments = delete $mail_fields->{'attachments'}; my $username = $mail_fields->{'reporter'}; # If emailsuffix is in use, we have to remove it from the email address. @@ -351,18 +399,30 @@ if (my $suffix = Bugzilla->params->{'emailsuffix'}) { $username =~ s/\Q$suffix\E$//i; } -my $user = Bugzilla::User->new({ name => $username }) - || ThrowUserError('invalid_username', { name => $username }); - +my $user = Bugzilla::User->check($username); Bugzilla->set_user($user); +my ($bug, $comment); if ($mail_fields->{'bug_id'}) { - process_bug($mail_fields); + ($bug, $comment) = process_bug($mail_fields); } else { - post_bug($mail_fields); + ($bug, $comment) = post_bug($mail_fields); } +handle_attachments($bug, $attachments, $comment); + +# This is here for post_bug and handle_attachments, so that when posting a bug +# with an attachment, any comment goes out as an attachment comment. +# +# Eventually this should be sending the mail for process_bug, too, but we have +# to wait for $bug->update() to be fully used in email_in.pl first. So +# currently, process_bug.cgi does the mail sending for bugs, and this does +# any mail sending for attachments after the first one. +Bugzilla::BugMail::Send($bug->id, { changer => Bugzilla->user->login }); +debug_print("Sent bugmail"); + + __END__ =head1 NAME @@ -391,9 +451,9 @@ The script expects to read an email with the following format: From: account@domain.com Subject: Bug Summary - @product = ProductName - @component = ComponentName - @version = 1.0 + @product ProductName + @component ComponentName + @version 1.0 This is a bug description. It will be entered into the bug exactly as written here. @@ -404,39 +464,25 @@ The script expects to read an email with the following format: This is a signature line, and will be removed automatically, It will not be included in the bug description. -The C<@> labels can be any valid field name in Bugzilla that can be -set on C<enter_bug.cgi>. For the list of required field names, see -L<Bugzilla::WebService::Bug/Create>. Note, that there is some difference -in the names of the required input fields between web and email interfaces, -as listed below: - -=over - -=item * - -C<platform> in web is C<@rep_platform> in email - -=item * - -C<severity> in web is C<@bug_severity> in email - -=back - -For the list of all field names, see the C<fielddefs> table in the database. +For the list of valid field names for the C<@> fields, including +a list of which ones are required, see L<Bugzilla::WebService::Bug/create>. +(Note, however, that you cannot specify C<@description> as a field-- +you just add a comment by adding text after the C<@> fields.) The values for the fields can be split across multiple lines, but note that a newline will be parsed as a single space, for the value. So, for example: - @short_desc = This is a very long + @summary This is a very long description Will be parsed as "This is a very long description". -If you specify C<@short_desc>, it will override the summary you specify +If you specify C<@summary>, it will override the summary you specify in the Subject header. -C<account@domain.com> must be a valid Bugzilla account. +C<account@domain.com> (the value of the C<From> header) must be a valid +Bugzilla account. Note that signatures must start with '-- ', the standard signature border. @@ -453,11 +499,11 @@ Your subject starts with [Bug 123456] -- then it modifies bug 123456. =item * -You include C<@bug_id = 123456> in the first lines of the email. +You include C<@id 123456> in the first lines of the email. =back -If you do both, C<@bug_id> takes precedence. +If you do both, C<@id> takes precedence. You send your email in the same format as for creating a bug, except that you only specify the fields you want to change. If the very @@ -466,7 +512,7 @@ will be assumed that you are only adding a comment to the bug. Note that when updating a bug, the C<Subject> header is ignored, except for getting the bug ID. If you want to change the bug's summary, -you have to specify C<@short_desc> as one of the fields to change. +you have to specify C<@summary> as one of the fields to change. Please remember not to include any extra text in your emails, as that text will also be added as a comment. This includes any text that your @@ -476,8 +522,6 @@ another email. =head3 Adding/Removing CCs To add CCs, you can specify them in a comma-separated list in C<@cc>. -For backward compatibility, C<@newcc> can also be used. If both are -present, C<@cc> takes precedence. To remove CCs, specify them as a comma-separated list in C<@removecc>. diff --git a/enter_bug.cgi b/enter_bug.cgi index ab0108748..31e106959 100755 --- a/enter_bug.cgi +++ b/enter_bug.cgi @@ -416,6 +416,7 @@ if ($cloned_bug_id) { $vars->{'dependson'} = join (", ", $cloned_bug_id, @{$cloned_bug->dependson}); $vars->{'blocked'} = join (", ", @{$cloned_bug->blocked}); $vars->{'deadline'} = $cloned_bug->deadline; + $vars->{'estimated_time'} = $cloned_bug->estimated_time; if (defined $cloned_bug->cc) { $vars->{'cc'} = join (", ", @{$cloned_bug->cc}); @@ -458,12 +459,14 @@ else { $default{'rep_platform'} = pickplatform(); $default{'op_sys'} = pickos(); + $vars->{'alias'} = formvalue('alias'); $vars->{'short_desc'} = formvalue('short_desc'); $vars->{'bug_file_loc'} = formvalue('bug_file_loc', "http://"); $vars->{'keywords'} = formvalue('keywords'); $vars->{'dependson'} = formvalue('dependson'); $vars->{'blocked'} = formvalue('blocked'); $vars->{'deadline'} = formvalue('deadline'); + $vars->{'estimated_time'} = formvalue('estimated_time'); $vars->{'cc'} = join(', ', $cgi->param('cc')); @@ -517,8 +520,10 @@ my $initial_statuses = Bugzilla::Status->can_change_to(); @$initial_statuses = grep { $_->is_open } @$initial_statuses; my @status = map { $_->name } @$initial_statuses; -# UNCONFIRMED is illegal if votes_to_confirm = 0. -@status = grep {$_ ne 'UNCONFIRMED'} @status unless $product->votes_to_confirm; +# UNCONFIRMED is illegal if allows_unconfirmed is false. +if (!$product->allows_unconfirmed) { + @status = grep {$_ ne 'UNCONFIRMED'} @status; +} scalar(@status) || ThrowUserError('no_initial_bug_status'); # If the user has no privs... @@ -604,7 +609,7 @@ foreach my $row (@$grouplist) { $vars->{'group'} = \@groups; -Bugzilla::Hook::process("enter_bug-entrydefaultvars", { vars => $vars }); +Bugzilla::Hook::process('enter_bug_entrydefaultvars', { vars => $vars }); $vars->{'default'} = \%default; diff --git a/extensions/BmpConvert/CVS/Entries b/extensions/BmpConvert/CVS/Entries new file mode 100644 index 000000000..ff88eb685 --- /dev/null +++ b/extensions/BmpConvert/CVS/Entries @@ -0,0 +1,4 @@ +/Config.pm/1.1/Tue Nov 24 06:09:45 2009//TBUGZILLA-3_5_3 +/Extension.pm/1.2/Wed Nov 25 01:46:36 2009//TBUGZILLA-3_5_3 +/disabled/1.1/Tue Nov 24 06:09:45 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/BmpConvert/CVS/Repository b/extensions/BmpConvert/CVS/Repository new file mode 100644 index 000000000..34ad83364 --- /dev/null +++ b/extensions/BmpConvert/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/BmpConvert diff --git a/extensions/bmp_convert/CVS/Root b/extensions/BmpConvert/CVS/Root similarity index 100% rename from extensions/bmp_convert/CVS/Root rename to extensions/BmpConvert/CVS/Root diff --git a/extensions/BmpConvert/CVS/Tag b/extensions/BmpConvert/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/BmpConvert/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/code/mailer-before_send.pl b/extensions/BmpConvert/Config.pm similarity index 65% rename from extensions/example/code/mailer-before_send.pl rename to extensions/BmpConvert/Config.pm index 322c78088..1b314917a 100644 --- a/extensions/example/code/mailer-before_send.pl +++ b/extensions/BmpConvert/Config.pm @@ -10,19 +10,24 @@ # implied. See the License for the specific language governing # rights and limitations under the License. # -# The Original Code is the Bugzilla Example Plugin. +# The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by the Initial Developer are Copyright (C) 2008 +# Portions created by the Initial Developer are Copyright (C) 2009 # the Initial Developer. All Rights Reserved. # -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> +package Bugzilla::Extension::BmpConvert; use strict; -use warnings; -use Bugzilla; -my $email = Bugzilla->hook_args->{email}; -# If you add a header to an email, it's best to start it with -# 'X-Bugzilla-<Extension>' so that you don't conflict with -# other extensions. -$email->header_set('X-Bugzilla-Example-Header', 'Example'); +use constant NAME => 'BmpConvert'; +use constant REQUIRED_MODULES => [ + { + package => 'PerlMagick', + module => 'Image::Magick', + version => 0, + }, +]; + +__PACKAGE__->NAME; diff --git a/extensions/BmpConvert/Extension.pm b/extensions/BmpConvert/Extension.pm new file mode 100644 index 000000000..ee08e04f0 --- /dev/null +++ b/extensions/BmpConvert/Extension.pm @@ -0,0 +1,57 @@ +# -*- 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 Frédéric Buclin. +# Portions created by Frédéric Buclin are Copyright (C) 2009 +# Frédéric Buclin. All Rights Reserved. +# +# Contributor(s): +# Frédéric Buclin <LpSolit@gmail.com> +# Max Kanat-Alexander <mkanat@bugzilla.org> + +package Bugzilla::Extension::BmpConvert; +use strict; +use base qw(Bugzilla::Extension); + +use Image::Magick; + +our $VERSION = '1.0'; + +sub attachment_process_data { + my ($self, $args) = @_; + return unless $args->{attributes}->{mimetype} eq 'image/bmp'; + + my $data = ${$args->{data}}; + my $img = Image::Magick->new(magick => 'bmp'); + + # $data is a filehandle. + if (ref $data) { + $img->Read(file => \*$data); + $img->set(magick => 'png'); + $img->Write(file => \*$data); + } + # $data is a blob. + else { + $img->BlobToImage($data); + $img->set(magick => 'png'); + $data = $img->ImageToBlob(); + } + undef $img; + + ${$args->{data}} = $data; + $args->{attributes}->{mimetype} = 'image/png'; + $args->{attributes}->{filename} =~ s/^(.+)\.bmp$/$1.png/i; +} + + __PACKAGE__->NAME; diff --git a/extensions/bmp_convert/disabled b/extensions/BmpConvert/disabled similarity index 100% rename from extensions/bmp_convert/disabled rename to extensions/BmpConvert/disabled diff --git a/extensions/CVS/Entries b/extensions/CVS/Entries index 52679ee3a..e864e6403 100644 --- a/extensions/CVS/Entries +++ b/extensions/CVS/Entries @@ -1,2 +1,3 @@ -D/bmp_convert//// -D/example//// +/create.pl/1.1/Wed Nov 25 05:02:55 2009//TBUGZILLA-3_5_3 +D/BmpConvert//// +D/Example//// diff --git a/extensions/CVS/Tag b/extensions/CVS/Tag index 1cec2e2b3..66fbcb3ad 100644 --- a/extensions/CVS/Tag +++ b/extensions/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/extensions/Example/CVS/Entries b/extensions/Example/CVS/Entries new file mode 100644 index 000000000..7be420c76 --- /dev/null +++ b/extensions/Example/CVS/Entries @@ -0,0 +1,5 @@ +/Config.pm/1.1/Tue Nov 24 06:09:46 2009//TBUGZILLA-3_5_3 +/Extension.pm/1.5/Thu Dec 17 05:27:12 2009//TBUGZILLA-3_5_3 +/disabled/1.1/Tue Nov 24 06:09:46 2009//TBUGZILLA-3_5_3 +D/lib//// +D/template//// diff --git a/extensions/Example/CVS/Repository b/extensions/Example/CVS/Repository new file mode 100644 index 000000000..d40a06132 --- /dev/null +++ b/extensions/Example/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example diff --git a/extensions/bmp_convert/code/CVS/Root b/extensions/Example/CVS/Root similarity index 100% rename from extensions/bmp_convert/code/CVS/Root rename to extensions/Example/CVS/Root diff --git a/extensions/Example/CVS/Tag b/extensions/Example/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/Example/Config.pm b/extensions/Example/Config.pm new file mode 100644 index 000000000..378db359d --- /dev/null +++ b/extensions/Example/Config.pm @@ -0,0 +1,42 @@ +# -*- 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 Everything Solved, Inc. +# Portions created by the Initial Developers are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +package Bugzilla::Extension::Example; +use strict; +use constant NAME => 'Example'; +use constant REQUIRED_MODULES => [ + { + package => 'Data-Dumper', + module => 'Data::Dumper', + version => 0, + }, +]; + +use constant OPTIONAL_MODULES => [ + { + package => 'Acme', + module => 'Acme', + version => 1.11, + feature => ['example_acme'], + }, +]; + +__PACKAGE__->NAME; diff --git a/extensions/Example/Extension.pm b/extensions/Example/Extension.pm new file mode 100644 index 000000000..c0e44aa59 --- /dev/null +++ b/extensions/Example/Extension.pm @@ -0,0 +1,473 @@ +# -*- 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 Everything Solved, Inc. +# Portions created by the Initial Developers are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> +# Frédéric Buclin <LpSolit@gmail.com> + +package Bugzilla::Extension::Example; +use strict; +use base qw(Bugzilla::Extension); + +use Bugzilla::Constants; +use Bugzilla::Group; +use Bugzilla::User; +use Bugzilla::Util qw(diff_arrays html_quote); + +# This is extensions/Example/lib/Util.pm. I can load this here in my +# Extension.pm only because I have a Config.pm. +use Bugzilla::Extension::Example::Util; + +use Data::Dumper; + +our $VERSION = '1.0'; + +sub attachment_process_data { + my ($self, $args) = @_; + my $type = $args->{attributes}->{mimetype}; + my $filename = $args->{attributes}->{filename}; + + # Make sure images have the correct extension. + # Uncomment the two lines below to make this check effective. + if ($type =~ /^image\/(\w+)$/) { + my $format = $1; + if ($filename =~ /^(.+)(:?\.[^\.]+)$/) { + my $name = $1; + #$args->{attributes}->{filename} = "${name}.$format"; + } + else { + # The file has no extension. We append it. + #$args->{attributes}->{filename} .= ".$format"; + } + } +} + +sub auth_login_methods { + my ($self, $args) = @_; + my $modules = $args->{modules}; + if (exists $modules->{Example}) { + $modules->{Example} = 'Bugzilla/Extension/Example/Auth/Login.pm'; + } +} + +sub auth_verify_methods { + my ($self, $args) = @_; + my $modules = $args->{modules}; + if (exists $modules->{Example}) { + $modules->{Example} = 'Bugzilla/Extension/Example/Auth/Verify.pm'; + } +} + +sub bug_columns { + my ($self, $args) = @_; + my $columns = $args->{'columns'}; + push (@$columns, "delta_ts AS example") +} + +sub bug_end_of_create { + my ($self, $args) = @_; + + # This code doesn't actually *do* anything, it's just here to show you + # how to use this hook. + my $bug = $args->{'bug'}; + my $timestamp = $args->{'timestamp'}; + + my $bug_id = $bug->id; + # Uncomment this line to see a line in your webserver's error log whenever + # you file a bug. + # warn "Bug $bug_id has been filed!"; +} + +sub bug_end_of_create_validators { + my ($self, $args) = @_; + + # This code doesn't actually *do* anything, it's just here to show you + # how to use this hook. + my $bug_params = $args->{'params'}; + + # Uncomment this line below to see a line in your webserver's error log + # containing all validated bug field values every time you file a bug. + # warn Dumper($bug_params); + + # This would remove all ccs from the bug, preventing ANY ccs from being + # added on bug creation. + # $bug_params->{cc} = []; +} + +sub bug_end_of_update { + my ($self, $args) = @_; + + # This code doesn't actually *do* anything, it's just here to show you + # how to use this hook. + my ($bug, $timestamp, $changes) = @$args{qw(bug timestamp changes)}; + + foreach my $field (keys %$changes) { + my $used_to_be = $changes->{$field}->[0]; + my $now_it_is = $changes->{$field}->[1]; + } + + my $status_message; + if (my $status_change = $changes->{'bug_status'}) { + my $old_status = new Bugzilla::Status({ name => $status_change->[0] }); + my $new_status = new Bugzilla::Status({ name => $status_change->[1] }); + if ($new_status->is_open && !$old_status->is_open) { + $status_message = "Bug re-opened!"; + } + if (!$new_status->is_open && $old_status->is_open) { + $status_message = "Bug closed!"; + } + } + + my $bug_id = $bug->id; + my $num_changes = scalar keys %$changes; + my $result = "There were $num_changes changes to fields on bug $bug_id" + . " at $timestamp."; + # Uncomment this line to see $result in your webserver's error log whenever + # you update a bug. + # warn $result; +} + +sub bug_fields { + my ($self, $args) = @_; + + my $fields = $args->{'fields'}; + push (@$fields, "example") +} + +sub bug_format_comment { + my ($self, $args) = @_; + + # This replaces every occurrence of the word "foo" with the word + # "bar" + + my $regexes = $args->{'regexes'}; + push(@$regexes, { match => qr/\bfoo\b/, replace => 'bar' }); + + # And this links every occurrence of the word "bar" to example.com, + # but it won't affect "foo"s that have already been turned into "bar" + # above (because each regex is run in order, and later regexes don't modify + # earlier matches, due to some cleverness in Bugzilla's internals). + # + # For example, the phrase "foo bar" would become: + # bar <a href="http://example.com/bar">bar</a> + my $bar_match = qr/\b(bar)\b/; + push(@$regexes, { match => $bar_match, replace => \&_replace_bar }); +} + +# Used by bug_format_comment--see its code for an explanation. +sub _replace_bar { + my $args = shift; + # $match is the first parentheses match in the $bar_match regex + # in bug-format_comment.pl. We get up to 10 regex matches as + # arguments to this function. + my $match = $args->{matches}->[0]; + # Remember, you have to HTML-escape any data that you are returning! + $match = html_quote($match); + return qq{<a href="http://example.com/">$match</a>}; +}; + +sub buglist_columns { + my ($self, $args) = @_; + + my $columns = $args->{'columns'}; + $columns->{'example'} = { 'name' => 'bugs.delta_ts' , 'title' => 'Example' }; +} + +sub colchange_columns { + my ($self, $args) = @_; + + my $columns = $args->{'columns'}; + push (@$columns, "example") +} + +sub config { + my ($self, $args) = @_; + + my $config = $args->{config}; + $config->{Example} = "Bugzilla::Extension::Example::Config"; +} + +sub config_add_panels { + my ($self, $args) = @_; + + my $modules = $args->{panel_modules}; + $modules->{Example} = "Bugzilla::Extension::Example::Config"; +} + +sub config_modify_panels { + my ($self, $args) = @_; + + my $panels = $args->{panels}; + + # Add the "Example" auth methods. + my $auth_params = $panels->{'auth'}->{params}; + my ($info_class) = grep($_->{name} eq 'user_info_class', @$auth_params); + my ($verify_class) = grep($_->{name} eq 'user_verify_class', @$auth_params); + + push(@{ $info_class->{choices} }, 'CGI,Example'); + push(@{ $verify_class->{choices} }, 'Example'); +} + +sub flag_end_of_update { + my ($self, $args) = @_; + + # This code doesn't actually *do* anything, it's just here to show you + # how to use this hook. + my $flag_params = $args; + my ($object, $timestamp, $old_flags, $new_flags) = + @$flag_params{qw(object timestamp old_flags new_flags)}; + my ($removed, $added) = diff_arrays($old_flags, $new_flags); + my ($granted, $denied) = (0, 0); + foreach my $new_flag (@$added) { + $granted++ if $new_flag =~ /\+$/; + $denied++ if $new_flag =~ /-$/; + } + my $bug_id = $object->isa('Bugzilla::Bug') ? $object->id + : $object->bug_id; + my $result = "$granted flags were granted and $denied flags were denied" + . " on bug $bug_id at $timestamp."; + # Uncomment this line to see $result in your webserver's error log whenever + # you update flags. + # warn $result; +} + +sub install_before_final_checks { + my ($self, $args) = @_; + print "Install-before_final_checks hook\n" unless $args->{silent}; +} + +sub mailer_before_send { + my ($self, $args) = @_; + + my $email = $args->{email}; + # If you add a header to an email, it's best to start it with + # 'X-Bugzilla-<Extension>' so that you don't conflict with + # other extensions. + $email->header_set('X-Bugzilla-Example-Header', 'Example'); +} + +sub object_before_create { + my ($self, $args) = @_; + + my $class = $args->{'class'}; + my $object_params = $args->{'params'}; + + # Note that this is a made-up class, for this example. + if ($class->isa('Bugzilla::ExampleObject')) { + warn "About to create an ExampleObject!"; + warn "Got the following parameters: " + . join(', ', keys(%$object_params)); + } +} + +sub object_before_set { + my ($self, $args) = @_; + + my ($object, $field, $value) = @$args{qw(object field value)}; + + # Note that this is a made-up class, for this example. + if ($object->isa('Bugzilla::ExampleObject')) { + warn "The field $field is changing from " . $object->{$field} + . " to $value!"; + } +} + +sub object_end_of_create_validators { + my ($self, $args) = @_; + + my $class = $args->{'class'}; + my $object_params = $args->{'params'}; + + # Note that this is a made-up class, for this example. + if ($class->isa('Bugzilla::ExampleObject')) { + # Always set example_field to 1, even if the validators said otherwise. + $object_params->{example_field} = 1; + } + +} + +sub object_end_of_set_all { + my ($self, $args) = @_; + + my $object = $args->{'class'}; + my $object_params = $args->{'params'}; + + # Note that this is a made-up class, for this example. + if ($object->isa('Bugzilla::ExampleObject')) { + if ($object_params->{example_field} == 1) { + $object->{example_field} = 1; + } + } + +} + +sub object_end_of_update { + my ($self, $args) = @_; + + my ($object, $old_object, $changes) = + @$args{qw(object old_object changes)}; + + # Note that this is a made-up class, for this example. + if ($object->isa('Bugzilla::ExampleObject')) { + if (defined $changes->{'name'}) { + my ($old, $new) = @{ $changes->{'name'} }; + print "The name field changed from $old to $new!"; + } + } +} + +sub page_before_template { + my ($self, $args) = @_; + + my ($vars, $page) = @$args{qw(vars page_id)}; + + # You can see this hook in action by loading page.cgi?id=example.html + if ($page eq 'example.html') { + $vars->{cgi_variables} = { Bugzilla->cgi->Vars }; + } +} + +sub product_confirm_delete { + my ($self, $args) = @_; + + my $vars = $args->{vars}; + $vars->{'example'} = 1; +} + + +sub product_end_of_create { + my ($self, $args) = @_; + + my $product = $args->{product}; + + # For this example, any lines of code that actually make changes to your + # database have been commented out. + + # This section will take a group that exists in your installation + # (possible called test_group) and automatically makes the new + # product hidden to only members of the group. Just remove + # the restriction if you want the new product to be public. + + my $example_group = new Bugzilla::Group({ name => 'example_group' }); + + if ($example_group) { + $product->set_group_controls($example_group, + { entry => 1, + membercontrol => CONTROLMAPMANDATORY, + othercontrol => CONTROLMAPMANDATORY }); +# $product->update(); + } + + # This section will automatically add a default component + # to the new product called 'No Component'. + + my $default_assignee = new Bugzilla::User( + { name => Bugzilla->params->{maintainer} }); + + if ($default_assignee) { +# Bugzilla::Component->create( +# { name => 'No Component', +# product => $product, +# description => 'Select this component if one does not ' . +# 'exist in the current list of components', +# initialowner => $default_assignee }); + } +} + +sub sanitycheck_check { + my ($self, $args) = @_; + + my $dbh = Bugzilla->dbh; + my $sth; + + my $status = $args->{'status'}; + + # Check that all users are Australian + $status->('example_check_au_user'); + + $sth = $dbh->prepare("SELECT userid, login_name + FROM profiles + WHERE login_name NOT LIKE '%.au'"); + $sth->execute; + + my $seen_nonau = 0; + while (my ($userid, $login, $numgroups) = $sth->fetchrow_array) { + $status->('example_check_au_user_alert', + { userid => $userid, login => $login }, + 'alert'); + $seen_nonau = 1; + } + + $status->('example_check_au_user_prompt') if $seen_nonau; +} + +sub sanitycheck_repair { + my ($self, $args) = @_; + + my $cgi = Bugzilla->cgi; + my $dbh = Bugzilla->dbh; + + my $status = $args->{'status'}; + + if ($cgi->param('example_repair_au_user')) { + $status->('example_repair_au_user_start'); + + #$dbh->do("UPDATE profiles + # SET login_name = CONCAT(login_name, '.au') + # WHERE login_name NOT LIKE '%.au'"); + + $status->('example_repair_au_user_end'); + } +} + +sub template_before_create { + my ($self, $args) = @_; + + my $config = $args->{'config'}; + # This will be accessible as "example_global_variable" in every + # template in Bugzilla. See Bugzilla/Template.pm's create() function + # for more things that you can set. + $config->{VARIABLES}->{example_global_variable} = sub { return 'value' }; +} + +sub template_before_process { + my ($self, $args) = @_; + + my ($vars, $file, $context) = @$args{qw(vars file context)}; + + if ($file eq 'bug/edit.html.tmpl') { + $vars->{'viewing_the_bug_form'} = 1; + } +} + +sub webservice { + my ($self, $args) = @_; + + my $dispatch = $args->{dispatch}; + $dispatch->{Example} = "Bugzilla::Extension::Example::WebService"; +} + +sub webservice_error_codes { + my ($self, $args) = @_; + + my $error_map = $args->{error_map}; + $error_map->{'example_my_error'} = 10001; +} + +# This must be the last line of your extension. +__PACKAGE__->NAME; diff --git a/extensions/example/disabled b/extensions/Example/disabled similarity index 100% rename from extensions/example/disabled rename to extensions/Example/disabled diff --git a/extensions/Example/lib/Auth/CVS/Entries b/extensions/Example/lib/Auth/CVS/Entries new file mode 100644 index 000000000..b0b5e8ae4 --- /dev/null +++ b/extensions/Example/lib/Auth/CVS/Entries @@ -0,0 +1,3 @@ +/Login.pm/1.1/Tue Nov 24 11:50:27 2009//TBUGZILLA-3_5_3 +/Verify.pm/1.1/Tue Nov 24 11:50:27 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/lib/Auth/CVS/Repository b/extensions/Example/lib/Auth/CVS/Repository new file mode 100644 index 000000000..d31ffbfb8 --- /dev/null +++ b/extensions/Example/lib/Auth/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/lib/Auth diff --git a/extensions/example/CVS/Root b/extensions/Example/lib/Auth/CVS/Root similarity index 100% rename from extensions/example/CVS/Root rename to extensions/Example/lib/Auth/CVS/Root diff --git a/extensions/Example/lib/Auth/CVS/Tag b/extensions/Example/lib/Auth/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/lib/Auth/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/lib/AuthLogin.pm b/extensions/Example/lib/Auth/Login.pm similarity index 95% rename from extensions/example/lib/AuthLogin.pm rename to extensions/Example/lib/Auth/Login.pm index def3fa228..9f4f37dc3 100644 --- a/extensions/example/lib/AuthLogin.pm +++ b/extensions/Example/lib/Auth/Login.pm @@ -18,7 +18,7 @@ # # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -package extensions::example::lib::AuthLogin; +package Bugzilla::Extension::Example::Auth::Login; use strict; use base qw(Bugzilla::Auth::Login); use constant user_can_create_account => 0; diff --git a/extensions/example/lib/AuthVerify.pm b/extensions/Example/lib/Auth/Verify.pm similarity index 94% rename from extensions/example/lib/AuthVerify.pm rename to extensions/Example/lib/Auth/Verify.pm index b89bbb213..0141a0d6a 100644 --- a/extensions/example/lib/AuthVerify.pm +++ b/extensions/Example/lib/Auth/Verify.pm @@ -18,7 +18,7 @@ # # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -package extensions::example::lib::AuthVerify; +package Bugzilla::Extension::Example::Auth::Verify; use strict; use base qw(Bugzilla::Auth::Verify); use Bugzilla::Constants; diff --git a/extensions/Example/lib/CVS/Entries b/extensions/Example/lib/CVS/Entries new file mode 100644 index 000000000..c5788cac0 --- /dev/null +++ b/extensions/Example/lib/CVS/Entries @@ -0,0 +1,4 @@ +/Config.pm/1.1/Tue Nov 24 11:50:27 2009//TBUGZILLA-3_5_3 +/Util.pm/1.1/Tue Nov 24 11:50:27 2009//TBUGZILLA-3_5_3 +/WebService.pm/1.1/Tue Nov 24 11:50:27 2009//TBUGZILLA-3_5_3 +D/Auth//// diff --git a/extensions/Example/lib/CVS/Repository b/extensions/Example/lib/CVS/Repository new file mode 100644 index 000000000..7658cc924 --- /dev/null +++ b/extensions/Example/lib/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/lib diff --git a/extensions/example/code/CVS/Root b/extensions/Example/lib/CVS/Root similarity index 100% rename from extensions/example/code/CVS/Root rename to extensions/Example/lib/CVS/Root diff --git a/extensions/Example/lib/CVS/Tag b/extensions/Example/lib/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/lib/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/lib/ConfigExample.pm b/extensions/Example/lib/Config.pm similarity index 95% rename from extensions/example/lib/ConfigExample.pm rename to extensions/Example/lib/Config.pm index 5ee612de2..a126e82df 100644 --- a/extensions/example/lib/ConfigExample.pm +++ b/extensions/Example/lib/Config.pm @@ -19,7 +19,7 @@ # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> # Bradley Baetz <bbaetz@acm.org> -package extensions::example::lib::ConfigExample; +package Bugzilla::Extension::Example::Config; use strict; use warnings; diff --git a/extensions/example/code/webservice-error_codes.pl b/extensions/Example/lib/Util.pm similarity index 85% rename from extensions/example/code/webservice-error_codes.pl rename to extensions/Example/lib/Util.pm index 94c4c52fc..596f048e9 100644 --- a/extensions/example/code/webservice-error_codes.pl +++ b/extensions/Example/lib/Util.pm @@ -13,13 +13,16 @@ # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by Everything Solved, Inc. are Copyright (C) 2008 +# Portions created by Everything Solved, Inc. are Copyright (C) 2009 # Everything Solved, Inc. All Rights Reserved. # # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> +package Bugzilla::Extension::Example::Util; use strict; use warnings; -use Bugzilla; -my $error_map = Bugzilla->hook_args->{error_map}; -$error_map->{'example_my_error'} = 10001; + +# This file exists only to demonstrate how to use and name your +# modules in an extension. + +1; diff --git a/extensions/example/lib/WSExample.pm b/extensions/Example/lib/WebService.pm similarity index 95% rename from extensions/example/lib/WSExample.pm rename to extensions/Example/lib/WebService.pm index 754d49f70..8563ec7f0 100644 --- a/extensions/example/lib/WSExample.pm +++ b/extensions/Example/lib/WebService.pm @@ -18,7 +18,7 @@ # # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -package extensions::example::lib::WSExample; +package Bugzilla::Extension::Example::WebService; use strict; use warnings; use base qw(Bugzilla::WebService); diff --git a/extensions/example/template/CVS/Entries b/extensions/Example/template/CVS/Entries similarity index 100% rename from extensions/example/template/CVS/Entries rename to extensions/Example/template/CVS/Entries diff --git a/extensions/Example/template/CVS/Repository b/extensions/Example/template/CVS/Repository new file mode 100644 index 000000000..d3266223a --- /dev/null +++ b/extensions/Example/template/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template diff --git a/extensions/example/lib/Bugzilla/CVS/Root b/extensions/Example/template/CVS/Root similarity index 100% rename from extensions/example/lib/Bugzilla/CVS/Root rename to extensions/Example/template/CVS/Root diff --git a/extensions/Example/template/CVS/Tag b/extensions/Example/template/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/Example/template/en/CVS/Entries b/extensions/Example/template/en/CVS/Entries new file mode 100644 index 000000000..549f77d6d --- /dev/null +++ b/extensions/Example/template/en/CVS/Entries @@ -0,0 +1 @@ +D/default//// diff --git a/extensions/Example/template/en/CVS/Repository b/extensions/Example/template/en/CVS/Repository new file mode 100644 index 000000000..163a395b4 --- /dev/null +++ b/extensions/Example/template/en/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en diff --git a/extensions/example/lib/CVS/Root b/extensions/Example/template/en/CVS/Root similarity index 100% rename from extensions/example/lib/CVS/Root rename to extensions/Example/template/en/CVS/Root diff --git a/extensions/Example/template/en/CVS/Tag b/extensions/Example/template/en/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/en/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/default/CVS/Entries b/extensions/Example/template/en/default/CVS/Entries similarity index 51% rename from extensions/example/template/en/default/CVS/Entries rename to extensions/Example/template/en/default/CVS/Entries index 8821fd482..01e98e5f1 100644 --- a/extensions/example/template/en/default/CVS/Entries +++ b/extensions/Example/template/en/default/CVS/Entries @@ -1,2 +1,4 @@ D/admin//// +D/hook//// D/pages//// +D/setup//// diff --git a/extensions/Example/template/en/default/CVS/Repository b/extensions/Example/template/en/default/CVS/Repository new file mode 100644 index 000000000..86407b384 --- /dev/null +++ b/extensions/Example/template/en/default/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default diff --git a/extensions/example/template/CVS/Root b/extensions/Example/template/en/default/CVS/Root similarity index 100% rename from extensions/example/template/CVS/Root rename to extensions/Example/template/en/default/CVS/Root diff --git a/extensions/Example/template/en/default/CVS/Tag b/extensions/Example/template/en/default/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/en/default/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/default/admin/CVS/Entries b/extensions/Example/template/en/default/admin/CVS/Entries similarity index 100% rename from extensions/example/template/en/default/admin/CVS/Entries rename to extensions/Example/template/en/default/admin/CVS/Entries diff --git a/extensions/Example/template/en/default/admin/CVS/Repository b/extensions/Example/template/en/default/admin/CVS/Repository new file mode 100644 index 000000000..a9d42ae5c --- /dev/null +++ b/extensions/Example/template/en/default/admin/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/admin diff --git a/extensions/example/template/en/CVS/Root b/extensions/Example/template/en/default/admin/CVS/Root similarity index 100% rename from extensions/example/template/en/CVS/Root rename to extensions/Example/template/en/default/admin/CVS/Root diff --git a/extensions/Example/template/en/default/admin/CVS/Tag b/extensions/Example/template/en/default/admin/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/en/default/admin/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/Example/template/en/default/admin/params/CVS/Entries b/extensions/Example/template/en/default/admin/params/CVS/Entries new file mode 100644 index 000000000..5bb37a582 --- /dev/null +++ b/extensions/Example/template/en/default/admin/params/CVS/Entries @@ -0,0 +1,2 @@ +/example.html.tmpl/1.1/Tue Nov 24 06:09:47 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/template/en/default/admin/params/CVS/Repository b/extensions/Example/template/en/default/admin/params/CVS/Repository new file mode 100644 index 000000000..3d654a042 --- /dev/null +++ b/extensions/Example/template/en/default/admin/params/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/admin/params diff --git a/extensions/example/template/en/admin/CVS/Root b/extensions/Example/template/en/default/admin/params/CVS/Root similarity index 100% rename from extensions/example/template/en/admin/CVS/Root rename to extensions/Example/template/en/default/admin/params/CVS/Root diff --git a/extensions/Example/template/en/default/admin/params/CVS/Tag b/extensions/Example/template/en/default/admin/params/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/template/en/default/admin/params/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/default/admin/params/example.html.tmpl b/extensions/Example/template/en/default/admin/params/example.html.tmpl similarity index 100% rename from extensions/example/template/en/default/admin/params/example.html.tmpl rename to extensions/Example/template/en/default/admin/params/example.html.tmpl diff --git a/extensions/example/template/en/CVS/Entries b/extensions/Example/template/en/default/hook/CVS/Entries similarity index 64% rename from extensions/example/template/en/CVS/Entries rename to extensions/Example/template/en/default/hook/CVS/Entries index e85e0b3bc..8bfd8445e 100644 --- a/extensions/example/template/en/CVS/Entries +++ b/extensions/Example/template/en/default/hook/CVS/Entries @@ -1,3 +1,2 @@ D/admin//// -D/default//// D/global//// diff --git a/extensions/Example/template/en/default/hook/CVS/Repository b/extensions/Example/template/en/default/hook/CVS/Repository new file mode 100644 index 000000000..ce2e2c49f --- /dev/null +++ b/extensions/Example/template/en/default/hook/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/hook diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Root b/extensions/Example/template/en/default/hook/CVS/Root similarity index 100% rename from extensions/example/template/en/admin/sanitycheck/CVS/Root rename to extensions/Example/template/en/default/hook/CVS/Root diff --git a/extensions/Example/template/en/default/hook/CVS/Tag b/extensions/Example/template/en/default/hook/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/en/default/hook/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/admin/CVS/Entries b/extensions/Example/template/en/default/hook/admin/CVS/Entries similarity index 100% rename from extensions/example/template/en/admin/CVS/Entries rename to extensions/Example/template/en/default/hook/admin/CVS/Entries diff --git a/extensions/Example/template/en/default/hook/admin/CVS/Repository b/extensions/Example/template/en/default/hook/admin/CVS/Repository new file mode 100644 index 000000000..57673e1d3 --- /dev/null +++ b/extensions/Example/template/en/default/hook/admin/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/hook/admin diff --git a/extensions/example/template/en/default/CVS/Root b/extensions/Example/template/en/default/hook/admin/CVS/Root similarity index 100% rename from extensions/example/template/en/default/CVS/Root rename to extensions/Example/template/en/default/hook/admin/CVS/Root diff --git a/extensions/Example/template/en/default/hook/admin/CVS/Tag b/extensions/Example/template/en/default/hook/admin/CVS/Tag new file mode 100644 index 000000000..510ad3027 --- /dev/null +++ b/extensions/Example/template/en/default/hook/admin/CVS/Tag @@ -0,0 +1 @@ +TBUGZILLA-3_5_3 diff --git a/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Entries b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Entries new file mode 100644 index 000000000..91cdc82fa --- /dev/null +++ b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Entries @@ -0,0 +1,2 @@ +/messages-statuses.html.tmpl/1.1/Wed Nov 25 03:37:10 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Repository b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Repository new file mode 100644 index 000000000..01a138d4d --- /dev/null +++ b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/hook/admin/sanitycheck diff --git a/extensions/example/template/en/default/admin/CVS/Root b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Root similarity index 100% rename from extensions/example/template/en/default/admin/CVS/Root rename to extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Root diff --git a/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Tag b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/template/en/default/hook/admin/sanitycheck/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/admin/sanitycheck/messages-statuses.html.tmpl b/extensions/Example/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl similarity index 100% rename from extensions/example/template/en/admin/sanitycheck/messages-statuses.html.tmpl rename to extensions/Example/template/en/default/hook/admin/sanitycheck/messages-statuses.html.tmpl diff --git a/extensions/Example/template/en/default/hook/global/CVS/Entries b/extensions/Example/template/en/default/hook/global/CVS/Entries new file mode 100644 index 000000000..ef9b29a86 --- /dev/null +++ b/extensions/Example/template/en/default/hook/global/CVS/Entries @@ -0,0 +1,2 @@ +/user-error-errors.html.tmpl/1.1/Wed Nov 25 03:37:10 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/template/en/default/hook/global/CVS/Repository b/extensions/Example/template/en/default/hook/global/CVS/Repository new file mode 100644 index 000000000..8e6724b39 --- /dev/null +++ b/extensions/Example/template/en/default/hook/global/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/hook/global diff --git a/extensions/example/template/en/default/admin/params/CVS/Root b/extensions/Example/template/en/default/hook/global/CVS/Root similarity index 100% rename from extensions/example/template/en/default/admin/params/CVS/Root rename to extensions/Example/template/en/default/hook/global/CVS/Root diff --git a/extensions/Example/template/en/default/hook/global/CVS/Tag b/extensions/Example/template/en/default/hook/global/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/template/en/default/hook/global/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/global/user-error-errors.html.tmpl b/extensions/Example/template/en/default/hook/global/user-error-errors.html.tmpl similarity index 100% rename from extensions/example/template/en/global/user-error-errors.html.tmpl rename to extensions/Example/template/en/default/hook/global/user-error-errors.html.tmpl diff --git a/extensions/Example/template/en/default/pages/CVS/Entries b/extensions/Example/template/en/default/pages/CVS/Entries new file mode 100644 index 000000000..5bb37a582 --- /dev/null +++ b/extensions/Example/template/en/default/pages/CVS/Entries @@ -0,0 +1,2 @@ +/example.html.tmpl/1.1/Tue Nov 24 06:09:47 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/template/en/default/pages/CVS/Repository b/extensions/Example/template/en/default/pages/CVS/Repository new file mode 100644 index 000000000..ade59c85d --- /dev/null +++ b/extensions/Example/template/en/default/pages/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/pages diff --git a/extensions/example/template/en/default/pages/CVS/Root b/extensions/Example/template/en/default/pages/CVS/Root similarity index 100% rename from extensions/example/template/en/default/pages/CVS/Root rename to extensions/Example/template/en/default/pages/CVS/Root diff --git a/extensions/Example/template/en/default/pages/CVS/Tag b/extensions/Example/template/en/default/pages/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/template/en/default/pages/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/template/en/default/pages/example.html.tmpl b/extensions/Example/template/en/default/pages/example.html.tmpl similarity index 100% rename from extensions/example/template/en/default/pages/example.html.tmpl rename to extensions/Example/template/en/default/pages/example.html.tmpl diff --git a/extensions/Example/template/en/default/setup/CVS/Entries b/extensions/Example/template/en/default/setup/CVS/Entries new file mode 100644 index 000000000..865e08e75 --- /dev/null +++ b/extensions/Example/template/en/default/setup/CVS/Entries @@ -0,0 +1,2 @@ +/strings.txt.pl/1.1/Tue Nov 24 06:09:48 2009//TBUGZILLA-3_5_3 +D diff --git a/extensions/Example/template/en/default/setup/CVS/Repository b/extensions/Example/template/en/default/setup/CVS/Repository new file mode 100644 index 000000000..d9208be9c --- /dev/null +++ b/extensions/Example/template/en/default/setup/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/extensions/Example/template/en/default/setup diff --git a/extensions/example/template/en/global/CVS/Root b/extensions/Example/template/en/default/setup/CVS/Root similarity index 100% rename from extensions/example/template/en/global/CVS/Root rename to extensions/Example/template/en/default/setup/CVS/Root diff --git a/extensions/Example/template/en/default/setup/CVS/Tag b/extensions/Example/template/en/default/setup/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/extensions/Example/template/en/default/setup/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/extensions/example/code/webservice.pl b/extensions/Example/template/en/default/setup/strings.txt.pl similarity index 62% rename from extensions/example/code/webservice.pl rename to extensions/Example/template/en/default/setup/strings.txt.pl index ff503be39..8da19c0aa 100644 --- a/extensions/example/code/webservice.pl +++ b/extensions/Example/template/en/default/setup/strings.txt.pl @@ -1,5 +1,3 @@ -# -*- 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 @@ -10,16 +8,17 @@ # 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 Everything Solved, Inc. -# Portions created by Everything Solved, Inc. are Copyright (C) 2007 -# Everything Solved, Inc. All Rights Reserved. +# Portions created by the Initial Developer are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. # -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> +# The Original Code is the Bugzilla Bug Tracking System. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +%strings = ( + feature_example_acme => 'Example Extension: Acme Feature', +); -use strict; -use warnings; -use Bugzilla; -my $dispatch = Bugzilla->hook_args->{dispatch}; -$dispatch->{Example} = "extensions::example::lib::WSExample"; +1; diff --git a/extensions/bmp_convert/CVS/Entries b/extensions/bmp_convert/CVS/Entries deleted file mode 100644 index 089a2eb5a..000000000 --- a/extensions/bmp_convert/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/disabled/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_2 -/info.pl/1.1/Thu Aug 13 21:32:20 2009//TBUGZILLA-3_5_2 -D/code//// diff --git a/extensions/bmp_convert/CVS/Repository b/extensions/bmp_convert/CVS/Repository deleted file mode 100644 index 126433bbb..000000000 --- a/extensions/bmp_convert/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/bmp_convert diff --git a/extensions/bmp_convert/CVS/Tag b/extensions/bmp_convert/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/bmp_convert/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/bmp_convert/code/CVS/Entries b/extensions/bmp_convert/code/CVS/Entries deleted file mode 100644 index 833557498..000000000 --- a/extensions/bmp_convert/code/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/attachment-process_data.pl/1.1/Thu Aug 13 21:32:23 2009//TBUGZILLA-3_5_2 -D diff --git a/extensions/bmp_convert/code/CVS/Repository b/extensions/bmp_convert/code/CVS/Repository deleted file mode 100644 index cb640761b..000000000 --- a/extensions/bmp_convert/code/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/bmp_convert/code diff --git a/extensions/bmp_convert/code/CVS/Tag b/extensions/bmp_convert/code/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/bmp_convert/code/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/bmp_convert/code/attachment-process_data.pl b/extensions/bmp_convert/code/attachment-process_data.pl deleted file mode 100644 index 15593cc64..000000000 --- a/extensions/bmp_convert/code/attachment-process_data.pl +++ /dev/null @@ -1,48 +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 Frédéric Buclin. -# Portions created by Frédéric Buclin are Copyright (C) 2009 -# Frédéric Buclin. All Rights Reserved. -# -# Contributor(s): Frédéric Buclin <LpSolit@gmail.com> - -use strict; - -use Image::Magick; -use Bugzilla; - -my $args = Bugzilla->hook_args; -return unless $args->{attributes}->{mimetype} eq 'image/bmp'; - -my $data = ${$args->{data}}; -my $img = Image::Magick->new(magick=>'bmp'); - -# $data is a filehandle. -if (ref $data) { - $img->Read(file => \*$data); - $img->set(magick=>'png'); - $img->Write(file => \*$data); -} -# $data is a blob. -else { - $img->BlobToImage($data); - $img->set(magick=>'png'); - $data = $img->ImageToBlob(); -} - -${$args->{data}} = $data; -$args->{attributes}->{mimetype} = 'image/png'; -$args->{attributes}->{filename} =~ s/^(.+)\.bmp$/$1.png/i; -undef $img; diff --git a/extensions/bmp_convert/info.pl b/extensions/bmp_convert/info.pl deleted file mode 100644 index 0d2ad5eb2..000000000 --- a/extensions/bmp_convert/info.pl +++ /dev/null @@ -1,27 +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 Frédéric Buclin. -# Portions created by Frédéric Buclin are Copyright (C) 2009 -# Frédéric Buclin. All Rights Reserved. -# -# Contributor(s): Frédéric Buclin <LpSolit@gmail.com> - -use strict; - -{ x_name => 'BMP to PNG converter', - version => '1.0', - x_description => 'Automatically converts BMP images to the PNG format', - x_author => 'Greg Hendricks, Frédéric Buclin', -}; diff --git a/extensions/create.pl b/extensions/create.pl new file mode 100644 index 000000000..c4d911c2a --- /dev/null +++ b/extensions/create.pl @@ -0,0 +1,85 @@ +#!/usr/bin/perl -w +# +# 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 Everything Solved, Inc. +# Portions created by the Initial Developer are Copyright (C) 2009 the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Max Kanat-Alexander <mkanat@bugzilla.org> + +use strict; +use lib qw(. lib); +use Bugzilla; +use Bugzilla::Constants; +use Bugzilla::Error; +use Bugzilla::Util qw(get_text); + +use File::Path qw(mkpath); +use DateTime; + +my $base_dir = bz_locations()->{'extensionsdir'}; + +my $name = $ARGV[0] or ThrowUserError('extension_create_no_name'); +if ($name !~ /^[A-Z]/) { + ThrowUserError('extension_first_letter_caps', { name => $name }); +} + +my $extension_dir = "$base_dir/$name"; +mkpath($extension_dir) + || die "$extension_dir already exists or cannot be created.\n"; + +my $lcname = lc($name); +foreach my $path (qw(lib template/en/default/hook), + "template/en/default/$lcname") +{ + mkpath("$extension_dir/$path") || die "$extension_dir/$path: $!"; +} + +my $year = DateTime->now()->year; + +my $template = Bugzilla->template; +my $vars = { year => $year, name => $name, path => $extension_dir }; +my %create_files = ( + 'config.pm.tmpl' => 'Config.pm', + 'extension.pm.tmpl' => 'Extension.pm', + 'util.pm.tmpl' => 'lib/Util.pm', + 'hook-readme.txt.tmpl' => 'template/en/default/hook/README', + 'name-readme.txt.tmpl' => "template/en/default/$lcname/README", +); + +foreach my $template_file (keys %create_files) { + my $target = $create_files{$template_file}; + my $output; + $template->process("extensions/$template_file", $vars, \$output) + or ThrowTemplateError($template->error()); + open(my $fh, '>', "$extension_dir/$target"); + print $fh $output; + close($fh); +} + +print get_text('extension_created', $vars), "\n"; + +__END__ + +=head1 NAME + +extensions/create.pl - Create a framework for a new Bugzilla Extension. + +=head1 SYNOPSIS + + extensions/create.pl NAME + + Creates a framework for an extension called NAME in the F<extensions/> + directory. diff --git a/extensions/example/CVS/Entries b/extensions/example/CVS/Entries deleted file mode 100644 index 288f030e7..000000000 --- a/extensions/example/CVS/Entries +++ /dev/null @@ -1,5 +0,0 @@ -/disabled/1.1/Fri Oct 19 07:58:49 2007//TBUGZILLA-3_5_2 -/info.pl/1.1/Mon May 19 18:38:27 2008//TBUGZILLA-3_5_2 -D/code//// -D/lib//// -D/template//// diff --git a/extensions/example/CVS/Repository b/extensions/example/CVS/Repository deleted file mode 100644 index a30c00aad..000000000 --- a/extensions/example/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example diff --git a/extensions/example/CVS/Tag b/extensions/example/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/code/CVS/Entries b/extensions/example/code/CVS/Entries deleted file mode 100644 index b5d3dea8d..000000000 --- a/extensions/example/code/CVS/Entries +++ /dev/null @@ -1,28 +0,0 @@ -/attachment-process_data.pl/1.1/Thu Aug 13 02:25:09 2009//TBUGZILLA-3_5_2 -/auth-login_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 -/auth-verify_methods.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 -/bug-columns.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_2 -/bug-end_of_create.pl/1.2/Mon Jun 22 08:49:56 2009//TBUGZILLA-3_5_2 -/bug-end_of_create_validators.pl/1.1/Wed Nov 18 07:15:23 2009//TBUGZILLA-3_5_2 -/bug-end_of_update.pl/1.1/Wed Nov 5 19:15:07 2008//TBUGZILLA-3_5_2 -/bug-fields.pl/1.1/Thu Aug 21 22:56:49 2008//TBUGZILLA-3_5_2 -/bug-format_comment.pl/1.1/Wed Sep 30 23:42:59 2009//TBUGZILLA-3_5_2 -/buglist-columns.pl/1.1/Sat Jun 28 18:04:55 2008//TBUGZILLA-3_5_2 -/colchange-columns.pl/1.1/Tue Aug 19 21:28:03 2008//TBUGZILLA-3_5_2 -/config-add_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 -/config-modify_panels.pl/1.1/Wed Aug 6 23:38:29 2008//TBUGZILLA-3_5_2 -/config.pl/1.1/Mon May 5 23:01:25 2008//TBUGZILLA-3_5_2 -/flag-end_of_update.pl/1.2/Wed Aug 5 12:36:14 2009//TBUGZILLA-3_5_2 -/install-before_final_checks.pl/1.1/Thu Aug 21 22:58:46 2008//TBUGZILLA-3_5_2 -/mailer-before_send.pl/1.1/Mon Oct 20 00:04:45 2008//TBUGZILLA-3_5_2 -/object-before_create.pl/1.1/Wed Nov 18 07:11:36 2009//TBUGZILLA-3_5_2 -/object-before_set.pl/1.1/Wed Nov 18 07:17:52 2009//TBUGZILLA-3_5_2 -/object-end_of_create_validators.pl/1.1/Wed Nov 18 07:13:25 2009//TBUGZILLA-3_5_2 -/page-before_template.pl/1.1/Thu Aug 6 15:14:50 2009//TBUGZILLA-3_5_2 -/product-confirm_delete.pl/1.2/Thu Dec 18 17:33:35 2008//TBUGZILLA-3_5_2 -/sanitycheck-check.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_2 -/sanitycheck-repair.pl/1.1/Mon Sep 21 22:10:11 2009//TBUGZILLA-3_5_2 -/template-before_process.pl/1.1/Tue Oct 20 23:08:05 2009//TBUGZILLA-3_5_2 -/webservice-error_codes.pl/1.1/Tue May 27 22:09:05 2008//TBUGZILLA-3_5_2 -/webservice.pl/1.2/Fri Oct 19 08:01:51 2007//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/code/CVS/Repository b/extensions/example/code/CVS/Repository deleted file mode 100644 index a27995294..000000000 --- a/extensions/example/code/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/code diff --git a/extensions/example/code/CVS/Tag b/extensions/example/code/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/code/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/code/attachment-process_data.pl b/extensions/example/code/attachment-process_data.pl deleted file mode 100644 index 67cbf3880..000000000 --- a/extensions/example/code/attachment-process_data.pl +++ /dev/null @@ -1,42 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Frédéric Buclin. -# Portions created by Frédéric Buclin are Copyright (C) 2009 -# Frédéric Buclin. All Rights Reserved. -# -# Contributor(s): Frédéric Buclin <LpSolit@gmail.com> - -use strict; -use warnings; - -use Bugzilla; -my $args = Bugzilla->hook_args; - -my $type = $args->{attributes}->{mimetype}; -my $filename = $args->{attributes}->{filename}; - -# Make sure images have the correct extension. -# Uncomment the two lines below to make this check effective. -if ($type =~ /^image\/(\w+)$/) { - my $format = $1; - if ($filename =~ /^(.+)(:?\.[^\.]+)$/) { - my $name = $1; -# $args->{attributes}->{filename} = "${name}.$format"; - } - else { - # The file has no extension. We append it. -# $args->{attributes}->{filename} .= ".$format"; - } -} diff --git a/extensions/example/code/auth-login_methods.pl b/extensions/example/code/auth-login_methods.pl deleted file mode 100644 index 0ae12aa6b..000000000 --- a/extensions/example/code/auth-login_methods.pl +++ /dev/null @@ -1,27 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -my $modules = Bugzilla->hook_args->{modules}; -if (exists $modules->{Example}) { - $modules->{Example} = 'extensions/example/lib/AuthLogin.pm'; -} diff --git a/extensions/example/code/auth-verify_methods.pl b/extensions/example/code/auth-verify_methods.pl deleted file mode 100644 index 7ae52f012..000000000 --- a/extensions/example/code/auth-verify_methods.pl +++ /dev/null @@ -1,27 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -my $modules = Bugzilla->hook_args->{modules}; -if (exists $modules->{Example}) { - $modules->{Example} = 'extensions/example/lib/AuthVerify.pm'; -} diff --git a/extensions/example/code/bug-columns.pl b/extensions/example/code/bug-columns.pl deleted file mode 100644 index 92ccf6d23..000000000 --- a/extensions/example/code/bug-columns.pl +++ /dev/null @@ -1,27 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Elliotte Martin <elliotte_martin@yahoo.com> - - -use strict; -use warnings; -use Bugzilla; - -my $columns = Bugzilla->hook_args->{'columns'}; -push (@$columns, "delta_ts AS example") diff --git a/extensions/example/code/bug-end_of_create.pl b/extensions/example/code/bug-end_of_create.pl deleted file mode 100644 index 0325ddd59..000000000 --- a/extensions/example/code/bug-end_of_create.pl +++ /dev/null @@ -1,35 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -# Bradley Baetz <bbaetz@acm.org> - -use strict; -use warnings; -use Bugzilla; - -# This code doesn't actually *do* anything, it's just here to show you -# how to use this hook. -my $args = Bugzilla->hook_args; -my $bug = $args->{'bug'}; -my $timestamp = $args->{'timestamp'}; - -my $bug_id = $bug->id; -# Uncomment this line to see a line in your webserver's error log whenever -# you file a bug. -# warn "Bug $bug_id has been filed!"; diff --git a/extensions/example/code/bug-end_of_create_validators.pl b/extensions/example/code/bug-end_of_create_validators.pl deleted file mode 100644 index 95d64ae85..000000000 --- a/extensions/example/code/bug-end_of_create_validators.pl +++ /dev/null @@ -1,37 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -use Data::Dumper; - -# This code doesn't actually *do* anything, it's just here to show you -# how to use this hook. -my $params = Bugzilla->hook_args->{'params'}; - -# Uncomment this line below to see a line in your webserver's error log -# containing all validated bug field values every time you file a bug. -# warn Dumper($params); - -# This would remove all ccs from the bug, preventing ANY ccs from being -# added on bug creation. -# $params->{cc} = []; diff --git a/extensions/example/code/bug-end_of_update.pl b/extensions/example/code/bug-end_of_update.pl deleted file mode 100644 index 036563517..000000000 --- a/extensions/example/code/bug-end_of_update.pl +++ /dev/null @@ -1,56 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by Everything Solved are Copyright (C) 2008 -# Everything Solved, Inc. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -use Bugzilla::Status; - -# This code doesn't actually *do* anything, it's just here to show you -# how to use this hook. -my $args = Bugzilla->hook_args; -my $bug = $args->{'bug'}; -my $timestamp = $args->{'timestamp'}; -my $changes = $args->{'changes'}; - -foreach my $field (keys %$changes) { - my $used_to_be = $changes->{$field}->[0]; - my $now_it_is = $changes->{$field}->[1]; -} - -my $status_message; -if (my $status_change = $changes->{'bug_status'}) { - my $old_status = new Bugzilla::Status({ name => $status_change->[0] }); - my $new_status = new Bugzilla::Status({ name => $status_change->[1] }); - if ($new_status->is_open && !$old_status->is_open) { - $status_message = "Bug re-opened!"; - } - if (!$new_status->is_open && $old_status->is_open) { - $status_message = "Bug closed!"; - } -} - -my $bug_id = $bug->id; -my $num_changes = scalar keys %$changes; -my $result = "There were $num_changes changes to fields on bug $bug_id" - . " at $timestamp."; -# Uncomment this line to see $result in your webserver's error log whenever -# you update a bug. -# warn $result; diff --git a/extensions/example/code/bug-fields.pl b/extensions/example/code/bug-fields.pl deleted file mode 100644 index f8475426d..000000000 --- a/extensions/example/code/bug-fields.pl +++ /dev/null @@ -1,27 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Elliotte Martin <elliotte_martin@yahoo.com> - - -use strict; -use warnings; -use Bugzilla; - -my $fields = Bugzilla->hook_args->{'fields'}; -push (@$fields, "example") diff --git a/extensions/example/code/bug-format_comment.pl b/extensions/example/code/bug-format_comment.pl deleted file mode 100644 index c11e8cac2..000000000 --- a/extensions/example/code/bug-format_comment.pl +++ /dev/null @@ -1,45 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2009 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): -# Max Kanat-Alexander <mkanat@bugzilla.org> - - -use strict; -use warnings; -use Bugzilla; -use Bugzilla::ExampleHook qw(replace_bar); - -# This replaces every occurrence of the word "foo" with the word -# "bar" - -my $regexes = Bugzilla->hook_args->{'regexes'}; -push(@$regexes, { match => qr/\bfoo\b/, replace => 'bar' }); - -# And this links every occurrence of the word "bar" to example.com, -# but it won't affect "foo"s that have already been turned into "bar" -# above (because each regex is run in order, and later regexes don't modify -# earlier matches, due to some cleverness in Bugzilla's internals). -# -# For example, the phrase "foo bar" would become: -# bar <a href="http://example.com/bar">bar</a> -# -# See lib/Bugzilla/ExampleHook.pm in this extension for the code of -# "replace_bar". -my $bar_match = qr/\b(bar)\b/; -push(@$regexes, { match => $bar_match, replace => \&replace_bar }); diff --git a/extensions/example/code/buglist-columns.pl b/extensions/example/code/buglist-columns.pl deleted file mode 100644 index 4487b2dc8..000000000 --- a/extensions/example/code/buglist-columns.pl +++ /dev/null @@ -1,26 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Elliotte Martin <elliotte_martin@yahoo.com> - -use strict; -use warnings; -use Bugzilla; - -my $columns = Bugzilla->hook_args->{'columns'}; -$columns->{'example'} = { 'name' => 'bugs.delta_ts' , 'title' => 'Example' }; diff --git a/extensions/example/code/colchange-columns.pl b/extensions/example/code/colchange-columns.pl deleted file mode 100644 index 6174d3940..000000000 --- a/extensions/example/code/colchange-columns.pl +++ /dev/null @@ -1,27 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Elliotte Martin <elliotte_martin@yahoo.com> - - -use strict; -use warnings; -use Bugzilla; - -my $columns = Bugzilla->hook_args->{'columns'}; -push (@$columns, "example") diff --git a/extensions/example/code/config-add_panels.pl b/extensions/example/code/config-add_panels.pl deleted file mode 100644 index 5f4f5bdd4..000000000 --- a/extensions/example/code/config-add_panels.pl +++ /dev/null @@ -1,25 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Bradley Baetz <bbaetz@acm.org> - -use strict; -use warnings; -use Bugzilla; -my $modules = Bugzilla->hook_args->{panel_modules}; -$modules->{Example} = "extensions::example::lib::ConfigExample"; diff --git a/extensions/example/code/config-modify_panels.pl b/extensions/example/code/config-modify_panels.pl deleted file mode 100644 index bd93962bf..000000000 --- a/extensions/example/code/config-modify_panels.pl +++ /dev/null @@ -1,32 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -my $panels = Bugzilla->hook_args->{panels}; - -# Add the "Example" auth methods. -my $auth_params = $panels->{'auth'}->{params}; -my ($info_class) = grep($_->{name} eq 'user_info_class', @$auth_params); -my ($verify_class) = grep($_->{name} eq 'user_verify_class', @$auth_params); - -push(@{ $info_class->{choices} }, 'CGI,Example'); -push(@{ $verify_class->{choices} }, 'Example'); diff --git a/extensions/example/code/config.pl b/extensions/example/code/config.pl deleted file mode 100644 index 1da490cc2..000000000 --- a/extensions/example/code/config.pl +++ /dev/null @@ -1,26 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -# Bradley Baetz <bbaetz@acm.org> - -use strict; -use warnings; -use Bugzilla; -my $config = Bugzilla->hook_args->{config}; -$config->{Example} = "extensions::example::lib::ConfigExample"; diff --git a/extensions/example/code/flag-end_of_update.pl b/extensions/example/code/flag-end_of_update.pl deleted file mode 100644 index e1705cc57..000000000 --- a/extensions/example/code/flag-end_of_update.pl +++ /dev/null @@ -1,42 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by Everything Solved are Copyright (C) 2008 -# Everything Solved, Inc. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; -use Bugzilla::Util qw(diff_arrays); - -# This code doesn't actually *do* anything, it's just here to show you -# how to use this hook. -my $args = Bugzilla->hook_args; -my ($object, $timestamp, $old_flags, $new_flags) = - @$args{qw(object timestamp old_flags new_flags)}; -my ($removed, $added) = diff_arrays($old_flags, $new_flags); -my ($granted, $denied) = (0, 0); -foreach my $new_flag (@$added) { - $granted++ if $new_flag =~ /\+$/; - $denied++ if $new_flag =~ /-$/; -} -my $bug_id = (ref $object eq 'Bugzilla::Bug') ? $object->id : $object->bug_id; -my $result = "$granted flags were granted and $denied flags were denied" - . " on bug $bug_id at $timestamp."; -# Uncomment this line to see $result in your webserver's error log whenever -# you update flags. -# warn $result; diff --git a/extensions/example/code/install-before_final_checks.pl b/extensions/example/code/install-before_final_checks.pl deleted file mode 100644 index ef1bee22c..000000000 --- a/extensions/example/code/install-before_final_checks.pl +++ /dev/null @@ -1,28 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2008 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): Elliotte Martin <elliotte_martin@yahoo.com> - - -use strict; -use warnings; -use Bugzilla; - -my $silent = Bugzilla->hook_args->{'silent'}; - -print "Install-before_final_checks hook\n" unless $silent; diff --git a/extensions/example/code/object-before_create.pl b/extensions/example/code/object-before_create.pl deleted file mode 100644 index 5961b6186..000000000 --- a/extensions/example/code/object-before_create.pl +++ /dev/null @@ -1,33 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; - -my $args = Bugzilla->hook_args; -my $class = $args->{'class'}; -my $params = $args->{'params'}; - -# Note that this is a made-up class, for this example. -if ($class->isa('Bugzilla::ExampleObject')) { - warn "About to create an ExampleObject!"; - warn "Got the following parameters: " . join(', ', keys(%$params)); -} diff --git a/extensions/example/code/object-before_set.pl b/extensions/example/code/object-before_set.pl deleted file mode 100644 index 43007efdb..000000000 --- a/extensions/example/code/object-before_set.pl +++ /dev/null @@ -1,34 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; - -my $args = Bugzilla->hook_args; -my ($object, $field, $value) = @$args{qw(object field value)}; - -# Note that this is a made-up class, for this example. -if ($object->isa('Bugzilla::ExampleObject')) { - warn "The field $field is changing from " . $object->{$field} - . " to $value!"; -} - - diff --git a/extensions/example/code/object-end_of_create_validators.pl b/extensions/example/code/object-end_of_create_validators.pl deleted file mode 100644 index 42ed6f776..000000000 --- a/extensions/example/code/object-end_of_create_validators.pl +++ /dev/null @@ -1,34 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> - -use strict; -use warnings; -use Bugzilla; - -my $args = Bugzilla->hook_args; -my $class = $args->{'class'}; -my $params = $args->{'params'}; - -# Note that this is a made-up class, for this example. -if ($class->isa('Bugzilla::ExampleObject')) { - # Always set example_field to 1, even if the validators said otherwise. - $params->{example_field} = 1; -} - diff --git a/extensions/example/code/page-before_template.pl b/extensions/example/code/page-before_template.pl deleted file mode 100644 index dcf059367..000000000 --- a/extensions/example/code/page-before_template.pl +++ /dev/null @@ -1,33 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Canonical Ltd. -# Portions created by Canonical Ltd. are Copyright (C) 2009 -# Canonical Ltd. All Rights Reserved. -# -# Contributor(s): -# Max Kanat-Alexander <mkanat@bugzilla.org> - - -use strict; -use warnings; -use Bugzilla; - -my %args = %{ Bugzilla->hook_args }; -my ($vars, $page) = @args{qw(vars page_id)}; - -# You can see this hook in action by loading page.cgi?id=example.html -if ($page eq 'example.html') { - $vars->{cgi_variables} = { Bugzilla->cgi->Vars }; -} diff --git a/extensions/example/code/product-confirm_delete.pl b/extensions/example/code/product-confirm_delete.pl deleted file mode 100644 index d961dfaa7..000000000 --- a/extensions/example/code/product-confirm_delete.pl +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/perl -w -# -*- 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 Testopia System. -# -# The Initial Developer of the Original Code is Greg Hendricks. -# Portions created by Greg Hendricks are Copyright (C) 2008 -# Novell. All Rights Reserved. -# -# Contributor(s): Greg Hendricks <ghendricks@novell.com> - -use strict; - -my $vars = Bugzilla->hook_args->{vars}; - -$vars->{'example'} = 1 \ No newline at end of file diff --git a/extensions/example/code/sanitycheck-check.pl b/extensions/example/code/sanitycheck-check.pl deleted file mode 100644 index 10083389b..000000000 --- a/extensions/example/code/sanitycheck-check.pl +++ /dev/null @@ -1,44 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Softwware. -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Bradley Baetz <bbaetz@everythingsolved.com> - -use strict; - -my $dbh = Bugzilla->dbh; -my $sth; - -my $status = Bugzilla->hook_args->{'status'}; - -# Check that all users are Australian -$status->('example_check_au_user'); - -my $sth = $dbh->prepare("SELECT userid, login_name - FROM profiles - WHERE login_name NOT LIKE '%.au'"); -$sth->execute; - -my $seen_nonau = 0; -while (my ($userid, $login, $numgroups) = $sth->fetchrow_array) { - $status->('example_check_au_user_alert', - { userid => $userid, login => $login }, - 'alert'); - $seen_nonau = 1; -} - -$status->('example_check_au_user_prompt') if $seen_nonau; diff --git a/extensions/example/code/sanitycheck-repair.pl b/extensions/example/code/sanitycheck-repair.pl deleted file mode 100644 index f9ad0b3b1..000000000 --- a/extensions/example/code/sanitycheck-repair.pl +++ /dev/null @@ -1,38 +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 Example Plugin. -# -# The Initial Developer of the Original Code is ITA Software. -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): Bradley Baetz <bbaetz@everythingsolved.com> - -use strict; - -use Bugzilla; - -my $cgi = Bugzilla->cgi; -my $dbh = Bugzilla->dbh; - -my $status = Bugzilla->hook_args->{'status'}; - -if ($cgi->param('example_repair_au_user')) { - $status->('example_repair_au_user_start'); - - #$dbh->do("UPDATE profiles - # SET login_name = CONCAT(login_name, '.au') - # WHERE login_name NOT LIKE '%.au'"); - - $status->('example_repair_au_user_end'); -} diff --git a/extensions/example/code/template-before_process.pl b/extensions/example/code/template-before_process.pl deleted file mode 100644 index 66f9a56f6..000000000 --- a/extensions/example/code/template-before_process.pl +++ /dev/null @@ -1,33 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Matt Rogers. -# Portions created by the Initial Developer are Copyright (C) 2009 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Matt Rogers <mattr@kde.org> - -use strict; -use warnings; -use Bugzilla; - -my %args = %{ Bugzilla->hook_args }; -my ($vars, $file, $template) = $args{qw(vars file template)}; - -$vars->{'example'} = 1; - -if ($file =~ m{^bug/show}) { - $vars->{'showing_a_bug'} = 1; -} diff --git a/extensions/example/info.pl b/extensions/example/info.pl deleted file mode 100644 index b4620eed6..000000000 --- a/extensions/example/info.pl +++ /dev/null @@ -1,41 +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 Example WebService Plugin -# -# The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by Everything Solved, Inc. are Copyright (C) 2007 -# Everything Solved, Inc. All Rights Reserved. -# -# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org> -# Colin Ogilvie <colin.ogilvie@gmail.com> - -# This script does some code to return a hash about the Extension. -# You are required to return a hash containing the Extension version -# You can optionaally add any other values to the hash too, as long as -# they begin with an x_ -# -# Eg: -# { -# 'version' => '0.1', # required -# 'x_name' => 'Example Extension' -# } - -use strict; -no warnings qw(void); # Avoid "useless use of a constant in void context" -use Bugzilla::Constants; - -{ - 'version' => BUGZILLA_VERSION, - 'x_blah' => 'Hello....', - -}; diff --git a/extensions/example/lib/Bugzilla/CVS/Entries b/extensions/example/lib/Bugzilla/CVS/Entries deleted file mode 100644 index c4b781dba..000000000 --- a/extensions/example/lib/Bugzilla/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/ExampleHook.pm/1.1/Wed Sep 30 23:43:19 2009//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/lib/Bugzilla/CVS/Repository b/extensions/example/lib/Bugzilla/CVS/Repository deleted file mode 100644 index a9e24bc8c..000000000 --- a/extensions/example/lib/Bugzilla/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/lib/Bugzilla diff --git a/extensions/example/lib/Bugzilla/CVS/Tag b/extensions/example/lib/Bugzilla/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/lib/Bugzilla/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/lib/Bugzilla/ExampleHook.pm b/extensions/example/lib/Bugzilla/ExampleHook.pm deleted file mode 100644 index 6452e8fef..000000000 --- a/extensions/example/lib/Bugzilla/ExampleHook.pm +++ /dev/null @@ -1,43 +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 Example Plugin. -# -# The Initial Developer of the Original Code is Everything Solved, Inc. -# Portions created by the Initial Developer are Copyright (C) 2009 the -# Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Max Kanat-Alexander <mkanat@bugzilla.org> - -package Bugzilla::ExampleHook; -use strict; -use base qw(Exporter); -our @EXPORT_OK = qw( - replace_bar -); - -use Bugzilla::Util qw(html_quote); - -# Used by bug-format_comment--see its code for an explanation. -sub replace_bar { - my $params = shift; - # $match is the first parentheses match in the $bar_match regex - # in bug-format_comment.pl. We get up to 10 regex matches as - # arguments to this function. - my $match = $params->{matches}->[0]; - # Remember, you have to HTML-escape any data that you are returning! - $match = html_quote($match); - return qq{<a href="http://example.com/">$match</a>}; -}; - -1; diff --git a/extensions/example/lib/CVS/Entries b/extensions/example/lib/CVS/Entries deleted file mode 100644 index c8f42298f..000000000 --- a/extensions/example/lib/CVS/Entries +++ /dev/null @@ -1,5 +0,0 @@ -/AuthLogin.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_2 -/AuthVerify.pm/1.1/Wed Aug 6 23:38:31 2008//TBUGZILLA-3_5_2 -/ConfigExample.pm/1.1/Mon May 5 23:01:31 2008//TBUGZILLA-3_5_2 -/WSExample.pm/1.4/Tue Mar 31 06:38:01 2009//TBUGZILLA-3_5_2 -D/Bugzilla//// diff --git a/extensions/example/lib/CVS/Repository b/extensions/example/lib/CVS/Repository deleted file mode 100644 index a27c0ca59..000000000 --- a/extensions/example/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/lib diff --git a/extensions/example/lib/CVS/Tag b/extensions/example/lib/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/lib/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/template/CVS/Repository b/extensions/example/template/CVS/Repository deleted file mode 100644 index 2da91e509..000000000 --- a/extensions/example/template/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template diff --git a/extensions/example/template/CVS/Tag b/extensions/example/template/CVS/Tag deleted file mode 100644 index 1cec2e2b3..000000000 --- a/extensions/example/template/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/CVS/Repository b/extensions/example/template/en/CVS/Repository deleted file mode 100644 index 7fa06ca4f..000000000 --- a/extensions/example/template/en/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en diff --git a/extensions/example/template/en/CVS/Tag b/extensions/example/template/en/CVS/Tag deleted file mode 100644 index 1cec2e2b3..000000000 --- a/extensions/example/template/en/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/admin/CVS/Repository b/extensions/example/template/en/admin/CVS/Repository deleted file mode 100644 index 5465fe388..000000000 --- a/extensions/example/template/en/admin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/admin diff --git a/extensions/example/template/en/admin/CVS/Tag b/extensions/example/template/en/admin/CVS/Tag deleted file mode 100644 index 1cec2e2b3..000000000 --- a/extensions/example/template/en/admin/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Entries b/extensions/example/template/en/admin/sanitycheck/CVS/Entries deleted file mode 100644 index 10f9ec8d2..000000000 --- a/extensions/example/template/en/admin/sanitycheck/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/messages-statuses.html.tmpl/1.1/Mon Sep 21 22:10:14 2009//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Repository b/extensions/example/template/en/admin/sanitycheck/CVS/Repository deleted file mode 100644 index fb7b02cd9..000000000 --- a/extensions/example/template/en/admin/sanitycheck/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/admin/sanitycheck diff --git a/extensions/example/template/en/admin/sanitycheck/CVS/Tag b/extensions/example/template/en/admin/sanitycheck/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/template/en/admin/sanitycheck/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/CVS/Repository b/extensions/example/template/en/default/CVS/Repository deleted file mode 100644 index 139fd0dab..000000000 --- a/extensions/example/template/en/default/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/default diff --git a/extensions/example/template/en/default/CVS/Tag b/extensions/example/template/en/default/CVS/Tag deleted file mode 100644 index 1cec2e2b3..000000000 --- a/extensions/example/template/en/default/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/admin/CVS/Repository b/extensions/example/template/en/default/admin/CVS/Repository deleted file mode 100644 index 8b5c6b658..000000000 --- a/extensions/example/template/en/default/admin/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/default/admin diff --git a/extensions/example/template/en/default/admin/CVS/Tag b/extensions/example/template/en/default/admin/CVS/Tag deleted file mode 100644 index 1cec2e2b3..000000000 --- a/extensions/example/template/en/default/admin/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -TBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/admin/params/CVS/Entries b/extensions/example/template/en/default/admin/params/CVS/Entries deleted file mode 100644 index 80dce6fd0..000000000 --- a/extensions/example/template/en/default/admin/params/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/example.html.tmpl/1.1/Mon May 5 23:01:33 2008//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/template/en/default/admin/params/CVS/Repository b/extensions/example/template/en/default/admin/params/CVS/Repository deleted file mode 100644 index 5aca99706..000000000 --- a/extensions/example/template/en/default/admin/params/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/default/admin/params diff --git a/extensions/example/template/en/default/admin/params/CVS/Tag b/extensions/example/template/en/default/admin/params/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/template/en/default/admin/params/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/default/pages/CVS/Entries b/extensions/example/template/en/default/pages/CVS/Entries deleted file mode 100644 index d2d64e653..000000000 --- a/extensions/example/template/en/default/pages/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/example.html.tmpl/1.1/Thu Aug 6 15:14:55 2009//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/template/en/default/pages/CVS/Repository b/extensions/example/template/en/default/pages/CVS/Repository deleted file mode 100644 index c775e6457..000000000 --- a/extensions/example/template/en/default/pages/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/default/pages diff --git a/extensions/example/template/en/default/pages/CVS/Tag b/extensions/example/template/en/default/pages/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/template/en/default/pages/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/extensions/example/template/en/global/CVS/Entries b/extensions/example/template/en/global/CVS/Entries deleted file mode 100644 index 1ca520bfb..000000000 --- a/extensions/example/template/en/global/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/user-error-errors.html.tmpl/1.1/Tue May 27 22:09:22 2008//TBUGZILLA-3_5_2 -D diff --git a/extensions/example/template/en/global/CVS/Repository b/extensions/example/template/en/global/CVS/Repository deleted file mode 100644 index d69412174..000000000 --- a/extensions/example/template/en/global/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/extensions/example/template/en/global diff --git a/extensions/example/template/en/global/CVS/Tag b/extensions/example/template/en/global/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/extensions/example/template/en/global/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/images/CVS/Entries b/images/CVS/Entries index 758ea1714..db4e91082 100644 --- a/images/CVS/Entries +++ b/images/CVS/Entries @@ -1,3 +1,3 @@ -/favicon.ico/1.1/Wed Jul 30 11:13:48 2008/-kb/TBUGZILLA-3_5_2 -/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-3_5_2 +/favicon.ico/1.1/Wed Jul 30 11:13:48 2008/-kb/TBUGZILLA-3_5_3 +/padlock.png/1.2/Thu Sep 23 18:08:31 2004/-kb/TBUGZILLA-3_5_3 D diff --git a/images/CVS/Tag b/images/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/images/CVS/Tag +++ b/images/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/importxml.pl b/importxml.pl index c08f5c8b2..1a61c5ead 100755 --- a/importxml.pl +++ b/importxml.pl @@ -523,6 +523,8 @@ sub process_bug { $data = decode_base64($data); } + # For backwards-compatibility with Bugzillas before 3.6: + # # If we leave the attachment ID in the comment it will be made a link # to the wrong attachment. Since the new attachment ID is unknown yet # let's strip it out for now. We will make a comment with the right ID @@ -911,7 +913,7 @@ sub process_bug { # Check everconfirmed my $everconfirmed; - if ($product->votes_to_confirm) { + if ($product->allows_unconfirmed) { $everconfirmed = $bug_fields{'everconfirmed'} || 0; } else { diff --git a/js/CVS/Entries b/js/CVS/Entries index 392eb931b..48f2e9440 100644 --- a/js/CVS/Entries +++ b/js/CVS/Entries @@ -1,11 +1,12 @@ -/TUI.js/1.2/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_2 -/attachment.js/1.7/Mon Sep 21 22:02:28 2009//TBUGZILLA-3_5_2 -/change-columns.js/1.2/Wed Feb 25 22:39:00 2009//TBUGZILLA-3_5_2 -/expanding-tree.js/1.2/Wed Feb 22 22:02:09 2006//TBUGZILLA-3_5_2 -/field.js/1.16/Sun Jun 21 19:33:44 2009//TBUGZILLA-3_5_2 -/global.js/1.4/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 -/help.js/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_2 -/params.js/1.1/Thu Aug 2 22:38:44 2007//TBUGZILLA-3_5_2 -/productform.js/1.3/Tue Apr 17 22:08:06 2007//TBUGZILLA-3_5_2 -/util.js/1.8/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_2 +/TUI.js/1.2/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_3 +/attachment.js/1.7/Mon Sep 21 22:02:28 2009//TBUGZILLA-3_5_3 +/change-columns.js/1.2/Wed Feb 25 22:39:00 2009//TBUGZILLA-3_5_3 +/expanding-tree.js/1.2/Wed Feb 22 22:02:09 2006//TBUGZILLA-3_5_3 +/field.js/1.16/Sun Jun 21 19:33:44 2009//TBUGZILLA-3_5_3 +/flag.js/1.1/Thu Nov 26 00:03:30 2009//TBUGZILLA-3_5_3 +/global.js/1.4/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_3 +/help.js/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_3 +/params.js/1.1/Thu Aug 2 22:38:44 2007//TBUGZILLA-3_5_3 +/productform.js/1.3/Tue Apr 17 22:08:06 2007//TBUGZILLA-3_5_3 +/util.js/1.8/Wed Feb 11 19:41:14 2009//TBUGZILLA-3_5_3 D/yui//// diff --git a/js/CVS/Tag b/js/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/js/CVS/Tag +++ b/js/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/js/flag.js b/js/flag.js new file mode 100644 index 000000000..a0ea34910 --- /dev/null +++ b/js/flag.js @@ -0,0 +1,75 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1 + * + * 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 the Initial Developer are Copyright (C) 2009 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Myk Melez <myk@mozilla.org> + * Frédéric Buclin <LpSolit@gmail.com> + * + * ***** END LICENSE BLOCK ***** */ + +// Enables or disables a requestee field depending on whether or not +// the user is requesting the corresponding flag. +function toggleRequesteeField(flagField, no_focus) +{ + // Convert the ID of the flag field into the ID of its corresponding + // requestee field and then use the ID to get the field. + var id = flagField.name.replace(/flag(_type)?-(\d+)/, "requestee$1-$2"); + var requesteeField = document.getElementById(id); + if (!requesteeField) return; + + // Enable or disable the requestee field based on the value + // of the flag field. + if (flagField.value == "?") { + requesteeField.disabled = false; + if (!no_focus) requesteeField.focus(); + } else + requesteeField.disabled = true; +} + +// Disables requestee fields when the window is loaded since they shouldn't +// be enabled until the user requests that flag type. +function disableRequesteeFields() +{ + var inputElements = document.getElementsByTagName("input"); + var selectElements = document.getElementsByTagName("select"); + //You cannot update Node lists, so you must create an array to combine the NodeLists + var allElements = []; + for( var i=0; i < inputElements.length; i++ ) { + allElements[allElements.length] = inputElements.item(i); + } + for( var i=0; i < selectElements.length; i++ ) { //Combine inputs with selects + allElements[allElements.length] = selectElements.item(i); + } + var inputElement, id, flagField; + for ( var i=0 ; i<allElements.length ; i++ ) + { + inputElement = allElements[i]; + if (inputElement.name.search(/^requestee(_type)?-(\d+)$/) != -1) + { + // Convert the ID of the requestee field into the ID of its corresponding + // flag field and then use the ID to get the field. + id = inputElement.name.replace(/requestee(_type)?-(\d+)/, "flag$1-$2"); + flagField = document.getElementById(id); + if (flagField && flagField.value != "?") + inputElement.disabled = true; + } + } +} +YAHOO.util.Event.addListener(window, "load", disableRequesteeFields); diff --git a/js/yui/CVS/Entries b/js/yui/CVS/Entries index a425e3614..17d2b8a3e 100644 --- a/js/yui/CVS/Entries +++ b/js/yui/CVS/Entries @@ -1,4 +1,4 @@ -/calendar.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_2 -/cookie.js/1.1/Wed Feb 11 19:41:15 2009//TBUGZILLA-3_5_2 -/yahoo-dom-event.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_2 +/calendar.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_3 +/cookie.js/1.1/Wed Feb 11 19:41:15 2009//TBUGZILLA-3_5_3 +/yahoo-dom-event.js/1.2/Thu Jan 15 01:01:24 2009//TBUGZILLA-3_5_3 D diff --git a/js/yui/CVS/Tag b/js/yui/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/js/yui/CVS/Tag +++ b/js/yui/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/lib/CVS/Entries b/lib/CVS/Entries index 4a9b12d8d..0611cbcfa 100644 --- a/lib/CVS/Entries +++ b/lib/CVS/Entries @@ -1,2 +1,2 @@ -/README/1.1/Fri Oct 19 06:46:19 2007//TBUGZILLA-3_5_2 +/README/1.1/Fri Oct 19 06:46:19 2007//TBUGZILLA-3_5_3 D diff --git a/lib/CVS/Tag b/lib/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/lib/CVS/Tag +++ b/lib/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/mod_perl.pl b/mod_perl.pl index 8ca691f9c..a21d5d725 100755 --- a/mod_perl.pl +++ b/mod_perl.pl @@ -20,8 +20,8 @@ package Bugzilla::ModPerl; use strict; # If you have an Apache2::Status handler in your Apache configuration, -# you need to load Apache2::Status *here*, so that Apache::DBI can -# report information to Apache2::Status. +# you need to load Apache2::Status *here*, so that any later-loaded modules +# can report information to Apache2::Status. #use Apache2::Status (); # We don't want to import anything into the global scope during @@ -29,7 +29,6 @@ use strict; # file. use Apache2::ServerUtil; -use Apache2::SizeLimit; use ModPerl::RegistryLoader (); use CGI (); CGI->compile(qw(:cgi -no_xhtml -oldstyle_urls :private_tempfiles @@ -41,20 +40,30 @@ Template::Config->preload(); use Bugzilla (); use Bugzilla::Constants (); use Bugzilla::CGI (); +use Bugzilla::Extension (); use Bugzilla::Install::Requirements (); use Bugzilla::Mailer (); use Bugzilla::Template (); use Bugzilla::Util (); -# This means that every httpd child will die after processing -# a CGI if it is taking up more than 70MB of RAM all by itself. -$Apache2::SizeLimit::MAX_UNSHARED_SIZE = 70000; +my ($sizelimit, $maxrequests) = ('', ''); +if (Bugzilla::Constants::ON_WINDOWS) { + $maxrequests = "MaxRequestsPerChild 25"; +} +else { + require Apache2::SizeLimit; + # This means that every httpd child will die after processing + # a CGI if it is taking up more than 70MB of RAM all by itself. + $Apache2::SizeLimit::MAX_UNSHARED_SIZE = 70000; + $sizelimit = "PerlCleanupHandler Apache2::SizeLimit"; +} my $cgi_path = Bugzilla::Constants::bz_locations()->{'cgi_path'}; # Set up the configuration for the web server my $server = Apache2::ServerUtil->server; my $conf = <<EOT; +$maxrequests # Make sure each httpd child receives a different random seed (bug 476622) PerlChildInitHandler "sub { srand(); }" <Directory "$cgi_path"> @@ -62,7 +71,7 @@ PerlChildInitHandler "sub { srand(); }" # No need to PerlModule these because they're already defined in mod_perl.pl PerlResponseHandler Bugzilla::ModPerl::ResponseHandler PerlCleanupHandler Bugzilla::ModPerl::CleanupHandler - PerlCleanupHandler Apache2::SizeLimit + $sizelimit PerlOptions +ParseHeaders Options +ExecCGI AllowOverride Limit @@ -72,6 +81,9 @@ EOT $server->add_config([split("\n", $conf)]); +# Pre-load all extensions +$Bugzilla::extension_packages = Bugzilla::Extension->load_all(); + # Have ModPerl::RegistryLoader pre-compile all CGI scripts. my $rl = new ModPerl::RegistryLoader(); # If we try to do this in "new" it fails because it looks for a @@ -87,7 +99,6 @@ foreach my $file (glob "$cgi_path/*.cgi") { $rl->handler($file, $file); } - package Bugzilla::ModPerl::ResponseHandler; use strict; use base qw(ModPerl::Registry); diff --git a/page.cgi b/page.cgi index 914ba3f22..d889841b3 100755 --- a/page.cgi +++ b/page.cgi @@ -52,7 +52,7 @@ if ($id) { } my %vars; - Bugzilla::Hook::process('page-before_template', + Bugzilla::Hook::process('page_before_template', { page_id => $id, vars => \%vars }); my $format = $template->get_format("pages/$1", undef, $2); diff --git a/post_bug.cgi b/post_bug.cgi index ed483aec9..e8f9acc01 100755 --- a/post_bug.cgi +++ b/post_bug.cgi @@ -85,7 +85,7 @@ if ($token) { } # do a match on the fields if applicable -Bugzilla::User::match_field ($cgi, { +Bugzilla::User::match_field ({ 'cc' => { 'type' => 'multi' }, 'assigned_to' => { 'type' => 'single' }, 'qa_contact' => { 'type' => 'single' }, @@ -223,19 +223,9 @@ if (defined($cgi->upload('data')) || $cgi->param('attachurl')) { $bug, $attachment, $vars, SKIP_REQUESTEE_ON_ERROR); $attachment->set_flags($flags, $new_flags); $attachment->update($timestamp); - - # Update the comment to include the new attachment ID. - # This string is hardcoded here because Template::quoteUrls() - # expects to find this exact string. - my $new_comment = "Created an attachment (id=" . $attachment->id . ")\n" . - $attachment->description . "\n"; - # We can use $bug->comments here because we are sure that the bug - # description is of type CMT_NORMAL. No need to include it if it's - # empty, though. - if ($bug->comments->[0]->body !~ /^\s+$/) { - $new_comment .= "\n" . $bug->comments->[0]->body; - } - $bug->update_comment($bug->comments->[0]->id, $new_comment); + my $comment = $bug->comments->[0]; + $comment->set_type(CMT_ATTACHMENT_CREATED, $attachment->id); + $comment->update(); } else { $vars->{'message'} = 'attachment_creation_failed'; @@ -254,7 +244,7 @@ $vars->{'mailrecipients'} = {'changer' => $user->login}; $vars->{'id'} = $id; $vars->{'bug'} = $bug; -Bugzilla::Hook::process("post_bug-after_creation", { vars => $vars }); +Bugzilla::Hook::process('post_bug_after_creation', { vars => $vars }); ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; @@ -274,13 +264,8 @@ if ($token) { ("createbug:$id", $token)); } -if (Bugzilla->usage_mode == USAGE_MODE_EMAIL) { - Bugzilla::BugMail::Send($id, $vars->{'mailrecipients'}); -} -else { - print $cgi->header(); - $template->process("bug/create/created.html.tmpl", $vars) - || ThrowTemplateError($template->error()); -} +print $cgi->header(); +$template->process("bug/create/created.html.tmpl", $vars) + || ThrowTemplateError($template->error()); 1; diff --git a/process_bug.cgi b/process_bug.cgi index a4547ad6b..237588ebd 100755 --- a/process_bug.cgi +++ b/process_bug.cgi @@ -142,7 +142,7 @@ if (defined $cgi->param('dontchange')) { } # do a match on the fields if applicable -Bugzilla::User::match_field($cgi, { +Bugzilla::User::match_field({ 'qa_contact' => { 'type' => 'single' }, 'newcc' => { 'type' => 'multi' }, 'masscc' => { 'type' => 'multi' }, @@ -197,7 +197,7 @@ else { $vars->{'title_tag'} = "bug_processed"; -my ($action, $next_bug); +my $action; if (defined $cgi->param('id')) { $action = Bugzilla->user->settings->{'post_bug_submit_action'}->{'value'}; @@ -208,16 +208,18 @@ if (defined $cgi->param('id')) { } my $cur = lsearch(\@bug_list, $cgi->param('id')); if ($cur >= 0 && $cur < $#bug_list) { - $next_bug = $bug_list[$cur + 1]; - # No need to check whether the user can see the bug or not. - # All we want is its ID. An error will be thrown later - # if the user cannot see it. - $vars->{'bug'} = {bug_id => $next_bug}; + my $next_bug_id = $bug_list[$cur + 1]; + detaint_natural($next_bug_id); + if ($next_bug_id and $user->can_see_bug($next_bug_id)) { + # We create an object here so that send_results can use it + # when displaying the header. + $vars->{'bug'} = new Bugzilla::Bug($next_bug_id); + } } } # Include both action = 'same_bug' and 'nothing'. else { - $vars->{'bug'} = {bug_id => $cgi->param('id')}; + $vars->{'bug'} = $first_bug; } } else { @@ -234,36 +236,39 @@ foreach my $bug (@bug_objects) { } } -my $product_change; -foreach my $bug (@bug_objects) { - my $args; - if (should_set('product')) { - $args->{product} = scalar $cgi->param('product'); - $args->{component} = scalar $cgi->param('component'); - $args->{version} = scalar $cgi->param('version'); - $args->{target_milestone} = scalar $cgi->param('target_milestone'); - $args->{confirm_product_change} = scalar $cgi->param('confirm_product_change'); - $args->{other_bugs} = \@bug_objects; +# For security purposes, and because lots of other checks depend on it, +# we set the product first before anything else. +my $product_change; # Used only for strict_isolation checks, right now. +if (should_set('product')) { + foreach my $b (@bug_objects) { + my $changed = $b->set_product(scalar $cgi->param('product'), + { component => scalar $cgi->param('component'), + version => scalar $cgi->param('version'), + target_milestone => scalar $cgi->param('target_milestone'), + change_confirmed => scalar $cgi->param('confirm_product_change'), + other_bugs => \@bug_objects, + }); + $product_change ||= $changed; } +} - foreach my $group (@{$bug->product_obj->groups_valid}) { +# strict_isolation checks mean that we should set the groups +# immediately after changing the product. +foreach my $b (@bug_objects) { + foreach my $group (@{$b->product_obj->groups_valid}) { my $gid = $group->id; if (should_set("bit-$gid", 1)) { # Check ! first to avoid having to check defined below. if (!$cgi->param("bit-$gid")) { - push (@{$args->{remove_group}}, $gid); + $b->remove_group($gid); } # "== 1" is important because mass-change uses -1 to mean # "don't change this restriction" elsif ($cgi->param("bit-$gid") == 1) { - push (@{$args->{add_group}}, $gid); + $b->add_group($gid); } } } - - # this will be deleted later when code moves to $bug->set_all - my $changed = $bug->set_all($args); - $product_change ||= $changed; } # Flags should be set AFTER the bug has been moved into another product/component. @@ -535,7 +540,7 @@ foreach my $b (@bug_objects) { foreach my $bug (@bug_objects) { $dbh->bz_start_transaction(); - my $timestamp = $dbh->selectrow_array(q{SELECT NOW()}); + my $timestamp = $dbh->selectrow_array(q{SELECT LOCALTIMESTAMP(0)}); my $changes = $bug->update($timestamp); my %notify_deps; @@ -636,31 +641,23 @@ foreach my $bug (@bug_objects) { if (Bugzilla->usage_mode == USAGE_MODE_EMAIL) { # Do nothing. } -elsif ($action eq 'next_bug') { - if ($next_bug) { - if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) { - my $bug = new Bugzilla::Bug($next_bug); - ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; - - $vars->{'bugs'} = [$bug]; - $vars->{'nextbug'} = $bug->bug_id; - - $template->process("bug/show.html.tmpl", $vars) - || ThrowTemplateError($template->error()); - - exit; +elsif ($action eq 'next_bug' or $action eq 'same_bug') { + my $bug = $vars->{'bug'}; + if ($bug and $user->can_see_bug($bug)) { + if ($action eq 'same_bug') { + # $bug->update() does not update the internal structure of + # the bug sufficiently to display the bug with the new values. + # (That is, if we just passed in the old Bug object, we'd get + # a lot of old values displayed.) + $bug = new Bugzilla::Bug($bug->id); + $vars->{'bug'} = $bug; } - } -} elsif ($action eq 'same_bug') { - if (Bugzilla->user->can_see_bug($cgi->param('id'))) { - my $bug = new Bugzilla::Bug($cgi->param('id')); - ThrowCodeError("bug_error", { bug => $bug }) if $bug->error; - $vars->{'bugs'} = [$bug]; - + if ($action eq 'next_bug') { + $vars->{'nextbug'} = $bug->id; + } $template->process("bug/show.html.tmpl", $vars) || ThrowTemplateError($template->error()); - exit; } } elsif ($action ne 'nothing') { diff --git a/query.cgi b/query.cgi index ba8979adc..1cbcf0a60 100755 --- a/query.cgi +++ b/query.cgi @@ -131,7 +131,7 @@ sub PrefillForm { "longdesc", "longdesc_type", "bug_file_loc", "bug_file_loc_type", "status_whiteboard", "status_whiteboard_type", "bug_id", - "bugidtype", "keywords", "keywords_type", + "bug_id_type", "keywords", "keywords_type", "deadlinefrom", "deadlineto", "x_axis_field", "y_axis_field", "z_axis_field", "chart_format", "cumulate", "x_labels_vertical", diff --git a/request.cgi b/request.cgi index 594ed1833..b54477cb1 100755 --- a/request.cgi +++ b/request.cgi @@ -63,7 +63,7 @@ unless (defined $cgi->param('requestee') $fields->{'requestee'}->{'type'} = 'single'; } -Bugzilla::User::match_field($cgi, $fields); +Bugzilla::User::match_field($fields); if ($action eq 'queue') { queue(); diff --git a/sanitycheck.cgi b/sanitycheck.cgi index f5ba1024f..036286454 100755 --- a/sanitycheck.cgi +++ b/sanitycheck.cgi @@ -388,7 +388,7 @@ if ($cgi->param('remove_old_whine_targets')) { # Repair hook ########################################################################### -Bugzilla::Hook::process("sanitycheck-repair", { status => \&Status }); +Bugzilla::Hook::process('sanitycheck_repair', { status => \&Status }); ########################################################################### # Checks @@ -976,7 +976,8 @@ BugCheck("bugs WHERE bug_status IN ($confirmed_open_states) AND everconfirmed = Status('bug_check_votes_everconfirmed'); BugCheck("bugs INNER JOIN products ON bugs.product_id = products.id " . - "WHERE everconfirmed = 0 AND votestoconfirm <= votes", + "WHERE everconfirmed = 0 AND votestoconfirm > 0 + AND votestoconfirm <= votes", 'bug_check_votes_everconfirmed_error_text'); ########################################################################### @@ -1075,7 +1076,7 @@ Status('whines_obsolete_target_fix') if $display_repair_whines_link; # Check hook ########################################################################### -Bugzilla::Hook::process("sanitycheck-check", { status => \&Status }); +Bugzilla::Hook::process('sanitycheck_check', { status => \&Status }); ########################################################################### # End diff --git a/skins/CVS/Entries b/skins/CVS/Entries index 680580bb7..52b0b85d4 100644 --- a/skins/CVS/Entries +++ b/skins/CVS/Entries @@ -1,3 +1,3 @@ -/.cvsignore/1.2/Tue Aug 14 21:54:35 2007//TBUGZILLA-3_5_2 +/.cvsignore/1.2/Tue Aug 14 21:54:35 2007//TBUGZILLA-3_5_3 D/contrib//// D/standard//// diff --git a/skins/CVS/Tag b/skins/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/CVS/Tag +++ b/skins/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/contrib/CVS/Tag b/skins/contrib/CVS/Tag index 1cec2e2b3..510ad3027 100644 --- a/skins/contrib/CVS/Tag +++ b/skins/contrib/CVS/Tag @@ -1 +1 @@ -TBUGZILLA-3_5_2 +TBUGZILLA-3_5_3 diff --git a/skins/contrib/Dusk/.cvsignore b/skins/contrib/Dusk/.cvsignore index f1761a004..0cbfb97f0 100644 --- a/skins/contrib/Dusk/.cvsignore +++ b/skins/contrib/Dusk/.cvsignore @@ -9,6 +9,7 @@ help.css panel.css params.css release-notes.css +reports.css show_bug.css show_multiple.css summarize-time.css diff --git a/skins/contrib/Dusk/CVS/Entries b/skins/contrib/Dusk/CVS/Entries index e4186e6d6..71cc1ff59 100644 --- a/skins/contrib/Dusk/CVS/Entries +++ b/skins/contrib/Dusk/CVS/Entries @@ -1,5 +1,5 @@ -/.cvsignore/1.4/Thu Feb 12 02:17:55 2009//TBUGZILLA-3_5_2 -/buglist.css/1.2/Tue Aug 19 10:03:18 2008//TBUGZILLA-3_5_2 -/global.css/1.8/Wed Sep 30 08:58:49 2009//TBUGZILLA-3_5_2 -/index.css/1.1/Thu Feb 12 02:17:56 2009//TBUGZILLA-3_5_2 +/.cvsignore/1.5/Sat Dec 12 21:48:11 2009//TBUGZILLA-3_5_3 +/buglist.css/1.2/Tue Aug 19 10:03:18 2008//TBUGZILLA-3_5_3 +/global.css/1.8/Wed Sep 30 08:58:49 2009//TBUGZILLA-3_5_3 +/index.css/1.1/Thu Feb 12 02:17:56 2009//TBUGZILLA-3_5_3 D/index//// diff --git a/skins/contrib/Dusk/CVS/Tag b/skins/contrib/Dusk/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/contrib/Dusk/CVS/Tag +++ b/skins/contrib/Dusk/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/contrib/Dusk/index/CVS/Entries b/skins/contrib/Dusk/index/CVS/Entries index 9ee173e01..ca6f6fde5 100644 --- a/skins/contrib/Dusk/index/CVS/Entries +++ b/skins/contrib/Dusk/index/CVS/Entries @@ -1,4 +1,4 @@ -/account.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 -/bug.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 -/search.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_2 +/account.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_3 +/bug.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_3 +/search.gif/1.1/Thu Feb 12 01:11:24 2009/-kb/TBUGZILLA-3_5_3 D diff --git a/skins/contrib/Dusk/index/CVS/Tag b/skins/contrib/Dusk/index/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/contrib/Dusk/index/CVS/Tag +++ b/skins/contrib/Dusk/index/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/standard/CVS/Entries b/skins/standard/CVS/Entries index 0934f8a77..4f01ac06d 100644 --- a/skins/standard/CVS/Entries +++ b/skins/standard/CVS/Entries @@ -1,20 +1,21 @@ -/IE-fixes.css/1.2/Fri Feb 8 23:18:59 2008//TBUGZILLA-3_5_2 -/admin.css/1.7/Mon Sep 8 20:37:50 2008//TBUGZILLA-3_5_2 -/buglist.css/1.18/Thu Oct 29 04:46:17 2009//TBUGZILLA-3_5_2 -/create_attachment.css/1.3/Fri Oct 23 21:32:06 2009//TBUGZILLA-3_5_2 -/dependency-tree.css/1.3/Sat Jan 6 19:48:10 2007//TBUGZILLA-3_5_2 -/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-3_5_2 -/editusers.css/1.3/Sun May 13 18:58:26 2007//TBUGZILLA-3_5_2 -/global.css/1.69/Wed Nov 18 07:06:46 2009//TBUGZILLA-3_5_2 -/help.css/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_2 -/index.css/1.12/Fri Oct 9 04:38:13 2009//TBUGZILLA-3_5_2 -/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-3_5_2 -/params.css/1.4/Thu Aug 2 22:38:45 2007//TBUGZILLA-3_5_2 -/release-notes.css/1.1/Thu Feb 22 18:41:29 2007//TBUGZILLA-3_5_2 -/show_bug.css/1.12/Thu Feb 12 19:04:53 2009//TBUGZILLA-3_5_2 -/show_multiple.css/1.4/Sun Jun 18 23:11:59 2006//TBUGZILLA-3_5_2 -/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-3_5_2 -/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-3_5_2 +/IE-fixes.css/1.3/Sat Dec 12 21:48:12 2009//TBUGZILLA-3_5_3 +/admin.css/1.7/Mon Sep 8 20:37:50 2008//TBUGZILLA-3_5_3 +/buglist.css/1.18/Thu Oct 29 04:46:17 2009//TBUGZILLA-3_5_3 +/create_attachment.css/1.3/Fri Oct 23 21:32:06 2009//TBUGZILLA-3_5_3 +/dependency-tree.css/1.3/Sat Jan 6 19:48:10 2007//TBUGZILLA-3_5_3 +/duplicates.css/1.2/Fri Nov 15 22:04:04 2002//TBUGZILLA-3_5_3 +/editusers.css/1.3/Sun May 13 18:58:26 2007//TBUGZILLA-3_5_3 +/global.css/1.72/Wed Dec 30 14:37:02 2009//TBUGZILLA-3_5_3 +/help.css/1.1/Sun Apr 15 18:43:26 2007//TBUGZILLA-3_5_3 +/index.css/1.12/Fri Oct 9 04:38:13 2009//TBUGZILLA-3_5_3 +/panel.css/1.1/Wed Dec 12 22:41:11 2001//TBUGZILLA-3_5_3 +/params.css/1.4/Thu Aug 2 22:38:45 2007//TBUGZILLA-3_5_3 +/release-notes.css/1.1/Thu Feb 22 18:41:29 2007//TBUGZILLA-3_5_3 +/reports.css/1.1/Sat Dec 12 21:48:12 2009//TBUGZILLA-3_5_3 +/show_bug.css/1.13/Sun Dec 13 22:52:18 2009//TBUGZILLA-3_5_3 +/show_multiple.css/1.4/Sun Jun 18 23:11:59 2006//TBUGZILLA-3_5_3 +/summarize-time.css/1.1/Mon Feb 28 17:52:57 2005//TBUGZILLA-3_5_3 +/voting.css/1.1/Tue Feb 8 15:49:57 2005//TBUGZILLA-3_5_3 D/dependency-tree//// D/global//// D/index//// diff --git a/skins/standard/CVS/Tag b/skins/standard/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/standard/CVS/Tag +++ b/skins/standard/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/standard/IE-fixes.css b/skins/standard/IE-fixes.css index bfd525ba2..f7e95f990 100644 --- a/skins/standard/IE-fixes.css +++ b/skins/standard/IE-fixes.css @@ -18,6 +18,10 @@ word-wrap: break-word; } +.component_table { + margin-top: .5em; +} + #footer #useful-links li { padding-bottom: 0.8ex; } diff --git a/skins/standard/dependency-tree/CVS/Entries b/skins/standard/dependency-tree/CVS/Entries index 0a90960f3..1ced6652b 100644 --- a/skins/standard/dependency-tree/CVS/Entries +++ b/skins/standard/dependency-tree/CVS/Entries @@ -1,5 +1,5 @@ -/bug-item.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 -/tree-closed.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 -/tree-open.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_2 -/tree.png/1.1/Tue May 23 00:31:35 2006/-kb/TBUGZILLA-3_5_2 +/bug-item.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_3 +/tree-closed.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_3 +/tree-open.png/1.1/Fri Feb 24 01:31:13 2006/-kb/TBUGZILLA-3_5_3 +/tree.png/1.1/Tue May 23 00:31:35 2006/-kb/TBUGZILLA-3_5_3 D diff --git a/skins/standard/dependency-tree/CVS/Tag b/skins/standard/dependency-tree/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/standard/dependency-tree/CVS/Tag +++ b/skins/standard/dependency-tree/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/standard/global.css b/skins/standard/global.css index 8eb7cc3b1..438559216 100644 --- a/skins/standard/global.css +++ b/skins/standard/global.css @@ -273,6 +273,10 @@ div#docslinks { /* Comments */ /************/ +.bz_comment_table td { + vertical-align: top; +} + .bz_comment { margin-bottom: 2em; } @@ -303,6 +307,14 @@ div#docslinks { float: right; } +.bz_collapse_expand_comments { + padding: 0; + margin: 0 0 0 1em; + list-style-type: none; +} +.bz_collapse_expand_comments li { + margin-bottom: .5em; +} .bz_collapse_comment { text-decoration: none; } @@ -387,7 +399,6 @@ dl dl > dt { /* Style of the attachment table and time tracking table */ #attachment_table { border-collapse: collapse; - width: 40em; border: 1px solid #333333; } @@ -455,6 +466,15 @@ div.user_match { .field_value, form#Create th, form#Create td { vertical-align: top; } +th.required:before { + content: "* "; +} +th.required:before, span.required_star { + color: red; +} +input.required, select.required, span.required_explanation { + background-color: #fff7cd; +} .calendar_button { background: transparent url("global/calendar.png") no-repeat; diff --git a/skins/standard/global/CVS/Entries b/skins/standard/global/CVS/Entries index 3bd03342e..8e8b080a9 100644 --- a/skins/standard/global/CVS/Entries +++ b/skins/standard/global/CVS/Entries @@ -1,8 +1,8 @@ -/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-3_5_2 -/calendar.png/1.1/Thu Nov 29 02:20:30 2007/-kb/TBUGZILLA-3_5_2 -/down.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 -/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-3_5_2 -/left.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 -/right.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 -/up.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_2 +/body-back.gif/1.1/Fri Mar 11 03:07:18 2005/-kb/TBUGZILLA-3_5_3 +/calendar.png/1.1/Thu Nov 29 02:20:30 2007/-kb/TBUGZILLA-3_5_3 +/down.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_3 +/header.png/1.1/Thu Feb 3 19:23:17 2005/-kb/TBUGZILLA-3_5_3 +/left.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_3 +/right.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_3 +/up.png/1.1/Wed Sep 10 19:07:07 2008/-kb/TBUGZILLA-3_5_3 D diff --git a/skins/standard/global/CVS/Tag b/skins/standard/global/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/standard/global/CVS/Tag +++ b/skins/standard/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/standard/index/CVS/Entries b/skins/standard/index/CVS/Entries index e5df3dfd1..387e5bb5f 100644 --- a/skins/standard/index/CVS/Entries +++ b/skins/standard/index/CVS/Entries @@ -1,4 +1,4 @@ -/account.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 -/bug.gif/1.3/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 -/search.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_2 +/account.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_3 +/bug.gif/1.3/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_3 +/search.gif/1.1/Thu Feb 12 01:11:26 2009/-kb/TBUGZILLA-3_5_3 D diff --git a/skins/standard/index/CVS/Tag b/skins/standard/index/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/standard/index/CVS/Tag +++ b/skins/standard/index/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/skins/standard/reports.css b/skins/standard/reports.css new file mode 100644 index 000000000..1856bd96e --- /dev/null +++ b/skins/standard/reports.css @@ -0,0 +1,89 @@ +/* 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 Everything Solved, + * Inc. Portions created by the Initial Developer are Copyright (C) + * 2009 the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Max Kanat-Alexander <mkanat@bugzilla.org> + */ + +/* describecomponents.cgi */ + +#components_header_table { + margin-bottom: 1em; +} + +.product_container { + width: 65%; +} + +.product_name { + margin: 0; +} + +.product_desc { + /* This is padding instead of margin because it looks better + * with the scrollbar. */ + padding: 0 2em; + font-style: italic; + max-height: 5em; + overflow: auto; +} + +.instructions { + font-weight: bold; + font-size: 105%; + padding-right: 1em; +} + +.components_header { + margin: 0; + font-size: 140%; +} + +.component_table { + margin-top: -1em; + margin-left: 2em; +} + +.component_table thead th { + padding-right: 1em; + vertical-align: bottom; + text-align: left; +} + +.component_table td { + border-bottom: 1px dotted gray; +} + +.component_table td.component_assignee, +.component_table td.component_qa_contact +{ + border: none; + padding-top: .5em; +} + +.component_name { + font-size: 115%; + font-weight: bold; + padding-right: 1em; + vertical-align: middle; + min-width: 8em; +} + +.component_description { + padding-bottom: .5em; + color: #333; +} + diff --git a/skins/standard/show_bug.css b/skins/standard/show_bug.css index 3a91e8c7b..3e330a169 100644 --- a/skins/standard/show_bug.css +++ b/skins/standard/show_bug.css @@ -59,6 +59,26 @@ table#flags { } +#bz_big_form_parts td { + vertical-align: top; +} + +.bz_group_visibility_section { + margin-left: 1em; +} + +.bz_group_visibility_section .instructions { + font-style: italic; +} + +#bz_restrict_group_visibility_help .instructions { + margin-top: 0; +} + +#bz_enable_role_visibility_help { + margin-top: 1em; +} + .bz_time_tracking_table { border-collapse: collapse; } diff --git a/skins/standard/yui/CVS/Entries b/skins/standard/yui/CVS/Entries index 80073efec..29c99c7bc 100644 --- a/skins/standard/yui/CVS/Entries +++ b/skins/standard/yui/CVS/Entries @@ -1,3 +1,3 @@ -/calendar.css/1.2/Thu Jan 15 01:01:25 2009//TBUGZILLA-3_5_2 -/sprite.png/1.2/Thu Jan 15 01:01:26 2009/-kb/TBUGZILLA-3_5_2 +/calendar.css/1.2/Thu Jan 15 01:01:25 2009//TBUGZILLA-3_5_3 +/sprite.png/1.2/Thu Jan 15 01:01:26 2009/-kb/TBUGZILLA-3_5_3 D diff --git a/skins/standard/yui/CVS/Tag b/skins/standard/yui/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/skins/standard/yui/CVS/Tag +++ b/skins/standard/yui/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/t/.cvsignore b/t/.cvsignore new file mode 100644 index 000000000..03c88fd7a --- /dev/null +++ b/t/.cvsignore @@ -0,0 +1 @@ +.htaccess diff --git a/t/008filter.t b/t/008filter.t index 5a9e48bac..e6ae4c13a 100644 --- a/t/008filter.t +++ b/t/008filter.t @@ -96,7 +96,7 @@ foreach my $path (@Support::Templates::include_paths) { foreach my $file (@testitems) { # There are some files we don't check, because there is no need to # filter their contents due to their content-type. - if ($file =~ /\.(txt|png)\.tmpl$/) { + if ($file =~ /\.(pm|txt|png)\.tmpl$/) { ok(1, "($lang/$flavor) $file is filter-safe"); next; } diff --git a/t/CVS/Entries b/t/CVS/Entries index a78040d2a..b64c50c5a 100644 --- a/t/CVS/Entries +++ b/t/CVS/Entries @@ -1,13 +1,14 @@ -/001compile.t/1.20/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_2 -/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-3_5_2 -/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-3_5_2 -/004template.t/1.40/Wed Mar 5 17:19:48 2008//TBUGZILLA-3_5_2 -/005whitespace.t/1.15/Mon Mar 2 21:24:28 2009//TBUGZILLA-3_5_2 -/006spellcheck.t/1.6/Wed Jul 25 14:47:20 2007//TBUGZILLA-3_5_2 -/007util.t/1.13/Thu Jul 16 01:30:52 2009//TBUGZILLA-3_5_2 -/008filter.t/1.31/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_2 -/009bugwords.t/1.8/Wed Feb 25 19:24:46 2009//TBUGZILLA-3_5_2 -/010dependencies.t/1.1/Tue Sep 5 17:02:45 2006//TBUGZILLA-3_5_2 -/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-3_5_2 -/012throwables.t/1.6/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_2 +/.cvsignore/1.1/Mon Feb 1 00:33:38 2010//TBUGZILLA-3_5_3 +/001compile.t/1.20/Wed Nov 18 07:01:41 2009//TBUGZILLA-3_5_3 +/002goodperl.t/1.15/Wed Sep 8 22:46:34 2004//TBUGZILLA-3_5_3 +/003safesys.t/1.6/Sun Dec 5 14:13:27 2004//TBUGZILLA-3_5_3 +/004template.t/1.40/Wed Mar 5 17:19:48 2008//TBUGZILLA-3_5_3 +/005whitespace.t/1.15/Mon Mar 2 21:24:28 2009//TBUGZILLA-3_5_3 +/006spellcheck.t/1.6/Wed Jul 25 14:47:20 2007//TBUGZILLA-3_5_3 +/007util.t/1.13/Thu Jul 16 01:30:52 2009//TBUGZILLA-3_5_3 +/008filter.t/1.32/Wed Nov 25 05:02:56 2009//TBUGZILLA-3_5_3 +/009bugwords.t/1.8/Wed Feb 25 19:24:46 2009//TBUGZILLA-3_5_3 +/010dependencies.t/1.1/Tue Sep 5 17:02:45 2006//TBUGZILLA-3_5_3 +/011pod.t/1.1/Tue Jul 26 14:23:50 2005//TBUGZILLA-3_5_3 +/012throwables.t/1.6/Fri Sep 4 21:08:52 2009//TBUGZILLA-3_5_3 D/Support//// diff --git a/t/CVS/Tag b/t/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/t/CVS/Tag +++ b/t/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/t/Support/CVS/Entries b/t/Support/CVS/Entries index 279a4e3e6..66d2e9d3a 100644 --- a/t/Support/CVS/Entries +++ b/t/Support/CVS/Entries @@ -1,4 +1,4 @@ -/Files.pm/1.25/Tue Nov 10 21:19:48 2009//TBUGZILLA-3_5_2 -/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-3_5_2 -/Templates.pm/1.15/Tue Jul 4 22:25:47 2006//TBUGZILLA-3_5_2 +/Files.pm/1.26/Wed Nov 25 05:02:56 2009//TBUGZILLA-3_5_3 +/Systemexec.pm/1.2/Fri Oct 19 22:39:51 2001//TBUGZILLA-3_5_3 +/Templates.pm/1.15/Tue Jul 4 22:25:47 2006//TBUGZILLA-3_5_3 D diff --git a/t/Support/CVS/Tag b/t/Support/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/t/Support/CVS/Tag +++ b/t/Support/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/t/Support/Files.pm b/t/Support/Files.pm index d24cc2264..6c6e0ee57 100644 --- a/t/Support/Files.pm +++ b/t/Support/Files.pm @@ -29,6 +29,7 @@ use File::Find; @files = glob('*'); find(sub { push(@files, $File::Find::name) if $_ =~ /\.pm$/;}, 'Bugzilla'); +push(@files, 'extensions/create.pl'); sub isTestingFile { my ($file) = @_; diff --git a/template/CVS/Entries b/template/CVS/Entries index 9a7fdaf1e..9cc12be92 100644 --- a/template/CVS/Entries +++ b/template/CVS/Entries @@ -1,2 +1,2 @@ -/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-3_5_2 +/.cvsignore/1.3/Tue May 7 21:33:53 2002//TBUGZILLA-3_5_3 D/en//// diff --git a/template/CVS/Tag b/template/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/CVS/Tag +++ b/template/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/CVS/Entries b/template/en/CVS/Entries index e3db144a5..a1013c654 100644 --- a/template/en/CVS/Entries +++ b/template/en/CVS/Entries @@ -1,3 +1,2 @@ -/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-3_5_2 +/.cvsignore/1.1/Wed Apr 24 07:29:49 2002//TBUGZILLA-3_5_3 D/default//// -D/extension//// diff --git a/template/en/CVS/Tag b/template/en/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/CVS/Tag +++ b/template/en/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/CVS/Entries b/template/en/default/CVS/Entries index 8fd4fefdb..42abe8dcd 100644 --- a/template/en/default/CVS/Entries +++ b/template/en/default/CVS/Entries @@ -1,14 +1,15 @@ -/config.js.tmpl/1.12/Wed Sep 24 02:55:22 2008//TBUGZILLA-3_5_2 -/config.rdf.tmpl/1.17/Thu Jan 29 21:00:24 2009//TBUGZILLA-3_5_2 -/filterexceptions.pl/1.131/Mon Oct 26 11:28:49 2009//TBUGZILLA-3_5_2 -/index.html.tmpl/1.47/Sat Oct 24 05:21:09 2009//TBUGZILLA-3_5_2 -/sidebar.xul.tmpl/1.27/Sun Mar 1 23:42:53 2009//TBUGZILLA-3_5_2 -/welcome-admin.html.tmpl/1.5/Sun Jan 25 22:41:37 2009//TBUGZILLA-3_5_2 +/config.js.tmpl/1.12/Wed Sep 24 02:55:22 2008//TBUGZILLA-3_5_3 +/config.rdf.tmpl/1.17/Thu Jan 29 21:00:24 2009//TBUGZILLA-3_5_3 +/filterexceptions.pl/1.132/Sat Dec 12 21:48:12 2009//TBUGZILLA-3_5_3 +/index.html.tmpl/1.48/Thu Dec 31 12:37:51 2009//TBUGZILLA-3_5_3 +/sidebar.xul.tmpl/1.27/Sun Mar 1 23:42:53 2009//TBUGZILLA-3_5_3 +/welcome-admin.html.tmpl/1.6/Thu Dec 31 12:37:51 2009//TBUGZILLA-3_5_3 D/account//// D/admin//// D/attachment//// D/bug//// D/email//// +D/extensions//// D/flag//// D/global//// D/list//// diff --git a/template/en/default/CVS/Tag b/template/en/default/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/CVS/Tag +++ b/template/en/default/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/account/CVS/Entries b/template/en/default/account/CVS/Entries index 33b9f6377..d2a9090f6 100644 --- a/template/en/default/account/CVS/Entries +++ b/template/en/default/account/CVS/Entries @@ -1,7 +1,7 @@ -/cancel-token.txt.tmpl/1.16/Thu Jan 8 16:09:56 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.13/Tue Oct 28 21:27:20 2008//TBUGZILLA-3_5_2 -/created.html.tmpl/1.9/Mon Aug 20 18:24:40 2007//TBUGZILLA-3_5_2 -/profile-activity.html.tmpl/1.6/Mon Jul 20 04:17:40 2009//TBUGZILLA-3_5_2 +/cancel-token.txt.tmpl/1.16/Thu Jan 8 16:09:56 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.13/Tue Oct 28 21:27:20 2008//TBUGZILLA-3_5_3 +/created.html.tmpl/1.9/Mon Aug 20 18:24:40 2007//TBUGZILLA-3_5_3 +/profile-activity.html.tmpl/1.6/Mon Jul 20 04:17:40 2009//TBUGZILLA-3_5_3 D/auth//// D/email//// D/password//// diff --git a/template/en/default/account/CVS/Tag b/template/en/default/account/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/account/CVS/Tag +++ b/template/en/default/account/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/account/auth/CVS/Entries b/template/en/default/account/auth/CVS/Entries index c539b03ab..1aa879d70 100644 --- a/template/en/default/account/auth/CVS/Entries +++ b/template/en/default/account/auth/CVS/Entries @@ -1,3 +1,3 @@ -/login-small.html.tmpl/1.21/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_2 -/login.html.tmpl/1.23/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_2 +/login-small.html.tmpl/1.21/Fri Oct 9 04:31:12 2009//TBUGZILLA-3_5_3 +/login.html.tmpl/1.23/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/account/auth/CVS/Tag b/template/en/default/account/auth/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/account/auth/CVS/Tag +++ b/template/en/default/account/auth/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/account/email/CVS/Entries b/template/en/default/account/email/CVS/Entries index 2464d55ed..a8a03aedf 100644 --- a/template/en/default/account/email/CVS/Entries +++ b/template/en/default/account/email/CVS/Entries @@ -1,6 +1,6 @@ -/change-new.txt.tmpl/1.13/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 -/change-old.txt.tmpl/1.14/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 -/confirm-new.html.tmpl/1.6/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 -/confirm.html.tmpl/1.11/Mon Aug 20 18:24:41 2007//TBUGZILLA-3_5_2 -/request-new.txt.tmpl/1.7/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_2 +/change-new.txt.tmpl/1.13/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_3 +/change-old.txt.tmpl/1.14/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_3 +/confirm-new.html.tmpl/1.6/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_3 +/confirm.html.tmpl/1.11/Mon Aug 20 18:24:41 2007//TBUGZILLA-3_5_3 +/request-new.txt.tmpl/1.7/Thu Jan 8 16:10:00 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/account/email/CVS/Tag b/template/en/default/account/email/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/account/email/CVS/Tag +++ b/template/en/default/account/email/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/account/password/CVS/Entries b/template/en/default/account/password/CVS/Entries index 0ff9ee45d..5ad82bca1 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.11/Thu Jan 8 16:10:04 2009//TBUGZILLA-3_5_2 -/set-forgotten-password.html.tmpl/1.8/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_2 +/forgotten-password.txt.tmpl/1.11/Thu Jan 8 16:10:04 2009//TBUGZILLA-3_5_3 +/set-forgotten-password.html.tmpl/1.8/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/account/password/CVS/Tag b/template/en/default/account/password/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/account/password/CVS/Tag +++ b/template/en/default/account/password/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/account/prefs/CVS/Entries b/template/en/default/account/prefs/CVS/Entries index c8243f733..11362b77c 100644 --- a/template/en/default/account/prefs/CVS/Entries +++ b/template/en/default/account/prefs/CVS/Entries @@ -1,7 +1,7 @@ -/account.html.tmpl/1.10/Sat Oct 18 16:33:33 2008//TBUGZILLA-3_5_2 -/email.html.tmpl/1.32/Wed Dec 10 18:26:55 2008//TBUGZILLA-3_5_2 -/permissions.html.tmpl/1.14/Fri Aug 8 01:26:38 2008//TBUGZILLA-3_5_2 -/prefs.html.tmpl/1.31/Mon Feb 2 19:21:10 2009//TBUGZILLA-3_5_2 -/saved-searches.html.tmpl/1.21/Tue Sep 15 16:52:09 2009//TBUGZILLA-3_5_2 -/settings.html.tmpl/1.6/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_2 +/account.html.tmpl/1.10/Sat Oct 18 16:33:33 2008//TBUGZILLA-3_5_3 +/email.html.tmpl/1.32/Wed Dec 10 18:26:55 2008//TBUGZILLA-3_5_3 +/permissions.html.tmpl/1.14/Fri Aug 8 01:26:38 2008//TBUGZILLA-3_5_3 +/prefs.html.tmpl/1.31/Mon Feb 2 19:21:10 2009//TBUGZILLA-3_5_3 +/saved-searches.html.tmpl/1.21/Tue Sep 15 16:52:09 2009//TBUGZILLA-3_5_3 +/settings.html.tmpl/1.6/Mon Aug 20 18:24:42 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/account/prefs/CVS/Tag b/template/en/default/account/prefs/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/account/prefs/CVS/Tag +++ b/template/en/default/account/prefs/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/CVS/Entries b/template/en/default/admin/CVS/Entries index 0f614361e..9a7ce212c 100644 --- a/template/en/default/admin/CVS/Entries +++ b/template/en/default/admin/CVS/Entries @@ -1,7 +1,7 @@ -/admin.html.tmpl/1.7/Fri Aug 8 01:26:51 2008//TBUGZILLA-3_5_2 -/confirm-action.html.tmpl/1.3/Mon Feb 2 18:34:38 2009//TBUGZILLA-3_5_2 -/sudo.html.tmpl/1.8/Wed Nov 19 22:08:09 2008//TBUGZILLA-3_5_2 -/table.html.tmpl/1.11/Thu Jun 25 01:01:18 2009//TBUGZILLA-3_5_2 +/admin.html.tmpl/1.7/Fri Aug 8 01:26:51 2008//TBUGZILLA-3_5_3 +/confirm-action.html.tmpl/1.3/Mon Feb 2 18:34:38 2009//TBUGZILLA-3_5_3 +/sudo.html.tmpl/1.8/Wed Nov 19 22:08:09 2008//TBUGZILLA-3_5_3 +/table.html.tmpl/1.11/Thu Jun 25 01:01:18 2009//TBUGZILLA-3_5_3 D/classifications//// D/components//// D/custom_fields//// diff --git a/template/en/default/admin/CVS/Tag b/template/en/default/admin/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/CVS/Tag +++ b/template/en/default/admin/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/classifications/CVS/Entries b/template/en/default/admin/classifications/CVS/Entries index 1b4140302..fa0f50b2c 100644 --- a/template/en/default/admin/classifications/CVS/Entries +++ b/template/en/default/admin/classifications/CVS/Entries @@ -1,7 +1,7 @@ -/add.html.tmpl/1.6/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 -/del.html.tmpl/1.9/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.13/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.1/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 -/reclassify.html.tmpl/1.10/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_2 -/select.html.tmpl/1.8/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 +/add.html.tmpl/1.6/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_3 +/del.html.tmpl/1.9/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.13/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.1/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_3 +/reclassify.html.tmpl/1.10/Sat May 30 13:26:12 2009//TBUGZILLA-3_5_3 +/select.html.tmpl/1.8/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/classifications/CVS/Tag b/template/en/default/admin/classifications/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/classifications/CVS/Tag +++ b/template/en/default/admin/classifications/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/components/CVS/Entries b/template/en/default/admin/components/CVS/Entries index 3501fee26..0d552fc00 100644 --- a/template/en/default/admin/components/CVS/Entries +++ b/template/en/default/admin/components/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.13/Mon Jun 1 14:43:18 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.17/Tue Mar 17 16:22:52 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.16/Wed Nov 19 21:01:49 2008//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.7/Thu Jun 25 01:01:19 2009//TBUGZILLA-3_5_2 -/select-product.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.13/Mon Jun 1 14:43:18 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.17/Tue Mar 17 16:22:52 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.16/Wed Nov 19 21:01:49 2008//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.7/Thu Jun 25 01:01:19 2009//TBUGZILLA-3_5_3 +/select-product.html.tmpl/1.4/Mon Aug 20 18:24:44 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/components/CVS/Tag b/template/en/default/admin/components/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/components/CVS/Tag +++ b/template/en/default/admin/components/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/custom_fields/CVS/Entries b/template/en/default/admin/custom_fields/CVS/Entries index 9bc92aac6..e4e3ecfc3 100644 --- a/template/en/default/admin/custom_fields/CVS/Entries +++ b/template/en/default/admin/custom_fields/CVS/Entries @@ -1,6 +1,6 @@ -/cf-js.js.tmpl/1.6/Wed Jul 8 09:22:14 2009//TBUGZILLA-3_5_2 -/confirm-delete.html.tmpl/1.1/Wed Feb 6 16:18:13 2008//TBUGZILLA-3_5_2 -/create.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_2 -/list.html.tmpl/1.8/Thu Jun 25 01:01:20 2009//TBUGZILLA-3_5_2 +/cf-js.js.tmpl/1.6/Wed Jul 8 09:22:14 2009//TBUGZILLA-3_5_3 +/confirm-delete.html.tmpl/1.1/Wed Feb 6 16:18:13 2008//TBUGZILLA-3_5_3 +/create.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.12/Fri Nov 7 11:34:49 2008//TBUGZILLA-3_5_3 +/list.html.tmpl/1.8/Thu Jun 25 01:01:20 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/custom_fields/CVS/Tag b/template/en/default/admin/custom_fields/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/custom_fields/CVS/Tag +++ b/template/en/default/admin/custom_fields/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/fieldvalues/CVS/Entries b/template/en/default/admin/fieldvalues/CVS/Entries index 643c32e0d..db8f37e06 100644 --- a/template/en/default/admin/fieldvalues/CVS/Entries +++ b/template/en/default/admin/fieldvalues/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.14/Sun Jun 21 19:33:47 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.12/Fri Nov 7 11:34:50 2008//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.15/Fri Jul 17 22:40:09 2009//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.7/Fri Oct 3 01:40:18 2008//TBUGZILLA-3_5_2 -/list.html.tmpl/1.11/Fri Jul 17 22:40:10 2009//TBUGZILLA-3_5_2 -/select-field.html.tmpl/1.4/Mon Aug 20 18:24:46 2007//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.15/Tue Jan 5 23:51:57 2010//TBUGZILLA-3_5_3 +/create.html.tmpl/1.12/Fri Nov 7 11:34:50 2008//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.15/Fri Jul 17 22:40:09 2009//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.7/Fri Oct 3 01:40:18 2008//TBUGZILLA-3_5_3 +/list.html.tmpl/1.11/Fri Jul 17 22:40:10 2009//TBUGZILLA-3_5_3 +/select-field.html.tmpl/1.4/Mon Aug 20 18:24:46 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/fieldvalues/CVS/Tag b/template/en/default/admin/fieldvalues/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/fieldvalues/CVS/Tag +++ b/template/en/default/admin/fieldvalues/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl b/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl index 64c24357d..81a5b0f96 100644 --- a/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl +++ b/template/en/default/admin/fieldvalues/confirm-delete.html.tmpl @@ -88,7 +88,7 @@ There are [% value.bug_count FILTER html %] [%+ terms.bugs %] with this field value. [% ELSE %] - There is is 1 [% terms.bug %] with this field value. + There is 1 [% terms.bug %] with this field value. [% END %] You must change the field value on <a title="List of [% terms.bugs %] where ' diff --git a/template/en/default/admin/flag-type/CVS/Entries b/template/en/default/admin/flag-type/CVS/Entries index 3447bb3d8..5b8405805 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.10/Mon Feb 2 18:59:18 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.26/Mon Oct 22 21:42:00 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.21/Fri Jul 31 15:57:22 2009//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.10/Mon Feb 2 18:59:18 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.26/Mon Oct 22 21:42:00 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.21/Fri Jul 31 15:57:22 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/flag-type/CVS/Tag b/template/en/default/admin/flag-type/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/flag-type/CVS/Tag +++ b/template/en/default/admin/flag-type/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/groups/CVS/Entries b/template/en/default/admin/groups/CVS/Entries index 9477c6863..19b0148b5 100644 --- a/template/en/default/admin/groups/CVS/Entries +++ b/template/en/default/admin/groups/CVS/Entries @@ -1,6 +1,6 @@ -/confirm-remove.html.tmpl/1.5/Sun Dec 16 10:32:54 2007//TBUGZILLA-3_5_2 -/create.html.tmpl/1.14/Sat Oct 18 16:33:35 2008//TBUGZILLA-3_5_2 -/delete.html.tmpl/1.14/Tue Aug 18 23:19:57 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.19/Mon Aug 10 11:09:33 2009//TBUGZILLA-3_5_2 -/list.html.tmpl/1.14/Thu Jun 25 01:01:23 2009//TBUGZILLA-3_5_2 +/confirm-remove.html.tmpl/1.5/Sun Dec 16 10:32:54 2007//TBUGZILLA-3_5_3 +/create.html.tmpl/1.14/Sat Oct 18 16:33:35 2008//TBUGZILLA-3_5_3 +/delete.html.tmpl/1.15/Thu Dec 31 12:48:23 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.19/Mon Aug 10 11:09:33 2009//TBUGZILLA-3_5_3 +/list.html.tmpl/1.14/Thu Jun 25 01:01:23 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/groups/CVS/Tag b/template/en/default/admin/groups/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/groups/CVS/Tag +++ b/template/en/default/admin/groups/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/groups/delete.html.tmpl b/template/en/default/admin/groups/delete.html.tmpl index d1f1936bd..c1a9403f9 100644 --- a/template/en/default/admin/groups/delete.html.tmpl +++ b/template/en/default/admin/groups/delete.html.tmpl @@ -19,18 +19,14 @@ # Joel Peshkin <bugreport@peshkin.net> # Jacob Steenhagen <jake@bugzilla.org> # Vlad Dascalu <jocuri@softhome.net> + # Max Kanat-Alexander <mkanat@bugzilla.org> #%] [%# INTERFACE: - # gid: number. The group ID. - # name: string. The name of the group. - # description: string. The description of the group. - # hasusers: boolean int. True if the group includes users in it. - # hasbugs: boolean int. True if the group includes bugs in it. - # hasproduct: boolean int. True if the group is binded to a product. - # hasflags: boolean int. True if the group is used by a flag type. - # shared_queries: int. Number of saved searches being shared with this group. - # buglist: string. The list of bugs included in this group. + # group: A Bugzilla::Group object representing the group that is + # about to be deleted. + # shared_queries: int; The number of queries being shared with this + # group. #%] @@ -46,29 +42,34 @@ <th>Description</th> </tr> <tr> - <td>[% gid FILTER html %]</td> - <td>[% name FILTER html %]</td> - <td>[% description FILTER html_light %]</td> + <td>[% group.id FILTER html %]</td> + <td>[% group.name FILTER html %]</td> + <td>[% group.description FILTER html_light %]</td> </tr> </table> <form method="post" action="editgroups.cgi"> - [% IF hasusers %] - <p><b>One or more users belong to this group. You cannot delete - this group while there are users in it.</b> - - <br><a href="editusers.cgi?action=list&groupid=[% gid FILTER html %]&grouprestrict=1">Show - me which users</a> - <input type="checkbox" name="removeusers">Remove - all users from this group for me.</p> + [% IF group.members_non_inherited.size %] + <p><b>[% group.members_non_inherited.size FILTER html %] users belong + directly to this group. You cannot delete this group while there are + users in it.</b> + + <br><a href="editusers.cgi?action=list&groupid= + [%- group.id FILTER url_quote %]&grouprestrict=1">Show + me which users</a> - <label><input type="checkbox" name="removeusers">Remove + all users from this group for me.</label></p> [% END %] - [% IF hasbugs %] - <p><b>One or more [% terms.bug %] reports are visible only to this group. - You cannot delete this group while any [% terms.bugs %] are using it.</b> + [% IF group.bugs.size %] + <p><b>[% group.bugs.size FILTER html %] [%+ terms.bug %] reports are + visible only to this group. You cannot delete this group while any + [%+ terms.bugs %] are using it.</b> - <br><a href="buglist.cgi?bug_id=[% buglist FILTER html %]">Show me - which [% terms.bugs %]</a> - <input type="checkbox" name="removebugs">Remove - all [% terms.bugs %] from this group restriction for me.</p> + <br><a href="buglist.cgi?field0-0-0=bug_group&type0-0-0=equals&value0-0-0= + [%- group.name FILTER url_quote %]">Show me + which [% terms.bugs %]</a> - + <label><input type="checkbox" name="removebugs">Remove + all [% terms.bugs %] from this group restriction for me.</label></p> <p><b>NOTE:</b> It's quite possible to make confidential [% terms.bugs %] public by checking this box. It is <B>strongly</B> suggested @@ -76,21 +77,63 @@ the box.</p> [% END %] - [% IF hasproduct %] - <p><b>This group is tied to the <U>[% name FILTER html %]</U> product. - You cannot delete this group while it is tied to a product.</b> + [% IF group.products.size %] + <p><b>This group is tied to the following products:</b></p> + [% SET any_hidden = 0 %] + <ul> + [% FOREACH data = group.products %] + + [% SET active = [] %] + [% FOREACH control = data.controls.keys.sort %] + [% NEXT IF !data.controls.$control %] + [% IF control == 'othercontrol' OR control == 'membercontrol' %] + [% SWITCH data.controls.$control %] + [% CASE constants.CONTROLMAPMANDATORY %] + [% SET type = "Mandatory" %] + [% CASE constants.CONTROLMAPSHOWN %] + [% SET type = "Shown" %] + [% CASE constants.CONTROLMAPDEFAULT %] + [% SET type = "Default" %] + [% END %] + [% active.push("$control: $type") %] + [% ELSE %] + [% active.push(control) %] + [% END %] + [% END %] + + [% SET hidden = 0 %] + [% IF data.controls.othercontrol == constants.CONTROLMAPMANDATORY + AND data.controls.membercontrol == constants.CONTROLMAPMANDATORY + AND data.controls.entry + %] + [% SET hidden = 1 %] + [% END %] + + <li><a href="editproducts.cgi?action=editgroupcontrols&product= + [%- data.product.name FILTER url_quote %]"> + [%- data.product.name FILTER html %]</a> + ([% active.join(', ') FILTER html %]) + [% IF hidden %] + <strong>WARNING: This product is currently hidden. + Deleting this group will make this product publicly visible. + </strong> + [% END %]</li> + [% END %] + </ul> - <br><input type="checkbox" name="unbind">Delete this group anyway, - and make the product <U>[% name FILTER html %]</U> publicly visible.</p> + <p><label><input type="checkbox" name="unbind">Delete this group anyway, + and remove these controls.</label></p> [% END %] - [% IF hasflags %] + [% IF group.flag_types.size %] <p><b>This group restricts who can make changes to flags of certain types. You cannot delete this group while there are flag types using it.</b> - <br><a href="editflagtypes.cgi?action=list&group=[% gid FILTER html %]">Show - me which types</a> - <input type="checkbox" name="removeflags">Remove all - flag types from this group for me.</p> + <br><a href="editflagtypes.cgi?action=list&group= + [%- group.id FILTER url_quote %]">Show + me which types</a> - + <label><input type="checkbox" name="removeflags">Remove all + flag types from this group for me.</label></p> [% END %] [% IF shared_queries %] @@ -115,7 +158,9 @@ <h2>Confirmation</h2> <p>Do you really want to delete this group?</p> - [% IF (hasusers || hasbugs || hasproduct || hasflags) %] + [% IF group.users.size || group.bugs.size || group.products.size + || group.flags.size + %] <p><b>You must check all of the above boxes or correct the indicated problems first before you can proceed.</b></p> [% END %] @@ -123,7 +168,7 @@ <p> <input type="submit" id="delete" value="Yes, delete"> <input type="hidden" name="action" value="delete"> - <input type="hidden" name="group" value="[% gid FILTER html %]"> + <input type="hidden" name="group" value="[% group.id FILTER html %]"> <input type="hidden" name="token" value="[% token FILTER html %]"> </p> </form> diff --git a/template/en/default/admin/keywords/CVS/Entries b/template/en/default/admin/keywords/CVS/Entries index 3b9fb45b3..9a6101c00 100644 --- a/template/en/default/admin/keywords/CVS/Entries +++ b/template/en/default/admin/keywords/CVS/Entries @@ -1,5 +1,5 @@ -/confirm-delete.html.tmpl/1.8/Mon Feb 2 18:59:19 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.9/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.10/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.12/Mon Feb 2 18:59:20 2009//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.8/Mon Feb 2 18:59:19 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.9/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.10/Mon Aug 20 18:24:48 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.12/Mon Feb 2 18:59:20 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/keywords/CVS/Tag b/template/en/default/admin/keywords/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/keywords/CVS/Tag +++ b/template/en/default/admin/keywords/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/milestones/CVS/Entries b/template/en/default/admin/milestones/CVS/Entries index 86f9a77b2..3ddb4e55b 100644 --- a/template/en/default/admin/milestones/CVS/Entries +++ b/template/en/default/admin/milestones/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 -/create.html.tmpl/1.8/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.7/Thu Jun 25 01:01:24 2009//TBUGZILLA-3_5_2 -/select-product.html.tmpl/1.5/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_3 +/create.html.tmpl/1.8/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.9/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.7/Thu Jun 25 01:01:24 2009//TBUGZILLA-3_5_3 +/select-product.html.tmpl/1.5/Mon Aug 20 18:24:49 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/milestones/CVS/Tag b/template/en/default/admin/milestones/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/milestones/CVS/Tag +++ b/template/en/default/admin/milestones/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/params/CVS/Entries b/template/en/default/admin/params/CVS/Entries index f15ecfcfc..a822a8b71 100644 --- a/template/en/default/admin/params/CVS/Entries +++ b/template/en/default/admin/params/CVS/Entries @@ -1,20 +1,22 @@ -/admin.html.tmpl/1.5/Wed Dec 10 18:26:56 2008//TBUGZILLA-3_5_2 -/attachment.html.tmpl/1.8/Thu Aug 13 21:32:26 2009//TBUGZILLA-3_5_2 -/auth.html.tmpl/1.5/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_2 -/bugchange.html.tmpl/1.8/Wed Dec 10 18:40:02 2008//TBUGZILLA-3_5_2 -/bugfields.html.tmpl/1.6/Fri Apr 17 22:27:39 2009//TBUGZILLA-3_5_2 -/bugmove.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 -/common.html.tmpl/1.8/Wed Nov 18 07:04:57 2009//TBUGZILLA-3_5_2 -/core.html.tmpl/1.13/Fri Oct 9 04:31:13 2009//TBUGZILLA-3_5_2 -/dependencygraph.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 -/editparams.html.tmpl/1.8/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 -/groupsecurity.html.tmpl/1.7/Tue Mar 31 19:17:03 2009//TBUGZILLA-3_5_2 -/index.html.tmpl/1.3/Thu Jan 15 00:53:22 2009//TBUGZILLA-3_5_2 -/ldap.html.tmpl/1.8/Wed May 21 22:59:24 2008//TBUGZILLA-3_5_2 -/mta.html.tmpl/1.13/Wed Dec 24 03:43:48 2008//TBUGZILLA-3_5_2 -/patchviewer.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 -/query.html.tmpl/1.7/Mon Jul 20 04:17:41 2009//TBUGZILLA-3_5_2 -/radius.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 -/shadowdb.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_2 -/usermatch.html.tmpl/1.4/Tue Mar 31 19:24:24 2009//TBUGZILLA-3_5_2 +/admin.html.tmpl/1.5/Wed Dec 10 18:26:56 2008//TBUGZILLA-3_5_3 +/advanced.html.tmpl/1.2/Thu Dec 31 12:53:21 2009//TBUGZILLA-3_5_3 +/attachment.html.tmpl/1.8/Thu Aug 13 21:32:26 2009//TBUGZILLA-3_5_3 +/auth.html.tmpl/1.5/Sun Oct 18 23:35:01 2009//TBUGZILLA-3_5_3 +/bugchange.html.tmpl/1.8/Wed Dec 10 18:40:02 2008//TBUGZILLA-3_5_3 +/bugfields.html.tmpl/1.6/Fri Apr 17 22:27:39 2009//TBUGZILLA-3_5_3 +/bugmove.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_3 +/common.html.tmpl/1.8/Wed Nov 18 07:04:57 2009//TBUGZILLA-3_5_3 +/core.html.tmpl/1.14/Thu Dec 31 12:37:51 2009//TBUGZILLA-3_5_3 +/dependencygraph.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_3 +/editparams.html.tmpl/1.9/Sun Dec 13 20:49:08 2009//TBUGZILLA-3_5_3 +/general.html.tmpl/1.1/Thu Dec 31 12:37:51 2009//TBUGZILLA-3_5_3 +/groupsecurity.html.tmpl/1.7/Tue Mar 31 19:17:03 2009//TBUGZILLA-3_5_3 +/index.html.tmpl/1.3/Thu Jan 15 00:53:22 2009//TBUGZILLA-3_5_3 +/ldap.html.tmpl/1.8/Wed May 21 22:59:24 2008//TBUGZILLA-3_5_3 +/mta.html.tmpl/1.13/Wed Dec 24 03:43:48 2008//TBUGZILLA-3_5_3 +/patchviewer.html.tmpl/1.3/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_3 +/query.html.tmpl/1.7/Mon Jul 20 04:17:41 2009//TBUGZILLA-3_5_3 +/radius.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_3 +/shadowdb.html.tmpl/1.2/Mon Aug 20 18:24:50 2007//TBUGZILLA-3_5_3 +/usermatch.html.tmpl/1.4/Tue Mar 31 19:24:24 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/params/CVS/Tag b/template/en/default/admin/params/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/params/CVS/Tag +++ b/template/en/default/admin/params/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/params/advanced.html.tmpl b/template/en/default/admin/params/advanced.html.tmpl new file mode 100644 index 000000000..4caa2f1dc --- /dev/null +++ b/template/en/default/admin/params/advanced.html.tmpl @@ -0,0 +1,50 @@ +[%# 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 = "Advanced" + desc = "Settings for advanced configurations." +%] + +[% param_descs = { + cookiedomain => + "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.", + + inbound_proxies => + "When inbound traffic to $terms.Bugzilla goes through a proxy," + _ " $terms.Bugzilla thinks that the IP address of every single" + _ " user is the IP address of the proxy. If you enter a comma-separated" + _ " list of IPs in this parameter, then $terms.Bugzilla will trust any" + _ " <code>X-Forwarded-For</code> header sent from those IPs," + _ " and use the value of that header as the end user's IP address.", + + proxy_url => + "$terms.Bugzilla may have to access the web to get notifications about" + _ " new releases (see the <tt>upgrade_notification</tt> parameter)." + _ " If your $terms.Bugzilla server is behind a proxy, it may be" + _ " necessary to enter its URL if the web server cannot access the" + _ " HTTP_PROXY environment variable. If you have to authenticate," + _ " use the <code>http://user:pass@proxy_url/</code> syntax.", +} %] diff --git a/template/en/default/admin/params/core.html.tmpl b/template/en/default/admin/params/core.html.tmpl index b65dde233..b1578f422 100644 --- a/template/en/default/admin/params/core.html.tmpl +++ b/template/en/default/admin/params/core.html.tmpl @@ -25,20 +25,9 @@ %] [% 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.", - docs_urlbase => "The URL that is the common initial leading part of all " _ - "$terms.Bugzilla documentation URLs. " _ - "It may be an absolute URL, or a URL relative to urlbase " _ - "above. " _ - "Leave this empty to suppress links to the documentation." _ - "'%lang%' will be replaced by user's preferred language " _ - "(if available).", - sslbase => "The URL that is the common initial leading part of all HTTPS " _ "(SSL) $terms.Bugzilla URLs.", @@ -49,13 +38,6 @@ _ " $terms.Bugzilla will send out links using <tt>sslbase</tt> in emails" _ " instead of <tt>urlbase</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 " _ @@ -63,52 +45,4 @@ "this parameter to /bugzilla/. Setting it to / will allow " _ "all sites served by this web server or virtual host to read " _ "$terms.Bugzilla cookies.", - - utf8 => "Use UTF-8 (Unicode) encoding for all text in ${terms.Bugzilla}. New " _ - "installations should set this to true to avoid character encoding " _ - "problems. <strong>Existing databases should set this to true " _ - " only after the data has been converted from existing legacy " _ - " character encodings to UTF-8, using the " _ - " <kbd>contrib/recode.pl</kbd> script</strong>. <br><br> Note " _ - " that if you turn this parameter from "off" to " _ - " "on", you must re-run checksetup.pl immediately " _ - " afterward.", - - 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.", - - announcehtml => "If this field is non-empty, then $terms.Bugzilla will " _ - "display whatever is in this field at the top of every " _ - "HTML page. The HTML you put in this field is not " _ - "wrapped or enclosed in anything; you might want to " _ - "wrap it inside a <tt><div></tt>. Give the div " _ - "<em>id=message</em> to get green text inside a " _ - "red box, or <em>class=bz_private</em> for dark " _ - "red on a red background. Anything defined in " _ - "<tt>skins/standard/global.css</tt> or " _ - "<tt>skins/custom/global.css</tt> will work. To get " _ - "centered text, use <em>style=\"text-align: " _ - "center;\"</em>.", - - proxy_url => "$terms.Bugzilla may have to access the web to get notifications about new " _ - "releases, see the <tt>upgrade_notification</tt> parameter. In case you are " _ - "behind a proxy, it may be necessary to enter its URL if the web server " _ - "group cannot access the HTTP_PROXY environment variable. If you have to " _ - "authenticate, use the <code>http://user:pass@proxy_url/</code> syntax.", - - upgrade_notification => "<p>$terms.Bugzilla can inform you when a new release is available. " _ - "The notification will appear on the $terms.Bugzilla homepage, " _ - "for administrators only.</p>" _ - "<ul><li>'development_snapshot' notifies you about the latest " _ - "release on the trunk, i.e. development snapshots.</li>" _ - "<li>'latest_stable_release' notifies you about the most recent release " _ - "available on the most recent stable branch. This branch may be " _ - "different from the branch your installation is based on.</li>" _ - "<li>'stable_branch_release' notifies you only about new releases " _ - "corresponding to the branch your installation is based on. " _ - "If you are running a release candidate, you will get " _ - "a notification for newer release candidates too.</li>" _ - "<li>'disabled' will never notify you about new releases and no " _ - "connection will be established to a remote server.</li></ul>" } -%] +} %] diff --git a/template/en/default/admin/params/editparams.html.tmpl b/template/en/default/admin/params/editparams.html.tmpl index a35ec0f4a..666d88dff 100644 --- a/template/en/default/admin/params/editparams.html.tmpl +++ b/template/en/default/admin/params/editparams.html.tmpl @@ -27,7 +27,7 @@ [% PROCESS global/variables.none.tmpl %] [% curpanel = -1 %] -[% panels = panels.sort('sortkey') %] +[% panels = panels.nsort('sortkey') %] [% FOREACH panel = panels %] [% PROCESS "admin/params/${panel.name}.html.tmpl" diff --git a/template/en/default/admin/params/general.html.tmpl b/template/en/default/admin/params/general.html.tmpl new file mode 100644 index 000000000..b8c0c77ed --- /dev/null +++ b/template/en/default/admin/params/general.html.tmpl @@ -0,0 +1,86 @@ +[%# 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 = "General" + desc = "Miscellaneous general settings that are not required." +%] + +[% param_descs = { + maintainer => + "The email address of the person who maintains this installation " + _ " of ${terms.Bugzilla}.", + + docs_urlbase => + "The URL that is the common initial leading part of all" + _ " $terms.Bugzilla documentation URLs. It may be an absolute URL," + _ " or a URL relative to the <tt>urlbase</tt> parameter. Leave this" + _ " empty to suppress links to the documentation." + _ "'%lang%' will be replaced by user's preferred language (if" + _ " documentation is available in that language).", + + utf8 => + "Use UTF-8 (Unicode) encoding for all text in ${terms.Bugzilla}. New" + _ " installations should set this to true to avoid character encoding" + _ " problems. <strong>Existing databases should set this to true" + _ " only after the data has been converted from existing legacy" + _ " character encodings to UTF-8, using the <kbd>contrib/recode.pl</kbd>" + _ " script</strong>." + _ " <p>Note that if you turn this parameter from "off" to" + _ " "on", you must re-run checksetup.pl immediately" + _ " afterward.</p>", + + 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.", + + announcehtml => + "If this field is non-empty, then $terms.Bugzilla will" + _ " display whatever is in this field at the top of every" + _ " HTML page. The HTML you put in this field is not wrapped or" + _ " enclosed in anything. You might want to wrap it inside a" + _ "<tt><div></tt>. Give the div <em>id=\"message\"</em> to get" + _ " green text inside a red box, or <em>class=\"bz_private\"</em> for" + _ " dark red on a red background. Anything defined in " + _ " <tt>skins/standard/global.css</tt> or <tt>skins/custom/global.css</tt>" + _ " will work. To get centered text, use <em>style=\"text-align: " + _ " center;\"</em>.", + + upgrade_notification => + "$terms.Bugzilla can inform you when a new release is available." + _ " The notification will appear on the $terms.Bugzilla homepage," + _ " for administrators only." + _ " <ul><li>'development_snapshot' notifies you about the development " + _ " snapshot that has been released.</li>" + _ " <li>'latest_stable_release' notifies you about the most recent" + _ " release available on the most recent stable branch. This branch" + _ " may be different from the branch your installation is based on.</li>" + _ " <li>'stable_branch_release' notifies you only about new releases" + _ " corresponding to the branch your installation is based on." + _ " If you are running a release candidate, you will get a notification" + _ " for newer release candidates too.</li>" + _ " <li>'disabled' will never notify you about new releases and no" + _ " connection will be established to a remote server.</li></ul>" + _ " <p>Note that if your $terms.Bugzilla server requires a proxy to" + _ " access the Internet, you may also need to set the <tt>proxy_url</tt>" + _ " parameter in the Advanced section.</p>", +} %] diff --git a/template/en/default/admin/products/CVS/Entries b/template/en/default/admin/products/CVS/Entries index 7c4b3c0e0..35b49aa87 100644 --- a/template/en/default/admin/products/CVS/Entries +++ b/template/en/default/admin/products/CVS/Entries @@ -1,9 +1,9 @@ -/confirm-delete.html.tmpl/1.12/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.8/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_2 -/edit-common.html.tmpl/1.11/Wed Sep 30 22:34:31 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.14/Thu Aug 14 16:36:10 2008//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.13/Tue Nov 3 23:48:32 2009//TBUGZILLA-3_5_2 -/list-classifications.html.tmpl/1.4/Thu Sep 20 21:23:44 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.7/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_2 -/updated.html.tmpl/1.9/Wed May 20 23:10:13 2009//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.13/Mon Nov 23 22:46:48 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.9/Thu Dec 17 23:31:55 2009//TBUGZILLA-3_5_3 +/edit-common.html.tmpl/1.13/Thu Dec 17 23:31:55 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.15/Thu Dec 17 23:31:55 2009//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.13/Tue Nov 3 23:48:32 2009//TBUGZILLA-3_5_3 +/list-classifications.html.tmpl/1.4/Thu Sep 20 21:23:44 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.7/Wed May 20 23:10:12 2009//TBUGZILLA-3_5_3 +/updated.html.tmpl/1.11/Thu Dec 17 23:31:55 2009//TBUGZILLA-3_5_3 D/groupcontrol//// diff --git a/template/en/default/admin/products/CVS/Tag b/template/en/default/admin/products/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/products/CVS/Tag +++ b/template/en/default/admin/products/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/products/confirm-delete.html.tmpl b/template/en/default/admin/products/confirm-delete.html.tmpl index d350bdb90..f4a04b86f 100644 --- a/template/en/default/admin/products/confirm-delete.html.tmpl +++ b/template/en/default/admin/products/confirm-delete.html.tmpl @@ -248,6 +248,11 @@ <p>Do you really want to delete this product?</p> <form method="post" action="editproducts.cgi"> + <input type="checkbox" id="delete_series" name="delete_series" value=1> + <label for="delete_series"> + Delete all related series (you can also delete them later, by visiting + the <a href="chart.cgi?category=[% product.name FILTER html %]">New Charts page</a>.) + </label><p> <input type="submit" id="delete" value="Yes, delete"> <input type="hidden" name="action" value="delete"> <input type="hidden" name="product" value="[% product.name FILTER html %]"> diff --git a/template/en/default/admin/products/create.html.tmpl b/template/en/default/admin/products/create.html.tmpl index 664564040..f4a2161aa 100644 --- a/template/en/default/admin/products/create.html.tmpl +++ b/template/en/default/admin/products/create.html.tmpl @@ -25,15 +25,17 @@ [% PROCESS global/header.html.tmpl title = title style_urls = ['skins/standard/admin.css'] + javascript_urls = ['js/util.js'] %] [% DEFAULT product.votesperuser = "0", product.maxvotesperbug = "10000", - product.votestoconfirm = "0", + product.votes_to_confirm = "0", product.is_active = 1, version = "unspecified", product.defaultmilestone = constants.DEFAULT_MILESTONE + product.allows_unconfirmed = 0 %] <form method="post" action="editproducts.cgi"> diff --git a/template/en/default/admin/products/edit-common.html.tmpl b/template/en/default/admin/products/edit-common.html.tmpl index e7bcbbb7a..2c94402d6 100644 --- a/template/en/default/admin/products/edit-common.html.tmpl +++ b/template/en/default/admin/products/edit-common.html.tmpl @@ -44,12 +44,6 @@ </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> @@ -75,39 +69,44 @@ [% ' checked="checked"' IF product.is_active %]> </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 %]> +<tr> <th align="right"> - Confirmation threshold: + <label for="allows_unconfirmed">Enable the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status + in this product:</label> </th> - <td> - Enter the number of votes [% terms.abug %] in this product needs to - automatically get out of the - <a href="page.cgi?id=fields.html#status">[% display_value("bug_status", "UNCONFIRMED") FILTER html %]</a> - state.<br> - <input size="5" maxlength="5" name="votestoconfirm" - value="[% product.votestoconfirm FILTER html %]"> + <td><input type="checkbox" id="allows_unconfirmed" name="allows_unconfirmed" + [% ' checked="checked"' IF product.allows_unconfirmed %] + [% IF Param('usevotes') %] + onchange="bz_toggleClass('votes_to_confirm_container', + 'bz_default_hidden')" + [% END %]> + [% IF Param('usevotes') %] + <span id="votes_to_confirm_container" + [% ' class="bz_default_hidden"' IF !product.allows_unconfirmed %]> + ...and automatically confirm [% terms.bugs %] if they get + <input size="3" maxlength="5" name="votestoconfirm" id="votestoconfirm" + value="[% product.votes_to_confirm FILTER html %]"> + votes. (Setting this to 0 disables auto-confirming [% terms.bugs %] + by vote.) + </span> + [% END %] </td> </tr> + +[% IF Param('usevotes') %] + <tr> + <th align="right">Maximum votes per person:</th> + <td><input size="5" maxlength="5" name="votesperuser" id="votesperuser" + value="[% product.votesperuser FILTER html %]"> + </td> + </tr> + <tr> + <th align="right"> + Maximum votes a person can put on a single [% terms.bug %]: + </th> + <td><input size="5" maxlength="5" name="maxvotesperbug" id="maxvotesperbug" + value="[% product.maxvotesperbug FILTER html %]"> + </td> + </tr> +[% END %] diff --git a/template/en/default/admin/products/edit.html.tmpl b/template/en/default/admin/products/edit.html.tmpl index e6480c453..976739f78 100644 --- a/template/en/default/admin/products/edit.html.tmpl +++ b/template/en/default/admin/products/edit.html.tmpl @@ -29,6 +29,7 @@ [% PROCESS global/header.html.tmpl title = title style_urls = ['skins/standard/admin.css'] + javascript_urls = ['js/util.js'] %] [% group_control = {${constants.CONTROLMAPNA} => 'NA', diff --git a/template/en/default/admin/products/groupcontrol/CVS/Entries b/template/en/default/admin/products/groupcontrol/CVS/Entries index c8ae32c2f..39d38f077 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Entries +++ b/template/en/default/admin/products/groupcontrol/CVS/Entries @@ -1,4 +1,4 @@ -/confirm-edit.html.tmpl/1.9/Mon Aug 20 18:24:52 2007//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.12/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_2 -/updated.html.tmpl/1.4/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_2 +/confirm-edit.html.tmpl/1.9/Mon Aug 20 18:24:52 2007//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.12/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_3 +/updated.html.tmpl/1.4/Thu Aug 14 16:36:11 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/products/groupcontrol/CVS/Tag b/template/en/default/admin/products/groupcontrol/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/products/groupcontrol/CVS/Tag +++ b/template/en/default/admin/products/groupcontrol/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/products/updated.html.tmpl b/template/en/default/admin/products/updated.html.tmpl index f0e00f853..6e484ff34 100644 --- a/template/en/default/admin/products/updated.html.tmpl +++ b/template/en/default/admin/products/updated.html.tmpl @@ -39,6 +39,8 @@ style_urls = ['skins/standard/admin.css'] %] +[% PROCESS "global/field-descs.none.tmpl" %] + [% IF changes.name.defined %] <p> Updated product name from '[% changes.name.0 FILTER html %]' to @@ -67,23 +69,6 @@ </p> [% END %] -[% IF changes.milestoneurl.defined %] - <p> - Updated milestone URL - [% IF changes.milestoneurl.0 != '' %] - from<br> <a href="[%- changes.milestoneurl.0 FILTER html %]"> - [%- changes.milestoneurl.0 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> -[% END %] - [% IF changes.defaultmilestone.defined %] <p> Updated default milestone from '[% changes.defaultmilestone.0 FILTER html %]' to @@ -118,6 +103,24 @@ [% checkvotes = 1 %] [% END %] +[% IF changes.allows_unconfirmed.defined %] + <p> + [% IF product.allows_unconfirmed %] + The product now allows the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status. + [% ELSE %] + The product no longer allows the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status. + Note that any + <a href="buglist.cgi?product= + [%- product.name FILTER url_quote %]&bug_status=UNCONFIRMED"> + [%- terms.bugs %] that currently have the + [%+ display_value('bug_status', 'UNCONFIRMED') FILTER html %] status</a> + will remain in that status until they are edited. + [% END %] + </p> +[% END %] + [% IF !changes.keys.size %] <p>Nothing changed for product '[% product.name FILTER html %]'.</p> [% END %] diff --git a/template/en/default/admin/sanitycheck/CVS/Entries b/template/en/default/admin/sanitycheck/CVS/Entries index 6a90be1d0..faada710e 100644 --- a/template/en/default/admin/sanitycheck/CVS/Entries +++ b/template/en/default/admin/sanitycheck/CVS/Entries @@ -1,3 +1,3 @@ -/list.html.tmpl/1.2/Mon Aug 20 18:24:53 2007//TBUGZILLA-3_5_2 -/messages.html.tmpl/1.11/Mon Sep 21 22:10:18 2009//TBUGZILLA-3_5_2 +/list.html.tmpl/1.2/Mon Aug 20 18:24:53 2007//TBUGZILLA-3_5_3 +/messages.html.tmpl/1.11/Mon Sep 21 22:10:18 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/sanitycheck/CVS/Tag b/template/en/default/admin/sanitycheck/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/sanitycheck/CVS/Tag +++ b/template/en/default/admin/sanitycheck/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/settings/CVS/Entries b/template/en/default/admin/settings/CVS/Entries index 79b06f9f8..8e42b9729 100644 --- a/template/en/default/admin/settings/CVS/Entries +++ b/template/en/default/admin/settings/CVS/Entries @@ -1,2 +1,2 @@ -/edit.html.tmpl/1.9/Sun Jan 27 23:14:25 2008//TBUGZILLA-3_5_2 +/edit.html.tmpl/1.9/Sun Jan 27 23:14:25 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/settings/CVS/Tag b/template/en/default/admin/settings/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/settings/CVS/Tag +++ b/template/en/default/admin/settings/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/users/CVS/Entries b/template/en/default/admin/users/CVS/Entries index 746d56bfc..111f7e343 100644 --- a/template/en/default/admin/users/CVS/Entries +++ b/template/en/default/admin/users/CVS/Entries @@ -1,9 +1,9 @@ -/confirm-delete.html.tmpl/1.25/Fri Jan 23 22:22:12 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.5/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.15/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.7/Thu Jun 25 01:01:44 2009//TBUGZILLA-3_5_2 -/listselectvars.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 -/responsibilities.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 -/search.html.tmpl/1.6/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_2 -/userdata.html.tmpl/1.13/Fri Aug 8 01:26:58 2008//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.25/Fri Jan 23 22:22:12 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.5/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.15/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.7/Thu Jun 25 01:01:44 2009//TBUGZILLA-3_5_3 +/listselectvars.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_3 +/responsibilities.html.tmpl/1.2/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_3 +/search.html.tmpl/1.6/Mon Oct 22 21:42:01 2007//TBUGZILLA-3_5_3 +/userdata.html.tmpl/1.13/Fri Aug 8 01:26:58 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/users/CVS/Tag b/template/en/default/admin/users/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/users/CVS/Tag +++ b/template/en/default/admin/users/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/versions/CVS/Entries b/template/en/default/admin/versions/CVS/Entries index dd94d4bc5..3037ba1f7 100644 --- a/template/en/default/admin/versions/CVS/Entries +++ b/template/en/default/admin/versions/CVS/Entries @@ -1,7 +1,7 @@ -/confirm-delete.html.tmpl/1.8/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 -/create.html.tmpl/1.7/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.7/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 -/list.html.tmpl/1.5/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 -/select-product.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_2 +/confirm-delete.html.tmpl/1.8/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_3 +/create.html.tmpl/1.7/Mon Aug 20 18:24:54 2007//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.7/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_3 +/list.html.tmpl/1.5/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_3 +/select-product.html.tmpl/1.4/Mon Aug 20 18:24:55 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/versions/CVS/Tag b/template/en/default/admin/versions/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/versions/CVS/Tag +++ b/template/en/default/admin/versions/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/admin/workflow/CVS/Entries b/template/en/default/admin/workflow/CVS/Entries index a1aca188c..a9bbbefc5 100644 --- a/template/en/default/admin/workflow/CVS/Entries +++ b/template/en/default/admin/workflow/CVS/Entries @@ -1,3 +1,3 @@ -/comment.html.tmpl/1.5/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.8/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 +/comment.html.tmpl/1.5/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.8/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/admin/workflow/CVS/Tag b/template/en/default/admin/workflow/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/admin/workflow/CVS/Tag +++ b/template/en/default/admin/workflow/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/attachment/CVS/Entries b/template/en/default/attachment/CVS/Entries index 00e8117b0..39f5f3208 100644 --- a/template/en/default/attachment/CVS/Entries +++ b/template/en/default/attachment/CVS/Entries @@ -1,17 +1,17 @@ -/cancel-create-dupe.html.tmpl/1.2/Fri Jun 27 19:56:25 2008//TBUGZILLA-3_5_2 -/choose.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 -/confirm-delete.html.tmpl/1.7/Mon Mar 9 22:10:17 2009//TBUGZILLA-3_5_2 -/content-types.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 -/create.html.tmpl/1.44/Tue Nov 10 16:00:24 2009//TBUGZILLA-3_5_2 -/created.html.tmpl/1.24/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 -/createformcontents.html.tmpl/1.4/Fri May 29 00:59:42 2009//TBUGZILLA-3_5_2 -/delete_reason.txt.tmpl/1.3/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 -/diff-file.html.tmpl/1.8/Thu Jul 9 15:46:56 2009//TBUGZILLA-3_5_2 -/diff-footer.html.tmpl/1.4/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_2 -/diff-header.html.tmpl/1.23/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.63/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_2 -/list.html.tmpl/1.43/Mon Nov 16 16:33:12 2009//TBUGZILLA-3_5_2 -/midair.html.tmpl/1.2/Fri Feb 8 23:19:10 2008//TBUGZILLA-3_5_2 -/show-multiple.html.tmpl/1.27/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_2 -/updated.html.tmpl/1.22/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 +/cancel-create-dupe.html.tmpl/1.2/Fri Jun 27 19:56:25 2008//TBUGZILLA-3_5_3 +/choose.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_3 +/confirm-delete.html.tmpl/1.7/Mon Mar 9 22:10:17 2009//TBUGZILLA-3_5_3 +/content-types.html.tmpl/1.6/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_3 +/create.html.tmpl/1.46/Thu Dec 17 23:31:56 2009//TBUGZILLA-3_5_3 +/created.html.tmpl/1.25/Mon Dec 7 19:11:58 2009//TBUGZILLA-3_5_3 +/createformcontents.html.tmpl/1.4/Fri May 29 00:59:42 2009//TBUGZILLA-3_5_3 +/delete_reason.txt.tmpl/1.3/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_3 +/diff-file.html.tmpl/1.8/Thu Jul 9 15:46:56 2009//TBUGZILLA-3_5_3 +/diff-footer.html.tmpl/1.4/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_3 +/diff-header.html.tmpl/1.23/Sun Sep 27 16:19:02 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.64/Fri Dec 4 14:43:16 2009//TBUGZILLA-3_5_3 +/list.html.tmpl/1.43/Mon Nov 16 16:33:12 2009//TBUGZILLA-3_5_3 +/midair.html.tmpl/1.2/Fri Feb 8 23:19:10 2008//TBUGZILLA-3_5_3 +/show-multiple.html.tmpl/1.27/Fri Oct 23 21:32:07 2009//TBUGZILLA-3_5_3 +/updated.html.tmpl/1.23/Mon Dec 7 19:11:58 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/attachment/CVS/Tag b/template/en/default/attachment/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/attachment/CVS/Tag +++ b/template/en/default/attachment/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/attachment/create.html.tmpl b/template/en/default/attachment/create.html.tmpl index a6eb03824..f00a0ade4 100644 --- a/template/en/default/attachment/create.html.tmpl +++ b/template/en/default/attachment/create.html.tmpl @@ -77,7 +77,8 @@ <label for="takebug">take [% terms.bug %]</label> [% bug_statuses = [] %] [% FOREACH bug_status = bug.status.can_change_to %] - [% NEXT IF bug_status.name == "UNCONFIRMED" && !bug.product_obj.votes_to_confirm %] + [% NEXT IF bug_status.name == "UNCONFIRMED" + && !bug.product_obj.allows_unconfirmed %] [% bug_statuses.push(bug_status) IF bug_status.is_open %] [% END %] [% IF bug_statuses.size %] @@ -129,4 +130,6 @@ </form> +[% Hook.process('end') %] + [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/attachment/created.html.tmpl b/template/en/default/attachment/created.html.tmpl index 4a977667c..da2fec823 100644 --- a/template/en/default/attachment/created.html.tmpl +++ b/template/en/default/attachment/created.html.tmpl @@ -26,23 +26,9 @@ [% PROCESS global/variables.none.tmpl %] [% bug = bugs.0 %] -[% bodyclasses = ['bz_bug', - "bz_status_$bug.bug_status", - "bz_product_$bug.product", - "bz_component_$bug.component", - "bz_bug_$bug.bug_id" - ] -%] -[% FOREACH group = bug.groups_in %] - [% bodyclasses.push("bz_group_$group.name") %] -[% END %] - +[% PROCESS "bug/show-header.html.tmpl" %] [% PROCESS global/header.html.tmpl title = "Attachment $attachment.id added to $terms.Bug $attachment.bug_id" - bodyclasses = bodyclasses - javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] - style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ] - doc_section = "bug_page.html" %] <dl> diff --git a/template/en/default/attachment/edit.html.tmpl b/template/en/default/attachment/edit.html.tmpl index 823131d64..d9769cfa3 100644 --- a/template/en/default/attachment/edit.html.tmpl +++ b/template/en/default/attachment/edit.html.tmpl @@ -283,4 +283,6 @@ [% END %] </div> +[% Hook.process('end') %] + [% PROCESS global/footer.html.tmpl %] diff --git a/template/en/default/attachment/updated.html.tmpl b/template/en/default/attachment/updated.html.tmpl index b75dc7242..9a74f5c98 100644 --- a/template/en/default/attachment/updated.html.tmpl +++ b/template/en/default/attachment/updated.html.tmpl @@ -25,28 +25,10 @@ [% PROCESS global/variables.none.tmpl %] [% bug = bugs.0 %] -[% filtered_desc = bug.short_desc FILTER html %] -[% filtered_timestamp = bug.delta_ts FILTER time %] -[% bodyclasses = ['bz_bug', - "bz_status_$bug.bug_status", - "bz_product_$bug.product", - "bz_component_$bug.component", - "bz_bug_$bug.bug_id" - ] -%] -[% FOREACH group = bug.groups_in %] - [% bodyclasses.push("bz_group_$group.name") %] -[% END %] +[% PROCESS "bug/show-header.html.tmpl" %] [% PROCESS global/header.html.tmpl title = "Changes Submitted to Attachment $attachment.id of $terms.Bug $attachment.bug_id" - header = "$terms.Bug $attachment.bug_id" - subheader = filtered_desc - header_addl_info = "Last modified: $filtered_timestamp" - bodyclasses = bodyclasses - javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] - style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ] - doc_section = "bug_page.html" %] <dl> diff --git a/template/en/default/bug/CVS/Entries b/template/en/default/bug/CVS/Entries index 6d9d823cf..0ee52295c 100644 --- a/template/en/default/bug/CVS/Entries +++ b/template/en/default/bug/CVS/Entries @@ -1,18 +1,19 @@ -/choose.html.tmpl/1.8/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 -/comments.html.tmpl/1.45/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 -/dependency-graph.html.tmpl/1.14/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_2 -/dependency-tree.html.tmpl/1.32/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_2 -/edit.html.tmpl/1.170/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 -/field-events.js.tmpl/1.2/Sun Jun 21 19:33:48 2009//TBUGZILLA-3_5_2 -/field.html.tmpl/1.33/Mon Nov 9 19:12:53 2009//TBUGZILLA-3_5_2 -/format_comment.txt.tmpl/1.5/Tue Nov 10 01:36:05 2009//TBUGZILLA-3_5_2 -/knob.html.tmpl/1.44/Tue Oct 6 05:38:30 2009//TBUGZILLA-3_5_2 -/navigate.html.tmpl/1.13/Wed Aug 12 01:46:01 2009//TBUGZILLA-3_5_2 -/show-multiple.html.tmpl/1.48/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 -/show.html.tmpl/1.28/Mon Oct 19 02:09:39 2009//TBUGZILLA-3_5_2 -/show.xml.tmpl/1.36/Tue Nov 10 16:31:49 2009//TBUGZILLA-3_5_2 -/summarize-time.html.tmpl/1.16/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_2 -/time.html.tmpl/1.3/Mon Aug 20 18:24:58 2007//TBUGZILLA-3_5_2 +/choose.html.tmpl/1.8/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_3 +/comments.html.tmpl/1.46/Sun Dec 13 22:47:34 2009//TBUGZILLA-3_5_3 +/dependency-graph.html.tmpl/1.14/Mon Aug 20 18:24:57 2007//TBUGZILLA-3_5_3 +/dependency-tree.html.tmpl/1.32/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_3 +/edit.html.tmpl/1.174/Thu Dec 31 00:17:29 2009//TBUGZILLA-3_5_3 +/field-events.js.tmpl/1.2/Sun Jun 21 19:33:48 2009//TBUGZILLA-3_5_3 +/field.html.tmpl/1.33/Mon Nov 9 19:12:53 2009//TBUGZILLA-3_5_3 +/format_comment.txt.tmpl/1.7/Sun Dec 13 20:56:45 2009//TBUGZILLA-3_5_3 +/knob.html.tmpl/1.45/Sat Dec 12 21:55:15 2009//TBUGZILLA-3_5_3 +/navigate.html.tmpl/1.13/Wed Aug 12 01:46:01 2009//TBUGZILLA-3_5_3 +/show-header.html.tmpl/1.1/Mon Dec 7 19:11:59 2009//TBUGZILLA-3_5_3 +/show-multiple.html.tmpl/1.48/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_3 +/show.html.tmpl/1.29/Mon Dec 7 19:11:59 2009//TBUGZILLA-3_5_3 +/show.xml.tmpl/1.37/Fri Dec 4 14:28:49 2009//TBUGZILLA-3_5_3 +/summarize-time.html.tmpl/1.16/Wed Sep 30 22:35:27 2009//TBUGZILLA-3_5_3 +/time.html.tmpl/1.3/Mon Aug 20 18:24:58 2007//TBUGZILLA-3_5_3 D/activity//// D/create//// D/process//// diff --git a/template/en/default/bug/CVS/Tag b/template/en/default/bug/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/bug/CVS/Tag +++ b/template/en/default/bug/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/bug/activity/CVS/Entries b/template/en/default/bug/activity/CVS/Entries index 78682b096..0cb966f6d 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.11/Thu Aug 6 15:02:57 2009//TBUGZILLA-3_5_2 -/table.html.tmpl/1.20/Wed Nov 18 07:04:58 2009//TBUGZILLA-3_5_2 +/show.html.tmpl/1.11/Thu Aug 6 15:02:57 2009//TBUGZILLA-3_5_3 +/table.html.tmpl/1.21/Mon Dec 28 18:02:39 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/bug/activity/CVS/Tag b/template/en/default/bug/activity/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/bug/activity/CVS/Tag +++ b/template/en/default/bug/activity/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/bug/activity/table.html.tmpl b/template/en/default/bug/activity/table.html.tmpl index ae9dbcb80..ee276aa20 100644 --- a/template/en/default/bug/activity/table.html.tmpl +++ b/template/en/default/bug/activity/table.html.tmpl @@ -110,4 +110,8 @@ </tr> [% END %] </table> +[% ELSE %] + <p> + No changes have been made to this [% terms.bug %] yet. + </p> [% END %] diff --git a/template/en/default/bug/comments.html.tmpl b/template/en/default/bug/comments.html.tmpl index 9a04b7147..41b91d79a 100644 --- a/template/en/default/bug/comments.html.tmpl +++ b/template/en/default/bug/comments.html.tmpl @@ -120,11 +120,10 @@ [% END %] [% END %] -[% IF mode == "edit" %] - <a href="#" onclick="toggle_all_comments('collapse'); return false;">Collapse All Comments</a> - - <a href="#" onclick="toggle_all_comments('expand'); return false;">Expand All Comments</a> - <hr> -[% END %] +<!-- This auto-sizes the comments and positions the collapse/expand links + to the right. --> +<table class="bz_comment_table" cellpadding="0" cellspacing="0"><tr> +<td> [% FOREACH comment = comments %] [% IF count >= start_at %] @@ -139,6 +138,19 @@ #%] [% Hook.process("aftercomments") %] +</td> +<td> + [% IF mode == "edit" %] + <ul class="bz_collapse_expand_comments"> + <li><a href="#" onclick="toggle_all_comments('collapse'); + return false;">Collapse All Comments</a></li> + <li><a href="#" onclick="toggle_all_comments('expand'); + return false;">Expand All Comments</a></li> + </ul> + [% END %] +</td> +</tr></table> + [%############################################################################%] [%# Block for individual comments #%] [%############################################################################%] diff --git a/template/en/default/bug/create/CVS/Entries b/template/en/default/bug/create/CVS/Entries index 471e9e5bc..c8c967e5a 100644 --- a/template/en/default/bug/create/CVS/Entries +++ b/template/en/default/bug/create/CVS/Entries @@ -1,9 +1,9 @@ -/comment-guided.txt.tmpl/1.7/Thu Jan 1 23:11:59 2009//TBUGZILLA-3_5_2 -/comment.txt.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 -/confirm-create-dupe.html.tmpl/1.4/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 -/create-guided.html.tmpl/1.45/Sun Feb 8 14:21:26 2009//TBUGZILLA-3_5_2 -/create.html.tmpl/1.100/Wed Nov 18 07:06:47 2009//TBUGZILLA-3_5_2 -/created.html.tmpl/1.17/Wed Aug 12 01:43:01 2009//TBUGZILLA-3_5_2 -/make-template.html.tmpl/1.10/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 -/user-message.html.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_2 +/comment-guided.txt.tmpl/1.7/Thu Jan 1 23:11:59 2009//TBUGZILLA-3_5_3 +/comment.txt.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_3 +/confirm-create-dupe.html.tmpl/1.4/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_3 +/create-guided.html.tmpl/1.45/Sun Feb 8 14:21:26 2009//TBUGZILLA-3_5_3 +/create.html.tmpl/1.103/Thu Dec 31 12:31:39 2009//TBUGZILLA-3_5_3 +/created.html.tmpl/1.18/Mon Dec 7 19:12:00 2009//TBUGZILLA-3_5_3 +/make-template.html.tmpl/1.10/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_3 +/user-message.html.tmpl/1.5/Mon Aug 20 18:25:00 2007//TBUGZILLA-3_5_3 D diff --git a/template/en/default/bug/create/CVS/Tag b/template/en/default/bug/create/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/bug/create/CVS/Tag +++ b/template/en/default/bug/create/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl index 21f7959a2..4b1745757 100644 --- a/template/en/default/bug/create/create.html.tmpl +++ b/template/en/default/bug/create/create.html.tmpl @@ -188,21 +188,25 @@ TUI_hide_default('expert_fields'); [%# Migration note: The following file corresponds to the old Param # 'entryheaderhtml' #%] - [% INCLUDE 'bug/create/user-message.html.tmpl' %] + [% PROCESS 'bug/create/user-message.html.tmpl' %] </td> </tr> <tr> - <td colspan="4"> - <a id="expert_fields_controller" class="controller bz_default_hidden" - href="javascript:TUI_toggle_class('expert_fields')">Hide + <td colspan="2"> + <a id="expert_fields_controller" class="controller bz_default_hidden" + href="javascript:TUI_toggle_class('expert_fields')">Hide Advanced Fields</a> [%# Show the link if the browser supports JS %] <script type="text/javascript"> - YAHOO.util.Dom.removeClass('expert_fields_controller', - 'bz_default_hidden'); + YAHOO.util.Dom.removeClass('expert_fields_controller', + 'bz_default_hidden'); </script> </td> + <td colspan="2"> + (<span class="required_star">*</span> = + <span class="required_explanation">Required Field</span>) + </td> </tr> <tr> @@ -215,12 +219,13 @@ TUI_hide_default('expert_fields'); [%# We can't use the select block in these two cases for various reasons. %] <tr> - <th> + <th class="required"> <a href="describecomponents.cgi?product=[% product.name FILTER url_quote %]"> Component</a>: </th> <td> - <select name="component" onchange="set_assign_to();" size="7"> + <select name="component" onchange="set_assign_to();" size="7" + aria-required="true" class="required"> [%# Build the lists of assignees and QA contacts if "usemenuforusers" is enabled. %] [% IF Param("usemenuforusers") %] [% assignees_list = user.get_userlist.clone %] @@ -431,7 +436,7 @@ TUI_hide_default('expert_fields'); <tr> <th>Estimated Hours:</th> <td colspan="2"> - <input name="estimated_time" size="6" maxlength="6" value="0.0"> + <input name="estimated_time" size="6" maxlength="6" value="[% estimated_time FILTER html %]"> </td> </tr> <tr> @@ -451,7 +456,7 @@ TUI_hide_default('expert_fields'); <tr> <th>Alias:</th> <td colspan="2"> - <input name="alias" size="20"> + <input name="alias" size="20" value="[% alias FILTER html %]"> </td> </tr> [% END %] @@ -482,10 +487,11 @@ TUI_hide_default('expert_fields'); <tbody> <tr> - <th>Summary:</th> + <th class="required">Summary:</th> <td colspan="3"> <input name="short_desc" size="70" value="[% short_desc FILTER html %]" - maxlength="255" spellcheck="true"> + maxlength="255" spellcheck="true" aria-required="true" + class="required"> </td> </tr> diff --git a/template/en/default/bug/create/created.html.tmpl b/template/en/default/bug/create/created.html.tmpl index dd1be1c17..3dfb3534a 100644 --- a/template/en/default/bug/create/created.html.tmpl +++ b/template/en/default/bug/create/created.html.tmpl @@ -32,15 +32,10 @@ [% PROCESS global/variables.none.tmpl %] -[% filtered_desc = bug.short_desc FILTER html %] +[% PROCESS "bug/show-header.html.tmpl" %] [% PROCESS global/header.html.tmpl title = "$terms.Bug $id Submitted – $filtered_desc" header = "$terms.Bug $id Submitted" - subheader = filtered_desc - javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] - style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ] - - %] [% header_done = 1 %] diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl index 813e80cb2..379370689 100644 --- a/template/en/default/bug/edit.html.tmpl +++ b/template/en/default/bug/edit.html.tmpl @@ -48,7 +48,7 @@ */ [% IF user.settings.quote_replies.value != 'off' %] document.write('[<a href="#add_comment" onclick="replyToComment(' + - id + ',' + real_id + ');">reply<' + '/a>]'); + id + ',' + real_id + '); return false;">reply<' + '/a>]'); [% END %] } @@ -211,90 +211,36 @@ </tr> </table> - - [% PROCESS section_restrict_visibility %] - [% IF user.is_timetracker %] - <br> - [% PROCESS section_timetracking %] - [% END %] - - -[%# *** Attachments *** %] + <table id="bz_big_form_parts" cellspacing="0" cellpadding="0"><tr> + <td> + [% IF user.is_timetracker %] + [% PROCESS section_timetracking %] + [% END %] - [% PROCESS attachment/list.html.tmpl - attachments = bug.attachments - bugid = bug.bug_id - num_attachment_flag_types = bug.num_attachment_flag_types - show_attachment_flags = bug.show_attachment_flags - %] + [%# *** Attachments *** %] + [% PROCESS attachment/list.html.tmpl + attachments = bug.attachments + bugid = bug.bug_id + num_attachment_flag_types = bug.num_attachment_flag_types + show_attachment_flags = bug.show_attachment_flags + %] -[%# *** Comments Groups *** %] + [% PROCESS comment_box %] + </td> + <td> + [% PROCESS section_restrict_visibility %] + </td> + </tr></table> + + [%# *** Additional Comments *** %] + <div id="comments"> + [% PROCESS bug/comments.html.tmpl + comments = bug.comments + mode = user.id ? "edit" : "show" + %] + </div> - <br> - <table cellpadding="1" cellspacing="1"> - <tr> - <td id="comment_status_commit"> - <!-- The table keeps the commit button aligned with the box. --> - <a name="add_comment"></a> - [% IF user.id %] - <label for="comment" accesskey="c"><b>Additional <u>C</u>omments</b></label>: - [% IF user.is_insider %] - <input type="checkbox" name="commentprivacy" value="1" - id="newcommentprivacy" - onClick="updateCommentTagControl(this, form)"> - <label for="newcommentprivacy"> - Make comment private (visible only to members of the - <strong>[% Param('insidergroup') FILTER html %]</strong> - group) - </label> - [% END %] - <table><tr><td> - [% INCLUDE global/textarea.html.tmpl - name = 'comment' - id = 'comment' - minrows = 10 - maxrows = 25 - cols = constants.COMMENT_COLS - %] - [% Hook.process("after_comment_textarea") %] - <br> - [% PROCESS commit_button id=""%] - <table class="status" cellspacing="0" cellpadding="0"> - <tr> - <td class="field_label"> - <b><a href="page.cgi?id=fields.html#status">Status</a></b>: - </td> - <td> - <a name="bug_status_bottom"></a> - [% PROCESS bug/knob.html.tmpl %] - </td> - </tr> - </table> - </td></tr></table> - [% ELSE %] - <fieldset> - <legend>Note</legend> - <p> - You need to - <a href="show_bug.cgi?id= - [%- bug.bug_id %]&GoAheadAndLogIn=1">log in</a> - before you can comment on or make changes to this [% terms.bug %]. - </p> - </fieldset> - [% END %] - [%# *** Additional Comments *** %] - <hr> - <div id="comments"> - [% PROCESS bug/comments.html.tmpl - comments = bug.comments - mode = user.id ? "edit" : "show" - %] - </div> - - </td> - </tr> - </table> </form> [%############################################################################%] @@ -499,13 +445,10 @@ [% IF Param("usetargetmilestone") && bug.target_milestone %] <tr> - <td class="field_label"> - <label for="target_milestone"><b> - [% IF bug.milestoneurl %] - <a href="[% bug.milestoneurl FILTER html %]"> - [% END %] - Target Milestone[% "</a>" IF bug.milestoneurl %] - [%%]</b></label>: + <th class="field_label"> + <label for="target_milestone"> + <a href="page.cgi?id=fields.html#target_milestone"> + Target Milestone</a></label>: </td> [% PROCESS select selname = "target_milestone" %] </tr> @@ -706,103 +649,92 @@ [% BLOCK section_restrict_visibility %] [% RETURN UNLESS bug.groups.size %] - [% inallgroups = 1 %] - [% inagroup = 0 %] - [% emitted_description = 0 %] - - [% FOREACH group = bug.groups %] - [% SET inallgroups = 0 IF NOT group.ingroup %] - [% SET inagroup = 1 IF group.ison %] - - [% NEXT IF group.mandatory %] - - [% IF NOT emitted_description %] - [% emitted_description = 1 %] - <table class="bz_group_visibility_section"> - <tr> - <td class="field_label"> - <label id="bz_restrict_group_visibility_label"><b>Restrict Group Visibility</b>:</label> - </td> - <td> - <div id="bz_restrict_group_visibility_help"> - <b>Only users in all of the selected groups can view this [% terms.bug %]:</b> - <br> - <small> - (Unchecking all boxes makes this a more public [% terms.bug %].) - </small> - </div> - [% END %] + <div class="bz_group_visibility_section"> + [% inallgroups = 1 %] + [% inagroup = 0 %] + [% emitted_description = 0 %] + + [% FOREACH group = bug.groups %] + [% SET inallgroups = 0 IF NOT group.ingroup %] + [% SET inagroup = 1 IF group.ison %] + + [% NEXT IF group.mandatory %] + + [% IF NOT emitted_description %] + [% emitted_description = 1 %] + <div id="bz_restrict_group_visibility_help"> + <b>Only users in all of the selected groups can view this + [%+ terms.bug %]:</b> + <p class="instructions"> + Unchecking all boxes makes this a more public [% terms.bug %]. + </p> + </div> + [% END %] - [% IF group.ingroup %] - <input type="hidden" name="defined_bit-[% group.bit %]" value="1"> - [% END %] - <input type="checkbox" value="1" name="bit-[% group.bit %]" id="bit-[% group.bit %]" - [% ' checked="checked"' IF group.ison %] - [% ' disabled="disabled"' IF NOT group.ingroup %]> - <label for="bit-[% group.bit %]">[% group.description FILTER html_light %]</label> - <br> - [% END %] + [% IF group.ingroup %] + <input type="hidden" name="defined_bit-[% group.bit %]" value="1"> + [% END %] - [% IF emitted_description %] - [% IF NOT inallgroups %] - <b>Only members of a group can change the visibility of [% terms.abug %] for that group.</b> + <input type="checkbox" value="1" name="bit-[% group.bit %]" + id="bit-[% group.bit %]" + [% ' checked="checked"' IF group.ison %] + [% ' disabled="disabled"' IF NOT group.ingroup %]> + <label for="bit-[% group.bit %]"> + [%- group.description FILTER html_light %]</label> <br> [% END %] - </td> - </tr> - [% "</table>" IF NOT inagroup %] - [% END %] - [% IF inagroup %] - [% IF NOT emitted_description %] - [% emitted_description = 1 %] - <table class="bz_group_visibility_section"> + [% IF emitted_description %] + [% IF NOT inallgroups %] + <p class="instructions">Only members of a group can change the + visibility of [% terms.abug %] for that group.</p> + [% END %] [% END %] - <tr> - <td class="field_label"> - <label id="bz_enable_role_visibility_label"><b>Enable Role Visibility</b>:</label> - </td> - <td> - <div id="bz_enable_role_visibility_help"> - <b>Users in the roles selected below can always view this [% terms.bug %]:</b> - <br> - <small> - (The assignee - [% IF (Param('useqacontact')) %] - and QA contact - [% END %] - can always see [% terms.abug %], and this section does not take effect unless - the [% terms.bug %] is restricted to at least one group.) - </small> + + [% IF inagroup %] + <div id="bz_enable_role_visibility_help"> + <b>Users in the roles selected below can always view + this [% terms.bug %]:</b> + </div> + <div id="bz_enable_role_visibility"> + <div> + [% user_can_edit_accessible = + bug.check_can_change_field("reporter_accessible", 0, 1) + %] + [% IF user_can_edit_accessible %] + <input type="hidden" name="defined_reporter_accessible" value="1"> + [% END %] + <input type="checkbox" value="1" + name="reporter_accessible" id="reporter_accessible" + [% " checked" IF bug.reporter_accessible %] + [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> + <label for="reporter_accessible">Reporter</label> </div> <div> - <div> - [% user_can_edit_accessible = bug.check_can_change_field("reporter_accessible", 0, 1) %] - [% IF user_can_edit_accessible %] - <input type="hidden" name="defined_reporter_accessible" value="1"> - [% END %] - <input type="checkbox" value="1" - name="reporter_accessible" id="reporter_accessible" - [% " checked" IF bug.reporter_accessible %] - [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> - <label for="reporter_accessible">Reporter</label> - </div> - <div> - [% user_can_edit_accessible = bug.check_can_change_field("cclist_accessible", 0, 1) %] - [% IF user_can_edit_accessible %] - <input type="hidden" name="defined_cclist_accessible" value="1"> - [% END %] - <input type="checkbox" value="1" - name="cclist_accessible" id="cclist_accessible" - [% " checked" IF bug.cclist_accessible %] - [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> - <label for="cclist_accessible">CC List</label> - </div> + [% user_can_edit_accessible = + bug.check_can_change_field("cclist_accessible", 0, 1) + %] + [% IF user_can_edit_accessible %] + <input type="hidden" name="defined_cclist_accessible" value="1"> + [% END %] + <input type="checkbox" value="1" + name="cclist_accessible" id="cclist_accessible" + [% " checked" IF bug.cclist_accessible %] + [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> + <label for="cclist_accessible">CC List</label> </div> - </td> - </tr> - </table> - [% END %] + <p class="instructions"> + The assignee + [% IF (Param('useqacontact')) %] + and QA contact + [% END %] + can always see [% terms.abug %], and this section does not + take effect unless the [% terms.bug %] is restricted to at + least one group. + </p> + </div> + [% END %] + </div> [%# bz_group_visibility_section %] [% END %] [%############################################################################%] @@ -1101,6 +1033,66 @@ </table> [% END %] +[%############################################################################%] +[%# Block for the Additional Comments box #%] +[%############################################################################%] + +[% BLOCK comment_box %] + <div class="bz_section_additional_comments"> + <a name="add_comment"></a> + [% IF user.id %] + <label for="comment" accesskey="c"><b>Additional + <u>C</u>omments</b></label>: + + [% IF user.is_insider %] + <input type="checkbox" name="commentprivacy" value="1" + id="newcommentprivacy" + onClick="updateCommentTagControl(this, form)"> + <label for="newcommentprivacy"> + Make comment private (visible only to members of the + <strong>[% Param('insidergroup') FILTER html %]</strong> group) + </label> + [% END %] + + <!-- This table keeps the submit button aligned with the box. --> + <table><tr><td> + [% INCLUDE global/textarea.html.tmpl + name = 'comment' + id = 'comment' + minrows = 10 + maxrows = 25 + cols = constants.COMMENT_COLS + %] + [% Hook.process("after_comment_textarea", 'bug/edit.html.tmpl') %] + <br> + [% PROCESS commit_button id=""%] + + <table class="status" cellspacing="0" cellpadding="0"> + <tr> + <td class="field_label"> + <b><a href="page.cgi?id=fields.html#status">Status</a></b>: + </td> + <td> + <a name="bug_status_bottom"></a> + [% PROCESS bug/knob.html.tmpl %] + </td> + </tr> + </table> + </td></tr></table> + + [%# For logged-out users %] + [% ELSE %] + <table><tr><td><fieldset> + <legend>Note</legend> + You need to + <a href="show_bug.cgi?id= + [%- bug.bug_id %]&GoAheadAndLogIn=1">log in</a> + before you can comment on or make changes to this [% terms.bug %]. + </fieldset></table><tr></td> + [% END %] + </div> +[% END %] + [%############################################################################%] [%# Block for SELECT fields #%] [%############################################################################%] diff --git a/template/en/default/bug/format_comment.txt.tmpl b/template/en/default/bug/format_comment.txt.tmpl index 8e97d4d08..27b72a918 100644 --- a/template/en/default/bug/format_comment.txt.tmpl +++ b/template/en/default/bug/format_comment.txt.tmpl @@ -32,11 +32,6 @@ [% PROCESS 'global/variables.none.tmpl' %] [% SET comment_body = comment.body %] -[% IF is_bugmail %] - [% comment_body = comment_body.replace( '(Created an attachment \(id=([0-9]+)\))', - '$1' _ "\n" _ ' --> (' _ urlbase - _ 'attachment.cgi?id=$2)' ) %] -[% END %] [% IF comment.type == constants.CMT_DUPE_OF %] X[% comment_body %] @@ -54,6 +49,22 @@ If the move succeeded, [% comment.extra_data %] will receive a mail containing the number of the new [% terms.bug %] in the other database. If all went well, please paste in a link to the new [% terms.bug %]. Otherwise, reopen this [% terms.bug %]. +[% ELSIF comment.type == constants.CMT_ATTACHMENT_CREATED %] +Created attachment [% comment.extra_data %] +[% IF is_bugmail %] + --> [% urlbase _ "attachment.cgi?id=" _ comment.extra_data %] +[% END %] +[%+ comment.attachment.description %] + +[%+ comment.body %] +[% ELSIF comment.type == constants.CMT_ATTACHMENT_UPDATED %] +Comment on attachment [% comment.extra_data %] +[% IF is_bugmail %] + --> [% urlbase _ "attachment.cgi?id=" _ comment.extra_data %] +[% END %] +[%+ comment.attachment.description %] + +[%+ comment.body %] [% ELSE %] X[% comment_body %] [% END %] diff --git a/template/en/default/bug/knob.html.tmpl b/template/en/default/bug/knob.html.tmpl index 10d58e51b..ac14e6dc0 100644 --- a/template/en/default/bug/knob.html.tmpl +++ b/template/en/default/bug/knob.html.tmpl @@ -23,71 +23,33 @@ [% PROCESS global/variables.none.tmpl %] <div id="status"> - [% initial_action_shown = 0 %] - [% show_resolution = 0 %] - [% bug_status_select_displayed = 0 %] + [% PROCESS bug/field.html.tmpl + no_tds = 1 + field = bug_fields.bug_status + value = bug.bug_status + override_legal_values = bug.choices.bug_status + editable = bug.choices.bug_status.size > 1 + %] - [% closed_status_array = [] %] - [%# These actions are based on the current custom workflow. %] - [% FOREACH bug_status = bug.status.can_change_to %] - [% NEXT IF bug.isunconfirmed && bug_status.is_open && !bug.user.canconfirm %] - [% NEXT IF bug.isopened && !bug.isunconfirmed && bug_status.is_open && !bug.user.canedit %] - [% NEXT IF (!bug_status.is_open || !bug.isopened) && !bug.user.canedit && !bug.user.isreporter %] - [%# Special hack to only display UNCO or REOP when reopening, but not both; - # for compatibility with older versions. %] - [% NEXT IF !bug.isopened && (bug.everconfirmed && bug_status.name == "UNCONFIRMED" - || !bug.everconfirmed && bug_status.name == "REOPENED") %] - [% IF NOT bug_status_select_displayed %] - <select name="bug_status" id="bug_status"> - [% bug_status_select_displayed = 1 %] - [% END %] - [% PROCESS initial_action %] - [% NEXT IF bug_status.name == bug.bug_status %] - <option value="[% bug_status.name FILTER html %]"> - [% display_value("bug_status", bug_status.name) FILTER html %] - </option> - [% IF !bug_status.is_open %] - [% show_resolution = 1 %] - [% filtered_status = bug_status.name FILTER js %] - [% closed_status_array.push( filtered_status ) %] - [% END %] + [% IF bug.resolution + OR bug.check_can_change_field('resolution', bug.resolution, 1) + %] + <noscript><br>resolved as </noscript> [% END %] - [%# These actions are special and are independent of the workflow. %] - [% IF bug.user.canedit || bug.user.isreporter %] - [% IF NOT bug_status_select_displayed %] - <select name="bug_status" id="bug_status"> - [% bug_status_select_displayed = 1 %] - [% END %] - [% IF bug.isopened %] - [% IF bug.resolution %] - [% PROCESS initial_action %] - [% END %] - [% ELSIF bug.resolution != "MOVED" || bug.user.canmove %] - [% PROCESS initial_action %] - [% show_resolution = 1 %] - [% END %] - [% END %] - [% IF bug_status_select_displayed %] - </select> - [% ELSE %] - [% display_value("bug_status", bug.bug_status) FILTER html %] - [% IF bug.resolution %] - [%+ display_value("resolution", bug.resolution) FILTER html %] - [% IF bug.dup_id %] - <span id="duplicate_display">of - [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %]</span> - [% END %] - [% END %] - [% END %] - [% IF bug.user.canedit || bug.user.isreporter %] - [% IF show_resolution %] - <noscript><br>resolved as </noscript> - <span id="resolution_settings">[% PROCESS select_resolution %]</span> - [% END %] + <span id="resolution_settings"> + [% PROCESS bug/field.html.tmpl + no_tds = 1 + field = bug_fields.resolution + value = bug.resolution + override_legal_values = bug.choices.resolution + editable = bug.check_can_change_field('resolution', bug.resolution, 1) + %] + </span> + + [% IF bug.check_can_change_field('dup_id', 0, 1) %] <noscript><br> duplicate</noscript> - - <span id="duplicate_settings">of + <span id="duplicate_settings">of <span id="dup_id_container" class="bz_default_hidden"> [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %] (<a href="#" id="dup_id_edit_action">edit</a>) @@ -101,11 +63,20 @@ <div id="dup_id_discoverable" class="bz_default_hidden"> <a href="#" id="dup_id_discoverable_action">Mark as Duplicate</a> </div> + [% ELSIF bug.dup_id %] + <noscript><br> duplicate</noscript> + <span id="duplicate_display">of + [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %]</span> [% END %] </div> + <script type="text/javascript"> - var close_status_array = new Array("[% closed_status_array.join('", "') FILTER replace(',$', '') - FILTER none %]"); + var close_status_array = [ + [% FOREACH status = bug.choices.bug_status %] + [% NEXT IF status.is_open %] + '[% status.name FILTER js %]'[% ',' UNLESS loop.last %] + [% END %] + ]; YAHOO.util.Dom.removeClass('dup_id_discoverable', 'bz_default_hidden'); hideEditableField( "dup_id_container", "dup_id", 'dup_id_edit_action', 'dup_id', '[% bug.dup_id FILTER js %]' ) @@ -127,29 +98,3 @@ [% INCLUDE "bug/field-events.js.tmpl" field = select_fields.bug_status %] [% INCLUDE "bug/field-events.js.tmpl" field = select_fields.resolution %] </script> - -[%# Common actions %] - -[% BLOCK initial_action %] - [% IF !initial_action_shown %] - <option selected value="[% bug.bug_status FILTER html %]"> - [% display_value("bug_status", bug.bug_status) FILTER html %] - </option> - [% IF !bug.isopened %] - [% show_resolution = 1 %] - [% filtered_status = bug.bug_status FILTER js %] - [% closed_status_array.push(filtered_status) %] - [% END %] - [% initial_action_shown = 1 %] - [% END %] -[% END %] - -[% BLOCK select_resolution %] - <select name="resolution" id="resolution"> - [% FOREACH r = bug.choices.resolution %] - <option value="[% r.name FILTER html %]" - [% ' selected="selected"' IF r.name == bug.resolution %]> - [% display_value("resolution", r.name) FILTER html %]</option> - [% END %] - </select> -[% END %] diff --git a/template/en/default/bug/process/CVS/Entries b/template/en/default/bug/process/CVS/Entries index b095786c6..80f27fb6a 100644 --- a/template/en/default/bug/process/CVS/Entries +++ b/template/en/default/bug/process/CVS/Entries @@ -1,7 +1,7 @@ -/bugmail.html.tmpl/1.8/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_2 -/confirm-duplicate.html.tmpl/1.12/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_2 -/header.html.tmpl/1.14/Mon Oct 19 02:13:03 2009//TBUGZILLA-3_5_2 -/midair.html.tmpl/1.25/Tue Sep 22 19:18:32 2009//TBUGZILLA-3_5_2 -/results.html.tmpl/1.14/Mon Oct 19 02:13:04 2009//TBUGZILLA-3_5_2 -/verify-new-product.html.tmpl/1.28/Wed Nov 18 07:18:54 2009//TBUGZILLA-3_5_2 +/bugmail.html.tmpl/1.8/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_3 +/confirm-duplicate.html.tmpl/1.12/Mon Aug 20 18:25:01 2007//TBUGZILLA-3_5_3 +/header.html.tmpl/1.16/Thu Dec 10 22:13:11 2009//TBUGZILLA-3_5_3 +/midair.html.tmpl/1.25/Tue Sep 22 19:18:32 2009//TBUGZILLA-3_5_3 +/results.html.tmpl/1.14/Mon Oct 19 02:13:04 2009//TBUGZILLA-3_5_3 +/verify-new-product.html.tmpl/1.28/Wed Nov 18 07:18:54 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/bug/process/CVS/Tag b/template/en/default/bug/process/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/bug/process/CVS/Tag +++ b/template/en/default/bug/process/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/bug/process/header.html.tmpl b/template/en/default/bug/process/header.html.tmpl index 3ca8e10e8..79f0126d4 100644 --- a/template/en/default/bug/process/header.html.tmpl +++ b/template/en/default/bug/process/header.html.tmpl @@ -26,6 +26,8 @@ [% USE Bugzilla %] +[% PROCESS "bug/show-header.html.tmpl" %] + [% IF title_tag == "bug_processed" %] [% title = BLOCK %] [% IF Bugzilla.cgi.param('id') %] @@ -41,8 +43,4 @@ [% title = "Change Votes" %] [% END %] -[% PROCESS global/header.html.tmpl - javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] - style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ] - doc_section = "bug_page.html" -%] +[% PROCESS global/header.html.tmpl %] diff --git a/template/en/default/bug/show-header.html.tmpl b/template/en/default/bug/show-header.html.tmpl new file mode 100644 index 000000000..3f81e5738 --- /dev/null +++ b/template/en/default/bug/show-header.html.tmpl @@ -0,0 +1,50 @@ +[%# 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> + # Vaskin Kissoyan <vkissoyan@yahoo.com> + # Bradley Baetz <bbaetz@student.usyd.edu.au> + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[%# This template should be called with PROCESS before processing + # "global/header.html.tmpl" in any template that is going to load the + # bug form. It expects only a "bug" object, and can even manage to get + # along without that. Some of these variables are just defaults that will + # be overridden by the calling templates. + #%] + +[% filtered_desc = bug.short_desc FILTER html %] +[% subheader = filtered_desc %] +[% filtered_timestamp = bug.delta_ts FILTER time %] +[% title = "$terms.Bug $bug.bug_id – $filtered_desc" %] +[% header = "$terms.Bug $bug.bug_id" %] +[% header_addl_info = "Last modified: $filtered_timestamp" %] +[% javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] %] +[% style_urls = [ "skins/standard/yui/calendar.css", + "skins/standard/show_bug.css" ] %] +[% doc_section = "bug_page.html" %] + +[% bodyclasses = ['bz_bug', + "bz_status_$bug.bug_status", + "bz_product_$bug.product", + "bz_component_$bug.component", + "bz_bug_$bug.bug_id", + ] %] +[% FOREACH group = bug.groups_in %] + [% bodyclasses.push("bz_group_$group.name") %] +[% END %] diff --git a/template/en/default/bug/show.html.tmpl b/template/en/default/bug/show.html.tmpl index 44d637d45..8d8e63a20 100644 --- a/template/en/default/bug/show.html.tmpl +++ b/template/en/default/bug/show.html.tmpl @@ -27,28 +27,8 @@ [% bug = bugs.0 %] [% IF !header_done %] - [% filtered_desc = bug.short_desc FILTER html %] - [% filtered_timestamp = bug.delta_ts FILTER time %] - [% bodyclasses = ['bz_bug', - "bz_status_$bug.bug_status", - "bz_product_$bug.product", - "bz_component_$bug.component", - "bz_bug_$bug.bug_id" - ] - %] - [% FOREACH group = bug.groups_in %] - [% bodyclasses.push("bz_group_$group.name") %] - [% END %] - [% PROCESS global/header.html.tmpl - title = "$terms.Bug $bug.bug_id – $filtered_desc" - header = "$terms.Bug $bug.bug_id" - subheader = filtered_desc - header_addl_info = "Last modified: $filtered_timestamp" - bodyclasses = bodyclasses - javascript_urls = [ "js/util.js", "js/field.js", "js/yui/calendar.js" ] - style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ] - doc_section = "bug_page.html" - %] + [% PROCESS "bug/show-header.html.tmpl" %] + [% PROCESS global/header.html.tmpl %] [% END %] [% IF nextbug %] diff --git a/template/en/default/bug/show.xml.tmpl b/template/en/default/bug/show.xml.tmpl index 31e56d299..2349602dc 100644 --- a/template/en/default/bug/show.xml.tmpl +++ b/template/en/default/bug/show.xml.tmpl @@ -69,6 +69,9 @@ [% NEXT IF c.is_private && !user.is_insider %] <long_desc isprivate="[% c.is_private FILTER xml %]"> <commentid>[% c.id FILTER xml %]</commentid> + [% IF c.is_about_attachment %] + <attachid>[% c.extra_data FILTER xml %]</attachid> + [% END %] <who name="[% c.author.name FILTER xml %]">[% c.author.email FILTER email FILTER xml %]</who> <bug_when>[% c.creation_ts FILTER time("%Y-%m-%d %T %z") FILTER xml %]</bug_when> [% IF user.is_timetracker && (c.work_time - 0 != 0) %] diff --git a/template/en/default/bug/votes/CVS/Entries b/template/en/default/bug/votes/CVS/Entries index 8091d65ef..88a5b5e2d 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.8/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_2 -/list-for-bug.html.tmpl/1.13/Thu Jan 29 21:22:32 2009//TBUGZILLA-3_5_2 -/list-for-user.html.tmpl/1.29/Thu Aug 6 15:02:59 2009//TBUGZILLA-3_5_2 +/delete-all.html.tmpl/1.8/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_3 +/list-for-bug.html.tmpl/1.13/Thu Jan 29 21:22:32 2009//TBUGZILLA-3_5_3 +/list-for-user.html.tmpl/1.29/Thu Aug 6 15:02:59 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/bug/votes/CVS/Tag b/template/en/default/bug/votes/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/bug/votes/CVS/Tag +++ b/template/en/default/bug/votes/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/email/CVS/Entries b/template/en/default/email/CVS/Entries index aca4f1d27..5ec631878 100644 --- a/template/en/default/email/CVS/Entries +++ b/template/en/default/email/CVS/Entries @@ -1,6 +1,7 @@ -/newchangedmail.txt.tmpl/1.17/Tue Nov 10 01:36:05 2009//TBUGZILLA-3_5_2 -/sanitycheck.txt.tmpl/1.4/Tue Jan 20 20:22:11 2009//TBUGZILLA-3_5_2 -/sudo.txt.tmpl/1.5/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_2 -/votes-removed.txt.tmpl/1.5/Wed Apr 2 17:42:29 2008//TBUGZILLA-3_5_2 -/whine.txt.tmpl/1.8/Wed Sep 30 22:35:37 2009//TBUGZILLA-3_5_2 +/lockout.txt.tmpl/1.1/Sun Dec 13 20:46:27 2009//TBUGZILLA-3_5_3 +/newchangedmail.txt.tmpl/1.18/Tue Jan 5 07:06:00 2010//TBUGZILLA-3_5_3 +/sanitycheck.txt.tmpl/1.4/Tue Jan 20 20:22:11 2009//TBUGZILLA-3_5_3 +/sudo.txt.tmpl/1.5/Mon Aug 20 18:25:02 2007//TBUGZILLA-3_5_3 +/votes-removed.txt.tmpl/1.5/Wed Apr 2 17:42:29 2008//TBUGZILLA-3_5_3 +/whine.txt.tmpl/1.9/Sun Dec 27 14:32:52 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/email/CVS/Tag b/template/en/default/email/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/email/CVS/Tag +++ b/template/en/default/email/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/email/lockout.txt.tmpl b/template/en/default/email/lockout.txt.tmpl new file mode 100644 index 000000000..ac6525779 --- /dev/null +++ b/template/en/default/email/lockout.txt.tmpl @@ -0,0 +1,39 @@ +[%# 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 the Mozilla Corporation. + # Portions created by the Initial Developer are Copyright (C) 2008 + # the Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[% PROCESS global/variables.none.tmpl %] + +From: [% Param('mailfrom') %] +To: [% Param('maintainer') %] +Subject: [[% terms.Bugzilla %]] Account Lock-Out: [% locked_user.login %] ([% attempts.0.ip_addr %]) +X-Bugzilla-Type: admin + +The IP address [% attempts.0.ip_addr %] failed too many login attempts ( +[%- constants.MAX_LOGIN_ATTEMPTS +%]) for +the account [% locked_user.login %]. + +The login attempts occurred at these times: + +[% FOREACH login = attempts %] + [%+ login.login_time FILTER time %] +[% END %] + +This IP will be able to log in again using this account at +[%+ unlock_at FILTER time %]. diff --git a/template/en/default/email/newchangedmail.txt.tmpl b/template/en/default/email/newchangedmail.txt.tmpl index 368c23713..1bcc2e40d 100644 --- a/template/en/default/email/newchangedmail.txt.tmpl +++ b/template/en/default/email/newchangedmail.txt.tmpl @@ -20,7 +20,7 @@ [% PROCESS "global/variables.none.tmpl" %] From: [% Param('mailfrom') %] -To: [% to %] +To: [% to_user.email %] Subject: [[% terms.Bug %] [%+ bugid %]] [% 'New: ' IF isnew %][%+ summary %] X-Bugzilla-Reason: [% reasonsheader %] X-Bugzilla-Type: [% isnew ? 'new' : 'changed' %] @@ -48,7 +48,7 @@ X-Bugzilla-Changed-Fields: [% changedfields %] [% FOREACH comment = new_comments %] [%- IF comment.count %] ---- Comment #[% comment.count %] from [% comment.author.identity %] [%+ comment.time FILTER time %] --- +--- Comment #[% comment.count %] from [% comment.author.identity %] [%+ comment.time FILTER time(undef, to_user.timezone) %] --- [% END %] [%+ comment.body_full({ is_bugmail => 1, wrap => 1 }) %] [% END %] diff --git a/template/en/default/email/whine.txt.tmpl b/template/en/default/email/whine.txt.tmpl index a97887ede..e90480e8b 100644 --- a/template/en/default/email/whine.txt.tmpl +++ b/template/en/default/email/whine.txt.tmpl @@ -31,7 +31,7 @@ You have one or more [% terms.bugs %] assigned to you in the [% terms.Bugzilla % attention. All of these [% terms.bugs %] are in the [% display_value("bug_status", "NEW") %] or -[% display_value("bug_status", "REOPENED") %] state, and have not been +[%= display_value("bug_status", "REOPENED") %] state, and have not been touched in [% Param("whinedays") %] days or more. You need to take a look at them, and decide on an initial action. @@ -42,9 +42,9 @@ Generally, this means one of three things: (2) You decide the [% terms.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 [% terms.bug %] to default assignee of selected component" option.) + "Reset Assignee to default" option.) (3) You decide the [% terms.bug %] belongs to you, but you can't solve it this moment. - Just use the "Accept [% terms.bug %]" command. + Accept the [% terms.bug %] by setting the status to [% display_value("bug_status", "ASSIGNED") %]. To get a list of all [% display_value("bug_status", "NEW") %]/[% display_value("bug_status", "REOPENED") %] [%+ terms.bugs %], you can use this URL (bookmark it if you like!): diff --git a/template/en/default/extensions/CVS/Entries b/template/en/default/extensions/CVS/Entries new file mode 100644 index 000000000..1835609b9 --- /dev/null +++ b/template/en/default/extensions/CVS/Entries @@ -0,0 +1,7 @@ +/config.pm.tmpl/1.1/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/extension.pm.tmpl/1.1/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/hook-readme.txt.tmpl/1.1/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/license.txt.tmpl/1.1/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/name-readme.txt.tmpl/1.1/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/util.pm.tmpl/1.2/Sun Jan 31 17:51:15 2010//TBUGZILLA-3_5_3 +D diff --git a/template/en/default/extensions/CVS/Repository b/template/en/default/extensions/CVS/Repository new file mode 100644 index 000000000..de8f9c3b6 --- /dev/null +++ b/template/en/default/extensions/CVS/Repository @@ -0,0 +1 @@ +mozilla/webtools/bugzilla/template/en/default/extensions diff --git a/template/en/extension/CVS/Root b/template/en/default/extensions/CVS/Root similarity index 100% rename from template/en/extension/CVS/Root rename to template/en/default/extensions/CVS/Root diff --git a/template/en/default/extensions/CVS/Tag b/template/en/default/extensions/CVS/Tag new file mode 100644 index 000000000..66fbcb3ad --- /dev/null +++ b/template/en/default/extensions/CVS/Tag @@ -0,0 +1 @@ +NBUGZILLA-3_5_3 diff --git a/template/en/default/extensions/config.pm.tmpl b/template/en/default/extensions/config.pm.tmpl new file mode 100644 index 000000000..6997ec178 --- /dev/null +++ b/template/en/default/extensions/config.pm.tmpl @@ -0,0 +1,41 @@ +[%# -*- mode: perl -*- %] +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[%# INTERFACE: + # name: string; The name of the extension. + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS extensions/license.txt.tmpl %] + +package B[% %]ugzilla::Extension::[% name %]; +use strict; + +use constant NAME => '[% name %]'; + +use constant REQUIRED_MODULES => [ +]; + +use constant OPTIONAL_MODULES => [ +]; + +__PACKAGE__->NAME; diff --git a/template/en/default/extensions/extension.pm.tmpl b/template/en/default/extensions/extension.pm.tmpl new file mode 100644 index 000000000..249227103 --- /dev/null +++ b/template/en/default/extensions/extension.pm.tmpl @@ -0,0 +1,46 @@ +[%# -*- mode: perl -*- %] +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[%# INTERFACE: + # name: string; The name of the extension. + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS extensions/license.txt.tmpl %] + +package B[% %]ugzilla::Extension::[% name %]; +use strict; +use base qw(B[% %]ugzilla::Extension); + +# This code for this is in [% path %]/lib/Util.pm +use B[% %]ugzilla::Extension::[% name %]::Util; + +our $VERSION = '0.01'; + +# See the documentation of B[% %]ugzilla::Hook ("perldoc B[% %]ugzilla::Hook" +# in the bugzilla directory) for a list of all available hooks. +sub install_update_db { + my ($self, $args) = @_; + +} + +__PACKAGE__->NAME; diff --git a/template/en/default/extensions/hook-readme.txt.tmpl b/template/en/default/extensions/hook-readme.txt.tmpl new file mode 100644 index 000000000..efceec136 --- /dev/null +++ b/template/en/default/extensions/hook-readme.txt.tmpl @@ -0,0 +1,27 @@ +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[% PROCESS global/variables.none.tmpl %] + +Template hooks go in this directory. Template hooks are called in normal +[%+ terms.Bugzilla %] templates like [[% '%' %] Hook.process('some-hook') %]. +More information about them can be found in the documentation of +B[% %]ugzilla::Extension. (Do "perldoc B[% %]ugzilla::Extension" from the main +[%+ terms.Bugzilla %] directory to see that documentation.) diff --git a/template/en/default/extensions/license.txt.tmpl b/template/en/default/extensions/license.txt.tmpl new file mode 100644 index 000000000..964e07505 --- /dev/null +++ b/template/en/default/extensions/license.txt.tmpl @@ -0,0 +1,47 @@ +[%# -*- mode: perl -*- %] +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[%# INTERFACE: + # name: string; The name of the extension. + #%] + +[% PROCESS global/variables.none.tmpl %] + +# -*- 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 [% name %] [%+ terms.Bugzilla %] Extension. +# +# The Initial Developer of the Original Code is YOUR NAME +# Portions created by the Initial Developer are Copyright (C) [% year %] the +# Initial Developer. All Rights Reserved. +# +# Contributor(s): +# YOUR NAME <YOUR EMAIL ADDRESS> diff --git a/template/en/default/extensions/name-readme.txt.tmpl b/template/en/default/extensions/name-readme.txt.tmpl new file mode 100644 index 000000000..6d25c839e --- /dev/null +++ b/template/en/default/extensions/name-readme.txt.tmpl @@ -0,0 +1,38 @@ +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[% PROCESS global/variables.none.tmpl %] + +Normal templates go in this directory. You can load them in your +code like this: + +use B[% %]ugzilla::Error; +my $template = B[% %]ugzilla->template; +$template->process('[% name FILTER lower %]/some-template.html.tmpl') + or ThrowTemplateError($template->error()); + +That would be how to load a file called some-template.html.tmpl that +was in this directory. + +Note that you have to be careful that the full path of your template +never conflicts with a template that exists in [% terms.Bugzilla %] or in +another extension, or your template might override that template. That's why +we created this directory called '[% name FILTER lower %]' for you, so you +can put your templates in here to help avoid conflicts. diff --git a/template/en/default/extensions/util.pm.tmpl b/template/en/default/extensions/util.pm.tmpl new file mode 100644 index 000000000..32076a665 --- /dev/null +++ b/template/en/default/extensions/util.pm.tmpl @@ -0,0 +1,42 @@ +[%# -*- mode: perl -*- %] +[%# 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 Everything Solved, Inc. + # Portions created by the Initial Developer are Copyright (C) 2009 the + # Initial Developer. All Rights Reserved. + # + # Contributor(s): + # Max Kanat-Alexander <mkanat@bugzilla.org> + #%] + +[%# INTERFACE: + # name: string; The name of the extension. + #%] + +[% PROCESS global/variables.none.tmpl %] + +[% PROCESS extensions/license.txt.tmpl %] + +package B[% %]ugzilla::Extension::[% name %]::Util; +use strict; +use base qw(Exporter); +our @EXPORT = qw( + +); + +# This file can be loaded by your extension via +# "use B[% %]ugzilla::Extension::[% name %]::Util". You can put functions +# used by your extension in here. (Make sure you also list them in +# @EXPORT.) + +1; diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl index 198521649..c4d0c064f 100644 --- a/template/en/default/filterexceptions.pl +++ b/template/en/default/filterexceptions.pl @@ -92,10 +92,6 @@ 'request.attach_id', ], -'reports/components.html.tmpl' => [ - 'numcols', -], - 'reports/duplicates-table.html.tmpl' => [ 'column.name', 'column.description', diff --git a/template/en/default/flag/CVS/Entries b/template/en/default/flag/CVS/Entries index cb030c08e..be9b2ce26 100644 --- a/template/en/default/flag/CVS/Entries +++ b/template/en/default/flag/CVS/Entries @@ -1,2 +1,2 @@ -/list.html.tmpl/1.38/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_2 +/list.html.tmpl/1.39/Thu Nov 26 00:03:31 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/flag/CVS/Tag b/template/en/default/flag/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/flag/CVS/Tag +++ b/template/en/default/flag/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/flag/list.html.tmpl b/template/en/default/flag/list.html.tmpl index 5c810480f..adf12565c 100644 --- a/template/en/default/flag/list.html.tmpl +++ b/template/en/default/flag/list.html.tmpl @@ -18,60 +18,6 @@ # Contributor(s): Myk Melez <myk@mozilla.org> #%] -<script type="text/javascript"> -<!-- - // Enables or disables a requestee field depending on whether or not - // the user is requesting the corresponding flag. - function toggleRequesteeField(flagField, no_focus) - { - // Convert the ID of the flag field into the ID of its corresponding - // requestee field and then use the ID to get the field. - var id = flagField.name.replace(/flag(_type)?-(\d+)/, "requestee$1-$2"); - var requesteeField = document.getElementById(id); - if (!requesteeField) return; - - // Enable or disable the requestee field based on the value - // of the flag field. - if (flagField.value == "?") { - requesteeField.disabled = false; - if (!no_focus) requesteeField.focus(); - } else - requesteeField.disabled = true; - } - - // Disables requestee fields when the window is loaded since they shouldn't - // be enabled until the user requests that flag type. - function disableRequesteeFields() - { - var inputElements = document.getElementsByTagName("input"); - var selectElements = document.getElementsByTagName("select"); - //You cannot update Node lists, so you must create an array to combine the NodeLists - var allElements = []; - for( var i=0; i < inputElements.length; i++ ) { - allElements[allElements.length] = inputElements.item(i); - } - for( var i=0; i < selectElements.length; i++ ) { //Combine inputs with selects - allElements[allElements.length] = selectElements.item(i); - } - var inputElement, id, flagField; - for ( var i=0 ; i<allElements.length ; i++ ) - { - inputElement = allElements[i]; - if (inputElement.name.search(/^requestee(_type)?-(\d+)$/) != -1) - { - // Convert the ID of the requestee field into the ID of its corresponding - // flag field and then use the ID to get the field. - id = inputElement.name.replace(/requestee(_type)?-(\d+)/, "flag$1-$2"); - flagField = document.getElementById(id); - if (flagField && flagField.value != "?") - inputElement.disabled = true; - } - } - } - YAHOO.util.Event.addListener(window, "load", disableRequesteeFields); -// --> -</script> - [% IF user.id %] [%# We list flags by looping twice over the flag types relevant for the bug. @@ -84,6 +30,8 @@ [% DEFAULT flag_table_id = "flags" %] +<script type="text/javascript" src="js/flag.js"></script> + <table id="[% flag_table_id FILTER html %]"> [% UNLESS flag_no_header %] <tr> diff --git a/template/en/default/global/CVS/Entries b/template/en/default/global/CVS/Entries index 530cf4f78..f1900e2d6 100644 --- a/template/en/default/global/CVS/Entries +++ b/template/en/default/global/CVS/Entries @@ -1,30 +1,30 @@ -/banner.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/choose-classification.html.tmpl/1.11/Wed Dec 10 18:43:36 2008//TBUGZILLA-3_5_2 -/choose-product.html.tmpl/1.19/Tue Jun 2 03:49:21 2009//TBUGZILLA-3_5_2 -/code-error.html.tmpl/1.122/Wed Nov 18 14:34:04 2009//TBUGZILLA-3_5_2 -/common-links.html.tmpl/1.25/Thu Aug 13 15:55:11 2009//TBUGZILLA-3_5_2 -/confirm-action.html.tmpl/1.1/Mon Feb 2 18:37:24 2009//TBUGZILLA-3_5_2 -/confirm-user-match.html.tmpl/1.20/Tue Mar 31 19:24:34 2009//TBUGZILLA-3_5_2 -/docslinks.html.tmpl/1.3/Thu Apr 3 19:05:50 2008//TBUGZILLA-3_5_2 -/field-descs.none.tmpl/1.38/Wed Nov 18 07:04:59 2009//TBUGZILLA-3_5_2 -/footer.html.tmpl/1.14/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/header.html.tmpl/1.65/Wed Nov 18 07:06:47 2009//TBUGZILLA-3_5_2 -/help.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/hidden-fields.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/initialize.none.tmpl/1.2/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/js-products.html.tmpl/1.3/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/message.html.tmpl/1.8/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/message.txt.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/messages.html.tmpl/1.93/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_2 -/per-bug-queries.html.tmpl/1.14/Fri Aug 21 21:33:31 2009//TBUGZILLA-3_5_2 -/select-menu.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/setting-descs.none.tmpl/1.16/Wed Aug 19 21:40:07 2009//TBUGZILLA-3_5_2 -/site-navigation.html.tmpl/1.27/Wed Aug 12 01:43:13 2009//TBUGZILLA-3_5_2 -/tabs.html.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_2 -/textarea.html.tmpl/1.4/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_2 -/useful-links.html.tmpl/1.60/Tue Feb 24 00:35:39 2009//TBUGZILLA-3_5_2 -/user-error.html.tmpl/1.287/Sat Oct 24 05:30:21 2009//TBUGZILLA-3_5_2 -/user.html.tmpl/1.1/Thu Jan 29 21:22:33 2009//TBUGZILLA-3_5_2 -/userselect.html.tmpl/1.10/Mon Dec 29 00:02:20 2008//TBUGZILLA-3_5_2 -/variables.none.tmpl/1.8/Wed Feb 25 19:24:49 2009//TBUGZILLA-3_5_2 +/banner.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/choose-classification.html.tmpl/1.11/Wed Dec 10 18:43:36 2008//TBUGZILLA-3_5_3 +/choose-product.html.tmpl/1.19/Tue Jun 2 03:49:21 2009//TBUGZILLA-3_5_3 +/code-error.html.tmpl/1.127/Tue Jan 5 08:32:54 2010//TBUGZILLA-3_5_3 +/common-links.html.tmpl/1.25/Thu Aug 13 15:55:11 2009//TBUGZILLA-3_5_3 +/confirm-action.html.tmpl/1.1/Mon Feb 2 18:37:24 2009//TBUGZILLA-3_5_3 +/confirm-user-match.html.tmpl/1.21/Thu Dec 17 23:06:14 2009//TBUGZILLA-3_5_3 +/docslinks.html.tmpl/1.3/Thu Apr 3 19:05:50 2008//TBUGZILLA-3_5_3 +/field-descs.none.tmpl/1.38/Wed Nov 18 07:04:59 2009//TBUGZILLA-3_5_3 +/footer.html.tmpl/1.14/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/header.html.tmpl/1.65/Wed Nov 18 07:06:47 2009//TBUGZILLA-3_5_3 +/help.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/hidden-fields.html.tmpl/1.11/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/initialize.none.tmpl/1.2/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/js-products.html.tmpl/1.3/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/message.html.tmpl/1.8/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/message.txt.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/messages.html.tmpl/1.94/Wed Nov 25 05:02:57 2009//TBUGZILLA-3_5_3 +/per-bug-queries.html.tmpl/1.14/Fri Aug 21 21:33:31 2009//TBUGZILLA-3_5_3 +/select-menu.html.tmpl/1.6/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/setting-descs.none.tmpl/1.16/Wed Aug 19 21:40:07 2009//TBUGZILLA-3_5_3 +/site-navigation.html.tmpl/1.27/Wed Aug 12 01:43:13 2009//TBUGZILLA-3_5_3 +/tabs.html.tmpl/1.4/Mon Aug 20 18:25:04 2007//TBUGZILLA-3_5_3 +/textarea.html.tmpl/1.4/Fri Oct 23 21:32:08 2009//TBUGZILLA-3_5_3 +/useful-links.html.tmpl/1.60/Tue Feb 24 00:35:39 2009//TBUGZILLA-3_5_3 +/user-error.html.tmpl/1.295/Sun Jan 31 23:33:32 2010//TBUGZILLA-3_5_3 +/user.html.tmpl/1.1/Thu Jan 29 21:22:33 2009//TBUGZILLA-3_5_3 +/userselect.html.tmpl/1.10/Mon Dec 29 00:02:20 2008//TBUGZILLA-3_5_3 +/variables.none.tmpl/1.8/Wed Feb 25 19:24:49 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/global/CVS/Tag b/template/en/default/global/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/global/CVS/Tag +++ b/template/en/default/global/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl index c1ff61159..2c2eb9891 100644 --- a/template/en/default/global/code-error.html.tmpl +++ b/template/en/default/global/code-error.html.tmpl @@ -120,6 +120,23 @@ without specifying a default or something for $set_nulls_to, because there are NULL values currently in it. + [% ELSIF error == "comment_extra_data_not_allowed" %] + You tried to set the <code>extra_data</code> field to + '[% extra_data FILTER html %]' but comments of type [% type FILTER html %] + do not accept an <code>extra_data</code> argument. + + [% ELSIF error == "comment_extra_data_required" %] + Comments of type [% type FILTER html %] require an <code>extra_data</code> + argument to be set. + + [% ELSIF error == "comment_extra_data_not_numeric" %] + You tried to set the <code>extra_data</code> field to + '[% extra_data FILTER html %]' but comments of type [% type FILTER html %] + require a numeric <code>extra_data</code> argument. + + [% ELSIF error == "comment_type_invalid" %] + '[% type FILTER html %]' is not a valid comment type. + [% ELSIF error == "db_rename_conflict" %] Name conflict: Cannot rename [% old FILTER html %] to [% new FILTER html %] because [% new FILTER html %] already exists. @@ -139,9 +156,32 @@ address. [% END %] - [% ELSIF error == "extension_invalid" %] - An error occurred processing hook [% name FILTER html %] in - extension [% extension FILTER html %]: [% errstr FILTER html %] + [% ELSIF error == "extension_must_be_subclass" %] + <code>[% package FILTER html %]</code> from + <code>[% filename FILTER html %]</code> is not a subclass of + <code>[% class FILTER html %]</code>. + + [% ELSIF error == "extension_must_return_name" %] + <code>[% extension FILTER html %]</code> returned + <code>[% returned FILTER html %]</code>, which is not a valid name + for an extension. Extensions must return their name, not <code>1</code> + or a number. See the documentation of + <a href="[% docs_urlbase FILTER html %]api/Bugzilla/Extension.html">Bugzilla::Extension</a> + for details. + + [% ELSIF error == "extension_no_name" %] + We did not find a <code>NAME</code> method in + <code>[% package FILTER html %]</code> (loaded from + <code>[% filename FILTER html %]</code>). This means that + the extension has one or more of the following problems: + + <ul> + <li><code>[% filename FILTER html %]</code> did not define a + <code>[% package FILTER html %]</code> package.</li> + <li><code>[% package FILTER html %]</code> did not define a + <code>NAME</code> method (or the <code>NAME</code> method + returned an empty string).</li> + </ul> [% ELSIF error == "extern_id_conflict" %] The external ID '[% extern_id FILTER html %]' already exists @@ -304,7 +344,11 @@ [% ELSIF error == "ldap_search_error" %] An error occurred while trying to search LDAP for "[% username FILTER html %]": - <code>[% errstr FILTER html %]</code> + [% IF errstr %] + <code>[% errstr FILTER html %]</code> + [% ELSE %] + Unable to find user in LDAP + [% END %] [% ELSIF error == "ldap_server_not_defined" %] The LDAP server for authentication has not been defined. diff --git a/template/en/default/global/confirm-user-match.html.tmpl b/template/en/default/global/confirm-user-match.html.tmpl index f961ee0b9..40dccc6b5 100644 --- a/template/en/default/global/confirm-user-match.html.tmpl +++ b/template/en/default/global/confirm-user-match.html.tmpl @@ -38,6 +38,22 @@ [%# use the global field descs %] [% PROCESS "global/field-descs.none.tmpl" %] +[%# This lists fields which use the user auto-completion feature and which + # are not listed in field_descs. %] +[% field_labels = { # Used by editcomponents.cgi + "initialcc" => "Default CC List", + "initialowner" => "Default Assignee", + "initialqacontact" => "Default QA Contact", + # Used by process_bug.cgi + "masscc" => "CC List", + # Used by request.cgi + "requester" => "Requester", + "requestee" => "Requestee", + # Used by userprefs.cgi + "new_watchedusers" => "Watch List", + + } +%] [% IF matchsuccess == 1 %] [% PROCESS global/header.html.tmpl title="Confirm Match" %] @@ -169,14 +185,12 @@ [% BLOCK field_names %] - [% IF field_descs.${field_name} %] - [% field_descs.${field_name} FILTER html -%] - - [%-# ELSIF for things that don't belong in the field_descs hash here -%] - + [% IF field_descs.$field_name %] + [% field_descs.$field_name FILTER html %] + [% ELSIF field_labels.$field_name %] + [% field_labels.$field_name FILTER html %] [% ELSIF field_name.match("^requestee") %] [% fields.${field_name}.flag_type.name %] requestee - [% ELSE %] [% field_name FILTER html %] [% END %] diff --git a/template/en/default/global/messages.html.tmpl b/template/en/default/global/messages.html.tmpl index bc6ca5601..1f63da79b 100644 --- a/template/en/default/global/messages.html.tmpl +++ b/template/en/default/global/messages.html.tmpl @@ -279,7 +279,12 @@ The request to change the email address for the account [%+ old_email FILTER html %] to [%+ new_email FILTER html %] has been canceled. - Your old account settings have been reinstated. + Your old account settings have been reinstated. + + [% ELSIF message_tag == "extension_created" %] + An extension named [% name FILTER html %] has been created + in [% path FILTER html %]. Make sure you change "YOUR NAME" and + "YOUR EMAIL ADDRESS" in the code to your name and your email address. [% ELSIF message_tag == "field_value_created" %] [% title = "New Field Value Created" %] diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl index 230f029b5..467d4a174 100644 --- a/template/en/default/global/user-error.html.tmpl +++ b/template/en/default/global/user-error.html.tmpl @@ -17,6 +17,7 @@ # # Contributor(s): Gervase Markham <gerv@gerv.net> # Frédéric Buclin <LpSolit@gmail.com> + # Max Kanat-Alexander <mkanat@bugzilla.org> #%] [%# INTERFACE: @@ -32,10 +33,10 @@ # in this file; if you do not wish to change it, use the "none" filter. # # Extension- or custom-specific error handling can be easily added - # via hooks: just place your <extension>-errors.html.tmpl into - # template/en/extension/hook/global/user-error.html.tmpl/errors/ - # Note: be aware of uniqueness of error string parameter value, since - # nobody can guarantee the hook files processing order in the future + # via hooks: just place additional code into + # template/en/hook/global/user-error-errors.html.tmpl + # Note: be aware of uniqueness of error string parameter value, since + # nobody can guarantee the hook files processing order in the future. #%] [% PROCESS global/variables.none.tmpl %] @@ -76,6 +77,12 @@ that login name. [% END %] + [% ELSIF error == "account_locked" %] + [% title = "Account Locked" %] + Your IP ([% ip_addr FILTER html %]) has been locked out of this + account until [% unlock_at FILTER time %], as you have + exceeded the maximum number of login attempts. + [% ELSIF error == "alias_has_comma_or_space" %] [% title = "Invalid Characters In Alias" %] The alias you entered, <em>[% alias FILTER html %]</em>, @@ -153,7 +160,11 @@ [% IF object == "administrative_pages" %] administrative pages [% ELSIF object == "attachment" %] - this attachment + [% IF attach_id %] + attachment #[% attach_id FILTER html %] + [% ELSE %] + this attachment + [% END %] [% ELSIF object == "bugs" %] [%+ terms.bugs %] [% ELSIF object == "charts" %] @@ -428,6 +439,13 @@ does not exist or you aren't authorized to enter [% terms.abug %] into it. + [% ELSIF error == "extension_create_no_name" %] + You must specify a name for your extension, as an argument to this script. + + [% ELSIF error == "extension_first_letter_caps" %] + The first letter of your extension's name must be a capital letter. + (You specified '[% name FILTER html %]'.) + [% ELSIF error == "field_already_exists" %] [% title = "Field Already Exists" %] The field '[% field.name FILTER html %]' @@ -664,9 +682,10 @@ [% ELSIF error == "group_cannot_delete" %] [% title = "Cannot Delete Group" %] - The <em>[% name FILTER html %]</em> group cannot be deleted because + The <em>[% group.name FILTER html %]</em> group cannot be deleted because there are - <a href="editgroups.cgi?action=del&group=[% gid FILTER url_quote %]">records</a> + <a href="editgroups.cgi?action=del&group= + [%- group.id FILTER url_quote %]">records</a> in the database which refer to it. All references to this group must be removed before you can remove it. @@ -954,6 +973,15 @@ [% ELSIF error == "invalid_username_or_password" %] [% title = "Invalid Username Or Password" %] The username or password you entered is not valid. + [%# People get two login attempts before being warned about + # being locked out. + #%] + [% IF remaining <= 2 %] + If you do not enter the correct password after + [%+ remaining FILTER html %] more attempt(s), you will be + locked out of this account for + [%+ constants.LOGIN_LOCKOUT_INTERVAL FILTER html %] minutes. + [% END %] [% ELSIF error == "json_rpc_post_only" %] For security reasons, you may only use JSON-RPC with the POST @@ -1392,18 +1420,20 @@ characters long. [% ELSIF error == "quicksearch_unknown_field" %] - [% title = "Unknown QuickSearch Field" %] - [% IF fields.unique.size == 1 %] - Field <code>[% fields.first FILTER html %]</code> is not a known field. - [% ELSE %] - Fields - [% FOREACH field = fields.unique.sort %] - <code>[% field FILTER html %]</code> - [% ', ' UNLESS loop.last() %] - [% END %] - are not known fields. + [% title = "QuickSearch Error" %] + There is a problem with your search: + [% FOREACH field = unknown %] + <p><code>[% field FILTER html %]</code> is not a valid field name.</p> + [% END %] + [% FOREACH field = ambiguous.keys %] + <p><code>[% field FILTER html %]</code> matches more than one field: + [%+ ambiguous.${field}.join(', ') FILTER html %]</p> + [% END %] + + [% IF unknown.size %] + <p>The legal field names are + <a href="page.cgi?id=quicksearchhack.html">listed here</a>.</p> [% END %] - The legal field names are <a href="page.cgi?id=quicksearchhack.html">listed here</a>. [% ELSIF error == "reassign_to_empty" %] [% title = "Illegal Reassignment" %] @@ -1598,6 +1628,12 @@ <tt>[% name FILTER html %]</tt> does not exist or you are not allowed to see that user. + [% ELSIF error == "user_match_too_many" %] + [% title = "No Conclusive Match" %] + [% terms.Bugzilla %] cannot make a conclusive match for one or more + of the names and/or email addresses you entered for + the [% fields.join(', ') FILTER html %] field(s). + [% ELSIF error == "user_not_insider" %] [% title = "User Not In Insidergroup" %] Sorry, but you are not allowed to (un)mark comments or attachments @@ -1713,7 +1749,9 @@ [% PROCESS global/footer.html.tmpl %] [% BLOCK object_name %] - [% IF class == "Bugzilla::User" %] + [% IF class == "Bugzilla::Attachment" %] + attachment + [% ELSIF class == "Bugzilla::User" %] user [% ELSIF class == "Bugzilla::Component" %] component @@ -1729,6 +1767,10 @@ flagtype [% ELSIF class == "Bugzilla::Field" %] field + [% ELSIF class == "Bugzilla::Group" %] + group + [% ELSIF class == "Bugzilla::Product" %] + product [% ELSIF class == "Bugzilla::Search::Saved" %] saved search [% ELSIF ( matches = class.match('^Bugzilla::Field::Choice::(.+)') ) %] diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl index dd00d3550..6dfcdc751 100644 --- a/template/en/default/index.html.tmpl +++ b/template/en/default/index.html.tmpl @@ -96,7 +96,7 @@ YAHOO.util.Event.onDOMReady(onLoadActions); <p class="notice">This message is only shown to logged in users with admin privs. You can configure this notification from the - <a href="editparams.cgi?section=core#upgrade_notification">Parameters</a> page.</p> + <a href="editparams.cgi?section=general#upgrade_notification">Parameters</a> page.</p> [% ELSIF release.error == "cannot_download" %] <p>The local XML file '[% release.xml_file FILTER html %]' cannot be created. Please make sure the web server can write in this directory and that you can access diff --git a/template/en/default/list/CVS/Entries b/template/en/default/list/CVS/Entries index 66e2319d9..73e884664 100644 --- a/template/en/default/list/CVS/Entries +++ b/template/en/default/list/CVS/Entries @@ -1,13 +1,13 @@ -/change-columns.html.tmpl/1.20/Wed Feb 25 22:39:20 2009//TBUGZILLA-3_5_2 -/edit-multiple.html.tmpl/1.60/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 -/list-simple.html.tmpl/1.12/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 -/list.atom.tmpl/1.7/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 -/list.csv.tmpl/1.9/Wed Sep 30 22:35:40 2009//TBUGZILLA-3_5_2 -/list.html.tmpl/1.71/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 -/list.ics.tmpl/1.11/Thu May 14 11:34:37 2009//TBUGZILLA-3_5_2 -/list.js.tmpl/1.3/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 -/list.rdf.tmpl/1.8/Wed Feb 11 15:45:27 2009//TBUGZILLA-3_5_2 -/quips.html.tmpl/1.24/Wed Nov 5 18:38:52 2008//TBUGZILLA-3_5_2 -/server-push.html.tmpl/1.7/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 -/table.html.tmpl/1.51/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 +/change-columns.html.tmpl/1.20/Wed Feb 25 22:39:20 2009//TBUGZILLA-3_5_3 +/edit-multiple.html.tmpl/1.61/Fri Dec 4 14:40:05 2009//TBUGZILLA-3_5_3 +/list-simple.html.tmpl/1.12/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_3 +/list.atom.tmpl/1.7/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_3 +/list.csv.tmpl/1.9/Wed Sep 30 22:35:40 2009//TBUGZILLA-3_5_3 +/list.html.tmpl/1.71/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_3 +/list.ics.tmpl/1.11/Thu May 14 11:34:37 2009//TBUGZILLA-3_5_3 +/list.js.tmpl/1.3/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_3 +/list.rdf.tmpl/1.8/Wed Feb 11 15:45:27 2009//TBUGZILLA-3_5_3 +/quips.html.tmpl/1.24/Wed Nov 5 18:38:52 2008//TBUGZILLA-3_5_3 +/server-push.html.tmpl/1.7/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_3 +/table.html.tmpl/1.52/Thu Dec 17 23:15:32 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/list/CVS/Tag b/template/en/default/list/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/list/CVS/Tag +++ b/template/en/default/list/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/list/edit-multiple.html.tmpl b/template/en/default/list/edit-multiple.html.tmpl index 11f3491f2..75f2f833b 100644 --- a/template/en/default/list/edit-multiple.html.tmpl +++ b/template/en/default/list/edit-multiple.html.tmpl @@ -307,6 +307,8 @@ cols = constants.COMMENT_COLS %]<br> +[% Hook.process('before_groups') %] + [% IF groups.size > 0 %] <b>Groups:</b><br> diff --git a/template/en/default/list/table.html.tmpl b/template/en/default/list/table.html.tmpl index f6a871e19..64ed319db 100644 --- a/template/en/default/list/table.html.tmpl +++ b/template/en/default/list/table.html.tmpl @@ -77,16 +77,6 @@ [% tableheader = BLOCK %] <table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%"> - <colgroup> - [% IF dotweak %] - <col class="bz_checkbox_column"> - [% END %] - <col class="bz_id_column"> - [% FOREACH id = displaycolumns %] - <col class="bz_[% id FILTER css_class_quote %]_column"> - [% END %] - </colgroup> - <tr class="bz_buglist_header bz_first_buglist_header" align="left"> [% IF dotweak %] <th> </th> @@ -188,18 +178,19 @@ "> [% IF dotweak %] - <td> + <td class="bz_checkbox_column"> <input type="checkbox" name="id_[% bug.bug_id %]"> </td> [% END %] - <td class="first-child"> + <td class="first-child bz_id_column"> <a name="b[% bug.bug_id %]" href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a> <span style="display: none">[%+ '[SEC]' IF bug.secure_mode %]</span> </td> [% FOREACH column = displaycolumns %] - <td [% 'style="white-space: nowrap"' IF NOT abbrev.$column.wrap %]> + <td [% 'style="white-space: nowrap"' IF NOT abbrev.$column.wrap %] + class="bz_[% column FILTER css_class_quote %]_column"> [% IF abbrev.$column.maxlength %] <span title="[%- display_value(column, bug.$column) FILTER html %]"> [% END %] diff --git a/template/en/default/pages/CVS/Entries b/template/en/default/pages/CVS/Entries index 7c0635134..baecad5aa 100644 --- a/template/en/default/pages/CVS/Entries +++ b/template/en/default/pages/CVS/Entries @@ -1,10 +1,10 @@ -/bug-writing.html.tmpl/1.10/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 -/fields.html.tmpl/1.19/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_2 -/linked.html.tmpl/1.10/Fri Feb 8 23:19:32 2008//TBUGZILLA-3_5_2 -/linkify.html.tmpl/1.9/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_2 -/quicksearch.html.tmpl/1.4/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_2 -/quicksearchhack.html.tmpl/1.8/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_2 -/release-notes.html.tmpl/1.44/Wed Nov 18 06:53:45 2009//TBUGZILLA-3_5_2 -/sudo.html.tmpl/1.3/Fri Aug 8 01:27:20 2008//TBUGZILLA-3_5_2 -/voting.html.tmpl/1.5/Mon Sep 15 22:34:32 2008//TBUGZILLA-3_5_2 +/bug-writing.html.tmpl/1.10/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_3 +/fields.html.tmpl/1.19/Wed Nov 18 07:05:00 2009//TBUGZILLA-3_5_3 +/linked.html.tmpl/1.10/Fri Feb 8 23:19:32 2008//TBUGZILLA-3_5_3 +/linkify.html.tmpl/1.9/Mon Aug 20 18:25:05 2007//TBUGZILLA-3_5_3 +/quicksearch.html.tmpl/1.4/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_3 +/quicksearchhack.html.tmpl/1.8/Mon Jul 20 04:17:42 2009//TBUGZILLA-3_5_3 +/release-notes.html.tmpl/1.45/Sun Jan 31 19:47:00 2010//TBUGZILLA-3_5_3 +/sudo.html.tmpl/1.3/Fri Aug 8 01:27:20 2008//TBUGZILLA-3_5_3 +/voting.html.tmpl/1.5/Mon Sep 15 22:34:32 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/pages/CVS/Tag b/template/en/default/pages/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/pages/CVS/Tag +++ b/template/en/default/pages/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl index 9a838d916..35d586bde 100644 --- a/template/en/default/pages/release-notes.html.tmpl +++ b/template/en/default/pages/release-notes.html.tmpl @@ -59,6 +59,41 @@ <h2><a name="v34_point"></a>Updates In This 3.4.x Release</h2> +<h3>3.4.5</h3> + +<p>This release contains fixes for multiple security issues. See the + <a href="http://www.bugzilla.org/security/3.0.10/">Security Advisory</a> + for details.</p> + +<p>In addition, the following important fixes/changes have been made in + this release:</p> + +<ul> + <li>Whining was failing if jobqueue.pl was enabled. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=530270">[% terms.Bug %] 530270</a>) + </li> + <li>The Assignee field was empty in Whine mails. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=511216">[% terms.Bug %] 511216</a>) + </li> + <li>Administrators can now successfully create user accounts using + editusers.cgi when using the "Env" authentication method. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=483987">[% terms.Bug %] 483987</a>) + </li> + <li>[% terms.Bug %]mail now uses the timezone of the recipient of the email, + when displaying the time a comment was made, instead of the timezone of the + person who made the change. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=534587">[% terms.Bug %] 534587</a>) + </li> + <li>"[% terms.bug %] 1234" in comments sometimes would not become a link if + word-wrapping happened between "[% terms.bug %]" and the number. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=514703">[% terms.Bug %] 514703</a>) + </li> + <li>Running checksetup.pl on Windows will no longer pop up an error box + about OCI.dll. + (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=480968">[% terms.Bug %] 480968</a>) + </li> +</ul> + <h3>3.4.4</h3> <p>This release contains a fix for a security issue. See the diff --git a/template/en/default/reports/CVS/Entries b/template/en/default/reports/CVS/Entries index 5dc60e255..c729e2ae5 100644 --- a/template/en/default/reports/CVS/Entries +++ b/template/en/default/reports/CVS/Entries @@ -1,24 +1,24 @@ -/chart.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/chart.html.tmpl/1.5/Wed Aug 27 02:32:26 2008//TBUGZILLA-3_5_2 -/chart.png.tmpl/1.6/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/components.html.tmpl/1.15/Tue Jun 2 03:49:22 2009//TBUGZILLA-3_5_2 -/create-chart.html.tmpl/1.19/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_2 -/delete-series.html.tmpl/1.1/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_2 -/duplicates-simple.html.tmpl/1.5/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/duplicates-table.html.tmpl/1.16/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/duplicates.html.tmpl/1.19/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_2 -/edit-series.html.tmpl/1.8/Mon Oct 5 09:49:30 2009//TBUGZILLA-3_5_2 -/keywords.html.tmpl/1.10/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/menu.html.tmpl/1.10/Sat Oct 24 05:21:11 2009//TBUGZILLA-3_5_2 -/old-charts.html.tmpl/1.3/Sun Nov 11 22:03:19 2007//TBUGZILLA-3_5_2 -/report-bar.png.tmpl/1.10/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/report-line.png.tmpl/1.11/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/report-pie.png.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/report-simple.html.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/report-table.csv.tmpl/1.14/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/report-table.html.tmpl/1.19/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/report.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_2 -/report.html.tmpl/1.16/Thu Jan 29 21:22:37 2009//TBUGZILLA-3_5_2 -/series-common.html.tmpl/1.6/Wed Aug 19 14:46:55 2009//TBUGZILLA-3_5_2 -/series.html.tmpl/1.10/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_2 +/chart.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/chart.html.tmpl/1.5/Wed Aug 27 02:32:26 2008//TBUGZILLA-3_5_3 +/chart.png.tmpl/1.6/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/components.html.tmpl/1.16/Sat Dec 12 21:48:13 2009//TBUGZILLA-3_5_3 +/create-chart.html.tmpl/1.19/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_3 +/delete-series.html.tmpl/1.1/Sun Oct 4 21:00:26 2009//TBUGZILLA-3_5_3 +/duplicates-simple.html.tmpl/1.5/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/duplicates-table.html.tmpl/1.16/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/duplicates.html.tmpl/1.19/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_3 +/edit-series.html.tmpl/1.8/Mon Oct 5 09:49:30 2009//TBUGZILLA-3_5_3 +/keywords.html.tmpl/1.10/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/menu.html.tmpl/1.10/Sat Oct 24 05:21:11 2009//TBUGZILLA-3_5_3 +/old-charts.html.tmpl/1.3/Sun Nov 11 22:03:19 2007//TBUGZILLA-3_5_3 +/report-bar.png.tmpl/1.10/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/report-line.png.tmpl/1.11/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/report-pie.png.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/report-simple.html.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/report-table.csv.tmpl/1.14/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/report-table.html.tmpl/1.19/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_3 +/report.csv.tmpl/1.3/Mon Aug 20 18:25:06 2007//TBUGZILLA-3_5_3 +/report.html.tmpl/1.16/Thu Jan 29 21:22:37 2009//TBUGZILLA-3_5_3 +/series-common.html.tmpl/1.6/Wed Aug 19 14:46:55 2009//TBUGZILLA-3_5_3 +/series.html.tmpl/1.10/Mon Mar 31 08:51:06 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/reports/CVS/Tag b/template/en/default/reports/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/reports/CVS/Tag +++ b/template/en/default/reports/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/reports/components.html.tmpl b/template/en/default/reports/components.html.tmpl index 3fe609143..35f656a5a 100644 --- a/template/en/default/reports/components.html.tmpl +++ b/template/en/default/reports/components.html.tmpl @@ -16,6 +16,7 @@ # Rights Reserved. # # Contributor(s): Bradley Baetz <bbaetz@student.usyd.edu.au> + # Max Kanat-Alexander <mkanat@bugzilla.org> #%] [%# INTERFACE: @@ -27,7 +28,10 @@ Components for [% product.name FILTER html %] [% END %] -[% PROCESS global/header.html.tmpl title = title %] +[% PROCESS global/header.html.tmpl + style_urls = [ "skins/standard/reports.css" ] + title = title +%] [% IF Param("useqacontact") %] [% numcols = 3 %] @@ -35,30 +39,38 @@ [% numcols = 2 %] [% END %] +<table cellpadding="0" cellspacing="0" id="components_header_table"> + <tr> + <td class="instructions"> + Select a component to see open [% terms.bugs %] in that component: + </td> + <td class="product_container"> + <h2 class="product_name">[% product.name FILTER html %]</h2> + <div class="product_desc"> + [% product.description FILTER html_light %] + </div> + </td> + </tr> +</table> -<p><strong>[% product.name FILTER html %]</strong>: - [% product.description FILTER html_light %]</p> - -<p><em>Select a component to view open [% terms.bugs %] in that - component:</em></p> +<h3 class="components_header">Components</h3> -<table> +<table class="component_table" cellspacing="0" cellpadding="0"> + <thead> <tr> - <th align="left">Component</th> - <th align="left">Default Assignee</th> + <th> </th> + <th>Default Assignee</th> [% IF Param("useqacontact") %] - <th align="left">Default QA Contact</th> + <th>Default QA Contact</th> [% END %] </tr> + </thead> + <tbody> [% FOREACH comp = product.components %] [% INCLUDE describe_comp %] [% END %] - <tr> - <td colspan="[% numcols %]"> - <hr> - </td> - </tr> + </tbody> </table> [% PROCESS global/footer.html.tmpl %] @@ -69,29 +81,24 @@ [% BLOCK describe_comp %] <tr> - <td colspan="[% numcols %]"> - <hr> - </td> - </tr> - <tr> - <td rowspan="2"> + <td rowspan="2" class="component_name"> <a name="[% comp.name FILTER html %]" href="buglist.cgi?product= [%- product.name FILTER url_quote %]&component= [%- comp.name FILTER url_quote %]&resolution=---"> [% comp.name FILTER html %]</a> </td> - <td> + <td class="component_assignee"> [% INCLUDE global/user.html.tmpl who = comp.default_assignee %] </td> [% IF Param("useqacontact") %] - <td> + <td class="component_qa_contact"> [% INCLUDE global/user.html.tmpl who = comp.default_qa_contact %] </td> [% END %] </tr> <tr> - <td colspan="[% numcols - 1 %]"> + <td colspan="[% numcols - 1 %]" class="component_description"> [% comp.description FILTER html_light %] </td> </tr> diff --git a/template/en/default/request/CVS/Entries b/template/en/default/request/CVS/Entries index 0eafaa8ff..dd05bd33b 100644 --- a/template/en/default/request/CVS/Entries +++ b/template/en/default/request/CVS/Entries @@ -1,3 +1,3 @@ -/email.txt.tmpl/1.23/Thu Sep 3 19:05:33 2009//TBUGZILLA-3_5_2 -/queue.html.tmpl/1.23/Sun Aug 9 20:17:45 2009//TBUGZILLA-3_5_2 +/email.txt.tmpl/1.23/Thu Sep 3 19:05:33 2009//TBUGZILLA-3_5_3 +/queue.html.tmpl/1.24/Mon Dec 7 19:29:32 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/request/CVS/Tag b/template/en/default/request/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/request/CVS/Tag +++ b/template/en/default/request/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/request/queue.html.tmpl b/template/en/default/request/queue.html.tmpl index 4be33ca88..98a331622 100644 --- a/template/en/default/request/queue.html.tmpl +++ b/template/en/default/request/queue.html.tmpl @@ -173,14 +173,12 @@ to some group are shown by default. </p> [% ELSE %] [% FOREACH request = requests %] - [% IF loop.first %] [% PROCESS start_new_table %] [% END %] [% IF request.$group_field != group_value %] [% group_value = request.$group_field %] - [% UNLESS loop.first %] - </table> - [% PROCESS start_new_table %] - [% END %] + [% PROCESS display_buglist UNLESS loop.first %] + [% PROCESS start_new_table %] [% END %] + [% buglist.${request.bug_id} = 1 %] <tr> [% FOREACH column = display_columns %] [% NEXT IF column == group_field || excluded_columns.contains(column) %] @@ -188,12 +186,14 @@ to some group are shown by default. [% END %] </tr> [% END %] - </table> + [% PROCESS display_buglist %] [% END %] [% PROCESS global/footer.html.tmpl %] [% BLOCK start_new_table %] + [% buglist = {} %] + <h3>[% column_headers.$group_field %]: [%+ (request.$group_field || "None") FILTER email FILTER html %]</h3> <table class="requests" cellspacing="0" cellpadding="4" border="1"> @@ -239,3 +239,8 @@ to some group are shown by default. [% request.created FILTER time %] [% END %] +[% BLOCK display_buglist %] + </table> + [% NEXT UNLESS buglist.keys.size %] + <a href="buglist.cgi?bug_id=[% buglist.keys.nsort.join(",") FILTER html %]">(view as buglist)</a> +[% END %] diff --git a/template/en/default/search/CVS/Entries b/template/en/default/search/CVS/Entries index 04f3f169b..4543da802 100644 --- a/template/en/default/search/CVS/Entries +++ b/template/en/default/search/CVS/Entries @@ -1,14 +1,14 @@ -/boolean-charts.html.tmpl/1.19/Sat Dec 6 19:44:48 2008//TBUGZILLA-3_5_2 -/form.html.tmpl/1.64/Wed Nov 18 14:39:34 2009//TBUGZILLA-3_5_2 -/knob.html.tmpl/1.22/Tue Jul 14 03:59:58 2009//TBUGZILLA-3_5_2 -/search-advanced.html.tmpl/1.33/Thu Sep 11 22:09:21 2008//TBUGZILLA-3_5_2 -/search-create-series.html.tmpl/1.14/Sun Nov 11 22:03:21 2007//TBUGZILLA-3_5_2 -/search-help.html.tmpl/1.11/Tue Oct 27 16:55:35 2009//TBUGZILLA-3_5_2 -/search-plugin.xml.tmpl/1.5/Tue Dec 16 22:39:42 2008//TBUGZILLA-3_5_2 -/search-report-graph.html.tmpl/1.13/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_2 -/search-report-select.html.tmpl/1.8/Sat Jan 3 01:08:28 2009//TBUGZILLA-3_5_2 -/search-report-table.html.tmpl/1.14/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_2 -/search-specific.html.tmpl/1.25/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_2 -/tabs.html.tmpl/1.8/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_2 -/type-select.html.tmpl/1.2/Sat Dec 6 21:12:51 2008//TBUGZILLA-3_5_2 +/boolean-charts.html.tmpl/1.19/Sat Dec 6 19:44:48 2008//TBUGZILLA-3_5_3 +/form.html.tmpl/1.67/Sun Jan 31 17:52:40 2010//TBUGZILLA-3_5_3 +/knob.html.tmpl/1.22/Tue Jul 14 03:59:58 2009//TBUGZILLA-3_5_3 +/search-advanced.html.tmpl/1.33/Thu Sep 11 22:09:21 2008//TBUGZILLA-3_5_3 +/search-create-series.html.tmpl/1.14/Sun Nov 11 22:03:21 2007//TBUGZILLA-3_5_3 +/search-help.html.tmpl/1.11/Tue Oct 27 16:55:35 2009//TBUGZILLA-3_5_3 +/search-plugin.xml.tmpl/1.5/Tue Dec 16 22:39:42 2008//TBUGZILLA-3_5_3 +/search-report-graph.html.tmpl/1.13/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_3 +/search-report-select.html.tmpl/1.8/Sat Jan 3 01:08:28 2009//TBUGZILLA-3_5_3 +/search-report-table.html.tmpl/1.14/Tue Aug 12 07:58:07 2008//TBUGZILLA-3_5_3 +/search-specific.html.tmpl/1.25/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_3 +/tabs.html.tmpl/1.8/Mon Jul 20 04:17:44 2009//TBUGZILLA-3_5_3 +/type-select.html.tmpl/1.2/Sat Dec 6 21:12:51 2008//TBUGZILLA-3_5_3 D diff --git a/template/en/default/search/CVS/Tag b/template/en/default/search/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/search/CVS/Tag +++ b/template/en/default/search/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/search/form.html.tmpl b/template/en/default/search/form.html.tmpl index 72e1cf033..ec0d2a90b 100644 --- a/template/en/default/search/form.html.tmpl +++ b/template/en/default/search/form.html.tmpl @@ -153,6 +153,7 @@ function doOnSelectProduct(selectmode) { <td colspan="4"> <table> <tr> + [% Hook.process('before_selects_top') %] [% IF Param('useclassification') %] <td valign="top"> <table> @@ -252,6 +253,7 @@ function doOnSelectProduct(selectmode) { </table> </td> [% END %] + [% Hook.process('after_selects_top') %] </tr> </table> </td> @@ -259,18 +261,24 @@ function doOnSelectProduct(selectmode) { [%# *** Comment URL Whiteboard Keywords *** %] - [% FOREACH field = [ + [% SET freetext_fields = [ { name => "longdesc", description => "A <u>C</u>omment", accesskey => 'c' }, { name => "bug_file_loc", description => "The <u>U</u>RL", accesskey => 'u' }, { name => "status_whiteboard", description => "<u>W</u>hiteboard", - accesskey => 'w' } ] %] - - [% UNLESS field.name == 'status_whiteboard' AND NOT Param('usestatuswhiteboard') %] + accesskey => 'w' } + ] %] + + [% Hook.process('before_freetext_fields') %] + [% FOREACH field = freetext_fields %] + [% NEXT IF field.name == 'status_whiteboard' + AND NOT Param('usestatuswhiteboard') + %] <tr> <th align="right"> - <label for="[% field.name %]" accesskey="[% field.accesskey %]">[% field.description %]</label>: + <label for="[% field.name %]" + accesskey="[% field.accesskey %]">[% field.description %]</label>: </th> <td> [% type = field.name _ "_type" %] @@ -283,7 +291,6 @@ function doOnSelectProduct(selectmode) { </td> <td></td> </tr> - [% END %] [% END %] [% IF use_keywords %] @@ -321,6 +328,8 @@ function doOnSelectProduct(selectmode) { </td> </tr> [% END %] + + [% Hook.process('after_freetext_fields') %] </table> @@ -330,6 +339,7 @@ function doOnSelectProduct(selectmode) { <table> <tr> + [% Hook.process('before_selects_bottom') %] <td> <table> <tr> @@ -408,6 +418,7 @@ function doOnSelectProduct(selectmode) { </tr> </table> </td> + [% Hook.process('after_selects_bottom') %] </tr> </table> @@ -524,9 +535,9 @@ function doOnSelectProduct(selectmode) { <table> <tr> <td> - <select name="bugidtype"> - <option value="include"[% " selected" IF default.bugidtype.0 == "include" %]>Only include</option> - <option value="exclude"[% " selected" IF default.bugidtype.0 == "exclude" %]>Exclude</option> + <select name="bug_id_type"> + <option value="anyexact"[% " selected" IF default.bug_id_type.0 == "anyexact" %]>Only include</option> + <option value="nowords"[% " selected" IF default.bug_id_type.0 == "nowords" %]>Exclude</option> </select> <label for="bug_id">[% terms.bugs %] numbered</label>: </td> @@ -613,10 +624,11 @@ function doOnSelectProduct(selectmode) { <select name="[% sel.name %]" id="[% sel.name %]" multiple="multiple" size="[% sel.size %]"> [% FOREACH value = ${sel.name} %] - [% IF value.id %] - [%# This only applies for Resolution really %] - <option value="[% value.name OR '---' FILTER html %]" - [% " selected" IF lsearch(default.${sel.name}, value.name) != -1 %]> + [% IF value.id %] + [%# This only applies for Resolution really %] + [% v = value.name OR '---' -%] + <option value="[% v FILTER html %]" + [% " selected" IF lsearch(default.${sel.name}, v) != -1 %]> [% display_value(sel.name, value.name) FILTER html %] </option> [% ELSE %] diff --git a/template/en/default/setup/CVS/Entries b/template/en/default/setup/CVS/Entries index 7effe7665..64a88642c 100644 --- a/template/en/default/setup/CVS/Entries +++ b/template/en/default/setup/CVS/Entries @@ -1,2 +1,2 @@ -/strings.txt.pl/1.17/Sat Oct 24 05:30:22 2009//TBUGZILLA-3_5_2 +/strings.txt.pl/1.18/Tue Nov 24 06:09:55 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/setup/CVS/Tag b/template/en/default/setup/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/setup/CVS/Tag +++ b/template/en/default/setup/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/setup/strings.txt.pl b/template/en/default/setup/strings.txt.pl index 2a8e993e7..eec0bd90e 100644 --- a/template/en/default/setup/strings.txt.pl +++ b/template/en/default/setup/strings.txt.pl @@ -45,7 +45,11 @@ COMMANDS TO INSTALL REQUIRED MODULES (You *must* run all these commands and then re-run this script): EOT done => 'done.', - + extension_must_return_name => <<END, +##file## returned ##returned##, which is not a valid name for an extension. +Extensions must return their name, not <code>1</code> or a number. See +the documentation of Bugzilla::Extension for details. +END feature_auth_ldap => 'LDAP Authentication', feature_auth_radius => 'RADIUS Authentication', feature_graphical_reports => 'Graphical Reports', diff --git a/template/en/default/welcome-admin.html.tmpl b/template/en/default/welcome-admin.html.tmpl index 6e5e36ba4..3c03fb234 100644 --- a/template/en/default/welcome-admin.html.tmpl +++ b/template/en/default/welcome-admin.html.tmpl @@ -41,9 +41,6 @@ parameters for this installation; among others:</p> <ul> - <li><a href="editparams.cgi?section=core#maintainer">maintainer</a>, the person - responsible for this installation if something is running wrong.</li> - <li><a href="editparams.cgi?section=core#urlbase">urlbase</a>, which is the URL pointing to this installation and which will be used in emails (which is also the reason you see this page: as long as this parameter is not set, you will see this @@ -52,9 +49,9 @@ <li><a href="editparams.cgi?section=core#cookiepath">cookiepath</a> is important for your browser to manage your cookies correctly.</li> - <li><a href="editparams.cgi?section=core#utf8">utf8</a> will let you encode all - texts into UTF-8, if desired (it is strongly recommended to keep this parameter - turned on).</li> + <li><a href="editparams.cgi?section=general#maintainer">maintainer</a>, + the person responsible for this installation if something is + running wrongly.</li> </ul> <p>Also important are the following parameters:</p> diff --git a/template/en/default/whine/CVS/Entries b/template/en/default/whine/CVS/Entries index d25116e9f..8584a205c 100644 --- a/template/en/default/whine/CVS/Entries +++ b/template/en/default/whine/CVS/Entries @@ -1,5 +1,5 @@ -/mail.html.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/mail.txt.tmpl/1.9/Wed Nov 18 07:05:01 2009//TBUGZILLA-3_5_2 -/multipart-mime.txt.tmpl/1.7/Tue Apr 7 02:29:36 2009//TBUGZILLA-3_5_2 -/schedule.html.tmpl/1.14/Mon Apr 6 20:57:26 2009//TBUGZILLA-3_5_2 +/mail.html.tmpl/1.10/Mon Dec 28 00:58:49 2009//TBUGZILLA-3_5_3 +/mail.txt.tmpl/1.10/Mon Dec 28 00:58:49 2009//TBUGZILLA-3_5_3 +/multipart-mime.txt.tmpl/1.7/Tue Apr 7 02:29:36 2009//TBUGZILLA-3_5_3 +/schedule.html.tmpl/1.14/Mon Apr 6 20:57:26 2009//TBUGZILLA-3_5_3 D diff --git a/template/en/default/whine/CVS/Tag b/template/en/default/whine/CVS/Tag index a91e70ee4..66fbcb3ad 100644 --- a/template/en/default/whine/CVS/Tag +++ b/template/en/default/whine/CVS/Tag @@ -1 +1 @@ -NBUGZILLA-3_5_2 +NBUGZILLA-3_5_3 diff --git a/template/en/default/whine/mail.html.tmpl b/template/en/default/whine/mail.html.tmpl index cd432514f..a4f0edeef 100644 --- a/template/en/default/whine/mail.html.tmpl +++ b/template/en/default/whine/mail.html.tmpl @@ -31,10 +31,6 @@ [% PROCESS global/variables.none.tmpl %] [% PROCESS 'global/field-descs.none.tmpl' %] -[%# assignee_login_string is a literal string used for getting the - # assignee's name out of the bug data %] -[% SET assignee_login_string="map_assigned_to.login_name" %] - <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> @@ -81,7 +77,7 @@ <td align="left">[% display_value("bug_severity", bug.bug_severity) FILTER html %]</td> <td align="left">[% display_value("priority", bug.priority) FILTER html %]</td> <td align="left">[% display_value("rep_platform", bug.rep_platform) FILTER html %]</td> - <td align="left">[% bug.$assignee_login_string FILTER html %]</td> + <td align="left">[% bug.assigned_to FILTER html %]</td> <td align="left">[% display_value("bug_status", bug.bug_status) FILTER html %]</td> <td align="left">[% display_value("resolution", bug.resolution) FILTER html %]</td> <td align="left">[% bug.short_desc FILTER html %]</td> diff --git a/template/en/default/whine/mail.txt.tmpl b/template/en/default/whine/mail.txt.tmpl index 415081302..862ae2671 100644 --- a/template/en/default/whine/mail.txt.tmpl +++ b/template/en/default/whine/mail.txt.tmpl @@ -31,10 +31,6 @@ [% PROCESS global/variables.none.tmpl %] [% PROCESS 'global/field-descs.none.tmpl' %] -[%# assignee_login_string is a literal string used for getting the - # assignee's name out of the bug data %] -[% SET assignee_login_string="map_assigned_to.login_name" %] - [% body %] [% IF author.login == recipient.login %] @@ -56,7 +52,7 @@ Priority: [%+ display_value("priority", bug.priority) -%] Severity: [%+ display_value("bug_severity", bug.bug_severity) -%] Platform: [%+ display_value("rep_platform", bug.rep_platform) %] - Assignee: [%+ bug.$assignee_login_string %] + Assignee: [%+ bug.assigned_to %] Status: [%+ display_value("bug_status", bug.bug_status) %] [%- IF bug.resolution -%] Resolution: [% display_value("resolution", bug.resolution) -%] [%- END %] diff --git a/template/en/extension/CVS/Entries b/template/en/extension/CVS/Entries deleted file mode 100644 index b4174109e..000000000 --- a/template/en/extension/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/filterexceptions.pl/1.2/Sat Feb 25 23:10:53 2006//TBUGZILLA-3_5_2 -D diff --git a/template/en/extension/CVS/Repository b/template/en/extension/CVS/Repository deleted file mode 100644 index 0d2eb6dd2..000000000 --- a/template/en/extension/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -mozilla/webtools/bugzilla/template/en/extension diff --git a/template/en/extension/CVS/Tag b/template/en/extension/CVS/Tag deleted file mode 100644 index a91e70ee4..000000000 --- a/template/en/extension/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -NBUGZILLA-3_5_2 diff --git a/template/en/extension/filterexceptions.pl b/template/en/extension/filterexceptions.pl deleted file mode 100644 index 29e2a1e94..000000000 --- a/template/en/extension/filterexceptions.pl +++ /dev/null @@ -1,42 +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 are the Bugzilla tests. -# -# The Initial Developer of the Original Code is Jacob Steenhagen. -# Portions created by Jacob Steenhagen are -# Copyright (C) 2001 Jacob Steenhagen. All -# Rights Reserved. -# -# Contributor(s): Gervase Markham <gerv@gerv.net> -# Joel Peshkin <bugreport@peshkin.net> - -# Important! The following classes of directives are excluded in the test, -# and so do not need to be added here. Doing so will cause warnings. -# See 008filter.t for more details. -# -# Comments - [%#... -# Directives - [% IF|ELSE|UNLESS|FOREACH... -# Assignments - [% foo = ... -# Simple literals - [% " selected" ... -# Values always used for numbers - [% (i|j|k|n|count) %] -# Params - [% Param(... -# Safe functions - [% (time2str)... -# Safe vmethods - [% foo.size %] [% foo.length %] -# [% foo.push() %] -# TT loop variables - [% loop.count %] -# Already-filtered stuff - [% wibble FILTER html %] -# where the filter is one of html|csv|js|url_quote|quoteUrls|time|uri|xml|none - -%::safe = ( -); - diff --git a/userprefs.cgi b/userprefs.cgi index cffae38cc..e6ee8fb8a 100755 --- a/userprefs.cgi +++ b/userprefs.cgi @@ -247,7 +247,7 @@ sub SaveEmail { my $cgi = Bugzilla->cgi; my $user = Bugzilla->user; - Bugzilla::User::match_field($cgi, { 'new_watchedusers' => {'type' => 'multi'} }); + Bugzilla::User::match_field({ 'new_watchedusers' => {'type' => 'multi'} }); ########################################################################### # Role-based preferences diff --git a/whine.pl b/whine.pl index b2508edc2..10e9a5e13 100755 --- a/whine.pl +++ b/whine.pl @@ -440,7 +440,6 @@ sub run_queries { bug_status resolution short_desc - assigned_to ); # A new Bugzilla::CGI object needs to be created to allow # Bugzilla::Search to execute a saved query. It's exceedingly weird, -- GitLab