HyperKitty-1.1.4/0002775000175000017500000000000013166626114015237 5ustar abompardabompard00000000000000HyperKitty-1.1.4/HyperKitty.egg-info/0002775000175000017500000000000013166626114021045 5ustar abompardabompard00000000000000HyperKitty-1.1.4/HyperKitty.egg-info/pbr.json0000644000175000017500000000005712622146513022515 0ustar abompardabompard00000000000000{"is_release": false, "git_version": "cca11e2"}HyperKitty-1.1.4/HyperKitty.egg-info/top_level.txt0000644000175000017500000000003313166626114023567 0ustar abompardabompard00000000000000example_project hyperkitty HyperKitty-1.1.4/HyperKitty.egg-info/dependency_links.txt0000644000175000017500000000000113166626114025107 0ustar abompardabompard00000000000000 HyperKitty-1.1.4/HyperKitty.egg-info/PKG-INFO0000644000175000017500000000602413166626114022140 0ustar abompardabompard00000000000000Metadata-Version: 1.1 Name: HyperKitty Version: 1.1.4 Summary: A web interface to access GNU Mailman v3 archives Home-page: https://gitlab.com/mailman/hyperkitty Author: HyperKitty Developers Author-email: hyperkitty-devel@lists.fedorahosted.org License: GPLv3 Description: ======================================== HyperKitty - Archiver for GNU Mailman v3 ======================================== .. image:: https://gitlab.com/mailman/hyperkitty/badges/master/build.svg :target: https://gitlab.com/mailman/hyperkitty/commits/master .. image:: https://gitlab.com/mailman/hyperkitty/badges/master/coverage.svg?job=coverage :target: https://gitlab.com/mailman/hyperkitty/commits/master .. image:: https://readthedocs.org/projects/hyperkitty/badge/?version=latest :target: https://hyperkitty.readthedocs.io .. image:: http://img.shields.io/pypi/v/hyperkitty.svg :target: https://pypi.python.org/pypi/hyperkitty .. image:: http://img.shields.io/pypi/dm/hyperkitty.svg :target: https://pypi.python.org/pypi/hyperkitty HyperKitty is an open source Django application under development. It aims to provide a web interface to access GNU Mailman v3 archives. Links ===== - Full documentation: https://hyperkitty.readthedocs.org - Project page and feedback: https://gitlab.com/mailman/hyperkitty - Demo server: https://lists.stg.fedoraproject.org/ - Local development setup: http://wiki.list.org/HyperKitty/DevelopmentSetupGuide License ======= HyperKitty is licensed under the `GPL v3.0 `_ Help, Bugs, Feedback ==================== If you need help with HyperKitty, want to keep up with progress, chat with developers, or ask any other questions about HyperKitty, you can hang out in the IRC channel: `#mailman on irc.freenode.net `_. You can also subscribe to our `mailing list `_ of developers. To report bugs, please create `a ticket here `_ or contact us on IRC. About other links of feedback, please see below. - User mailing list: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/ - The "mailman" developers links: https://mail.python.org/mailman/listinfo/mailman-developers/ Keywords: email Platform: UNKNOWN Classifier: Framework :: Django Classifier: Development Status :: 4 - Beta Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) Classifier: Topic :: Communications :: Email :: Mailing List Servers Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: JavaScript HyperKitty-1.1.4/HyperKitty.egg-info/requires.txt0000644000175000017500000000053613166626114023445 0ustar abompardabompard00000000000000Django>=1.8 Django<1.11 django_mailman3>=1.0.0 django-gravatar2>=1.0.6 djangorestframework>=3.0.0 rjsmin>=1.0.6 cssmin>=0.2.0 robot-detection>=0.3 pytz>=2012 django-paintstore>=0.1.2 django-compressor>=1.3 mailmanclient>=3.1.1 python-dateutil < 2.0 networkx>=1.9.1 enum34>=1.0 django-haystack>=2.5.0 django-extensions>=1.3.7 lockfile>=0.9.1 django-q HyperKitty-1.1.4/HyperKitty.egg-info/SOURCES.txt0000644000175000017500000005115113166626114022730 0ustar abompardabompard00000000000000.coveragerc AUTHORS.txt COPYING.txt MANIFEST.in README.rst hyperkitty.spec setup.py tox.ini HyperKitty.egg-info/PKG-INFO HyperKitty.egg-info/SOURCES.txt HyperKitty.egg-info/dependency_links.txt HyperKitty.egg-info/pbr.json HyperKitty.egg-info/requires.txt HyperKitty.egg-info/top_level.txt doc/Makefile doc/_sass.rst doc/conf.py doc/database.rst doc/development.rst doc/index.rst doc/install.rst doc/news.rst example_project/README.rst example_project/__init__.py example_project/apache.conf example_project/crontab example_project/manage.py example_project/qcluster.service example_project/settings.py example_project/urls.py example_project/wsgi.py example_project/logs/.keep hyperkitty/__init__.py hyperkitty/apps.py hyperkitty/context_processors.py hyperkitty/forms.py hyperkitty/search_indexes.py hyperkitty/signals.py hyperkitty/tasks.py hyperkitty/urls.py hyperkitty/api/__init__.py hyperkitty/api/email.py hyperkitty/api/mailinglist.py hyperkitty/api/sender.py hyperkitty/api/tag.py hyperkitty/api/thread.py hyperkitty/api/utils.py hyperkitty/fixtures/first_start.json hyperkitty/fixtures/tag_testdata.json hyperkitty/jobs/__init__.py hyperkitty/jobs/empty_threads.py hyperkitty/jobs/new_lists_from_mailman.py hyperkitty/jobs/orphan_emails.py hyperkitty/jobs/recent_threads_cache.py hyperkitty/jobs/sync_mailman.py hyperkitty/jobs/thread_order_depth.py hyperkitty/jobs/thread_starting_email.py hyperkitty/jobs/update_and_clean_index.py hyperkitty/jobs/update_index.py hyperkitty/lib/__init__.py hyperkitty/lib/analysis.py hyperkitty/lib/compat.py hyperkitty/lib/incoming.py hyperkitty/lib/mailman.py hyperkitty/lib/mockup.py hyperkitty/lib/posting.py hyperkitty/lib/utils.py hyperkitty/lib/view_helpers.py hyperkitty/management/__init__.py hyperkitty/management/utils.py hyperkitty/management/commands/__init__.py hyperkitty/management/commands/hyperkitty_import.py hyperkitty/management/commands/hyperkitty_warm_up_cache.py hyperkitty/management/commands/mailman_sync.py hyperkitty/migrations/0001_initial.py hyperkitty/migrations/0002_auto_20150311_0913.py hyperkitty/migrations/0003_thread_starting_email.py hyperkitty/migrations/0004_archived_date_and_subject.py hyperkitty/migrations/0005_MailingList_list_id.py hyperkitty/migrations/0006_thread_on_delete.py hyperkitty/migrations/0007_allauth_20160808_1604.py hyperkitty/migrations/0008_django_mailman3_profile.py hyperkitty/migrations/0009_duplicate_persona_users.py hyperkitty/migrations/0010_email_sender_name.py hyperkitty/migrations/0011_email_parent.py hyperkitty/migrations/0012_thread_order_null.py hyperkitty/migrations/0013_mailinglist_id_1.py hyperkitty/migrations/0014_mailinglist_id_2.py hyperkitty/migrations/0015_mailinglist_id_3.py hyperkitty/migrations/__init__.py hyperkitty/models/__init__.py hyperkitty/models/category.py hyperkitty/models/common.py hyperkitty/models/email.py hyperkitty/models/favorite.py hyperkitty/models/mailinglist.py hyperkitty/models/profile.py hyperkitty/models/sender.py hyperkitty/models/tag.py hyperkitty/models/thread.py hyperkitty/models/vote.py hyperkitty/static/hyperkitty/robots.txt hyperkitty/static/hyperkitty/img/ajax-loader.gif hyperkitty/static/hyperkitty/img/button_back.png hyperkitty/static/hyperkitty/img/button_back.svg hyperkitty/static/hyperkitty/img/button_newer.png hyperkitty/static/hyperkitty/img/button_older.png hyperkitty/static/hyperkitty/img/discussion.png hyperkitty/static/hyperkitty/img/email_bg.png hyperkitty/static/hyperkitty/img/favicon.ico hyperkitty/static/hyperkitty/img/hyperkitty-favicon.svg hyperkitty/static/hyperkitty/img/hyperkitty-logo.svg hyperkitty/static/hyperkitty/img/like.png hyperkitty/static/hyperkitty/img/likealot.png hyperkitty/static/hyperkitty/img/logo.png hyperkitty/static/hyperkitty/img/mail-attachment.png hyperkitty/static/hyperkitty/img/neutral.png hyperkitty/static/hyperkitty/img/newthread.png hyperkitty/static/hyperkitty/img/notsaved.png hyperkitty/static/hyperkitty/img/participant.png hyperkitty/static/hyperkitty/img/reply.png hyperkitty/static/hyperkitty/img/saved.png hyperkitty/static/hyperkitty/img/show_discussion.png hyperkitty/static/hyperkitty/img/youdislike-disabled.png hyperkitty/static/hyperkitty/img/youdislike.png hyperkitty/static/hyperkitty/img/youlike-disabled.png hyperkitty/static/hyperkitty/img/youlike.png hyperkitty/static/hyperkitty/js/hyperkitty-common.js hyperkitty/static/hyperkitty/js/hyperkitty-index.js hyperkitty/static/hyperkitty/js/hyperkitty-overview.js hyperkitty/static/hyperkitty/js/hyperkitty-thread.js hyperkitty/static/hyperkitty/js/hyperkitty-userprofile.js hyperkitty/static/hyperkitty/libs/d3.v2.min.js hyperkitty/static/hyperkitty/libs/jquery.expander.js hyperkitty/static/hyperkitty/libs/jquery.hotkeys.js hyperkitty/static/hyperkitty/libs/bootstrap/README.txt hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svg hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2 hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap-sprockets.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.min.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/affix.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/alert.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/button.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/carousel.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/collapse.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/dropdown.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/modal.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/popover.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/scrollspy.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/tab.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/tooltip.js hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/transition.js hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-compass.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-mincer.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-sprockets.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_alerts.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_badges.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_breadcrumbs.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_button-groups.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_buttons.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_carousel.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_close.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_code.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_component-animations.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_dropdowns.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_forms.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_glyphicons.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_grid.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_input-groups.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_jumbotron.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_labels.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_list-group.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_media.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_mixins.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_modals.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_navbar.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_navs.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_normalize.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_pager.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_pagination.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_panels.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_popovers.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_print.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_progress-bars.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_responsive-embed.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_responsive-utilities.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_scaffolding.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_tables.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_theme.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_thumbnails.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_tooltip.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_type.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_utilities.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_variables.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_wells.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_alerts.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_buttons.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_center-block.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_forms.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_gradients.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_grid.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_image.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_labels.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_list-group.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_opacity.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_pagination.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_panels.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_reset-text.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_resize.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_size.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_table-row.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss hyperkitty/static/hyperkitty/libs/fonts/droid/DroidSans.ttf hyperkitty/static/hyperkitty/libs/fonts/droid/DroidSansMono.ttf hyperkitty/static/hyperkitty/libs/fonts/droid/droid.css hyperkitty/static/hyperkitty/libs/fonts/font-awesome/VERSION.txt hyperkitty/static/hyperkitty/libs/fonts/font-awesome/css/font-awesome.css hyperkitty/static/hyperkitty/libs/fonts/font-awesome/css/font-awesome.min.css hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/FontAwesome.otf hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/fontawesome-webfont.eot hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/fontawesome-webfont.svg hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/fontawesome-webfont.ttf hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/fontawesome-webfont.woff hyperkitty/static/hyperkitty/libs/fonts/font-awesome/fonts/fontawesome-webfont.woff2 hyperkitty/static/hyperkitty/libs/fonts/icomoon/icomoon.css hyperkitty/static/hyperkitty/libs/fonts/icomoon/fonts/icomoon.eot hyperkitty/static/hyperkitty/libs/fonts/icomoon/fonts/icomoon.svg hyperkitty/static/hyperkitty/libs/fonts/icomoon/fonts/icomoon.ttf hyperkitty/static/hyperkitty/libs/fonts/icomoon/fonts/icomoon.woff hyperkitty/static/hyperkitty/libs/jquery/jquery-1.10.1.min.js hyperkitty/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.js hyperkitty/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js hyperkitty/static/hyperkitty/libs/jquery/jquery-ui-selection.txt hyperkitty/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.css hyperkitty/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.min.css hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/animated-overlay.gif hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-icons_222222_256x240.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-icons_2e83ff_256x240.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-icons_454545_256x240.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-icons_888888_256x240.png hyperkitty/static/hyperkitty/libs/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png hyperkitty/static/hyperkitty/sass/_hyperkitty-base.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-common.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-index.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-message.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-overview.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-threadslist.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-user.scss hyperkitty/static/hyperkitty/sass/_hyperkitty-variables.scss hyperkitty/static/hyperkitty/sass/hyperkitty.scss hyperkitty/static/hyperkitty/sass/bootstrap/_custom-grid.scss hyperkitty/static/hyperkitty/sass/bootstrap/_custom-mixins.scss hyperkitty/static/hyperkitty/sass/bootstrap/_custom-modals.scss hyperkitty/static/hyperkitty/sass/bootstrap/_custom-utilities.scss hyperkitty/static/hyperkitty/sass/bootstrap/_custom-variables.scss hyperkitty/templates/account/base.html hyperkitty/templates/django_mailman3/base.html hyperkitty/templates/hyperkitty/404.html hyperkitty/templates/hyperkitty/500.html hyperkitty/templates/hyperkitty/api.html hyperkitty/templates/hyperkitty/base.html hyperkitty/templates/hyperkitty/bottom.html hyperkitty/templates/hyperkitty/headers.html hyperkitty/templates/hyperkitty/index.html hyperkitty/templates/hyperkitty/message.html hyperkitty/templates/hyperkitty/message_delete.html hyperkitty/templates/hyperkitty/message_new.html hyperkitty/templates/hyperkitty/navbar-brand.html hyperkitty/templates/hyperkitty/overview.html hyperkitty/templates/hyperkitty/reattach.html hyperkitty/templates/hyperkitty/search_results.html hyperkitty/templates/hyperkitty/thread.html hyperkitty/templates/hyperkitty/thread_list.html hyperkitty/templates/hyperkitty/top.html hyperkitty/templates/hyperkitty/user_posts.html hyperkitty/templates/hyperkitty/user_public_profile.html hyperkitty/templates/hyperkitty/ajax/reattach_suggest.html hyperkitty/templates/hyperkitty/ajax/replies.html hyperkitty/templates/hyperkitty/ajax/temp_message.html hyperkitty/templates/hyperkitty/errors/notimplemented.html hyperkitty/templates/hyperkitty/errors/private.html hyperkitty/templates/hyperkitty/fragments/like_form.html hyperkitty/templates/hyperkitty/fragments/month_list.html hyperkitty/templates/hyperkitty/fragments/overview_threads.html hyperkitty/templates/hyperkitty/fragments/overview_top_posters.html hyperkitty/templates/hyperkitty/fragments/send_as.html hyperkitty/templates/hyperkitty/messages/message.html hyperkitty/templates/hyperkitty/messages/right_col.html hyperkitty/templates/hyperkitty/messages/summary_message.html hyperkitty/templates/hyperkitty/threads/category.html hyperkitty/templates/hyperkitty/threads/right_col.html hyperkitty/templates/hyperkitty/threads/summary_thread_large.html hyperkitty/templates/hyperkitty/threads/tags.html hyperkitty/templates/hyperkitty/user_profile/base.html hyperkitty/templates/hyperkitty/user_profile/favorites.html hyperkitty/templates/hyperkitty/user_profile/last_views.html hyperkitty/templates/hyperkitty/user_profile/profile.html hyperkitty/templates/hyperkitty/user_profile/subscriptions.html hyperkitty/templates/hyperkitty/user_profile/votes.html hyperkitty/templates/search/indexes/hyperkitty/email_subject.txt hyperkitty/templates/search/indexes/hyperkitty/email_text.txt hyperkitty/templatetags/__init__.py hyperkitty/templatetags/hk_generic.py hyperkitty/templatetags/hk_haystack.py hyperkitty/tests/__init__.py hyperkitty/tests/_test_caching.py hyperkitty/tests/settings_test.py hyperkitty/tests/test_search_index.py hyperkitty/tests/test_signals.py hyperkitty/tests/test_tasks.py hyperkitty/tests/test_templatetags.py hyperkitty/tests/urls_test.py hyperkitty/tests/utils.py hyperkitty/tests/commands/__init__.py hyperkitty/tests/commands/test_import.py hyperkitty/tests/commands/test_mailman_sync.py hyperkitty/tests/jobs/__init__.py hyperkitty/tests/jobs/test_update_index.py hyperkitty/tests/lib/__init__.py hyperkitty/tests/lib/test_analysis.py hyperkitty/tests/lib/test_incoming.py hyperkitty/tests/lib/test_mailman.py hyperkitty/tests/lib/test_posting.py hyperkitty/tests/lib/test_utils.py hyperkitty/tests/lib/test_view_helpers.py hyperkitty/tests/migrations/__init__.py hyperkitty/tests/migrations/test_0009.py hyperkitty/tests/models/__init__.py hyperkitty/tests/models/test_email.py hyperkitty/tests/models/test_lastview.py hyperkitty/tests/models/test_mailinglist.py hyperkitty/tests/models/test_profile.py hyperkitty/tests/models/test_sender.py hyperkitty/tests/models/test_tag.py hyperkitty/tests/models/test_thread.py hyperkitty/tests/models/test_vote.py hyperkitty/tests/testdata/attachment-1.txt hyperkitty/tests/testdata/non-ascii-headers.txt hyperkitty/tests/testdata/payload-utf8-wrong.txt hyperkitty/tests/testdata/payload-utf8-wrong.txt.orig hyperkitty/tests/testdata/strange-in-reply-to-header.txt hyperkitty/tests/testdata/wrong-in-reply-to-header.txt hyperkitty/tests/views/__init__.py hyperkitty/tests/views/test_accounts.py hyperkitty/tests/views/test_archives.py hyperkitty/tests/views/test_compat.py hyperkitty/tests/views/test_index.py hyperkitty/tests/views/test_mailman.py hyperkitty/tests/views/test_message.py hyperkitty/tests/views/test_search.py hyperkitty/tests/views/test_thread.py hyperkitty/views/__init__.py hyperkitty/views/accounts.py hyperkitty/views/categories.py hyperkitty/views/compat.py hyperkitty/views/index.py hyperkitty/views/mailman.py hyperkitty/views/message.py hyperkitty/views/mlist.py hyperkitty/views/search.py hyperkitty/views/tags.py hyperkitty/views/thread.py hyperkitty/views/users.pyHyperKitty-1.1.4/setup.cfg0000664000175000017500000000007313166626114017056 0ustar abompardabompard00000000000000[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 HyperKitty-1.1.4/AUTHORS.txt0000664000175000017500000000026413111776710017123 0ustar abompardabompard00000000000000Aamir Khan Pierre-Yves Chibon Aurelien Bompard Aslak Knutsen Karen Tang HyperKitty-1.1.4/PKG-INFO0000664000175000017500000000602413166626114016334 0ustar abompardabompard00000000000000Metadata-Version: 1.1 Name: HyperKitty Version: 1.1.4 Summary: A web interface to access GNU Mailman v3 archives Home-page: https://gitlab.com/mailman/hyperkitty Author: HyperKitty Developers Author-email: hyperkitty-devel@lists.fedorahosted.org License: GPLv3 Description: ======================================== HyperKitty - Archiver for GNU Mailman v3 ======================================== .. image:: https://gitlab.com/mailman/hyperkitty/badges/master/build.svg :target: https://gitlab.com/mailman/hyperkitty/commits/master .. image:: https://gitlab.com/mailman/hyperkitty/badges/master/coverage.svg?job=coverage :target: https://gitlab.com/mailman/hyperkitty/commits/master .. image:: https://readthedocs.org/projects/hyperkitty/badge/?version=latest :target: https://hyperkitty.readthedocs.io .. image:: http://img.shields.io/pypi/v/hyperkitty.svg :target: https://pypi.python.org/pypi/hyperkitty .. image:: http://img.shields.io/pypi/dm/hyperkitty.svg :target: https://pypi.python.org/pypi/hyperkitty HyperKitty is an open source Django application under development. It aims to provide a web interface to access GNU Mailman v3 archives. Links ===== - Full documentation: https://hyperkitty.readthedocs.org - Project page and feedback: https://gitlab.com/mailman/hyperkitty - Demo server: https://lists.stg.fedoraproject.org/ - Local development setup: http://wiki.list.org/HyperKitty/DevelopmentSetupGuide License ======= HyperKitty is licensed under the `GPL v3.0 `_ Help, Bugs, Feedback ==================== If you need help with HyperKitty, want to keep up with progress, chat with developers, or ask any other questions about HyperKitty, you can hang out in the IRC channel: `#mailman on irc.freenode.net `_. You can also subscribe to our `mailing list `_ of developers. To report bugs, please create `a ticket here `_ or contact us on IRC. About other links of feedback, please see below. - User mailing list: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/ - The "mailman" developers links: https://mail.python.org/mailman/listinfo/mailman-developers/ Keywords: email Platform: UNKNOWN Classifier: Framework :: Django Classifier: Development Status :: 4 - Beta Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) Classifier: Topic :: Communications :: Email :: Mailing List Servers Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: JavaScript HyperKitty-1.1.4/setup.py0000775000175000017500000000411413166624624016756 0ustar abompardabompard00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import re import sys from setuptools import setup, find_packages # extract the version number without importing the package with open('hyperkitty/__init__.py') as fp: for line in fp: mo = re.match("""VERSION\s*=\s*['"](?P[^'"]+?)['"]""", line) if mo: __version__ = mo.group('version') break else: print('No version number found') sys.exit(1) # Requirements REQUIRES = [ "Django>=1.8", # Don't upgrade to 1.11 until django-haystack supports it: # https://github.com/django-haystack/django-haystack/pull/1499 "Django<1.11", "django_mailman3>=1.0.0", "django-gravatar2>=1.0.6", "djangorestframework>=3.0.0", "rjsmin>=1.0.6", "cssmin>=0.2.0", "robot-detection>=0.3", "pytz>=2012", "django-paintstore>=0.1.2", "django-compressor>=1.3", "mailmanclient>=3.1.1", "python-dateutil < 2.0", # python-dateutil 2.0+ is for Python 3 "networkx>=1.9.1", "enum34>=1.0", "django-haystack>=2.5.0", "django-extensions>=1.3.7", "lockfile>=0.9.1", "django-q", ] setup( name="HyperKitty", version=__version__, description="A web interface to access GNU Mailman v3 archives", long_description=open('README.rst').read(), author='HyperKitty Developers', author_email='hyperkitty-devel@lists.fedorahosted.org', url="https://gitlab.com/mailman/hyperkitty", license="GPLv3", classifiers=[ "Framework :: Django", "Development Status :: 4 - Beta", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Topic :: Communications :: Email :: Mailing List Servers", "Programming Language :: Python :: 2", "Programming Language :: JavaScript", ], keywords='email', # packages=find_packages(exclude=["*.test", "test", "*.test.*"]), packages=find_packages(), include_package_data=True, install_requires=REQUIRES, tests_require=[ "mock", "Whoosh>=2.5.7", "beautifulsoup4>=4.3.2", ], ) HyperKitty-1.1.4/hyperkitty.spec0000664000175000017500000002125413166625774020344 0ustar abompardabompard00000000000000%global pypi_name HyperKitty #%%global prerel 1 Name: hyperkitty Version: 1.1.4 Release: %{?prerel:0.}1%{?dist} Summary: A web interface to access GNU Mailman v3 archives License: GPLv3 URL: https://gitlab.com/mailman/hyperkitty Source0: http://pypi.python.org/packages/source/H/%{pypi_name}/%{pypi_name}-%{version}%{?prerel:.dev0}.tar.gz # Patch settings to use the FHS Patch0: hyperkitty-fhs.patch BuildArch: noarch BuildRequires: python-devel BuildRequires: python-sphinx BuildRequires: systemd # Unit tests in %%check BuildRequires: python-django-gravatar2 BuildRequires: python-django-q BuildRequires: python-django-rest-framework >= 2.2.0 BuildRequires: python-django-compressor BuildRequires: python-rjsmin BuildRequires: sassc BuildRequires: python-mailman-client >= 3.1.1 BuildRequires: python-robot-detection BuildRequires: pytz BuildRequires: python-django-paintstore BuildRequires: python-django >= 1.8 BuildRequires: python-dateutil BuildRequires: python-networkx BuildRequires: python-enum34 BuildRequires: python-django-haystack >= 2.5.0 BuildRequires: python-django-extensions BuildRequires: python-django-mailman3 BuildRequires: python-lockfile # Unit tests only BuildRequires: python-beautifulsoup4 BuildRequires: python-mock BuildRequires: python-whoosh # SELinux BuildRequires: checkpolicy, selinux-policy-devel, /usr/share/selinux/devel/policyhelp BuildRequires: hardlink %{?systemd_requires} Requires: python-django-gravatar2 Requires: python-django-rest-framework >= 2.2.0 Requires: python-django-q Requires: python-django-compressor Requires: python-rjsmin Requires: sassc Requires: python-mailman-client >= 3.1.1 Requires: python-robot-detection Requires: pytz Requires: python-django-paintstore Requires: python-django >= 1.8 Requires: python-dateutil Requires: python-networkx Requires: python-enum34 Requires: python-django-haystack >= 2.5.0 Requires: python-django-extensions Requires: python-django-mailman3 Requires: python-lockfile %description HyperKitty is an open source Django application under development. It aims at providing a web interface to access GNU Mailman archives. The code is available from: https://gitlab.com/mailman/hyperkitty . The documentation can be browsed online at https://hyperkitty.readthedocs.org . %package selinux %global selinux_variants mls targeted Summary: SELinux policy module for %{name} Requires: %{name} = %{version}-%{release} %{!?_selinux_policy_version: %global _selinux_policy_version %(sed -e 's,.*selinux-policy-\\([^/]*\\)/.*,\\1,' /usr/share/selinux/devel/policyhelp 2>/dev/null)} %if "%{_selinux_policy_version}" != "" Requires: selinux-policy >= %{_selinux_policy_version} %endif Requires(post): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles, %{name} Requires(postun): /usr/sbin/semodule, /sbin/restorecon, /sbin/fixfiles, %{name} %description selinux This is the SELinux module for %{name}, install it if you are using SELinux. %prep %setup -q -n %{pypi_name}-%{version}%{?prerel:.dev0} %patch0 -p0 # Remove bundled egg-info rm -rf %{pypi_name}.egg-info # remove shebang on manage.py sed -i -e '1d' example_project/manage.py # remove executable permissions on wsgi.py chmod -x example_project/wsgi.py # remove __init__.py in example_project to prevent it from being # installed (find_package won't find it). It's empty anyway. rm -f example_project/__init__.py # SELinux mkdir SELinux echo '%{_localstatedir}/lib/%{name}/sites(/.*)? gen_context(system_u:object_r:httpd_sys_content_t,s0)' \ > SELinux/%{name}.fc # remember to bump the following version if the policy is updated echo "policy_module(%{name}, 1.0)" > SELinux/%{name}.te %build %{__python} setup.py build # generate html docs sphinx-build doc html # remove the sphinx-build leftovers rm -rf html/.{doctrees,buildinfo} # SELinux cd SELinux for selinuxvariant in %{selinux_variants}; do make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile mv %{name}.pp %{name}.pp.${selinuxvariant} make NAME=${selinuxvariant} -f /usr/share/selinux/devel/Makefile clean done cd - %install rm -rf %{buildroot} %{__python} setup.py install --skip-build --root %{buildroot} # Install the Django files mkdir -p %{buildroot}%{_sysconfdir}/%{name}/sites/default cp -p example_project/{manage,settings,urls,wsgi}.py \ %{buildroot}%{_sysconfdir}/%{name}/sites/default/ touch --reference example_project/manage.py \ %{buildroot}%{_sysconfdir}/%{name}/sites/default/__init__.py # Apache HTTPd config file install -p -m 644 -D example_project/apache.conf \ %{buildroot}/%{_sysconfdir}/httpd/conf.d/hyperkitty.conf touch --reference example_project/apache.conf \ %{buildroot}/%{_sysconfdir}/httpd/conf.d/hyperkitty.conf # SQLite databases directory, static files and fulltext_index mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/sites/default/static mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/sites/default/db mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/sites/default/fulltext_index # Cron jobs mkdir -p %{buildroot}%{_sysconfdir}/cron.d install -p -m 644 -D example_project/crontab \ %{buildroot}%{_sysconfdir}/cron.d/%{name} # Logs mkdir -p %{buildroot}%{_localstatedir}/log/%{name}/ # Systemd install -p -m 644 -D example_project/qcluster.service \ %{buildroot}%{_unitdir}/%{name}-qcluster.service # SELinux for selinuxvariant in %{selinux_variants}; do install -d %{buildroot}%{_datadir}/selinux/${selinuxvariant} install -p -m 644 SELinux/%{name}.pp.${selinuxvariant} \ %{buildroot}%{_datadir}/selinux/${selinuxvariant}/%{name}.pp done /usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux %check PYTHONPATH=`pwd` %{__python} example_project/manage.py test --settings=hyperkitty.tests.settings_test hyperkitty %post # Install the service file %systemd_post %{name}-qcluster.service # Build the static files cache %{_bindir}/django-admin collectstatic \ --pythonpath=%{_sysconfdir}/%{name}/sites/default \ --settings=settings --noinput &>/dev/null || : %{_bindir}/django-admin compress \ --pythonpath=%{_sysconfdir}/%{name}/sites/default \ --settings=settings &>/dev/null || : %preun %systemd_preun %{name}-qcluster.service %postun %systemd_postun_with_restart %{name}-qcluster.service %post selinux for selinuxvariant in %{selinux_variants}; do /usr/sbin/semodule -s ${selinuxvariant} -i \ %{_datadir}/selinux/${selinuxvariant}/%{name}.pp &> /dev/null || : done /sbin/fixfiles -R %{name} restore || : /sbin/restorecon -R %{_localstatedir}/lib/%{name} || : %postun selinux if [ $1 -eq 0 ] ; then for selinuxvariant in %{selinux_variants}; do /usr/sbin/semodule -s ${selinuxvariant} -r %{name} &> /dev/null || : done /sbin/fixfiles -R %{name} restore || : [ -d %{_localstatedir}/lib/%{name} ] && \ /sbin/restorecon -R %{_localstatedir}/lib/%{name} &> /dev/null || : fi %files %doc html README.rst COPYING.txt %config(noreplace) %{_sysconfdir}/%{name} %config(noreplace) %attr(640,root,apache) %{_sysconfdir}/%{name}/sites/default/settings.py %config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf %config(noreplace) %{_sysconfdir}/cron.d/%{name} %{_unitdir}/*.service %{python_sitelib}/%{name} %{python_sitelib}/%{pypi_name}-*.egg-info %dir %{_localstatedir}/lib/%{name} %dir %{_localstatedir}/lib/%{name}/sites %dir %{_localstatedir}/lib/%{name}/sites/default %dir %{_localstatedir}/lib/%{name}/sites/default/static %attr(755,apache,apache) %{_localstatedir}/lib/%{name}/sites/default/db %attr(755,apache,apache) %{_localstatedir}/lib/%{name}/sites/default/fulltext_index %attr(755,apache,apache) %{_localstatedir}/log/%{name}/ %files selinux %defattr(-,root,root,0755) %doc SELinux/* %{_datadir}/selinux/*/%{name}.pp %changelog * Fri May 26 2017 Aurelien Bompard - 1.1.0-1 - version 1.1.0 * Wed Aug 17 2016 Aurelien Bompard - 1.0.4-1 - version 1.0.4 * Mon Nov 25 2013 Aurelien Bompard - 0.1.7-0.1 - add SELinux policy module, according to: http://fedoraproject.org/wiki/SELinux_Policy_Modules_Packaging_Draft * Thu Aug 15 2013 Aurelien Bompard - 0.1.7-0.1 - don't remove the static files cache on uninstall (it may have local modifications) * Tue Jul 23 2013 Aurelien Bompard - 0.1.6-1 - version 0.1.6 * Thu Mar 28 2013 Aurelien Bompard - 0.1.5-0.2 - put collected static files in _localstatedir * Tue Feb 19 2013 Aurelien Bompard - 0.1.4-1 - update to 0.1.4 * Thu Nov 29 2012 Aurelien Bompard - 0.1.3-1 - Initial package. HyperKitty-1.1.4/hyperkitty/0002775000175000017500000000000013166626114017453 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/fixtures/0002775000175000017500000000000013166626114021324 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/fixtures/first_start.json0000644000175000017500000000151212167726157024566 0ustar abompardabompard00000000000000[ { "pk": 1, "model": "hyperkitty.threadcategory", "fields": { "color": "#3a87ad", "name": "announce" } }, { "pk": 2, "model": "hyperkitty.threadcategory", "fields": { "color": "#65cdd4", "name": "question" } }, { "pk": 3, "model": "hyperkitty.threadcategory", "fields": { "color": "#e084e0", "name": "schedule" } }, { "pk": 4, "model": "hyperkitty.threadcategory", "fields": { "color": "#f89406", "name": "todo" } }, { "pk": 5, "model": "hyperkitty.threadcategory", "fields": { "color": "#468847", "name": "policy" } } ] HyperKitty-1.1.4/hyperkitty/fixtures/tag_testdata.json0000664000175000017500000000306612061343753024664 0ustar abompardabompard00000000000000[{ "pk": 1, "model": "hyperkitty.rating", "fields": { "vote": 1, "user": 1, "list_address": "devel@fp.o", "messageid": "20120807173237.GA7638@nostromo.devel.redhat.com" } }, { "pk": 2, "model": "hyperkitty.rating", "fields": { "vote": 1, "user": 1, "list_address": "devel@fp.o", "messageid": "20120717073931.2b3ccfad@pegasus.ausil.us" } }, { "pk": 3, "model": "hyperkitty.rating", "fields": { "vote": 1, "user": 1, "list_address": "devel@fp.o", "messageid": "CAMqY-FeSSALDs0N5gyPNqM4ydOHOKFp==wmy9ihVAGKhoPk=Tg@mail.gmail.com" } }, { "pk": 4, "model": "hyperkitty.rating", "fields": { "vote": 1, "user": 1, "list_address": "devel@fp.o", "messageid": "cone.1342275563.803007.2493.1000@monster.email-scan.com" } }, { "pk": 1, "model": "hyperkitty.userprofile", "fields": { "user": 1, "karma": 1 } }, { "pk": 1, "model": "hyperkitty.tag", "fields": { "tag": "aamir", "list_address": "devel@fp.o", "threadid": "MEESBVZAM3QKAZSTSQCEF65PS2434NYG" } }, { "pk": 2, "model": "hyperkitty.tag", "fields": { "tag": "aamir", "list_address": "devel@fp.o", "threadid": "SOSFEEJJNEI47PDNIPZMYQAPBAGNCUII" } }, { "pk": 3, "model": "hyperkitty.tag", "fields": { "tag": "packaging", "list_address": "devel@fp.o", "threadid": "MEESBVZAM3QKAZSTSQCEF65PS2434NYG" } }] HyperKitty-1.1.4/hyperkitty/api/0002775000175000017500000000000013166626114020224 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/api/utils.py0000664000175000017500000000567013112033141021723 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals from rest_framework import serializers, permissions from hyperkitty.models import MailingList from hyperkitty.lib.view_helpers import is_mlist_authorized class MLChildHyperlinkedRelatedField(serializers.HyperlinkedRelatedField): def get_url(self, obj, view_name, request, format): lookup_value = getattr(obj, self.lookup_field) kwargs = {self.lookup_url_kwarg: lookup_value, "mlist_fqdn": obj.mailinglist.name} return self.reverse(view_name, kwargs=kwargs, request=request, format=format) def get_object(self, view_name, view_args, view_kwargs): lookup_value = view_kwargs[self.lookup_url_kwarg] lookup_kwargs = {self.lookup_field: lookup_value, "mailinglist__name": view_kwargs["mlist_fqdn"]} return self.get_queryset().get(**lookup_kwargs) class EnumField(serializers.IntegerField): def __init__(self, **kwargs): self.enum = kwargs.pop("enum", None) super(EnumField, self).__init__(**kwargs) def to_internal_value(self, data): if isinstance(data, int): try: data = self.enum(data) except ValueError: self.fail("invalid") else: try: data = getattr(self.enum, data) except AttributeError: self.fail("invalid") return data.value def to_representation(self, value): return self.enum(value).name class IsMailingListPublicOrIsMember(permissions.BasePermission): """ Custom permission to only allow access to public lists or to lists the authenticated user is a member of. """ def _get_mlist(self, obj): if isinstance(obj, MailingList): return obj if hasattr(obj, "mailinglist"): return obj.mailinglist def has_object_permission(self, request, view, obj): mlist = self._get_mlist(obj) if mlist is None: # This is not a object linked to a mailing-list. return True return is_mlist_authorized(request, mlist) HyperKitty-1.1.4/hyperkitty/api/__init__.py0000664000175000017500000000145713112033141022321 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # HyperKitty-1.1.4/hyperkitty/api/mailinglist.py0000664000175000017500000000463313112033141023075 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals from rest_framework import serializers, generics from hyperkitty.models import MailingList, ArchivePolicy from .utils import EnumField, IsMailingListPublicOrIsMember class MailingListSerializer(serializers.HyperlinkedModelSerializer): url = serializers.HyperlinkedIdentityField( view_name='hk_api_mailinglist_detail', lookup_field="name", lookup_url_kwarg="mlist_fqdn") threads = serializers.HyperlinkedIdentityField( view_name='hk_api_thread_list', lookup_field="name", lookup_url_kwarg="mlist_fqdn") emails = serializers.HyperlinkedIdentityField( view_name='hk_api_email_list', lookup_field="name", lookup_url_kwarg="mlist_fqdn") archive_policy = EnumField(enum=ArchivePolicy) class Meta: model = MailingList fields = ( "url", "name", "display_name", "description", "subject_prefix", "archive_policy", "created_at", "threads", "emails") lookup_field = "name" class MailingListList(generics.ListAPIView): """List mailing-lists""" queryset = MailingList.objects.exclude( archive_policy=ArchivePolicy.private.value) ordering = ("name", ) ordering_fields = ("name", "created_at") lookup_field = "name" serializer_class = MailingListSerializer class MailingListDetail(generics.RetrieveAPIView): """Show a mailing-list""" queryset = MailingList.objects.all() lookup_field = "name" lookup_url_kwarg = "mlist_fqdn" serializer_class = MailingListSerializer permission_classes = [IsMailingListPublicOrIsMember] HyperKitty-1.1.4/hyperkitty/api/email.py0000664000175000017500000001012713112033141021643 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals from django.shortcuts import get_object_or_404 from django.core.exceptions import PermissionDenied from rest_framework import serializers, generics from hyperkitty.models import Email, ArchivePolicy, MailingList from hyperkitty.lib.view_helpers import is_mlist_authorized from .sender import SenderSerializer from .utils import ( MLChildHyperlinkedRelatedField, IsMailingListPublicOrIsMember, ) class EmailShortSerializer(serializers.HyperlinkedModelSerializer): url = MLChildHyperlinkedRelatedField( view_name='hk_api_email_detail', read_only=True, lookup_field="message_id_hash", source="*") mailinglist = serializers.HyperlinkedRelatedField( view_name='hk_api_mailinglist_detail', read_only=True, lookup_field="name", lookup_url_kwarg="mlist_fqdn") thread = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_detail', read_only=True, lookup_field="thread_id") parent = MLChildHyperlinkedRelatedField( view_name='hk_api_email_detail', read_only=True, lookup_field="message_id_hash") children = MLChildHyperlinkedRelatedField( view_name='hk_api_email_detail', read_only=True, lookup_field="message_id_hash", many=True) sender = SenderSerializer() class Meta: model = Email fields = ("url", "mailinglist", "message_id", "message_id_hash", "thread", "sender", "sender_name", "subject", "date", "parent", "children", ) class EmailSerializer(EmailShortSerializer): votes = serializers.SerializerMethodField() class Meta: model = Email fields = EmailShortSerializer.Meta.fields + ("votes", "content",) def get_votes(self, obj): return obj.get_votes() class EmailList(generics.ListAPIView): """List emails""" serializer_class = EmailShortSerializer ordering_fields = ("archived_date", "thread_order", "date") def get_queryset(self): mlist = MailingList.objects.get(name=self.kwargs["mlist_fqdn"]) if not is_mlist_authorized(self.request, mlist): raise PermissionDenied query = Email.objects.filter( mailinglist__name=self.kwargs["mlist_fqdn"]) if "thread_id" in self.kwargs: query = query.filter( thread__thread_id=self.kwargs["thread_id"] ).order_by("thread_order") else: query = query.order_by("-archived_date") return query class EmailListBySender(generics.ListAPIView): """List emails by sender""" serializer_class = EmailShortSerializer def get_queryset(self): return Email.objects.filter( sender__mailman_id=self.kwargs["mailman_id"], ).exclude( mailinglist__archive_policy=ArchivePolicy.private.value ).order_by("-archived_date") class EmailDetail(generics.RetrieveAPIView): """Show an email""" serializer_class = EmailSerializer permission_classes = [IsMailingListPublicOrIsMember] def get_object(self): email = get_object_or_404( Email, mailinglist__name=self.kwargs["mlist_fqdn"], message_id_hash=self.kwargs["message_id_hash"], ) return email HyperKitty-1.1.4/hyperkitty/api/sender.py0000664000175000017500000000345713112033141022044 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals, print_function from rest_framework import serializers from hyperkitty.models import Sender class OptionalHyperlinkedRelatedField(serializers.HyperlinkedRelatedField): def to_representation(self, obj): value = getattr(obj, self.lookup_field) if value is None: return None return super( OptionalHyperlinkedRelatedField, self ).to_representation(obj) class SenderSerializer(serializers.HyperlinkedModelSerializer): emails = OptionalHyperlinkedRelatedField( view_name='hk_api_sender_email_list', read_only=True, lookup_field="mailman_id", source="*", required=False) # emails is None if mailmain_id is None address = serializers.SerializerMethodField() class Meta: model = Sender fields = ("address", "mailman_id", "address", "emails") lookup_field = "address" def get_address(self, obj): return obj.address.replace("@", " (a) ") HyperKitty-1.1.4/hyperkitty/api/thread.py0000664000175000017500000001002613112033141022021 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals from django.shortcuts import get_object_or_404 from django.core.exceptions import PermissionDenied from rest_framework import serializers, generics from hyperkitty.models import Thread, MailingList from hyperkitty.lib.view_helpers import is_mlist_authorized from .utils import ( MLChildHyperlinkedRelatedField, IsMailingListPublicOrIsMember, ) class ThreadShortSerializer(serializers.HyperlinkedModelSerializer): url = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_detail', read_only=True, lookup_field="thread_id", source="*") mailinglist = serializers.HyperlinkedRelatedField( view_name='hk_api_mailinglist_detail', read_only=True, lookup_field="name", lookup_url_kwarg="mlist_fqdn") starting_email = MLChildHyperlinkedRelatedField( view_name='hk_api_email_detail', read_only=True, lookup_field="message_id_hash") votes_total = serializers.IntegerField(min_value=0) emails = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_email_list', read_only=True, lookup_field="thread_id", source="*") replies_count = serializers.SerializerMethodField() next_thread = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_detail', read_only=True, lookup_field="thread_id") prev_thread = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_detail', read_only=True, lookup_field="thread_id") class Meta: model = Thread fields = ("url", "mailinglist", "thread_id", "subject", "date_active", "starting_email", "emails", "votes_total", "replies_count", "next_thread", "prev_thread") def get_replies_count(self, obj): return obj.emails_count - 1 class ThreadSerializer(ThreadShortSerializer): votes = serializers.SerializerMethodField() participants = serializers.SerializerMethodField() class Meta: model = Thread fields = ThreadShortSerializer.Meta.fields + ( "votes", "participants", "participants_count", ) def get_votes(self, obj): return obj.get_votes() def get_participants(self, obj): return [ {"name": p[0].replace("@", " (a) "), "email": p[1].replace("@", " (a) "), } for p in obj.participants ] class ThreadList(generics.ListAPIView): """List threads""" serializer_class = ThreadShortSerializer ordering = ("-date_active", ) def get_queryset(self): mlist = MailingList.objects.get(name=self.kwargs["mlist_fqdn"]) if not is_mlist_authorized(self.request, mlist): raise PermissionDenied return Thread.objects.filter( mailinglist__name=self.kwargs["mlist_fqdn"], ).order_by("-date_active") class ThreadDetail(generics.RetrieveAPIView): """Show a thread""" serializer_class = ThreadSerializer permission_classes = [IsMailingListPublicOrIsMember] def get_object(self): thread = get_object_or_404( Thread, mailinglist__name=self.kwargs["mlist_fqdn"], thread_id=self.kwargs["thread_id"], ) return thread HyperKitty-1.1.4/hyperkitty/api/tag.py0000664000175000017500000000306513112033141021332 0ustar abompardabompard00000000000000# -*- coding: utf-8 -*- # Copyright (C) 2012-2017 by the Free Software Foundation, Inc. # # This file is part of HyperKitty. # # HyperKitty is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # HyperKitty is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # HyperKitty. If not, see . # # Author: Aurelien Bompard # from __future__ import absolute_import, unicode_literals from rest_framework import serializers, generics from hyperkitty.models import Tag from .utils import MLChildHyperlinkedRelatedField class TagSerializer(serializers.HyperlinkedModelSerializer): threads = MLChildHyperlinkedRelatedField( view_name='hk_api_thread_detail', many=True, read_only=True, lookup_field="thread_id") users = serializers.SlugRelatedField( many=True, read_only=True, slug_field='username') class Meta: model = Tag fields = ("name", "threads", "users") lookup_field = "name" class TagList(generics.ListAPIView): """List tags""" queryset = Tag.objects.all() lookup_field = "name" serializer_class = TagSerializer HyperKitty-1.1.4/hyperkitty/static/0002775000175000017500000000000013166626114020742 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/0002775000175000017500000000000013166626114023156 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/0002775000175000017500000000000013166626114023572 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/hyperkitty-thread.js0000664000175000017500000003113313112033141027567 0ustar abompardabompard00000000000000/* * Copyright (C) 2012-2012 by the Free Software Foundation, Inc. * * This file is part of HyperKitty. * * HyperKitty is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * HyperKitty is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * HyperKitty. If not, see . * * Author: Aurelien Bompard */ /* * Categories */ function setup_category() { $(".thread-category form").submit(function (e) { e.preventDefault(); var widget = $(this).parents(".thread-category").first(); $.ajax({ type: "POST", //dataType: "json", data : $(this).serialize(), url: $(this).attr("action"), success: function(data) { widget.html(data); setup_category(); }, error: function(jqXHR, textStatus, errorThrown) { // authentication and invalid data alert(jqXHR.responseText); } }); }); $(".thread-category a.label").click(function(e) { e.preventDefault(); if ($(this).hasClass("disabled")) { return; } $(this).hide() .parents(".thread-category").first() .find("form").show(); }); $(".thread-category form select").change(function() { $(this).parents("form").first().submit(); }); } /* * Tagging */ function setup_tags() { function post_tags(e) { var form = $(this); e.preventDefault(); $.ajax({ type: "POST", dataType: "json", data : form.serialize(), url: form.attr("action"), success: function(data) { $("#tags").html(data.html); $("#tags form").submit(post_tags); $("#tags form a").click(function(e) { e.preventDefault(); $(this).parents("form").first().submit(); }); }, error: function(jqXHR, textStatus, errorThrown) { // authentication and invalid data alert(jqXHR.responseText); }, complete: function(jqXHR, textStatus) { form.find("#id_tag").val(""); } }); } $("#add-tag-form").submit(post_tags); $("#tags form").submit(post_tags); $("#tags form a").click(function(e) { e.preventDefault(); $(this).parents("form").first().submit(); }); // Autocomplete $("#id_tag").autocomplete({ //minLength: 2, source: $("#add-tag-form").attr("data-autocompleteurl") }); } /* * Favorites */ function setup_favorites() { $(".favorite input[name='action']").bind("change", function() { // bind the links' visibilities to the hidden input status var form = $(this).parents("form").first(); if ($(this).val() === "add") { form.find("a.saved").hide(); form.find("a.notsaved").show(); } else { form.find("a.notsaved").hide(); form.find("a.saved").show(); } }).trigger("change"); $(".favorite a").bind("click", function(e) { e.preventDefault(); if ($(this).hasClass("disabled")) { return; } var form = $(this).parents("form").first(); var action_field = form.find("input[name='action']"); var data = form_to_json(form); $.ajax({ type: "POST", url: form.attr("action"), dataType: "text", data: data, success: function(response) { // Update the UI if (action_field.val() === "add") { action_field.val("rm"); } else { action_field.val("add"); } action_field.trigger("change"); }, error: function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); } }); }); } /* * Replies */ function setup_emails_list() { // Attachements $("div.container").tooltip({ selector: ".email-info .attachments-list a", placement: "right" }); // Quotes $("div.container").on("click", 'div.email-body .quoted-switch a', function(e) { e.preventDefault(); $(this).parent().next(".quoted-text").slideToggle('fast'); }); setup_replies(); } function fold_quotes(baseElem) { $(baseElem).find('div.email-body .quoted-text').each(function() { var linescount = $(this).text().split("\n").length; if (linescount > 3) { // hide if the quote is more than 3 lines long $(this).hide(); } }); } function setup_replies() { $("body") .tooltip({selector: "a.reply"}) .on("click", "a.reply", function(e) { if ($(this).hasClass("reply-mailto")) { return; } e.preventDefault(); $(this).parent(".email-info").find(".reply-form").slideToggle("fast", function() { if ($(this).css("display") === "block") { $(this).find("textarea").focus(); } }); }); $("body").on("click", "a.reply-mailto", function(e) { // Close the reply form, we're going to use email software var replyform = $(this).parents(".reply-form").first().slideUp(); return; }); $("body").on("click", ".reply-form button[type='submit']", function(e) { e.preventDefault(); var button = $(this); var form = $(this).parents("form").first(); // remove previous error messages form.find("div.reply-result").remove(); var form_elements = form.find("input").add( form.find("textarea")).add(form.find("button")); var data = form_to_json(form); $.ajax({ type: "POST", url: form.attr("action"), dataType: "json", data: data, success: function(response) { var server_reply = $(response.message_html); if (server_reply) { // server_reply can be null if it's a new thread server_reply.insertAfter(form.parents(".email").first().parent()); } form.parents(".reply-form").first().slideUp(function() { form.find("textarea").val(""); if (server_reply) server_reply.slideDown(); }); $('
' + response.result + '
') .appendTo(form.parents('.email-info').first()) .delay(2000).fadeOut('slow', function() { $(this).remove(); }); }, error: function(jqXHR, textStatus, errorThrown) { $('
' + ' ' + jqXHR.responseText + '
') .css("display", "none").prependTo(form).slideDown(); }, complete: function(jqXHR, textStatus) { form_elements.prop("disabled", false); } }); form_elements.prop("disabled", true); }); $("body").on("click", ".reply-form a.cancel", function(e) { e.preventDefault(); $(this).parents(".reply-form").first().slideUp(); }); $("body").on("click", ".reply-form a.quote", function(e) { e.preventDefault(); var quoted = $(this).parents(".email").first() .find(".email-body").clone() .find(".quoted-switch").remove().end() .find(".quoted-text").remove().end() .text(); var textarea = $(this).parents(".reply-form").find("textarea"); // remove signature var sig_index = quoted.search(/^-- $/m); if (sig_index != -1) { quoted = quoted.substr(0, sig_index); } // add quotation marks quoted = $.trim(quoted).replace(/^/mg, "> "); // insert before any previous text textarea.val(quoted + "\n" + textarea.val()); textarea.focus(); }); function set_new_thread(checkbox) { var this_form = checkbox.closest("form"); var subj = this_form.find("p.new-subject"); if (checkbox.is(":checked")) { subj.slideDown("fast"); subj.find("input").focus(); } else { subj.slideUp("fast"); this_form.find("textarea").focus(); } } $("body").on("change", ".reply-form input[name='newthread']", function() { set_new_thread($(this)); }); } function setup_unreadnavbar(element) { element = $(element); if (element.length === 0) { return; } var current_index; function scroll(inc) { var unreads = $(".email.unread"); if (unreads.length == 0) { return; } if (typeof current_index == "undefined") { if (inc == 1) { current_index = -1; } if (inc == -1) { current_index = unreads.length; } } current_index = current_index + inc; if (current_index < 0) { current_index = unreads.length - 1; } if (current_index >= unreads.length) { current_index = 0; } element.find(".unreadindex").text(current_index + 1); // compensate for the fixed banner at the top var target = unreads.eq(current_index).offset().top - 70; $("html,body").stop(true, false).animate({ scrollTop: target }, 500); } element.find(".nextunread").click(function(e) { e.preventDefault(); scroll(1); }); element.find(".prevunread").click(function(e) { e.preventDefault(); scroll(-1); }); $(document).bind("keydown", "j", function(e) { scroll(1); }); $(document).bind("keydown", "k", function(e) { scroll(-1); }); element.find("a").tooltip(); element.animate({height: "show"}, 700); } /* * Thread replies list * Updates the list of replies in a thread chunk-by-chunk to avoid blocking the * UI */ function update_thread_replies(url) { function load_more(current_url) { $.ajax({ dataType: "json", url: current_url, success: function(data) { // replies var newcontent = $(data.replies_html); $(".replies").append(newcontent) .append($(".replies .ajaxloader")); fold_quotes(newcontent); // load the rest if applicable if (data.more_pending) { load_more(url+"&offset="+data.next_offset); } else { $(".replies .ajaxloader").remove(); } }, error: function(jqXHR, textStatus, errorThrown) { if (jqXHR.responseText !== "") { alert(jqXHR.responseText); } } }); } load_more(url); } /* * Re-attach threads */ function setup_reattach() { $(".reattach-thread li.manual input[type='text']").focus( function() { $(this).parents("li").first() .find("input[type='radio']") .prop("checked", true); }); $(".reattach-thread form.search").submit(function (e) { e.preventDefault(); var results_elem = $(this).parent().find("ul.suggestions"); var url = $(this).attr("action") + "?" + $(this).serialize(); results_elem.find("img.ajaxloader").show(); $.ajax({ url: url, success: function(data) { results_elem.html(data); }, error: function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); }, complete: function(jqXHR, textStatus) { results_elem.find("img.ajaxloader").hide(); } }); }).submit(); } /* * Handle click on the "fixed-font" toggle. */ function setup_fixed_font() { $(document).on("click", ".toggle-font", function() { $(this).parents('.email').find('.email-body').toggleClass('fixed') }); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/hyperkitty-userprofile.js0000664000175000017500000000467013112033141030665 0ustar abompardabompard00000000000000/* * Copyright (C) 2012-2012 by the Free Software Foundation, Inc. * * This file is part of HyperKitty. * * HyperKitty is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * HyperKitty is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * HyperKitty. If not, see . * * Author: Aurelien Bompard */ /* * Last viewed threads and votes in the user's profile */ function update_user_profile_part(container) { container = $(container); base_url = container.attr("data-load-from"); var loader = container.parent().find(".ajaxloader"); function _update(url) { loader.show(); $.ajax({ url: url, success: function(data) { container.html(data); container.find(".pagination a").click(function(e) { e.preventDefault(); _update(base_url + $(this).attr("href")); }); // setup cancellation links container.find("a.cancel").click(function(e) { e.preventDefault(); var form = $(this).parents("form").first(); var data = form_to_json(form); $.ajax({ type: "POST", url: form.attr("action"), data: data, dataType: "json", success: function(response) { form.parents("tr").remove(); }, error: function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); } }); }); }, error: function(jqXHR, textStatus, errorThrown) { //alert(jqXHR.responseText); }, complete: function(jqXHR, textStatus) { loader.hide(); } }); } _update(base_url); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/hyperkitty-overview.js0000664000175000017500000000550513141013437030202 0ustar abompardabompard00000000000000/* * Copyright (C) 2012-2012 by the Free Software Foundation, Inc. * * This file is part of HyperKitty. * * HyperKitty is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * HyperKitty is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * HyperKitty. If not, see . * * Author: Aurelien Bompard */ function setup_overview(recent_activity_url) { function redraw_chart() { var element = $(".stats .chart"), chartDivWidth = element.width(); ajax_chart(recent_activity_url, element, {width: chartDivWidth}); } $(window).resize(redraw_chart); redraw_chart(); // Back to top link setup_back_to_top_link(220); // set offset to 220 for link to appear // submit search on enter (only add if there's a nav-tab's search box) if ($('ul.nav-tabs').length > 0) { $(document).ready(function() { $('#nav-tab-search').keydown(function(e) { // if enter is pressed if (e.keyCode == 13) { $(this).closest('form').submit(); return false; } }); }); } // Collapsible thread lists function collapsibleDivs() { if (!$(this).next('.list-group').is(':visible')) { $(this).children('.fa-caret-right') .removeClass("fa-caret-right") .addClass("fa-caret-down"); $(this).next('.list-group').slideDown(); } else { $(this).next('.list-group').slideUp(); $(this).children('.fa-caret-down') .removeClass("fa-caret-down") .addClass("fa-caret-right"); } } $('#flagged h3').click(collapsibleDivs); $('#posted-to h3').click(collapsibleDivs); // "More threads" links $(".overview").on("click", ".more-threads", function(e) { e.preventDefault(); //var more_block = $(this).parent('.more-threads'); var more_block = $(this).parent().next(); more_block.children().slice(0, 5) .hide().insertBefore($(this)).slideDown(); if (more_block.children().length === 0) { more_block.remove(); $(this).remove(); } }); // Page fragments $('div[data-load-from]').each(function() { $(this).load($(this).attr("data-load-from")); }); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/hyperkitty-common.js0000664000175000017500000002033313112033141027610 0ustar abompardabompard00000000000000/* * Copyright (C) 2012-2012 by the Free Software Foundation, Inc. * * This file is part of HyperKitty. * * HyperKitty is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * HyperKitty is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * HyperKitty. If not, see . * * Author: Aurelien Bompard */ /* * Generic */ function form_to_json(form) { var form_data = form.serializeArray(); var data = {}; for (input in form_data) { data[form_data[input].name] = form_data[input].value; } return data; } /* * Voting */ function vote(elem) { if ($(elem).hasClass("disabled")) { return; } var value = parseInt($(elem).attr("data-vote")); var form = $(elem).parents("form").first(); var data = form_to_json(form); data['vote'] = value; $.ajax({ type: "POST", url: form.attr("action"), dataType: "json", data: data, success: function(response) { form.replaceWith($(response.html)); }, error: function(jqXHR, textStatus, errorThrown) { alert(jqXHR.responseText); } }); } function setup_vote() { $("div.container").on("click", "a.vote", function(e) { e.preventDefault(); vote(this); }); } /* * Recent activity bar chart */ function chart(elem_id, data, default_props) { /* Function for grid lines, for x-axis */ function make_x_axis() { return d3.svg.axis() .scale(x) .orient("bottom") .ticks(d3.time.days, 1) } /* Function for grid lines, for y-axis */ function make_y_axis() { return d3.svg.axis() .scale(y) .orient("left") .ticks(5) } if (typeof default_props === "undefined") { default_props = {}; } if (!data) { return; } var props = {width: 250, height: 50}; $.extend(props, default_props); var margin = {top: 0, right: 0, bottom: 0, left: 0}, width = props.width - margin.left - margin.right, height = props.height - margin.top - margin.bottom; var w = Math.floor(width / data.length); var format_in = d3.time.format("%Y-%m-%d"); var format_out = d3.time.format(""); var x = d3.time.scale() .range([0, width]); var y = d3.scale.linear() .range([height, 0]); var xAxis = d3.svg.axis() .scale(x) .orient("bottom") .tickSize(0,0) // change to 2,2 for ticks .tickFormat(format_out) .ticks(d3.time.days, 1); var yAxis = d3.svg.axis() .scale(y) .orient("left") .tickSize(0,0) // change to 4,3 for ticks .ticks("") // change to 2 for y-axis tick labels .tickSubdivide(1); var area = d3.svg.area() .x(function(d) { return x(d.date); }) // .y0(height) .y(function(d) { return y(d.count); }); var svg = d3.select(elem_id).append("svg") .attr("class", "chart-data") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); // Convert dates if necessary data.forEach(function(d) { if (typeof d.date === "string") { d.date = format_in.parse(d.date); } }); x.domain(d3.extent(data, function(d) { return d.date; })); y.domain([0, d3.max(data, function(d) { return d.count; })]); /* Draw the grid lines, for x-axis */ svg.append("g") .attr("class", "grid") .attr("Transform", "translate(0, " + height + ")") .call(make_x_axis() .tickSize(height, 0, 0) .tickFormat("") ) /* Draw the grid lines, for y-axis */ svg.append("g") .attr("class", "grid") .call(make_y_axis() .tickSize(-width, 0, 0) .tickFormat("") ) svg.append("g").attr("class", "bars").selectAll("rect") .data(data) .enter().append("rect") .attr("x", function(d) { return x(d.date); }) //.attr("y0", height) .attr("y", function(d) { return y(d.count); }) .attr("width", w) .attr("height", function(d) { return height - y(d.count); }); /* draw x-axis */ svg.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + height + ")") . call(xAxis) /*.selectAll("text") .attr("y", -5) .attr("x", -30) .attr("transform", function(d) { return "rotate(-90)" });*/ /* Y-axis label */ svg.append("g") .attr("class", "y axis") .call(yAxis) /*.append("text") .attr("transform", "rotate(-90)") .attr("y", 0) .attr("x", 0 - height/2) .attr("dy", "-3em") .style("text-anchor", "middle") .style("fill", "#777") .text("Messages"); */ } function ajax_chart(url, elements, props) { elements = $(elements); if (elements.data("chart_loading") || elements.find("img.ajaxloader").length == 0) { return; // already loaded or being loaded } elements.data("chart_loading", true); // if there's already a chart drawn, remove it and then redraw // this would occur when resizing the browser if (elements.find("svg.chart-data")) { elements.find("svg.chart-data").remove(); } return $.ajax({ dataType: "json", url: url, success: function(data) { elements.each(function(index, elem) { chart($(this).get(0), data.evolution, props); }); }, error: function(jqXHR, textStatus, errorThrown) { //alert(jqXHR.responseText); }, complete: function(jqXHR, textStatus) { // if the list is private we have no info, remove the img anyway elements.find("img.ajaxloader").remove(); elements.removeData("chart_loading"); } }); } /* * Misc. */ function setup_tooltips() { // Setup tooltips $("body").tooltip({selector: '[data-toggle="tooltip"]'}); // Setup disabled tooltips $("body") .tooltip({selector: "a.disabled"}) .on("click", "a.disabled", function(e) { e.preventDefault(); }); } function setup_flash_messages() { $('.flashmsgs .alert.success').delay(3000).fadeOut('slow'); } function setup_back_to_top_link(offset, duration) { // default scroll to top animation will last 1/4 secs duration = (typeof duration !== 'undefined' ? duration : 250); $(window).scroll(function() { var button = $(".back-to-top"); if ($(this).scrollTop() > offset && button.is(":hidden")) { $(".back-to-top").stop().fadeIn(duration); } else if ($(this).scrollTop() <= offset && button.is(":visible")) { $(".back-to-top").stop().fadeOut(duration); } }); $(".back-to-top").click(function(e) { e.preventDefault(); $("html").animate({scrollTop: 0}, duration); }) } function setup_send_as() { $("div.container").on("click", ".send-as-default", function(e) { e.preventDefault(); var select = $(this).next(); $(this).hide(); select.show(); }); } function setup_expander() { $('span.expander').expander({ slicePoint: 500, userCollapseText : '\n[View Less]', expandText : '\n[View More]', beforeExpand: function() { $(this).removeClass("collapsed"); $(this).addClass("expanded"); }, onCollapse: function() { $(this).removeClass("expanded"); $(this).addClass("collapsed"); } }); } /* * Activate */ $(document).ready(function() { setup_vote(); setup_tooltips(); setup_flash_messages(); setup_emails_list(); setup_send_as(); setup_expander(); setup_fixed_font(); }); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/js/hyperkitty-index.js0000664000175000017500000000625313112033141027434 0ustar abompardabompard00000000000000/* * Copyright (C) 2012-2013 by the Free Software Foundation, Inc. * * This file is part of HyperKitty. * * HyperKitty is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * HyperKitty is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * HyperKitty. If not, see . * * Author: Aurelien Bompard */ function setup_index(url_template) { var list_names = []; // Collect list names $(".all-lists table.lists tr.list").each(function() { var listname = $(this).attr("data-list-name"); if (list_names.indexOf(listname) === -1) { list_names.push(listname); } }); // Redirect clicks on the whole table row $("table.lists tr.list").click(function(e) { document.location.href = $(this).find("a.list-name").attr("href"); }); // Helper to load the graph function show_ajax_chart(listrows) { var listname = listrows.first().attr("data-list-name"); var url = url_template .replace(/PLACEHOLDER@PLACEHOLDER/, listname) .replace(/PLACEHOLDER%40PLACEHOLDER/, listname); return ajax_chart(url, listrows.find("div.chart"), {height: 30}); } // Filter function filter_lists() { var hide_by_class = {}; $(".hide-switches input").each(function() { var cls = $(this).val(); hide_by_class[cls] = $(this).prop("checked"); }); $("table.lists tr.list").each(function() { var must_hide = false; // class filter for (cls in hide_by_class) { if ($(this).hasClass(cls) && hide_by_class[cls]) { must_hide = true; } } // now apply the filters if (must_hide) { $(this).hide(); } else { $(this).show(); } }); } $(".hide-switches input").click(filter_lists); filter_lists(); // Filter on page load // Find field var find_field = $(".filter-lists input"); find_field.autocomplete({ minLength: 3, source: "find-list", select: function(event, ui) { find_field.val(ui.item.value); find_field.closest("form").submit(); }, }); // Back to top link setup_back_to_top_link(220); // set offset to 220 for link to appear // Update list graphs for all lists var list_rows = $(".all-lists table.lists tr.list"), deferred = $.Deferred(); deferred.resolve(); $.each(list_names, function(index, list_name) { deferred = deferred.then(function () { return show_ajax_chart(list_rows.filter('[data-list-name="' + list_name + '"]')); }); }); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/0002775000175000017500000000000013166626114024127 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-overview.scss0000664000175000017500000001107013111777164031242 0ustar abompardabompard00000000000000// Overview page (List overview) .overview { h3 { @extend .small-caps; line-height: 28px; margin-bottom: 0.5em; margin-top: 0; } .searchbar, .list-actions { padding-top: 1em; padding-bottom: 1em; } .list-actions > a { margin-bottom: 0.2em; } .anchor-link { position: relative; a { position: absolute; top: -75px; } } .nav-tabs .dropdown-header { padding-left: 0; padding-right: 0; } } .overview section#title { h2 { margin-top: 5px; margin-bottom: 0px; } #description { font-size: smaller; font-weight: normal; } } .overview .list-group { .list-group-item-heading { font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .thread-id { font-weight: bold; color: $headingColor; vertical-align: top; padding-right: 0.5em; } .category { font-size: 70%; } .list-stats { font-size: 90%; } } // spacing between sections .overview { section+section, .discussions > section, .stats, .stats > section { padding-top: 10px; } } .overview { #flagged .thread-list, #posted-to .thread-list { display: none; } #flagged h3, #posted-to h3 { &:hover { cursor: pointer; } } } // Threads by category .overview section#by-category { h4.label { font-size: 90%; line-height: 90%; //margin: 1.5em 0 0.5em 0; padding-left: 1em; padding-right: 1em; } .list-group { margin-bottom: 1.5em; .category, .thread-id { display: none; } } } .overview .stats { float: none; clear: left; .caption { font-size: x-small; color: $subheadingColor; margin-left: .25em; margin-bottom: 0px; } .chart-data { @extend .bordered; } ul.list-stats { padding-bottom: 10px; display: block; i { padding-right: 5px; } li { display: block; font-size: small; padding-left: 0; } } .duration-text { margin-top: 0.5em; margin-bottom: 0.25em; } } @media (min-width: $screen-lg-min) { .overview .stats ul.list-stats li { display: inline; margin-right: 1em; } } .overview .maker { padding-right: 10px; padding-bottom: 20px; .maker-name { word-wrap: break-word !important; } .score{ font-weight: bold; } } .overview section#discussion-maker { padding-top: 0; } .overview .more-threads { text-align: center; font-weight: bold; .thread { display: none; } } //=== thread view ==/ .overview .thread { @extend .bordered; padding-top: 0.25em; padding-bottom: 0.25em; margin: 0.25em 0; &:hover { @extend .row-hover; a { @extend .row-link-hover; } } } /* // tiny screen (<=320px): // nav-tabs: less padding, smaller dropdowns, right-align last dropdown @media (max-width: $screen-tn) { .overview .nav-tabs { >li a { padding-left: 5px; padding-right: 7px; } #navbarDiscussionsDrop ~ .dropdown-menu { min-width: 110px; } #navbarMonthsListDrop ~ .dropdown-menu { min-width: 90px; left: inherit; right: 0; } } } */ // xs screen (<=540px): more padding/spacing in nav-tabs @media (max-width: 539px) { .overview .nav-tabs { .dropdown-menu { min-width: 120px; } #navbarMonthsListDrop ~ .dropdown-menu { text-align: left; } } .searchbar { text-align: right; } .overview .back-to-top { display: none; } } // xs screen (540-768px): add back-to-top link @media (max-width: $screen-xs-max) and (min-width: 540px) { .overview .searchbar { text-align: right; } } @media (max-width: $screen-xs-max) { .overview .stats { float: left; } } // small screens & up (>=768px) // thread titles now only take up 1 line max; @media (min-width: $screen-sm) { .overview { .list-actions { padding-top: 0; } .thread .thread-title { max-height: 1.8em; } } .overview .gravatar { img { @include square(48px); } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/0002775000175000017500000000000013166626114026144 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/_custom-grid.scss0000664000175000017500000000356413111777164031445 0ustar abompardabompard00000000000000// // Grid system // -------------------------------------------------- // Container widths // // Set the container width, and override it for fixed navbars in media queries. .container { @include container-fixed; @media (min-width: $screen-xs-min) { width: $container-xs; } @media (min-width: $screen-sm-min) { width: $container-sm; } @media (min-width: $screen-md-min) { width: $container-md; } @media (min-width: $screen-lg-min) { width: $container-lg; } @media (min-width: $screen-xl-min) { width: $container-xl; } } // Fluid container // // Utilizes the mixin meant for fixed width containers, but without any defined // width for fluid, full width layouts. .container-fluid { @include container-fixed; } // Row // // Rows contain and clear the floats of your columns. .row { @include make-row; } // Columns // // Common styles for small and large grid columns @include make-grid-columns; // Tiny grid // // Columns, offsets, pushes, and pulls for tiny devices like // smartphones. @include make-grid(tn); // Extra small grid // // Columns, offsets, pushes, and pulls for extra small devices like // smartphones. @media (min-width: $screen-xs-min) { @include make-grid(xs); } // Small grid // // Columns, offsets, pushes, and pulls for the small device range, from phones // to tablets. @media (min-width: $screen-sm-min) { @include make-grid(sm); } // Medium grid // // Columns, offsets, pushes, and pulls for the desktop device range. @media (min-width: $screen-md-min) { @include make-grid(md); } // Large grid // // Columns, offsets, pushes, and pulls for the large desktop device range. @media (min-width: $screen-lg-min) { @include make-grid(lg); } // Extra large grid // // Columns, offsets, pushes, and pulls for the large desktop device range. @media (min-width: $screen-xl-min) { @include make-grid(xl); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/_custom-utilities.scss0000664000175000017500000000234213111777164032524 0ustar abompardabompard00000000000000// Visibility utilities @include responsive-invisibility('.visible-tn'); @include responsive-invisibility('.visible-xl'); .visible-tn-block, .visible-tn-inline, .visible-tn-inline-block, .visible-xl-block, .visible-xl-inline, .visible-xl-inline-block { display: none !important; } @media (max-width: $screen-tn-max) { @include responsive-visibility('.visible-tn'); } .visible-tn-block { @media (max-width: $screen-tn-max) { display: block !important; } } .visible-tn-inline { @media (max-width: $screen-tn-max) { display: inline !important; } } .visible-tn-inline-block { @media (max-width: $screen-tn-max) { display: inline-block !important; } } @media (min-width: $screen-xl-min) { @include responsive-visibility('.visible-xl'); } .visible-xl-block { @media (min-width: $screen-xl-min) { display: block !important; } } .visible-xl-inline { @media (min-width: $screen-xl-min) { display: inline !important; } } .visible-xl-inline-block { @media (min-width: $screen-xl-min) { display: inline-block !important; } } @media (max-width: $screen-tn-max) { @include responsive-invisibility('.hidden-tn'); } @media (min-width: $screen-xl-min) { @include responsive-invisibility('.hidden-xl'); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/_custom-variables.scss0000664000175000017500000000272713111777164032470 0ustar abompardabompard00000000000000//== Components // //## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). $padding-tn-vertical: 1px !default; $padding-tn-horizontal: 5px !default; //== Media queries breakpoints // //## Define the breakpoints at which your layout will change, adapting to different screen sizes. // Tiny screen / phone $screen-tn: 320px !default; $screen-tn-min: $screen-tn !default; // Extra large screen / extra-wide desktop // Note: Deprecated $screen-xl and $screen-xl-desktop as of v3.0.1 $screen-xl: 1620px !default; $screen-xl-min: $screen-xl !default; $screen-xl-desktop: $screen-xl-min !default; // So media queries don't overlap when required, provide a maximum $screen-tn-max: ($screen-xs-min - 1) !default; $screen-lg-max: ($screen-xl-min - 1) !default; //== Modals // $modal-xl: 1000px !default; //== Container sizes // //## Define the maximum width of `.container` for different screen sizes. // Extra small screen/ phone $container-phone: ((430px + $grid-gutter-width)) !default; //** For `$screen-xs-min` and up. $container-xs: $container-phone !default; // Large screen / wide desktop $container-xlarge-desktop: ((1580px + $grid-gutter-width)) !default; //** For `$screen-lg-min` and up. $container-xl: $container-xlarge-desktop !default; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/_custom-mixins.scss0000664000175000017500000000410513111777164032017 0ustar abompardabompard00000000000000// Grid system // // Generate semantic grid columns with these mixins. // Generate the tiny columns @mixin make-tn-column($columns, $gutter: $grid-gutter-width) { position: relative; float: left; width: percentage(($columns / $grid-columns)); min-height: 1px; padding-left: ($gutter / 2); padding-right: ($gutter / 2); } @mixin make-tn-column-offset($columns) { margin-left: percentage(($columns / $grid-columns)); } @mixin make-tn-column-push($columns) { left: percentage(($columns / $grid-columns)); } @mixin make-tn-column-pull($columns) { right: percentage(($columns / $grid-columns)); } // Generate the extra large columns @mixin make-xl-column($columns, $gutter: $grid-gutter-width) { position: relative; min-height: 1px; padding-left: ($gutter / 2); padding-right: ($gutter / 2); @media (min-width: $screen-xl-min) { float: left; width: percentage(($columns / $grid-columns)); } } @mixin make-xl-column-offset($columns) { @media (min-width: $screen-xl-min) { margin-left: percentage(($columns / $grid-columns)); } } @mixin make-xl-column-push($columns) { @media (min-width: $screen-xl-min) { left: percentage(($columns / $grid-columns)); } } @mixin make-xl-column-pull($columns) { @media (min-width: $screen-xl-min) { right: percentage(($columns / $grid-columns)); } } // Framework grid generation // // Used only by Bootstrap to generate the correct number of grid classes given // any value of `$grid-columns`. // [converter] This is defined recursively in LESS, but Sass supports real loops @mixin make-grid-columns($i: 1, $list: ".col-tn-#{$i}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}, .col-xl-#{$i}") { @for $i from (1 + 1) through $grid-columns { $list: "#{$list}, .col-tn-#{$i}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}, .col-xl-#{$i}"; } #{$list} { position: relative; // Prevent columns from collapsing when empty min-height: 1px; // Inner gutter via padding padding-left: ceil(($grid-gutter-width / 2)); padding-right: floor(($grid-gutter-width / 2)); } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/bootstrap/_custom-modals.scss0000664000175000017500000000014113111777164031763 0ustar abompardabompard00000000000000// Scale up the modal @media (min-width: $screen-lg-min) { .modal-xl { width: $modal-xl; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-threadslist.scss0000664000175000017500000000606213111777164031727 0ustar abompardabompard00000000000000/* * Threads view header */ #thread-list .thread-list-header { margin-bottom: 2em; padding-bottom: 1em; h1 { margin-bottom: 0; } .list-name { color: black; &:hover { text-decoration: none; } } .list-address { font-size: 120%; padding-bottom: 0.5em; } .list-stats { font-size: 90%; } } /* * Thread summary */ #thread-list .thread { @extend .bordered-vertical; padding-top: 1em; padding-bottom: 1em; .thread-title { font-weight: bold; overflow: hidden; text-overflow: ellipsis; .category { text-align: center; margin-right: 1%; } } .thread-info { padding-top: 0.25em; .likeform { display: inline; } .sender { word-wrap: break-word; float: left; } .thread-extras { font-size: 90%; } .thread-category { font-size: 110%; padding-bottom: 0.25em; } .thread-fav { text-align: right; } .likestatus + span { padding-right: 1em; } .likestatus { vertical-align: -2px; } .tags { ul { display: inline; margin: 0 0 0 0.2em; } li { padding: 0; margin: 0; } } } } // for viewports larger than XS, add more spacing @media (min-width: $screen-xs-min) { #thread-list { .thread-list-info { padding-top: 10px; } } } /* * Relative placement of the sender gravatar+address and the email excerpt */ // Small viewports #thread-list .thread .thread-info { .sender { width: 80px; } } // Large viewports (x > 1200) /* @media (min-width: $screen-lg-min) { #thread-list .thread .thread-info { .sender { width: 100px; } } } */ /* * Part containing the body of the mail which can be shown/hidden */ .expander { display: block; vertical-align: top; white-space: pre-wrap; word-wrap: break-word; } .btn-expander { background: #efefef; padding: 1px 5px; vertical-align: middle !important; font-size: .8em; display: inline-block; margin-top: 1em; } .btn-expander:hover { cursor: pointer; } .thread-email { .list-stats { margin-top: 1.5em; } .expander.collapsed { white-space: normal; } } //=== search result thread list ==/ .search-results { .list-name { color: black; &:hover { text-decoration: none; } } .thread+.thread { padding-top: 1.5em; } .list-stats { margin-top: 0.5em; margin-bottom: 0.5em; } } // for small screen sizes @media (max-width: 991px) { // for monthly thread list, to align // collapsed right column underneath // left in smaller screen width .thread-email { .thread-date { margin-top: 1.5em; } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-variables.scss0000664000175000017500000000043213111777164031344 0ustar abompardabompard00000000000000// Variables common to two or more pages $headingColor: #666; $subheadingColor: #999; $rowBorderColor: #ccc; $rowSideGutter: 0.5em; $rowHoverColor: #08c; $navbarColor: #f8f8f8; $linkHoverColor: #ddd; $linkColor: #08c; $maroon: rgb(128,0,0); $grey: #999; $super-light-grey: #eee; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-user.scss0000664000175000017500000000127013111777164030353 0ustar abompardabompard00000000000000//=== User profile page ==/ .user-profile { tr.list-address { font-weight: bold; background: $rowBorderColor; } } table.user-data { font-size: 95%; th { font-weight: bold; padding-left: 0 !important; // override boostrap default } tr.gravatar td { vertical-align: middle; } tr:first-child > td, tr:first-child > th { border-top: 0; } } /* // for tiny viewports (<=380px), adjust table column widths @media (max-width: $screen-tn-max) { .user-profile table.user-data { .ellipsis-overflow { max-width: 150px; } select { width: 150px; } } } */ HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-message.scss0000664000175000017500000002127113166624624031026 0ustar abompardabompard00000000000000// MESSAGE VIEW95px $evenEmailColor: rgb(246, 246, 246); $oddEmailColor: rgb(238, 238, 238); //=== Thread view ==/ .thread-header { margin-bottom: 2em; padding: 0; h3 { text-align: center; font-size: 1.5em; margin-top: 8px; margin-bottom: 0; } .thread-older, .thread-newer { margin-top: 1em; color: $subheadingColor; } button { margin-top: 10px; } .thread-category { text-align: center; } .thread-titles a { color: $subheadingColor; } } .view-thread .nav-tabs { margin-bottom: 1.5em; .dropdown-header { padding-left: 0; padding-right: 0; } } .view-thread .anchor-link { position: relative; a { position: absolute; top: -95px; } } //=== Main section with the whole thread ==/ // First email of the thread .email-header { margin-bottom: 1em; display: table; width: 100%; //display: inline-block; .gravatar-wrapper { float: left; } .gravatar { margin-bottom: 2px; display: inline-block } .fa-envelope { font-size: 130%; margin-right: 10px; } .messagelink { font-style: italic; font-size: 90%; color: rgb(167, 169, 172); a { color: rgb(167, 169, 172); } } } .email-author { margin-left: 0.5em;; display: inline-block; .name { font-weight: bold; } .rank{ color: $subheadingColor; font-size: 80%; font-weight: bold; } } .email-date { .date { font-weight: bold; display: inline-block; } .time { text-align: right; display: inline-block; span { text-align: right; color: $subheadingColor; border-bottom: 1px dashed $rowBorderColor; cursor: help; } } } .email-body { white-space: pre-line; word-wrap: break-word; span.read-more a, span.read-less a { float: right; padding: 3px 10px 0 0; } } .email-body.fixed { font-family: 'Droid Sans Mono', monospace; white-space: pre; } .attachments { padding-top: 8px; p { margin-bottom: 0; font-weight: bold; } } .email-info { position: relative; .likeform-wrapper { position: absolute; top: 0; right: 0; } .likestatus + span { padding-right: 1em; } div.attachments { display: inline; margin-left: 1em; .attachments-list { margin-bottom: 0; } } .reply-form { display: none; .reply-tools { margin-top: 10px; margin-bottom: 0; label { font-size: 90%; font-weight: normal; } } p { margin: 0; } p.new-subject { display: none; margin-bottom: 0.5em; } p.message-text { margin-bottom: 0.25em; } p.buttons { margin-top: 1em; } } .reply-result { text-align: center; .alert { display: inline-block; } .alert-success { margin-bottom: 0; } .alert-error { white-space: pre; text-align: left; } } } .email-first .email-info { padding: 0 0 20px 0; border-bottom: 1px solid $rowBorderColor; } .sort-mode { text-align: right; padding-top: 10px; } /* The email thread */ .view-thread .replies { margin-top: -15px; } .replies .email { border-top: 1px solid $rowBorderColor; padding: 0.5em; margin: 20px 0 20px 0; .unread { border-top: 1px solid rgb(100, 100, 100); background-color: rgb(214, 214, 214); i.unread { float: right; margin-right: 2em; } } .subject { text-align: center; clear: both; font-style: italic; } .email-body { padding: 5px; background-color: rgb(255, 255, 255); } } .even .email { background-color: $evenEmailColor; } .odd .email { background-color: $oddEmailColor; } .temporary .email { background-color: rgb(215, 215, 229); display: none; } // === Thread general information column .days-num { font-size: 200%; } .days-text { font-size: 70%; } #thread-overview-info, #message-overview-info { a { color: #999; } .fa { color: #BFBFBF; } .postorius .fa { color: black; } } #thread-overview-info { #thread-date-info { padding-bottom: 8px; } .list-name { word-wrap: break-word; a { color: black; } } form.favorite { margin-bottom: 0; } .favorite a { i { margin-right: 0.3em; } } a.saved, a.notsaved { /* Will be shown via Javascript */ display: none; } } //=== Tags #tag-title { color: rgb(77, 77, 77); text-transform: uppercase; } #tags { color: rgb(167, 169, 172); margin-top: 2em; } #tags ul { padding: 10px 0; margin: 0; } #tags ul li { padding-left: 0; } #tags ul li span { margin-left: 5px; } #tags .rmtag { margin: 0; display: inline; } #tags .rmtag a { visibility: hidden; font-size: 125%; } #tags:hover .rmtag a { visibility: visible; } #tags:hover .rmtag a:hover { text-decoration: none; } #add-tag { margin-top: 0.3em; } //=== Participants ==/ #participants { margin-top: 2em; color: $subheadingColor; span#participants_title { @extend .small-caps; } li { margin: 1em 0; } .participant-gravatar { padding-left: 0; } } /* Inline quotes */ .quoted-switch a { background-color: #fafafa; padding: 0 4px 2px 4px; border-left: 2px solid rgb(55, 113, 200); font-weight: bold; font-size: 115%; &:hover { text-decoration: none; } } .quoted-text { border-left: 2px solid rgb(55, 113, 200); padding-left: 0.2em; } //=== Navigation for unread messages ==/ #unreadnavbar { position: fixed; bottom: 0; right: 0; text-align: right; padding-right: 2em; display: none; } #unreadnavbar>div { width: auto; padding: 0.2em 1em; border: 1px solid #888; border-bottom: none; background-color: #eee; } //=== Re-attach threads ==/ .reattach-thread { h1 { text-align: center; font-size: 24px; line-height: 26px; margin-bottom: 2em; } form { margin-bottom: 0; img.ajaxloader { margin-left: 1em; } } form.search { margin-top: 2em; p { line-height: 22px; } input { margin-left: 3em; } input, button { font-size: 12px; padding: 2px 8px; } } li.manual { label { display: inline; } input { margin-bottom: 0; } input[type='text'] { width: 22em; } } p.buttons { margin-top: 2em; } } //=== message_new.html: start a new thread ==/ .new-thread-form { //margin-left: 2em; #id_subject, textarea { width: 100%; } p.buttons { margin-top: 2em; } } /* // tiny screen (<=320px): // nav-tabs: less padding, smaller dropdowns, right-align last dropdown @media (max-width: $screen-tn) { .view-thread .nav-tabs { >li a { padding-left: 7px; padding-right: 7px; } #navbarMonthsListDrop ~ .dropdown-menu { min-width: 90px; left: inherit; right: 0; } } #participants { .participant-name { margin-left: 0 !important; } } } */ // xs screen (<=540px): more padding/spacing in nav-tabs @media (max-width: 539px) { .view-thread .nav-tabs { .dropdown-menu { min-width: 120px; } #navbarMonthsListDrop ~ .dropdown-menu { text-align: left; } } } // small screens (<768px) have smaller gravatar images @media (max-width: $screen-xs-max) { #participants { .participant-name { margin-left: -20px; } } } // mid screens (<992px): adjust spacing between gravatar images @media (min-width: $screen-md-min) { #participants { img.gravatar { @include square(32px); } } } //=== Message view ==/ .message-header { margin: 1em 0 2em 0; .message-back { a { padding: 0.2em 0; .icon { font-size: 1.5em; } } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/hyperkitty.scss0000664000175000017500000000137613111777164027247 0ustar abompardabompard00000000000000// import bootstrap @import "../libs/bootstrap/stylesheets/bootstrap"; // import our bootstrap customizations @import "bootstrap/custom-variables"; @import "bootstrap/custom-utilities"; @import "bootstrap/custom-mixins"; @import "bootstrap/custom-grid"; @import "bootstrap/custom-modals"; // core variables, shared across pages @import "hyperkitty-variables"; // core elements, shared across pages @import "hyperkitty-common"; // base.html @import "hyperkitty-base"; // index.html @import "hyperkitty-index"; // thread-related (monthly view, overview's discussion groups) @import "hyperkitty-threadslist"; // overview.html @import "hyperkitty-overview"; // thread.html (discussion view) @import "hyperkitty-message"; // user_profile.html @import "hyperkitty-user"; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-base.scss0000664000175000017500000000242713111777164030314 0ustar abompardabompard00000000000000// floating navbar's height $navbarHeight: 75px; $navbarHoverColor: #e7e7e7; body { position: relative; padding-top: $navbarHeight; background-color: white; } // Sometimes jQuery UI overwrites the Bootstrap values a { color: $linkColor; } nav { background-color: $navbarColor; } footer { background-color: $navbarColor; border-top: 1px solid $navbar-default-border; margin-top: 2em; padding: 1em; text-align: center; p { margin: 0; } } //=== NAVBAR nav { padding-top: 5px; padding-bottom: 5px; // general links ul.nav-pills li:first-child { padding-top: 2px; } // login/logout ul.auth a:last-child { padding-right: 0; /* flush with right margin */ } // override bootstrap color for search button .input-group-addon { background: inherit; } // postorius link .postorius { padding: 10px 20px; margin: 0; float: right; } } // hack: forces search box to appear on one line in navbar in larger screens // hack: we need extra .input-group to force search box to appear on one line in smaller screens // note: any pixel-based width will allow hack to work @media (min-width: 768px) { nav .input-group { width: 200px; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-index.scss0000664000175000017500000001175113111777164030511 0ustar abompardabompard00000000000000// Index Page (List of lists) //=== TITLE .all-lists { p.hide-switches { margin: 0; padding-top: 0.5em; label:first-child { display: inline; margin-right: 2em; } input { margin: 0; } } .filter-lists { padding-bottom: 20px; } hr { margin-top: 0; } } //=== NAV SIDE MENU $headerNavPadding: 7px; .all-lists { .header { position: relative; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #eee; h1 { margin-bottom: 0; small { font-size: 60%; } } .sort-type { margin-top: -3px; } } nav.sort-mode { padding-top: 0; background-color: white; position: absolute; bottom: 0; right: 0; ul { margin-bottom: 0; padding-bottom: $headerNavPadding; } .active { font-weight: bold; border-bottom: 4px solid $rowHoverColor; padding-bottom: $headerNavPadding + 5; } a { color: black; border-bottom: 4px solid transparent; } } .dropdown-toggle { margin-left: 25px !important; // override bootstrap defaults } } //=== MAIN CONTENT // table of lists .all-lists .table-responsive { border: none; } .all-lists .condensed-table { display: none; } .all-lists table.lists { border-collapse: separate; border-spacing: 0 0.5em; th { @extend .small-caps; border-bottom: none; } tr.list { &:hover { @extend .row-hover; a { @extend .row-link-hover; } .chart-data .bars rect { @extend .row-chart-hover; } } } td { vertical-align: middle; padding: 5px 8px; border-top: 1px solid $rowBorderColor; border-bottom: 1px solid $rowBorderColor; } td:first-child { border-left: 1px solid $rowBorderColor; } td:last-child { border-right: 1px solid $rowBorderColor; } .list-name { font-size: 120%; color: black; font-weight: bold; } .list-tags { font-size: 80%; color: $subheadingColor; font-style: italic; } .list-address { font-size: 90%; } // charts, show x-axis on index page .chart { height: 35px; .ajaxloader { margin: 0 auto; padding-top: 0.5em; } .x.axis path, x.axis line { display: inline; stroke: $rowBorderColor; stroke-width: 1px; shape-rendering: crispEdges; fill: none; } } ul.list-stats { font-size: 90%; li:first-child { padding-right: 1em; } li+li { // Override setting in _hyperkitty-common.scss padding-left: 0; } } .participant { padding-left: 10px; } tr.private { background-color: #e6f2f5; .list-name { color: #2e6c83; } } tr.inactive { background-color: #eee; .list-name { color: $subheadingColor; } ul.list-stats .fa { color: $subheadingColor; } } // 'new' label in front of list name tr span.new { @extend .labels; margin-right: 0.5em; } } .back-to-top { @extend .bordered; position: fixed; bottom: 2em; right: 0px; text-decoration: none; color: black; background-color: $navbarColor; font-size: smaller; padding: 1em; display: none; &:hover { background-color: $linkHoverColor; } } // at screens <= 610px, convert to a different layout // rows are too long, so only display some info (list name, list stats) @media (max-width: $screen-xs-max) { .all-lists .row { margin-right: 0; } } // force header onto 1 row by removing extra padding/gutter @media (max-width: $screen-xs-max) and (min-width: $screen-xs) { .all-lists .header { h1 { padding-right: 0; } .sort-type { padding-right: 0; padding-left: 2px; font-size: 55%; margin-top: 0; } .btn-group { padding-left: 0; } } .all-lists .filter-lists { p.hide-switches label:first-child { margin-right: 1em; } } .participant { padding-left: 0; } .all-lists table.lists { .chart { display: inline-block; } ul.list-stats { display: inline-block; padding-left: 8px; li { padding-right: 0; display: block; } } } } //=== Logo .all-lists .logo { display: block; margin: 50px auto 0 auto; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/sass/_hyperkitty-common.scss0000664000175000017500000001351713112033141030651 0ustar abompardabompard00000000000000/* * Classes common to two or more pages, but not all (those go to base.scss) */ //=== COMMON STYLES ==/ // override potential browser default styles ul { padding-left: 0; } h1 { margin-top: 0px; font-size: 28px !important; /* override bootstrap */ line-height: 32px; margin-bottom: 0.5em; } .right { text-align: right; } .inline-block { display: inline-block; } .heading { font-size: 100%; line-height: 100%; font-weight: bold; color: $headingColor; text-transform: uppercase; } .small-caps { color: $subheadingColor; text-transform: uppercase; font-size: small; font-weight: normal; } .small-bolded-text { font-weight: bold; font-size: small; vertical-align: top; } .bordered { border: 1px solid $rowBorderColor; } .bordered-vertical { border-bottom: 1px solid $rowBorderColor; } .labels { font-size: 78%; text-transform: uppercase; } .cursor-pointer { cursor: pointer; } // typical hover behavior for table rows .row-hover { cursor: pointer; color: white; background-color: $rowHoverColor; } .row-link-hover { color: white; } .row-chart-hover { fill: white; } // from Bootstrap's alert class .errorlist { list-style-type: none; margin: 0 0 20px 0; padding: 8px 35px 8px 14px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); border: 1px solid #eed3d7; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; color: #b94a48; background-color: #f2dede; } // Flash messages .flashmsgs { position: absolute; left: 0; width: 100%; text-align: center; z-index: 10; .flashmsg-wrapper { display: block; } .alert { display: inline-block; } .alert.info { @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); } .alert.success { @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); } .alert.warning { @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); } .alert.error { @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); } } // Favorites .saved .fa-star, .fa-star.saved { color: #ffdd00; } .notsaved .fa-star-o, .fa-star-o.notsaved { color: #999; } //=== Gravatar ==/ .gravatar { vertical-align: top; img { @include square(60px); } } .gravatar-details { padding-left: 5px; padding-right: 0; } .maker-id { @extend .small-bolded-text; color: $subheadingColor; } .maker-name { @extend .small-bolded-text; } .gravatar-placeholder { width: 120px; height: 120px; background-color: $super-light-grey; } //== font icons (fa-user, fa-comment, unread) ===/ ul.list-stats { margin: 0; li { display: inline-block; } li+li { padding-left: 0.75em; } .fa { color: #BFBFBF; } } .fa-user:before { color: #BFBFBF; font-size: 1.14em; line-height: 1em; } .fa-comment:before { color: #BFBFBF; font-size: 1.14em; line-height: 1em; } //== old icomoon styles ===/ .participant:before { content: "\e609"; color: #BFBFBF; font-size: 1.14em; line-height: 1em; } .discussion:before { content: "\e607"; color: #BFBFBF; font-size: 1.14em; line-height: 1em; } .fa-envelope { color: #BFBFBF; } //=== Like / dislike ==/ .fa-meh-o { font-weight: lighter; font-size: larger; } .neutral:before { content: "\e600"; font-size: 16px; line-height: 1em; vertical-align: -2px; } .like:before { content: '\e602'; font-size: 16px; line-height: 1em; vertical-align: -2px; } .likealot:before { content: '\e601'; font-size: 16px; line-height: 1em; vertical-align: -2px; } .fa-thumbs-up.selected, .fa-thumbs-o-up, a.youlike { color: #090; } .fa-thumbs-down.selected, .fa-thumbs-o-down, a.youdislike { color: #900; } .fa-thumbs-o-up.disabled, .fa-thumbs-o-down.disabled, .fa-thumbs-up.disabled, .fa-thumbs-down.disabled { color: #aaa; } //=== Months list ===/ div#months-list { padding-top: 1em; h3 { margin-top: 1em; font-size: larger; } li.current { font-weight: bold; } } //=== 'Send as' widget in replies or new threads ===/ .send-as select { display: none; width: auto; } .send-as .send-as-add-address { margin-left: 1em; } //=== Attachments in replies or new threads ===/ .attach-files-template { display: none; } .attach-files-add { display: none; } .attach-files span { display: block; } //=== quoted switch in message view ===/ .quoted-switch .pgp { font-weight: normal; text-transform: lowercase; font-size: 90%; } //=== AJAX ===/ .ajaxloader { display: block; margin: 1em auto; } .ui-autocomplete-loading { background: white url('../img/ajax-loader.gif') right center no-repeat; } .ui-widget.ui-autocomplete { font-family: inherit; font-size: 0.95em; } //=== Categories ===/ .thread-category { //padding: 0; a.label.disabled { cursor: default; } a.label:hover { color: white; text-decoration: none; } form { margin: 0; display: none; p { margin: 0; } select { font-size: 90%; width: 12em; margin: 0; } .errorlist { display: none; /* Displayed manually */ } } } //=== Activity chart ===/ .chart-font { font-size: 8pt; font-family: "Droid Sans", sans-serif; font-color: #777; } .chart-data { @extend .chart-font; position: relative; margin: auto; padding-top: 3px; background-color: $pre-bg; // default behavior is to hide axes .axis path, .chart-data .axis line { display: none; } .bars rect { fill: steelBlue; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/0002775000175000017500000000000013166626114023732 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/like.png0000644000175000017500000000162312167726157025372 0ustar abompardabompard00000000000000‰PNG  IHDRóÿasBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<IDAT8e“Kh\eÅßwï‹L#Áß@ pA<„*šbaòÃZnæüÕlŒ}½½b&¾‰ ÞžìóÄÅlžëß±5ˆ˜²H˜[½"þÊnŽËÌ¥W¼‰aEué+¶G›Z2]oL5Š?‰Žus´ÿ8Ë…<ý#¶Â±þ!– K|þÉKø¥³¸Mïñç…7KÁF%¥uÜ=Ô¾û£á,ÊÝ8œ>ó£ß_ñÁ–8}vŒÑÒ`þ“ÃxãlOõ&ˆsH£ôþDòe-á<¨H•§ÛwÒ¹+…Xì:;ŸJð|ÇÄÿ P/M"¹O+a¿kðEG’ˆ_€0‹8O0üõ1±+`òœ<ñ:„sH¸¬¿@ü±6¬¥Å@BDJLƒ-‚j¨×—˜e°k`+XSEl ¨Ïï*ÇÉ›Úü“Z4br(ñ@Åë[Aì˜Uıfk<ÐIo­ÉkÁŒ–ò?ZÜ­.19v”;K¿áW¦1þ6ÈTYÍÍrýrcÊ8 Ý”—/ZQŒÖg|ø‘LgÏ/R>Ár'Ù©*Å%Lèà¸.56³­ã}¢2DCòS2?,•TýHÃzpîòk^è¥%XûBLõªX³&b}[®JP—Ê?ïJ­ø­Ìü±wóî‘\€Å¨=loýÔ-¢ºÚž; 6Æ0Þï±5”“Äi؃»åUn_¨æÒײ1ᆭõ*CNôÑ;v½M4¿ #ñ6KàÍR^™° ™3¾ñ×O5Åïƒéœ}=XZÐ䜳Â8ÿ•©ØûG˜~¼IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/button_newer.png0000644000175000017500000001046012167726157027160 0ustar abompardabompard00000000000000‰PNG  IHDR$f³ÛsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<­IDATxœíœ{pÇÇ¿==³»3»£•vµI‹ž ‹£6Ʊ‹±'±S؉Ï\‚_9s!ug(çQ6ìr9œUæ;‰Má:ü`וœÏgL-sØ&¼Œ0Š„´Ò®¤Õ>gvggúþ@«–d‹€}úTM•¶5ýûõã;¿žéîÂÃx€fËÔ(àP`@@7€£^Ðâ÷ûq9™äK«€À\ë,%„D(¥ûxž?A)ð<!¦išCÓ4·®ë]׫u]obŒYpFH›ü~ÿ§±.“\FP ˜à×¾)ÂJ’ô¶$IÝcuL&«EYœËåü^ðK¿ßßÿ…J=ÉeÃg (Ü àA‚v»ýA’Ÿ×Q&“qÄãñ•¹\îëþÙï÷ïø¼¶&¹|8¯€€ À³„%I’Ô1Q“Édm2™\ÇÛê÷û9Qv'¹4ü€†Äóß”R‹ÃáøžçSí4“É8£ÑèÏcG|<Ñö'¹hèNØã÷û;€ó è·”Ò™.—ëIBÈE{zÒu݋Ŗ2Æ„‹åc’ ‡êºîÒu½À³~¿ÿgg (üÇqwo¦”ª—®œ“\Îd³ÙÂc¿P h°Çétn2™LÑK[ÄI.wR©Tm"‘XÎç!OZ,–ÿ1™L)¦ñ³X,RIIÉ×(¥ÒéÓ§÷¨ª:á÷M“\^X,–p<¯å |‹Ro·ÛŸ`!Y–^¯çÇ|ÐRJ¥àóùNBÿrQJ=Éå„x „<(IÒû„ €ŽÕ‚,ËN›ÍúO?ü5=3ê}ûÛß%¥¥¾q‰ðÿ#„bµZíùßÉdrðR–G’¤Žã8P%©ëzn”,&à€@“$I[1Ž¡K–e§Õ*ýpóæÖÁÁ3â!çpÇÆcg,ØívW*•º9S³Ùl¸\®7Nû|¾¹mmmMPUUu¨··wÏDú(\.Wµ$I.H$§ºA°„B¡÷ïßo|ãßà$IzÄ0 ýR•QUÕ{Þzë-see%illüm__ßh£ÈXN)íày^LJ/Y–’$ÞºeË&)/˜1£~·ÅbW ”RÛË/¿ì8vì6lXAyžçyçæÍ›‹`ãÆ¾±–ÿïM*•ú‡|°†‚gŸ}vßÀÀ@ó'Ÿ|ÂöîÝËy<444˜qfžå’ …èÞ½{¹îîn£±±Ñ„ÑÛòŒ€!KÍfs7Æ5dYvH’øÝÇß$þ5êΞ=wwsóÕGÆjg<0ÆÃøë”ÔŽ;Šî¹çži8[¨$ïÛëõNM§ÓÓ‰„\\\Ü«(ÊÁd22eʼt:í¤”2EQ>ÁÂq\=Çq,N0›Í63Àd2u„B¡Ö¢¢"/Ïó³#‘ˆ³¨¨(ÊqܱþþþN(++kRUU4™L† áp¸Úl6çb±ØëùB•””ÔÇãqO&“†Qët: EQŒŒ¬ciiéÂþþþ*‡ÃщDŽd³YÕårU†Q ’$ÅE)p¾Ç#^¯wn___y.—#n·»=ÿ)—Ëi’$¸\®ÚH$R–J¥¬¢(fNgw__ߟ2™Lz¨~·Û½  ùJJJ:"‘7¢½yŒÞèR„(Æpõʲ\$Šâ[¶l´Äb±áô¹sçímjZôÉXl|N†'Íf3Ž?N:;;¿YWW÷Ɉs(³ 7mÚ´ÉÓÞÞN€ã8ï7Þ8ûšk®ù/UUÝ÷ß غu«F]ëÖ­«´X,غuk¼§§§â¡‡*s8Ø´iS¿Ýn_´}ûö¹---dȇwáÂ…ÓW®\y¨¿¿ÿý>øàŠmÛ¶Ñúúz–Ífñç?ÿ™Ü~ûí¬ªªj¸"‘HýúõëmùßwÞy§€ûW¿úUO>­§§ëׯoêéé!²,ûÖ¬YóuQŸE±|ÕªUõpË-·`ûöíp8ì±Ç+;yòäM<òˆ ( Àjµúî»ï¾¯É²ü²Ýn÷mذ¡éôéÓùrÃb±L¹ë®»æ—––þN×õ\*•Zyï½÷ZTU…Õjõ655ÛÞ£õ¥8¥”ÒìPÂY–½¢h¹é\ñÌ›· ¥©iQÛhù¿ÈÁ¾V¬XžçñÒK/‰²,׌¨çñxf?óÌ3žööv²dɶvíZ¥´´”íܹ“kkk»†ã¸PYYËf³èèè¨íèè(UUÑÞÞ>½££Ã³fÍ22™L&Ìmii!3fÌ`k×®UÙþýû¹`0Ø`³ÙR<_ûß+¯üÇŸ•w‚Žá$Ë2[±b…ÑÙÙIöïß_˜OgŒqÑh´¦««‹BPXXHºººD—ËE`Ïž=4›Íj .tvvÚÛÚÚ„²²2&B¡ãرc “Édï½÷”””®®.Q–eûöíã |yß‚ àÑG=ÕÐа½¸¸ø­‘eïëëÛ7gΜáí/MMM‡+**^ŠF£äÓjjjŒn¸a÷òåË»àĉœ(Še1D¯ZµJ¿öÚk_Ÿ3gΫGޱ†ââbÄãq~``@°Û튂eŠ¢¤¯¸âŠT:wïÞm9pà€A¦iˆD"ÞîîîŠd2™·{ª®®nç¢E‹F®i凰Ñäþ™áª··ÇóÊ+Û͉D@Á5×\{²®®¾}´¼ÁÐzÃ0ØUW]u* ÖlÛ¶åÓ !$•JY†ÎÇÞ½{‡ÄëõB’$B)•¦Nª<ˆîîn\yå•hmmeü1Nž|Œ1hš&d³YpFø&“)•Ífáp8ØP3æÛ{´~€37Ñ]× (¥±  ug%­cèŠà83f̬..v D"‘1o.ûœµà‹ÅÚ¾÷½ïU½øâ‹Üˆd®¤¤$J)-ÒukÖ¬aUUU]ˆ¢(žT*ÅÇãñdeeeˆRZsäÈb¦M›–µÙlÂöíÛ‰®ëp¹\LÅEQ´ÒÒRÖÕÕE–.]Šë¯¿¾G×u @qgg§¤ªj<ïØb±°\.\àÆS–åÌPÇ ‹M)//§©Tjøñ•R Ã0xBÈYõ9«A`2 ¥¥¥9Ïóxâ‰'Ò¹\®OKGG‡»°°0vìØ±ªt: ŸÏÇî¿ÿþŽööv÷›o¾)™".—+@Ò4 ­­­Ó«««í;vì)ráBu9·Ox!]×e\<­©©Mp=ðÇ?¾¹ —Ó¨®ëxúéßÕ«×,ðx¼ŠD"=Ê;Aœ% MÓÈÂ… O½öÚk5ñøp?Òd2ÙqÛm·U¾ð Üúõë¹²²2_6›E__¹õÖ[Ymm-²Ùì@MMMu[[€òòò>žç t]·À‚ 088Ëf³Ù;î¸#³qãFË‹/¾H‚Á ×l6#“Y³f±•+WŽÜ©<ïU›ËåÂÓ¦M«hmm%?ýéOežç§?÷Üs'Î9ÍŒCcŒgŒé#~Ó¼ýúúúãuuu³Ž?Nn¿ýv«Ïç“úûûI"‘À/~ñ VQQ¡”–vuu‘Ÿÿüç媪žç1$rÂóü©ææfÏž={È–-[L&“©\–eŒð5æDÀËV«u¾,Ë£d@GG»ýÎÍf³C‘ˆbõêŸ0¯·äX$é-ÿ祠 ÀÞÕÕ5? aΜ9†¢(»)¥Ô0Œ¦ÖÖV MMM½ápø¨,Ër2™¬?|ø° …XAA*++Y]]]4=ÌqÇ[ÔÚÚJl6æÌ™sDy÷îÝÐÐÐQUu˜Íf3Ïóuttvv2³ÙL|>¦OŸcŒ¥”6ÕÙÙYÕÚÚŠ™3gÂ0ŒÝ§öÝwß-€Å‹ÿ…ÂÞ~ûíJhnnîîéé9ž·év»KZ[[§8q‚„Çã!ÕÕÕÙŠŠŠSétz@×õÙ~ø¡Õ0 ,^¼Xÿè£øL&ƒÆÆÆX4ýÐét–:t¨îÓO?Euu5›1c8À¹ÝnTVV~<8r‚ï<†Á÷öö6“]»v­äyþ1—Ë5¦ ï§OwØÞ|s׬¿ŠˆÃÝwÿ˜•–úN„ÃáðXlü=à8Ž3›Í¦\.—Ó4m´iùÏ„BÌf³É0 ¦išÆÆû*ËEDžRÊkš¦éº~ÖD¤Édt]7ÎMÏ“¯—ªª™óýÿ³P#Ùµk—@Øãñå8nL ÝÝÝe _ŸžÉd†E´jÕݘ2¥âT8îoa&ùòaíííGcƒ»eY®±Z­c5ÐÓתUU¥À™'³;î¸Ë°Ù Ž#§'ùJ2$ zÂC øÇqÛÝnw!dÌá9î5¿ñÆ«STU¡ Iî¾{M{.—wHœäË…a\oooíðŽÄ`0¸Çf³Í°Ùl‰ñê닯¿¾³DQÒn»íŽÝ^8¹ö+N&“±D£ÑìðT9cìžd2Ù"Š¢N)óªpq± ?øÁm‘ÖÖ㢢(œÉd"¸LWÅ'™t]§±XLðë³6ÕƒÁç8nËåÊŽg(û¼†AR©”È#£Ÿ=ÉeÓ4-£išà™eË–ýËß¼Ö _Áït:/ª€ à ýýýL×õwc^L_“Ló^jš¶§¿¿VQQ‘0´ËqB1 ƒôõõe Ãø=cìÇ~¿ÿ²™W™d|\ðÕfBÈ6Žã¾íp8¤üBâDÍf188˜6 ãéeË–ý넞ä’0ÚÇî#„<&Ig³Ù¾P42 ñx\UU5Ãû‰ßïés›ä²aLŸw!„lpÍfãEQ¤”Ž}˳¦iPEK§Ó:€ß1ÆÖúýþ ®üOòåb\˜"„lp=Çqº(Š"Ïó”R J)8Žƒ®ë0 º®#—Ë銢¨†a¨~Ï{Þï÷¾¨µ™äïΘ”'ÿ‰;BÈM„yŒ1/€bƘD$„ôhgŒ}Â{ À{“7É_]þ’ÍVÕÝlwÐIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/logo.png0000644000175000017500000005126012167726157025410 0ustar abompardabompard00000000000000‰PNG  IHDRÈÈ­X®žsBIT|dˆ pHYsnnУ²htEXtSoftwarewww.inkscape.org›î< IDATxœìw|TÅúÿßsζô:¡÷"RÁÐD‘bƒ vū׊]D®XP° X°\±€‚¢J ½# Ho „$R6›-gæ÷dž@Èf“ ‹äòÍûõÊ+»gç<3g÷|ÎÌ<óÌŒPJQAøF»Ô¨ ‚òL…@*¨À© ?T¤‚ üP! *ðC…@*¨À© ?T¤‚ ü`ºÔ¨ ìˆñhWE­ª®ë¢šÙ!­~¦KvIçĽökìÚÿ'Êw9 Iï5tz¸Iª—¢BTqLèbüß>´ùü´×ÝûECñšªŽÐœ±^Ö©;9~\OÏ™4×>ô}{CS7 Xÿá°å~ó~vnm)M„ûr2k½½yÆUn€¸'焘C"oV‚úÀÞð,ù«+ÂíЩ«›T-¥ÈÔtËqw˜ùØÚÑ×8|ÙîúÖš^h¦ÿ§tjñùšQW/ó•6nʺhSU¹à±ÆÎ3Lj«gîz^q ˆh"^ÂZ„VEÓD „¨¡„ˆÊÿN*Mí–BÎÚ<¤abi¾w_tzcú%k¡(%…RO¯Õõ_é‡Î™£ÝñJ=€džM† ×Ó7eNˆ:m~TMÉ)åq]ªI«_º ,åêwפ°l[X¡ÉÎB@†I·³öóÑ;±Ó¿ÿãÖ¬ÈvBªN(ÕT,xþ³ê§·—œIÓ½ÿ˜–HÏM ·¯\ôîoþìõétwe·Iaœ²…© ¿ÿþ•½4åH ×ÝòÁ³JãM„àÌŸbï’ïj~~Úkïž¹!®.”íÕeŸxYD¯‘ß¼„ã•!ñ]Õt1böì!F‘BޝõÈj»\i¢[¾­JÊ+ßôWç.Pš¸ál>(„êœ|óÿ”â7¡ñÖêç{¬:c»ûÔU5 )©pZÜRã%¡´†hÔšVU!ª*!ª Dh~:‰Ð~_7²UÿNŸìi*4µÁÙkÕŠäO¡2)e ÔO&“yäÚ!µO•úGȧ󛦠ä(”$_  d®9OÔ^õ\׌óÓǽùûT%ÕiQ¬{éÆãþóËíÊ0¾A)ÄY[ÙV µâÇ ÉñW1~¼wªvK!=tRuRRµBI=¿<¥P’Ék>{bŒ?[]†Mh$Qª“P²RµE)ËÙë“ Ôo«~ž8 {ÿ§õ.JšP ¥Xldëƒ×®}ÇçC°G·û~D©[¼×ÎM÷Ưú|yIßs`M,Z>Ž6»vØÇí—~7òÏBGõФêÁñãÇ¿ÒëÁÆSA>÷`Ü[ܯOÀ9C¥^¾büœÏ"±Vöa'ÂåT·Ÿôÿ…-Ïnj)„fYGb4×Í‘²yœªÝ¥Â”¢¸G­ª5@÷ûÞno(M× O %Ts¥h®IÙ\IÕBªR±Îâµ3`Ì ^;7½@õ5‡»f·œRÏž÷ßâ–s®¿¾”ê+!Æ×Wjœô—a@¿ª”ò´¯ãB¨óoRPøz*ÖØ”Z¯0Ü—÷||öÀsõ{ú0”šà#y¶÷å³Lþp{×7Wº:èùv”øICš5-µ¬6Äy\yß~ž–ìó¸¢Î¹o;O\ÒU)1ÝGÊ‘„´•¨_f$\ë ©+[rƒêPjÐ/ei[H¥mJnTBÌG‰·„R÷)EP©”vêöú\”‚;}}¨àæî}}øÜcC‡Õ•“|$.±¿z±4-Ó×a¡DLÑü9é+m¶K¯„PS‹ËB(ñI¯1ßV9óÞåÉyQ´æš „(ÛÍ)Ä[=Þ^Ù$Ê’éó)ÝÂü4€ÊŠðW†`?àñ“fPç/÷\Hæ •TÌ7[‡‰Kê !~,>“ yèÅ]5axr)—/„ö»kRp¡¶.u…>ûY(5©[ŸG›žy›’ý вH:ñ%ÕÞd ð]ƒHAhQÃʧ@̆&ÂÉ +&›ê8Ít}l~-…xÚGI/}À:¾nÎ(^B=£Ÿ‚Úí#I*­ó‚ÇnpEÚìÅŠ êáì½åæ‘MÓÖŽ®íÀ+„Bèšqå†#6 oÔÔœçŽQJÝ|é˰Դ[KY4)}× ù´™ôG˜I׿“£û`…nãk éS B`ðK©ž´ç!QlŠW5¥ºšêdVùý«1v(ÝS»0êoà)D?SVhÌŠŸÞÜQ#$a&P\§?TC~9tèP½sÿÇ#…ò>HÏcçÊ5_Î)Mîºy…ÏDóÑB—B¤ûê fMΟ12·÷CßÝjxˆÂÙps¯ÇçÞc2ÑDñ)e\´*UÉ^¬X5¾ÏkgÞõ¿<Ü£³èT¨Œh­$‹¢Õüa…zN“zŠ!D²)<$eõ}ÍüüÀ*D¡&‡ÄTÐOÈ?w° ãì„*Bqãyen\¼í¢xtS²nøè†h¸‡Î™£‡På+”jãë\¡øÍ*Ão‹¦g^›IÈÐì¢v`ËÄ!Y×<=+¨[b¡.¡Ô]nK6¼ÿ¨¯ä F‰v¥mÆôCüÜW‹ÚšŠ¹+ß´¦à­>ú²Ð?®g†qÇù©4¥® Oc•ºîñ޳×<ÑnåúÇÛî÷/€¢M=!U„Ï”J­ö‘_¬û…±Z>›XB)•XõK|tVóùÞU½úÍñãzælsµŸPàí{+¥¾-U¡¦53™½áýûüíâ›RÙ„ÒÄÿ8®¸V«NÝ«Ã_Î @¼¢$Où(ÅÚ•k¾ø±´å°‰%JÝ!Ö¤æW K?ö_…x«˜m>Ž9BîB!| Qé<šÐ³Š¦SU”ðÝ_ Qôáa(| !®.r(ÿ‰]ZVßç{PP!Å8A€O×{6Þ±y¤w éüº™mÏ›ÀË 1]RBë$”êí#©Öó‘éaÅÙ‰Š0«Ÿz½jt&½¨·Pš;Ò_™VýöÎ"ÀG3E]‹J *Éî¹ØÄ’™^ïd)R ™îËõ©IcX߇æLYò»p‘zñíYêu/\ÿ\ïëÓ"ÅQâì?åžÓÀ«ç~Þõñ/:#Š>¼ÝšŒÄG°àÝÇœÀ{çëuïøh·ÛP—¢D¬\8uJ럸BÁ}%§ÿ]¾fæ¦ÒØ=C@1iâ´ÛÇsN q݈Ϻ(¥ZIÁhZ+!„Ïö¯‚qå^ ,7nœ\|ÿü;̶¼µä»‹!I·»Þ(M9åy7I÷ñËÚ+]÷å*NPJhE{Q"æšw·Ü- *º¨¢š¢ª@«¦4ª ÄÜuµöQ…Ÿƒæ­AzÍÙn7¬W‚'ÐÆ)Qô&–‚­¥¹¶² `ÜÚgûý'°sD™Â ©E¾=l …V¤oQ'#c®”y²‰ ÐXÙùØ Äó–# /!œS™T)úROJ)ŸD>G…qc6¯?÷ÀêÏe÷zø»èúF ªÏ³„z.þÿ#»IQ »_:R Z+!:£im@™Ïó%(¥‰)ùéµ¢}šÔÞQo NUÂûF@£ ¢Ä«¾>0am$„Jœ=ÿSª2 ÄäQ¥zò—„”ÚÎÎÙã\½z¹Å0çmcñÕ«g,Ü€ú FL{l+ŸÌðu£Ç8ìÊwÇRÁ†“oúºô¹ˆF(5C!Ñ0ûH3kÍÓqÛ”u”„²èàSQê)~tß[Ô¸’e@1mýÓ×.Q¶@V%LAˆ¦d@vâã'¥Kxû©…ˤHÐLjr™ÊQÚ„ýû¿g±8s|¡#ß+î³ø†øððÉPŽ xñûÚþfýÈ6>Ë N!x©ž¥É'A°åõÿº¼½¸mÙÎ-[Ka”ºiäߎØÎêEïÿ­ ˆ#I±!>þó¼²”£Ô7»¦™B)}hA±¸•(]/¿ªÈHý¯ÁU«žíRI+Klà±!žX÷¯+‹óÂVeÐfÃí^›=¤8Wå"DM©´UßXÜ?ð“ËÖÄRB R«tôRÙR”ùþ)µ@~ýõá ÀŸ["Ø`–<¼é3•R¾Ü·þñÊR¶ %FÕjr¢ïÊ绥ûO'– S 5ÔýBÓÚ¹Ì2bÝ#m:¬ûוï¡,! ¬ É–?Â…Æük&þñpÉI Q¶¹B"8}¡Jß)Ñ–(»@úÿøèð¾·}p+EG¿¿×M¶ûÿê΂û>w}6L‰¢Mo³ÐÊR z~•$Ç‘rÍÊq×î*>¹REº Š”uwô¢]B¨¯]nñ¤ÉÊíÎï 4Oð¾|z!y”Åô¸×5\÷âõϨRÔ˜Â÷8T‰h*Hµ½f«¡ì¶‚2£P´sÅáQ½ Yø É.'Vë3²´éE~D{°QRèÞÛ8íŠ9»> sÛžâ¼p …z%nαY‡º—±<‚1_[Ø .4ç壇øÍSøŸ=Oøps–‰`Ù2^ iNº‚RßôšR¥ŠÅ9/‡€žBI/ƒë8§ *`ç–.>ÆpD¬áv=ä\ Xêçó[•=lY÷7úv§Ÿ¥L7¨ÞLDôê5¾L•ApmP¥ @@”(óà €€û  DˆÒU bD) IXžÎmÅD0Ÿ¡³Çc¬ï:a~3?iÂ{ÿ"àf–R—V \¾Ž»\ËÔÌ*‹@|y\ŠÖ B+æ¦+±‰å+@-¤×øå>,á3@P>Ë÷Þ¦—ãÞßòEÜû®Œû`ë±ÎU·y̆ɮé®taˆ£º.vúäïYʇsk²CZº„&|ED»”;àÞ⯅ȭ£zžV˜nTV|2z 홳o‹âÈ5{“J“á{&ᨀþÊWÿ©:JŒGq7Þ†X|סš¹ê¼IRv=w¦€ù?ÖyÖÚ”9_¾}½×ôåáÆt?ŒPƒ‹I`(39Ÿ™tåçfwû þP dCrð-PKçã÷d qØ×ai.›'´,9êÓË(T3hB÷9ËN!ü DßÑÝÊçEÝG$ª*UHÊ4Qü“¶D„ø@¡ŠÚP…&;‡´tI…¯ÚÂ&¥|® ¹ûŒ®v:eÀ†1×®Cp¾‚om;`;€(&PÒ¢Ø~ŠÕD ¾[ D'Ÿ“¶Ìy7³”RG|R+STøœ‰¥ Oô¹ï—~qÏf…O5—Ð9?ù2¯™Ì>ob%=k)Òo !(}~ÖÀ‡ëhùCþ›"Ëä­èLÅM·×ÿøÕ‡½>e(Ã|Ÿ;'ÜcÝÓ×~cÏK²=G9^9çýB_vtQüM?åžÓùøÈ|~k¢$„ð}OIÃp "P¿àã eZ{ `(ÉL`Ïy‡O)i,”N¡4¥ž§hìÖö—½{Û\`Öy‡×Å¿ÕßçSfÕ7f ÄçBø\Óª8V?Ùe=‚Ò†{d£˜«$×¼¢`ÃÈýT|¡r(åëÂé² ή£p*!|M õ‹®Œ·(Úd³›u‘~îuÏôy 8³pƒKiÚ];Ç )èÌ M}æÃ ü÷)žãü…b[üç÷Öa¸y Ud mšÅl x uåÒ7*Ä;‰8¾jÕg…¹œY–-؆c9¥N^'W دtÓê%ß<àS¡×>ðY= ý:4ÑL qÈ£kóVÎáw>5@Ï'æöRB\'4q8Ïcýný»7ÓæõÒý……=0iý"Aêü°fÜu/æÐuÊÆJ‰æè*V!¬Jh©‘Š'”4¥zlFêæ‘W;«rèôDûî~ ­•ÐØ\7¤ÙÊâÂHâæ‹1Üî›%2Äì1æ­½«i™V;ìÿÞBk×)%Úb¨c˜<‹×?ÖÓçL¼.¯-èn Éõ/^_$Ž,nüœÜú] ãœÖ”úyÍkCü.ÆÐküx“3µF4𡨙•³jçì!>=IþÑeØ«]5¥Úb‰ºÐ–ÆÏXKàºõ~ä*MynR¨“Ƭ•+g–©]&TPÁÿ*¯® ?T¤‚ üP! *ðC…@*¨À© ?T¤‚ üP! *ðC…@*¨À© ?T¤‚ üP! *ðC…@*¨À© ?T¤‚ üP! *ðCPŽ+Otèð9ÜvªT¢Z=¡é•ºKÝ)tÍ)4s2˜éºéɤï[°àý¥Ý¯®‚ÿ{\V¦zÄ ‰CˆŸ€ªBh é‘ÿ§iaBhÞ?MÓó_ë9BÓ7iše½&,+óÂM«òwd­ ‚ËG =º ¹ÄÏ€M „ŽÐtBÃB1™ÌhºM3‘ëp¡”V ¡™Ð „£#4]z<ÆßfsÈÏš9dþÜYnòÖ ~öÂìH”ŒTJ¹P2÷û‰ÃË<í´‚ ç2ÈÐå@!4Úw¸’aw  Y³DEÝG3/ÏEvv.iéY?~’ãÉ>|‚£Ç38åAhf4ÍŒÐMHiäæå嬷˜BgEU¯:÷ó)7•z#S_Œ˜ð[uix®Ê9•|RuFPÛd2Gè&‹U7[-(DþÖ² $—Óã´Ÿ>æq;ÿ2[B–[C"×¢äΦ=PQËý\éÕ«—Iºªf ¡…Ôª]“Yß¼ƒÐÞ4 ä¦esèH:6íeï4••cF·„ ®ì¹§ŽzÜy?ÇÔh<ã‹wzýíÏÖÝo-Ñòì™ÝYéÃ…fêÙØd EI áÌ’Ñáf-<Ä‚Í,1ë„ÚtBmf: ¤$$ŸR9y¡™½¿—4”Ã~:%7ûÔ/Q1±oýôÑ£ý•£‚²sY¤k×Ûké¨ãBh4j\ŸÏ>=¨ö•RNÌbqü.¶îHWN-„Ðpæ¶ÛsÒW†Ø*}b‹\øù¸žy÷¼³<Ô•›}cnVúC¡•»š,!Véq*Ý•©jDY´– k×¾9 kWF×s"ff;غóþÜÅßS•Ýi päœJ’†gfhXÌÇóf<êsa¿ ÊÆe!!„èÑíö4!ôÊšfâó/_§nÝš-¿»›Õë°lõ~Nœ´(ÐD–=!KF«¬¨ukiš®yY²N¤ÒúwoC§+êb1•ac­ÈÌvðÓ¢uü¾b«tx¬J‘gÏÜ«é¦ñ&³õûŸ?}AûIVp™ W·;?ºþ={wfìØRoRfRNå2sþzö§&3žìTÕ¬†EÜÒ§#-”a—‡ àäé>ûz>kþLBÕòr33Ù£*ÇNšÿù+æWP.ôº³±†yÐLºÐtþóŸG¸æšÖAÏG*ÅÆ]I|ûû62U ¨éaXŸ¶´jPÒ–¥`ñÊ­|õÃr•mWÂåÌÉu;o„„FOþå«gK½QϽ÷þ§ OvS{îÉ&†3§¾4<µ4MT‚(QBˆH%=&)=Bn Ãå–†+U)ÏQ¡Ôa%=¥¿¯X1kÿżæ‹Ée#€k¯ùž¦é a¢RL4Ïxލ¨° Øv¹ ~^±›ë`˜BÀyšžmkqûõ ±–ÏñÖÍÛ0mÆ*3WWžÃð¸'˜-¶·~ýúÀƒ£6TÏÎKm‘“y¶mûIO?EçNWä¾iŒði. °ë IDATé9€¥>¶™šŽ˜=ûÉ€w¼-O”Ï(» £¤1SÓÍÕ-f˜üÚÐ2‹#áè1r´HZG¾)].dãFßã_:uâÎ;ï,tL×uêT²q’3K޼ðxùd±âøðà  ##ƒÐÐP¬V+1áV8 n©!¥ô;@·{ÿ!òlU(ZTÖˆ­á ­w8Lœ8‘‰'’—WXhÝ»w'>>¾ˆÝ&õk³ãèöÍ.•@†ÜÚ “Iãƒé?²zÍvž{þ^;’oæîfåÚÀ …'Kèúí?ÌzlA©ŒþpY äúþ“(Á<  ÚÕ½ {i9.ª†Y =z²~ýz>øà¿çåææ¼~å•WB0uêT¬3(J3ár¹°ÙŠC9–ž0UÁfdÓªq#À+¶k®¹†½{÷ú<'::º &ì\„Ô‹ aË1IjÚIªU-]_ìæÁ=pæ¹øä³ŸÙºu£ÇL'O4RBÓ…’ÚN‹É:xÖgwüÏÄY•†Ëº“.¥1SÓtkØ(î½³ËÛSJ`3ï˜3gN‰ç=ûì³lݺ•#GŽðñÇóÕW_!¥Äf± ¤!L8N?ù*Òr¼Mùª!‚”’áÇ+ŽØØX¾ùæ›"M¬3\ٴ჉ÇK,ÿ¹ û}6´‡ õèÆ½º¦OÍ ìp¹‰.c\äöšfê ðìÓ0›/|N¸®Gžæ=oÞ¼Ï[³f íÛ·§I“&äåå‘‘‘Arr2!6 (¥™q:‹ïËN8ŠÝT €j^ÏÙĉY¸pa±çôîÝ›°0ï ¡RŠûãì„B‹ÅB¨Œ2ÌZð›èÕ³=FÞ©æGwÿ’¾àÝŠWøÿ0—­@€íÚÄÒ°~• Ô„7°ñ GŽáðáÃ¥>ßãñ¼NHHÀí1B 4 Q¼'4)ý4‚îqР–·ïñÑGùÍkîܹ¤¥¥^þùçüðÃ…Ò˜4§Œã`Ï>¾P]eªA,3ã_ù6›¼q._ôì~ÿ¥Ÿ”d.[hš©¡ЪEÉã ¥Eàp«‚šàL¦,!8‘åm•T 7û›)ÿW’è8.~ùå—Råa·Ûùꫯ8qâÇŽ;Ï®ÀSV…±±Uy晻ϼ^+³±rÊe+&€ˆˆàMPªU9‚ ¿÷'P¥JêÖ Ü3f2™èÚµi %=ÄV÷Ÿ^׼˕h:§« é(Gž†áöÈñ••ž=¯¢{÷‚ù-÷÷ìz_ù™ì.[(å±ä9ƒ·$TÛVM s¥q$ýìzÒÝ»wØN×®]I>•SÇêH§e c¡6Êp¡„NžÓ…5€ÑósIMM-x›ë 5ÛEý1e²u.ýë¶3®d xï‚ –#.[Hiü ‚ÄÄ“A³©iuclœp‡p8ÁÛ\5jTÀ}‘[‡ eÏIoÓ¦j(źbÏS)áv€Ð8™•KýúõËTþÎÏîK8Žn8iXÿÂÆ†jժʠÁŠ.=ºÜsã-'\¶1™l?¬X¹+¨v¯¾²š#ƒ­ §ÈʱsÕUW1|øpú÷ïOÓ¦MK<ÿî»ï¦F«8ì"Œ0G×vº²ÄsªU­J³w”üèig¡= Tð:5ËUbß'FÜ9 ¿Q÷Åh9à²0K))—,ý[]HGô|BCChRÅBªÓÂâ?’•mgúôéüúë¯Üu×]~ÏíØ±#7ßýé*SÞ)z\Y¿Ð¨¼?׈BnÒ,áÑ¥ã¹èº^ “™¤d{¨]5ð‰PÅQ¹ríÚ5ÏßHEõíÑåžËâÞº,.‹ŽI‘Êó¥ÛÐÄ_Æ—|BôèÔŽ¦avÒœþØz§Ûƒ¢Øx¬°°0Fy†'_ÿ€dªÛA›šêÆ–~‘+[6%Ü• šNbz.“'O(ˆñ*‰×_š5kâñxX½3³'›–M•:ÿÒpÅg&~‰HÀ¨ðÿ—õ„©¼i(W‚ÙjþzæCTŠ.ÝÍTZ–¯ßÊžlf j„ÔŒ²rúÄQÖ­[ÇÑ£G‰‰‰!4<’z-Úãˆj€Ô,˜é4Ñè^†•M–¯ÿ“=ŽJ$­¢òHؽ[n¹…zõêùõlÝrË-üøã,Û°ƒ„SN^݈*•+•ùÚ}ñÃìż÷î7^´[±æ‹mAÍàð?¬(â•WÆ‹åËѪVm©……Ùµ$#]×¥U×”IµÚL†Ûlrk¹f]XÍf]7¹LÂb‰±UqžvXÁÄ“æòÖ„A-WÏÎí0mÞÁÞ4'GõªMS„©ª4ŠH¬!pbFéVìBWÕµ4ºulN•*…=GYYY|ýõ×ÔªU‹Ö­[S­Z5233ÉÉÉ¡yó³KœvëØ†ôÅÞÙ„gÚhÕ¢›6m*Vš¦ñàƒ2iÒ$¤”lÚ¾‡C§qc‚.€#G’Î}{*è\ÊM 2~üxmõj[ÄØq7ÿ+=-»ÃÞ'*:œ^çDZv=©0#„w×(_ÿ…VäHì'Žn£aƒšü½/‡·^½™–̓7px†ììÖmßKZŽ›liFšÃB ¤Å•E¤Ù uÃņ–?ýôÓLš4Éçg/¾ø"&œ]ëÀ0 ~Z²–4KmŠfá¹lYù;¿üò 6lÀjµK³fÍ7nmÚ´áÈÑ$þJHã¸ÃJ‹=;¨ÂíöpÓÀ'ÈÉÉ¥¶¯XóE`“õË)åF çðpß¹”ò.àryp8ÝØí.²sœœÎr~ÊNÚÉRÒí$ŸÈ"õd6R r’÷Êן?®ëÜ:|*!¡Vf}ö– .Gvvi'OaH‰Ål"¶f‚‰EÅѽ{wV­Zåó³þýûóÛo¿:fó—®å„¹6 «Ì¥Fˆ¤f´•Fµ«“cwp:'—<·Az–ƒD»Ýqе"èÔ]ë¹Ì›»ŒiS¾Îß[Q=¿bÍo^”ŒþaÊ]K)•!„@©üŠï³YÇlÖ ³R¥„±­±¯|ÌÖt _~ú$¡¡ÞAµq/ÜÄÞZÌO‡SÿuÑÊND„ÿ‘ñó±XŠ_øAÊ¢8]×tm«6nçH†›¼Ðê$8 )ŠMÇ"…¥›zž‡zaºÇµÇf+ÛcIœ<™ÉÇ3~<óÖ|}Q2º”;/Ö©S™vðVÙ)'²>Óæ=lß‘ÎÈûzq¶SÞ±}c†Ýr%IéÏŽû*x..—Ëç~†{ï-~Ø`È!>ëºNÏkÚsGŸv´‰Ì¦Ž–F¤3›û4a®4ª«tšXO1°},×uëxÑÄátºxyìtŽ‚h÷q+Ö|qÌß9ÿK”»dÏîêK×vX,&*U å»9›¸e°÷}IØs¼öæwDEh Ø£ÈçÇvátV.‹W%òŸI?ðò˜Û.Æ%Áår±`Á¤”\sÍ5Ô¬Yؽ;|øpNŸ>Í‹/¾Hff&ááá<÷ÜsÜwß}¾L`±X¸¦}ðwÒ* Áر²ëïCän¦\’Â\$Ê]佩³Þ~lÔð1gÞ{ ɸ ¿0x@®¾ª¾ßs_zùc¶n?Æ'=N­šÅÏyýùlÚy’nWWçÉõZÙKÃÚµkIJJ"&&†ž={šëv»éÑ£ýúõcôèÑDF?·wï^víÚÅàÁƒƒ¾ØtiPJ1aÂg,[ºï¾îr/Ju[¾jfÙ")Ë)å®ùë¯ý…˜LºÆ«cñÚä…,Z²›çŸ¼ÎçìÀ¤¤t¶n?Jç«øÀó£ñü„Ù¬Þ’Žõó¥üûÞn=å¸8ïR£'OždîܹH)éÒ¥ ±±±˜Íft]§S§N…Ä‘——Ç–-[HII¼¡òM›6妛nº$û†dÊ”oˆ/ØQ- è{¹‰Êa 2ð†oøeáWŸ\Ó>ZΦ­ ¼1vuköã?1z2ûœä›ÿ¾@ttÉdCJ^|mû»iZÏÆ„gn¹¨›È$&&²aìV+;v¤fÍš¬Zµ ¥Ý»w§sçÎL:•Úµk¤µÙltèÐêÕ‹ŸTõO‘“ËÆ–?÷€RÞ‘ÖÈSîÓ©=-.Kâ’-g©òvS]åN ýzüó—E´³XŠF¸*¥øâ»üüûßÜ3ìj÷»! 1ñÿzäš6­ÎÔwž (¿÷f.aÅ–4¢B]¼ûŸ; þVd¾p¹\lÞ¼™¤$ïàZÛ¶miܸ1W]u³fÍ¢Aƒ:tˆ´´42228÷wªQ£F™/„ÄÄ^xñC’“ÓPJΨÑ#xgújRnC—Þ© µV æjB®ñÈ} Ö¸·¥œPîšX.Ç–m§rå¢ëW !¸÷öNDE†ðåœÍlØv”—GõáãOæ¡”â±G‡œßc÷õ¡^íüwþ.î{ö¿Lzþ&êÔ¼ð9gHOOgõêÕ(¥ þ€Bï•RdggÏËË#99™ÜÜ\Z·nMttô%ßÊmÍÚ¼ñÆç8ò¼‹K´jÕñ¯9©…@ÄqRiØuž]îs*!TJüb 6efæݹsöÿÄŠ‹å®éÑåž#}úrÝ-ú½#–®ÞÏ_­Çbdù“ðp sf—}lêÏ¿1ñ“UÊà¡!íéÛµe™m••;wòÖ[oqã7Ò»wovìØQàÕ:—ÈÈH4h@ݺuK„¼P23søà£¹,‹ßR¢”b@ÿ8{lhAÞ.—‡!#¦qßÐ?·ÛMnnöÙÙv22²HKÍp'&¦œN8rÜ™˜˜bvæ9jÕ«,Œ ùeÿ¡¤ø_–ªåëf¤| $í¹½¡×# 7m?ÆÞüWÆq†ÜÖ‹|Ay'¥fóò´_Éñ„ЪA8OÞÝ#èM®ÇœiÓ¦ù¬&OžLÆ ù믿7nœÏó=‡ƒC‡qôèQºvíJttÙW‹ôÇ’e[˜>c.ÙYv””˜Í:ÿ~ø6ÜXt±ûG¾EžS1ëËgKm_)…aH\.·Ënw$.Z´ò†™3§‰÷”|ö?C¹("÷ì>Tªy²ÛÔ&TD)ɵ×v¼àŒkU‹àãW‡‘}|?'dóÈ›¿±eOÊÛ=—6mÚD֞ϖ-[8p >?ÏÉÉaĈDDDЦM pQÄq"5ƒ^þ„‰“¿!;;\ݱŸú’Oq ½­;ö\ƒ‡Jÿ} áÝo=4Ôf©R%ºöw>TžÄåL C‡°ìüë@©Ú ǧqêda¡f4N¢¦ l*ŒëÛDâvd3åû­Lür¹Îàün#FŒ`þüù¼þúëlÛ¶­`[„eË–Q¹reL&ÙÙÙœ|¬T7¶lþ¥$íÚ6»Înn²Ñ·{;F éÅ3~eG¢G'ÿÎcC:ЮɅ¹Z­V+_}õ7ndÑ¢EL™2ÇCtt4Ó¦M¼«&Þu×]4iÒ„œœrrrPJqÏ=÷ЩS§`\fŽ$ž`Ò´Ùì?p %%Bn½©;w ïGHHÉa*BêÕ‰dçÎÒm`›œ’ɯ ÿbè­¨pà®àâP®²yó zt¹ÇeÒâv{0›ýoóæ ;/B5%å4J)ªW‹Æ¤kŒ}d[w'òÎ÷›˜:o­jàñÛ:c³\XDðÕW_ÍÕWî aÆ|ÿý÷¸Ýn¬Vk©g –…ô“YÌ™·’_®+¨Íš5©ÍèLJҰ~`û¦÷êÕ‘Ï¿\ƱcéÔ®í{°65-›Iï-¥CÛÚÜOׂEñÜ.÷A³×þ¥¦\5±PœÈÎÎ-)%mß‹R’Fƒ7»óï]0<¹˜ÎY0ª]‹ºÌ|éfWròw’›Gß_ÆöC¥ßª,„‡‡S©R¥‹&ޤ”SLûègîyx?/X‡”ŠÐ £þ}+ïN~<`q´kÛ”Áòù,×áfÚ'+xêåy<öP†ÞÒáœ#aïÞ#'.è‚.åª@p¨–ž–áwwÕ“é§ÉÊÎEÓ44ˆ-6] lÞ² ³^´¿a6iŒ}ðz¶ì9Æûów0í×ÝÄh9<|kJ¹uty áh*ßÏ[ÅŠ5;¼Æù®Û!7ucÈÍ݉Š,ûj‘õëUi°zÍvF ¿ð†¥ü²d_|·‰òù{# =|Îðû¢µêŠÖMÊœ÷Å¢ü 2Ž;AÓfõŠM´wßaP’˜˜È›b°o2•cŠŸŽzUóÚ|Ô¨&³þØÎÊÝyLøn;•-t5Íëk°Ø(‰oç®dÃæ}g&5f%ÌbA ñÀÝ7\pš¦II'Q 6ÿuŒ)Ÿ­Â•çá•1ýhÛÊ·#Å™çâÀþÄຠƒDyH&Àý‰ô¾Öw +3Çû#‡¯ ¢dåè\Ó¹ŽßtV³Î}7¶gøuÿ]°‰•»³yóûmÄØ<ÜÝ¿mg5ù`°cw"ßÌ]ÉŽ] ¨ü9)Õ«DpÇ^ôêz%#™BtTð–g­\9‚# 'ydì\ÒN:hR¯2cŸèMhHñ“Â:æÜ³÷ðÁ "ˆ”;T¦Bð÷NÿN »=…"ÄÏ({÷G =º—n:µÕ¬óÀàÎÜ}£äóŸV±bWïü°h›Áí}®¤S‹—$Dä` V®ÛÍ’•[ÉÊv¢”WëWcÄÐÞthÛ¸ \ö\oQöØÚÕ8r$•)'ypD®ïÑ”’¾‚%¬ËTY4d P;wú ØsrAIBB‚÷ô[°hRºiÖ$°1³Icäm=¸_*f|÷«öd0ýç¿øxÞzt®Ïà^mѵ‹+”„cé¬Ú´¥+·qò´÷»QR!„¢cÛF »©M½.)5l¶àÍѯ^-¥ )7ô,û}Ñ‚UQJ {Ð DÊ@„¦å †Tx<&“ïÏn·{k?ûúʆû e{×5Á#wôãa¥˜¿|;?¯9À¼õÉ̉ßKãjf†öãŠFÁ«UŽŸÈ`õ¦ý,]ý©é9ù} omѰNúöhK×N͉Š(¾* bTµª•PR’Yº^{Ž»=Ϫ%»-/åQ Ù „ ''—èèß  ÉÉÁéÛ­Yû7Ž<tã…/‰#„`p¯¶ êÕ–-{’™ýûgxxsÖF„á¤^ŒNÏŽMˆkßœ°šˆ9¹Nvì9ÊòuÛØµ/…'gfóP«Z$½âZѽs jT-gM)g¢À»À†R®¼ÒëîÝ{ÄûBRò^Ø—€ò'Ýäû‚“'3‹H­ÚÕAIû•M›"MFåZ;³ÒŠ?222 ^ïØá~ kP£†ÿx´mÛö¼Vˆr¨å°Ñuý´Bä6 RROQ¿nÉíY]×é{]7ú^çuó¦¥"ÏáÄíñP³fÕR‡¤˜tW»ž×?^ÌöÝGAJÜÉ£¯ü—ÉÏ£~òˆ ܃,k% i0ÿ—ÕÄÆVåæ›½žÀmÛ¶q›†®ŸulÚ´‰nݺa³Ùø|æ W¶iQâr¨ ®A-S”Ë@E(‡5ˆ¦›ìg¼XB×8œ˜ZòI>¨Z5†:ukÒ°a€ãµtM㥇®£K»†ùëVI¤¡5þköH*ÙÀÿ‰)§ùê<¶íO%¢aS”2˜>}¿þêÝ«dëÖ­EÎÙµ«ð®Á:ubâĉ,ßÀÑÄ$”’ô¿±§ß| C²uë>„®!t!Ä_A»¨ Sîb±Zœç6±öJ¾$åB0êîÞÜЭ¥wR‘”(%yæµoØøÒ”)X(àÇÅÛóöÏä:ò@)¬1U©ß´JLò_æÎ]ÊŸ¸yóæB¢8zô(Óßÿ”¤R¥º÷ð?o>%%½à÷š&ýP0¯/˜”;Ìýòy%t=‡ü/o÷¾K÷ÄÖa®FåGÇ"%O¾ü%Ç“ÿ7·àËÉuòôÄùö·Í«:êºà¥û{òñ{£ésmG”2xÿ½Y>äâ矖âtžuw8p Ðbvöœ\B,5H=á]…å©§Gbµú/Ûòç^„®ƒîm)(e*[3á Ü-0ð®7× ´8oĉ`Þ̧Ð/ÁÿçòÛ²mÌøj1J()Ñ…bæ»S¹R1Á”å?w&ðúG ½‹ƒæ»Ò[6®Éó\‹ÍzvÁ„ys—ðé§späæ¡”",ÌFŸ¾qT¯^…µkWS«V ºuëÊÖ?w²hÁrトÀõ7ôàù—þ]b9ú÷ÛÁã6@*lV3“^ºû†v/µ8|a³YË,€ßþØ|¶™çý}÷–|Ö¥£\ MO+pê:ËßÎ^µjTæËc¼¡R²wÏ^û—ºO'åÿoïÌ££*ò=þ­º½&B@ˆx,*(øXÜuÌÌ ¢>™÷T#; (” ‚ŒƒËÈ2ì*Œ0A•Ù„°HkBÈF’Ξ޻oÕû£ÓI’ÎÖ˽ÎýœÒ‡¾]õ;7÷ÛUõ«_ý~ ÿ»r'V¬Ý]ã¥z¨<¾X>=»5m(lv'Œ¥Uu\¼jIo,IT ªRÏèA(Ez¦$“î!¦m$¶®›èèppÎqêT:-Ú2‘XmvLš±ûœ®^T3Ìžò2æÏ|µIU‚MVváí£4’®>%M0{vÒA˜m.0&=oDD„aËúy¸»c;€38p+Vü-èväåãw£?ÄõŒ\pÎ×9Ûþú.üB@ q"õj¿øæíKžßøÉª"MhÃìÞS,B)lvIžÈètüuíôìÙœ1ìüû~lÙümÐú?vìg¼1æCXÌ€sŒþïgðùÒÉ­J#öùÞkKB…ý¡¶©1$)]KF3"•î÷ -7Iû\†Z­Âª•ïaÀ€ÞgX¿öüðݱ€öÉ9ÇÚ5;ñÁ|÷Ú' ǺU3ñûQÏ„¼¦áí˜-v˜­NïÑT 'BmWcHR œ„ÒýÞÃqQ™$óŠÕA(–,™Ž'žXôñ:dÝÌQ§Ó…Ó—`Û¶ïÁǯžˆí_}„¸¸Ð.ÄâzVa¡8Q]µ]!I¡ªÏ [ØøÙ)@(AÒGðÂKOÆ]³ÙIw^âQ#þˆ³§/A€ÅŸLDâœ7L²'RR¯×ƒîª"7BmWcHV \ ç½ÃÞ3%¶â Bþ8ëM¼þæ °Ù˜ ±íÛâÍ1/"åèYC8çØñ·}øÍ°Gê]ЛÌv¿Úh¥fy´:Iƒúh¨íj*’ˆ@i¾÷7Ï•[’üç9ÙkBâæÈ(>ÔÆ¢Z÷5çgR/á•WЮ]t½Ÿ3„kq-C²9ê 2ŽË9ew¬?@Ô¾“.KI •hÍ7OY•¼=œ±”S½û±ÈB ç¿Ä9÷óê:æùEOàðÓùL$-Ý…Äi#ðÈ ÞïÏßD´XðúCX–|9Æà=›f«V«\äð|¡‰²œ^2p‘ïôL±2rëÉJMËÆ'«¿ÃÜ)/bèÀží+tmoÀ¤á÷"iÛ”™‚œ‘_Q;rˆî¿sI»Ä/d#€ð¬C.g¬—óWòðɺ}˜;ñy ê°~‚ÅÀ1xiPW$n8«=ð1‚'.ܪq¦pÆ‘Ü:ç)yœS¨ÙDec™ž½Ü‚Àl^¸^€…ë~Dâøßâ¡ûâÒG(>$ÄÇ`p°DçÀñŸóP»±ËÆK4»IÈF [—¾Ì8ã;<7ßß®ÞôF,Üp‰ãžÁ€¾ýÚ¶xû¹ûmÐ࣠GÀ´‘Ta²ÃétÕL±À—äóïúB60q“gø®ôãœúJv)n>†Ä·žÄ½:ú­])AAâè¡(­0cù¶ãéãÊÍ’·.clÇ–÷Ÿ•íô ™@\ '<ßN%åþÙ”½–WŽ¿8‰9¯?Š~=:ø¥M©¢(OL@jz¾Ø“ê÷ö¦f×q$¿wdd%¡-)ãŒrÆ‘ç‡uHæ­J|¼-s^ŒûâÛùÁBé®×`ÉôçðýçñCJºßÚeœãtZzžKe»ä·B„¬²}þH€ñ•` ™Ù­sõf™ðñöŸ1gÔ@ô“FÐ`Ñ!& & Ú¯ãìÅ›~i³¤ÌR×µ+bÆöù#å¼> 3ÅdÎ8.]-hñÍÏ.2!é‹3˜ýÊýèÝ¥þä¿tîíÑïüÏãX°t²óZ¿Ûžv­¨faÎEº’ý`fÈ‘@8ØeÎnd—¶(IoN‘ ïoü ‰£úã?îŽò·y²"áÑ{ñBƒ˜‘´ V[ëâÛö˨»blÕW‹GÈ+?QÈN »Ö¼áäœä-ˆêÍ3š0oÍqÌ{mÀ¿½8<Œyõ ôïÓï-ØÜâ⣢Èp%Óè½@—mhÉíÈN ÀE¾š3Ö¬$jåUvÌ^•‚÷Ç BÏÎÿžÓªú Hœ6¢Ó‰Õö¶¨[EU5qWœ±tÒ–Ê&ïUcÈR ”9ƒqKšæb·;D¼»ì ’ÆAEw PŠÏŽÅ‡ÏàÄÉ‹ÍþüÙ‹žè]ˆlêöù#`eh¥@Ì\WÈ3åä–5÷.2Žy+aö˜Á讈£AtZ Öþßt|¸p3ŒÆòf}öû/‰Õ ôRöc€L ²È[Fƒ3¶æBz¾Ï¨EÎ%ëa¨ˆïÜ&XæÉ–6m"°jÙT¼3áOp:›ØèpˆÈ/¨Ü‹sŒÛùùhÉWj²ß‘v1Ïg5­»Î`Ô°{ÑMG“‰¿Ó¦ŽÂ¼¹«štö?'¿Ìµk"°ÿ"\»ÞÈV .î:o4V6˜wÿÑkx|P7Ü£ˆ£Ù<úèèw|³ã_^{üT–µz>á›uc¥—¶•ÈV {·O²©Uô€³WoÚåôìÖNG+xmôs¸~=ùy¾3ÉïÝ—Θƒñë ™Td+°Yœ *+­·¼ÿ¯ ¨ QZÄ)âh5ïÍy kWï€(Ö?0X­XL6=›¶kÓ۲ʘØTd-œ¼™]Zgµ:ÁC—»¥%ÎÝéJ[º*!˜ûÁx|±eO½ï_Ë0–sÆmp±õA6-hȯd¬ÿÜ5Ùyî|öiO3Æa·;Ñé®ÖísÎa³9`2Y`·;àp¸àtº`w¸`³Ùa³;a·;aµ9`µ;a±Øaµ;a²:`±:`2Ûa²Úa¶º`¶ÙÁ@½²›×¦áTkÔ×ë¡Ó©¡Õj Ói Ó©¡Ój ÓªeСM¤‘áZD„i`Ðk ×ÐihÕ4* ”"•±ÕjFŒLÀ¥ôLôé[÷ròÞs¹`l~òމò­®Ú²tíÒv?€wE‘!::¬Ñë',**L0ËŸW„¬¬|\¿zW¯ÞtW %¤nVò:wíkÜþ~=B Ô]€{ÛšK䨴ØPes‚P»W ZSÕ·¾>½Ï{{ÎèÇFêнSºÄF S»0ÄF…!Ò A¸N •Ðz ah›Õ¾¶^âÏçs¸•îj]ëÒFöiÛÖpS«ÊƒÝîDU•¥%(((F^n22rpåò äæ6©Mâ~¨ÜÿTÿ'AÍ“Vý “êúíõ_ënéÎk½Úñz¿öµûÇÝ$ñª6åùí=UãŒå•šqœå{ ˆ×DׯFëÑ£KÄuŒB§ö´oލÂõj¨T´ÑŠVСC KjRQa5:lÄž=ä5ol&²“Õj;wò’.§¨W¡¸¸‚VËiIi¥PUUAË˪Æ¡¡”èDQÔ *AÏ]\ÏAôœ²00è ¡á7€ € „%ˆä„DBBÂÜk݇Ûý0£úa#uuûµ¸íá¯÷ÚZÁÕ\ËÝ‚àþÍÝ/8Gí{·ýæ(*1£ÐhB »é3åGïøvøÏþ]лG,:݉ˆpm½¢éÐ!‹ aa:äß*ÿ¡¢Ä(Ýê=~‚Èmá(IJZ@"#*…èp¨ÓvªR«I¸Z¥#j‚†®%”j• %D¥#DÐA zPžRè  R‡BÃ(%"¨ „R¨ ‚ŠD2F¢#¸È£gœWPr×8Du­C÷ÆçuGoQxç:®MëZû^÷¸ ‡>½:¢s§hDEêA©[4œN§ë)Fu(´…À£DÆxDz±o_Ò¦,ž:n]DS'Ù‚C¥Qé•ÊILC™¨¶ Ðp‡K å\ç²;ô T &êáDã.½V Qaz]¬ZMÛª)Ú‚ó6œóÑÅ"bÚ„9† Š/ë߯³ù³%§ž]±bØ/â̇/((ø@Öû Fˆ‚‚((ø@ˆ‚‚((ø@ˆ‚‚((ø@ˆ‚‚((ø@ˆ‚‚((ø@ˆ‚‚((ø@ˆ‚‚þ=ÑÕ„f˜TKIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/email_bg.png0000644000175000017500000000103512167726157026202 0ustar abompardabompard00000000000000‰PNG  IHDR6.ÞåsRGB®ÎébKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÜ 7XþIDATHÇí–MNA…«ª»'3ý+gÁì^A”DØ&Vl~6¹LÁí,{ÜÒ,¼ò-¼°ð0SlH$!›‘@PëVª÷úU23´Y-W«€étzÒ*@)õ«U3›·íÁàud áʱ§”7MÓÇ}gQY–YUUßñ"þ€Žµö.„ ½÷° çóyBˆ‹º®²,» !hçi­~`2™(¥úD4fæïBðÞKï}b­¢[¹PEÊÌ_¥”Cf@ÇsBÐÖZH’äùí>°(ŠcÑ%3¥izûp!eYˆ¸Û+šÍf=Dü Ç!Èó”RêÉàÚ ðW¢ã!3÷‰èºišnš¦ïýÞlõ`±X¨õz}JDCD1snŒ©œsfWþ[1ÆN]×gRÊ13÷ˆH:ç„sî“1„û¶¤õˆDtÅÌÝ$I6ÞûÌZ+žÊ¹w’—Ëe²Z­¾Àù9µÖçœ1Æ ¾ôÚR–å窪Îq„ˆCls/Š1Þ||8ïpx0bK{RIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/likealot.png0000644000175000017500000000162012167726157026247 0ustar abompardabompard00000000000000‰PNG  IHDRóÿasBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDAT8•“Ëk\e†Ÿï;·Ìd&§Öf’:mR‘ mš@)%ÚEq#µ´q#R ¯€P\èFB¯ j]d§­V¨/ kH%S¢4ӤɄ¦C&ÛùÎ9ßÏ…(]¸ñY¿<‹^%"ÜËôY5èxÎKˆ~JÒ¤@i]ù2Mí'#§¤tï^ý#¸6©üíÈûÈ v=7pä ?wÿcZû½ 1I´ÄÝËöú•Mj6?^90&æ_Áä¤röïÇ=ƒ§‡ßˆ‘ø \°-DçQÞËsg¢ÊÒ…_WŽŽIŠˆ0{Þ›X™{±%é–¤Í bÍ¢ˆDl,’ÞI6ͳyF’æO²4}¬5{Ž AMJ¿~;|¼Ô%fŽV2ÈŸåàà~ž|â(b|ýÍw,”ʼüB/ù 7|ù‹'·ãzcØ9ý¬ûÖÃ#ï<d2J9½|ÿC‰ãÏœàÎ*ÙM£Q¥¶­}š™Ù«ì+L#xdò}^õö¼£fÎùËœ˜ï3‹ò¡T'¢ó 1¤›`7t âe¬Y ‰ÊX:ѹq®^¿éJšô('Ï­…qþ½_ÇZz\`›¨à!L8Iàû¬¯oÐßßÀÍ•UŠÅÝıaéF™îîd¶O„ÀUZ%irÛíèÜMWáA?RèÝ@b³z D&¢ÑvÃ.âh'Ön¡Àº@"iÅUÞ¢("ð’$¡^¯Ç1õz<Ïè<’Ö@c\‰$ë(•EkMµZ%—Ë‘Ëå²Ù õFf³ÉŽ0$&Dâu”ºÊ¡œ˜hH™Ë8Ñd³ÃˆêÆÆM”ÎãêÖTphÓ}ß:Ç÷®‘˜´æºkSyÿÖâù÷öx5mMЮUÀ¶‰þ£|€ º /<ÆÊâT3µ¼«¦¦pƒU.æwíy``4Û)ÇQJ¡t’"6AÄ·ÖhÖJ²öû·­V­|éÈ Æþ~ã›JÏìãqårJ ‡¬P<±dPˆ‚¶Ö"\I…ÏFž—Ÿþåø•|IÄ6IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/ajax-loader.gif0000644000175000017500000000315412167726157026617 0ustar abompardabompard00000000000000GIF89aõÿÿÿøøøðððîîîÄÄÄâââÎÎÎÚÚÚÒÒÒÐÐÐÈÈÈhhh...æææ"""\\\¾¾¾444¼¼¼ªªª¢¢¢ŒŒŒPPPTTT„„„zzz¦¦¦ööö>>>ZZZ€€€˜˜˜–––úúúfffpppxxxžžž rrr´´´ØØØ!ÿ NETSCAPE2.0!þCreated with ajaxload.info!ù ,›@€0`@ €N1l@3™0…ƒÐDª¡ PPŒ¡ˆªf8 “ ‘Æeé Bâ@–40b  $‘|n „‘%n   B  · "³xBŠ ´CcªÉMÏ»aɧÕÕ#MA!ù ,”@€ 8Ãd’P( ª†Ã0„Š& Òh†ÙÅC …H“Í&QHt 00d ÙMƒÃñL   LL"& ‡ Œ)&$( H'Œ"& ¨¨C$& C²$C&N'IÜHA!ù ,˜@€0*pÃd’`±HÂB Vš€D¡@j6ÓÒYCÃf-zH,)u^ùn4‹™ Є  f[%Ž [[$ g] •B ”C \“\B»¾B¸B»¾U'%ÙCA!ù ,—@€ð8]ÃdRµÙ,K¥3$Hæ ±XCÓ‡¤’lDŽ4ùiD—ÍÀ ñ'å´  I&& Œ !$$ Œ ž&( HC  Œ v' ‹˜I ŒX ®C· ÃÇ¥CÀ*¼`JJ¦BA!ù ,”@€PhùHÃp 0|>%@e£Y"BÍÓ Ùl†ˆÉDÓ!> ¯jxO"ˆÊg*°MDìQ|@`]Ž “ „Ž”  vB% ¡£ X†°¬ °¦£ £CÃ¥° BÅÉ·¿°¾KB¸LA!ù ,™@€ ñxÃdò2™œˆ‰04Ï„°|>’¡£á(T&€éC ð3|) ’ÀM"OC ($&)†+ — &†" ——  I– T—  ³³I—C°·«BnB鮯JÛ JA;HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/hyperkitty-favicon.svg0000644000175000017500000007025712167726157030331 0ustar abompardabompard00000000000000 image/svg+xmlHyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/notsaved.png0000644000175000017500000000123712167726157026272 0ustar abompardabompard00000000000000‰PNG  IHDRísO/sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<IDAT(‘}QMˆRQ=÷ÞçÆPpȉSÄLÍ&aÚ­ªÙUÝD‹"ªM´ Ú(ŠÊ´6h´H”@PŒ@ÄÎHJ‹AŸ¨—ïÞÛJãÙßæ»çœïžóA)…u}rrRÈd2þ‡!J)ØU6›½Íûª”šèº¾uttdØá¨-cìÍÎÎ÷ûý›çÅ:œ­@*•º`?ÝÝ]'!äY2™¼d‡]±P(˜®ëW)¥ïC¡Ðíím Z­ÖŸn·û]ñ‘Ò'„ ¤”}Îù/’N§ïrÎ)¥n !.sÎMŸÏG÷öö\‡ „Àéé)f³™i†i†˜N§N?4Îùcáp˜y½^0ƸMƒ°`c8¢Z­N¤”¯¨Ëåz¨”úÐl6'–e­ËjY£ÑµZm*¥¼Ç¿-3Èår/5M{‰D\n·Û–<Q©TfRʃx<þeå ±XìišOêõúdÝöÁ` ¤”ùyE”R?)¥k}x½^æp8Âg+”ÒÛíf¿Üét0ŸÏ>Ÿ–eÝ@l„<Ó4M4 £R© Ûíö§b±h4›MSιH§Ó×m4M»q~~NJ¥Ò´ßïsη¢Ñè})å•^¯w\.—'óù|“Rº¿äücáL×õÏ–e=M$g‹ùáááoÏóùü[!DT)U\¼ýÂ÷5_E IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/mail-attachment.png0000644000175000017500000000121112167726157027507 0ustar abompardabompard00000000000000‰PNG  IHDRóÿasBIT|dˆtEXtSoftwarewww.inkscape.org›î<IDAT8…Óßk’QÀñ¯úªŒrÝL/ÔÍéXé¢p3ƒÁÆ¨Û ¨—^x‰ºˆ‚ ¿ ®‚Ä@ ¢»æHD®u¹­èç*ì¶‘¦lnêüÕ…Y¯šë\žóð9ÏyxŽªZ­Ò¼$YTÀ1`H÷€©€?¸¢ÌU5’,v3]¦®Ñ½ýýØv676‰Åb,->ý^©T<0QÏW·\—}ÎÑñ±1VVW¹¸M$ò“É„Ëí2•ÉIÏH²ø8çóù˜ž±üfyjk«0”þ™>>Æëõœú'\ñù†mÀ®NC'™LàRÀ\n¬¯­aر`w; cÐ3€VÐÖcI×AÐÐ4A±WiuºfÀ „Ìf³*‘H „@YJ'ü´ºzl :-Ÿ@WƒÛõ›…¿T•iÔÿê'•rµZ ÐP*•(–ŠÛù\€W¯_2àÞ0i³vóñÓò¹\ ÐÐÄB¡ÌÍG9qü$V‹Íh±X Gf( ÛëÙlÖ ×ëI&d&o^7öÚ<Š>$»‘ÅÑë$þ-k÷„Ù…¥&ÆÐÓm7j4Þ½K¹RƵÏÍ¡¡ÃÌ?™¸Ú®‚ Ï_<H¥’}V‹•ƒ<‚@©Xâkü ÷#!Ò™t¸£~£$‹j³> S›ƒ40 ܰ¬~) ºQòLÚÕIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/button_older.png0000644000175000017500000001024512167726157027146 0ustar abompardabompard00000000000000‰PNG  IHDRƒ$ª„‰0sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<"IDATxœíœypÔešÇ¿ïïì_ŸI§“îtçn G ƒƒ, Í1Š…èÂJÕ(Té²Zè–™ª-ÐZ±ÊÕÚRÖ]Ê)Y`©¡aaW!*w Q‘„Dè$’¾~ý;ûÝ?HBDŽ„¦ò©zSÕïñMSg:tFýðÃ3‚ÁÿîõævöGŽÕjmN$¦i>à½nc¸mÓÃ0ŒÕju¥ÉdògÁ"‚ ÃÐE‘o—þkÁqo±XlN§MY–ãwRßͰÙl.BY–ãétÚìOùx<ÞYXXæ8Ž1 ©”œ ýù¹yónôù|ÑþȲÛí‡c±ØsÞcŸ|òÉv8û°} .—Ëg±X¶µµÍ‰ÅbY,–±yyy¶d2ÙB)el6›»¡¡áŸ¾úê«É>Ÿï†a~&»  àÁÍ›7/­©©™RRR’£(JM_õß,ñn·»(##£P×uY×uÃãñ =|øð3•••“ ÇRJ+o—¾[ ªª¾¼k×®© ÃL ?¨ªªô§¼a¦Óéb%ÉZxúô)€aè–sçêïóûýgív‡ÞWY<Ï'‰Ä¬ÚÚÚOú52x½Þ ;wîüõŽ;˜^›U9ÙÙÙ=÷Üse<Ïo¢” 'Nœ û÷ïg 0tèÐkÉæöîÝK`Μ9b_õ÷…S§NÍÚ°aƒuĈô™gžéeYÀóÍ7¸páSRRÂ{<ž_ÔQ>þ<³oß>&™L¦GŽÉã¾}}ýÁœÎtêÖ­›©”ìܱcûÓóæ-ü´?#Çquº®Ïë³Ï`³Ù\…B!†eYÌœ93]\\œÞºu+ÛÒÒBÞxã Ç믿>Ç4ÍýWÀï÷¼téÒh›Í–E‘ë•N„’››;"‹'“I›×ëmŠÅb'dYŽI’dw:÷†ÁX­VRš ‡ÃC<Ï/^<Ð-(<ÐÖÖ&jš†h4JA¸?;;û>I’.uçaY–ÉËË›ÑÖÖp»ÝßG"‘ZÓ4 ŸÏW¢ëº—aX­ÖŽÎÎÎlUU,ËþišFVVÖøH$âçyÞÈÌ̬knnþŽRšv:Y™™™E­­­D"!ÙívÙív_hmm=©ëº’$ÙœNç¤ööö¿ß_ߨxe7˜RÊ÷¥ý¯E}}ý‘©S§†a¦lÞü9 •’;vlûûyó|îóùûd¢(^4 ãïú<2¸Ýîq[¶laà±Ç£“&Mú<‘HD×­[7cÕªUÃEÁ‘#G†•••¿Z—Ëåš±~ýúõõõ„‚ ô^¹0 ÃH,Ë.Y»v­+`YÖ·téÒqeeeÛ ÃÐ>øàƒûªªªÈìÙ³±oß>$“I¼úê«Çq=Ûª•••ã7nÜÈ@cc#³råÊA6› ï¿ÿþwÝyΞ=+lܸqR*•‚×ëõ¯^½z’išljj³nݺl«ÕŠéÓ§Ó]»v‘’’úüóÏ8pàÁO>ù„Õuàñx V¯^=‘RúG·Û=|ÕªU“TõÊÃá´zõê2‹ÅòÇqB$YZ^^Ά—Ë•[ZZÚ»}„¾´ÿõhhh8qÿýSBÈýúÓg€T*e …þ¼dþüEۼޛǥä3]ŸÅ›…¦¦¦€i^ös† ’ˆÇã2¥”—e¹nèС鮆¦¢(º{+²Z­ž/¾øbx}}=ÉÌ̤+V¬H×ÖÖöÞîfÜn÷¤·ÞzˇÉÂ… éK/½¤dddÐ?þ˜ ‡Ãs†aPؽ{7òóóéâÅ‹áp8ÌÞu,..VgΜ p»ÝX±b]¶lYšRÚ£oïÞ½˜;w.>|8D"äСC.Q30 Ë2öíÛGæÏŸO'OžLêêê¦|øá‡¬ X½zµ¾lÙ²t[[yûí·g¥” ƒX³fMríÚµêâÅ‹ÇñÞ{ï ^¯w”Õjúî»ïò†a`Ú´itîܹ郯5PJô¡ýo¿/+›\¹dÉÒ¹Š’²nß¾íÑ–––œ›•ç8Nàë6áfA×u¾Wë½â©Ãá誀B!"zm8ŽÜÇxüñÇiaaá-]º´gئ”2ÍÍ̓:::Çq$‰„Ãa‹Ïç#pðàA^g—óQ£FÑ^xáÐØ±c?áXï:ʲüß#GŽTÀétÒqãÆ}éõz?F£‘n}?ü08qâÖÙ³g«pìØ18Nï:¯Y³&>eÊ”­£GþâðáÃ\¼x‘7 ƒ$I¥RÉÒÒÒdGG‡´{÷n¾¶¶6 DÓ´œÆÆÆ€®ëàyO?ýtuiiéŽÒÒÒÞ#c÷4ñ…üñÌøñ=ñÄS½ ²cǶy‘H³çFeY–5(¥ž>O¹¹¹„LJ)2 ¥t:v:ùÕÕÕ <Š¢h½Ë±,kM¥Rìv»‘N§ùÌÌÌ7BMÓ,]†ŠŠŠž†òù|E‘pgïŽ+--EKKK˜RÊD£ÑøõêÞe<<±k^äç窪¦EQ4@Ó4ô6`ŽãÂápšçùt,vù¨¦¹¹{÷î¥ÀåQ‡Ã0$UU‡–——Û!(++£yyyääÉ“Y–¥T*Åu}wªëº¦(Š‘Ý{d¼%òZhš¦gfº)Ã0$N Ãàe9ep££®çúàÀhšÖMÓzö1†ºÖ«ƒé’ß'Ȳ¬“ªª*äææÒ×^{-¦(J'Ïó¶3gÎx Ôúõ×_Òé4JKKéÊ•+몫«íܹ“.znn® ÀÕÑÑAÚÛÛGeffŽ=Ú£ø/q {ãõzóÏŸoÿÁÿÑc‚ sæÌ;PP0(~#¦iÚ!í}:::âO<ñDkSSSN8&ï¼ó ¸ü_¸lÙ²´$I'ºæÀ:;;ã‹-Òׯ_/TTTýû÷ÙívB@)¥”!„Ô.Z´È»mÛ6òâ‹/r@ /•J¡­­¬X±"=jÔ(‚Ÿ«_·¾………-<ÏuttgŸ}Ö7lØ0ßË/¿\{U6±÷=J)×[~×g1Nã8¿gÏž‚ÚÚZ²|ùr—Ïçs¶¶¶Y–±aÃsÈ!1®ªª*R^^^dÆOü¡ŒŒŒº’’’ñ'Ož$åååVžç­N§³;à/t Àçóå;W7zÓ¦=WA4ydþ‘¼¼|ùfòMÓtˆtŸMìé«bÇ“wúôé¢óçÏ3Ñhùùù9rd‚eÙjEQI’¤X,6åܹs3f TUÝcµZ­ÑhtüÑ£G‡ÃAfÏžmTTTp”RL:õb[[[uFFFæÅ‹GÖÔÔXZ[[©ÓéDaaazذa­†aœommtáÂŒ7.-ËrÅõêg±X,Ç×ÕÕeE£Q6;;cÆŒ©ûöÛo‹ÚÛÛ1aÂ5‘Hìw¹\“*++íN§cÆŒùÎ4ͼC‡eˆ¢ˆ)S¦Ô655]./uÜn÷àêêêü††¢( ¼^/)**Rü~­®ëZ4}üøq‹$IdÖ¬YÆž={8˜6mZK$9•••UXYY9$cĈtРAäøñã$//999G‰D¢¯í5¹¹¹³gk‡øáïÑm¢h1‚Á…U¹¹þ>ÉM&“¹ñx¼¶Û®Þ¸)DZÇqªªª}½-%‚`vq½<,Ë2‚ †aº®÷ùfï_Ax†aMÓôt÷X|%M0MÓ0M3}­²„"Š¢ (Êm»&à÷ûý55ßþè£?ô‚$IF0¸¨Úëõõy‹ÿÒ¥KùªªþË-T†®å^ŸËjš\Ù ½&¦i"•J¥qy¿«кêOqÅ׺:ígñÝPJ¡(J¿ÚëFøý~ß©Sßåüñzâ¬V«1þoNggçýÑ£iZ€·ý j€;ÏóœÃáÈûì³O{âl6»±páoêÜnE?úSUU€æ`0x~ÀîA$I²F"-¤{GÔnw‹=úcF†èg_Æãq¥t-p„V]×í<Ïk7+8Àݪªày.6}úC!PŠ‹‡Ç%Iê^™ôMÓÄ®©~#pyŽû}4]™••ÅBn;ݨª UU%%㺣®»ïr#b±˜…Rúr0¼ìðPJgF^$yÔb±h,ËL¿0‚ è¢(êwRG,ã Ã8 Çx7q÷ÁB^ÈÌÌäDQ¼#KkEQ¸ÎÎÎ¥tÔO®Ê¼¨ºû…B“ !_¸ÝnA„ÛÚAŠ¢0 ¥ô×?{D3` w'¡Pè!BH(##Ãj±Xn‹Ìd2iÆãñ¥tÖ Ÿ× p÷ …Ê![DQô¸\.©ë­ß˜¦‰h4*kšÖJ)1ððö% Y!oâòÛKA’$¶ëÁÓM1M²,kÉdRð&¥ôÍ'ù„B¡±„°„㸴$INŽãÀ²,ºÃ4M˜¦ ]×i*•J˜¦Il¦”¾:ðcƒ„B!À|BÈ\BÈp…”Òœ®ävBH ¥ô$¥ôSôóg|þè:ÀëNñFIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/button_back.svg0000644000175000017500000002563112167726157026761 0ustar abompardabompard00000000000000 image/svg+xml Back to the thread Back to the thread HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/reply.png0000644000175000017500000000120112167726157025571 0ustar abompardabompard00000000000000‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDAT¥ÁËNa€á÷ûçïô@§9T)…XâÖkð\{n½÷®Ýº3q!;Mˆ.0‘…ݳÀl¥RÚJ;Ó™ÿ“b¢îû<¢ªÌÃ0'ûäùç\!¸× § “Ä8‡’:Å©’ªâœ’:%uJêT‘t:½<ïµöö÷írµÜxô`³MUrYÿ ÿWG‰7ŽÒÕ‡O£‰é“fœ8y¹Ó¡Õ‹EÊaßÑ8ÚgŽÎ¹£*½‘2M¡Ýyö¦Ãé(2ÁrãŽE©d3†ú­ï¾u9»˜R+ |Oð­à[¨ä…þ0fk÷˜Ê‹•,WÄ\Nfš7‹¬ÕJlírNY*| ¾åœ0c¶v»,-–hÖ‹ˆrÍŒ&)3Öƒæj‘åjWZ ˜rNrB?Œyñ¾E¹\ ¹Z$oùËŒÆ 3"LrÖ±^¯ðöK—voB»7áõ§.z…ÀO1šà[þ°—QŠqœp<iÔ|?CgããÞl6ªÔóŒ&1^ÈR5@PÁ^F‰¦N¥Ûi,äsP¸½R`}¥€¢àPlÁÇ® Wò Níhðó Š“»ky)æˆI1€ˆ3W„+–jà~…ñð¤}dã‹“Ãû·«Ù`aÁf=±ÖÃx‚gÀÁX@„kš&q<>?íŸ|oýUe†9æôýIù{ðȱ[IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/favicon.ico0000644000175000017500000030253612167726157026070 0ustar abompardabompard00000000000000 hV  ¨¾00 ¨%f@@ (B;€€ (6}(  ££ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿN77.m^_›eSVhÿÿÿ_MPYwgiœiPPIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™ŠˆÌüüüÿ£™šàU99 —‰ŠÒüüüÿÀ·¶ê|NH'ÿÿÿFF. ˆyxµ§œ­®”§™ƒy–~]SG{JBÏËÊïÿÿÿÿÉÂÂõ]>>!©››Òÿÿÿÿÿÿÿÿ›…«“‰ÔǼåýûúÿþþþÿùùùÿÿÿÿÿÜ×Ô󢎈ÎÁ´²ÿÿÿÿÿ·¶çfMM ›‹‹©ÿÿÿÿïììÿ¸¦›ðûúùÿÿÿÿÿÔÔÔÿ£££ÿ¨¨¨ÿæææÿÿÿÿÿÿÿÿÿÞØ×ÿ¬œ›ÿ«–•·ÿÿÿqSS4ȼºî˾ºÿÿÿÿÿÿÿÿÿúùùÿãããÿÿ¹¹¹ÿÝÙÕÿâÛÓÿúùùÿÿÿÿÿüûûÿ}eeÀÿÿÿÿÿÿ ‚€»ÿÿÿÿÿÿÿÿèáÚÿxsmÿ†}ÿéèçÿæãßÿkgcÿÿÑÊ¿ÿÿÿÿÿÿÿÿÿžÛU99 ÿÿÿ®’¿ÿÿÿÿÿÿÿÿÛÒÉÿÿÿá×ÌÿäÜÓÿLLKÿ///ÿÈüÿÿÿÿÿõóóþ~de¦ÿÿÿÿÿÿ‰bbNÒÿòÿÿÿÿáØÍÿ’’’ÿÄÃÃÿãÚÐÿ÷öõÿÔʽÿÈÆÃÿÞÕÊÿïììþ­žœþ°”ÅwKF:Že`¢ÒÃÀù¯¦ùñîëÿà×ÌÿßÕËÿûúúÿÿÿÿÿ÷öõÿèâÜÿ¸µõÀ¶³ÿÿÿÿÿÿÿÿÿ‰vvÅ_FIiÕÎÎåÿÿÿÿðîíû»Ÿ•ê¶¥›ÄËÁ¸ãÝÖÑ÷çâÞúº¨žÚŸ…z´xTL@’e]`plt‡ooŠ^MMZS=C.|jl¦…nlŽ~UOQ™ffÿÿÿÿÿÿpR=uZJ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñà€€€ÿÿÿÿ( @ IIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU3DIIIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ;;˜jUWçjY[ðaLOéH69cÿÿÿÿÿÿÿÿÿÿÿÿ]FF ]FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgKKŸ“‰‰íÿÿÿÿðððÿØØØÿbMOå€ÿÿÿE050[EHåoZ[ðxbbédFFÏfDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€@@†nmãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿopì\;A'ÿÿÿ]FJÖÍËËÿóóóÿÿÿÿÿÜÚÚÿ}^\átFF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚`H5‚dQ‘„_Gv—kQL”kRÿÿÿÿÿÿÿÿÿÿÿÿ]<9UƼ»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’……ëb@@DÿÿÿjTVäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéååþyXT©ÿÿÿÿÿÿÿÿÿÿÿÿ€bKN—za¸¤ŒyÕ½®¥ðôñïÿÛØÖü±¦¡ëŸˆ|ä‘qbã€]O¿‚XG=ÿÿÿ_?!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿM278Y=>òmWX÷ªžŸÿ‹ƒÿ„vxûS:>øK4:,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ>>%fFFô©¢¢ÿÿÿÿÿõõõÿëëëÿøøøÿˆ{}þO9=Òÿÿÿÿÿÿÿÿÿÿÿÿ`@@O49kN8:ÀU@cÿÿÿÿÿÿS=?ßÏÆÇÿòòòÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÿÿÿÿÿŽusòmECsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~[AC€bL¸–rZášyaí–{gí’vcì’p\ïkWë‡cPàzXF£~VGA€€@ÿÿÿÿÿÿÿÿÿÿÿÿcB?ŽÃ·¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿweeïb?BeÿÿÿÿÿÿZ>Aôîëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿ|TQçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjU@ ˆhM¥¢}^ê«‘}ôåÙÐÿýûúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõòðÿ¼«¢þŽm\öˆ`N÷|VG¯†\K=ÿÿÿÿÿÿiFBÊÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnmò_??fÿÿÿÿÿÿZ?@ëìèéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰ieîˆUUÿÿÿÿÿÿÿÿÿ¹‹] –rR¡¦aïÓöþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõñðÿ£’‰÷^Pò|UHãwPE\hC=}÷µÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}dcò_==CÿÿÿÿÿÿY<>ÑÈÁÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬›™ølC=\ÿÿÿÿÿ©|V¦]ç´§÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊ¿»þ€_TõwRHöŒplüüûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuTQëpPPÿÿÿÿÿÿY::“ƒ„õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÓÒÿtMIž”kJ&£yXÛ§’€îýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùùÿãããÿÿÿÿÿÓÓÓÿÇÇÇÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÓÑÿb[ÿ~\UÿÜÒÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúùùÿvNJãÿÿÿÿÿÿÿÿÿdCC=sYYñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú÷÷ÿƒ]Mç£{aðçáÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÿ¾¾¾ÿÍÍÍÿÀÀÀÿÄÄÄÿïïïÿ§§§ÿèèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ª§ÿtPJÿ™~ÿóððÿÿÿÿÿÿÿÿÿµ¨¦úrGC›ÿÿÿÿÿÿÿÿÿÿÿÿkIHîúùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùøÿ¨‚oÿµŽþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÝÝÝÿÿÿÿÿÿÿÿÿŽŽŽÿãããÿÖÖÖÿÖÖÖÿÓÓÓÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóïïÿ‚hfÿpMJÿÕÊÉÿÿÿÿÿˆieê…RGÿÿÿÿÿÿÿÿÿÿÿÿhAA…‘}|ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúöõÿ¢xhÿö¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿßßßÿÒÒÒÿÂÂÂÿÏÏÏÿ„„„ÿäääÿÜÜÜÿßßßÿëëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸ª©ÿjFEÿ¢ŽŽÿ|UPÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€@@vMKêø÷÷ÿÿÿÿÿÿÿÿÿøôóÿ›qdÿËÀ»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿØØØÿÚÚÚÿáááÿ‡‡‡ÿüüüÿÚÚÚÿÖÖÖÿÖÖÖÿåååÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙØÿfBBÿ\::…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmDAbywîÿÿÿÿöñðÿ•jaÿÔËÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÜÜÜÿóóóÿÿÿÿÿ°°°ÿÿ333ÿåååÿÿÿÿÿÿÿÿÿÿÿÿÿïìéÿåÞÕÿéäÝÿùø÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÑÑÿc>@üZ88DÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsPLÆÕËÊü“hcÿÚÒÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóñïÿëçãÿóòñÿÿÿÿÿÿÿÿÿÿÿÿÿHHHÿÿÿ   ÿÿÿÿÿóðîÿ×Ä­ÿÛÆ­ÿË¿±ÿàÑÀÿÚɶÿãÚÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥“”þZ:=ÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUvJFí®“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñîêÿÙǰÿÝȱÿо§ÿÖ¿¥ÿÜË·ÿñîìÿÿÿÿÿÌÌÌÿ   ÿ§§§ÿóóóÿõôòÿØÃ§ÿá×Ëÿ+++ÿÿÿÿãÚÎÿãÛÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöôôÿ`ÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒFF(ŠNJ÷ùöõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÝÓÿíçàÿÕÕÕÿÿÿÿ ÿ[[[ÿ000ÿêàÕÿàÑ¿ÿÿÿÿÿÿÿÿÿùøøÿ×½ÿéçäÿ,,,ÿÿÿcccÿþþþÿâââÿÿÿÿÿÙ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦˜—þlDCö¢]W,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtEA˜sm÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéãÜÿéàÔÿÿÿÿÿFFFÿÿÿ???ÿÿÿÿÿÖÖÖÿéÝÏÿàÓÃÿÿÿÿÿÿÿÿÿÿÿÿÿÛʵÿåÙÊÿáááÿFFFÿÿ888ÿùùùÿÿÿÿÿðìçÿàÖÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«ŸžÿqOLÿ²“Žø¥bX÷˜[RTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~MGƯ‰úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûûÿÚ̺ÿÿÿÿÿíííÿTTTÿÿÿæææÿÿÿÿÿàÌ´ÿæßÖÿÿÿÿÿÿÿÿÿÿÿÿÿíéãÿÙÀŸÿïéãÿÿÿÿÿüüüÿýýýÿÿÿÿÿúùùÿÚÊ´ÿõôòÿÿÿÿÿÿÿÿÿÿÿÿÿ£•“ÿxWRÿëååÿÿÿÿÿ×ÇÅþYSú}MI…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨^W&‘XOðŸ|sþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÒÃÿëâ×ÿÿÿÿÿÿÿÿÿúúúÿøøøÿÿÿÿÿíçàÿÕ¿£ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÛÑÿÛÁ¡ÿäÚËÿñîíÿûûûÿìåÝÿÛɳÿèâÚÿÿÿÿÿÿÿÿÿþþþÿ˜ƒ€ÿ~_[ÿòîîÿÿÿÿÿÿÿÿÿÿÿÿÿêâáÿ~SOújCA‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“YS(›^Tð¬~wø³…ÿ™l]ÿàÙ×ÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿØÈµÿæÜÏÿýýýÿÿÿÿÿýýýÿêáØÿÚ£ÿíèáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîêåÿÙǰÿÖ¾¢ÿÓ¼¡ÿÞ͹ÿìèâÿÿÿÿÿÿÿÿÿñïîÿ‚f_ÿ•{ÿüûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèââÿlFFødAAJÿÿÿÿÿÿÿÿÿ€SK"‡SOðsnùþüüÿÿÿÿÿáÏÉÿ¤r]ÿ«”ˆÿþýýÿÿÿÿÿÿÿÿÿüûûÿáÖÉÿÓÁªÿÙĬÿØÀ¤ÿÛȲÿîéãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«¢Ÿÿ€cZÿÑÇÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨››øY=?ÝÿÿÿÿÿÿtFF vLHågdùüûûÿÿÿÿÿÿÿÿÿÿÿÿÿøôòÿ»œÿ¦z`ÿ×ȾÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõôôÿôóòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÉÆþe\ÿ¥‹„ÿùöõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°¢£þUAìM7;8ÿÿÿZ<<"`@Aþɾ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüûÿÔ¾°ÿžv\üŸ€díÆ¸­ùþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùøÿȼ¶þŠn`ï{\NÙ\B32ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥ZZUN'ˆQM<|NKNiBBUcAAC_BB#ÿÿÿÿÿÿÿÿÿU9>Z\ACúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöóóÿÈ·´þ¨}wóªocêŸeZÍTJd¸€U‹iKœxYߟ€dꦈróÀ«œþØÊÀÿäÜ×ÿìçãÿÙÏÈÿ¨’‚÷r_ñ…gVânREž{ZBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU9@$U;>ûs_aúš‹‹þ«››ÿ‰ˆü‚edóYVð‰WRôŒWPâƒPJœ‡RH5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpR=gNÉ_>>ªoFDq{NJ>‹FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿøÿÿÿÿðÿÿÿðÿÿàü?à?Àà?`€€€ÀàààààààðøøðàÀÀ€~€ÿÿ€ðÿÿÀ?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(@€ @‘‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿIIIX;;U9>-X>>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ:@0Q9<ÒYÿU:>ÿU:>ÿP7;ÏR7@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿX;=±_?Aÿ|giýÏÆÇÿ ›œÿÕÒÒÿÎÆÇÿ[EHüR8<õU@@ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZ==¤gGHüœ––ÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿÿ–••ÿY>CýI15Œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]FF Y=C.\=B2€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\99gkHGüêååÿÙÙÙÿÿÿÿÿÿÿÿÿúúúÿÿÿÿÿüüüÿÒÒÒÿ§š›ÿU;>øM33 ÿÿÿÿÿÿÿÿÿÿÿÿ@@@Q8<„T9=ñZ=@ÿ]>@ÿ`@Aÿb@Aú[<=Ìa>>:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiDCå»­­ÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿÿÿóñòÿZ=@ÿV=A;ÿÿÿÿÿÿÿÿÿÿÿÿP6;©U:=þ–‡ˆþØÑÑÿ’ÿñîîÿË¿¿ÿeOOþnGFý^<<‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|PI#tJHúýüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^BDûW:=iÿÿÿÿÿÿÿÿÿQ::9V:>ÿzzÿûûûÿÿÿÿÿÍÍÍÿÿÿÿÿÿÿÿÿµµµÿÜÓÓÿuNLûgC?¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿg@=‹‡nløÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnWXúS89œÿÿÿÿÿÿÿÿÿH15‘`IKüøøøÿÙÙÙÿÿÿÿÿúúúÿÿÿÿÿÿÿÿÿçççÿÿÿÿÿîèèÿzMJûzJE0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªUUpP9Pz[C«‹gMä’jPî‘iPìŠdNã‚_IÒ|XC ‹cKX—hLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfC@¯±Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}fgýQ67¦ÿÿÿÿÿÿÿÿÿO7:׊y{ÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ² žûyMIäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¨|W#‡cG“mQê¤xYú ~eøº¥–þèßÙÿ÷óðÿîëèÿÜÔÎÿǸ¯ÿ¡‹}úŠhV÷’gPýˆ`MòxUD¹‡\JS’mIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlDB³¸©¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{ddúV99ÿÿÿÿÿÿÿÿÿU;=몜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€TPønF@,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtT<@’nPب|Yø­—ƒùëáÙÿþýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù÷õÿÔļÿš{lüŒaNþ‡]KúxRDµ„ZJ>ÿÿÿÿÿÿÿÿÿnFB²»¯®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿz_^ùZ99ŽÿÿÿÿÿÿÿÿÿU:=ߟÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›}úh>;‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰fGAštSá­„`úÕĶÿþþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøõôÿͽ¶ÿpdû†[KþySGæyPE]UUUiB=ž·¦¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtTSù]::eÿÿÿÿÿÿÿÿÿU9<Í‘€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÌËÿzLGÏÿÿÿÿÿÿÿÿÿÿÿÿžtMB£|VᮆaøÛ̾ÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîèæÿ¡‡~þWJþxQGñmF=·¢Š‡ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrLJùtHH.ÿÿÿÿÿÿÿÿÿP66œv^^ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRMèÿÿÿÿÿÿªqU •pPóˆ`ùØË¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðëêÿ¥Ž‡ÿ{SHþvPGÿ¸¥¡ÿüüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷õôÿxLIû€UUÿÿÿÿÿÿÿÿÿ]??MfEEûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†XRíÿÿÿyV=P©zWõ¾£‹ûþüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÕÕÕÿíííÿÿÿÿÿÎÎÎÿ©©©ÿÒÒÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóïîÿ§ŠÿwOFÿ|[UÿÜÒÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿË»¹ÿnHEãÿÿÿÿÿÿÿÿÿÿÿÿi<<iCCþíèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒ\Tò…`IÁ©{\úèÝÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢¢¢ÿÿÉÉÉÿŒŒŒÿæææÿ¥¥¥ÿûûûÿÍÍÍÿƒƒƒÿõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÜÛÿ‚b\ÿrKEÿ’zwÿóððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmiùgA=†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`@@Ø©——þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÜ×ÿšjQþ¶˜†üýüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËËËÿÖÖÖÿÿÿÿÿÿÿÿÿâââÿÿæææÿÿÿÿÿÿÿÿÿöööÿÚÚÚÿãããÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿ»©¦ÿqKFÿoKHÿȹ¹ÿÿÿÿÿÿÿÿÿÿÿÿÿƒTN÷‰NN ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc==XpNMøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿο¹ÿ¡oWÿØÌÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÏÏÏÿÏÏÏÿÏÏÏÿÏÏÏÿÏÏÏÿíííÿfffÿñññÿ×××ÿ×××ÿ×××ÿÙÙÙÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëæåÿƒfcÿkDBÿ ‰ˆÿüûûÿÐÄÂÿrKFÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€oHGòÕÉÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¤žÿžlXÿëãßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿÒÒÒÿÔÔÔÿðððÿdddÿéééÿ¾¾¾ÿÏÏÏÿÏÏÏÿ×××ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿ¤ÿiBAÿ€cdÿ…WRô\4.'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[;9p}XVúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­š•ÿžk[ÿõîìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààÿéééÿÍÍÍÿÈÈÈÿéééÿcccÿÿÿÿÿâââÿÎÎÎÿÐÐÐÿÑÑÑÿàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ·¶ÿf@Aÿa=>éU++ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsJGéó±þÿÿÿÿÿÿÿÿÿÿÿÿ¶ ›ÿ—fYÿ÷òðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿÎÎÎÿÑÑÑÿýýýÿÿÿÿÿÉÉÉÿ777ÿŠŠŠÿéééÿÿÿÿÿÿÿÿÿÿÿÿÿóóóÿ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ²²ÿd>@ÿ]9<²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa=7*|QMõþþþÿÿÿÿÿ¾¨¤ÿ_UÿøôóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÿÿÿÿÿÿÿÿÿÿÿÿÿàààÿÿÿÿLLLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæâÝÿÜνÿØÄ­ÿÙȳÿÚÌ»ÿéæáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­››ÿbÿ^7=.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|A?†ŠXTüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóòñÿÔÀªÿÞпÿ¼¸´ÿVVVÿ888ÿLLKÿ¢™ÿÚ¾›ÿÓÆ·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÐÃÿÛÁ¡ÿ›™ÿXXXÿÿÿÿÿÿìììÿà×ËÿÚÐÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÑÒÿ`;>ÿ_:=Kÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€@@‰JGúÞÑÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿпªÿÝÔÉÿÙÙÙÿƒƒƒÿÿÿÿÿtqnÿÜÀÿÜÒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúùÿÕ½ ÿÝÑÁÿÿÿÿÿÿÿÿgggÿÿÿÿÿÕȶÿöõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ·§¨ÿ`;>ÿ\9@$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠHHJ‡LIùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿߨÐÿÝϾÿûûûÿ'''ÿÿÿÿÿÿÿ¥Ÿ—ÿÙ¼™ÿëçâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàØÐÿܾ™ÿÒÏÎÿÿÿÿÿÿÿÿÿýýýÿåÜÒÿߨÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûúúÿmMNý\9<ÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠHFq‚NMõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÀ«ÿìéåÿÍÍÍÿÿÿÿÿÿÿÿSSSÿÚǰÿÜÏ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÓÆÿ×¾¡ÿ½½½ÿÿÿÿÿÿÿÿÿóóóÿõôòÿÓÆ¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©––ÿc=?ÿ_:>FÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒCCo†OMùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿÔîÿÿÿÿÿ«««ÿÿÿÿÿÿÿÿÿâÖÊÿÔ¿¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÐÂÿ×Á¥ÿÆÆÆÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿбÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÜÜÿeAAÿ^:<¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿII1ŒJHÿîæåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíìëÿÚÉ´ÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿ'''ÿêæáÿݽ–ÿïíëÿÿÿÿÿÿÿÿÿÿÿÿÿÛÏÀÿØÀ¢ÿûûûÿÿÿÿÿÿ²²²ÿ¸¸¸ÿQQQÿÿÿÿÿûûûÿÑòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûûÿwXWýc??ôa>>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„FCÜ™miüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæãàÿÞ͹ÿÿÿÿÿÔÔÔÿÿÿÿÿÿpppÿLLLÿPPPÿêæâÿÛ¼–ÿðïîÿÿÿÿÿÿÿÿÿÿÿÿÿâÝÖÿß¿—ÿéåßÿ¡¡¡ÿÿÿÿÿÚÚÚÿÿÿÿÿñññÿÿÿÿÿñïíÿÕÆµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿŒsrÿhBAþž]TƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠEE0MHþʱ­ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñðÿÕįÿÿÿÿÿÿÿÿÿ===ÿÿÿÿÿþþþÿíííÿÏÏÏÿèãÝÿ׺–ÿ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÓ»ÿàÔÅÿÿÿÿÿ‹‹‹ÿ ÿÿÿNNNÿÿÿÿÿÿÿÿÿÿÿÿÿáÕÈÿÞÖÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ™ƒÿkECÿ¬‰ý­eYþ ^U»–ZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒGC}‘SKýáÒÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓ­ÿñîìÿÿÿÿÿäääÿÿÿÿÿ“““ÿÿÿÿÿÿÿÿÿâØÌÿÔ»žÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖɺÿÝ¿œÿíéäÿÿÿÿÿäääÿ¯¯¯ÿ¦¦¦ÿîîîÿÿÿÿÿÿÿÿÿ÷öõÿÒÁ¬ÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ–~{ÿmGEÿÓÈÇÿÿÿÿÿÚÈÅÿ˜\TüXPæWQ)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆNF«”XNýå×ÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÔÉÿàÕÆÿÿÿÿÿÿÿÿÿòòòÿ~~~ÿHHHÿEEEÿÁÁÁÿÿÿÿÿýýýÿÙéÿÚοÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøø÷ÿÔÀ§ÿÚħÿðíêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷öõÿÚǯÿÞÕÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûûÿ‰okÿpLHÿÝÕÕÿÿÿÿÿÿÿÿÿÿÿÿÿòëêÿŠ[VûƒQK÷}OK=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§cXCUKݘ[Nÿлµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷öõÿÔÁ¨ÿëåÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÕÊÿØ»™ÿîìêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîìèÿÖ¾¡ÿÜ¿œÿßÒÄÿëèåÿôôóÿòòðÿâÙÌÿÙÅ©ÿÚÏÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñíìÿ{\WÿwUPÿêåäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøôôÿŠdaýuJHùqJD-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿš[TL `Vú¤f\üÊ­§ÿaQÿ²„ÿýûúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìéåÿ×Á¥ÿåÞÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿßÖËÿÚ½˜ÿÛÓÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø÷öÿÛÏÀÿ×»™ÿß¿—ÿÛ½˜ÿؼšÿÕÁ©ÿß×ÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÍËÿwRKÿvrÿúøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ôôÿzWUügCCï`@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠUNH‘XQú—^Wüñçåÿÿÿÿÿîåãÿœl\ÿ p\ÿéÞÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèäÞÿÔÁ¨ÿÚȱÿâÖÇÿåÜÑÿã×ÈÿÚÄ©ÿÙ¼˜ÿÛÓÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõôÿæãàÿãÝ×ÿêçãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢‹ÿxTKÿ¶´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíéèÿdCCþ[<>”ÿÿÿÿÿÿÿÿÿÿÿÿ}OJ7‚PLø‰VQýìâàÿÿÿÿÿÿÿÿÿÿÿÿÿþýüÿ»ÿ¨pUÿ°Ž|ÿøóðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÞÕËÿÙÉ·ÿÖÄ®ÿÕ«ÿÞÓÆÿñïíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÙ×ÿ}_Vÿ…iaÿôñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ooþU9=ßÿÿÿÿÿÿÿÿÿsM@uIFì|NKþáÔÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóëçÿ«‡tÿ­yZÿ§–ÿýûùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíçåÿŒqgÿZPÿIJ®ÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíééÿaEGþO69ÅÿÿÿÿÿÿÿÿÿgBB²pGFÿǵ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìãßÿ©‡pÿ¯]ÿ¹¤“ÿûøõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóïíÿ—~sûzWH÷S:1¬–[OǦcWê³k]ö´m_ø¦j^öžqiõ¥‚}ù±”ÿ¸Ÿœÿ¸¢Ÿÿ¸¤£ÿ´ Ÿÿª–•ÿ„llûfJJø_?AþV;>ìU<<ÿÿÿÿÿÿ]>AJcABÿ‘wwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöñíÿ¶ž‹ÿ®…bÿ³‘oþÜ˼ÿýûùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòïíÿœ„xúƒ]Lø^D:UUUÿÿÿÿÿÿÿÿÿÿÿÿ¿€€¨eW&‡MEY|JC†vIC¨vJFÁtJFÏrIFÛlFDÝeBAÜ\<<¼]>>Z=AO@@@ÿÿÿÿÿÿÿÿÿW;>µ_?AÿìèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿæÕÑÿ´Š‚úŸfXõ‹gNî°„]ö«Šm÷ÚË¿ÿþýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùøÿ¾¯§þ†gWô‡`LôlN=š`@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿP7:ÛeLNþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿëàßÿ¼¡þ¡og÷¯i]ø¡bVßTI…µjUÿÿÿ€€€‹fDZ—rQÓ¦|Yô¦{Yø¡~bø°”~ýDZ ÿÓøÿßÖÏÿçàÜÿá×Ñÿ¸§œþ•{jõŒiTôŽgO÷wUDÈuQ@HÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS8=—V:>ÿ{}ÿÇ»¼ÿÓÊÊÿÕÊÊÿÏÁÁÿÁ®­ÿ¤Šˆÿlhý‰ZVú“YRý’YRó…RI¸†OFTÌffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªUqS;4fK6zuYDµ‚bJÌiNÞiOåˆeMß{ZE²|X@kškQ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU99 Q7;°V:>þ[=@ÿ_?AÿeBCÿkEEÿqGFþrHFåoEAµzKFmSS"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ::V:>>]>BBa>B:bDD"€@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿàÿÿÿÿÿÿÀÿÿÿÿÿÿ€ðÿÿÿÿÿ€?ÿÿÿÿ€ÿÿÿþÿÿÿþÿàþÿ>üðÀ€€€ÀààðøøðððððøøüüþüøðààÀ€ÀÿÿÀÿÿÀ?ÀÿÿÿÀÿÿÿÿÿÿð?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(€ ##ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿN;; V8=;T:?jU:>„V9=}U;=uU:?]R7@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@Y=@PY<>´XÿU:>ÿU:>ÿU:>ÿU:>ÿU:>ÿU9=¿S;@4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]>AJ\=?á\=@ÿ[=@ÿZÿU:>ÿU:>ÿU:>ÿU:>ÿT:>üT:?vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[II`?Aª_?Aÿ^?Aÿ]>@ÿ]?Aÿ{}ÿÁµ¶ÿÛÔÕÿliiÿž™šÿßÚÛÿ¿´¶ÿƒpsÿU:>ÿU:>ÿU:>ÿU;>®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdCC_??Öb@Bÿa@Aÿ]>?ÿ Žÿèääÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]ÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÍÄÅÿX?CÿU:>ÿU:>ÿV;>_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfGGdBBàeBCÿdABÿ¤‘’ÿA>>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ1--ÿX=AÿU:>ÿT:>ïQ::ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhCC½iDDÿgDDÿȼ¼ÿÿÿÿÿnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´´´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼¼¼ÿ„„„ÿ­ ¢ÿV;>ÿU:>ÿV9=}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlDDtlFEÿkEEÿÐÄÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„„„ÿúúúÿúúúÿ^CGÿW;>ÿW:>×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`@@X<@@Y<@xZ=?…\?AŠ^@Bˆ`@@`b@@4`@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtFFnEDúoGFÿ°œÿÿÿÿÿÿÿÿÿÿÿÿÿÍÍÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîÿÏÏÏÿÿÿÿÿÿÿÿÿŸŽÿX¹X:>ùY@ÿ^>@ÿ_?Aÿa@AÿbABÿcABõfAC hBFBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpFD’rHGÿ€_^ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÿÿÿÿÿÿÿÿÿÿÿÿÿÙÒÓÿZ=?ÿY­V:>ÿW;?ÿY@ÿ_?Aÿ`@Aÿb@BÿcABÿfBCÿhCCÿjDDÿiCCÎoHH5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqGGsHFútIHÿÝÓÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ööÿ\>@ÿ[=@ÿZ<@ˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU++T9=ÀU:>ÿW;?ÿX@ÿZ=@¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€T9<­U:>ÿV;>ÿhPSÿÛÔÕÿÿÿÿÿÿÿÿÿÿÿÿÿ²²²ÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÎÎÿ[MMÿzWWÿqHGÿsIGÿsHG±mIIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoFC¨zLJÿȶ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘{}ÿ^>Aÿ[=?ÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿV:=\U:>ÿV;>ÿcKNÿ`]^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôÿ‘‘‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééÿiiiÿüûûÿ«•”ÿuJHÿwKHÿtHFÂUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtIEä|MJÿóïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°Ÿ ÿ`?Aÿ_?@úUUUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS9=ÄV:>ÿX=AÿèãäÿUUUÿñññÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¹¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ†††ÿÿÿÿÿÿÿÿÿË»ºÿxLJÿzLJÿxKG“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxJGõ~TPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿȼ¼ÿa@Aÿ`@Aÿa==ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU;;'U:>ÿW;?ÿŠwyÿÿÿÿÿáááÿ¥¥¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶¶¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÒÃÂÿ|MJÿ~NKÿ€MJVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©yW§xW+œpR_eI•’hMœ—lOŸšnQ™pRŒŸqT|pTlœoSW›nS7šlRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ{MHú†_\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÂÂÿcABÿb@BÿcGGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿV:?eV;>ÿX;?ÿÉÀÁÿÿÿÿÿÿÿÿÿÅÅÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾©¨ÿ€OKÿzKHð€UUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®~Yª|XiœqP±œqQá¦wWü§xWÿ¦wWÿ¥vVÿ¤uVÿ¢tUÿ¡sUÿ rTÿŸqTÿpTÿœoSÿ›nSÿšmRÿ–jPøeMÍ–iQ’•hQ^“gPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOKü‰fcÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÅÅÿeBCÿdABÿb;; ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿV<=‰X;?ÿY¬Y?‘\>@ÿcDFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóîíÿŒUOÿsF@¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾Œ_³„Zb°X캉^ÿ¹ˆ]ÿ°ŒmÿàÑÄÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿâ×Òÿº •ÿhWÿ‰^Lÿ‡]Lÿ†\Lÿ…[KÿXIÞ‚YJeWJÿÿÿÿÿÿÿÿÿÿÿÿ„PJõ”xuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°ÿpHFÿgBAÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[<@ƒ]>@ÿ`ACÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡ZUþ„OJîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹ˆ\Q°X佋_ÿ¹ˆ]ÿ·™~ÿóêãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿÞÒÍÿ´™ÿˆ`Qÿ…[Kÿ„ZKÿƒYJÿ~UIì€VIxUIÿÿÿÿÿÿ|KFêlhÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³œœÿsIGÿgBAžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\>@t^?Aÿ`?Aÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™}zÿ“XQÿ’UUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ_@°XÙÀ_ÿ½‹^ÿ´”xÿôíçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöòñÿÀª¢ÿ‰bTÿƒYJÿXJÿ€WIÿ}THõ~TIŒ|SHvG@Ö‹`Zþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜|{ÿuJHÿuIFiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^>@__?Aÿa@Aÿîëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿɾ¼ÿ”YRÿ”WQLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃa,°ƒWÌÂ`ÿÁŽ`ÿ´qÿðçßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøöõÿݨÿŠdWÿ€WIÿVIÿ~UIÿ{RHüxNEç‡XPýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒcaÿwKIÿxIIBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`@@(`@Aÿb@BÿÑÆÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûúúÿ“XPÿyHBƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿Š_ §zS›À_þÑaÿµŽjÿêÞÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúøøÿȶ°ÿ‹g[ÿ~UIÿ}SHÿ{RHÿzQGÿ ƒ}ÿâÚØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyPMÿyKHþxKKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_>@ócABÿ´¢£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆVOýsD>´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´YI±€XíÁ`ÿ»ŒbÿâÑÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûûÿ̼·ÿŽi`ÿ{RHÿzQGÿyPGÿxOGÿ­•ÿöóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïéèÿ}NJÿqGCÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`?@ºeBCÿxxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹^XþvG@Ôÿÿÿÿÿÿÿÿÿ¹ƒ\©xTµ½‡^ÿ½‰^ÿŨŽÿüù÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿоÿldÿyPGÿxOGÿvNFÿ~ZSÿ̽ºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÁÀÿOKÿoDBŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdBB{fCCÿpQQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘jeÿ‚NGéÿÿÿÿÿÿ°{Wb³~Y÷º…]ÿ°…eÿîäÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèÿ¾¾¾ÿ———ÿœœœÿõõõÿÿÿÿÿÿÿÿÿÄÄÄÿKKKÿIIIÿSSSÿgggÿ‹‹‹ÿØØØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿʺ·ÿXQÿwNFÿuMFÿtLEÿ•wsÿéãâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¡…‚ÿ‚PLÿ€NJ4ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfCCAhCDÿjDDÿðììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœ{wÿUM÷³{Y ¡pQ¶¶€[ÿ²~ZÿDZ¡ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿ‚‚‚ÿ???ÿTTTÿ}}}ÿ¥¥¥ÿÿXXXÿÿÿÿÿõõõÿ999ÿèèèÿöööÿìììÿÕÕÕÿ®®®ÿMMMÿˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòîîÿ£ˆ‚ÿuMFÿtLEÿsKEÿtMGÿ´ ÿúùøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€VRþ}MIøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€@@fBBïkEEÿó²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­”ÿœ_Rþ£pRî´}Zÿ«€cÿòëæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFFFÿŸŸŸÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]]]ÿÓÓÓÿ®®®ÿŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRRRÿÓÓÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÇÅÿ‚^XÿsKEÿrJDÿqIDÿ~\YÿÕÊÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêãâÿˆSNÿtFBµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgBB’mFEÿŽqpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°ÿ¬uVÿ±zYÿÃ¥’ÿþüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»»»ÿmmmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿtttÿoooÿÑÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßÿnnnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷õõÿ¬”‘ÿrKFÿqIDÿoHDÿnGCÿƒÿïëëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒ€ÿŠTOÿ…PJ0ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnFF,oGFÿqIGÿ÷ôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúöôÿ·|ÿ®uWÿ©vYÿçØÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkkkÿàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ999ÿBBBÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿÍÍÍÿ«««ÿÈÈÈÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÔÓÿ‡faÿoHDÿnGCÿmFCÿsNKÿÏÃÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„SNþxHEßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿiCBØrHGÿɺºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôíêÿªybÿ¬rVÿ¥|gÿøôñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUÿ<<<ÿÿÿÿÿûûûÿÝÝÝÿ»»»ÿ   ÿÿÿÿÿ®®®ÿÐÐÐÿòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûúúÿ¶¢ ÿpJFÿmFCÿlEBÿkECÿ²žžÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÛÐÏÿ‘XQÿnB=dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqHHjtIGÿ‚caÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìßÚÿ¤nXÿªpUÿ±’ƒÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂÂÂÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿ¹¹¹ÿÿÿÿÿ„„„ÿ333ÿÿÿÿÿ½½½ÿÀÀÀÿâââÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæßßÿ†fdÿlEBÿkDBÿiCBÿ”zyÿöôôÿÿÿÿÿÿÿÿÿ‘kgÿƒOI÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtFF pGFñwKIÿëäãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÉÂÿ£iSÿ¦lSÿÅ®£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿ«««ÿÂÂÂÿÿÿÿÿªªªÿ***ÿÿÿÿÿ×××ÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿŸŸŸÿ§§§ÿÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøööÿš}ÿkDBÿiCBÿhBAÿ}]]ÿæààÿÐÁ¿ÿ—[SÿlA=†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿqGEsyLIÿš}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅ«£ÿ£hRÿ hRÿÛËÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßÿ¦¦¦ÿ›››ÿšššÿ³³³ÿîîîÿóóóÿÿÿÿÿ¸¸¸ÿ%%%ÿÿÿÿÿËËËÿ¹¹¹ÿòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ²žÿiCBÿhBAÿgAAÿqNNÿˆTNþNGåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€UUrGDò{MJÿõòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº™ÿ¢eQÿœhUÿíãßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿ›››ÿ¼¼¼ÿôôôÿÿÿÿÿÿÿÿÿÁÁÁÿšššÿ±±±ÿÿÿÿÿÆÆÆÿ!!!ÿÿÿÿÿÿÿÿÿàààÿ¨¨¨ÿšššÿ›››ÿªªªÿãããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ̾¾ÿmHGÿgAAÿf@@ÿjBBÿkA>Hÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿh@>s~NKÿ¢‹‰ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁ¢šÿ bPÿ›hWÿ÷òðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììÿ¡¡¡ÿšššÿÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿ···ÿ›››ÿ›››ÿ   ÿÒÒÒÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÔÔÿmHHÿf@@ÿe?@ÿc>@Ýb=?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUUUvIEè}NJÿíççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿʯ©ÿž`Oÿ—bSÿöðîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁÁÁÿ™™™ÿ¬¬¬ÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿ¸¸¸ÿÿÀÀÀÿóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÊÊÊÿÜÜÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÌÌÿiDDÿe?@ÿd>@ÿb=?Ôa@ÿb=?ÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿmC@”‡SNÿõ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÈÄÿ˜ZNÿ’ZMÿëâàÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãããÿ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌÌÿÿÿÿÿÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÛØÖÿɹÿź®ÿŬÿĹ«ÿż±ÿÊÅ¿ÿåããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôµÿd>@ÿb=?ÿaqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€tFBä€QLþüúúÿÿÿÿÿÿÿÿÿÿÿÿÿéÜÚÿ•XMÿ‘WKÿäÙ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNNNÿÿÿÿÿÿÿÿ000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÿÉýÿòžÿÖ¹•ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿß¿—ÿδ•ÿÁµ§ÿÕÑÍÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«—˜ÿb=?ÿaô_:>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿe<<&…QLý‹c^þþýýÿÿÿÿÿ÷òòÿ‘XPÿ–WLÿÔ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%%%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÚ×ÿ²ŸÿÞ¾—ÿà¿—ÿܽ˜ÿμ¦ÿÐĶÿÔÌÂÿÔÍÄÿÔÍÄÿÑŸÿͽ©ÿÛ½˜ÿ×¹•ÿ»±¥ÿïîíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúøøÿxWYÿaÿ_:>–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿd;9cUOÿidþýýýÿniÿ•ULÿ¹–‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿÙÖÔÿÊûÿǽ±ÿƼ°ÿǼ°ÿËûÿÖÓÐÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNNNÿÿÿÿÿÿÿÿ---ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÇÁÿ͵™ÿà¿—ÿݾ—ÿ˽¬ÿØÓÎÿÔÔÔÿ£££ÿ°°°ÿÊÊÊÿäääÿÿÿÿÿþþþÿ×ÒÌÿ̼§ÿß¿—ÿñœÿÛØÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÁÂÿaÿ_:>ë_:>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿd<:f’WPÿ\Wþ“RKÿ–]TÿûøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòñÿŽ´ÿı›ÿÙº•ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿÛ¼–ÿƳ›ÿû±ÿçååÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ”””ÿÿÿÿ$$$ÿ%%%ÿÿÿ–––ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐËÅÿÓ¸—ÿà¿—ÿݾ—ÿÎÅ»ÿŸŸŸÿÿÿÿÿÿÿDDDÿÕÕÕÿÿÿÿÿ÷÷÷ÿÎÇ¿ÿÓ¼ ÿÉ´›ÿÞÛÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿmKNÿ`;>ÿ_:>ÿ_:>FÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnA:xMHÿ“RJÿÛÅÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÌÆÿŲšÿà¿—ÿß¾—ÿÓºœÿ;«ÿϲÿвÿο®ÿϺ¡ÿܽ˜ÿà¿—ÿà¿—ÿÊ´˜ÿÆÀ¹ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀÿÊÊÊÿõõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÜÙÿ˵™ÿà¿—ÿݾ—ÿÎÅ»ÿûûûÿAAAÿÿÿÿÿÿÿÿÿqqqÿüüüÿÿÿÿÿçåãÿÒ½¤ÿƳœÿæåãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¢Œÿ`;>ÿ_:>ÿ_:>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒFC·‘OJÿ¥uoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿº²ÿÖ¹—ÿÞ¾˜ÿͽªÿÔÏÈÿíìëÿËËËÿÿhhhÿ|||ÿÿ™–’ÿ̼©ÿÞ¾—ÿà¿—ÿÛ¼–ÿ¼²¥ÿññðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÁ²¡ÿà¿—ÿݾ˜ÿÍÅ»ÿ”””ÿñññÿ˜˜˜ÿÿÿÿÿÿÿÿÿÿwwwÿÿÿÿÿÿÿÿÿÝÙÔÿؽœÿ½²¤ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº©«ÿ`;>ÿ_:>ÿ_:>œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒJH=ŽLIÿ‘OJÿëßÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿû²ÿܽ–ÿÚ¼™ÿÑÊÂÿûûûÿéééÿ>>>ÿÿÿÿÿÿÿ...ÿ¢—ÿѼ£ÿà¿—ÿà¿—ÿ½±¢ÿõôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÇÁÿܽ–ÿà¿—ÿϲÿ©©©ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÒËÂÿغ—ÿÈýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±Ÿ ÿ`;?ÿ_:>ÿ_:>‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„FDÃŽLIÿ°‰†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÈÂÿÖº–ÿÛ¾šÿÔÍÆÿÿÿÿÿÿÿÿÿ÷÷÷ÿ111ÿÿÿÿÿÿÿÿÿccbÿÌÀ±ÿà¿—ÿà¿—ÿ½²¥ÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿ²žÿà¿—ÿݽ—ÿÝØÓÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëÿÿÿÿÿýýýÿÍ´ÿñœÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’xzÿ`;?ÿ_:>ÿ_:>iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹HGŒJHÿŽLHÿêÝÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéèçÿȳ˜ÿÚ½šÿÔÎÆÿÿÿÿÿÛÛÛÿZZZÿâââÿ>>>ÿÿÿÿÿÿÿÿÿÿ†……ÿξ©ÿà¿—ÿݽ—ÿÈÁ¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕÒÏÿÙº•ÿà¿—ÿϾªÿåååÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœœœÿÿÿÿÿÿÿÿÿäâßÿ×»˜ÿÍÈÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù÷÷ÿhDFÿa;?ÿ_:>ÿ_:>)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹HGpŒIGÿ‘WTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ·¬ÿß¿˜ÿÏÈÀÿÿÿÿÿÿÿÿÿOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯­ªÿÕ½¡ÿà¿—ÿͶšÿæåãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƽ²ÿà¿—ÿß¿—ÿÔÍÅÿ¬¬¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKKKÿÿÿÿÿÿÿÿÿþþþÿϾªÿÁ´¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³´ÿb=?ÿa;?ÿ_:>×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆFE±ŒIGÿ¯†ƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãáàÿ϶—ÿÏ»£ÿ÷ööÿÿÿÿÿàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿØÓÍÿÚ½™ÿà¿—ÿÁ·«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ±Ÿÿà¿—ÿѺŸÿóòòÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòòÿÿÿÿÿÿÿÿÿÕË¿ÿȲ–ÿóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù÷øÿrPQÿb=?ÿa;?ÿ`:>mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ†EDߌIGÿɪ¨ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿž¶ÿà¿—ÿÐǼÿÿÿÿÿÿÿÿÿ•••ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÊÊÿÏôÿà¿—ÿɳ˜ÿëëêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷÷ÿİ™ÿà¿—ÿÌ»¦ÿþþþÿ[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÔÔÿÿÿÿÿÿÿÿÿßÜ×ÿ׺–ÿÖÓÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´¡¡ÿc>?ÿb=?ÿaÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆGFíŒIGÿÌ®¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿±¡ÿÔ»œÿêéçÿÿÿÿÿÿÿÿÿZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyyyÿÖÐÉÿà¿—ÿà¿—ÿÅ¿·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿååäÿϵ”ÿà¿—ÿ̼¨ÿÿÿÿÿTTTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñññÿÿÿÿÿÿÿÿÿûûûÿÏ»£ÿËÄ»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñîîÿjFGÿc>@ÿb=?ÿa@ÿb=?­ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆFEÅ‹IGÿ¥sqÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÔÐÿÙ»•ÿÔÌÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÀ°ÿà¿—ÿı™ÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáààÿÒ¶”ÿà¿—ÿÎÀ¯ÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ...ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍ»¦ÿǽ±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹§§ÿf@@ÿe?@ÿd>@öb=? ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹HG†‹IGÿMJÿ÷òòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊžÿà¿—ÿÖÎÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ888ÿÿÿÿÿÔÌÃÿà¿—ÿÕ¸•ÿÛÙ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèÿͳ“ÿà¿—ÿÎÁ±ÿÿÿÿÿõõõÿ ÿÿÿÿÿÿÿÿÿÿ;;;ÿÐÐÐÿþþþÿPPPÿÿ[[[ÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÏ»¢ÿÆ»®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÕÕÿiCCÿf@@ÿe?@ÿd>@sÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹HG5‹HGÿKHÿÌ®¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿɹÿà¿—ÿ×ÐÉÿÿÿÿÿÿÿÿÿÿÿÿÿ222ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVVVÿÿÿÿÿ×ÓÎÿà¿—ÿß¿—ÿÍÉÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿȲ˜ÿà¿—ÿλ£ÿøøøÿÿÿÿÿMMMÿÿÿÿÿÿÿÿÿÿÃÃÃÿÿÿÿÿÿÿÿÿÐÐÐÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿÒ»Ÿÿƽ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðíìÿwTSÿgAAÿf@Aÿe?@¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰GFÕKHÿ”WSÿöñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉûÿà¿—ÿÙÓÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(((ÿ@@@ÿÿÿuuuÿÿÿÿÿ×ÒËÿà¿—ÿà¿—ÿËÇÁÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ£ÿà¿—ÿݾ˜ÿÛ×ÓÿÿÿÿÿÕÕÕÿ ÿÿÿÿÿÿÿÿ ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÓ¹šÿÉûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùøøÿ†ffÿiBAÿhAAÿjBCÉe?@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹HGUJHÿMIÿ²…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊľÿà¿—ÿÛÖÑÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏÿÿÿÿÿÿÿÿÿÿÿ›››ÿÿÿÿÿÿÿÿÿ222ÿÿ­­­ÿÿÿÿÿÖÐÈÿà¿—ÿà¿—ÿËÅ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǽ±ÿà¿—ÿà¿—ÿÒȼÿÿÿÿÿÿÿÿÿªªªÿÿÿÿÿÿÿÿÿšššÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØÓÍÿÚ¼—ÿÑÍÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿ”zxÿjDBÿiCAÿf?>ý¯eXç±g[”Ÿ``ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠHF®MIÿ‘OJÿÒ·´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÌÇÿݽ—ÿÖÏÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$$$ÿÿÿÿÿÿÿÿÿÿýýýÿÿÿÿÿÿÿÿÿ³³³ÿÿúúúÿÿÿÿÿÔÍÄÿà¿—ÿß¿—ÿÍÉÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÌÇÿÛ¼–ÿà¿—ÿν¨ÿüüüÿÿÿÿÿÿÿÿÿ|||ÿÿÿÿÿÿÿÿÿ£££ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÀ°ÿƱ˜ÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿŸ†„ÿkEBÿjDBÿsNMÿ®odÿ²h[ÿ®fZÿ©bXÒ¨_W#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJHŒKGë‘OJÿ”VNÿîãáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìëëÿ˳•ÿбÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÇÿÿÿÿÿÿÿÿÿDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿáááÿÿÿÿÿÿÿÿÿÓËÁÿà¿—ÿÔ·”ÿàßÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿ±ÿà¿—ÿÛ½˜ÿÞÛ×ÿÿÿÿÿÿÿÿÿÿÿÿÿÁÁÁÿ///ÿÿÿÿÿÿÿžžžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâßÜÿؼšÿĸ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿ£‹ˆÿmFCÿlEBÿvTRÿãÜÜÿçÐÌÿ±naÿªdYÿ¦bWÿ ^Vñ›]SJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMIF‘OJþ’RJÿŸjbÿùõôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ±žÿÒºÿòñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ———ÿÿÿÿÿÿÿÿÿ¥¥¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿεÿà¿—ÿɳ™ÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ¿¶ÿà¿—ÿà¿—ÿϽ¨ÿñðïÿÿÿÿÿÿÿÿÿÿÿÿÿüüüÿ   ÿpppÿVVVÿ<<<ÿ___ÿ¹¹¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎÄ·ÿÛ¼–ÿÏËÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿ£ŠˆÿnGCÿmFCÿ}[Yÿìççÿÿÿÿÿÿÿÿÿôêéÿ¶~uÿ¢`Vÿž^Uÿ˜\Sþ”YS~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘OJ’’RJÿ”TKÿ¦skÿøôóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÄ»¯ÿà¿—ÿØÒËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxxxÿÿÿÿÿÿÿÿÿ»»»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíëêÿÓ»žÿà¿—ÿö¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóòòÿ±œÿà¿—ÿà¿—ÿË¿±ÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÜØÿÕ¼žÿÁ³£ÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûùùÿš~{ÿoHDÿnGCÿƒdaÿòïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûøøÿ¿•Žÿš\Tÿ–ZRÿ‘XQÿ‹VO¡™ffÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOI’QJ»”TKÿ–VLÿ©vmÿøóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÝÚÿÓ¸–ÿÐĵÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÿ>>>ÿÿÿÿÿÿ ÿíííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑɾÿà¿—ÿà¿—ÿËĽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÍÈÿÖ¹–ÿà¿—ÿÞ¾—ÿÏǾÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÛ×ÿÔ½¢ÿÖ¹–ÿÔÑÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøööÿrnÿqIDÿoHDÿspÿøöõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿα­ÿ’YRÿŽVPÿ‰TNÿ†RL»€IIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ’QJ“TK¸–VLÿ˜YMÿªwlÿ÷òñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁ´¥ÿÚ¾›ÿÜ×ÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃÃÃÿ¡¡¡ÿ‡‡‡ÿrrrÿ±±±ÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøøÿм¥ÿà¿—ÿ˳—ÿéèçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼µ«ÿܽ–ÿà¿—ÿÙ½šÿÐÉÀÿøøøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÛÖÿÓ¼ ÿݽ–ÿÀ¸®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñîíÿ†gaÿrJEÿqIDÿŸ…‚ÿüûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØÄÂÿŒVQÿ†RMÿ‚PLÿ}MKÏ€PPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬aV›YPŘYMÿš[Nÿ¥pcÿñèæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÓÐÿÑ·—ÿÓ½£ÿêèåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÓÌÅÿß¿˜ÿà¿—ÿ¹¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿ»²§ÿÞ¾—ÿà¿—ÿß¿—ÿϾ©ÿÚÕÏÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûÿÔÏÈÿÔ¼ ÿà¿—ÿ¼±¤ÿûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà×Öÿ{WQÿsLEÿrJEÿ­–“ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßÑÐÿ‡WSÿ€OKÿ|MJÿxKJ€@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥cZ©dXÛ«dYùJAþš[Nÿœ^OÿŸeVÿæÕÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¶¬ÿà¿—ÿξ¬ÿ÷ööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØÒËÿؽœÿà¿—ÿdzšÿïîíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿ½´ªÿ׺•ÿà¿—ÿà¿—ÿÛ½˜ÿÍÁ²ÿÚÕÐÿïîíÿþþþÿþþþÿúúúÿäâàÿÔÍÅÿͽªÿݾ—ÿܼ–ÿ¼²§ÿôóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿɹ¶ÿwPHÿuMFÿuOHÿÁ°­ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåÛÚÿƒWSÿyLIÿuJHÿqHG­€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\U'¡`Vä¥bWÿ©dYÿ­g[ÿÅš‘ÿœ]Oÿž`Pÿ bPÿΰ¥ÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóòòÿÁ²Ÿÿà¿—ÿËÁ´ÿöõôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÑÊÿؽ›ÿà¿—ÿÖ¹—ÿÍÉÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÈÂÿƲ™ÿà¿—ÿà¿—ÿà¿—ÿß¿˜ÿÕ»œÿμ¦ÿÍ»¥ÿм¤ÿÙ¼˜ÿà¿—ÿà¿—ÿÌ´—ÿĽµÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüûûÿ«“ÿwOFÿvNFÿ†e_ÿçàßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÑÑÿyNLÿrHGÿnFFÿjDDŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜ZS%š\Tæž^Uÿ¢`Vÿ¦bWÿË¡šÿÿþþÿâÐÌÿ¢iYÿ bPÿ¢eQÿ´†vÿôìéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëêéÿijžÿà¿—ÿϼ¥ÿØÒËÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÕÏÈÿÙ½›ÿà¿—ÿÛ¼–ÿ¿¹°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðïîÿĽµÿ°›ÿغ•ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿܽ–ÿDZ–ÿ¸­ÿæåãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóïîÿ‹kdÿyPGÿwOFÿ«–‘ÿüûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÄÃÿoGFÿkEEÿgCCþdCC=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSS"’XQã–ZRÿš\Tÿž^UÿÈ šÿÿþþÿÿÿÿÿÿÿÿÿóìêÿ±sÿ¡eQÿ£gRÿ¦nYÿÝǽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæäâÿÀ±Ÿÿß¿—ÿݾ˜ÿÍÀ¯ÿáÞÛÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿ×ÓÎÿÍ¿®ÿܽ˜ÿà¿—ÿÕ¹—ÿÀ¸°ÿüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöööÿÕÓÏÿÇÁ¹ÿÅ»®ÿź­ÿÅ»®ÿÇ¿µÿÑÍÈÿòòòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÝÔÑÿ{VMÿzQGÿ{WPÿÝÔÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¹¦¥ÿiDDÿeBCÿa@BÖ€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„OOŠTOàŽVPÿ’XQÿ–ZRÿÀ™”ÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýûûÿв¨ÿ£hTÿ¥jSÿ§lTÿ»’€ÿ÷òðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõõÿ¿¶¬ÿÔ¸–ÿà¿—ÿÙ»˜ÿλ¥ÿϲÿÑŶÿÐĵÿаÿѺŸÿÞ¾˜ÿà¿—ÿà¿—ÿdzšÿÌÈÂÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿª˜“ÿzRGÿ{RHÿ„~ÿù÷öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿdeÿbABÿ_?Aÿ\>ANÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‡KK‚QMÕ‡RNÿŠTOÿŽVPÿµˆÿþýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðçãÿµˆvÿ§lTÿ©nUÿ©rXÿÔ¹¬ÿüûúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚ×ÔÿÁ·©ÿʳ–ÿß¿—ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿà¿—ÿÛ¼–ÿűšÿº±ÿììëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíèæÿ€aWÿ~UIÿ}WMÿÔÈÅÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÄÄÿ`@Aÿ^>@ÿ[<@˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€UU~NJÁ€OKÿ„QMÿ‡RNÿª‚~ÿüúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÛĺÿ«t]ÿ«qVÿ­sVÿ¯}bÿãÏÄÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéççÿÊÅ¿ÿż±ÿ÷¨ÿĸ©ÿĸªÿŽ´ÿÑÎÊÿóóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûúùÿ¬˜‘ÿ}VIÿVIÿšwÿôñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíéêÿ^?Aÿ\=@ÿX=>“ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwKGzLIÿ}NJÿ€OLÿšplÿùööÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú÷öÿÖ¹¬ÿ¬v[ÿ¯vWÿ±xXÿ»tÿîàØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ̾¹ÿ‚]Pÿ‚XJÿ]RÿÛÐÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƺ»ÿ\>@ÿZwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfCC¶jDDÿmFEÿpHFÿ°¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûøöÿе£ÿ´‚^ÿº„]ÿ²Zÿ³—€ÿóëåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðêçÿ˜tÿ…]Kÿˆ]Lÿ~VG߆[K>ÿÿÿÅt]Åpb9¬cUižZMžŸ[NǨaTæ·i[úÂp`ÿ½n_ÿ¹k]ÿ´i\ÿ¯gZÿ©dYÿ¡`VþaYÿšbZÿ™d]ÿ–c]ÿ’c^ÿd_ÿd`ÿŠc`ÿ…][ÿWTÿyPNÿrIHÿmFEÿiDDÿfBCÿb@Bÿ_?Aÿ\>@ÿX;>öX<>€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿa@@TcABÿgCCÿjDDÿ“vuÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüù÷ÿÞȸÿµŠgÿ¾‰^ÿ¿Œ_ÿ´ŽkÿáϾÿýüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèàÜÿ€sÿ‹`Nÿ‹`Mÿ~VFß…[JT‡\Lÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³ff ¹n],Ÿ]RZ“UL‰‘UK±’WMÓ•YPì™[Rù™\Sÿ”YRÿWPÿ‹TOÿ†RMÿ‚PLÿ~NKÿzLJÿwKHÿsIGÿoGFÿkEEÿgCCÿcABÿ_@Aü]>?ÆY<@{^6Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_?AÍa@AÿcABÿoMMÿíééÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïãÚÿ»™}ÿ¾Œ_ÿÄ‘aÿ¼ŒaÿºƒÿíäÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÅ¿ÿo_ÿŽcNÿbNÿyTDÜ€YGKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸ``‘UUŒWM5ŠTMLƒPMcNLy}MJ‡xKIˆtIGˆqGEˆlDDgCCcbBBFd>>)f3M ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[=A;\>@ÿ_?Aÿa@Aÿ´££ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôæáÿ¾‘~ÿ´ƒ^ÿÂ`ÿÀŽ`ÿ¯„\þ³—~ÿãÖËÿþýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêâÞÿ£Œ€ÿ‡bOþ‘eOÿdOÿ|VEÍ}WE?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿY;>‡Z@ÿgHJÿöõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýûúÿíÖÒÿÔ‹ÿ·qdÿÄqaÿÄqaÿÁo_ý™^LÆŸuP¯²ƒY_ÿ½‹^ÿµ†\þ¯rÿׯ¶ÿùöòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïçãÿ·¡”ÿkWÿ•hQÿ”gPÿbMö†^I¦dO-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU;>®X;?ÿZ=?ÿŒwxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôêèÿ×¶°ÿµ}sÿ»n_ÿÄqaÿÄqaÿ¸k[÷¤^Q¾´gY\Èm[ÿÿÿÿÿÿÿÿÿ¾Œ_-¥zR¨{T⹉^ÿ¹ˆ]ÿ·‡]ÿª[þ¨‡mÿ¹¢ÿÞÑÆÿùöóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýýÿïèäÿÆ·®ÿ¡Š|ÿ”nXÿ™lRÿ—kRÿfNú[F¹“fOJ’fPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU;>®U:>ÿX;?ÿˆstÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùõôÿç×Õÿʬ¨ÿ©~wÿ£f\ÿ°g[ÿ´i\ÿ·k]ÿ§aUæŸ\OšÂm_6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº‰^£xRuŸtPÁ¨zU쵄\ÿ´ƒ\ÿ³‚[ÿ²[ÿ¤zXþ¡€fÿ¯’{ÿ¸žŠÿ¼¦•ÿ¯¡ÿɺ¯ÿÒÆ½ÿ×ÌÅÿÙÌÃÿÚËÁÿÁ¬žÿ£†sÿ—r[ÿ›oSÿžpTÿoSÿ›nSÿ–jPúZDdž^HX–jQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU9=U:>ÿV:>ÿY<@ÿª›œÿ÷õõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüüÿíæåÿÛËÊÿʱ¯ÿ»™–ÿ¤ytÿ–`Yÿ™[Sÿ]Uÿ¡_Vÿ¥aWÿ£`Vú”WMÊ—YNsµj`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶…\´ƒ\@¥xT~œqP¾¥wTë¯Zÿ®~Yÿ­}Yÿ¬|Yÿª{Xÿ©zXÿ¨yWÿ§xWÿ¥wVÿ¤uVÿ£tVÿ¢sUÿšnRødKØ‹bJ¥™lQd›nS4šmRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU<<U:>îU:>ÿV:>ÿXäU:>ÿV:>ÿX@ÿ_?Aÿb@BÿeBCÿhCDÿkEEÿnGFÿrHGÿuJHÿyKIÿ|MJÿOKÿ‚PLÿ‚PKí†RL¨UP`XOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR:BV:?§U:>óV:>ÿX@ÿ_?Aÿb@BÿeBCÿhCDÿkEEÿoGFÿrHGîvJGÁyLH{MJY|LL%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU99 U9@HU;=lWçJ).”@ À¸À§4¨àP €ˆ°À{~¿_¹`¡%J\FÈù:È”SÜ àN·`†9Ì0Ì0!$Á0Ì(˲ J)Ñ4Í©iZ¥Ô©išGÓ´ëäìð:€]%g)q5sÎX÷x€ÀqÜ;:î€Åb9Ʋlá\êPÅ ŠâªB¡p£ªª7`r„ù~¿ÿ·Ú€%.%çä @àÓžP©Óé^³Ùl¯s—_ˆ`EQL©Têó²,ß À÷ûý‡Rg‰›3:H  þÀwxžo·Ùl¯ò>þÙlö«þ ÀÃ~¿_¾”òJ”8æt)ç8À0ŒÑf³ýoƒÁ¿Êd³ÙÚt:ý¥tÀ‘Ë!³D‰)(&³­]~¿¿Ìá @€ð†ir:O²,» ¹Æù"˲m||ü.J©îrÊ-QBÓ´rMÓj$<ä÷ûߘËA¶Bî*//oÓétÉ+¡h‰W UUõ©Tê³…Ba€µ§8H ¸ÀÏl6ÛM&ÓÀÓ²D‰+L<ÿÏŠ¢ä¦djÞÑg0ö—••½u¾Z,–²ªªª›fïƒ{dY–®r‰—L&s­(ŠÿÌÍØ÷/„Õn·¿à¼ãƒÁà|ñÅ×ïÛ·@ÁÝwßæææý²,_øz–%®Sso@ À#‹åÿBþ|+¤”r¹\Ž RÜ'Ë2(¥ü…ÔW¢Ä•„Â@q¹‡a˜‹ÅÒƒ =¦˜Ï øÔY¢Ä•‚þî ›ôz}7p!SJ¹y~Ò-¤Þ¹(++«*//_–N§+PAR’$ÅDQ §R©(Ã0ŒÅb)/–—$iB’¤ÜÅͲ,g6›íÅí\.—ù¸Ì± ƒY§Ó‹Ûétz¬V«C–åÿ …X³ÙL/^üæÐÐÐUuËçóµž8qâ¶l6K|>ŸÊ0ÌVQÇÎpÈä4›L¦}XX(4§ƒL9ÎE ±¼^ï-»wïþäž={ I“×%Ã0ðx<ôÁ¤þ—Á`‰ÄCLJÕjÅúõëß ƒ/†|›ÍVÝ××wO__Ün7Z[[;Âáp×ŨûjÇãñ¬}íµ×VÀ7ÞBÈéd–‡÷Ýwù={ö ²²’>õÔS:\ea5!Dÿâ‹/2£££äöÛogn½õÖ³…þÓ!Öç†ÖétY,l™O˜ÀEY6b·Û+÷ìÙsý®]»&“ ‚ Ðd2IB¡‰Åb(++Ó໺ºÐÑћ͆õë׳˜Õ6Žãø©Þær9‘žeÕ&˲œÁ`°0 c8tèýàƒH}}=mmmåf×=:ÎÀó¼^Q”Â…ŽfF£Ñ"˲¤(Êœöä8ŽÓét¦\.—9[{.J)ÛÑÑðz½p»Ý:LÞæg”Žb0–³éÂ0 k4­’$‰Š¢L?ú`4­Š¢H²,ϹR|ÊžEQ¤3ÙÓd2 ù|^¤”²³Ô8cdC™±®åy~ìL…g(m©¬¬\6×o<Ï[æÚïõzW«ª:ç :¢ªªz6¹E¬V«¯˜%»ùæ›éý÷ß<ŸÏ'yž®±Ûízžç—…B¡OƒA@¡PÀ¡C‡n ”Þ°|ùr•çùƒ½½½«ãñ¸>Nƒ‡ÃA›››G …»ét:ár¹ê†‡‡oO$¨¬¬Ä¢E‹Æ;;;mcccÄãñÐh4J`||œtvvn ”nX±bE&‰üz¶Î•••wtww{ãñ8—Ífa4QQQ¡µ´´ü{$94_xVUUõŸ:;;]°zõj) áøñãƒÁ€ë®»n ™L¾Y¼xÜnwãèèèM¦ññq¸\.­¥¥¥/™L¾£×ëM6uww‹Å‚¦¦¦?är¹ÔØØØŒF£X²dI!N¿àñxÖ9rd1¬Zµ*744ô¯³ôÙtàÀGq»«« ”ÒGôz=Ï,k4W&“É›¢Ñ(S[[«644¼;<<ü‘ÃáðŽŽŽþS4…ÓéDCCÃøÑ£G…H$ÂøýþGFFŽ—••ÝÜÕÕU‹Å“É„úúúlYYÙÛñx|\.×ÝÝÝÞÑÑÑi{VVVªË–-ëŠD"mRUUµxxxxí±cÇ8§Ó©555Í^d{¶¹ñ¤ƒBjX–Íá†D½^oå•WVïÝ»wÎßeùT?xõÕWÑÞÞ¾r®²[¶lAmmm—ªªçô, hš¦Y­VÄãq ’ÞÞÞ&ŸÏ×/ŠbPӴÊ¢8xž·¿þúëøë_ÿ Èårxþùç |å+_a—/_îú᨟U5áyÞóøãßÉóü˸öövœ8q‚466"NÛc±A€Ñh$ÑhH$¦ëþÖ·¾¥ã8î4öôôx~úÓŸÎ?§Ó¹üÉ'Ÿ´F£ÑßÏÕÖH$bغu+€£G><ý[GGGÍÓO?ýƒƒƒ¼^ïòíÛ·rïÞ½dÆáŒÍfküÆ7¾áÉf³ÛÓé´¶uëVŽeY<ÿüó5‚ X¿ÿýï“D"õë×ë?ó™ÏTõ÷÷×nݺ•B°råÊ8f]ÑhT¿mÛ¶iûöíþ}ûˆÅbÁªU«¦Û—ÏçÉ7¿ùM! ˲[¶l¹õŸøÄ(>àèÑ£ÄçóAQ[8&<ÏãŽ;îÐɲ|Ï׿þu^Å™¢MwÜq‡ãÆ{GFFº{zz<Ï<óÌl{².—kùO­=ÚÃ?LëêêD«ÕÊ ›ÛÚÚ0::Šýû÷×µ´´’$͵ÞmÚÆ'NœÀ}÷ÝG£Ñ( ˆÅb8yòäR›ÍÖuäÈ‘OîÝ»—BððÃkÕÕÕâŽ;„cÇŽá¿ø…ñ;ßùÎ?¸\®‹TUE0ô9N["‘tvvâž{îYrðàA=TWWSBÈi×CUU•ôÈ#XžyæëÖ­ÃòåËUŽã iÚtì’N§áõzÉ£>ªíرƒ “×_¬]»vq:ŽË ¢¬¬ŒlÚ´ š¦Rý“Ÿü„E+V¬ÀÝwß1=ûì³lGG¹öÚko2 !—ËE¿üå/ÓÚÚZQ& ™ÛÚÚ‹Åðþûï×_sÍ5B&“¹¡è---tãÆôøÓßß?³IgA&„RêfY¶ï,…gVz19/‘e­­­GAX±sçN¦¿¿Ÿ¨ªŠC‡‘C‡¾øÅ/®Y¼xq»^¯ïðz½ÿôᇂçy,[¶ìσƒƒ]‘H^¯wñš5k²|ð9‹AEÊ0 €¡¡!¢×ë튢L¯Ac?øÁâñx|?Ïó:‹Åâp:×÷öö‹ÅB?ˆD"ýápxÎöø|¾ˆ,ËžƒZÇÆÆÏç©Ñh$¢(" ÒU«V9$I:ãji¿ß%K–V­Zµ2T@2™ä«««ÝNæ*** ª*300 ¸ÝnÛ“J¥|V«µÇçóU’¾¾>C6›Õ@ss3ººº iÚÒÎÎN €¬^½š¤R©ÑÙm~sùòå×h€ÆÆF‚ð ¥”F£Q@s±ìƒ>˜Èd2ooذáó¿úÕ¯ Š"dY¶ar €ÉÉO=õTj||ü–e¹žžžu©T P[[‹ÁÁA+X­Vd2>|˜Û°aCEUUUD–媃Z“É$$Iš¶çÀÀmmmuüå/±åÜ{ï½b6›í¸÷Þ{×9r¤bF“Î-ÄšÚ8§L¥”›º‘x±à09É;'ŒF£)‰A>þøãuétºîĉö;vQñÖ[oá†nhH$¡Yz³x†a˜‘‘‘O>ù$¯ª*8ŽƒÓéD6›0逄=fdäêëë©,Ëýù|^Îçó2˲ƹêžK_›ÍV|Û·o'ÀdR¡¬¬¬8zbbb Ãèç9~ÚÎuuuÒÄÄDÎívK„PJ¡ª*t:5Ÿô­X,†_þò—§UÇ-ªªŽ®^½š ¢³³“ÖÖÖŽãpçw¢«« l__`É’%…l6+Í£3k›Çäù›¶—Ýn‡ÙlN&“0´ØEQxl±œÇã¡,Ëöçr¹€B*•š¾XûÛÓŸÀ¦6›Í»k×.ß+¯¼‚™ö,†N™L:N(:Ã0p¹\±þþ~N„Q“ÉTQ<×g ±¦oB"ªªZœ)' Ð4ùìg?›¿ñÆOsBÓÞÞÎwuý=ã¹víZ¬Y³¦€9œÀív«cccŸ—<FFFàv»ñ½ï}OÊf³iÐëõFƒÁ`á8.ÓÝÝ-/Y²DÀ÷ôôÑÑQ444Ðææf…···CÓ4°,‹ºººh(š³g¥”R†a iEÁ`°)Š"B¦Ëët:hšFèfõ¥ÌÌL§ÕjE¡PPŠm/++Ë0À£>Šššš$¥T%„0V«ÕÎó<«iš°{÷nÀ§>õ)zÿý÷÷éõú²x |||¼xN4‡ÃAMÓ‡½z½¾{ll¬ºèEUç±ûÌó@HÓ´JœÃ’Éd²ÞfYö´ßl6›Ýf³Ý0s_ee%L&Ó{ÒÌÙÑS=ßù.ka·mÛÆŠ¢X¿bÅŠ:¯×Kb±Š™­††är¹ I’ÔÅ‹ËxQñë_ÿº¡²²²á–[nI»Ýn €äóy|ôÑGöT*U¾ÿþ™2Ìèé€SG Q³ÍÍÍxï½÷0_·Øl¶–Ûn»m$ yœ,ËŠÛí¦étš„ÃaròäIߟÿügnl씾hÎhæH=õï)=0d2™‰[n¹E;rä‰Dð»ßýNßÒÒ"È²Ì ðúÓŸðío{ _[[cYÖ«( FGG±~ýz’Ífƒ‹-j$ÐØØH …Âè|ç$—Ë755Ñ¿ýíod×®]¸ùæ›o«­­=-‹5W›(¥§Ùuf¹ªªªHUUUýÈÈvìØÏ}îsvA ©TJ÷Þ{ï1·Þz+½æškÒUUU´»»›„B!ròäÉšcÇŽqEç˜]Ù¥K—f†4MÃÏ~ö3Ãí·ß¾áí·ßžÝœ³EM,0éÕAUUMø»G]Ðß|÷A¦ö/¨î2تª*šÍfñþûï“W_}ï¼óTUEyy9î»ï>)Æèêêêb€?þñؾ};’É$sýõ× ‚EQð£ýˆÝ±cYµjÕ)'’RÊ1 S4:™2¦€NÓ4néÒ¥©êêjhš†7ÞxÛ·oG¡P`fëÇGïºë.Êq‚Á ÚÚÚ¸îînÔÕÕ˜ æ³Ï¬Ñ‚Lí;%ÄQ…Ô××´yófÊq:::ðôÓOëüãó¿ùÍoŠYE€®P($›šš¦Gò¦¦&%ÇV®\9-§µµ•¤R©ô|ö÷ûý0™LˆÇãxíµ×°wï^:sÄjÓi÷¦ÚÀʾÓvF£ý_ûÚ×$¯×‹ááa<÷ÜsL[[›áç?ÿ9ÓÕգш™öìïïG[[×ÓÓƒšššSÎ!äo_úÒ—(„Ãa¼ð (++ƒÝnŸ©ÏÙ®KHGGÇ×Y–ý†Ëåúw,A„;w®-+I’L&W’ŽŽŽz½Gò*A¬;wî¼v9\(®º0'»—Q¹w·çsYÛu¥¸Ôö”$ÉšL&¯åü~ßîÝ»»r¹œËjµFÎ~èÜœe±âÅÌ|].÷Et¹ä}œ¸,íüûrwJé˹\îZ­Ö…<ƒÎÏ“>¯LU‰WŵX„RŠ@ °@¯ÝnÆÌ…Th2™ôÇyDQœžH:mlllPQ”s^oU¢ÄÕ@¡P0&‰Ú™Ï¤?Å0Ìs¹\BÈÇcœ.Qb²Ù¬e||Ü4sÞð¥ô¿Š¢è°Z­§eUJ”ø8‘Ëå,„·f¿ö矼àp8Æu:ÝU—y*QâR#Ë2—N§²,K”Ò•s½8îç ÃÜçt:s,ËjWBIEQ˜T*ÅSJ¯ˆü?(¥Ð4MO)ÕBÞ¤”~Õï÷Ÿœ+5ûUJic"‘¸Éétª Ã\Öùˆ¢(L"‘`5MÛ`çå”]âcÍô»y7nÜØWÜ9ßË«-„ƒ,Ë6–••1S‹å.9²,“D"A(¥»l.½á½Ä•æLŸ?0B^à·ÛíœÁ`¸¤Šäóy¤R)•Rú€ûý~)¼*qÅ9ë¦Àc~`6›a±X˜â"¾‹…¢(H§ÓòÔ‚ß'ü~ÛEP¢Ä8×O°ÝBù%€³ÙÌY,–?7¥i&&&¨(Š!äJé~¿ÿ´Å~%J\IÎç#žÀç !Oð Ö`0°z½çê,”Räóyär¹‚$I!$F)ýŠßïí›P¢Ä¥ãB>ÍbòÐwB6RJM:®Àqœ‘eY0 –e‹i³â‹¨¢(Y–9BH†Rú €˜üfzi®Qâªå¼d&SÎòI4B|ªTÐ0ù™çJi€!¼ë÷ûKk³JüÁÿÆõúºÄ‘»IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/saved.png0000644000175000017500000000127412167726157025552 0ustar abompardabompard00000000000000‰PNG  IHDRísO/sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<9IDAT(‘}‘MhAÇßÌNv³É!ÕFM ÕkŒù0—ˆA/-ÄO ¢x-ÅžÄSM(‚9)R((ŠoñЊ"‰bµÁR#MÚ¦5ýØd³Ù’Òè®æ0ÿùÍã7ó€1fëÉ}o:óŸúƒc`TÉxèUP3TGÏg®¿“8lx^»>2Ç»wH¢ÂVÌ8Ã#±Ðn† Òí[Fû–lÁÍd<à2b[žNŸåêßóLX,Yè (€ÜW#Ÿmÿ ªð 1Td—èEV“fQr(pŒé„ ¬*x»Õ®)N·ŒöÍÚyÕ0|û´ ¤A‘V-JmÐÕ_‚1–%‚FØéÃÇrN· Ä¢ókrD_x @¡\´Af¬KÒ52ˆ9Wà<£8õ>Ó!© Ó?]¯Å’™±®ª¦q'¢ýŸ'Öç9:ì»õ4á•–Ó±/Í[Ùè=_55ìk†-Dê®ÿâóž5³ßnÕRqbcØâŒ}%]3ÓwºdŽçõ}³–”±Çæ×ÜWÊVÈçÚ¡Qÿm騦â½5Òb€¡Çá¬Ûê5ÙñmòiG!6ž›põî Tp0Rx‘ÒÇÃþ=—nÀÔ?‚ ç vôâ¡§Z˜nKPtž»6uR–Q÷Ìd[âå£]’ªp"ÒQÄÐcV¨,ˆ¯¨‚®F¾šù•ÁÉyè‰yïd¹Ìéìuóì7 „J0Š¿ŒmIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/youdislike-disabled.png0000644000175000017500000000043512167726157030374 0ustar abompardabompard00000000000000‰PNG  IHDR ¥¿­bKGDÿ‡Ì¿ pHYs × ×B(›xtIMEÝ 6)Aü®IDAT×m¿ ‚PF¿òB‚K[½A{ 4û.ÒæØVÑ«ôBôm6ØrÁ?pkSRÐù¶3øœ8ì‰l(9iR‚ÓsØÈe6ñ”K‡6UkãÝÕ9ÜçÞ”5…f9Úžgk4XFŒ/DžâOm貤!Æ"yGƒö¢Cò1™^<Õí+¢ ™Vmý%kª–T’ÒÆ…~˜†Ž†‡)´“Òùÿò \>K÷‘wJIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/hyperkitty-logo.svg0000664000175000017500000015106313111777164027633 0ustar abompardabompard00000000000000 image/svg+xmlHyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/participant.png0000644000175000017500000000124412173226206026746 0ustar abompardabompard00000000000000‰PNG  IHDR&/œŠbKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEÝ :.UC[Ð1IDAT(Ï…“MOQ†ß;P¦™? H€( ;4P²uÙÄąѵKÿ,Œ A»Ð?@âÎ…Á&ºì†¬„º  2¦UCÍt*ÌÎýp£„L›x’»8ï}ÎÉ}ÏÍ!è«««ƒI-ñ:©¦H•u:[¾wötaáùQœ%qaii©?;ruÏÌ™×§gn«IUÅáaM|ÚÝ¡¿Ó©ÅÅÅy%Þ ¥<˜S3é4t]G.g*3ù¼¦j‰Rœï †aÜÏfGRQÔ¢(ˆ¢¢(ÂÐÐpŸªª÷þÛ€sÞb,Bà\€Î9Â0$hœï²@}úÞ²Žyøð<žç" }X–%<Ï}çû.&kkk×î |ßO7ßI"‘¥µ£#´ccããs³…7•J%èi!?m–'oLŽÌß'[ÛÛ¨Õ\¾t>&¶mO0Æ6tÍ+/W¦ªŸw£““ŸÒqZ’RW†a Ã0””RÙn·d³y"«ÕhùÅò­®! †aHÇiAÆØßsÎÂ0€‘N‹Á”~³‡I¥$“É€1‚ ‚ƒsÛ¶¡éº¢z¶ë_¾nîì‡g.•€Ÿ'oÞ¼Ù¾³³£0™L³gÏ:hš–ø………z³ÙxñÅ]GwÿþýÖºº:_ww÷ÚÊÊJÕÌÌL³Á`÷÷÷/ÿš#A$€Õju]¾|yÌn·×ÌÎÎvloo×ܼys°¾¾>f6›ljÙl6Dz,bc±˜Ân·×z½^¾P(Ð*•j·³³ÓÕÜ܃ª;wî¼ÇË‚jjj¶úûû—çççùÅÅÅzžçƒgΜYøê«¯ºA ÎŸ?ÿ ¼¼<ëóù´óóóµ~¿ßˆÂeee‰Ó§O;ôz}* q³³³u^¯×$I©ÑhÇwÖÖÖF9Ž“T*UN©TbÙ¿~¿_sïÞ½öx<^¦T*3mmmž®®®-ùÝíÛ·q—éèèX›œœ|¦éBoo¯ƒçùäÓ ˆÿ, @K’´§"X­Ö8@45ŽŒŒôÙl6_ggçVkkkD>mAù»P(dúù矛»»»×išÎÇãq]*•Òøýþjš¦ó‘HÄ çóù,­­­'É¥\šB„ü^¯×‹•••¡p8¬ÇãEåû«r!„X¯×[C’¤000ð‹Íf‹ „p2™dBìøøx¯(Š”ÅbÙ|óÍ7o«Tª‚ÏçÓ „XY‚ JTŠ¿1¡P¨"‘Hè***"/^üÅjµÆ³Ù,%Š"’$I±½½]­P(2÷ëêê¢c”J¥è"Gy/Bˆ˜˜8)Š"ÕÐÐàzë­·îMNNÖõMMM8{öì*A4€ ô+¯¼rëÈ‘#[üñß§ÓiÕêꪹ±±1¼WlS¹s|._¾<–¦§§k=Ou0¬ššš:zäÈŸÙlN`³Ù¼eeeX¯×g’Éd0@  Àl6ÊÊÊ0ˆF£1¸¹¹i z’$}&“)°¹¹iq8Öp8¬?tèÐ’Ýnann®&‹éhš.466&`OE(*N§éX,¦Ðh4yxÔ !ÙÉÀ´··¯NOOúâ‹/†iš.ð<¿Ý××ç(//D£Q@WW—G¥R!`Ìfs®¸Ž¬¦¤lO’$¢¸6­×ë³ÕÕÕ>¯×kþì³Ï.)ŠlMMwpppN¥Re›šš:ŸL&Õ«««fžç×JAij$IÊk#Œ1Ëqœ°»»«–”T*¥.SWWÚÜÜ´LMMµ‰¢Höôôl9NÛäädÆ™L¦BˆÁø·U¬T0Æl&“¡ÆÆÆšEQ$l6[c\ª4Ƙ^9uêÔÖüü¼Éãñ766¬ŒÍf»Ë²l¾P(СPH‡1•Úc˜G¹(ƒ1f·¶¶4²­¢?Ùwß}wrccC»¼¼lt:§ÓÙ ÕjóCCC‹o¼ñÆüÎÎŽ{aaÁäv»M§öÖ­[èí·ßž*Qc̲,›Ïf³ŠD"¡Å‡"‘ˆJŽ—F£H$B9жäxÒ²¿Ÿ„ÇšEŒ1ó´Ò°¼¼lž˜˜è°Z­N—ŠÅb\2™TX,–Bˆ‘\”3† 9!Ä>|8033Ó²³³SõÍ7ßtJ’DD"‘r’$ÅŽŽŽBˆimmݾ}‚Á`%ÇqY“ÉTày>²ººZ P__~Šz‘;;;UŸ~úißÎÎŽNEàðáÃî¶¶¶<ú’ãyíÚµCÕÕÕ1ƒÁÎårñ s±¼0---¾éé香™™–l6«Ôét©@  yíµ×Z[[c?þø#øý~Ã÷ßß±ººÊ—ì—ŽD"Úñññ¦úúú°ÅbÙ ‡Ã»áp¸H„óù矱ÙlžçÓ©T*éóùŒ²ÝŽ$BˆijjÚžššÒNOO·ˆ¢È¸\.#€^¯êõz!ÒÅñHöOy½b ¥ŠP¬Ä^#Fc^§Ó¥ÖÖÖxǃhšN:µZ__ŸVD1X(ÊeQŠÙÚÚÚÜ… æ&&&ZfggÔjuæå—_^ây^Öl6T*U6•J)Ìfs¬8/!'Bsss¢¸öo EétZ!Š"©Ñh2jµ:{êÔ©õöööpÉ ¬Éd:::6—––ÌÓÓÓMÇŽóØívN’ †$IqccÃ(¯MQ”Èó|´¿¿ß l ¨p¹\Õ$IJƒ!~îܹu(íH`7A`ççç­wïÞm°X,áK—.9Šãé’½Éûü«òíå³’ØÅF£ñBèwoÙDQD‰D‚Aa­V[ ât¹»»K¨Õê?Ä d6›%wwwi­V›gæ‰kÑh”%IRÒjµ…_Ï%ï5/NSétšÒét¹_ûK¶[QQ‘#Iòw})IŠÅbŒZ­.ìeï¿ Q™`0xŽŽbƒÁ0E’äòºõÏ¢(Ò@àXii gÎþâñSˆûÇåûùèI@^E%EQˆz}€ç I’h„P–"âA.—k¦(*µß¤ðü‘Éd4¡¼ŸH$HqW âà*$‰H¥Rt&“aB Œ1ܸq£ þNbŒ5ûMòÏI‚ îJ’ôç .,ý¦‚ºŒ$A!<IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/youlike.png0000644000175000017500000000076212167726157026132 0ustar abompardabompard00000000000000‰PNG  IHDR ©¬w&sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<oIDAT••‘¿kQ€¿wïqσ ¥)W‚ ÄÉ(è.ùâ`—"ØÑIÿ€Œ\ÜÔIÔâ b¡s@ÐÁA újmè%Ó\<ßó^žƒkü–oþø„÷€•'—­l‚¦÷þ´"…y×”aûåÚÇ€ðÞsãé…«^Š ]‘Q²”„kWè¼#gÖL]!œo=»Ù#®?¾”„ªÜ[8©t,©Ç nŸă[ Žz˜Ü1Ù7[ªsV¶£+2Ò±ä8t,Ñie; ‚fµº.E ‹ºö×a娀ªŽÃátÔdu½a_ìÝõÿâÕàž_]oX%„HûÙÛ³?Ü€åghÕï°™ÞgX|àëá„©‚yw?ûvj&Ç!@礳-G=&™±0ï¦ Ûfê “»cMî0SW˜2lË­áÏ×½‡ïÍܵÒ΃@ i)ØÍ>0:øng‡¿sá|ëùÚ§mñ?ÿFÌ ».SIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/youlike-disabled.png0000644000175000017500000000076312167726157027700 0ustar abompardabompard00000000000000‰PNG  IHDR ¥¿­gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿ‡Ì¿ pHYs × ×B(›xÇIDAT×m±jÂ@@ß%GࢠHãf)ø.R Yìÿ¤ˆšrs ÚIÁ½KA0ÔF(B¹ƒ4r.;øæ',ðȄȆ"#-ãIÂ2|S_=xm6ä…6v0Zˆ8p?‚š¢IŸ{ ùùòèÈÄWŠ _ÉD5¼:P*Ôëí"iý?ó €%Ÿ¡Ù¦­]Ö|GD&I­Òƒ8±N©SÆÚ˜Iƒ6eì¾éùJ¿ü:Ž{aËWqþ±ƒñ»¸yC3NžŠóf%tEXtdate:create2012-12-10T16:40:41+01:00ÕîO¹%tEXtdate:modify2012-08-13T13:15:56+02:00à&.tEXtSoftwarewww.inkscape.org›î<IEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/button_back.png0000644000175000017500000001135112167726157026740 0ustar abompardabompard00000000000000‰PNG  IHDR›$žýH,sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<fIDATxœíœ{pU¾Ç¿§Óó~t&“IÈ2IÈ„ ÀE4‰PÙѺAP/â–zוZ®¸²ÈÖµÊ{×¥nÕUY«Ö-]|.‹,bdXDT„…•‡.¬J2É$“×LfÒÏsÿH&wÀ ®¸ùTª™î>ßó;Ý¿þõyuJ)†K0ä\ àãdð`48 à$€7¼¤a‹ò½‡ ÇÙ‚Á`€ÿ0ŸÒÌqÜnŽãŽs¡¢I’”¡ªªGUÕEQª(¥EèwºÇÀ‰Ë\Q®ÎëlÁ`Ðàg–ñ<´Z­2áá÷õõ¹c±ØõŠ¢Ìð+@ü’X=ÊÉ9- æx‡eÙ°Íf{Îd2µ^L’$‰ÝÝÝÿ®iZ1€›Àoaï(W0C:[0œ (B½(Šºuuu]H$~`^ h¸š£\Y|ÃÙ‚ÁàTo[,–ßÚíöý—²°h4:1‹ý€ßH\JíQ¾“´Øg9[0t8h±X6Øíö?_ŽÒ{{{ÇJ’Tq9´Gùn¡išSÓ´rJiÀ- ²„í<Ïw§¥¥ÕÿcÍåû‚¦iB$Y¬iÚ.eû„OZZÚk„”q£|¿`Yv»ýÍÎÎÎ{8 °–òK›ÍöGüHĆa\.טH$òõe±v”+£Ñ0&Ùîb¦Ël6‡0‚¨Fa|¾Â…mmmþŒŒŒu­­­Ç/‹µ£|/à€ò Õj݃;šoþË/¿0áÀ?ãþû¼Ûãñ¼‡ÿzÙ¬ý‚`ây^€x<Õu]û;M¬V«4MS‰DìR óŸï–W_}iÂÞ½A×uìÛ·—™4iÒ—K Åãñèpµ†J<Ï›½^ï ƒßb±”Š¢˜g·ÛEI’z5MÓ/FÓãñÜ´iÓ¦0#''狾¾¾Ä·±q¸‰ã8cggçŠ÷Þ{oFqqq¡¢(¹TÚYYY·mÛv×É“'gL:5ÖÓÓþ{Ô‰eY¡»»{ÅöíÛg)ŠrðByb±X5àŽãþ À€a@!>Ÿoîúõ¯ø?þøÃÁ튢`Íš§Ù¥K—ý›Ûíþc{{û—ÃÑ Žã¬7nœ´}ûv2P&½í¶Û´¢¢¢{zz"#ÕŒÇã®]»Hgg§î÷û 8Ow»Ý5û÷ﯜ6mÚç­­­[FRŽÓéôž>}úÇ£ÅãñÕøcÇŽÑ÷ߟ\uÕU£Ñxѯ³í¢”rÐ4ÔÕÕñç«Ó%†;~ü8}ÿý÷ÉŒ3x“É4¬r9BÈ‚ ´aÎF!………³7lxµôÃ?øÆ~Y–±fÍSìül~ZZÚæH$rzäõ(¥¼®ë¹ùæ›Áó<­¯¯'Ï>û,·víÚ¶¹Ýî\BHq4µ»Ýî‘Häd2œ›Íf›ÓéœØÒÒâ±Ûí1žç?—e™IÕOOO/Õu½€a˜L¦ö¯¾úê˜L&ÛáÇ'¿ð LQQQnFFƱXì“D"Ñ;f̘²¶¶¶<›ÍSUõ³ÎÎÎPªÝ ðƒ¡jõêÕìüùóÙ™3gþ€ã¸ÁŽ“Ñh4Š¢P…7 #‘Hpgðz½Ãáp¶ÓéìL$ŸF£ÑŽTm“Éd;räÈvqוÜo³ÙÆ ‚à³Ûí]Ñht____oVVÖtI’ìF£1ÔÛÛ›¥ëºY–åw)¥Ôív—‡ÃáL·ÛÝÖÝÝý—x<%„ôôôUU}‰DÂ,ŠâñöööS’$ÅÀívçööö–[­ÖÔÕ<à T€|Žãš0Œ»bܸq57þaüìÜ––æùýe÷ìÙ=GUUV–eüêWO²?ýéò:QƒÍÃ1ä,¯¨¨èÎÎÎ>xüøñªC‡‘ÞÞ^kFFÆø·ß~ûú-[¶€R ‡Ã‘sÏ=÷T;Îç-‹ãèÑ£ ^|ñEFÓ4B°dÉ’ñ………§’š6›-»¾¾þê`0ÈÜu×]ú„ þ@ „ŽŽŽ»Ÿþy~øaKYYYÙ½÷Þ{R–åù+V¬°utt˜5kVÙüùów…B¡Ï’ºv»ýÆG}4_Ó4lذ6lðÿú׿ìÝ766šK)¥˜;wî¸9s漋Å:ãñø¢x@ˆÇã`&¯®®®¼ªªjKòÜBH$¹û¹çž;îåË—Ø•+WŽ=|ø0á8=ôÐx£Ñøâ¡C‡&­]»ÖxÇwø×¯_ÊÊJºhÑ"ï_|qã/~ñ N–eð<Ÿ÷ÃþpÒøñã7:ެW^yåšÆÆF¢(æþøÇ?VAxÞãñä¿úê«×ïÙ³‡á8%%%Éj 3¢2¼Ç)ΙÆwÝë¯o¿{÷®ÁÌiiiẺï–—O ÕÔԾ˲¬ôG¸Õ«ÿ—•¤DÀårå^Hû ðûßÿÞþÔSO]sôèQR[[«›ÍæÏÂápó”)Sú|ðÁ¾Ç<6pq™ôôtŸ,Ë5ëÖ­cÌf3î»ï>uÑ¢Ez^^^³®ëúÇ}Ž9rM0d®½öZZYY¹£§§'–,×ëõöæççSX¼x±¶`Á‚¨ÍfË]³f­»»›ÜyçzEEݾ};³ÿþkX–5'ór—¸úê«é€3bÙ²e½ƒa°ñ|úôi,Y²D5xë­·BȇÃ1ýé§Ÿxž§>úhtöìÙtÓ¦ML{{ûµ©ç#33³7//ï »’uŠÅbÈÏÏÇ-·ÜBUUÅ믿.8ŽìGÀúõëQ]]M«««‰¢(SŸyæ.##ƒ>ñÄÝtݺu¬ªªU¡PèTuuµº|ùòÞÇ{,‹ÅH}}=/Šbþ—_~yõž={˜ôôtºxñb­¥¥ålg»àõd(¥n–eUôG“!SAAÁUo¼±©x×®†AGÅ´öyóì0 CIIi{Mͬg:Ü“¬,K78ŽÌóéŸ(¥ƒÑ ¢««‹hš†p8LX–õ »(ŠUUÙ}ûöYY–Ess3¡”Žijj)¥¨­­¥¹¹¹›}>ßEQ>¸±ÇÉ3ÏF/”gÐßkøF£ÑôöÛ[Kwns¹Äκº»ÁĦæ?¾´ƒ|°cÇö™º®1’$aõê'Ùûïÿé4;†Ò?†J`ñâÅqÇóé¶mÛþ¥¾¾ž;vÌïóùË—/#jkkÁqƒ!Œ,Ë,8(ŠB(¥œ¦iºÑhdàøñãZ[[I"‘ÈÀ7ƒŽN)e’$™Àn·SEQh²ÍFÁqœÀ¹Öé øÿs “É$kšÆ˜L&’ÔO$<Ðs655Q˜6m<Ï'Jij»ˆ PJ9ú8ŽãY–ÅÀä`=233ÑÓÓÓ €•$‰€x4MC6 KJJ;ºwçÎ÷¦kšF$©[·nqÖÖÎV#r€Ác¹~OÊ …úÛâ,ËÒ£GæI’„Ûo¿VWWÑØØXˆþEŒËåê`>pàfΜY¡ª*¥”zúúúb——‡… ÒU«V‘ßýîwžûî»/¯­­m°¡O)åxž' ëº9;;»@‚eYœ£ÑÄà<Þ\Râï¢vî|¯B×5&jVÎwü ÿÈ#ò ;;›| …Æ0½öÚk¤±±Ñ—’ÍÏÏ?UPPPúé§Ÿ’¥K—ªªŠ»ï¾[+))‰ýÑ)??ÿXUUUÉ®]»È¡C‡*srr’¢‰DB+**ÂG}„U«VY Kò“Ÿ¹õÖ[³Ö¯_Ï,]ºÔ«( AÀ¬Y³ºâñ¸žZ·¬¬¬^Bˆ°yóf444Tüüç?oOq8’¡(¥Ä`0üµ¦¦ÆÝÐÐ@zè¡|«ÕŠææf²råÊÖTÝD"¡•””`ïÞ½Xµj•Õçó•.[¶,ux‰KFºmÎ6€0`ß ¿ß_±cÇòùçŸû8ŽCkk+Y»vm§ËåÒp/½ô»yóæ<£Ñ8ÙÊÊÊZL&Sö;#?þxüYKÓ†umÙ… ^ÏóüƒÁ0ä 'ðºÃáˆùýeMUUמâyCwvJO÷ô•––5¹\®hnnn[ZZº<œ|è5dffæ3&L@EE­ªªRçÍ›÷e{{ûW¢(F =&“‰Ì˜1C¯««SDQä|>_´¥¥åëÚÚZ’••åp8˜›Ú€}YUÕ{{zzJívûe}œJ’Ä˲ü­¸£|·QUU’$Éà Jé#ßx•rÔétZFãeq8I’¸ÎÎN…Rú+#’åŠâÜïý/)Bv8N£Ñh¼¤Î Ë2éèè(¥³ÀG—R{”ï>çüü!ä]›Íf·X,CNД¾¾>ÚÕÕ§”Þv^8Ç(ß7ÎûaBHƒÁ`ð83Ë^œÏ麎îîî¸$IaJé-@಼i?ÊwŸ ~2‹²À ‹Å›ÍfÃpNÓ4$ ­··W¢”þ†RúŸ@àïõöÏ(ßA†ý1@BÈãæ³,KM&“•çy²,’Χi4MƒªªH$=ªª2þ@)]“l ŽòÏͰœ-Iò3§„…„rJ©@B¾¤”~>ð!‘­@àœÊ£üóñõ©¬‘xIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/youdislike.png0000644000175000017500000000062012167726157026623 0ustar abompardabompard00000000000000‰PNG  IHDR ©¬w&sBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î< IDAT••Ñ1jÃ0à'Éb(¦J¨Á4^²å†B.Ðë¤d éY²õ†Bï&^,cðP¹„èW—L—¼ùï1çà=Ë$wnÇ9__¬Mìù2‡úY^ºÆïž#sw3ÞÓ ©ÕKà×ÀÔ×ÎWÜ2øUðe¼ÛD¾‚µùCW™½ßÊ"·ˆQ&S3ø2ò«àþF~ ï6ð.›£Íb-+ÜH±ðµ'ÜÉ5”Ì£d%sÈ-ÔŠó\²ŠKŠ8W"¨ï ´<êe©ÍxÇ“»»¾Û¢ÒQ~ýœh£Äÿ)]òЮêsï2ùíþbu£œ7’øi(h|ð¹WšÛú2†4Ôª‘j¯È!9|R@n•…©¢åÙ±#=z=˜Oùƒþò7’io~¬/íÊ#¸èG\<ƒ|äê÷Þö,W§>Þ\šûy!ÍÁΛaZßd0HÝÕ³½í¥Tvëã¶.Ó òT£+”VÆýÜäÉØÅëC ™›`ºgC¯  O–E§½¸ç¯t» WNƒBIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/img/discussion.png0000644000175000017500000000100212167726157026620 0ustar abompardabompard00000000000000‰PNG  IHDR ½¾ÞœsBIT|dˆ pHYs × ×B(›xtEXtSoftwarewww.inkscape.org›î<IDAT(‘•Ò?kZQÇñß9÷œký³é Y…bÒ¥Ð9dΔ5ÏVÈÈKè\ŸG:œJ)ådµZý3c½^‡%}î÷û ½øÀh4ò~cþHïýÇÙlöµÓé$“Éä tÎa±X`8.‰è ðoFhµZ×J©ÛT*•/‹¯r¹\˜ÉdàœC’$<gQ)!„SJe7›fæs±ÿH`­}à­ÖºAÉ{ÿ´Ýn3ów¶ÎÂ0¼aæé_’Ù¸œ¾>5ÁIEND®B`‚HyperKitty-1.1.4/hyperkitty/static/hyperkitty/robots.txt0000644000175000017500000000010612167726157025230 0ustar abompardabompard00000000000000User-agent: * Disallow: /accounts/ Disallow: /admin/ Disallow: /vote/ HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/0002775000175000017500000000000013166626114024107 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/0002775000175000017500000000000013166626114026124 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/README.txt0000664000175000017500000000027413111777164027625 0ustar abompardabompard00000000000000This directory is an extraction of https://github.com/twbs/bootstrap-sass/tree/master/assets, except for the 3.3.5 directory which contains the officially distributed Bootstrap CSS files. HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/0002775000175000017500000000000013166626114030455 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap-sprockets.js0000664000175000017500000000057513112000611035023 0ustar abompardabompard00000000000000//= require ./bootstrap/affix //= require ./bootstrap/alert //= require ./bootstrap/button //= require ./bootstrap/carousel //= require ./bootstrap/collapse //= require ./bootstrap/dropdown //= require ./bootstrap/tab //= require ./bootstrap/transition //= require ./bootstrap/scrollspy //= require ./bootstrap/modal //= require ./bootstrap/tooltip //= require ./bootstrap/popover HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/0002775000175000017500000000000013166626114032472 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/transition.js0000664000175000017500000000344713112000611035203 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: transition.js v3.3.5 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/affix.js0000664000175000017500000001134613112000611034103 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: affix.js v3.3.5 * http://getbootstrap.com/javascript/#affix * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // AFFIX CLASS DEFINITION // ====================== var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) this.affixed = null this.unpin = null this.pinnedOffset = null this.checkPosition() } Affix.VERSION = '3.3.5' Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { offset: 0, target: window } Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { var scrollTop = this.$target.scrollTop() var position = this.$element.offset() var targetHeight = this.$target.height() if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false if (this.affixed == 'bottom') { if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' } var initializing = this.affixed == null var colliderTop = initializing ? scrollTop : position.top var colliderHeight = initializing ? targetHeight : height if (offsetTop != null && scrollTop <= offsetTop) return 'top' if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } Affix.prototype.checkPositionWithEventLoop = function () { setTimeout($.proxy(this.checkPosition, this), 1) } Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom var scrollHeight = Math.max($(document).height(), $(document.body).height()) if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) if (this.affixed != affix) { if (this.unpin != null) this.$element.css('top', '') var affixType = 'affix' + (affix ? '-' + affix : '') var e = $.Event(affixType + '.bs.affix') this.$element.trigger(e) if (e.isDefaultPrevented()) return this.affixed = affix this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null this.$element .removeClass(Affix.RESET) .addClass(affixType) .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') } if (affix == 'bottom') { this.$element.offset({ top: scrollHeight - height - offsetBottom }) } } // AFFIX PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') var options = typeof option == 'object' && option if (!data) $this.data('bs.affix', (data = new Affix(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.affix $.fn.affix = Plugin $.fn.affix.Constructor = Affix // AFFIX NO CONFLICT // ================= $.fn.affix.noConflict = function () { $.fn.affix = old return this } // AFFIX DATA-API // ============== $(window).on('load', function () { $('[data-spy="affix"]').each(function () { var $spy = $(this) var data = $spy.data() data.offset = data.offset || {} if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom if (data.offsetTop != null) data.offset.top = data.offsetTop Plugin.call($spy, data) }) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/button.js0000664000175000017500000000673213112000611034324 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: button.js v3.3.5 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) this.isLoading = false } Button.VERSION = '3.3.5' Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state += 'Text' if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { $el[val](data[state] == null ? this.options[state] : data[state]) if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d) } else if (this.isLoading) { this.isLoading = false $el.removeClass(d).removeAttr(d) } }, this), 0) } Button.prototype.toggle = function () { var changed = true var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') if ($input.prop('type') == 'radio') { if ($input.prop('checked')) changed = false $parent.find('.active').removeClass('active') this.$element.addClass('active') } else if ($input.prop('type') == 'checkbox') { if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false this.$element.toggleClass('active') } $input.prop('checked', this.$element.hasClass('active')) if (changed) $input.trigger('change') } else { this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.toggleClass('active') } } // BUTTON PLUGIN DEFINITION // ======================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } var old = $.fn.button $.fn.button = Plugin $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document) .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { var $btn = $(e.target) if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') Plugin.call($btn, 'toggle') if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() }) .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/dropdown.js0000664000175000017500000001116513112000611034641 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: dropdown.js v3.3.5 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } Dropdown.VERSION = '3.3.5' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger('shown.bs.dropdown', relatedTarget) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.dropdown $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.dropdown.noConflict = function () { $.fn.dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/alert.js0000664000175000017500000000432413112000611034113 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: alert.js v3.3.5 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.VERSION = '3.3.5' Alert.TRANSITION_DURATION = 150 Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.alert $.fn.alert = Plugin $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/tooltip.js0000664000175000017500000003773113112000611034506 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: tooltip.js v3.3.5 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var Tooltip = function (element, options) { this.type = null this.options = null this.enabled = null this.timeout = null this.hoverState = null this.$element = null this.inState = null this.init('tooltip', element, options) } Tooltip.VERSION = '3.3.5' Tooltip.TRANSITION_DURATION = 150 Tooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } Tooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.inState = { click: false, hover: false, focus: false } if (this.$element[0] instanceof document.constructor && !this.options.selector) { throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') } var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } Tooltip.prototype.getDefaults = function () { return Tooltip.DEFAULTS } Tooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } Tooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } Tooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true } if (self.tip().hasClass('in') || self.hoverState == 'in') { self.hoverState = 'in' return } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } Tooltip.prototype.isInStateTrue = function () { for (var key in this.inState) { if (this.inState[key]) return true } return false } Tooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false } if (self.isInStateTrue()) return clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } Tooltip.prototype.show = function () { var e = $.Event('show.bs.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('bs.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.$element.trigger('inserted.bs.' + this.type) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var viewportDim = this.getPosition(this.$viewport) placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { var prevHoverState = that.hoverState that.$element.trigger('shown.bs.' + that.type) that.hoverState = null if (prevHoverState == 'out') that.leave(that) } $.support.transition && this.$tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() } } Tooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top += marginTop offset.left += marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var isVertical = /top|bottom/.test(placement) var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) } Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { this.arrow() .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') .css(isVertical ? 'top' : 'left', '') } Tooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } Tooltip.prototype.hide = function (callback) { var that = this var $tip = $(this.$tip) var e = $.Event('hide.bs.' + this.type) function complete() { if (that.hoverState != 'in') $tip.detach() that.$element .removeAttr('aria-describedby') .trigger('hidden.bs.' + that.type) callback && callback() } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && $tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() this.hoverState = null return this } Tooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } Tooltip.prototype.hasContent = function () { return this.getTitle() } Tooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' var elRect = el.getBoundingClientRect() if (elRect.width == null) { // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) } var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null return $.extend({}, elRect, scroll, outerDims, elOffset) } Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } Tooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } Tooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } Tooltip.prototype.tip = function () { if (!this.$tip) { this.$tip = $(this.options.template) if (this.$tip.length != 1) { throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') } } return this.$tip } Tooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) } Tooltip.prototype.enable = function () { this.enabled = true } Tooltip.prototype.disable = function () { this.enabled = false } Tooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } Tooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('bs.' + this.type, self) } } if (e) { self.inState.click = !self.inState.click if (self.isInStateTrue()) self.enter(self) else self.leave(self) } else { self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } } Tooltip.prototype.destroy = function () { var that = this clearTimeout(this.timeout) this.hide(function () { that.$element.off('.' + that.type).removeData('bs.' + that.type) if (that.$tip) { that.$tip.detach() } that.$tip = null that.$arrow = null that.$viewport = null }) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tooltip') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tooltip $.fn.tooltip = Plugin $.fn.tooltip.Constructor = Tooltip // TOOLTIP NO CONFLICT // =================== $.fn.tooltip.noConflict = function () { $.fn.tooltip = old return this } }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/modal.js0000664000175000017500000002332213112000611034077 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: modal.js v3.3.5 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.bs.modal') }, this)) } } Modal.VERSION = '3.3.5' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.bs.modal', function () { that.$element.one('mouseup.dismiss.bs.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.bs.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.bs.modal') this.$element .removeClass('in') .off('click.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal') this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.bs.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.bs.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('bs.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.modal $.fn.modal = Plugin $.fn.modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.modal.noConflict = function () { $.fn.modal = old return this } // MODAL DATA-API // ============== $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.bs.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.bs.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/scrollspy.js0000664000175000017500000001114313112000611035033 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: scrollspy.js v3.3.5 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { this.$body = $(document.body) this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || '') + ' .nav li > a' this.offsets = [] this.targets = [] this.activeTarget = null this.scrollHeight = 0 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION = '3.3.5' ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh = function () { var that = this var offsetMethod = 'offset' var offsetBase = 0 this.offsets = [] this.targets = [] this.scrollHeight = this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod = 'position' offsetBase = this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#./.test(href) && $(href) return ($href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.getScrollHeight() var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (this.scrollHeight != scrollHeight) { this.refresh() } if (scrollTop >= maxScroll) { return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) } if (activeTarget && scrollTop < offsets[0]) { this.activeTarget = null return this.clear() } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target this.clear() var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } ScrollSpy.prototype.clear = function () { $(this.selector) .parentsUntil(this.options.target, '.active') .removeClass('active') } // SCROLLSPY PLUGIN DEFINITION // =========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.scrollspy $.fn.scrollspy = Plugin $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load.bs.scrollspy.data-api', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/carousel.js0000664000175000017500000001574513112000611034632 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: carousel.js v3.3.5 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = null this.sliding = null this.interval = null this.$active = null this.$items = null this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } Carousel.VERSION = '3.3.5' Carousel.TRANSITION_DURATION = 600 Carousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true, keyboard: true } Carousel.prototype.keydown = function (e) { if (/input|textarea/i.test(e.target.tagName)) return switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.item') return this.$items.index(item || this.$active) } Carousel.prototype.getItemForDirection = function (direction, active) { var activeIndex = this.getItemIndex(active) var willWrap = (direction == 'prev' && activeIndex === 0) || (direction == 'next' && activeIndex == (this.$items.length - 1)) if (willWrap && !this.options.wrap) return active var delta = direction == 'prev' ? -1 : 1 var itemIndex = (activeIndex + delta) % this.$items.length return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var that = this if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.carousel $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() } $(document) .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/collapse.js0000664000175000017500000001351313112000611034606 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: collapse.js v3.3.5 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null if (this.options.parent) { this.$parent = this.getParent() } else { this.addAriaAndCollapsedClass(this.$element, this.$trigger) } if (this.options.toggle) this.toggle() } Collapse.VERSION = '3.3.5' Collapse.TRANSITION_DURATION = 350 Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var activesData var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') if (actives && actives.length) { activesData = actives.data('bs.collapse') if (activesData && activesData.transitioning) return } var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return if (actives && actives.length) { Plugin.call(actives, 'hide') activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) .attr('aria-expanded', true) this.$trigger .removeClass('collapsed') .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse in') .attr('aria-expanded', false) this.$trigger .addClass('collapsed') .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .removeClass('collapsing') .addClass('collapse') .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } Collapse.prototype.getParent = function () { return $(this.options.parent) .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .each($.proxy(function (i, element) { var $element = $(element) this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) }, this)) .end() } Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { var isOpen = $element.hasClass('in') $element.attr('aria-expanded', isOpen) $trigger .toggleClass('collapsed', !isOpen) .attr('aria-expanded', isOpen) } function getTargetFromTrigger($trigger) { var href var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 return $(target) } // COLLAPSE PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.collapse $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { var $this = $(this) if (!$this.attr('data-target')) e.preventDefault() var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() Plugin.call($target, option) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/tab.js0000664000175000017500000000750113112000611033552 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: tab.js v3.3.5 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var Tab = function (element) { // jscs:disable requireDollarBeforejQueryAssignment this.element = $(element) // jscs:enable requireDollarBeforejQueryAssignment } Tab.VERSION = '3.3.5' Tab.TRANSITION_DURATION = 150 Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] }) $previous.trigger(hideEvent) $this.trigger(showEvent) if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) $this.trigger({ type: 'shown.bs.tab', relatedTarget: $previous[0] }) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) } callback && callback() } $active.length && transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap/popover.js0000664000175000017500000000613313112000611034476 0ustar abompardabompard00000000000000/* ======================================================================== * Bootstrap: popover.js v3.3.5 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.5' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) Popover.prototype.constructor = Popover Popover.prototype.getDefaults = function () { return Popover.DEFAULTS } Popover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() } Popover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } Popover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } Popover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.popover') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.popover', (data = new Popover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.popover $.fn.popover = Plugin $.fn.popover.Constructor = Popover // POPOVER NO CONFLICT // =================== $.fn.popover.noConflict = function () { $.fn.popover = old return this } }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.min.js0000664000175000017500000010772013112000611033572 0ustar abompardabompard00000000000000/*! * Bootstrap v3.3.5 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under the MIT license */ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.js0000664000175000017500000020643213112000611033010 0ustar abompardabompard00000000000000/*! * Bootstrap v3.3.5 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under the MIT license */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') } }(jQuery); /* ======================================================================== * Bootstrap: transition.js v3.3.5 * http://getbootstrap.com/javascript/#transitions * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) // ============================================================ function transitionEnd() { var el = document.createElement('bootstrap') var transEndEventNames = { WebkitTransition : 'webkitTransitionEnd', MozTransition : 'transitionend', OTransition : 'oTransitionEnd otransitionend', transition : 'transitionend' } for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return { end: transEndEventNames[name] } } } return false // explicit for ie8 ( ._.) } // http://blog.alexmaccaw.com/css-transitions $.fn.emulateTransitionEnd = function (duration) { var called = false var $el = this $(this).one('bsTransitionEnd', function () { called = true }) var callback = function () { if (!called) $($el).trigger($.support.transition.end) } setTimeout(callback, duration) return this } $(function () { $.support.transition = transitionEnd() if (!$.support.transition) return $.event.special.bsTransitionEnd = { bindType: $.support.transition.end, delegateType: $.support.transition.end, handle: function (e) { if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) } } }) }(jQuery); /* ======================================================================== * Bootstrap: alert.js v3.3.5 * http://getbootstrap.com/javascript/#alerts * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // ALERT CLASS DEFINITION // ====================== var dismiss = '[data-dismiss="alert"]' var Alert = function (el) { $(el).on('click', dismiss, this.close) } Alert.VERSION = '3.3.5' Alert.TRANSITION_DURATION = 150 Alert.prototype.close = function (e) { var $this = $(this) var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = $(selector) if (e) e.preventDefault() if (!$parent.length) { $parent = $this.closest('.alert') } $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() { // detach from parent, fire event then clean up data $parent.detach().trigger('closed.bs.alert').remove() } $.support.transition && $parent.hasClass('fade') ? $parent .one('bsTransitionEnd', removeElement) .emulateTransitionEnd(Alert.TRANSITION_DURATION) : removeElement() } // ALERT PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.alert $.fn.alert = Plugin $.fn.alert.Constructor = Alert // ALERT NO CONFLICT // ================= $.fn.alert.noConflict = function () { $.fn.alert = old return this } // ALERT DATA-API // ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery); /* ======================================================================== * Bootstrap: button.js v3.3.5 * http://getbootstrap.com/javascript/#buttons * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ============================== var Button = function (element, options) { this.$element = $(element) this.options = $.extend({}, Button.DEFAULTS, options) this.isLoading = false } Button.VERSION = '3.3.5' Button.DEFAULTS = { loadingText: 'loading...' } Button.prototype.setState = function (state) { var d = 'disabled' var $el = this.$element var val = $el.is('input') ? 'val' : 'html' var data = $el.data() state += 'Text' if (data.resetText == null) $el.data('resetText', $el[val]()) // push to event loop to allow forms to submit setTimeout($.proxy(function () { $el[val](data[state] == null ? this.options[state] : data[state]) if (state == 'loadingText') { this.isLoading = true $el.addClass(d).attr(d, d) } else if (this.isLoading) { this.isLoading = false $el.removeClass(d).removeAttr(d) } }, this), 0) } Button.prototype.toggle = function () { var changed = true var $parent = this.$element.closest('[data-toggle="buttons"]') if ($parent.length) { var $input = this.$element.find('input') if ($input.prop('type') == 'radio') { if ($input.prop('checked')) changed = false $parent.find('.active').removeClass('active') this.$element.addClass('active') } else if ($input.prop('type') == 'checkbox') { if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false this.$element.toggleClass('active') } $input.prop('checked', this.$element.hasClass('active')) if (changed) $input.trigger('change') } else { this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.toggleClass('active') } } // BUTTON PLUGIN DEFINITION // ======================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.button') var options = typeof option == 'object' && option if (!data) $this.data('bs.button', (data = new Button(this, options))) if (option == 'toggle') data.toggle() else if (option) data.setState(option) }) } var old = $.fn.button $.fn.button = Plugin $.fn.button.Constructor = Button // BUTTON NO CONFLICT // ================== $.fn.button.noConflict = function () { $.fn.button = old return this } // BUTTON DATA-API // =============== $(document) .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { var $btn = $(e.target) if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') Plugin.call($btn, 'toggle') if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault() }) .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) }) }(jQuery); /* ======================================================================== * Bootstrap: carousel.js v3.3.5 * http://getbootstrap.com/javascript/#carousel * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // CAROUSEL CLASS DEFINITION // ========================= var Carousel = function (element, options) { this.$element = $(element) this.$indicators = this.$element.find('.carousel-indicators') this.options = options this.paused = null this.sliding = null this.interval = null this.$active = null this.$items = null this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) } Carousel.VERSION = '3.3.5' Carousel.TRANSITION_DURATION = 600 Carousel.DEFAULTS = { interval: 5000, pause: 'hover', wrap: true, keyboard: true } Carousel.prototype.keydown = function (e) { if (/input|textarea/i.test(e.target.tagName)) return switch (e.which) { case 37: this.prev(); break case 39: this.next(); break default: return } e.preventDefault() } Carousel.prototype.cycle = function (e) { e || (this.paused = false) this.interval && clearInterval(this.interval) this.options.interval && !this.paused && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) return this } Carousel.prototype.getItemIndex = function (item) { this.$items = item.parent().children('.item') return this.$items.index(item || this.$active) } Carousel.prototype.getItemForDirection = function (direction, active) { var activeIndex = this.getItemIndex(active) var willWrap = (direction == 'prev' && activeIndex === 0) || (direction == 'next' && activeIndex == (this.$items.length - 1)) if (willWrap && !this.options.wrap) return active var delta = direction == 'prev' ? -1 : 1 var itemIndex = (activeIndex + delta) % this.$items.length return this.$items.eq(itemIndex) } Carousel.prototype.to = function (pos) { var that = this var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) if (pos > (this.$items.length - 1) || pos < 0) return if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" if (activeIndex == pos) return this.pause().cycle() return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) } Carousel.prototype.pause = function (e) { e || (this.paused = true) if (this.$element.find('.next, .prev').length && $.support.transition) { this.$element.trigger($.support.transition.end) this.cycle(true) } this.interval = clearInterval(this.interval) return this } Carousel.prototype.next = function () { if (this.sliding) return return this.slide('next') } Carousel.prototype.prev = function () { if (this.sliding) return return this.slide('prev') } Carousel.prototype.slide = function (type, next) { var $active = this.$element.find('.item.active') var $next = next || this.getItemForDirection(type, $active) var isCycling = this.interval var direction = type == 'next' ? 'left' : 'right' var that = this if ($next.hasClass('active')) return (this.sliding = false) var relatedTarget = $next[0] var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) this.$element.trigger(slideEvent) if (slideEvent.isDefaultPrevented()) return this.sliding = true isCycling && this.pause() if (this.$indicators.length) { this.$indicators.find('.active').removeClass('active') var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) $nextIndicator && $nextIndicator.addClass('active') } var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" if ($.support.transition && this.$element.hasClass('slide')) { $next.addClass(type) $next[0].offsetWidth // force reflow $active.addClass(direction) $next.addClass(direction) $active .one('bsTransitionEnd', function () { $next.removeClass([type, direction].join(' ')).addClass('active') $active.removeClass(['active', direction].join(' ')) that.sliding = false setTimeout(function () { that.$element.trigger(slidEvent) }, 0) }) .emulateTransitionEnd(Carousel.TRANSITION_DURATION) } else { $active.removeClass('active') $next.addClass('active') this.sliding = false this.$element.trigger(slidEvent) } isCycling && this.cycle() return this } // CAROUSEL PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.carousel') var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) var action = typeof option == 'string' ? option : options.slide if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) if (typeof option == 'number') data.to(option) else if (action) data[action]() else if (options.interval) data.pause().cycle() }) } var old = $.fn.carousel $.fn.carousel = Plugin $.fn.carousel.Constructor = Carousel // CAROUSEL NO CONFLICT // ==================== $.fn.carousel.noConflict = function () { $.fn.carousel = old return this } // CAROUSEL DATA-API // ================= var clickHandler = function (e) { var href var $this = $(this) var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 if (!$target.hasClass('carousel')) return var options = $.extend({}, $target.data(), $this.data()) var slideIndex = $this.attr('data-slide-to') if (slideIndex) options.interval = false Plugin.call($target, options) if (slideIndex) { $target.data('bs.carousel').to(slideIndex) } e.preventDefault() } $(document) .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) $(window).on('load', function () { $('[data-ride="carousel"]').each(function () { var $carousel = $(this) Plugin.call($carousel, $carousel.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: collapse.js v3.3.5 * http://getbootstrap.com/javascript/#collapse * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION // ================================ var Collapse = function (element, options) { this.$element = $(element) this.options = $.extend({}, Collapse.DEFAULTS, options) this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + '[data-toggle="collapse"][data-target="#' + element.id + '"]') this.transitioning = null if (this.options.parent) { this.$parent = this.getParent() } else { this.addAriaAndCollapsedClass(this.$element, this.$trigger) } if (this.options.toggle) this.toggle() } Collapse.VERSION = '3.3.5' Collapse.TRANSITION_DURATION = 350 Collapse.DEFAULTS = { toggle: true } Collapse.prototype.dimension = function () { var hasWidth = this.$element.hasClass('width') return hasWidth ? 'width' : 'height' } Collapse.prototype.show = function () { if (this.transitioning || this.$element.hasClass('in')) return var activesData var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') if (actives && actives.length) { activesData = actives.data('bs.collapse') if (activesData && activesData.transitioning) return } var startEvent = $.Event('show.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return if (actives && actives.length) { Plugin.call(actives, 'hide') activesData || actives.data('bs.collapse', null) } var dimension = this.dimension() this.$element .removeClass('collapse') .addClass('collapsing')[dimension](0) .attr('aria-expanded', true) this.$trigger .removeClass('collapsed') .attr('aria-expanded', true) this.transitioning = 1 var complete = function () { this.$element .removeClass('collapsing') .addClass('collapse in')[dimension]('') this.transitioning = 0 this.$element .trigger('shown.bs.collapse') } if (!$.support.transition) return complete.call(this) var scrollSize = $.camelCase(['scroll', dimension].join('-')) this.$element .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) } Collapse.prototype.hide = function () { if (this.transitioning || !this.$element.hasClass('in')) return var startEvent = $.Event('hide.bs.collapse') this.$element.trigger(startEvent) if (startEvent.isDefaultPrevented()) return var dimension = this.dimension() this.$element[dimension](this.$element[dimension]())[0].offsetHeight this.$element .addClass('collapsing') .removeClass('collapse in') .attr('aria-expanded', false) this.$trigger .addClass('collapsed') .attr('aria-expanded', false) this.transitioning = 1 var complete = function () { this.transitioning = 0 this.$element .removeClass('collapsing') .addClass('collapse') .trigger('hidden.bs.collapse') } if (!$.support.transition) return complete.call(this) this.$element [dimension](0) .one('bsTransitionEnd', $.proxy(complete, this)) .emulateTransitionEnd(Collapse.TRANSITION_DURATION) } Collapse.prototype.toggle = function () { this[this.$element.hasClass('in') ? 'hide' : 'show']() } Collapse.prototype.getParent = function () { return $(this.options.parent) .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') .each($.proxy(function (i, element) { var $element = $(element) this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) }, this)) .end() } Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { var isOpen = $element.hasClass('in') $element.attr('aria-expanded', isOpen) $trigger .toggleClass('collapsed', !isOpen) .attr('aria-expanded', isOpen) } function getTargetFromTrigger($trigger) { var href var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 return $(target) } // COLLAPSE PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.collapse') var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.collapse $.fn.collapse = Plugin $.fn.collapse.Constructor = Collapse // COLLAPSE NO CONFLICT // ==================== $.fn.collapse.noConflict = function () { $.fn.collapse = old return this } // COLLAPSE DATA-API // ================= $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { var $this = $(this) if (!$this.attr('data-target')) e.preventDefault() var $target = getTargetFromTrigger($this) var data = $target.data('bs.collapse') var option = data ? 'toggle' : $this.data() Plugin.call($target, option) }) }(jQuery); /* ======================================================================== * Bootstrap: dropdown.js v3.3.5 * http://getbootstrap.com/javascript/#dropdowns * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="dropdown"]' var Dropdown = function (element) { $(element).on('click.bs.dropdown', this.toggle) } Dropdown.VERSION = '3.3.5' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger('shown.bs.dropdown', relatedTarget) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.dropdown') if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.dropdown $.fn.dropdown = Plugin $.fn.dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.dropdown.noConflict = function () { $.fn.dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) }(jQuery); /* ======================================================================== * Bootstrap: modal.js v3.3.5 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.bs.modal') }, this)) } } Modal.VERSION = '3.3.5' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.bs.modal', function () { that.$element.one('mouseup.dismiss.bs.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.bs.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.bs.modal') this.$element .removeClass('in') .off('click.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal') this.$dialog.off('mousedown.dismiss.bs.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.bs.modal') // guard against infinite focus loop .on('focusin.bs.modal', $.proxy(function (e) { if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.bs.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.bs.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.bs.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('bs.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('bs.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.modal $.fn.modal = Plugin $.fn.modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.modal.noConflict = function () { $.fn.modal = old return this } // MODAL DATA-API // ============== $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.bs.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.bs.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); /* ======================================================================== * Bootstrap: tooltip.js v3.3.5 * http://getbootstrap.com/javascript/#tooltip * Inspired by the original jQuery.tipsy by Jason Frame * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TOOLTIP PUBLIC CLASS DEFINITION // =============================== var Tooltip = function (element, options) { this.type = null this.options = null this.enabled = null this.timeout = null this.hoverState = null this.$element = null this.inState = null this.init('tooltip', element, options) } Tooltip.VERSION = '3.3.5' Tooltip.TRANSITION_DURATION = 150 Tooltip.DEFAULTS = { animation: true, placement: 'top', selector: false, template: '', trigger: 'hover focus', title: '', delay: 0, html: false, container: false, viewport: { selector: 'body', padding: 0 } } Tooltip.prototype.init = function (type, element, options) { this.enabled = true this.type = type this.$element = $(element) this.options = this.getOptions(options) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) this.inState = { click: false, hover: false, focus: false } if (this.$element[0] instanceof document.constructor && !this.options.selector) { throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') } var triggers = this.options.trigger.split(' ') for (var i = triggers.length; i--;) { var trigger = triggers[i] if (trigger == 'click') { this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) } else if (trigger != 'manual') { var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) } } this.options.selector ? (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : this.fixTitle() } Tooltip.prototype.getDefaults = function () { return Tooltip.DEFAULTS } Tooltip.prototype.getOptions = function (options) { options = $.extend({}, this.getDefaults(), this.$element.data(), options) if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay } } return options } Tooltip.prototype.getDelegateOptions = function () { var options = {} var defaults = this.getDefaults() this._options && $.each(this._options, function (key, value) { if (defaults[key] != value) options[key] = value }) return options } Tooltip.prototype.enter = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true } if (self.tip().hasClass('in') || self.hoverState == 'in') { self.hoverState = 'in' return } clearTimeout(self.timeout) self.hoverState = 'in' if (!self.options.delay || !self.options.delay.show) return self.show() self.timeout = setTimeout(function () { if (self.hoverState == 'in') self.show() }, self.options.delay.show) } Tooltip.prototype.isInStateTrue = function () { for (var key in this.inState) { if (this.inState[key]) return true } return false } Tooltip.prototype.leave = function (obj) { var self = obj instanceof this.constructor ? obj : $(obj.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) $(obj.currentTarget).data('bs.' + this.type, self) } if (obj instanceof $.Event) { self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false } if (self.isInStateTrue()) return clearTimeout(self.timeout) self.hoverState = 'out' if (!self.options.delay || !self.options.delay.hide) return self.hide() self.timeout = setTimeout(function () { if (self.hoverState == 'out') self.hide() }, self.options.delay.hide) } Tooltip.prototype.show = function () { var e = $.Event('show.bs.' + this.type) if (this.hasContent() && this.enabled) { this.$element.trigger(e) var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) if (e.isDefaultPrevented() || !inDom) return var that = this var $tip = this.tip() var tipId = this.getUID(this.type) this.setContent() $tip.attr('id', tipId) this.$element.attr('aria-describedby', tipId) if (this.options.animation) $tip.addClass('fade') var placement = typeof this.options.placement == 'function' ? this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement var autoToken = /\s?auto?\s?/i var autoPlace = autoToken.test(placement) if (autoPlace) placement = placement.replace(autoToken, '') || 'top' $tip .detach() .css({ top: 0, left: 0, display: 'block' }) .addClass(placement) .data('bs.' + this.type, this) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.$element.trigger('inserted.bs.' + this.type) var pos = this.getPosition() var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (autoPlace) { var orgPlacement = placement var viewportDim = this.getPosition(this.$viewport) placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : placement $tip .removeClass(orgPlacement) .addClass(placement) } var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) this.applyPlacement(calculatedOffset, placement) var complete = function () { var prevHoverState = that.hoverState that.$element.trigger('shown.bs.' + that.type) that.hoverState = null if (prevHoverState == 'out') that.leave(that) } $.support.transition && this.$tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() } } Tooltip.prototype.applyPlacement = function (offset, placement) { var $tip = this.tip() var width = $tip[0].offsetWidth var height = $tip[0].offsetHeight // manually read margins because getBoundingClientRect includes difference var marginTop = parseInt($tip.css('margin-top'), 10) var marginLeft = parseInt($tip.css('margin-left'), 10) // we must check for NaN for ie 8/9 if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginLeft)) marginLeft = 0 offset.top += marginTop offset.left += marginLeft // $.fn.offset doesn't round pixel values // so we use setOffset directly with our own function B-0 $.offset.setOffset($tip[0], $.extend({ using: function (props) { $tip.css({ top: Math.round(props.top), left: Math.round(props.left) }) } }, offset), 0) $tip.addClass('in') // check to see if placing tip in new offset caused the tip to resize itself var actualWidth = $tip[0].offsetWidth var actualHeight = $tip[0].offsetHeight if (placement == 'top' && actualHeight != height) { offset.top = offset.top + height - actualHeight } var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) if (delta.left) offset.left += delta.left else offset.top += delta.top var isVertical = /top|bottom/.test(placement) var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' $tip.offset(offset) this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) } Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { this.arrow() .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') .css(isVertical ? 'top' : 'left', '') } Tooltip.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) $tip.removeClass('fade in top bottom left right') } Tooltip.prototype.hide = function (callback) { var that = this var $tip = $(this.$tip) var e = $.Event('hide.bs.' + this.type) function complete() { if (that.hoverState != 'in') $tip.detach() that.$element .removeAttr('aria-describedby') .trigger('hidden.bs.' + that.type) callback && callback() } this.$element.trigger(e) if (e.isDefaultPrevented()) return $tip.removeClass('in') $.support.transition && $tip.hasClass('fade') ? $tip .one('bsTransitionEnd', complete) .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : complete() this.hoverState = null return this } Tooltip.prototype.fixTitle = function () { var $e = this.$element if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') } } Tooltip.prototype.hasContent = function () { return this.getTitle() } Tooltip.prototype.getPosition = function ($element) { $element = $element || this.$element var el = $element[0] var isBody = el.tagName == 'BODY' var elRect = el.getBoundingClientRect() if (elRect.width == null) { // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) } var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null return $.extend({}, elRect, scroll, outerDims, elOffset) } Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } } Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { var delta = { top: 0, left: 0 } if (!this.$viewport) return delta var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 var viewportDimensions = this.getPosition(this.$viewport) if (/right|left/.test(placement)) { var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight if (topEdgeOffset < viewportDimensions.top) { // top overflow delta.top = viewportDimensions.top - topEdgeOffset } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset } } else { var leftEdgeOffset = pos.left - viewportPadding var rightEdgeOffset = pos.left + viewportPadding + actualWidth if (leftEdgeOffset < viewportDimensions.left) { // left overflow delta.left = viewportDimensions.left - leftEdgeOffset } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset } } return delta } Tooltip.prototype.getTitle = function () { var title var $e = this.$element var o = this.options title = $e.attr('data-original-title') || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) return title } Tooltip.prototype.getUID = function (prefix) { do prefix += ~~(Math.random() * 1000000) while (document.getElementById(prefix)) return prefix } Tooltip.prototype.tip = function () { if (!this.$tip) { this.$tip = $(this.options.template) if (this.$tip.length != 1) { throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') } } return this.$tip } Tooltip.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) } Tooltip.prototype.enable = function () { this.enabled = true } Tooltip.prototype.disable = function () { this.enabled = false } Tooltip.prototype.toggleEnabled = function () { this.enabled = !this.enabled } Tooltip.prototype.toggle = function (e) { var self = this if (e) { self = $(e.currentTarget).data('bs.' + this.type) if (!self) { self = new this.constructor(e.currentTarget, this.getDelegateOptions()) $(e.currentTarget).data('bs.' + this.type, self) } } if (e) { self.inState.click = !self.inState.click if (self.isInStateTrue()) self.enter(self) else self.leave(self) } else { self.tip().hasClass('in') ? self.leave(self) : self.enter(self) } } Tooltip.prototype.destroy = function () { var that = this clearTimeout(this.timeout) this.hide(function () { that.$element.off('.' + that.type).removeData('bs.' + that.type) if (that.$tip) { that.$tip.detach() } that.$tip = null that.$arrow = null that.$viewport = null }) } // TOOLTIP PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tooltip') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tooltip $.fn.tooltip = Plugin $.fn.tooltip.Constructor = Tooltip // TOOLTIP NO CONFLICT // =================== $.fn.tooltip.noConflict = function () { $.fn.tooltip = old return this } }(jQuery); /* ======================================================================== * Bootstrap: popover.js v3.3.5 * http://getbootstrap.com/javascript/#popovers * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // POPOVER PUBLIC CLASS DEFINITION // =============================== var Popover = function (element, options) { this.init('popover', element, options) } if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') Popover.VERSION = '3.3.5' Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { placement: 'right', trigger: 'click', content: '', template: '' }) // NOTE: POPOVER EXTENDS tooltip.js // ================================ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) Popover.prototype.constructor = Popover Popover.prototype.getDefaults = function () { return Popover.DEFAULTS } Popover.prototype.setContent = function () { var $tip = this.tip() var title = this.getTitle() var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' ](content) $tip.removeClass('fade top bottom left right in') // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do // this manually by checking the contents. if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() } Popover.prototype.hasContent = function () { return this.getTitle() || this.getContent() } Popover.prototype.getContent = function () { var $e = this.$element var o = this.options return $e.attr('data-content') || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) } Popover.prototype.arrow = function () { return (this.$arrow = this.$arrow || this.tip().find('.arrow')) } // POPOVER PLUGIN DEFINITION // ========================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.popover') var options = typeof option == 'object' && option if (!data && /destroy|hide/.test(option)) return if (!data) $this.data('bs.popover', (data = new Popover(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.popover $.fn.popover = Plugin $.fn.popover.Constructor = Popover // POPOVER NO CONFLICT // =================== $.fn.popover.noConflict = function () { $.fn.popover = old return this } }(jQuery); /* ======================================================================== * Bootstrap: scrollspy.js v3.3.5 * http://getbootstrap.com/javascript/#scrollspy * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // SCROLLSPY CLASS DEFINITION // ========================== function ScrollSpy(element, options) { this.$body = $(document.body) this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) this.options = $.extend({}, ScrollSpy.DEFAULTS, options) this.selector = (this.options.target || '') + ' .nav li > a' this.offsets = [] this.targets = [] this.activeTarget = null this.scrollHeight = 0 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) this.refresh() this.process() } ScrollSpy.VERSION = '3.3.5' ScrollSpy.DEFAULTS = { offset: 10 } ScrollSpy.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) } ScrollSpy.prototype.refresh = function () { var that = this var offsetMethod = 'offset' var offsetBase = 0 this.offsets = [] this.targets = [] this.scrollHeight = this.getScrollHeight() if (!$.isWindow(this.$scrollElement[0])) { offsetMethod = 'position' offsetBase = this.$scrollElement.scrollTop() } this.$body .find(this.selector) .map(function () { var $el = $(this) var href = $el.data('target') || $el.attr('href') var $href = /^#./.test(href) && $(href) return ($href && $href.length && $href.is(':visible') && [[$href[offsetMethod]().top + offsetBase, href]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) .each(function () { that.offsets.push(this[0]) that.targets.push(this[1]) }) } ScrollSpy.prototype.process = function () { var scrollTop = this.$scrollElement.scrollTop() + this.options.offset var scrollHeight = this.getScrollHeight() var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() var offsets = this.offsets var targets = this.targets var activeTarget = this.activeTarget var i if (this.scrollHeight != scrollHeight) { this.refresh() } if (scrollTop >= maxScroll) { return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) } if (activeTarget && scrollTop < offsets[0]) { this.activeTarget = null return this.clear() } for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) && this.activate(targets[i]) } } ScrollSpy.prototype.activate = function (target) { this.activeTarget = target this.clear() var selector = this.selector + '[data-target="' + target + '"],' + this.selector + '[href="' + target + '"]' var active = $(selector) .parents('li') .addClass('active') if (active.parent('.dropdown-menu').length) { active = active .closest('li.dropdown') .addClass('active') } active.trigger('activate.bs.scrollspy') } ScrollSpy.prototype.clear = function () { $(this.selector) .parentsUntil(this.options.target, '.active') .removeClass('active') } // SCROLLSPY PLUGIN DEFINITION // =========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.scrollspy') var options = typeof option == 'object' && option if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.scrollspy $.fn.scrollspy = Plugin $.fn.scrollspy.Constructor = ScrollSpy // SCROLLSPY NO CONFLICT // ===================== $.fn.scrollspy.noConflict = function () { $.fn.scrollspy = old return this } // SCROLLSPY DATA-API // ================== $(window).on('load.bs.scrollspy.data-api', function () { $('[data-spy="scroll"]').each(function () { var $spy = $(this) Plugin.call($spy, $spy.data()) }) }) }(jQuery); /* ======================================================================== * Bootstrap: tab.js v3.3.5 * http://getbootstrap.com/javascript/#tabs * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // TAB CLASS DEFINITION // ==================== var Tab = function (element) { // jscs:disable requireDollarBeforejQueryAssignment this.element = $(element) // jscs:enable requireDollarBeforejQueryAssignment } Tab.VERSION = '3.3.5' Tab.TRANSITION_DURATION = 150 Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } if ($this.parent('li').hasClass('active')) return var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] }) $previous.trigger(hideEvent) $this.trigger(showEvent) if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return var $target = $(selector) this.activate($this.closest('li'), $ul) this.activate($target, $target.parent(), function () { $previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) $this.trigger({ type: 'shown.bs.tab', relatedTarget: $previous[0] }) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') .removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) } callback && callback() } $active.length && transition ? $active .one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ var clickHandler = function (e) { e.preventDefault() Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) }(jQuery); /* ======================================================================== * Bootstrap: affix.js v3.3.5 * http://getbootstrap.com/javascript/#affix * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // AFFIX CLASS DEFINITION // ====================== var Affix = function (element, options) { this.options = $.extend({}, Affix.DEFAULTS, options) this.$target = $(this.options.target) .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) this.$element = $(element) this.affixed = null this.unpin = null this.pinnedOffset = null this.checkPosition() } Affix.VERSION = '3.3.5' Affix.RESET = 'affix affix-top affix-bottom' Affix.DEFAULTS = { offset: 0, target: window } Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { var scrollTop = this.$target.scrollTop() var position = this.$element.offset() var targetHeight = this.$target.height() if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false if (this.affixed == 'bottom') { if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' } var initializing = this.affixed == null var colliderTop = initializing ? scrollTop : position.top var colliderHeight = initializing ? targetHeight : height if (offsetTop != null && scrollTop <= offsetTop) return 'top' if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' return false } Affix.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset this.$element.removeClass(Affix.RESET).addClass('affix') var scrollTop = this.$target.scrollTop() var position = this.$element.offset() return (this.pinnedOffset = position.top - scrollTop) } Affix.prototype.checkPositionWithEventLoop = function () { setTimeout($.proxy(this.checkPosition, this), 1) } Affix.prototype.checkPosition = function () { if (!this.$element.is(':visible')) return var height = this.$element.height() var offset = this.options.offset var offsetTop = offset.top var offsetBottom = offset.bottom var scrollHeight = Math.max($(document).height(), $(document.body).height()) if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) if (this.affixed != affix) { if (this.unpin != null) this.$element.css('top', '') var affixType = 'affix' + (affix ? '-' + affix : '') var e = $.Event(affixType + '.bs.affix') this.$element.trigger(e) if (e.isDefaultPrevented()) return this.affixed = affix this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null this.$element .removeClass(Affix.RESET) .addClass(affixType) .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') } if (affix == 'bottom') { this.$element.offset({ top: scrollHeight - height - offsetBottom }) } } // AFFIX PLUGIN DEFINITION // ======================= function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('bs.affix') var options = typeof option == 'object' && option if (!data) $this.data('bs.affix', (data = new Affix(this, options))) if (typeof option == 'string') data[option]() }) } var old = $.fn.affix $.fn.affix = Plugin $.fn.affix.Constructor = Affix // AFFIX NO CONFLICT // ================= $.fn.affix.noConflict = function () { $.fn.affix = old return this } // AFFIX DATA-API // ============== $(window).on('load', function () { $('[data-spy="affix"]').each(function () { var $spy = $(this) var data = $spy.data() data.offset = data.offset || {} if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom if (data.offsetTop != null) data.offset.top = data.offsetTop Plugin.call($spy, data) }) }) }(jQuery); HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/0002775000175000017500000000000013166626114027255 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/0002775000175000017500000000000013166626114031272 5ustar abompardabompard00000000000000././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.svgHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-re0000664000175000017500000032430213111777164035751 0ustar abompardabompard00000000000000 ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eotHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-re0000664000175000017500000004723713111777164035762 0ustar abompardabompard00000000000000ŸNAMLP',(GLYPHICONS HalflingsRegularxVersion 1.009;PS 001.009;hotconv 1.0.70;makeotf.lib2.5.583298GLYPHICONS Halflings RegularBSGP©ÜMMFîÍéŒÏÒÙ£(uÊŒ<0DãB/X ïNï ˆCCê^Ç rmR2skÉËPJ"5+–gléW*iÕW–/EÓ4#¬Ô£U¦~²f‰‘UDÜĹ÷ˆ«±àJ·1á/!þþ/žºÊsª7’“kŠ•”(ºˆ¡hNøé8oíd$yq޹1³âÖ9ƒ@-‰‚HG’ôµS"øFjôØ 6C3”¤&ž‡ÁøªW51ÁÓÜ×BŸ¯aËêQaR†U/õ¶{*¿‚Ëï‚=–@dôøh$¡1ÉTÛ—nc+c’ÞA¡§¼ •ZÉ€¤@QÑc­a‡ÕÞl÷2>ÊK°Èmó' “ËC‡HMĬfB‰X,¾YòÂp¨e¢ î¸UøØ*Ò”zÿ m‚ËËiO1nEÆ.›„ä hx!aC XTÚV¢Å©Â‹– —éR¥š%¥|Iä HðÅÕPƒ5"Åb’N²µ=âøƒrÙ/_åRŒ›”™_ à%Ò„uzÉéÒ˜Ö5’2Ä¡ÒãPÚ)žÔþžÆÃFƒ7S‹q„FÀ{náia·¸@DÐsˆ;š}9⬥?ź‘§Â R{¦Tkí;޵ǜ×U\NžZø›Q-»^Ôs7òf 0˜ÊÆS3A Ü _n`W7Pp˜»ôài«í³!ðgØ/à_p»ÁÒZ€-=Ã×¥~WZ#/á4 KF`´ »ŒzßÒ0Û| D‚ѵì‚&däI‰´ŽüÃÁ;·Mì”{'¶om†”m¢ I !wi9|H:§Û§À»ç÷Êþ¾{û~ö¹ýqº¸©Oøåôî© ú›,˜ ‚L]&„J0ñ•Ù9/í9&ÌYø è“°{;÷ú'À3`’e@vH„yDZ$º„3ˈDx28 ƒW€ Cx5xw‚B`£$C$'ãÊEl…y Õh¿ëÔ€ DJ $(p½îQA”A܉A–@'Ç$ hpÊ0ÎV0 `ºs¾ªeÒ$É4$"t2=f´˜4„A„{Tk–0|rH¤öÄУï`L&±´sÔh¦]”§A<£¡‹²`R´'£•!ƒ‹1N¦;£_Št3Û#  âòëúØêVãê *veÑF`E O$Ž{)ÙW=p:®ÞÖF`о2ÆÄ2Ú“CëÁŒÒ^×.Êć˜¡ø–øGþ<û.pçNe2ê‹ïÖ´ºÞ+YìsÛl:ÂÃË¼ïµ Ü«u5©¦ÞîÐtÀu•^8¾Ì6èóÈ„TmyðQÉ%þu~ôòš%~1rÒ˜aýwßš^ù_©Z£Za¢ƒ²0!Ùè¡·úNö`¥.Ž uqÀ±çêYB¥\™¨ó…„ÊᨀÔê…[eð‹îîþ:@ êJ'EÛ,¯3ubj@p¨ÁÆäð´f¨Éßóîµ·eW9( óºå ´Þ…‰³æ=‹l”G¦à7gj âSƒM6ư ô0ƒÿ9ò§–OË‘¨üíl§®B¼aªÝò¯  ƒ<¦çžÇBÕ™(VRAp¡fù^°ú¯+g9 qÓݹŠMÆt]»ØªpëE•r@]‡@ó©VŸkV¥ uêädé^ÑX å–—R@?EÕöY2ô¨˜Éï]#àǼš4ÀJÞåKöÁäÖ'ÃÁ¾d²âPC|mãmånä#¾‚$+48u'…çe&û¿€[n[LáÈù’ž±%{BCDÚL:^! ‹‚ÓbÆ™:&Éÿˆî‚g3“-3Ðøu´è­ÇæÐð¹ƒb iLZéÚ‚W‚FSÉäIdÍñ¡6.‘k5Pî„l7ž7üUz’T:NýN¡‘—.ý"€ªåü)‰Å—ì’['ß|U"Aƒ€³—‚I•Ûv©wÐÛØpë™í­t¹dk‚ˆž9Ø›Šå««Í9n¨D‹mq¹—7I|6›Kbcƒ]¶Mô“©²ÄÎ÷—è¶BA€BøÈª_ôJºT Ùüq Ð 6@—§„¸F—‡ƒžhd`G®Tëñ·:MÅ7'à…L,éIh—ÆFP »Ê~j½ŠŒíÄ ¬$¡„ Ä3™hAÝä’-SŒ^ûÚ†…Ðä-%qeÏìë~ÀÆQq«§¬ln"i¾ž&‘æÑQe?FlKï¨"úAsÀ(Ý3Y;"¡LžÚÔe€tå'ÄRzMœª1 0¨{=æ÷)ž€ ³K %$C Âø‘9ŠMðö¼ë¼4c ê€EotjÍÂV§GDŽ)lñ8“¯,˜\wÀ¥à !%$¿×3tÉ TBz’žÒ´ iUJÒÝ[¢Çxgd„Brï$Å!eqˆ’"J>࣠)\~¡‚Љ3(^ â R€8#>Öb›äH€âG'7_ fÓ«cκtDoAA߃†(q™B<ý`Ç­`VˆüøéΫ”©Ö˜Â*úbÞÏu‹P­4v@—+•Ê.’îQåÔ¥$V‚¡•í@C0 íR¢ÓÜP[‘z:X¦H#eäÁ òs >?úEÈWO>@IØ$|s¬žiâ ES¥²)0AŒ?£9•ab,¶@KšñÌ©o&îþüˆ¬Q´%¬ ÏžLu+› Â+H|ÌÆ?´NKÌ4ŒÆ’ÓCnPtè³ 'OTòœÒ.j5àÄ´8ÈÜv¶wÖœ«I¥&•+ß`¼ŠyScaO[#¡g°§Q§œ€¸Údª[îK½I矗`ôÄŒLPýÓ¸ #°Áœ½ ©)2Ò7aTƒäëi@c\Þ‘î ÂâÈ0nêC»pòß–é‹4͵Žxö*ñËÐR”zÕYâ„b‡ÀúÛT[\úkU™vìHʈÜq’p঄IÂíIëÅ—) ‹bB X”PºN´…štzí 2 Iæ==¤ ¦³ˆý¨Ã;}†bŠœàqþÓjiÞ†§a²#" ¬Ÿ>1¼‚°1äA›£p1ÖíÝP‚§OÇèO—ux÷Qôù°¹Î Fϲ(úhÝ„©O'MDxÊLíK$ȵœhæ& ù‹¦Ð1ŒïÄ4››Si ÜãrHJ’P°tDMË;rMã‚+”ö— *–àŸíØ—5u2$ªf3’K ß<ùP²LçrÑc‹I)˜Öå^ëda> %Åàѳb (Ÿú–@,‘2f,~"¦7ÛR;®EÑŽ;¬­”HXå(ú¹Ÿ4Š2ZäÝ'TªÛ¿ö‹„”½2J+ÿ^!#oŽ„›”Y~4Ø-׃òGW*ð!ßÃA•0&8€fä{`¼½øàWö=’DP8’'ÿ= ÖR¦ g©}ôiP>“Ê#¹Ëå¹4ÃÒEÐBRY®Æ^4eóý‚§N8¸V,[B‹†ĨîD#X†ø]²,Öèâ«LBsNC> +¢íoÍê^x¨ì§  ÷•újCì.4ÀYa‰_{e¦A2=rŽðØ+‰­´Öî§¡9PO»A!! ×}´YÊPJe„—çGnš±%xü1¬/}RgHØša Ž^3-Š© ‹5 ¶|‹qS§ÐðaWK{ 1al`IÀ1Ó ™ÆQé¾ëf_yyCZ)ÄL3X±] W6@DM™Tø<.„«uëGÎKŒì8ÙDsôÚбWæ‘r…Ý\ß7Z\ÕËÿòVÓ"I¦¢ŒõS¡§®dµ‰>CަÈUjßÉežÉÈÓD ®3MÇtWcP﯆–òÓ‰6#3Qךnቩ…°J\º¡Ã7ž#磱`Ø€Këë¤ ©×lV6 &ÓTŽ’ Þ~îÚl.’¾¡ <˜˜BP £*´!zRZÄäeÑ™»¾¾Ù·T±#£CéLH±¬ÈªWÅ)ÚD›†÷“p®YU#ÉÊ51{WJ€Ž¤4^Äf³Ì¼Z°öÌÑy6–Ó‘T2™dÎ4H=êB„Ҋɬ}œ&݃êÂ,aPçv+:2æ~òÁ*0¼°¢ˆd¦É“ÂõÖƒd ‚øáË!"A+‰rHn ¡ÇàsAäÁÈÚ—U €ýø¤b H“ÛN6þ$.ÐlÀ};½@£¡âiKà \¬Ò‚:v‰QEÇ:,|ýªQ  Y0|Ç%Ö@í° ÜäqcçÓÑdqh¯«è«¹vÜCÍGV†°©¸¯-(шm…’1»®âq89KF–Öä "2±ò}RrzóŽ,j^¥ÀqË\…Ý–#pƒ»+õ`flš³½â:k ´t–5E„OaIÃJ¬P @ps­E™j1ä4;6öô/aHÎ.¼ÏÓ°TX¤p“L‹¸ÄL8¤½Fç„Üši¨lí1–²YØŠ8É %!/Áù{­¨ÒÅñ éœ‹ÙåÆXœ€ºbˆ•½…NÉÂxp»ºäPWê½ÛíèÄcI9g²*þº¿îƒ¹œ%:Ö»LËÞuŠ‚CAOÂŒ­™%¬/Å“´(Y¢³^ï? Þã&I'ˆÈuh[x‹´–Qô$ÇzҵŽø‚ ß³ž‚(=V×€Ÿê ¾mð­ÅU) »ílΠΒ¾Ìiœ•d㦈™¨½~f¦ùjGíµÖR{D€%>®¥@”…”6‚¥¤1‚œ`Æ!Î ` ņ¶wYó§‰Õàk/a0A†«Â¹ŸÔ´ÊYh²¯—µòˆdìæxš‘k:fšƒÿ漣<ÕØÙWL4`8IYMBÁSlcäÖßÈà™-»EÒ‚'ÎÚŒÅ:,ÿD¬°çÑÙøÆ©84Ó)~÷ÿ2·j€Ÿ–Ç i¶·B(Lãµ| "a©š¦¯4,¦b8§”¥Ô“i 94¦åÔŒÒjWщ° ©6*ÐTð£†c4gŠÌ“¢×UMÉb³RÇE²þª‹ò…C5‘Æ)jäÈ´ ‘­16pbÃëÛÆŽH÷§ªFxòˆñ¹¿—¯«Ä£%4âòQÙÄC‰Êˆ§Å $9Ò:ÅM>òEÖÝaÜÆo«ÌŸ^ÂØ<IwÞYgq7s[†ð’ð -yÐ1ع5†äaÄãMKš×æRBÇY€†óFq}¹âç±ô8ïÀ²*ÈNtå'.Yb„”›¤ÍðZÍûvÅK (Ê]&ÉœŠ( Õ™¥ý2¯:0Õ €äo¤ÎÑ…PKiBH4Uð¹X,Ž¢[ˆð$ 0­mX±å»Ø´‚ ò¥fë5ð0± VR ©8ê%ÙÑñÊÞ§§Dt°ÃUŒ‘s`ô·-BPÈzôP”së°Á¦vIë¶8z-¥t1DiB ÒÝ"˶ÜÈYTJ ƒÄ.š?Ô0Ç7à€jL¢ÃNžú[2ÿtÈÂĮ̎†æ ù#þ6?E×»†”Œ×¡®ˆ:ÉžÎY;ƒç¬A&q…êSØIRÈ)Éss 9*xÒß0Bj)mìáH§A¾öhyÐhòMm¤&4ÅŠ…4€ €‡ÜÚg¸ŸVæ&tYóÚ¦ÏOCS0³Y²ô‚d7MvNïj)wë÷AÉ(¬âo "Í¢É[¦Ö E`›”þŠë7ez¸Ä†»Þ-·QÀ]¦6Û+BcaÍ@^IÂ:²Ò»´Þþ¾=ƒ—š­ˆsSŸäÏncÇùÓ 6 ‚ÍçOã¡B„4½ˆŸç L¥¨ÀGpãB‰q/<•zAãÓCÁ¥» €ÔA~¹ÉxÐ0 6rih£Íh¤IìØ·O‚N,:oÇÁkìçÚöÅ/ó¸{H°,ÛzЂgÚfÈ»z—¯Ó΀5ýFõ²TrÀn/ät``l†Á™*H6jT¡tG/xøË@P@(„ÄIèp Òeº!ùê`wv,:A쑜¹N£ 4}09zÇqCìä$rìüM`Y†Q”’ øMää•«³÷Ä(|éB!í>¢ÁØ>«O pwj A*@›ªŸJäC[h&3üëB QbýÏ©8 …:ñ“%f~v/‹lâSäÐèÒ0ÝèþÐð0a“·¶"ŽBæ8(f úuGoÇšÈgyñÅ×t£_Ãy~ÀÍ”Ž Ã%ä…°ûm†L èà!I$äXt0ƒÏ€~ÀeŒPˆzËÍ]¢Uìg Ð=_±?ñºµº.j#+`li‘¡ BŠñâM5›Ò º¿Å‘GÒpŒž7«a †Ö’%Y[UG9æ™òÆÓ@\bDêÐY…’{‰{¤ðED0®— Ö$ Qø+FvCð`ݨì3°ýQ¥ “î±E\àÐuC9ÍáÃ![€$êlïßõ šúêù6ßD¨oÙDgÀGˆ*+X!¸%#‚C€q‘ ?é­8ZUB)U@o¢ÏpgÞ©¶ZØq…¡¡É8ŽÊ9øžÇ|ucácAÑœ¶­é°•W;©@á" €Ø>P‚Óïåh_™Ç9}.6€„V/ÇO:à3´}Ž¡ZS ±µœ{:ØÚ~’óþœÅyŠk¦cO6;OÎBá=—bVñ. R¿k‹ oñ ¤ÿ^±GV=áØ }ïoI"+ ô ]w‡×FªÁzÏ·ä®ö`<“Éõ²30ûh÷ŒÅ3]êRfú—¿859s¼`K…M€¤8ñË X»Uqˆ<‰˜¥\˜“ÆZOàssè¿M’·&j&Ï ÄÖ÷ .§%Ÿ ÒPÊBL~^äßÿùGˆËˆ‘3páD‡¬•:í¸×£Z¿£Á¹¨©<\ñ«Ç i¯¨ÛW̆¨ÈÂ"(”ƒ:áÅâz‹©–X–~êÎ0PG]8ª¬ƒŒˆRQMNT¦qfÝW~!Ý0”R%Õ‘0ðxvGFy/Fø-›Ïwúu‚/ôî*ë+’Æ \õÂ8@ˆ6¢«Âþ©´‹»c<´àLƒ;c[šû÷ŠÛÙº nr ŸQS'o£QuòT®{qÒ_œÍ¿ƒƒSdª»A*ð:mò8Yuz2ÿPB« ìHh`l´k’pèÿLLh cEb6eÛÒ‹ ?!„™>| *=Vü­»Kî@žë“rx‘0ÓG`%ryr[6êŠY3Œ7ŒÅ ‡f*—*n•à%9™ÚdfÃè1ó1Þ¢Ú^'Ìý]‰š– RÍßèqÜÔ.Øê÷,œö•‰Ó^%„¯lÂÚâ ã½eØØ#wWÂÑsó56!Ù=âå!q[ö°ÄØ Ã%ÈÔ®]ó‹5^:€½m¨5©)?V b|šuÀ7f“ºìw°œæÄð,:çYe æ†R%” ò[À›î Éo gæF«AzµFP¥›òŸÀÔx›¶î{Ïíöd‚xíÖwÃ8Ž˜–Ù”{{L> ®‚d¬2CäL‘º¨äLÞ,œLÜè,„ò(àmSìø›ÃØåå$=Ñ|%Öluè& Ä…”83ãÚ N ¢XåŠx ë \VnõÍïžJ[)I›êwŒÄ/Ñé¹»²Ú ²| GÅºÙØY×Áð÷DHµ˜½*›Sýªîè¤æ’p6®0ÓcJ2ã@ÅW´%Ѧcï¼_^Ó$Ñç#*:G§®æ6Ž¡ïn>ÍD;úù¥~¤`9ëhXB ñUŽ«JB_вˆ˜ùˈî%ªý’´w'¹$³èv|#T<68çªKM¶Ï‘-Ù5U+¾¶¡'íB ËĪN…‘øŽbJìÃOv'Èì|‹„+*MŒ¼k(dˆ }›CÚ˱@ ³Áq°³¹&ùaR%}´ Ë!ÖVЃ‘s3w2¦ŽÑa²2²ÿŽawHæz¡/Q0ðF¦ Ù]~;ž¥Ã¤ËÖ NDùP mü˜K3xÞŠke_™£  ñóþS¯!¡V&=²²ª²ºvç_PÀL9؃Y£¡i¿ §NU­Ó_¶¬¯)–ƒJ6Ý9‘f*ÊðS ± 17ÚF|¸BR$É·y,Ʊ.¿ÀÕ&=uqsáó¡ODÅòB›ÈôR„=çÙɳ—eøØ½É‡àB®¬ä¬ÖH­¡®ˆ ª2lu'h7^#ÿS…)£Xi2..Pe¡/@FÕKÉ‘$é](Ø%à|–2ÉðY1pC±8tÁùIøã11N//+\»“p¥jÔÄïôd€”ÎáWÊmé›ÃI=ß½·ÓY“Zx¡ÔMЉPý8²“1/ JG«õÄ^U ,PÈd1O®ó^¬yßpq”l¿£2hÝÑ$øjvñø‹þª­ÌõžIšö%‡Š¨§áèÔ]VæÎÖ .'[+WU8Á­[Žå†Dê’³è,ß»¾-=[ÀåÙ O wÿƒ ¿Eê)å3±ø¬äó¿J&¥dïقݶR¡¬—S–\.° •5J$I&ó‘Ýoª·Hȳ~› l‡½Îz>€ Ux/õHñÐu;š?Gt®{?à³;óT¡ŒªH äLþ|Fú8á†ð²}ˆ¡{ú˜p:ß2tì͆a·Ëѧp6ÑÏíÔû·¶øè5Y"LÚD“Œù.Šr¼ØV“ß‘²ßS_ ºÚÊkþÏ]»n&úH¸z§~¦9‘æ ¦p $§4Ù‚”'¢{º& ¸«ÿËM\ŸÎ°éч¨®!ìq®ià ÏÄ(.hš'Ë B± T­²Ÿ|ž{I„6cLò¡.¹ž£ë¹iI¾ê«¿\!à;§àg`1â ᾕ˜j%C ¹o3*60÷·EŒ˜ØŽž]tä‰.×-%0 Y‰KÇ_nft] ·*VFCÆtJ’°ÄTÔ+¤\WZ8áòÄâ×gFвàÙ^ Þžf¶ 5šI=¶×ù#6ö.@õ2zÒÃ;Wš`ÿB/Ä™QøŠgí°ühŠjyJÓ°€N²AX¤3ªÝ,õ¤› Kä6è’ë6Ú²ØM0®T@ Ž…O{¡£˜4kj£|"¬ftÑŸ”Û„Uü‚<-üÞa†®Õæ5bú)í^R±°8™„ÎÁž:†§il¾­ÀKaÇ6@µæ”Ã!ÀÍÃ] buvÎ$ ‡oUÇœ~:.…Lût–èêe—ü Ç€¢JξP l$S[z–~Rq39é’ºô¶9ëQïË/m"•%ʤ‰¯†¼7Ÿš Ãî5MKLŸé‘§"IßG„ èXTÞŽXL¿FðݧV j‘p^¡/MÃgÁÛ»{¶¹»wô ì*øº€ž9ÿð—ÊO¾Êˆ<Ë"aôÁþ÷Aáîïˆq¿»¢†.M—2@möë‡p¿^Ú'“wß•möÇkxO8 ü$[ó«&Áü|Y‚Zyý`2_|%r—“/åJ?¡QùÃṈl‰3ÞÎßK¡E$–wÿvCËh£û a@÷U€1©Mø¾%0?1*¥ –$GÓZÓ{!|ÇÊ¿À$ÃßÛ•Â-òÙªEv;‹Í“:佋Ÿ`BlÏ˸ ìŒ§Çɬ›oQÝ0&‹•ûþñ,†F?¡ýÆä„^s,‡c“™ÁhË•ÿ$ÃEücl0åºw`ý⺹ň©@/€r^l˜8cT·3™Ük@›ÜúJÂÝ”´uPÐ&ʪNÉódùJjTK¸ªi ·é*u§»éX–{t“j~½É¡}ùñi\BÈKenâ‹Èµ|NëÖê šu’ï#Ã]@lõCZ$iPæa½ã¸©t04y20ü sØÖªâ,AuÆ!QÒØBäÏ–ö–^ìˆ@VsÉ‘€‚\ÞZßaã7©ì¾‰©¸âш³»6-Tïr±ÀäU˜ àu“Œ~ë°1HÂJ¨(<Î±Ž‚ò½Ó³bRÔ–¸qi Ï鿢¬J?íeÿGÁ §*jVħ "áØã†:Y);-Fådô!ðH£»ÙG~´•u¦x cb6m•¼ø)&;ñ0‡ÏdU?‡8ÅX~ïŸ1Ñ2šÛ¼¨t€ˆIØxè5ÄÀ{(ëz„ê Ü'¿ûÿ[ ÅƒkŽèZÐ…ØìéÍi,ðÅb™1̇‹¢Íá`º±(ôªmHáNðìüe‰K¤°ßÔ/ [à´(õö#Qô—GdÊuÎT©½^øm³¢¿%ù†ŒÅ!(˜7Kgé…P=èhøÏ•ákÉU+ŒÂÆ.[Òe¯‹Ïм³CÁžÿå"GDÿΨ£›<*<ÖÏþéh «)¤` A˜U @O]hýlÅf2”…!HžçÏF#QBÂé=uȾ9f´h€ó;"R„¥Ú’KÜ3-‚(G )¼P±áø¡¨ž¦²T],7ÁecÞ ë F4hH Ós³73á–Ÿ ¡² âÛ`àºR–¡Tíwfͳ;6Bó>Ř 9&ÈâÛÑÚÜ‚Î?’—÷ø)À\¨Œ€<&Ŏ™ð5 LÃJu¥@YžÝÝ,냲ھÛ_wÂ0˜^é17ñððöìpÞ»‡*>D”8㟘ü°_)$UźóÊR´!jOFôÖ>{ˆÐ’‘ »t,¯-…bPµ,m`D"/ŸzðAâ ͔إêßQZGÕ&U]xejxæåLwvõ~²œ=)@ØB¯Ö6Ê?!;53/ps@tƒOZS7©”§Ø™®’nŸØlxèûîÿZ?áƒZù—j a²–{ýû6—¥ÿL4›Š«1Ÿ 2¹´ù¯‹Q‡iÜý&Ö¥lƒˆá½Åì]o= 7Äļ ofüЖür MEV@ƒâHõ¦èòû/èýaD¥Ù¦ëH•ƒ®®lK5)ÂŒZ OE´œ˜„3Á¦IG©'г;îD'¶zl(‘ ÷EŸÏÑ$Š.Ùœð-W R'\w+)Âw3æêº¾ù¸ @Û%RÔ)ÿ.ò~Š9;]ô.šg+)Ø%ÈökÕÎÀÒ‰³¨^ÒöN€W·>b1z:s†¨oD Kö²ºÂ2w[|>9â®vWMFâ¯uÞ`¹ëÍax‡chÕ«õU·`*ʆeû]O V'6ý‡ÀƒxÔd?¼H]_rõA»£+zÀd­F›¯H ÄÊ‹<¤…Ç´£ÕÆkUsFzÀºòÏaHÖÇ9-³œ˜ƒgv‚b‹=ÓëL/žE»)°Ä.˜½x9j%Bã) $—ŒéAËB¢æì ƒÛŸt b.bÒAE¨žZRböH(‘£õJÿyaãˆÒ9Wj0f¤ßF'›°Xàz¾Ã ï$DQ­6´ëžqƒØ` oÊÐ i=áÁ{#4¤©FYHù@ØJÐ3 3i~‘tYТÙhkH‡PÏñ×÷ý17ÓàॆYÜD—"Üp—Ħ;'³16€Æf—pu‹ ô¾>þF›oDÅQi¨náÌ’-Ïç @P#äš«‡ ¦h“j Þ‚ˆÅ€f´¶C– –ƒ7°”T5HVXÉpíöÉklÄ­Œ³®]™ÚyXrÆ)?ͺÓBNJš Bƒ÷øä½#Ë›9e”&&»_0•Ó=®špZÉ6§ªh¤Ù)ð Ì—ƒa bÀŒí=(p)‡âÙåí¬;Š.N•,“ÃWí^ *hÔºŠC—îm}E™7iõà‡6Á‚Ã÷aËIívͲxpƒ*Ac#4‚ÿýûŒ³Ç Nö&ð`)®Ä‰ˆ£H£We›ƒy7jl¡ï°oÝEh_n3 ­ ‹jp?ª4èp2WÀE'kT_ã &£°!È–jVl˜HíÓ»_kÉšáÈâöʳùaYùŒ ¡ sÎ@ä[…G"ÊÓbYÕLÛÜ«X¦ªi ÕC˜q8ñ&úzVaY{èÆ#I@µ§­2˜Žmó!ôdŒ[1 …AàÆ¢šÿnKèðòÕÆeײå/>ßdƒm†uX:xÊ·\„âpòN‘ûý©l+ƒH+cÇtSǶ‚æCÀ±[íà~3ŒÍeÀ}6° \³,ÎñÉ„˜×|¤YòÝ§çø˜§v]¬'û|¿žŸë&í–ìMô2° dõ¬dsàx-((76”©aX›½m=ÕîÓŠ¿ãQˆ—<$ªª€üóQ†˜„º\“ Ô ªqiéH阇¬‹‰i'i¤”$"£{S*VwF‹“/°t<ìÊÁáQ`Ê’Z¸š+ðpr)›(¹.jµé¸«Iük5õ <ä´ʆ±Ë®ÉÖ, kO‘‡œDTˆÊJ&^7º£‡ÄªQþ¤ËÏvße &žZØ’ ^4úÆ^s°ñD+`WHµ™®bì6ÙÄ©˜ ¸®ÈL˜W{ZZ ¦@°ämqáûv¦É·(DÁ\+Ôlåéû0*¥V¥ß‡°VmÕЧæhÆæØ/S`|³^\<-™„©Ã6ë¸2©N3‚" ToŸóŒlräÅe ‚!õÅH2 ‹pƒA Ö›¨ ‡ÞÃÏ{›È¼þ/£òŸÑçœudU2*2ò"c«Ì"p…${©€y, 饋ö&\àm¾&º`Ð|x ¦p…ˆCªÒw#ÂÉûW9D­IiñÑ–Cˆ›Ksï–ç‡S¶“ã3ï ,¶‘–þM›’;j¨þBë§4š›P›2ÙÙiµîïf¶®É¿íÁbA­]a¢idíÂðŠ­¨†"Äò×i!aQhÔCNO½±žŠï‚õYí “xF$Äøg—9ž¥‘Z`W«°…VBâg¸± ìÚ#j\Ë‚—¨€eùGñû [³.à¾]‹ª0º~X{2›D©„? Šø"óŠ3ÄBáj,ÀK~Æb#„0¬É’L˜kcÍ(6 ¸  ±aüE7λ/ÕŽ¯%­ ü±œ·ï àÉÄ¡Rë^JûëÅCÏZ+71XÛ´ÐUO,Á„öá}#-”eÙ¤ 4ö3Å‚ðítÃ8§™Z7†Îià¬Ê<:iÑ?Ft‹Fk–C W'˜êf0i<âXdj—ùŒ”0ÛW#i‹‹š–eCÏ zI7ˆÎB°s·¬˜.Kƒ  *ëÝV‘°«dÿ‡ŸDljö@ì«ï% ©Üˆå ÎZˆÄsÝï®sh̸%‡^ß ýèøÍ÷@8†ò§¤øÎ?  Nº8gÔGøgr¨X°€Sƒ» üä• Ap ‘³º4‡z*ö¹4áÝà§,í¹Ät4GÙnÔè÷‘¼õdSå>fî”Q–CòÏWUZ{SÙ;Nxå½Ê}°ÇH&º¼* ­9׸¯q‹šU1 Êó a `(M-aÈG}Õn¶Ì½è¢Ú0 –¼pÊÔÇmcnñŽ òð‚ɘÀ_ú\±ül¼ÞÛàþ»}Î È Þ9÷FávžHþkƒJZüNO å´mZáÁQžíÒ¤ aSûëfú )QC+2 d’˜¡[¯ý» ÌïÁõH"t*Þ Ác*bÏÆÚ¢÷¯q°¨,µ™óã#S˜Ÿ#¢äu›'Ò¬õ:4©as¥©¾CDMF§|ɸm©_Ã1L]öáY˜Ê\À§ý*¤XœŠ>tú–¯¸Ìg‹§ØD‰Ÿ£Šøèd@&[°)8ÃÎ;<œ{óÊ8<–È+VG\°H˜®¦^¯a—‹aeÝ-4”úsÚJÔA \à hM[‚\`ð“¼#¿pD5Z97g;²÷BWâmÎä‰qTXX‘%0¹vºžã†ù&ù·]E ¹Û4]ûFŸIJä¤ù–œ„&ÝSŽ_¦îƒ4ÈR‰0 ¯¥Dü+Ëme¹Ô¨Y ƒg÷ÐOøñ+M{”03Ïv'Í…f…ÁÅt¯áè :;ôØ±Ê Nô¦nà\Ç”^Ü,)1Þlãá’aBïZZÚ„[•à ¸ ûZSÒÒä¼UYhÜ߆ÏÊw€õ‹šS¸\®/¤*?zQЋÿ`X4ïg¹ríÛ[§ŠCWæÛGû.§Y„ì0Q|ûRÔƒ‚E[w¾¦î„yƒ)¸áï‘,шï$ËNK@c/b -#Z¯I ¹G$Æ—¯™‹tmçÊH#êð)X£wPZAD|¢S oýfŠõT¤€ÝHÚë)¸ÎäÓçÇ>ªM1 b 7á°…ɆS‹uÐÃq× ö·öjK4[sð„‡ •—×xL ›Ö¼Ç¢©ë]5 ú!M!A¾dƧN Ë><«:Ç»Z(°8†ø)e… „ß »¥™†/™WØÈÀ| ý°bªØéˆú<é÷œƒ®T?%à ²:@±äÔ,-àø€ecMPð8u¤m°VÐgŒ9Héö6®Ëç‹}¾=³5ƒ—AbÒÄŽæýÏ찬ΙÀV:’…_ leÉ¹ß ÏÊî–•v ý`Í0Žä!$`GÁéA"I;$ß^?ú®Ší‰Ke O¢ Í÷³N(Õ½çö“YyÊ5Bç¡w¸ÐV¹%ˆju;)lFµoaåìË›7óxéÿ’Ú¸Ø4-‰É%ë †ð$ÏÖ¹/zskǘ(sh>»ÁDD©ÅƒÉt¥TÄ7örurÀœ¸0ÉÒ¢ `Ü´h5 5Œ¦Éä¶“Sá}¸ÑÝÈÿÒ4hrva¼éléc!ZjB]¹Ž¦©ÎxâD¯¶ÿb–TxzYS‚ß6_ö)ƒÊo°Ôp>˜#@P¢SÓ*ýbÜS\q Æ‹xñYfQ><"ó·²ã¢ Y6‘ÅòIEr_7ñˆÒ° VÔHÃ!³ÅIçrŒELçŽ6ž!N»öq"'’d “aþqMvºÅ‹A‚%íõºº¾ ñv³í½Ž nð.;šëA/Ïç°ô2ʲ‰œa8D$ÿGWv…#Ìû 9®kÅÅ'ü‰ËoØŸœo€@âýÌ (]gkí+}/ (nq‡ºìK(f¢ÍÖ ÝÆŸÐ¸žpüøÌ2ÔÈ3Y°ãÝéw²pDþdG´q2$ÌÉ}‘KÓ¯A­"öE&N‚tg'NeýsÕó!Юð4qìœo}ì¿¥Sµµë,oÕjr/s œTþMT—&öÐðQf\12¡h'&ctN¦ú'TÅx7¼]2û ;GÍ Ê…ë¢ã|Tª++:%/ †è¦ûгÿ1T ‘ÅúÏ“ óË€Ÿ<ÔñÌ4ÂÓÔùŠÀÍ”×ÿ“Ë— É,0~áò!¡W‹O©à'‰ áÍ:sñuÈÆÊÒ¦Ù†ù(´^ﮎ µ¥œÂ)˜ø7èØfÁ€Ñml¥òÒ¹î1Å«tÜÒZƒèhÀ ÊL0 §£·–6ÒX"JÒ‚í Œˆ4§9ØÑ Ö©Bé}ƒÞÔ­`è`‘¥®ð„Ó’ç #¦JÞïnéäôÑ_‘F­ H|š¡$OÈKÎú=¡Å“i1÷¡¦7Œ”o-HËq¡ªûp[É«%%:ˆä€Éˆi3Û ú„G C—LL‰4ŠSÐ:ždBòj|‰ˆpYÓöSþDP>¶pÓvÞ²5KLeè{t0®ò‘yÇEND$à*;z»5šŠN’áBIóÙgnŒ€.NÉ|×¶àÑnДRÈaS¤Z×ÂJcH² mÍÑXøÜÊßek;_ 6È,yÊÂb”0#¦Z„¸A e|w‚ÔÌG U½1l¸ËLDØ7ÄV£q’Ýt[­xuÝE”QULˆïðPBlZSh–’.áé1Q0UìÙ±8R„iúp;¦ñ{óôH#–GON!?ë£èt>©Q |pÊk¤Ûó¨q!çgT,öÕjÇÐ2ÃÈsÇ4툊t”jä·nÆ›/IÉO˜E!Ë‹nFõ›4¨†·ˆM&Ô1„’—¾…xÓ$§ew+v™SðË  bm]e%8 ²äPÌ !úﳌsÂó_06£ò)ÂQ´2JB†êØý „[t9®–ƒ'”§³Ôœ,§¢Ìô[½fÆג¶]˜ÂBŠBÃ@š¦îr&B„s|•Qš °§™×g¨íOCˆž1‡ÜJ Dç<ÌÏâUÿ‡²Î¼Ó(o©!³h¦ÜK½Hüê 0q›ˆ’§AÑVˆ¼'p´fÌy"Q O…Û 2ÇZ»¾ŸqÂà½#d"›@bQ»,®“ w)îPÍ\b`xŠßOþ)Þ¢ d¼MC€$[Ho¤WÞ¦Ñva4{äDZ`52íýº‡³5;‚…X°ÿaoK†;˜6“%ÁR(À‚ŒÓÆÑ…x9Š8 À2rãDc÷¥@ÙˆŒæ¾É¤îF×<†d(ÈAN#FI·ž›zmEþ‰»F=©±…Æš­å•S‚€f 4Ê8§<'´„íjêŽô-ª˜Ú'ǘ<ÒTbñ2Ýv€EÀt¸¿q¡Ò3qODd_íÐ{`/œhhê‚öÌ`Â’9_ü1hAY|/ùë «Þ·Uê-Í•ºÐÄAÞ”Õo(ñËê"“$r؆TÌ×PR;§.¸-w>&LJøiC`A£^±—Ó#‰€ÄX8—t—öâH?€dÁ¿aÃÄ–TSTÚa¨HŸ0@ÒîŠðóU)ˆ£æï^e}Jb7%×Ü”%:›ÓÆ¿@—¯MŽ+ñ»y”sqŽª¡ëLÌÒýø¿á ÊYª00Ô÷GüD¡ >Ä©êAW ˆ¶ð2IÛ:ÄÙF žÈÇš3ãŸ2Ê íq€÷À”:6S•—ŽÑ]KÎÏ" ¥®g[¦ åÏ‘H“˜âB¬5ÈVEqÛLJŒ•X{C¼ˆ¹§B½ÅÙÒ!¥P«Iáq9»øLlx–®Êª7Ò>Ö¤–Û]@Õ!@9H”!ªíäÈpÀÉ™Õ$ â?ÞÕ)›«Üލl°/"±”ÀÌ–¯+“@`}}:\÷•¯Ð 8•zQgS£¿+ò’¤¿Á’C„£}€R:ŸõHþUF\¡Xþ’göÀ/âë€AZ%c1ÕwlET–wX  ZNh¥ …Äyf2DÆ €Ã¸‰&v®L“qî4Æ7•ñ§ûÊzúð\iJyÀèJ-k¯NÄ3½ ë £-¼s‘ÑJ5‰—)ÙV0™N0ÝdÚ\Ó›d0d-©ãEÚ[mf£\£UmÁx²ÒÒC«R<(`ªÑ•æƒp4^!hÔQè `¢ù!l“ ~Æ™ì:J‡É ñlüW±þ€9˸ÌZXB=ëÈl)`jžªeVJ³àU€³†G!®sØç1Ô?Ƽ3„¨ÃŠ.³}bIaÙê6àÊ• œt?èÀ€ÞSxZJ'Ãp ië,¦.ˆñ¬ØR2T`5˜-R BxræWHö JP°e#Bb‰|“¯”-±þ¡ì‹[²„ ÆäPÂâý…¤¨Eh‹±³Â‹(5Sœ¢•fÕräÃ/]˰ÑIÆŠ ÌÖd”ÞE#ú¢O®Sú3—9Ó»]¸º³€e‚¿Û®Õɹ.9_Œbêe§æ¾MŒ´9b#e©(’¦-ˆ 0§Ò×Ra±àÆ„9ùº–ˆ"þ‰±þýýU,áÂ%ú~¾XèÜ€ö—”ëz€Û½{'6[@„t[W%ýÑ* .d'vR {”ÒðhЦ!ÞAed’CªE}»x=E[|ïB$7J¡* B-á ,=k7”[_¶ê-ÐIô– ¢«€’‡J5eÖ̶Ä´{ Èí( ´†;WMw§`«°€Ë~pÜA °z 8‡îfæ))âŒâÂ(Þü@ ©ĪÙ……Ù<áî…ä.a%N òìné@bz­Ã‡ÈÑÀµ¿>Àëô%…‡€T*?lgb¿döÈ<‚ĵãúÀw9Na¬Å¼8;<^*%›yÒ:tD¥Ò•Z<@ü‰0ª¨«ä‚q4±äÐíl\ –†1†îÉŸÓ`/ž$IJ Ò“sN)¼;:A;’)$ו °Ww¢y%KrÞIv\b¶V™£\n­d{ÀÞôÈ6t»ví×/~¢ü*OÖí 7U>£8ûr‚AC<ºjéŠEâ¢-jçØç‰·¨üxsî)ÌD¢›–1¼ÃŒ/ÏÊq“p**̸À$Ù‘, Ûá ƒ³BõȼpÄúk MhpˆKê7ÆUè¤Ã]ðøáh&„-ž$ˆéŽ»¯”“Yê£;àqËé6w•zÝ÷ÖWûî˄֭A¦h²ìDœ‘^RöÞÉ"­Æs5fýüîw ˆ¿ä+çQ&’/9È‚–œ¸wNbÇëéü­ãü°Øz{娕ÓþYÅ> ]NEÚÁ±c,ßž# BFý:0ÍØ/-EȾÆÂŒÇ׃ëF\êŒôäI§{tìäA»Z‰C™ORÃuk¥ iú”ô)…ytkdN¸&›v§A±™ˆ P{ÍÖîôËP'šó’>ÈêàxàÆ†`.Üä%,;:Ô¿Ù:Ž©«­¿íaFñ§oTQ«}v#ôìš×£‘öÚQkèÆ'ÝsÄÔÓÖØ÷~…µÞÍz5hMÄQÊ’áY>C…èÊ™„è¾i·ÌU± ÓNF#J0uŒÎCðäð8k“! f«éì§v ¹{Eñ/ÏëæIKIEË> ºp·yd†Ìe ʾ”=zô†:@7ÖJà÷ijÌ|ÆÆ5g8Àîx Å3çO±Œªþ€ÄÜÜ þ3€H1‹ó±Ø„F. y´fz´ìWIM ñÙƒÆj[.wæ%„i?Ò†UÂè©f|}@+[8•k7Cx¤˜S…íEOÞ¯p $ä—üáç¾Qæ»+™Ê:¸<á]¶¸Kâ3‹T-y²ÂÍ[NÑÖz´µ„;y³Š¤-HZþªY^¡Ô.¥M*Ô'h8ÒíA….°Nï2r‰œLBœ 7:Or’©}‘C‰SËšS9äJq#ì£WI}*8ËD!ˆ¸# g#Y>8`• ìÐ’Âñ ?a…2H,^ñãÄ'ƒï?¸ÿ^¸ˆæ§nƒhãOÆ’­¿i<ѪæÝYa2É+™üÌ6a°F±âa<Ì!„Û0¬‰2½]c:ïe¼K¤¬X˜X˜[UgéO¯u5iÔyPcVÙTºž5RIúŸA6òOÔ¸i ¤ýCŽ\‡ñ…—ãQZM„DÄÆƒÓÚÏB!X–Ä:ôÐã\!Ç^Á…"{¡E Vax$P \$ ³DBBTÞÓFtèŸ~™Ã{O‡¼ wïøž5a#ø`«=g€Ð°Yý2>‡±MG¯-G­kèªÛ1T¾b¦ü…L ¹`*Ù€«V¬X ­Þ*¥xªe§֊Z*c`ªVÁSÕb¥ºÅJUŠ’ªÐ*6 TK@¨zqPÄâ¶ÉÅh“ŠÇg†Ì*ß”U§(ªöQU4‚§9L’ ­cMÆ*ŒT»©R!R,B£È…E°Šˆ ¾*C|TzøôpðôFèô@èô4èô*àôà÷õ±î±í…°–†Ø¬á±Xób°€L€.™T2y`®ÀUpbàåÀë ªT, %@`äÀ è€# ?@t€¤øGLˆëÅžSÀ)öžÃ¿ z“ÿtϲFy׎ 14LhŒÐဃf™°ÈeÀ(.)pK€@\âà —X¸e@Tb v•h˜DÀÅ&ù0-IbD‰ d@ZD1¤@ ‘DàyÀ¸ó€Ñ§CN| 9Ü4æØÓš#Nc lÂÀ°;¸, `c‹XâÀ³@(„2$0 "@- ˜$èB@‰<$ÐÁÀø8p7C¦ €àbè(@¥ PA@…F ¸0Àõt‰üœÞ‹äG­éÔOR—‰éIJâIïTñySÍMW52\TÆoRå¥KV•0ÈŽ¬à»‚Œ( - $²€’š€” ¤!6¦„¢wˆêH¢©†£ùúGù­ O r~àe~/à]þ·àV~/àP~7 Szï Kú— Fv`;ö¯`9vÑ# J¤Ü§BÍN‚,ä×ÎÅÓ­²'°`¡'â‚`\LTþðÙApBs)r…!Õ â( Òi‚`././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woffHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-re0000664000175000017500000005560013111777164035753 0ustar abompardabompard00000000000000wOFF[€±\FFTMXm*—ÜGDEFt DOS/2”E`g¹k‰cmapÜÀrÚ­ãcvt œ(øgasp ÿÿglyf¨M”¤}]ÂoheadQÀ46M/ØhheaQô$ DhmtxROtÒÇ `locaS`'0oû•ÎmaxpUˆ jØnameU¨ž¢³, ›postWH- Ѻ£å5webf[xÃTPÌ=¢ÏÐvuÐvs—xÚc`d``àb `b`d`d’,`HJxÚc`féfœÀÀÊÀÂÌÃt! B3.a0bÚ䥀 ‰êîÇàÀ ðÿ?óÿ@u" Õ@aF$% Œ1– xÚí”?hSAÇ—¤iSÄÆþ‰mß½44±­Ð,qÊPKƒ qÒ ÒXE]²(2 ‡.¥Ô©ƒ]´‚ "EœD· ­¥¹ßi]DÔ¡ZJõù½\µº8ùà“Ïï½wïî›w¿„ˆšˆÈV"±F¦pUÔ¯û×â.Χ(ƒg’KÃ4O n«;âN¸‹îR{¼g`'!ÛÉP²MùUHEÕ J«¬Ê«‚*ª²ªªYq”9Ícœå<¹ÌUžá9Ô!ÑQÓIÖY×…-Ïó°¢KCõ•è+ Õ¤ÂÊU)•Q9¬4©Jª¢¦Yp˜]Nq†Ç9Ç.q…§yVV ën¬×)Ñ9»’÷Ê[õÎ{“ª¥öºv¿V¬å×›Ö¾¬ö­FWb++{Ý>·×¸a|ã€ü*·ägùQ¾•òм,Kò‚<'ÏÊÓò¤W@õExÌ¢¾DÄÈÃ&ÃUØd¸#› ËÈÀ&à x õMx˜<·aäa“çŒ,l2<€‘M†Ç02°Éð6óΠ^†‘…çP¿$Ò6{¸‡,´#›ÆžÐ{ MÎwpÌBïá8H¢þ#³6™7adÖ&'~‰95r 3wÁ"Ð[žEt’ØÜW‡:ýÓ­:$"ô™>2Íÿcÿ ò5*ß.ýlŸôÿäN þ/öÿøþhþ‹±Á]GtýéTèßßÑ(øÿÿxÚŽ |Õµ0>wÖm#Y¶e[’%YÞ-YR'rö„ÄYÈj¶°D% ,@ØBØKZjHÙÚ¤@b¥¥¤-…RôÊë+¥nûhK›~¯åË룼–¦¥$Öä;çÎhµèëÿýþ^fîܹsï¹çnçœ{ι Ë´0 ¹Œkb8Fd:Ÿ%L×”Ã"Ïü1þ¬AøÕ”à AæY£Œ>,ÈØ”Ã㎀#œp„ZÈ4õØŸþÄ5maßd“e²ü ?ÈœyÇ=¤øI:C‰Ç “DÜãõ(nI¤xˆL ‘.1¢!„P'™JD‰t‘Hj€@L4’ì…P†ô“h' )ÈbÒ)vHŽX,fù1Ñc\'²âcGÍÖÀ±„u˜>ëŒñ1Ù ~Âtüà?ññ„éø!x¡øÁT_qâ?qB‡ÛÐF‚‘¤#ŒL%½©DÀÑ›"¯ä?Y­øýŠºÇ¯ÀƒºÈj??8>NÑSkem„²¦AY³µ²Db¡4 ÙJ)¤•;•@¹j“ÅP$ ˜ï'qh®8`›ë;aŒêXÍÃ6CùFâ*„dËYýcá±Ú"ÔŒ‚ù„Ïù£Ûø'?hÆL¬Vã—ŒÖ,½>c‘eË3eV¹Òh† =Cû‘Àš†éÇ~äõxC½\((qb@ ¸4ð‰x†K&h×Î ¥©4\2ºÇ±6N1|-Ô;­Ïëj›ï–É YuÔ@†ájêî›Ñ«xú¦õ†ži¸äЧþmKó ëÛÙDøEöw¦q3ÿÌ·.»¼cAw@¶4t.Žgãñìükg´Ér°{~ÛÓWl~¬{ÿÖlW2»êöð} Ã27Ð6a2Ì\€6o”z@³$´ñ¡ÞëHÄSÉÞHˆ «g®›Ñí±bõtÏX7ó0KštÔÞc1Á,«Õ7—Bò oLëè˜ÆÔ6Ä·6[,–æÖ%ñiáZ ¿‡,’l>T†pòK³œSGg¬\> ñ#»øAö#3Œ«ØEµŽy‚kÂî6v®ìÚçè…Áºç†;u3Ó!ZIÎ8ì˜M†k?³8¶C˜£Wq{`ìC*‰Ðh>HÜ1¿_söÙkâŠìh)œ›ž®ojªOO'» !~dXñgÏûB(ô…ó†ýÊ0< kOYxÊe§¬©±Æ§Ä­5k¦ —=d ã²ðÓϧ> íü+ütÆCç-o Ǫ†„/äÃõ_koïܶÿ¶¼sñÕ+f°ÿÎOßz±tpÛu7-™}…dõíþ9Å sàˆ©e Œ³\9.H4’!0¥S\ ʱk2™ï"?ip7œ\2z§ÙÔÔlÞ°Ñt=¹î…Wùç\!ûKyOXimUÂì¾nov›ì ÛÇ6²:½èå 2Æ óLZkAýAÍ^âqCæ™Þ” &PæˆïaFÆê¥Iª0Üã>þ&ïù…Q #F£Qý»Ñlæ> A³·q*˜O‚á­ýãÏÿ‹ÑȦæ_@27¦ÌlÄ,¨‚sþø‰Ñè¾fÈ ¾6âp7üÜ©?úÿMþ›Œ‰±1vˆA˜Ü2‰¦]$j"‚‹;‘vÛlk~va0¿ûgì¥j£úÜzþ›¶ÝRD:ÿg©×濱cë6’ÅÅywú%ôgâ(þƒØ#'´ÎuBµò#ì=ù_@?ƒ>ÆFØýVbŒ0žaá!¬aL4tXv¼¡ü:ÅFööh÷²9‹ïj^µxÞŒü¾¡ézÐÏ}´WnŽ}7}¶×»j“¯ÆÎšÎïi½H©­¿º¶ÆÁÞi¥ýÅtêïüKüSŒŸ‰aÍXEôºEºbbBQ1ØÉöf”t‘x†ôF騆 ·-"dqA÷ׯ\ê·~F`³»è6²iä•+À ÿÔ¢Û^ȲÂ}שï׆k&»ÝĹ¾»íÈà<- \èœ;Äâg1>¨w†0Ü0ßvòÉ^x ìÝÝ7lÛ<”šyÝÎ}™ÌS·o›9éÜ-Û®ã¾6kžÐ±lË´¾ën¹ùðЇo¾åº¾i[–uó—§~¬æoà`jàÁ•Š{i×\C4,"iW8’JoñVò„bp¨ûwˆ²Cýªºß!‹;Ô'7×D.v¹ÔÇÖÔ n‹õoZ-n²ë¤ÕÁ°eùÏP‚òŠio4Š~LYä/zmþw_ÿò¾ØìgþϽŸþý§RÞÏ"tÞ Ó&NoN€¥)4ÆÉM ³CÛG2«‰\j²Ê8d-É@>#ÛOt^¶Àì5¼+x͘e.^á]ƒ×¼à²ÎÛG 8›^æ ômŒ÷(ÓÆt1 ÷s™Ìbf³J›°ßÒ —%‘Œ‘ â<‰¬4ŽÞHâø”ÝÅ@ešê÷8CÈÔòŠ,»5<Â(—åk²c5Y®I¿þ¶ìÍØ—âùAøú]|Åךål6+›Õ=øHVãcb´KÕ‹B´6ßi4• #´‹_Û©|&ó>NvQŠk#®pW•=ä¿uº7”ÛHɰR$ ç÷î ³[5ì‹™ ™ ÌÍÌg¡ ­µé%ð1Ïä9}¼°ÐûÉÇþúÏ&@$&¸¨ÿ¹÷Œ¡l¬”ð=Ó1RIñò}9æØ#ÎÏ‚«zû??1z&®ôı_aÚùc|PŒI[íÝ:uÐ; ¯þäÇl¿Ñ->k4ŽýæGõ£ñYÑm|Zôwà }û“ÑHnÑR=-B¾ë™õü ~åm¼§‰.Ù± .ÀÃõ¦Mz^,—»ë0%£ñ°Ê8®‰Eý«G¬Ä**|ÿsg|oÔò±ŠÀ¹zOýÿ¿Ö¬0s–¾zâÚé.¬ãWN¶^± ‹„yHk<v3t{8-Ù|Ã' ø«eêøa~ÖìÅH94²Èx¼¢×AÅ-³@üy bT4@0ìb#]DŒDÓÑ“½lj€DSio:AgÐàöÄS½ìP z:„;¦¶-á|yH"r ·¤{ÒB{\ˆ´5RLi‡6öAƒáAÖæã–tM¾]èèÛßtÓá›øaøRò±KºûàËC¤­!Ø1ô´CÞígCÞ샂ð +ù¸³1EG·!ÒÚ€ÝXzû––®î¾éÙ›nz–µvÜ@±x™ôíô›Ê-#i^ Ïxñ*$)®ÎÀWü’ã¤=ÖO\fùäó€[WŒ´“öþX~V¬?«ÿîþÐ `Lei¬::v4Öß$?‹=Rþó˜•a#ÿc¤÷]8YåÝFJâ™b&'{%LCìEÀÏ¢­‰Í ·Cf]Ç^$Šù/ÍùïÒfߪÞM;ÀÚ;«óÉœ… ¥°Ê„6ù°CXÕV¸¥À§ð#êÆX~ FðƒÚ<ç :þvC¿¯cºµyBpLvŠ£¬Ó1ðÐF”v#ß9† /êö8VFë©01Óà­_Kôí?Êæx>£}úÔ#€G7ÔÑ‚\WŒp!.@ü¸îü»±bùwÉ¡+{ÜoªÕ­#»ÔPÃQÒ®nÄ«66 cZ­çD‰¡¥â’Â(. °Ÿºuï;n‹M}ÑÁ‹Åý?»œ‚ªžävÊtžÉxíêF»ì²{É+È–²ù`¢ ×=Ÿ×" rPÏ€l˜DîV̶ߤ¿±™•»?ãíZ@ë¢Hÿä°…]º[˜¥3Àö5€Ì%O ¨¼ê)Þ\^„Ñå Z;ú˜>F÷ºtf›-IºzÓ® €çŒyúu1Üu™o<å:Éoa:uqß‚Õwòykk ⋜‹}0?jv²«X+ÀèæÝ}V»›­ïäG$sþÚŸº ?2ò6ùª¯†ý´YÊI5c‘$óCfýb!¯X¤*|FÏÔÖ^º$Üpº7ïpäí55§ÅÝß¶6[¿mµàjg¹¨°®¢l>*öñ KO& ±‰8÷Ü¢:ǰ…o¿êÖkõ¢‡Kåm~™o¾Sä-*4¥E¼}P/ûÚÍ%  k:¡e×"å1AéJˆ–èÂâCAX𴹋Š8= LƒÅ¢>°Ü±a¦åÿ—v{ä|K.3 ÆÛ×:\B¬xǤüwðºå˜bÉeb€Ï>Ö1Û¿v‰HÅ?äf¹›58Ôó †þ%Í6›$ɲÜ'p¢L^H¯âXÎbpI’VqnÖæ¿ÞéAé8¥åK”g'i‚!Uz†áSEšªI×ßûõÞ5Ù÷ýN=ñ»ûhpÍÞVÜ?¡›(ìEÅ ÿàš½¿¾V¥³rûÍ?Þ´éÇ7ž®ýõÞüËV£Ú‹‰É¿âµ.´ãOø¹Ü;°÷•¤ Ñp¤ 4žNéRZm.–OÔø> Mu¾L'¬Éj5©ªâÓ`;´Mt‹AQܶM„›ïôyëVí™ë<`‘’ $m)Þyš¤Ú³ÑX„™ÛDaî:Ìáݪšq»1JöFq³15¤ä-Þl¸è\ƒ…3‰~X¡æ-2pFÿDðe‰éÖ/ñf!¯è2®½iç:à“=Ãhýà{ü%Ü{t…^€¶ *ÄPˆˆ…ðBͽ]îÎYÓD3ÀØjd úÓÖÔ*æw|âê¼GLϽ}ùË‘k7¸Ã‡Ï=0×ä6„o¢z*­ž¶âzo‚ð1~Jçw0ý0SÏÔe“Pw%¤”#@BJB À  %Ùø+„’ ü'¸½œÀ;¤%!&©§ )ðHÈq î7fÉqöH.§Žæ²ìÐÉç!ØEÚÇŽf³ì‘,ü9Õšƒ$9” æH{~iž€Û ŸZ³ð)O|‚!"‡üD.K‰ÒQ a2Õ %©£š2WŒ¥É‚\ëŽ{é*™õB{7â,˜9.ø'ew U^¨ƒW¯&Þ$»r9¼µçrcGõBôçwl¬¦òÿä’lö<üÑú¾™Ê·îSQÂã‚…ˆhì! i¿Ñ¨vãîÎJ :³Y?üñ#ù•¸_Óm4²ûq[ð‡ýýËûû }×,¼EóõA{VåПºˆ‰œ®ÎP|žDöåg©?9M©ÅÇId?{¤)®ûÊ/ÂðÐ /\[ ˆ«JùÒƒ¹ë[àœf4G>ËÁÌÁQ€K ó^  Œm×â¹ †¦›O—Çù -7wê]ËÌê„ô<ÝU3jÆ,ÄÉäˆ:“¿Y“µqÅ~ 0³™/¥m‘¬Åµ@CŠ—CÜF€q<·é’y¤xËhúŒõÄ\ôЦ0=—RgYìd‘(õ¼(_ð2’¸ŒØÉÊa³‡_Ä{p·M …T*¡‹0žU­”T¶˜Ù!³if$ÔŸÔ(Wâ¤q¥RC:P a3=b²Ñ rK1'-»{ Íö•HèʽHý1Êá'`Ùkϯex¢$’¼.¹hŽ{܆`¤Fé¤ z›EÃ0®øc5xfMÑĆä¾}çß¾Sýï•S¦¬œÂÂKÅ]Nëf'ÛpPιS§`BmmHÒv9Ä4ሄ^ìm D $¡˜Š,€'Ü„ „ pìWÉ­îgØdV/L¶;–ª×MZL­ñõó“ê­µ¢H>{€,ßë·ºÂΘ±ªã×÷Ÿ쬷ΘQSo ÛlÜûùsÉ¿hýùÿ?A¿ˆ2qªÓÐ`ÀÝ5 ƒ€œZ€&*ê“X1L5:Ù6¢ë´öÏ‚+ÙÝßêO]ue·jõƒÅ¨%?ïÛ¼&ÓØÑaW?{ï¢Ë­Ë2[þ}ÉÒW?ÎÞJÄbòÒΙ›¥kÏ-\»Þb7‰sIì¬kf&ΛÜfê¹x~¬¿·nì™O-9÷VÚçÎ ”~cˆW"È—y)b\)„2MrW±Ëfˆ;MíóUë7¥ƒ'[¯ÍÀô¹’-c/ö´.¾Ø¾”›æ¨uÙMèþlŸ&øš.Óõ9ÔÛ) GêÑÚ!Ã!W* ¸60CŠÑ„#”Üq£ÅçŠÔørqŸOÝÈKÁZOÎWqù,Æ8Ì/XpãðÏíTšÉÈ‘±g<>¤)˜‰[J8£o` ;úÔS\ÓSЧ¾Æö“Àá“%š†h~ðÌpÌ|J˾F~Kì=E0Nî¸QƒXßÇ©ÞÇ*çþÑç8;D7öQñÑ1ªµQCÃ% *E‚yëy}ƒ¡ UG?>üI`æ>Æê÷'Ê6<ž+ƒíÓÄÿ3IVògÕÏ®yOŽû•ªQ$WBv®ÛH vî…¢è[ýÏ 2ÿ+ý£ Ê'ÿø6N¸ß†<úÿúžÛÇîÉ•¶¦— ‡2”ÿSñ娚9ÿ³X†1 \•┣ûý­Ìdf>ÃBŽ~¶²ÊÕÍ-ˆ”t>¦W]Ùìp©PrœîZ[±²'žÊåÈ+¤ÆŒâµl†9]ï8qã‚ì‚C§é!Œ¶' ë@AA¯OuÿÐ¨äª !?M\…JMÍ­ÍfÇž)«ß•Ë=õÔÉw?A•N>Ï–ƒžË¼}újQ<ÇpÇ ^Îñò(»€}¿±½½1ï„+¿“2Çàq F²÷4R¾„´iHÄ—îITër8ÒÐß^§™Úù!gm­óä>¸Îÿ´Î'á÷ÆÞÚ¸hÑÆEü`­sÌŠo¹ãÎÚl¾ñ…Û!õ(9~í¢ ‹oÐàþ%#ð)þ~ƃúj$Þ@€Õ”ˆLp½GåOa{é®Íß¿fÎìé”)°zèªØ”Y×<þõ¯ïØñõüýÛ~°ùšÏ^õŸcàÒËš·sóÐÞëæ½ºã·Þú²ýÂÝ´N•RUâЛÕRÔT”Y%8ÛÀ­¤òKÌs3Ãq¿d]^©QTb' œÄzx¯)îH´“FÒ©P„mUÎZ¼jQ&œX¹ñÆåoŸß<0¸jÉYG¼±ŽÔzê]ЇþÙ$8cÖÚ&ÖhäyŸÝ¼õšÍwΞ{Ëê9^˜¼æÁsfß¹åšm[våÕÀ‚“ÃÓ£!É(ZíAsÈÛ§ÇÎyÁBмÀü•Œú8RiÔ£B­g6ˆ{ËUm¦’tyW!bšpÇ®d nÅ/yÌ‚áʼ@vÅÓ/©»Ô%Çcý¹—öªŸxñEn’:üå4YÃýõ²¼,yZ-ækr¶—úcH&öÇ^È©ÏCº'È®'^T®Ç÷“5ºœîóÐÇê˜r)(Š(IèÒJ™U׌&#€ÝŒ! +YM.ÿJï«EX^|‚ÂÂÞL–«w@´Ú¾ìò¡ZsgßYÓæ´ºˆ…ü\ªÑîµxêÔŸ ²Á¿xÓ„µyºý—LïõCyo™…’<ñQÊO$)÷W6¥m%݆®r݆Õdõ”™‡Õ½Õð’{¡üO‰bþpÿ»AE܀ʌÞg ÐÎÎý²ˆ¾¤§iò~ºA¤¼¢™òßO"mo*î!ƒÓ[TÀœŠòm¬dHÑT1Ó$… ÉPÔ4^ÌûsfcA3·ß,ˆêXA­òPŽêbâksîYà†‹ šyHˆhýPäÍËâ+b‚W=}¥Óû;¿¾‚µ¨"Z&x<SySVYíÖ&=ªþ4Ÿ¼&‘è1Jä5u~è,Ó¿¤zïeù–g^QB\/¡PÊ„%+p‚re|Pn¥ ¤T’†cZ>?¢çï–eòžV"_[‘çQ©/…5Yãá|бàqI£ö/\§Ó9ö–Óçããªdi°ÀEBh$ªåvÒõ ±€…Ó wOL¤ …êÐúfpa ¦,?HógHùf2¬ˆµRbî…²L v >ÞUÀSo™–°^1/,šˆÄ“¢vc«°Yò GmôÀŨÔ~¸Amêzª Ë?Ç/¦’ÿ4ÔÎ0‰‡yj̸pák²î¶2«öH «ÆeE€RßbéÅÏ/"M 7ò5u²lÂ[ŸdrC‘&YÍÜ&I `!>pû˜;¦õåJ-bàÂ--.à´VäMÚÅ4>©¼Fj¿–/î5ÀºÎσ¶¯£²ƒ¢Þt5}Â>Cþ*›<'ß÷˜dµæ?,cÂø¾üïdGfëåü¼2Ò0wã6óó˜òL¬h"ÜfõKä¢×òÿζp;ÕÇÕǿ϶PÕd¨cÿ©1¾EO‹šÑi¾%ÿö÷ÉŘ(DCäâïW¬·‰ªõVé2š„I)ˆTöiÃM›êµøFTÛz¡0ëÁªµù›U¯õ Sµþ7V¯ÿ mBW6;›nYZU¢zSÏTg>(“h……îF"âÞ½Të½·‹¤ñR]çßûLÛ¶™|¦ûLx‡[Õs,'NU|®€¯¹Eà<ñ4)«R–‹Š pß*ЏvU#¤gÄÃ*ñg˜ò·jÉ™*=~܃¨ìA‰SÜýÄ“ÎÍîA J‚Hwä3@Nur®bw™°È€ÊŒxÀ}[ƒ`ð7º½’‹ø¤Z§ËÊ›tPlh Õ³¦L.)NU‚}¿¥¡kqÜ'ØÝvÅéõˆFQr×·úŒ{ˤóS]óZëLùÿ(×@ã*úSfÂ^‚–+uöPe_k#Žñ•.É8éÎÉ‚%Õ ¯,…ª@•›£TK£¤Ñ…º§Ÿ t`‘ß‘ˆXÔAD;¦‚b†¤|pßAºâ7ð}qÒ¿é2 @Yû`Ý~¥îÁµ¶ŠˆiÔ¬K½û0jŸ÷ÒYÕ( žøÛR„úÃÓ~^ˆ¨Ò§8ƒ>…è=ãF"šËœA[å‹ÓDqûvQœCîŠXõ|Zõ‹sO÷…þ \ä/Íf.ÁÙÕä³F;ÌæÿkáPñ•ìb‡d³z7ÔeͶ-6‹b²y¶ØÌbÀaWjnh7YôLáFû!½4ƒÀwßâssFCºnh–Ì_0óû…’> á±M½Z²« °ò‡€ïnC휌 ¬ÄÃ*#5/OöUÑN\(3oÄ@…[7`‹Mg8xÏßg¬e;f\yñ½—|fÖ¤©Þ‘¨Û]ëi5®¨q5q&Ö>¹'ºôâóï¼áå°ÑßÙ353éükÏYê­‘œß=WŸ7çâ+΋yxþIÎe<¬¾“ûÂPÃh±X aëêv׸‚Ó"ÆùŠcJcú›oHÌO†Cu]³L5‘®«†ÔÒÅk““¦ðÑ–†ó¦õ„§]xóЏæŠ ˜~ÿ#ª;!‘ÞÛ)B58¨/P¬í õõHšÑF#0‰°B(ôÊpì}ÑFstÒÜM|¹ÆlçˆÉ)]tϼ&ƒÝ–™¿,ã™—nt,¶h[ÐäY4ݬ$žwQ×’µ,Ë ž@‹ÑàÆkåš`D”ƒg]rÿ£™·|êüY}ÍVq’wRC*ÔŽ9[o»ÿ©ç§×ÎÜdðX 6Žš&Í=ÿâÍ}—íß°À/*Í\Ë”)³ƒÉ5gOò˜lÓ¦¯¬Ø}ÙÙ1:>OýŠYÇòs(•p6Ÿ‚[‚B/tçˆ*Ì -n:±½ <Цðøè)Èú ¬á+Þ°~q_}ýäÅëoxt>L®¯ïƒV– FßÈßG¼@dÎ9ׯ[<ñs/¼í®Û.<7î±ðÖsó§B²ÉždïB'·wX‚üœŽ³Î¿äü³Zéµ£üáW²ÁÕ—Ù>2²½?í2ȳ¯±÷8›ç¬žÕÓ={õìfgcsC³ÜåœÕmãå –ÛÏrâ¾õe ¾#Œ›‰E>ˆòü45µqo:áJ£Öì¼X«°^ioº“P,x‹µfµ:/y ñ¼¯n9§VóÑ¥S§7=éºòîè’u-í\¸%•KåϦUv¶Î¼,»â³€„íÅêZ=Öv›ûâk¯¿¤NÑ*+_§.ýÚŠŸõÖž»iýšÚƒ=w @¥æl¢m˜röô>ÛO­ÇÊo,VÔ²’×ëÉz &:'ÿ4ðÎ5¨Ó…!êÕ9èpI 0@I[ÍPU""©sÙîInv‡R>ñA¸Ž˜É9tæ$ç¨3/«š³|k£8y´iE û“ßøÝc8óÂE×!Qè\Û‚} %Ašf4ì s*®A8¦‚A³Ø΀Ü>D®=5uw¶Öõúj³ênG z?2”Qª/I=î˜ÛfýHýè÷4Ånºå“]™æ¾€ˆYmðªG"³É2äPEÝH™Íf¹vZnž<š—PiA_Òq/³ŽPÉDÕ¿ð ã¨$$Ž~%NyhrÜOdM\‘-þŒmŸ(ˆä@\³º#½„ÔêÆ¼“ÒNïçJŸOÔåã>a+ÿ µuJ¨*(%¢FP„JÄW””¥Š¦½ø–ßð‘,$)ç÷)åÿ˜ú³’ÿê}×ÿ˜ B\­–àÏ_»ïúÇþ¾w¥Vé] 0†ÑT¥OCÊQ}è¾ë5±ÐÂâ{Ho*ä™;;õ葞ÉrǨâêõMÔcå5­ÜãÑ4S : ´ýMŒ‹îæ›7(kY:멪¸•zÒ`ˆgp ›J†stˉý±v'²¡¦eðÒG^~äÒÁ–içD›»1šš‘Š6ºdA Ø@'N ðŠæ±³Ö­N.Öô?Îf²Â…Ü1˜ób•ŽzJý¡±D ì¥V o@7R@6Š<Àþ%IF©Ø0êmj= [Ž}N‰âÒüÛŠ¤57¹ÿpò©yŒÄv4@<mЭá¿Á9TÅòp?ÚR7úú¥Š0Ò›š´ÚQÏG¸[j„¬ÐÈßÙÍziß÷·b“´ú~ƒð/)wC?â±ï רa¥-/ŠC®n“™û.Ä•ÛH j63¨€’иŠpø‘“KrhëÏÏÂîX–êIçÆŽjß ¿‚o­è1ÁÅ9 ŸfÔ\Ž~Ú:-¦ÔÑ“K 4©±7BYÍö‰Ì†Žy%›DC~e“èmÀÞ@Ñ]Ñúÿ%Àrþ©ÖÙs4T® ™Åâ®ÐóÖG-âUgõ>ÏíûH‚OpVÖBìÂ]ô{9&ÿ^6¹|Ðm’õå _PLLI7Ç’¦iÊ®õé "'T }Æãï? 4»ó¹›…|‡¦[FÇ­útu/Ù_y;Z”¼?Û£H†K®0Wz¤èc#¤ÙÙÐ)€Ž~.rÁŠÄ¥+ÊB‰°Š±&J°“ƒG 0ùË[ýÐäÙü‘.Ρìr·ŸO³kŽÝ;VC•‰ oX¨ úÍöKÛSß³ër¶t‚åí²í„:z‚X\±úxm‹ÛJhÿ™x¸ðÐN÷ÇhÛ5¯ ¥Kè`…;ydp.Ec›4²XžD<-´llµÛip.»^ØâpÕ×: Ùu/î»öü™.«ÅY[ïrl¯_æ4¸šã½ÉkzÎ$~Dq…]7/T_<赈¼¥Þã4K§$ðÆ–˜ÿ ™»ð&w“«öä· †ž©S¡¸7ÿÿµ|K‹^üŠø›Žâ¯7íMsMGýáùçÿ°èhÇÃw”…¹Ã㢴0]?²´˜fjaÍ5aŽi–Цè6C¼2ôno• ¤“Õf ì=ñ–)õd^Ëÿûövï qNcãÔŽ´ûþ‹l=uÙáì]?;¡fâù-EÕ~äìöáÏnÏvøÕ}5¸Ï×%»šë¾÷ýú–ìèOÕ»³dë¿=„Z%v¹Žè ӳРn¯K— u ÐÌ“*J¦„ê#1äh„u1HrìÐ o»ý}ÿ”õõSZâu=¶‹îw§;¦nÏ—UØ ï‚Äãä•ü` FÝçïȶŸ½En?»¥þûß«k&»¢ÍÙl9 Yõúíd«†gAâÃ8NSGáê³ÊDŸ09M‘AK{Þ€K3ÝŠ„­ª[_]’%W4zÖÛˆu9é\~åúåën3ÔÉê~ñÉzir–„ñé Ååô¨“X3kâ`PsÄêøÜÊüâ’nÇåïÚ=mùºÁ]‹ÔƒJËks„ÍóTÓ9d™ÒõeYN`}ž¯/û]U#Æób˜;R̨“ÐÀt,¢ÚlŸh*ö¢×#JB+ (´¡iGx\}~IÖ³F·Ýv@T÷Ëu†ÛÖ­¸êJ¨Ú ±­÷ÌÿœÃ @-Lœ™¨áwäzÃY§îg—”úÓâw‰`wx-ù¿Øö´(dÙ¢]ƒ×ÉÛFÏ3_÷øXcY’mQÔƒçßWæb¤-©ÐF ¡êKõ5Õd-0bƒâ¨çƒ—֨“T+æ‘_ïZ„xÜcËÿÐj*`ûûåˆ}|xâ~¸LÇF*ÚS*oêŸMتêA­Íó–²ýîTž1pÇ7µ1?‹R t>éó»¶R'"ú‹ÀäÆÁEÂyÓ)oƒP7ž”æ‚Å%«ËÀ$rÃvõ¬ QŸ¿û½eE”ÇãØç”+½»nùzlÝåVlÝFrktÉÖ'µ¦'?R®„'ZƒCEÕI§Ky» gaÎö0þ‹ü¡^áê} pE;…õKq{ÒáT/ù?ïi"%íÆÞ1ÎÞ’ÿbñ-ÞÔ¾qÆ›Ì˵ƒÛ+ ¢Š8Æ]ÀÊrI¸Üú”Ú£V•{¬dȪÍœ¹\è•AÍôÓQÐvOÄSÕõ]0.ÛêúN¨ìX9s¹Õv¡b?OE~ÚFPU}ož[YîKårÀéÖðñA¹ÃÌ“U%‡§7D€w ýêöˆqÔ bá/í‘hÈ íáAÙ±‘hPbQØ“JB8ÕI ºä?áI%=ÅX‘tÜO¥;¹(P‘hºLìd£Ñ S •'hÿݱŸ>|þùÿT»‘¬ÜV?Ù,O•Ýç"\`ª7‰ÕãíÁ.‹2ÐçÝ>Îæ¹Dá²Í fÎÖm•g;œ-íö„ÌCŒ'œ¥Öéu¹,»¡¥Î z—A`-ÇÙ¼¼Á$Öx vc“Ãk2·¦[x–p\cÚbüí“l΀ÝihµsµœÙivðaÛÃêM,gĨlñŠÁMžà–zÓܳ›7JvÞÔÙÀË‘V‡RWÏ‹N³•ÝäoÎ4‰(Ú-„µXB^ÒCl&Vnô±nŸ¿¾Án D4[k6ž³†›ìN×&µº}f§“3Y¼QwÐ@$“U$(Ǫo¶:-üZG¼…#&‹Å†/…} –?ÄßN}Æ¥¼‚7íA!M´àühöøW>£æï?iX²pÊýùr›¼A–Ù¡àbþöó?uϱ›Î¹³-hñäØíëå6;»êSÿBõ#/‚µé@Ñ¿J Æéþ !%Q­)”ÀDq:{JI^Þ‘Ë¡õPY7UGçÊ(ÂÀ¼Ÿö¡h³?Hmÿ¬ÈÑŠævREˆíHŽôçÔ=ÜN`P)QœŸ¥Žæ€G9®ÓFM‡ÖSáMG§õ@2¤E‰$Q µ$Çs±~ä’TkNµ"×9®Õ†8ûcêF¤ñ^ê"?+GÙ  ^÷*¦¼gUlFVxªÚU™poC¨°ž.XCƵŠ×µÍ‰×qï‚Kê[¯k[¯ãöK—(lÀ;ö ºÓ¡ínè%^ñRÔj­,$)§ ø·Êì1‹‚n.¿ßG÷:CÐïfŽÓ(ßñ,˜íÐ;š„Ä´©ôR—¿Fëž_~ðÎã^øø;¼ó¥Õ«¿D¾ô;6|/jGGSSG„›G’ӎļD¬ñzbRï¤/X?½ñûŠÃíñUÚÇp14u˜$`¾ß[ßœH47õ7Iò~¥‰~Iÿrêß™sùù#èŸ6ŒÛ+‘h„ºe€Wò6@wK“̸h6, ‡1Cµ"à‡·æ©Ú=­mÎèñe°AòÓóŒâ– =¾àôî@“z—ÜÐÐá² ¦sÒóls³]ô;kklµêÓr¬^"sƒ¡é’Ü>Õ&Õ„¬-[×ß{ÅJiÒ´9[‚ݵ³È©¹-ç]±dÞ¢µ²cÒ µAnµÛ¹ƒägç}ê’‡¼»6hTï–ëüÉ–´?3sÚÝ^k­úŒLêcY ˆ1ëZ²´n[÷¥ƒbÝ´¾E߆ŒçÕ¤Íw¬ºàk3Ôf™•åˆ>† þÿfMäÕD‚è…Õ ¸aåñDðé ~}&ö¬Á@¼£5u gn¨›OÈ¢<¹­'` &bÓ¬¼±-6à÷®;ƒÁX÷"‘d*²a¡wÒüÞY”¦´vÖÔt·L³ð¦Xë¬Ö¸kñUß©ø­ü·aîèÔ=HR_Ã@¦£Ä+j“2—öT*‰Â£è%ìÓ/͸oƤ ¿±Óyá‡ê £—»î›1ƒÔ9/7›  þ~Æ7áýŒ´_“ÛùoÃÓêÖ+‚þ$DüÒ¯sÞIH:çr£ ƒð ¤yiF:Ýå¸ðïäv÷ËýÀ(Œ¿d®O":¦ omØÿÅìdM”8åÒ ;¤žZ9uêÊ©üHCg\›K/*‰ŽýÔ™g*¾-óIèÑö—±¢ˆ_ÁE¢œ‹RqîR'û[¥fõ?GÕU½Ao‘vb A$ÿeõ]¹Õ/‡Ô¿ª£o©?|ƒÔÞQâm–4™G¢Œƒ7ñG™83Ú3+ ¼74‡z*)¡$Ý‹JÀØpDµî“Núj5pÐq¾·“eDf/ÒÎ>ÎÛü‰è´à”%é–Ãg‡Wµø¸{…Uóë:g,ênН¸l²¿µU‘\ŸÏt™'Ö¬ñ%ÒüÑE‚«}àòÍíu¢úC›èꘒÍܻߺp±}UË+^b'‹’¯«o(5gã¼VÃBÕIœ¼äOEüm>·ÑÀ½©þ€5yšzgö†}úÁ¥ÜüA”©P-øP/ú€Þ«ì„ò Õ6Ì)¡x5/t;1šp“1”L º9õAܳ|÷êÝÑ)ýµáåîX]mûókFEéH/ñ4}:¸,oLMªoò®»6]YãMó5¢Ëê0u[›ßyÒ«ˆfVêh¾˜?¸äÞE-A§_iï«ßÝj²ñ Ô. 6|Þå5’`#ÏÕZ-÷svÁfq˜ÓŸ›íês·Íš>¢ãÚwêÿ î7C—å{ A“ú…ŠÒÖ]B¾ëÕîz,i÷H'dù„äávÚ?’`E‡• üx,‡öm±¸z‡`ÍF[ïê2aõv‰hp™%(ÔÌ’öü¾Ê‚ÉýÙ5Ô¦;GÚÑŽh”í¥²³¹\Þy";|"«ÙÊ–©rx‚zËsèP‰HCT×v¨P$…éõly}‡iyhvMŽCù…r)Ý#Ãx®›¿-Ü.(ót%fu»ôÊ€(Û…eÁ•UU–oâ² ¥p´ÔqeÑˡ啗¥sòy¸iº X–æk¥`É>£X¯@2Pø¯. ¨2ÍŒ>«n„|‘Ê,/4—£Ôþ}Âò  ®ð?Aí¸&ÍJŸ†Åær§+­ðÃÉñCV“]{ŽèìZÍ0- úùA=–ä Fø®$ë+”Óöñ%U¸Zy¢­ÂÞ—Ž°Ù²RÕ ·Bƒº)¿÷¥ŠâwT8úÁ(áaÙûRÁΣ*-Àª—ÆÙs€r5v êÿ!^tZ:/ÇK,'±ÂêF  9€»=ãÚæGˆ<§¸CíÑu“"$º-¾î²F÷óS2ç(óÉF 0Q©Ü+XšðwÈ,»]=b÷h[qžB‹QI’ þ§ú;)"ÁÅŒšÓ9ÜÒ2ãšô6Ãr?çÓ}lŠV Ç=b¸[˜µ£j¯¢4€Az”ó™Œ÷KÚkQ?TÿÂ[%“É$°K¢Qõ-¯Ñl_@l/ &;ÿ˜Éì°¨ËDrª?P_d£E1ý~ýz—â^Iº~b°÷§ÔrÜè¼e¡uмf¹­P•/ÍÕº#Ü Eÿ+šS\ìG‡-ØR4¨« ‘S®óÖS®óVä¿‘; ÎÈ*`ßG¸é*5'Çäûd™Lº ˜¯ÿ~¤ÚÆê à…5¯”FšÒÆhb`  ½êœú³Â4€ý[b$~¿Gç£NÏAX$òÛ÷ß~ô‚ }[»‘Wß}åê«_Á‹z×6múÒ&~Oñ%Þæj/árÍ&|_SˆÆÒyã<ç-â*LÏ›ø«Û,©·JQ›z»Í¤œð«·£ÙÂÉçÑ|’V|GVW~öËÍz ·ý ê¨ àH ¯œ†ó³¨EÉ ¤º²Yîn‘¢çH4ûr7P?99­Îæß¡|O-µ·5³Š ²%ã4µ dzêO/4ùL_Pså’TÔ>¿LQ›ÄD(ú ˜ÚôùJ8òÿFµÏ+)jCb ›MuØ2Xc8$ñt°}œ&§@€«Qr¼-ÚÜÖ¤þÎU_o6ÇÕËq7õP1êŽË¤+ÎÛ¾rc6ªI ë\ ê(*v´2¼4Uc(Aü Ì£9ú3öŒæ]Çz÷Øü»­;0'¡=äÛÑ*,e5Õ6ª»VÔa,ÌqhÌ*ôë²P@wȬ°G²¸/ÓOÖj÷|ÌFImÇ #Pzë;J¨wÊŽ}ž < ‘ú ŸÀz TŽút‡ˆ~£`ÂȱGP%;? ®5(Þ(u¨”# ”ÇÈvÕŠIÈñí#9,?Gù¡¬b4K]ýQgÔŸ]ÒE[à phʯ§‡ÛG›¡à+` ÜÄĘp ?Å@á>!Ú}" ÍÒ½¸Êr=ÔCÀD5ï 62¾¦ZYêèå?à× ³ÖiðËA¨‹ T(øE U•Ju³;"}©ØÕº#–ê‹Lˆc¨äÊéÓ—£VäòéÓWþOû›&ÙCIÔ™úÛÇu8*烞QæçaðQ^*z(¨L­|JÓ‡½^Žf©p1¿ûõ„0À4~œCˆ³Ux¨Î*ršV²*N9Ï€„׳¯Pðú„Å«sñÜp¶ˆœ_LŒ‰ŠŠòÍá3ÙZ"}ˆ&ÓrôO¿|lõêÇ~©ÝÈk¿C¾/Wj><ËüSÅxÔÀåMêbS“¯–—úg(]½J(Z#Ÿ†x©\$OC6¿8-àf:{êƒSҳ蚨oý4:œÓËÜ)Ž¥ËWb¼"uÅiu·hŽŽ~½dãÊéì%û¯¯ÕB±ûóAM sÍâÙWH.gvÿ%ùç4ý–ãvø+¸œ§ð=¿ ðÕSêG‡Ï‹jWHWÀæçu>…–[ÿB{[çuûɶsÕ;la›z›iñÕÝWß­Ô\z½ÆåCðäƒÛÖ|¥ž\f·«Ÿ×te¿º&ÿ¹ß•+Býk«è/t¿ Ï CM„ /@SÃ>Tm ±G`vú`?þª£ôþÙGÆ(Ù,zb" Õçðe¶¸üAÞ×AÞiàÿ»´š7ÐÓéQÁ¨R<Æ"i X ¶:¸IÜ‹(a‡V¾öœúã¦Ëç§;4Réù—ó]}—Ïœì^þá«Ï1ÜvîÔµþÚù—7œÔÊ=Ùpù|§[Jοœeíµ{)­eÜüÝü#Œƒief0ó™KðJâq²"*öF#¬(©¸GjJFhŒ¸‡Xè#ш·âµ£ñÝkš¾—5EÔR¤PÍ΋ㆠ^p C©eoÿêíe…€:•ç¯{6ÈÛ¬Íï5ÔÍs‘ÅÆ™8‹XÏ K6×ðV[ç=çÙ}V+ÿhͧ×ÀßJŒ›lÑâŒZZ›5ÈßW‘‰±”;®þTýé†e«V-Û@ÚH†êIðÙë¬ÎD<Í™[Ç)ÖÍÀßÏÖl^bÃXeòÙNN±„¬"K]£@Œƒ×bŠ©šË?.æH÷H gzXaÆðÐÙ’Aîˆ}MO¦eýXÂüH§Nr ÐóÚŸW¨;ñhtñ»gttOöyu3=–Âü*פîÌåØ¿ C ÂFGsh9JîͽZ°-”k‚’]L-Õ~hÎii¡.ê49ÍQr5¦ñ½I,VÝ“ÿ…^jf”»_}Ô,“í¬Q6?Ì5åÿNVçÁÏÕ ÞžËªYÙœN›å%ezËÜqƨï>ÁZè  “NtñŠÓ1š a Õ%þž=è yÏhÞ™«« H¸Á—ËJZöš?ý h½vrœkÊÁ@åmÍY`®^insðêF\”*ö|Lœz!/?·)(“0 Éâ MS4(šÈ—hðØ{²º™’æñ-î'×hŽæ‰ëoê7ûcCÒžÊ?‹6²âñ’²'|ubˆÕ£@´þÌ!³býÙ¡¡ü»Ðf{tzø…1UÒA?=Œ@œáá t%˜ä•‰ÀÌåiuš“[ NòÈiáD ±ˆGÝT@Š:Ïp<ü(õcÓXéÉÆUm2Úϱ7z›ÚOòíM^öFÏ´YUfwGsüÁ“#‘t:Â/‰ªƒ•¶Îå~±OsÞ]µÇF×ÿÏçÝ‘¯ž(úü(^È‹Á±?Lû$ÀSʽ… WzT>mì'_§‚údŒ®ÐÔç:¥Ä5®Lh;¯H7ÜWgzêgÄZÆÆZb3ê{2d5Jj¦Ä9Þc+ãù‘\vqzç²DbÙÎôb ©Æ¶g ù"l@צpæQB½býÛS Qí>€“+d p²¾î%}¯L!“™ƒ‡òçšcdwHo˜¸Ææ×p€x(Tì¾pÄèxî¿ßp#ê:dvQ qŸdAðQFdÜL³¦K¤mÒPRËí ¤pU?òlÃëÖ ¯ûzg°-ª‰¶…ÔjPÙî©b·ùG×aRõ¿ú&^qÅàä>uÓ8¤•p&ÃӮф ¤`íMGSŸ®¡®óÙܵao°ñã¡ÜWÜ›Z´aâÌٟݰ·V5ŸÊR¿s2NX ÛqGB  ¾O “ÊKÒg éôðÀÀBWþý)Sg\õÙùêžÓ¡läË÷ö]zöÀ<ß²o-_þå- ø±›ÆA£ŸKMqÓ­!´Ã¦Si­gyñüý¿ÄÛ°]Kû;SêÆT'ã©ókPqÉæeêÆe›7cZT{~*‡7‹bê\H…?ðjÙµl3•P œïоwïT2²ðjŠY;Ö)ºl DËueytOTøïÚjö¡üñU¶H­í¨úœXögɬ,õW´ÉÏ¢^ŽÚÂu¶¡![]Øv”Fèç”| ã®QGá¬h`(¨# ƒR¼'5X©D§ÌQ ÊqMË6gûc'býúu³:'—ôÿ™®H( „?¸yÕµ¥ú¶Ë6£~.òe¨¬[n ¸ªŠÿ*€±U«yZsÃt 9ï‹›¸R!GÙý·©ù“MM$ÚxŽz€¬$]êÓ{ÐÃL<ü}ùç4ÞÆàJZÕõê~ÒMVŒÕ•hy× >@u»Êí šå…î+³¿Æèôõ]áß2FqO8jü–Ñ¥°WCÿ»Qqíˤërw®‹.Êìä„«¾Þ¥\õš_´úü§ãôöyš¶\O¿nÔ)IÍKGR§êHÅq”¸ÜIÚÑÅ. d+u@Ï´õÓ ê¾k–ÙŤ}9¥êT«v6ö*x¤g¶e7?—™Ã¬Ô}õS§éÕ-ð íAUÛü‚í OMlJ ÕpÛíժݧüîÕŸYw–Õéhœi6û\fAöZc,·rjFœTå‚ÐMj8kOë«51‹þT»¼ýqW½_ÙnéØ`•7®%³K«èÜéWÜs–d0š‚á:»Ñ`´¶OX•ÞùÒs$ã4¼?:ÿSI1¢¢W-¾Pr}ê²£Š §9õ.Ôû& Pš™^f ³8(ºW¡I¢ÃÛ`¬¢`@5a}ˆzµêiþV ¾p„²PÔ½+:–£d\jÃ"=üa€j£Šð­ä)W§Ô$qö{ÇÚÖÍœ×p)—Vüõ®|£7hj¬ŽÍöâ—³õ»¥Éâ$·Lëè˜Ö¡Ê9›\öúŽÚn[ ±¤k{lG‹‰Ä.m „m~ÇT—ÀºE‹Ûù¡ÑbÈ­¶m¹` »—wònyæP&—:P¯LJØí–YŽúéÀŒÕ_îp™NW¨‰ž›zVÛìS׃]7ÖÕEÚd“%i¸ç™¬|ñ ¾úèÙÌEÔWMÁ“™7râ ÀÞHB¨´Ë6þ`UG¹ZˆæÎ ø9 N2l2ÝÛÉ…HY˜½(šÅ—ÒÔÙiwœ½Ý“[ýÞ`ªcZ¨–R;Yz=TrÒvHþ9ëc. ¡Ö²êGäŠÒº6»*pÕüÎ…'»[â‹:ú/˜ÒªXØ¥œ´CYÑ…Mñ˜ÖtÌÐ-'º]£n,{@üð cø˜Ob¸þæþÂIÑN‡.”xÁN ¹F9ëÊë›Nÿ­Kóß[º£ÞXÓr=ÛôéWÎmó °Ý°Æ¦ØY+¾Ê?sýJõ¢Ä×gÌXµuËPý¹¯%È—V^¿Ûéè[­ù‹ ··ô„ÔWˆ ¯;éúWæ ³xv±iÈ/‡×XS3±åȼ”2¬¤÷Ô©Z¾ÁÛ f×2Ôå/yòÉÏ?ñí»ä8ð®M@ÓQÔÎ*Ë„ÂýÈö¡¡íCäXùk¢÷²?MzTy?±àÕZËÃYu׳)ÿãé]Í•ßô1–-ã—þaÿ7jô‚~”ÍÄá .dãÄá » –Ä'Ó·½¸š§º“VÔøz£tXKþÙ2k̹d?¢§z‚§úz¥´ÙKŒ.º>,¡¸BZ¦¿`q„—'ºk–Hèqy¢û°æ¤5¯¾j>aÇÅÅ\CÙÕ#ÊçH;#pÇø½Ð7lº4¿}” ÖIR¸7Œ„°ÞŠ0§ûœð$âì=«VÁ¿úÑö‘í#ì¸ä_.Ñvª…sð{g>ƒÁh!­îÚA·b¹/p7¼Ðî™=Üz—Á©¾mi”%—ÍŸš3)^Ošj¼<_ãU¶NY63dsIr£™´8E—jñ¬ßý®Uð´„*Ï 33Ï|v ¾ãè;ÔÛOÆéB@ñù,—ü,ŸÑ\cwd}6k.žuØkÌF9þ±'Ìä2Ð6D]e±‘xÜG¾J³K.×½}†ñS«†$ƒ@ t"š;2É©ê¹*¤Ž”ŒÛ4§Ü1_ƒäxõ7³ÕQ§bj´Xˆ£§ß9›„§ÚQõ½;®#Ï{9†Ôe¼I š-ìå¥br B<ÞÖ9òdpzœÜIVªûóÿQ:l„+ëséi Õ#=ÑìT¬ð¬+R˜Ñ(ªâMÞDC$â ¹Êaç̱ êONgÄj1ž9˜¶›ÍÄÜgqXkè„}F«Åèðùd¢¤×ÖÒc¶ŠG“,µæå&—Ó.Øâ˜.^É·wwcƒ>ÀE´_]3ûžUˆ±|ãt{JÕfªçª‚u_ù.º\ÿºþ*êö²W•=ÌÅ}ÔlNçÕo+^®ïßVÌ£îé‘ vØP£>~†‚s¢¦T¶jWz~_¶¤o‡gSÐ}-­üDñTd‚ Ý-TÀAaÈêYfµ²˜Ç3,PATcm²Ú Õ¼4gã¸}‚½•màE$BŽ„w¢Åª8Ü>«¬9–ä‘ì¸JWâ©°O¥õ/9ÿPªJCÉXA{,™@c,tEJ¯ËTÈj½¾9ì•8QÊñ•Óõ&¨ äHŸ þPÁl~K%Æžù1€¾Ñ»¹ ü-èeÈD zxN›»Xuz’Ý.9½ä}‰MÂc&œ:¯ê”Z5¿ãÓ™8·ø% ÕµÕ½øm³˜¼ïomõCBö:ÐäÖá‡l´ï˜8™ÎßÄí¤~óËܦ¢E²¿j•T§ßÁí¤YH˜Yá»vønƒV^IN]]ÂŽåCXkg#Ås cÀSûˆB’$‰Ã=’$ªkø}cG¹&ö÷/¨ßzç»ß}çä¿çÊÆµ_îÑv6<7¸½ý´IVGG™úg*lôŸ\RXS²T‹‹®)ÙšEî¤Ê%Y uôóÁ~Q~>X¤¸ˆÏÐ…±Ö`9ÓW‚“k*‡@_ÕŠpM¸]0¦*ƒ%ãaÀ“3XíŒK¹Mü|ô{†£FÔ”»ƒú‘ ì·¾d7[Õnò¦Õlÿ’ͬÆD‘üÜÌÏ÷@¤Úmõ˜ÈÏñ8‹Ÿ›°e ¯cżô#gH›ÐÄdd@~.ŠjÌlÃlÉ›äeRcxîEÌä(( Íí™Kž™Ïm¼êïGëX”A7¾×Sõ·µ@[lÚ×.%ÈëæÕ£nMDsˆ]n€_Qî·• Ú5Ài?zûÔGüTèG3²¦T@e èi´×,ˆƒ°r¸ O2<°Ðè•éÒl+³À°/,Á–%‰¹­m²à ¼ÓÛšXØn›|–Eš›¶÷]˜Žˆ¢lí™ôœžÆÏ[m<’|#¹z×+„5ˆ¢ 7&\5Sô-˜{þüAEß×^Ù¸ì¬t“Kä ÂËέßçMñ©^rq]‚îFmÞC%2þ„vJÒð)W-Î}OM"`Õ9l²+ì=…%"«çë£ó­Tò˜'8ÂzH3QÒßûÑ©ùYìP~V¶‘زèNiì¼ÍÜ 7ŽÕðÄÛ›¿ ëÎþ?w1ê×xÚc`d```dòÍ?ÌÏoó•AžeP„áBYñtý?ðÿÖ;¬"@.Hc èxÚc`d``ùß &ÿ]a½ÃA‹Š_xÚ}S½JAžÕS<‘`ŒÚÙ‹« ‹€ÚùÂb)6â ˆ>@DÈÄ"èX\o“ !‡­Žßìι{Çé,_¾Ùoçgg“˜gÚ ˜¹#J†VYp>uC4Ó&*Ù<=$Œìð¾g9ÓW@.0Ÿ¢qêò‡ú- õñüêñÛ;Æ:pt"HUåeèܾ5äÕçü Vg(÷[Aãx­9ÏÝ!ÖÞ´÷EMŸêß—ï4þN†&Óž×ðwj³tþ™³ÔžeσèLpŒ>†w‘ï†õ>GàÙpfz`Í|´Þâü^ªaÙżø>äŒÇð¶)Ço© o¥²‚MÜg+RŠm¹RqÑí,÷«‹RJ¹à1—ÔÕX‰TªäN7t‹{I–E—\îFÿë8ãU ºÉÌmbÍù:f—N±&’ýj9ÌYxÚc``ЂÂM /^0úáK˜Ø˜”˜ê˜Ú˜Ö0=avcÎcîa>ÂÂÁbĒIJˆåk ë.¶"¶/ì ìIì§8ä8’8öqšq¶pnã¼Ç¥ÁåÃ5…ë·w÷)ž^-Þ8Þ ||||[ø5ø—ñ?˜ °JPK°Lp›—…PÐa)áá "Z"WDmDWˆžc3KÛ öOÏ~•ý/‡‡cŽLŽuNN+œÞ9K8;9—9/p>å"à’à²Îå›k”ë676··-nßÜÍÜËÜ·¹óó0òðóÈòhó8ã)äiáçÙâ¹Ê‹ÉKÏ+Ÿsª9§@.xÚ­’½NAÇÿw ‘h ‘„Âê /‡"‚TÆDñ#J$Š–ròqr|è!'‰Oá3ØØXøFÁÞ§°0þwY …1Þfg;73;3»Âx†ñE0C€ q=ç®Ëæq£XÇ4î°‹GÅA$ñ©x ×ZBñ8Úƒâ DµwÅ!ò‡âIÌéaÅSä¸âùXñ ¢úw¯°ôÛ.¿0«?ù¾o–ÝN³âغgÚÖÑ@\ÂA´`àžsbˆ“ ük`§¨sÝ¡}›,ì«0©YƒËa Dðä®ÈµÈµMyFËMváYd°ÅS÷±‡í2Œå¢Äé0~™>´/ãŠqJŒžG iòô<ýÒ#cýŒ´0ë·C~G²ÿ²ƒ9ee Kv«¯­Ð²[Ú·{&V(Ó¨1j•1…M‰Zqr7±,gKÜ¥þXåè›­õå0éíò–›ÌÛQY{Ô ªý›MžY˜¹Ð¶z=ÉË×a°:[jEÝ¢Ÿ ¬² BZìZÿ=nôüs¸`Í+oÍýÔÌxÚmÕU”SgFá샧BÝ]óýÉ9Iê$uw÷-J;m©»»Pwwwwwwww˜lîšµ²Þ•‹³ó]<3)e¥®×¿7—Ré^ üÎèVêVê_@÷Ò$zГ^ô¦ÓЗ~ôgÄ`†0mé[¦czf`(3233 ³2³3s2s3ó2ó³ ² ³‹²‹³e‚D…*95ê4X’¥XšeX–åXž†1œ4i±+²+³ «²«³k²k³ë²ë³²³ ›²›³[²[³ Û²Û3’QŒfvd ;1–qŒgg&° »ÒÉnìÎLdOöboöa_öcà@â`áPãpŽàHŽâhŽáXŽãxNàDNâdNa§r§sgrgsçrçsrs —r—sWrWs ×r×s7r7s ·r·swrws÷r÷óòóòóOòOó ÏòÏó/ò/ó ¯ò¯óoòoóïòïóòó ŸòŸó_ò_ó ßòßó?ò?ó ¿ò¿óòóÿf¥Œ,˺eݳYϬWÖ;ë“M“õÍúeý³ÙÀlP68Òs䘉ãGE{R¯Î±£ËåŽò”MåòÔ 7¹·êænáÖܺÛp;Ú›ZíÍ[Ý›Ƶ? ѵ•Öµykx×~yÑj?\3V+wEš×ô¸¦Ç5=ªéQMjzTÓ£šå(»vÂN؉ªk/ì…½°ö’½d/ÙKö’½d/ÙKö’½d¯b¯b¯b¯b¯b¯b¯b¯b¯b¯b¯j¯j¯j¯j¯j¯j¯j¯j¯j¯j/·—ÛËíåör{¹½Ü^n/·—Û+ìv ;…ÂNa§°SØ)ìÔìÔ¼«f¯f¯f¯f¯f¯f¯f¯f¯n¯n¯n¯n¯n¯n¯n¯n¯n¯n¯a¯a¯a¯a¯a¯a¯a¯Ñî…îC÷¡ûhÿQNÞÜ-Ü©ÏÕÝö¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôú݇îC÷¡ûÐ}è>tº݇îC÷¡ûÐ}öôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôúý‡þCÿ¡ÿÐè?ôú©îvíNjÿHMÞp“[q«nî®Ïë?é?é?é?é?é?é?é>é>é=é<é<é<é<é<é:é:é:é:é:é:é:U¦>ï÷ë:é:é:é:é:é:é:é:ù=é;é;é;é;é;é;é;é;é;é;é;é;µ}·ê­VÏÎhåS¦èèø·ªÙoTPÃ././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/fonts/bootstrap/glyphicons-halflings-re0000664000175000017500000004315413111777164035754 0ustar abompardabompard00000000000000wOF2Fl±\F M?FFTM `Œr ‚©$åe6$†t „0 ‡"•Q?webfeŒ5였ó@ Â?þ¾ Úöˆ ¬töÿŸ” †ŒÁ“ÇØÜ,3+2q ËF®YOì&>±é±bÒm¤5ZŽæH$±ªYŠœ½{ìH jd† Õ‰ ü²%÷¹Ù§y"§÷ö×+@¹Œ]½«eŸû{úÒûv Nc‹)»nù“É?~?è¤hòÿž_ç&iÆÊÈÑÁ¤‹?º>üå^K ûv´-cÛ1íô€‰2K áy·õ,'nä«à(ð3EwiàB‚ &©ÿ éÎT´lhØ0MÒØÚÒ†dåYØrñﲬ³ntiÞ]Ýyur•´¼®û™îVXsj¡¢žågMnªÓ™HW•©ÃÔ r2ô>iT`V7¸ÍR(±¨ÉÏàÿ+ o6ó'cÅÈB°æë4ç·Öι݇ƒ‹ã¿š®T ]a[Qd<3wq8,Ž…îrTI¡8áŽ0>E¸?ù*E¨ç—¦•#Ïú7'ìÝý†S ocûÊ·í_‹7&#*Ñ+)½³ Ð+4a°A6¶cŒçy±Ù£†f(bFéæäÿé´$;{ YAÃ1vP-tGøÿŒáÀ±Í"û°•ÛCÂf- W‚÷®šÔ™ÎuKÖ°Kã#­íä¬Ö*K†<Ûü (ÑßëÔ÷×ÿZþ`Ù« åµ[—%êYTЬ{%¯ÉŠ$ˆ­ s{oïíœòˆƒÕ»ïvt"pàœ4`Èêß©ŠÏ¤}o `ã³Ýú'neÜ> äG5szó_Nó ’PKÓ¦vmUÞ É¾{z½ÜòîóÿŸøøŒ‡"3`l ’–W#Ô½^@+,c¹Éko©AOpnuµ§Ôzó–zJ)õÜÎ¥÷˜Û1Ç}ááÿO=Þ­¶€x¾RÆÄ`ÁJ‰`§qƒ¥‚Us/¿+økÒvÇ1xlÝßçjl–Elì\nDŒÈÃÆ¶¯V†±æÿÐjg›{Zdå‰z7 5ÿß!xmÂ5oÂ[½¿uïû&·¯1Ú‚HBkAâìqrêÎRÄ £·°(\ghôÈ7‰ìÒŠy=†HµZóUPhéÐ$8RgÓÄ€zÂgÍ­ÉN:‹à1u¬$Ü…¯¤¡ž>Rý]åú—¦¬"Ÿôf7¼— õK¯^'˜ªë½3“+E/¼Ä^‰YU5]¨NB.ÞÊ‹¥Ò8ßÅ+ÎÍ8ù,|‰{M|ŒAŠåua|Ðaˆ’ìŽÕÞË…Õ% lKG¢Pí,NuæÜÔkþcï8mX@ÚÓdÿ̘?ñüÚó¢çYÓ&Ïþ{êö”ø³ÇÏ?ÛPÜ(®GŠ]¶¿ÏÆä¯äOää·ä×ä—är-¹’\LFÉ9—,&§“yä8r¬û´û3÷ÜŸ¸?p¿ï>ê~Ûýºûsèäÿ‹žÐ¢ÓDǤzó1ú¡?\U5q=­ÙtÑzÔ’†&Znj¢%émM´"}¼‰ÖtkÞDºwh¢-=ÿm¢½Bíéõ76ñô®ƒ&:Ò»Éqt" Ö1:“¬ëЕ¬©u;ô"K_¡/JdÖc0–l²õ0²Å'^B¶ù8VC¶Õzg°²½¬[ ;Êúdì ÙYÖbȃu‡¼©u;œ@ž*}y‰| .©¬'C>\g=ò9àVëů·[o†|gð õ^ ž¶>Šüd¼ 9­ÏÇûäîØÅø” *E|A¥ã*M­[ã[*mOÜßQéz?PénÝ?R)YÁoT&[ÏU*‹•5ÀSÙ MB þì¡¥ð[³ ­„ßoYDh­Õ{ìÑ,}1f?›«“NNœ¢ ]ÔO/^;\ÚÂJÊ ÏBÇEsJrª ÄšõÆ'ò…g/ããÑB%Ÿ¡o Cõêºn•7‹Ü:|õyƒKt²&÷$§Øs¯|¹õwPˆùÄ\i]¾$Z@+Í ¶¶Õ€90x]»r¸­%¾ÈÕ+öRU¬Em‡+ܰª£;w u¬À9/I¼Ô7È7Õ¦¹Qþlu\¦yÐW‹N)ë8‰Ü°vYî*u´m”¡±¿éâ©âºm( fÊE½òÿG8² ¢j#I¬½RŽÌùz #q¸ß·ß „)Y ×$‹ áЛ†c_%¿m-{!0-` ;áå…¬ñhyVõäÁ]Hv! Ïta½\KïÅ¥[Ì1{"çj 6@ì–3T0%¥¿éΘ"ÇÔ™ÆZI†Gä›S“÷‚.³ÄΣpÆÓ¬SÆ1eéûÙ“ÄØ›ù YÁÿv»8d±\±B¡l¡SûþR)ÒÓ†çù¯–®€ {IŠÓ†ôÒ%”¯>û0ÐŽÚ¦³\ð'”cg½2%4 QŽD¡ 0Í’3B²"ÉMŽÕŽ&€ÛŠhIÇÂÚ§ÒRg·ME¤¡©¡¶š I½Î(©ÞÕ5U–D] }ò™bí8$—‡ì8¨>óáX ²h•"lµÎ€âj.%ˆÛ€HHÇ- Iš¦Ý¸#1’C4õÞYÞ7„íî®íYÝ–¡V o>PÊ]¡6¿·˜ö™O4ÿ7f ½~AJdYFÕ€Ê.–ÞoõÃþy) Æ8lÆ ¶22ŽeŠœ¦Ò1H¡[t‰°@!È… 2\€@¸5ÄÙ“Ê%Z×îüÛkÞ’aõ®Ü@ú.`n¨3ÊOFŒ¢R(ó…¥¶÷ÿ½ZkLkF íHWjY I¤ê5×ç*ñ6ÚÎeµSbk.¤¼5F,ì.•N0ßÔ™’¹€|”†V¦€||~Nô‡( 4·ìÚ],ìJp|~ùxeÓÉA¨Ô¡¯5ˆˆ/»Ú»S¤ýäô”Ðvò×Üy?›ù²'_v|rê„ËXÜøîHéQʰµÄ“B@= ÝX¬ßú¬B9Ë4³˜«ÃT©ØB‰B©c ­Á«H‘P£Î+‚ò‰_““ÕYHÙ#¬$ªËÊ` ìFø£ñB;ãµÂ+Û”…BPR°4̼ t­:tõ"ZEºJ^!XÂÇ“à¬q4_dTW(5äÜ€§åÿä¸ÚI±”UŇÒAÍzþ@U6ÿn.WGXýÀÁèHìRKÀÛ&'swM±jŠÊŽ˜‹±<Ÿ”±˜3¦)€–`#F@  F Ô¢àþØvoÍb$x ï+²à¼uû&´}‰|ÊX&[Ùª8F‹-¹E&/>Š/ÑGÅ.aêz^ŠÞ/ƒÔþ})œ²’ó'“x©‘$O=<ÇÂz™¤oä§áA9MØ&ò~î¡™¹3rµ3gŸœ¦'¿8Ò£\°-¶MDzÈè˜økºÍ5†ù±´A ÝÂýªG9©ä|1-Ø! Ç87û[œô¤,mRîu|¦57® =Xþ‘¤,˜aJ§Ù›¸^t´N›4ÓØ\fЄ]AzH^7·ªF•èþ•™„&k"LU>}ì>çrBåX(Û‚ªë‚Tš%¿« Jª¿„­dhKÄ”ó¶P“²KÁTFaA‡3HH†C[r;a›À¶d·™‡•54ÈÌ ‰—lL„kjG{¡ì8Ÿh~ä fR@Ðìü9wàB¨¤àÐ0ë zSõô°âÿ'— a7‚@Ý@N›±ŠÝƹl‘bj3hNî²Xö‹F/Éíe¢s£Ù'úŠDsQ«ñ<þk^Óíò×¼²ýˆZASO¨idºSJãxN4D½³ÀKÓ!´¹Ôù !Ù«v‰¬hA`ÛE–·X•¼Ê- ¢P íÄ:Ÿ‚ÛѤCê:ÂÂWÍzS½sÄdO :¶_¿«ÔË`Š:tÁaηБ ¥†²Íسú¢® ¼IYð4Ç # ø*ÒÍ+<êqn°oÔ¸u UÌcwwóx$dµ³ðÆ¿}ÏûÖÁ94Ìýšíü9p¬*T:ú%GQæ…^aŸ‹‡äÝË'¨çeƒôbö¨Šl-ÕÜ*XÝLç%*ź¸.…ÚŠÈ\Š@pR$Tå*KÖͽ¸hp‡ÀˆÈèÁ‚ßã¦múÁ‘â-/“oSÚ3ŽßÂEàÏÎto¸ž}çжV‡oõeJ `<™$öÙtíØ½ßü ª]g*ßZ›„µ6q°Àùl’ø~÷E¯« †Sú¸/Š’ùi£ÄTÆtÍk‚Ç®à²WÝþ Ü=?j¹G¢ÒÌÔUUAJÆõý›`†ÒbÔË‘—ƒGˆõQÍAÏ«©ñÖÎÆÚìcƒûê½WËï©èWSmÝÀ­g³ºÚFËñª‘&©^õúؘԡˆ6;C1:=ÛˆP‰äºÕ`ÊÚœVVÿ“ÔEÆ5"´hO«Xà~«ÞØN3_5Ó]ºz-þ­ä’CWÓÝtÔ¥‚Óˆ´ÐËeÜ]°\¶”©¿V¯–‹ÿcÔ#m[ÆkuÞ—­_ʱ"©ÉösH³ô<}xï±…m0båxHÓqb‘a3tfçMTÛÑÏ*]I» Þ}×(ú¾œ,M”„–=Š Ý@ŒJAÛÆÐd‰ ¬Ë?§6PV±ö[ dVãvôæ4jžÒß›‘lH\â÷ÔŒÅè{˜ØòMôå½È˜\ºåYþÜ€`9MÃ`Db‡<Á;a#zò†‘<Šx"ó,¨d‚gCi¿`‘c’›:ÁÈâI´â>jw·Ì}JÈÉz§^:V.ý:×þÚ‹{¿Í¼(ȲB÷æËɦ’ÉóxŽ<Db#"S£¡{ô’PùHu½N/ë{r6;wU¶æÐòsÖPО“<¤çXÀàYâsÔÄ÷ÞMxu°‡\šb‘Ús¸$Ž˜xŽÊ(¢‰/^|^*0j~mà¬;#·%J„ÞM4Çp˜QM׬ð::b\C2gf°°]½zÒP8T™ Uª“QbÖètºƒC½TŸ> p 8+6g_2–lΡ6§Hò ÚÎdžH:÷ d›<æCÍé6³¯Ø¤ê/«¿6ãE:ÂK‹”"Ë`kJ©<›ÏÆ¢ä=ùvž7„¥âN5·µ`°ò›¶Jt‹Ù\j¹6Í…%Ëž7ô*¥'¥•U•Ù4±:âX+ ä\bü’E äìôÞaf®ŠxŒ“}Á‰1+p™‹B¥Ë0î6òâ”åýž3rõA$Nš~¶ô#³dª}ÇפŸP7h÷H7b£FªžÂ§…‚¬8ð ³P>øBtGNÐŽ¢ðmä‚xô@j …‘¸|{Às9à»=þwRÙ/­«oDJs5z>“;Š'xÝñEÐq^ré^=G?½…9Aê¡æ–ÇAä_—£íK%µDÉ®:uikjkîIeÉæ½¬GúÕ#*¡†)µjm‘á|½t£¹}`Jæ©Z؈éÖ÷H=4î{gߢ¾)¡qXˆMA,šHøŒ7û1‰ëV"¥Ùo,çY#hýü÷ݨSò_ê;‹Ía_Ô—Z^cn4¢­ ‚H¸E«®?‰«°}Ñ È¡»­Üî¼Ù¤=}BžWvÞªUeðåhšƒÚGŠ“F…‰‘æ;@2S¥Øœ€@Ëf þÂËünÍâ2Ð#Žæ¹ñfÝY:]¿JyåH]­•-·˜G׌wgv'¡â|ˆÄ0eñ Ã_7ˆðÒ«n+fßÙ¸âàY<«ç(Í ª?öì’©‘yòù¡%wm¬+jƒ&&!è¢c“^¡u'bü&ñhŸm6¤šÎû¹*2 ?´AÇI«¶Æ²5FW¾Ø™[âÆœ¨BõUzïIÎE”“!’m:‹ÒûœxhÔe—ÝÇ®n¼z|]% mÙrÁU¸FÚ¯”ù®1Æ ‰};!n F¾& gòÚñÿP‰†Ý¯¯;&×ö©œøï$$¸éF«).t›BíQ¨3¦Ž½(žC=ú·Óä¦XÀÎØesÔ;Ýiû«¶­ÙŠ@¼Ñ~üNíÉΡEë ÔSR‹¡ˆh\éè£úÁBeñoº†½œ ´¹ÎbTÑ„nÎ’ju¹¾À g@ä÷'qQ딎nx.u6bVU&Ô ›]¹;Ûïª!C_ „ ž5Æ*Þz¹ɺûm€RQu‘ªq‚’঱PüÚZ0ƒ¶}mñ¼¡ÌÊõn½¦^nÕOrÉT¦âÁ‘µÎ:ŸUã'×hÀæ§0nZ¡p^Ré|DFª_b\ò@–Öm‚èDEë8Æ{oèGM‰á œq¸ÝÏ}ÜîSd ®C,ûiÀÜšEêŠé/°ÞË[d8]Ž×,MCIšÎÐó_u—,]V™cñ"—ä¤p°g@ì`"y)‹,;B³^e­žlÚ¡ª2'€.(ÍÐĘây>à-|Îh­ÜÓÄwšúþê;©jå¥è’íÕÑÒiÔ½±ä¯ê_o|!@ö)ɢݪÄ=ÙÌŒSPz—éˆ*!z})¼|ƧT}½j‘†E£tC¬Zå¡nŒ½ýœ*ÕžõÉ4ۆ׽[¹©± ¾9»Ð®¨Žèˆ‘’Ý“õŒz`Wmeôo‚‹|j8j­ï5á9¼öµ@.úšE¿VÌ/ÌZW@|—f_ç\"${ᜑv¡àòƒóœÀÈ/¸ò¶;a×:Se¦i3TäGË*ëÎýƒ]¸Æ¡/ÌhÀ2C32$¿Óô¿ü1}¿ŒD¤ÍNXÉøþtì?FÏí~n,Pj9.î–>×£ü¨Í{ 9ýÉEN-v|3h†ò‘CÅиE”•‡ XTàâË;P–$Ã=JÖ-ÝÕgÝ•ýùigz~q—(Aé<:h1±9³3áNì̽õQ‰‹ãÇ}CLØWùß§Â׎Ü~ƒá Úb™¥"†‡Í|Ç4u}îð­×Ùc™y€à‹È6°¡2ÿ[ ¥ØÖ\d¸,µÒŽÕ³bkù¤ÌDåä¾%0TÜx­®{=;öÔ·‹†(„i‡ ØLS·øß1½˜øý©Ñ3ÿNÏh/¤6?æ'E^ö~ÿÆÔP®{sZì™ZÓK”ÄžB{’DÌtø&‰½Ôz’Ó÷)µUoaù5Q¦3‘È—ˆr~¿Ž‘¾ ¦ôÙùF] $º<èútm(š} ûÃÏMB@‡ž[œGxìÎFÓh8›#}ˆô,£#À˜u ýLaz(ÞQh±4%Óxm`Uà•Õ¹.E¨ãv1a’ž4_'/[¨d±{Fx¨IÊ59žŒ ƒDõ<êì&8VˆEóFgÉÈ٠芘#õI‘äŸ2S²Íîÿ_ã©]QqAšnˆÑ_ðQç>bÞ˜4g¡¨­±-®0&E#c¦Üi8¿ vR/Õ4ÿržŠëšP7•£KsOWµN3ÕvE\bq†ûQß5Z¹Ú½Vy5]½Ööàh/ i)Åû¦Ž-/´°ã¡kµN¬Ñ޾ÈÄ#eì)"Píñü {ýKSQx‰²¸¦>aã&µí¶Ž,„  _èg¥´ñ-mác<×n]Ч-®5‘2c¨¹¡®ñz ¬7d Pœzóåµàòð²V„ö“û¥OPvf¼Rþ R¤ÓÆà°“9†Z -ŸÁÞd†÷®šˆ¿C›šñóÇ`,öatÁ=‡k?v¢í4#P è¤BÌ¡šØ¥¸/[õs.-bH)ɺzï '}¶×¶Ýîwœ!rÁXÎZе ´.:’Vn×;î-î>Š:á 6àrÿ½‡UÁcsÕ4k¬VW¬{’ú‰ð#­˜5ß‘0ÁBÝãìÇ`Üÿ0ušÑ".QÊÆ¬›dB´˜0£”õ˜CžÐrõ]íïà#íºQ9lqœàN^ôÖ³¯éôh~ NU\´ ¼16š ~éè“á”S‘n‡Tòl¢‘\þTHÒ²Ú›-ÙÉ~ªG~)$…oQ7-ë¯Cï°ÌÈì}q%/a™¦³vO°ª|[q4–‚Š’³~Bc-$NÜ7ž6½ŸwÒ{œV餃.&£ö(†o¹©*õn<§Øn9¡ÁJ– "a‡© ДÍÝ+¡† aÊ/»ýººð;7zDØZη{×tM Mp—£ iØšk¼NPwˆØ‘ͺðH`T ö$23–†fÓöÀÐÚ0šzÆÈ;­¡¦žç"ð]Œòª‚*ŽY²¤é,äQ¡WØàô¸lS鵯ÅOŽrW$5]K¡VÙ»Bâ…Üš…I¸ŠkÚ|ß=²&Á[ÔèêÞÑÞÅ58EÓR¤0Þ‹Gk«sSîñÁnãònnuãúñExKÐrô¢¬Œ}‡~mñÙ`ŽG4u{ÐÑñ=]6f¤÷âר BoÖ&< ™Ã±c;2 ®P$Ãǃ{mW_cžõª'B6Њ?$½^z[C—Y¹Ý­™é¥jÐNó~ þ¦Û®0¾»›út¢¯ú°Ûâ„6/)-‰1:p$Dꥅȗ ® ,'³†üyàõ±øÁv˜Ä …nœ‹F³T×Ñ™['a¦MbÎJ]»%&î¬lc6&ÂèIpFåÄ ¨ÜoðŒiƒªÄÉþã5± ø'r¨äËår‘(q¼ïèú®ëî¾z6Á°öžîÉ(5óÐáEôàÉ¢ÕŸl\…Lñkº7«°1ÅY4^)bٗ¦8ù¼yøÆªäÛ NžØ=ƒ›9zT–^[T$‡dkœ QâiK%áˆ6޵üqµéçõÌîfO|àÚàcÐ8$•ji^vrþ.QQR"âYárÄŠãâõ¸ ¨Ãkø’¥ÞrŸº¼Kˆ¢µû æè N·eíÏRiû4¦¾Õ!3Rù¢º"4¦ˆÈñúšn™bámÉ-y[X¦¦ÿÏñ."Æô!”øÜQK¯åE\Nëµ4gÕ ×ø§¿¦ƒï±aN¦p‚ >k)9ÁÁ0ˆBZêÌBs ö¥yŠrŽšer«)v¯¢®Dóëtèrv\ûvù[­ü>órµJmœ– aœò«µÌ¼›~uÝêêÕº>µrMZœ°˜cíB<øã`)\y×t|Ûïÿr'<†ô˜à>ù×Öþã[æÃŽ—ï­èh7ëú­þZÅŒ8caI!¹ ´p⢟ÍÌ®,¶GÃí »k 5@ÈÙô÷ÿ`ôÉiw ˆÒnО8pŸv¿ çÉé*²Â'O ÝÔüв ÝA[È.¡¤rhóT pR?+;Ëÿó\*H‹sLqÞæëUš¹f–â:ql-㤠ñ*6!…hç+ˬ{h·‰ö- jg±kÉMMÉ×P#ã¶ä:¼}‘±¸{/ÝëîVËßŶC]옙ê·&[³W$Ú«^ß#àû¸¶4fWa\ ‹Á5ìð躺M[6ž½)T§3—•›~üÚέÉÔÀ ã:. Z”¦¼¨`sÞi(ÍRô©Q…¼²Ì|/ú`ù ilÏ^°L# §÷òf¤-ñ×;-C;_ÜÞù*ù{@EMCooÂ_¤œÆÃõ7¾TöãrqzÜFµ%ׯ|™šUEÆ«Us^Ýœv{ ë¤¦fQ<Ä¡‰VPüïÃÊTfͦî?¥õmØpÙP*È&¦÷ÐQ‡G‰ù{cœJïñEPe2)ŽxP½0AÑßÍûMɪZH¶j•"×»"ÙA¬ÐC+zq‰mVzá–žóU%ØCµ:@1æãðW¹Š î[y)ÎJ@÷o±b% ÷j”A>)NÒÇ€Ôiç¼$’AóˆÀìt`>Ì?f0gÿH36pè6áÌD|ûM›ä áö4N¡° œ’ 4J½JÚƒ¯ µj¤ž˜Æ‡´ó\ íp 3ÓøŽ£8À¦ªÑã–Яï”»­6p®ùV?:¬$‚sDùÀNúµƹ‘2ï’n’,¶„HÝO\‚[¸øÕ¸›öKÙ-)«W~¹iém™?ÿ®ƒTÐ:°ÌðÞºUÖeYŒÓãŠ-#dJe)¯±ÚÏZªÕ5”?ø$»æ¡\d©W<·¹¹,Ɇ†š;¯Ø·¸Ã5ÍÍòS¸Õ¸¯¼—T«T–ñšÎÌ„f(PY°v=Q ~DX*¼ßÝ8øè¾©s- Â˨®Î€55 ­ X¢R¥l QCÏá¤Î á“øÑÀl|òý5Î{ûÓ¦T\t꼕+éï£e»nÅÛ¸‹’ÂPsÓèlû3™ùUO©[üÛîÇZ»ÉS3åÀîŸ*èì,˜ª†ß:ÛZþ¾ÆÔL‰›¬†ÕSô'̵æã*õòŒ*@¨øı~xgno2±¹áˆâ- …Œ ³W³Š«½V;äpZå9?~„«$«6Ÿ<”µQr‚bQ8&óse•ÉEb¯ÚQ,·þ^|B²µï碘ïVd¬V-¶(Ü]ã .ïèËŽ8/qhV¡nR®ó®QÈD‰*ùU(*1hç1Ã`ØQL{…Uj `àÒ"šo3Ü»æ™V¨l…µ: ÑíêÂØÀ jaFaàžE­¶ÌžZˆ‹g1±·zü°Ì2Ö Õ:ÍAuÙZIf6–ƒ2Õtw+Љ‰f§D‹ïÉ誩CL-}g»µZ³0>Ò„óxJ¢ýÿÅ>\îÁëQ‰¸AÚ_C¶i‚hßÒbl] ‡6ÞÕÞÜ4*šA˯ɰüqX‰¤7„»YòX.€-¾ŠÚÕ¸•aɇÃVâh¬–iKg•ÔÏqN³RĆN(r'Á]¼à%Ù˜„…­ôˆ@3ÔÍ€ÎÂj§Z¬÷J†.;üãnmÝú¯ÕÎ,SûûØ0x¯³ÃõøØÍ»£OF33­Ò§¶…«<$'Û»¸G—E+´Ú}¥¥Îóúó§…'1ðf3›ÆýÒyÐ5Ý/&¤Zœ\RBô7dmíô]æ¼8§§Â\Íý„3ß‚„Ȫ˜@÷ìo¿ûTé¿3eu^·W@Šªü”–ަe7l–!Bã,Às‚äæ1ÜÍß$šäò¯ÛZ§ã&Ù’ç?¯âdCéá (YЦSm>‚J"&ptÞ܈ªP㇄BF¬ø´Ú±àÙø4ŒGá5œ t^Ć$¯Þòj-aã g^ÁÊC¤–…ƒAsÖT=k¡TS,|€ràåš9I·½BϘЬ†ö'ÂìvGA¶Î@ÍtÀÌhQÕNj†&€åT=Îxt;2]¯P¡|T- LÞƒ’Éç¿ñe1ãݽWÃZÅš*MrH5?„ñ‚=àýÑo°¬"ëÆ9ÑK5Îø=«'kÉ-*•„èA¦E| þ Þ qÒ”‘_?\£7%öŽ|M6°fª+““+’S*}çW_Ü]3ª¨ú¶fmÜ®ØÒ˳ÒÜm w!–—î÷å.ÛR#‰é¬ª;Æíú¦±q qó71ŠÖä$•ݙկ_ÀóiKà&ìJ©Î¬M®Š¬öÞÇemåVÄ5PÏ0>¾¾ Qçµ5ª†W•©H­Ih×åù&ù4ÒIlÓE7}âsÈéÄm[cȾ좄|d^ ¢ì÷%Uvé1¦D“²>“.èT¬Ò7*é=tƒZ¸_§ãŸ¾1Ð¥:=0pZûš6Ò‹ŠN„t(åuíÆ­; ÇBÒ]³‘$€k¡ÚŒ€Â.ó{ªFÄ*/UZ’ÆNüç ¦|oqŠÊK—G;^Ö侞9N§ûeÿíxK‹ ’¡¨\‡whþøñ~¡òòZpHÔb‘‹Í䉸 »ˆÛ[k¶8âÉÍÌk÷â.bX.Q¾Xp¸xYa^µÐ"˜Ñ#럙ãB³wnb¤¿óåuÓð ém5žF²½~>ÇÐ8€­ÁbýúŽäN:Ýp4 µ[gv^ B½ÓFÐUzû)?œ¼60ÐFÉÉ8˜‚Â/2 ŒC8¨Œ®>N8GîÍ%ló%èÝ5ºFH˜{4„6h§Žï¸4Ž%Æ# 7¸è›ñŽÍúËx óoºÜN tª\•'ßȨ ¨ úæE£Žæ½0#ƒïj¸NãVïÓ¹dà?WlcW×ð‹ Äí ž½Öµµuû-“»}2„2¨¶¥EN¿}#‡äµµ2H^a3ðõ»¥r»Áqs§¤°ˆ„-S3&Èïô„f´í‡£ÌëÎfwl.š=Wø8å„,õàÒcHá®jžcTê±W®‘× s9ò0žî”ZàDÎM“ú¾C2’ZM’ÝûdjµŒtŸ"8À:gí{.Ʊ°Ð1Fb6ƒ1Ç8"yÔ¦>˜õ¿ ’­WÀ9£ë ÓVšŠŠö ¯`×j¿ý®š¿Tò””‘‘€²µr,nƒ©iÀ­Á ¥d³… ÿôéqN§ªÝ .g+ ïSÂë¼ Qúù·¾ë áKaB¾ŒÛà?_í‹ÛQE ‡“µr¸†ÿj¤î‚h>ô•E¦Ó›;C×­7…‹·^q¯ Æ`U¯eú#-Ÿ˜·;oJ˜Ä‹ãÒæŽÔ>) Çý‚;Jgí£Ï×­9R;Ogí¢ÅýiI7ú}—â8K¡’œÛq¦j¹ÑeØ“£+Ù—'nñÏ·k3‹Á­»üeFÏûžì…0±šò¯ßV#©íÆp¥MAzb^PŽ÷VÏu¤Û~Þ1uº—Ò“•wnÈ ^›.II—¡Š_ÆÌÚvdW®ÈöóÎ[Q,ÍÞè+L¾b‚í¾É¥å„ÆÄ‡q¼þ 9«V}ï ”ÎVÑw4qUä3&jÛıHYb¼ ü¹ˆ ¿ttTœõˆ7Ïò’«ÙarBwP9?)Ûu•é‹T/Ùa£•ŽA19–±kªM \ÓäPÝßs›<ØTažÐã@‚…õq±Ø+û£=Ù[5ÄÍ”·¶Ö×?²9£WÀÉ+^ýo¯^Eàã8s)åfç —2aôæ­QŸx¤·i‡é& NE>"^NaäaŸ;fŠÙÌ9]NE& t^°ÀCLz'âe…8ZRñs&6Þ²7_üãcyJž‘1 Äþ@TZ°?SD2û ‡|ÔPõÔËOÓŒé\dªRïÞðû7zHÕøƒî±9iÈ‹Q#µ¿¶‚zr³óc.ò4ö†GýR4ÎÈqx¦ð¾<2~X’hµ÷náãੳ¨Å2ˆauB­NCÑ+›¢k—Xó0Ñ aj5n>Þ‰¨õ²e3övÞ§Óôé<¥>°_²Ÿ Û uH: XRÿ%~9á!4öüoÑѼ¦è3…ºâ”8?¶‚ Î1d#ïÔÑü–šA&‹„„{A!i6 ‹ŒíÜ/XaŸ£á㇤=W‰;|ïðä) Ðg¾~£ ?*¾æ‚½Ã }¿ãÚ§ˆKtÌ>5|­E޵ÐîÑÜÕ.§ýôAûš Qñ6üú ²€¾(6 6Ñ”Æ7–Ú÷<9ùù_ð•CÁ f1þëÐŽéi8¾®†å», V»4$ÀŸutÉøœø£ÆiÁ,.`v6r â£òŽP ¯½gFBÉŽÇ tòÃçÚ C3½;˜ ,¼o“æãœx| /KóMp©1S_¾‘X.f÷Vª†#¼U>È’Èõˆ#Böñ]µ A‘IVoÀÌІϵÀ‘¿üGTV1nr+£ÎOXÂS•% ‹›³¶™f§OZ[Û_ý9œû‘P­ß°÷ {Gln‘%ß#ÚÛhÀdw¿H ù=† ¸y©e/íªW¼³´¶>Ò,Óö¬°IP,*MV•ð„~ºK&ãe¢Ä‹»ûMì½£=ò)‹qF¿ S¶ß´"ÉGÑëTšF™*¹LX,hŠ[—´º“§wŽw´íeñWQEÙxÚëº ?áè“{^Ú†EŽxïh»iý»¢×‚„J”³ÃÀH¥|ó^ÙÍ“Š…Ée*^‰Ð¯.ãuÚxE™èëËb#î;›’ôÔ<]z]\íƒ×¨wÚN»ho¼chq¸E˜£=ºçâ4Q1¸7ýÝçWü½Ì“lÕ6á§¿­HE_Ì£ ùqyÿ‰á YRŽ¤Û«ä9~l4sæVyù­™`Š×Uß›,ùŸþñ×Å#_Êu´ù+Deêêí™àéMÙü¢~h³qªë²‡’·#YúÊæñzü$;Û 5ͯ9$µË z²>ÿ ¾*jõOŸøŒñÛ$œÐ$O/¯ÀÃxRí½ƒÂtýf-}*žoïɦøÙÌ|3†M;xÞ¨¯U”•µl/.ñ~XÇŽ¯Yá¼4™x3&æë×x®";¤$KIö’5ÛdÚ­ ½Êáüú‹~w[ÊÔM9OØã%4ÒáQ¨}éS^žìt–è@ÑËæw[›Y;-ÝöÿÀºs;¢b¾ÍwH-* ï––Ãim½¶IÊ-¶1e/•~ø¨TNN®.òp²ßð)H$ûë«Wïß~ÎðµÉƦí¼O ( é9è†,Ù ]gM6rê+„#»%ƒà/süw¯Aœ$õŒqÆ4ËO> d9}÷+ðÑ$Œsôš³ý?0£™a,>y‹¹Úˆs<ðþ=†,ð‹c_*\âƒDí¼Ü}È2Mí°ÍÌT8/í4ægæ'Ú¦žâ8'û}"‹Câ*„\9½#Y>z$ŽæöÔ7c[s“|"$}» ymÌïÕÀ«zQx 5·%å oùå“$j†kÐÎp)ñx½Äû-:º†Ð˜|?˜oãøf§‡gFrÀžß2ŠS‘ÇZ÷Œq}qˆŠµ …o€,wyÅO¡gÊCF1Öl˜çŸ'íL5T3õò3ûÑðyª¦M‰9Ú2"s”˜ò5uD•‹6ÀÔ-Jì‰U†bsºÏ «O)ƒÌw¸R -2æ/5fÜ<ªBQÌ4kŒ˜ê­G¹ )%ß¼ãr’Ï›f@=šâBF™‹ïCB±©‰‰ƒ‡&'‡F}@©&ÓÈÿ„y×ubâÐÁÉÉC?'«êåñçSæ49+—Óä±Cø®³íIîð¤ÙŒ+×ç˜ëf/R«Uê ÌîC °Fu:C*£} †T:º¶}{ÂÜݽâ²·ÔuªÎ×ø•¬e[!®–>ú? ‹ÄåýÚ¸¸"ÇM 8gzƒô0\HkƒÔZ³:Ähå­~™@ª+ô#«Nê Öfj¾çyµîå‹ioÀ!„B÷ þñô·“±R'©5>Ú`Úò[!ÂÄTˆ`mCš I…ÑÃ}¸n >Wßô!M}UËavõ¶4€3)!§kcÈ‚²ómþ?’Ž Ýådïw•ãv«!×”;Xϡۨ}½8ívt•ëÐ"Ó¼# kÂvXŠJ™±[“l¶[ZÝ™MÀ§ñÃXC3lê–[ ÃTa¼Vj‹¡…ÚÊ»¥åŒÑ¬"Å“Ñò t:‚(žêà¦ÈÁ<¾cZóve—ýQ›ÇîT…Ÿ qHá‘i{ Ò銀Q埓'Á“Ö»“i öPØöï¿­èüȯáímKÊAçIŠõ¤BFƒ £=‰‰µâÖTá…½¶à(âœ&TSŸ?/ïØA:Ö·¬»ÐžV§(ø÷@wïFa^ã¦]…Œµäo]*Óñ99¬R¿iáñ_Ôò˜À™þÎË2vM“€Ø`P§“ôf¦´{QYÏ«íH#V7vÅ7ÌÒ° q>@àó«~uɘ׆Ax°Ã/ƒ«xÙ°Bþà3£Ä Ùô‰tƒÊÁy†b0ŒžnG`Á òEÚDìÙäA’Ô: ÆPØwIÓ7ÏìnWÓ÷2ED}.(h•Ü"‚óãU]¢9Iíh_îV¯@‡›GZ0C Üpb ó:ã™L 3¡tN*ªN ½2¿Ó!¼3Œ Ca³—yn.•ÊÝÉ‹Wâ`̳Ü}±QBÌCªÃi Á¡8*Ãï{57‰¹ìO#aT¢ËB½Ÿ‚½Uíoþi§0ç ó_ËðÑù^ ChrU}~rÈL 1òzÿ>..ö=%GÁš›GŒ£ ëüo ™‡ ŒEéu‘P³Psؘ޸èó8­ðüþP¨Ÿu&;æÊ*Œëù|i&¤ÿPbÛÈ›°²˜hÒ;´[—€|y*cƒVšh†Ò¼Ò(ÿ”~Î_A•qU2·½ÿôGIQÇ3`®^Êvþ=î@¬ÜK'¤µÐ‡èËZ#4sJ=º¤:sY©è sÚ¥bÂyj ¯ë·S_E܃"Žª‹Š@ž~‚Ÿç¹>­86ºñ#Îy±Úäå[ïècòSï„¥ÙŬ–”òò#­SJ”GZû®yvvÝßSùÑæ‰p¸waTšžÏõÅ/, 9'Jkv%%.†~oò[ÌóŸ è¡§üœÂR±Bj¢ŸSèÈ€*$'øè…©pçS¥u à+ç9\¬í_f+åòüù8õu\,¶ÊÓtæåðpžÑÐkØ®J0hó(]N„QÈvó³W¬ÇÌ7ó •8«ƒ6:ÜÖÝ£Ïâ ·ñWc“¯Y_i>ú¬ŒÝ"‘ßR¡çõ’â(Óe]Þ6ø¹ªRA%U—6&´F]”½7@̳k3X h?ŒÁKïà®ÞQ¤2™Bk¾[?.ÿ€Ã.K¡ÈKAbŽÌ6ýÞÄ5¿·kò’eŽ+]²FްeöWH©Uò«û0OÝ×§¾5…´øÿ ¤úîäe3H‡®coÇ>l]0¶2±ˆcý¹‡ÝHÊ9š{Z {sOõ–!¥A,þ7†?Å·3w俎A àFjÚÿ¸8¸Bí&8U$G…¡ÂµÙßé$µY5˜‚†FâL…5nÇì²Øò1–”> qóº2££.«6“e—é î ì¼Úõ—œ+˜–@/¬¢ð™µkíb{à÷(Å7Ði=¥É{l݂ͬ­âÎæ¿¦ï 8«…1g(»üè%ÎÓh/ëEf¶M¹ÒÝtŸ5½Ÿ̼vg½oÚ ê~à©›WKi父U«ßأݖ­w¬RS‚EìFíßT¬²%ª `=í‹ø|*=1‚ò*Žù»ý·S§Xö¬€·Ø^êòÓw)l–ÃÖfQHãúŒ(YSþô„SËŒK·æ1ÞØâíW]µf™Ÿ·°7ך³^&ýpô@T'.ìÀ%3³•„à š¯´ßÞò»ù5ÏzaTf6Ñë©A5ÜL•óXÌ¡æ·Á|ñL¸-Ÿå–ηêÄT×g{A)ªî­®FÑ•."hü“ùj¢ A;.ðâ~Âþ …oÞ%°è ýG#Ñ}&]Þ×¾cÜ`C»hH9xnN†·Y Îlð²cÞ¤\+v\EŸ¥«Æ§1¦D9K·Xá)2b.¿ó­“NôÚýW¢§ŽÜQש$¥/£”|6tð™Ã32Ô›£´7¡¡¦–2¸ÑÛиyuü0e×ñ€)’NØuh'dœ¶Ãî„õ~xY‰É ‘´>ÄÚ# bˆ"k3Ó𠼃®Ì: 9¿º¢vˆú$ПCÝ:Ê)H¹Ë> Õ¦šzÇÛ;e“d\jmfŸäOÏa%ò9š‘ˆcK›xÓÐÛ¥Å!k©%HÞDn“ü{YÜ"“{n_Ö} ß)9ƒ= _/û‡ZÎ(éù>lú¶­÷YžŸÖV÷‹gQ#§ß­:QÄ•ÈbwƒÇ÷Õ$¾zw±ðÙ®‹#¿»ãU˜?|ÅðïGÔ΄hÁzü{ùoº$wñ×Ïœ´º)|Vh‰Ú?»Œ ZV7¾%ŸüGûo/£×†‡ôéEÏ"¹KÓ²… ìµl¥p76Î-z !Ál€4n>”¼$\á×zV?szûqejìQçëé]m‹›æ^æ=^µ ä§í­¥! ²ºl…ôHB4sL i9}Þ2¢^×ýKÐ5ÅOBú)èíO ­çv^~ªêµýïÝ€x¦“rm\KÚ&G^Ð5CçÐL¼}&Fºò”ÀËâ¨B]K†¡n3††|ÍsGjyðkþO¯µÚbåsܽæaW?R6ð¡·²¾JÂÇfhãÚ2 ÄÊlBS§\=¢jÕÕV—Ê*”ôY¦“^¢¢Á™„˺^E)Õè*”\½Ÿ  ‚rÔr(a¢@ø„6nÔŒ£?¥}ÚdL°©¦šg¢IvqØNcÐÇa‘Æ®kŒÍ÷mLŒöcÁA!¤±hd¸£±Vëðµ¹Îòwc=¢¦æ†–áæ–Õs_Ò:ŠÿÒ—•¢sLËí£g>‘œ—1Ü*4-%ð&Ëõ0Ubƒ)Eܬ†*b¸ÔÖ51—Äï„ç ä+è+;˜Ž<…«†’`!q°fÍÎMù*Æ,[/GK+{×®,>CâLŒóR%%cŒ³ÂÆÃ~‘’'EG†A‰®GºÂ=‡hÂäŸ”Ž°8:IDìN)ÅWÌ»áAF)ucw'qhÍXè²L@a„¾~Œ6ÌPc2Lã"¥A…2bìÈU ™À&Œ€‹ÿ ¯9öA#ÓQLO¬:E€9k§©’‘ÆfÞKF•b93tºL$c‰Ë¬pÿLzÿ ¿5ÔdÚp¢þðùÛ°>$`œ.÷ï«~Xó=¶¡ã?„ NͰ/ŠÄ©L®PªÔ­No0šÌ«ÍîpºÜ¯Ï ‚b8AR4Ãr¼ J²¢j¿}øŸÐ Ó²×óƒ0Š“4Ë‹²ª›¶ë‡qš—uÛóºŸ÷ûAFP 'HŠfXŽDIVTM7LËv\ÏÂ(NÒ,/ʪnÚ®Æi^Öm?Îë~Þï÷‡à ’¢–ãQ’UÓ Ó²×óƒ0Š“4Ë‹²ª›¶ë‡qš—uÛóºŸ÷÷ÿb$œ«tV&g®Ï–íÁr>¿<Ùyóå?’“˜ûfþ{ç´·£‰µ›ž%îµïÇÌ~ßZûþaÅzW¾¿¼÷ÜõÝ2ŸµsvïÀÌò™ÙeW«‰µ‘à@DDDD$""""bffffÖ}X ÓO„0ÆcDDDDD¬µÖZ›6Wò08BÖçI¥ƒ.H¬W ¢ßˆÇÐ9 ‰u„*¥”R*J^}€Ä:M”´$I’$IÒF‚‹™™™™yÑŸžûÞóÀ_WÍÆý32+&/#"&/.=/&6?#"&'&546?>;'.?654676X& žjžà  àžjž )"& žjžà  àžjž )L àžjž )"& žjžà  àžjž )"& žjžà LL#32!2#!+"&5!"&=463!46ÂÈ^þ¢Èþ¢^Lþ¢Èþ¢^È^p@LE32!2+!2++"&=!"&?>;5!"&?>;&'&6;22?69ú þ” x } x } ” þí x }þí x vþ” ú¤¤L þ”   d   ®  ®   d   l ¤¤dŒ®;2#4.#"!!!!32>53#"'.'#7367#73>76èòp<µ#4@9+820{dþÔ–dþÔ 09B49@4#®bk§Îv$B ÙdpÚd†>u®½hi-K0! .O2d22dJtB+"0J+«kuž0ªwd/5dW…%{L°>G!2+!2++"&=!"&?>;5!"&?>;4632654&#¬^CjB0  0BjC² x Š • þõ x uþõ x u¶Ë@--@°$?2O*$ $*P2@%d   ¯  ¯   d   Û ÈþÔBVT@ÈL¼!2#!"&=46ú üà¼ÈÈÈè°%A+32!546;5467.=#"&=!54&'.467>=è2cQQc2üà2cQQc2ÈA7 7AA7 7A°–d[•##•[––––[•##•[d–Èd76!'ö ˆÓûPÔ‡ $ op zy¶Ã³#»ý%**%ê·$ ”–üpd°L #7!2"'&6&546 6'&4#!"&7622?62~ ýÌýÌþø Œ þø\l û‚ l¤¤L ýÉ7 Úþøþø & þð ýÚ €þ” l¤¤ÿðÿ𺺠2'7' à&™ cÖ_"ý™Öfþþ³nº ™&\Ö`þtýšÖfüjpO°°32!546;!¼úüàúþ °ŠýÚ22&&Lœ%6.676.67646p…'0SFOˆ$WOHBý¨XAOˆ$WOHBù£"üÁ7Q)mr ›ý¢*`)nq&* ÿø»§)2"'#'".4>"2>4&ȶƒNN;)þíwŽd¶ƒNNƒr°”VV”°”VV§Nƒ¶dyþî%:MNƒ¶È¶ƒ[V”°”VV”°”dX¯D>.54>‰0{xuX6Cy„¨>>§…xC8ZvxyµDH-Sv@9y€²UU²€y9@vS-HÿÓ^{”62!2'%&7%&63—ƒ¥þª‚þ©þª‚þ¥ aþŸ ùþo ö÷ û ÿÓ^{”"62!2'%&7%&63#7'7#'—ƒ¥þª‚þ©þª‚þ¥óðÅJÁÃJÀêN aþŸ ùþo ö÷ û dŽâ‹ŒåŒÓ°°&2##!"&=467%>="&=46X|°>& f  û‚  f &>°°°|ú.hK æ ]  ] æ Kh.ú|° °L#'+/37GKOSW!2#!"&54635)"3!2654&33535!3535!35!"3!2654&35!3535!35~  û‚ Ud£ýÚ  & sdüd düd dáýÚ  & üïd düd dL ûæ   ddd þ¢  ^ ddÈddddÈddddd þ¢  ^ dddddÈddddLL/?!2#!"&546)2#!"&546!2#!"&546)2#!"&5462þpmþpý½þpmþpLþpþpý¨þpþp LL/?O_o32+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=462ÈÈ¥ÈÈ¥ÈÈüõÈÈ¥ÈÈ¥ÈÈüõÈÈ¥ÈÈ¥ÈÈLÈÈÈÈÈÈþpÈÈÈÈÈÈþpÈÈÈÈÈȰL/?O_32+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=462ÈÈ¥¼ýDþ…ÈÈ¥¼ýDþ…ÈÈ¥¼ýDLÈÈÈÈþpÈÈÈÈþpÈÈÈÈ&,è  62"'&4?622Ñ;±üñþ€±«Ý;±üð€±«nnBB# "' "/&47 &4?62 62ˆ²þõ ²þôþô² þõ²  ;³þôþô² þõ²  ²þõ ÿëÅ™%I2"'#".4>"2>4&3232++"&=#"&=46;546™Ä³‚MN,mþÔwŽb´MMo³˜XX˜³™XXþ¼– K  K – K  K™M‚³byþÕl+MM´Ä³‚MX™³˜XX˜³™# K – K  K – K ÿëÅ™%52"'#".4>"2>4&!2#!"&=46™Ä³‚MN,mþÔwŽb´MMo³˜XX˜³™XXþX^  þ¢ ™M‚³byþÕl+MM´Ä³‚MX™³˜XX˜³™‡ –  – ™°-32+"&5465".5472>54&&dd§Ò[›ÖêÖ›[Ò§g|rÅèÅr|°þpá¦>þÙ¸uÖ›[[›Öu¸'>¦7ÈxtÅrrÅtxÈd°°/?32+"&54632+"&54632+"&54632+"&=46–  – þÞ–  – þÞ–  – þÞ–  – ° û‚  ~ þp ý  î þÔ þ>   È ú  ú ––GO27'#"/&/&'7'&/&54?6?'6776?6"264X!)&1-†=+P˜˜P08†,2&+!)&1-†<,P —— P/:…-1&+x²~~²~–˜P09†,1&+"(&1,†=,Q——Q09†-0&* !(&0-†=,P˜þ™~±~~±d°!%)-1!2!2!5463!546!5#!"&53333333ô,); û´ ;),,;)ýD);dddddddd;)d KK d);dddþÔüà);;) dýD¼ýD¼ýD¼ýD¼ Ñ62++"&5!+"&5#"&l` ¯ ú þÔ ú ¯ j`ý  ýÁ  wþ‰  ? dè°3!#!"&5463#"&=X;),üàRú°þp);ývLþpú™™02".4>"2>4&3232+"&546ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrþ|2 ¯  ú ™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅ  þí 2  ^ ÿœ° )#!3333ýæ)ò)ýæ¯Ñ¢Ðþžàþp°þÔ,þpþÔ,d°°/3232"'&6;4632#!"&546;2!546&È¿ þ¹ & þ¹ ¿T2  ûæ  2 „°þ>þpÂüà þ¢  ^  ¯¯ ™™12".4>"2>4&3232"'&6;46ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrþ|– ‰ ß & ß ‰™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅ  þíþí ™™12".4>"2>4&%++"&5#"&762ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrþçß ‰ – ‰ ß &™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅþíþí  °°9!2#!"&'&547>!";2;26?>;26'.áî º û´ ¹—ýÔ W – & ú & – W° ýtþW  ©Œ È þ>  ˜  ˜   ™™'2".4>"2>4&&546ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrþ‹ýý™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅ]¾ $ ¾  ™°(76#!"&?&#"2>53".4>32³‡  þ– …mtÅrrÅèÅr–[›ÖêÖ›[[›ÖuÀ$‡ þ–  …LrÅèÅrrÅtuÖ›[[›ÖêÖ›[™°576#!"&?&#"#4>323#"'&5463!232>³‡  þ— †ntÅr–[›ÖuÀë–[›ÖuÀœ†  h …n‚tÅr$‡ þ—  †KrÅtuÖ›[ý¿uÖ›[v† h  …LrÅ d°°/?O_oŸ!2#!"&546!"3!2654&32+"&=463!2#!"&=4632+"&=463!2#!"&=4632+"&=463!2#!"&=4632+"&=463!2#!"&=46}  ûæ Àü®  R ý2  2 Ò  þ> ¾2  2 Ò  þ> ¾2  2 Ò  þ> ¾2  2 Ò  þ> ° û‚  ~ È ü®  R d 2  2  2  2 È 2  2  2  2 È 2  2  2  2 È 2  2  2  2 L°#54&#!"#"3!2654&#!546;2„uSþÔRvd);;)„);;)ý¨È ÈSuvRÈ;)ý¨);;)X);––dLL 732#462#".'.#"#"'&5>763276}2 dÀ!C@1?*'),GUKx;(.9)-EgPL ûÍ3 0þ[;P$ 9¶7W W°—!1A2+"&54. +"&54>32+"&546!32+"&546äèÞ£c 2 äþúä 2 c£*    `    —c£ÞtþÔ  ,ÑrrÑþÔ  ,tÞ£ýÀ þ4 Ì þ4 Ì ÓGÝ9%6'%&+"&546;2762"/"/&4?'&4?62A þþú  úXx"xx"xx"ww".¬ ý ¬ ^ „x"xx"ww"xx"ÓrÝ/%6'%&+"&546;2%3"/.7654'&6?6A þþú  úÒ `Z  HN.¬ ý ¬ ^ d ¡š g~„jÄbì1K3#"/.7654&'&6?6%6'%&+"&546;2%3"/.7654'&6?6Ç ‡D@  *o;7 *ý‚ þþú  úÒ `Z  HNì ³ÙiËT "–²Z¬G !¾¬ ý ¬ ^ d ¡š g~„j °° !%-;?CGKO3#!#!#3!##5!!!!#53#533!3533##5#535#5!!#53#53#53!5!ôddþpdô¼ÈÈþÔÈdXû´,,üàdd¼ddýDÈþ ÈdôÈdÈddÈ,ýD,ddd„ddþ ddôþÔ,„dddXþ dÈ,,ÈdþÔ,þÔ,Èdddþ þ ôdþÔddddÈdÈþÔ,ÈdddþÔddd °° #7#3#3#3#3#3!5!#53#53#53dddÈddÈÈÈdd,ÈÈüàþÔ,ÈddÈdd,ÈÈÈèüèüèüèüèûPdd[[[[[ ¦°  "'463&"26ôªþ0ýV C;S;;S;°ýVþ0ªÛ Í;;T;; Ò° ! "'463!"/ &"26ôªþ0ýV ªþ08¨ýDþÓ;S;;S;°ýVþ0ªÛ ýVþ08ª¼Í;;T;;d°°&!2&54&#!"3!2#!"&54?6,9K@  ýD@ ¼  ü® ‹°Kü|@ ¶ @  üJ  Ï‹ÈÿÿL° !2 46ú þ>þ>°û‚¼þC°°EU!"3!26?6'.#"#!"&/.+";26=463!2;2654&!"3!26/.6þD N9  >SV– N ýÚ N –  –  î  – þ±þ & X &° þÓl l- þp œ œ  ýv  –  –  Š ý¨ ˜  ˜ d°L!)13232#!"&546;>35"264$2"&4ôÈ8]4$–);;)ü);;)– '3]ÈdþϾ‡‡¾‡þïV<?!©(% þ_5,Rþy:" *2þ“8 ¬T¢¯ü2*BBW-Þ‘Y". BB % îýZÉdð°'2;#!5>54.'52%32654.+32654&+ñ50;*7Xml0þ ); !×9uc>--þ‹Ni*S>vØPR}^Ÿ3:R.CuN7Y3(;  G)IsC3[:+ 1aJ);4ü®ePZÈo°!56764.'&'5mSB„ ,Jþ º­  °95(ü¹1(aaR@ 9ÿµ°%/#4.+!52>5#"#!#3'3#72 &È2þp"È& 2èû›KK}}KK}„ ü®dd R ,Èüà§§ §!ÿµ°%/#4.+!52>5#"#!5!'7!5L2 &È2þp"È& 2èC§üà§§ „ ývdd Š ,û‚}KK}}KK°L/?!2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=462Xý¨èü üàLû´LddþÔddþÔddþÔdd°L/?!2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=46ú¼ýD³Lû´Ý¼ýD³Lû´LddþÔddþÔddþÔdd°L/?5463!2#!"&5463!2#!"&5463!2#!"&5463!2#!"&ôXý¨þpèüÈ üàþÔLû´¶ddþéddþéddþédd°L/?!2#!"&=46!2#!"&=46!2#!"&=46!2#!"&=462Lû´Lû´Lû´Lû´LddþÔddþÔddþÔdd°L/?O_o32+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=4632+"&=46)2#!"&=462ddA üàþéddA üàþéddA üàþéddA üàLddddþÔddddþÔddddþÔddddÿœ°L#*:J!#;2+"&=46!2#!"&=465#535!2#!"&=46!2#!"&=46dd–ddôþ þú§ÈÈÂ,þÔXý¨LddþÔddú}KdK¯ddþÔddL#*:J32+"&=46#3!2#!"&=463#'7!2#!"&=46!2#!"&=462ddgddü®ôþ /Èȧ§ûæ,þÔXý¨Lddû´LþÔddÈdK}}¯ddþÔddȰè!2#!"&546 Kî,,ý,,„þÔ,è,ýv,,Š,ýD,,°L!2#!"&5467'2"&4,Xû¨J÷*J%ìüÒpNNpNLü ôdý¶ƒœ>þàôtNoOOoÛ6‘2.'&54>"264ˆuÆsFE²66 !^Xm)!fh˜H„uX£yH¸¸™™2".4>"ãêÖ›[[›ÖêÖ›[[›KtÅrrÅ™[›ÖêÖ›[[›ÖêÖ›üoVrÅèÅruß5.54>6?6&'.'&76#&*IOWN>%3Vp}?T›|J$?LWPI¼)(!1 )  Huwsu‡EG€^F&:c—YE‡vsxvýþ!K‚:%A'# " A)Y¶ Ël */7>%!2!"3!26=7#!"&546 7èl lý27»þ);;)ô);È»£þp¥¹¹8þ–¡7cõs* sÈ »;)þ );;)¶Èþ´¥¹¹¥¥¹þ×þ–2ªc“L6!#"3!2657#!"&546&'5&>75>^i¤4Ã);;)ô);ȹ¥þp¥¹¹Sþ¬ 9dTX .9I@F* L’6;)þ );;)™g¥¹¹¥¥¹þÓþÎ Ë 0!;bA4Ò L5!2!"3!26=7#!"&546 62"/&4?622^^ ªÈ þø Ȫ þüþø ¯È þø ȯ –þø È­ þüþ÷ ­È þø È­   ­È È„L326'+"&546údÐþ0dLþJÅüÅþJè°L#3266''+"&5462dÐÐþ0þ0dLþJÅþJÅüÅþJÅþJè°3''&4766°þ0þìÐüÅþJà*àþJÅÈ36 &546ó.üÒ2þ  þ èÈd„è32+"&546!32+"&546úÈÈ¥ÈÈèüà üà ÈdLè#!"&5463!2Lüà ¶üà 346&5&546ôìþþ0d¶þ *þ ¶þ;èÿþ³O#72#"&5&5&5464646ddþ1þ2ÒÒNüµþ: µþ9 è þ>¶ þ=¶,èL32+"&5&54646Rddþ0ÐLü¶þ;èþ;¶dȰH  #!"&762!2#!"&=46®õ ûî õ*ý÷èü9ýäýHddˆÿüuJ  uþ `ÅýØ(„þŸþŸÆ(&;ÿü(J ' 7(ýÙÆaþŸÆ#ýÙÆaaÆ™™32".4>#"#";;26=326=4&+54&ãêÖ›[[›ÖêÖ›[[›}d––d––™[›ÖêÖ›[[›ÖêÖ›º–d––d–™™2".4>!"3!26=4&ãêÖ›[[›ÖêÖ›[[›Eþ ô™[›ÖêÖ›[[›ÖêÖ›þ~dd™™32".4>"'&"2?2?64/764/ãêÖ›[[›ÖêÖ›[[›å xx  xx  xx  xx ™[›ÖêÖ›[[›ÖêÖ›­ xx  xx  xx  xx  ™™$2".4>'&"2764/&"ãêÖ›[[›ÖêÖ›[[›T‹òw‹™[›ÖêÖ›[[›ÖêÖ›þ1U‹ñw‹™™;K2".4>";7>32";2>54.#";26=4&ãêÖ›[[›ÖêÖ›[[›?2".4>#";26=4&#";#"3!26=4&+4&ãêÖ›[[›ÖêÖ›[[›––  –  ú  KK  ^  K™[›ÖêÖ›[[›ÖêÖ›V –  – þÔ 2 È 2  2  °°/_3232++"&=.'#"&=46;>7546+"&=32+546;2>7#"&=46;. – g—  —g – g—  —g¹ – Df¨  ¨fD – Df¨  ¨f° —g – g—  —g – g— þͨ  ¨fD – Df¨  ¨fD – Df™™?2".4>"2>4&"/"/&4?'&4?62762ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrš@||@||@||@||™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅZ@||@||@||@||™™02".4>"2>4&"/&4?62762ãêÖ›[[›ÖêÖ›[[›¿èÅrrÅèÅrrƒjþÀÊjOÅ™[›ÖêÖ›[[›ÖêÖ›;rÅèÅrrÅèÅ}jþ¿ËjOÅ™™!2".4>"&32>54ãêÖ›[[›ÖêÖ›[[›KtÅrAKiõý¸hstÅr™[›ÖêÖ›[[›ÖêÖ›;rÅtxiKAÐý¸>rÅtsS°ù6!2#!'&4' &ýÚýöF« þÝÈþÝ « &S™ù &5!"&=463!46 ýöýÚ&ñþU & þU #È# ·]™ #!+"&5!"&762ª« þÝÈþÝ « &‰ýöýÚ& ·]°32!2"'&63!46&È# þU & þU #°ýÚýö &·™] &5>746 ýö^°¥$,[‡Ç~UþU & þU #$DuMi±qF °°+!2/"/&4?'&6!"&546762R,^ùjù^þ!þÔ^ùjù^°þÔ^ùjù^ûP,^ùjù^IIgg+#!"&546762!2/"/&4?'&6öjù^þÔ^ùý ,^ùjù^`jù^,^ùýñþÔ^ùjù^™™/2".4>#";2676&#";26=4&ãêÖ›[[›ÖêÖ›[[›³Ð:#6#:1–  – ™[›ÖêÖ›[[›ÖêÖ›ºþÒ.þ  –  – °°IUaho276?67632;2+"!#!54&+"&=46;2654?67>;26/.'&;26!"&5)#! Ä &Ä0  =  2 þpÈþp 2  =  ¦ Û 3þ5±3 ç þ‰ X þ‰° v  v !{,  2  ¯,þÔ¯  2 0€y¢  • ª  ür wþ‰  ¯¦+I6.'&&&547>7>'.>7>&67>7>7>-Bla‹bŽD8=3™*U  :1'Ra\‡{À%&¢=>8\tYR-!Šq[Fak[)¦²þÝÈ•X1 ™"@&J<7_…?3J5%#/D &/q!!6ROg58<'([@1%@_U2]rÏO.>7'&767>.'&'.'&>77>.'&>' '8GB    `ŠH  >JS>H7 '+" NA 5M[`/Pg!;('2"&"IbYÏC€e\D9$ 886#1%)*ƒ‘§—J7gG:    8G\au9hªoK$œ]54<&"&5476&2>76&'&6?6&'&'.¤{nO9:On{¢{nO:9On{°ø°FZ  2Z_ƒˆƒ_Z2  Zýÿ# %8-#,- "F-I\b\I*I\b\I--I\b\I*I\b\IÜ9>|°°|;7Es1$F^D10E^E$1u$/D0 "%,IÿÜÔ°';L!#7.54>327377>76&'&%7.5476&6?'&'.P”[©vY,9On{R=A ”&/l‰'Pj˜R.Mv&  6ýQFZ  *HLh5)k|# %8- ,- "xatzbI\b\I-yþRµUÖ4Zrnc­1ˆ?1FrEs1þ­þ»1) ùþù]@ €€ @]ù )1ES>L°'+/37;?CGKOSW[_c3232!546;546;2!546#!"&5353353353353353533533533533535335335335335Rd2û´2dôüddddddddddü|dddddddddü|ddddddddd°2––222þpýîÈddddddddddÈddddddddddÈddddddddddw—%7&=#!"&=46;3546'#"&=463!&=#'73546oùùŸý¨þÝÑXñý©zÑ#ùùñµzŸæ*æ–ý¨dX–þ˜zdþMæ*æ–µz–°L!2#!#"&546dè);;)ý¬þÐd);;L;)ý¨);þÔ,;)X);dL° ?32!546!32!546".5!2>&54=–ÈþÔÑÈþÔ(LfœÀœfL(, '6B6'°úúúúþpþÔ)IjV\>((>\VjI),ú +'%! !%'*úÿÿÔL 'LÆþŸþŸÅ'›ÇaþŸÇ'îMÜ 7 MýÚýÙÆaaýÙ'ÇþŸaÿQd_è)!232"/&6;!%+!!"&5#"&?62”ê–æ*æ–þƒþæ–×ý–æ*èýÙùù‘¸ùþpÈ&ùž°032!2#!!2+"&=!"&=#"&/#"&468^&€d,!ý‡02*þÔ*É6°¢%þ%+È*2222 Á*°L !53463!2!!°ûPÈ;),);ýD°ûPèdd);;)ÈüàÜL 3463!2!!ÈÈÈ;),*:ô,þÔûP, þpX);;)ÈdýD¼Ek¯+32"/&6;#"&?62{æ––æ*æ––æ* ùý§ùùYùD¯k&=!/&4?6!546¨ùùý¨ùùX`å)å —— å)å •• °° !.#!"!"3!26=4&53353‘¬$ý`$¬-ü);;)è);;þ«dddÜ-(ýd;)d);;)d);Èddddÿœd°L #12"&54%##"+"&'=454>;%".=4>7i**dý]&/T7 È£ü" Lü®Rü™ÈþìQú úþÔú )2( Jf°,53232#"./.46;7>7'&6327"&)^Sz?vdjŸO9t\U>/ v?zS$2451 7F8°%Mþ¹­)(  ()­GM~ û¾1==œœ7'''7'7'7'77 àNê´´êNà-››-àNê´´êNà-››²Nà-››-àNê´´êNà-››-àNê´´d°°!-=32!2+"&/#"&54?>335!7532+"&546Š2(<H(<î,úF=-7‘` 1d–dˆÖúþ>2ývdd°Q,–}Q,d-þ¨!2$'$ÄÆ(dÔÕþ‰dw}á¯þÔþ ô°L 0<32#!+"&/&546;632+"&546!#35'!5Xú,î<(þ¸<(21 `‘7-=|ýédd_ˆd–d22ÂúL!þ¨-d,Qv–,Q(ÆÄ$'$ddþ ôdþ‰ÕÔ¯á}wdO7G%6!2+#!"&5467!>;26&#!*.'&?'32+"&546dkn  T.TlnTjƒþª¦:d%ƒËþ8   ’VýOddiæp &yLNþ­(¢  % Hþ YS(22·Säþ ôÿœd°O6F#!"&'#"&463!'&6?6*#!32!7%32+"&546Ûn ¬þªƒjUmlT.U  nJ’   þ%Ý‚&jþªPddOæ ýó ¢(SNLy& p®·d(þ­Y÷ìäþ ôaL7G2#!"&/&?>454&/!7%.!2#!"&=46ÞNS(¢ ýó% æp &yÆ22·Sì÷Yþ­(–ôþ nTjƒþª¦kn  T.TÖËþ8   ’Vþ­d%ƒý ddÿýè-I!26=4&#!""&5&/&7>3!2766=467%'^ôþ NLy& pæ  ¢(ý‰ìS·22(SYLddüæjTnlT.T  nk ¦þªÏþ­V’   þ8˃%dšš%2".4>%&!"3!7%64âìÖ›[[›ÖìÖ›[[›†þíþí  š[›ÖìÖ›[[›ÖìÖ›þ9ß ‰ – ‰ ß &šš%2".4> 6=!26=4&#!54&âìÖ›[[›ÖìÖ›[[›%þí  þíš[›ÖìÖ›[[›ÖìÖ›èß & ß ‰ – ‰ šš%2".4>&";;265326âìÖ›[[›ÖìÖ›[[›Kß & ß ‰ – ‰ š[›ÖìÖ›[[›ÖìÖ›þ@þíþí  šš%2".4>#"#"276&+4&âìÖ›[[›ÖìÖ›[[›—– ‰ ß & ß ‰š[›ÖìÖ›[[›ÖìÖ›» þíþí ˜˜–¦2".4>%&277>7.'.'"'&65.'6.'&767>'&>7>7&72267.'4>&'?6.'.'>72>äèÕ›\\›ÕèÕ›\\›d+: =?1 " "/ ?9 #hu!$ 0 E.(,3)  (     *!A 7 ,8 !?*  ˜\›ÕèÕ›\\›ÕèÕ›  ' "r"v G  .&* r$>   #1    %  *  '"  $  g2( % ¯…67'"/&47&6ô¤Žþý‘ûPM<†;ý¬+oX"O…\eŠè~Y‡+" ý¬n+WeÉ`°¬#'7;!2#!"&=46#3!2#!"&=46!!!2#!"&=46!!dè);;)ü);;ÈÈüè);;)ü);;þ ôüè);;)ü);;þÔ,¬;)d);;)d);ddÈ;)d);;)d);ddÈ;)d);;)d);dddL° !2#!"&46!–„ü|;Èþ¢„°**ýDþÔÈôôd°°%32!2!5#!463!54635#!"&=ôÈ);,);þ Èþ ;),;)Èô;)ü);°;)d;)þpdd);d);dddýDÈ);;)Ȱ°+AW!2"/&546)2/"/&4?'&6#!"&54676276#!"&?'&4?622,^ÇjÇ^5,^ÇjÇ^þ/jÇ^þÔ^ÇË^þÔ^Çj°^ÇjÇ^,þÔ^ÇjÇ^ý&jÇ^,^ÇÎ^þÔ^Çj¨¨#;CK2".4>"2>4&$2"&4$2#"'"&546?&542"&4$2"&4ÛòÝŸ__ŸÝòÝ ^^ Æà¿oo¿à¿ooþ-- - L- 73H3)z þ‡- - - - ¨_ŸÝòÝ ^^ ÝòÝŸWo¿à¿oo¿à¿ -!!- -! ‘$33$ 1~¤ - - - -ÿØZ¹¼[%676&'&#"3276'.#"&477>32#"&'&6767632'."Õ[v_"A0?! þˆ-  Y7J3$$ þ«)G"#A.,= # (wn‹kV8@Fv"0DÿG([kPHNg8Bþ*­Ö[eb›2!þ‰5(7>B3$$' þ®)M"#!7)/c# *xn‰fL@9N¾DÿH7!$†W]µBþ$&dX¯DD>.54>"".#"2>767>54&‰0{xuX6Cy„¨>>§…xC8Zvxy#!?2-*!')-?"CoA23:+1! "3)@ +)?jµDH-Sv@9y€²UU²€y9@vS-H-&65&&56&oM8J41<*.0(@  )*D*2Om9ÿòw¾.2&/7'/&477"/&4?«»BB8"._÷þ{ÔiBBi BBþåBºBBB7._÷…¾BB^*k"5._øþ{ÔjBºBþFi BºBþåBBB»B77/_ø…Èè°2#!"&54>!"264ªšd:;)ý¨);XþÿV==V=°.2üG);;)¹3-ªýD¼ý=V==V°° "/''!'&462†*$þéÔþÌþèË3Ò, #*¡þæ*#þõþÔÒþÍË4Ô$*' à2@K#.'#5&'.'3'.54>75>4.¼&ER<,Ÿ 3'@"‹ª MOW(kVMbO/9X6FpH*Mþ6&+ÐþÊ  4C4%df”­J2#4.#"3#>36327#".'>7>'#53&'.>761T™^™'<;%T)ñÅ-6"b Œ"S5268 jt&'V7  0 $ݦ -$a­P‹N(?",9J0* d2‚>2 "“" ‘  7Gd/9+DAL!Xÿÿ—°32"/&6;3+##"&?62–æ*æ–Èæ–È–æ*,úú„ùü|„ùÿÿè°%#5##!32"/&6;3353!57#5!èddd,ý¨–æ*æ–È‘dcÈÈþÔÈÈ,¼ddôü|úú„dÈÈýúd–údÿÿè°!%32"/&6;33!57#5!#5##!35–æ*æ–ÈXÈÈþÔÈÈ,ddd,Çd,úú„–úd–údûPddôdÈÈÿÿL°32"/&6;3##53#5#!35–æ*æ–ÈXddÈddÈ,Çd,úú„þ dûPddÈÈÿÿL°32"/&6;3#5#!35##53–æ*æ–ȼdÈ,ÇdddÈ,úú„þ ddÈÈû´dÿÿ°°32"/&6;3#53!5!!5!!5!–æ*æ–ÈôÈÈdþÔ,dþpdþ ô,úú„ÈÈþ Èþ Èþ Èÿÿ°°32"/&6;3!5!!5!!5!#53–æ*æ–È þ ôdþpdþÔ,dÈÈ,úú„ÈÈþ Èþ Èþ ÈLL!2#!"&546!"3!2654&^¢¼»£þp¥¹¹gþ );;)ô);;L»£þp¥¹¹¥¥¹È;)þ );;)ô);LL+!2#!"&546!"3!2654&&546^¥¹¹¥þp£»¼dþ );;)ô);;þoýýL¹¥þp¥¹¹¥£»È;)þ );;)ô);‚¾ $ ¾  LL+!2#!"&546!"3!2654&!2"/&6^£»¹¥þp¥¹¹gþ );;)ô);;þ ¾ $ ¾ L¼¢þp¥¹¹¥£»È;)þ );;)ô);ÈýýLL+!2#!"&546!"3!2654&#!"&?62^¥¹¹¥þp£»¹gþ );;)ô);;þû¾ þp ¾ $L¹¥þp£»¼¢¥¹È;)þ );;)ô);ÏýýL5!2#!"&=463!2654&#!"&=46&=#"&=46;546&¥¹¹¥þpÂ);;)þ>¿Dþ¼úúL¹¥þp¥¹d;)ô);déþä&þä –È– Ùמ#%2"+'&7>?!"'&766763 ˜,þ÷þó  P''þÒ K » ž  þS#þÊþÅ  ånnV/ÓþL5!2#!"3!2#!"&546&=#"&=46;546^þ>);;)Âþp¥¹¹ñDþ¼úúLd;)þ );d¹¥¥¹éþä&þä –È– °°1!2/"/&47'&6#"3!26=7#!"&5463!îmþÈ)8mþïœ);;)ô);È»£þp¥¹¹¥,°þpmþÈ)8mþÔ;)þ );;)”ÈþÖ¥¹¹¥¥¹¢¢#2".4>"2>4&2"&4áîÙ]]ÙîÙ]]ÃæÂqqÂæÂqqþ{ rr r¢]ÙîÙ]]ÙîÙGqÂæÂqqÂæÂsr rr L°#3232"'&6;46!2!54635ÂÈõ þ' þ… úþ…èû´gd°þ¢þVª^ü|úúd22L¬# ++"&=#"&7>!2!54635Gz ô"Èú 'ýùèû´gdžþM úú!¯üúúd22LK" 62"'&4?62!2!54635Œq‹ýóþÜ‹Ôèû´gdÓq‹ýó#‹ýÒúúd22L› #'762'&476#"&?'7!2!54635‡Ž*MÔMÒý«КÔþ=èû´gdÿŽMÔL*šÒý©ЛÔý:úúd22L°#'/'7'&6"/&4?!2!54635^WЛԛÒÃL*ŽMþúèû´gd°ý«КԚÒýPMŽ*MþXúúd22ÿì°¯% ! °þþÆþq¬ý3«gþq§üùæ¹dL°+!#"&546;!3#53L–ýD–úôdÈddèü®þpèþÔ,ÈÈEݰ/'&"!#"&546;!3#53"/&4?6262LþÕ_  •þÈ–úôdÈdd°jþ\ÊjO)è•þÕ_ “þpèþÔ,ÈÈýÎjþ[ËjO) °>'.!#"&546;!3#53"/"/&4?'&4?62762Lg†%þöþ·–úôdÈddöFƒƒF)ƒƒ)FƒƒF)ƒƒ)èþóg†þöþpèþÔ,ÈÈýŒF)ƒƒ)FƒƒF)ƒƒ)Fƒƒ—°/!"!#"&546;!3#533232"/&6;546Lþ¢þ –úôdÈdd–d–æ*æ–èþÔ–þpèþÔ,ÈÈý¨úææú—°/'&"!#"&546;!3#53++"&=#"&?62L¥*þùþn–úôdÈddëæ–d–æ*èþp¥þ÷þpèþÔ,ÈÈý…åúúåȰL !2!546#!"&5!52LûP“û´dL––þÔýÚ&þÔÈÈ}­—-1;&=!5!546#"&=46;#5376!!/&4#5;2+§øøþpý/22Èddþ‚÷þp÷ddd33æ*æ–È–þ…dÈÈýËæ–È–æ*yÈdd°°Q%6+"&5.546%2+"&5.54>323<>3234>^%È"%þá È"  d d 1tû®5gD‘ þ>?1) þA¿..@  þ¢^  þ¢^ d°L3"!5265!3!52>54&/5!"!4°"2þpKþ Kþp"2KôKL8 üˆ88 %Šþv% 88 x88 %þvŠ% 8LL  $(4!2#5'!7!!2#!"&546!55%!5#!!'!73£wiþÙÈþpdwþ%,);;)þÔ);;),¼þpü,¼þ‰dþ‰dÈiè–bbÈdÈ;)þ );;)ô);dÈÈþ÷…£…ÆÈÈføddÈŸŸ&767>".'.7¢.‹wfüw3À£ .1LOefx;JwF2 ï¢Â1vŽüevˆ/¢ 5Cc;J™|sU@°L#A2/.=& &=>2#!"&=46754>ü¸¦ud?, ÊþÂÊ 1;ftÊpR&mû´m&L!((" È""’’""È '$+ þä 2þÑ2ÔÔ2/2 !°° '!'3353353!2+!7#"&46!2!546LÈý¨ÈÈÈÈÈÈü®¼ ‰üJ‰ ³LûP¼ÈÈôÈÈÈÈüà*dd*þÔ22d°L #"!4&#"!4&!46;2¼d);,;gd);,;ýþÔ;)d);L;)üè);þÔ;)ýD¼);üà);;)ÿœ°L%)!2#!"&546!#3!535#!#33ȼ|°°|ýD|°°„þ ÈÈþÔÈÈ,dÈÈddL°|þ |°°|ô|°ÈýD¼ÈdþÔdd,dþÔdôdþÔ,ÿœ°L%)!2#!"&546!#5##3353#33ȼ|°°|ýD|°°„þ dddddddÈÈddL°|þ |°°|ô|°ÈýD¼ý¨ÈÈôÈÈdþÔdôdþÔ,ÿœ°L#!2#!"&546!#3!!#3!!ȼ|°°|ýD|°°„þ ÈÈþÔ,ÈÈþÔ,L°|þ |°°|ô|°ÈýD¼ÈþÔdôdþÔdôÿœ°L!2#!"&546!- ȼ|°°|ýD|°°„þ þÔ,þÔL°|þ |°°|ô|°ÈýD¼þ ––––,ÿœ°L )!2#!"&546!!!#";32654&#ȼ|°°|ýD|°°„dýD¼d‚&96)‚þ ‚)69&L°|þ |°°|ô|°ÈýD¼ý¨ôdVAAT,þÔTAAVÿœ°L%)!2#!"&546!#3!535#!##53#53ȼ|°°|ýD|°°„þ ÈÈþÔÈÈ,ddÈÈddL°|þ |°°|ô|°ÈýD¼ÈdþÔdd,þ dþ dÿœ°L#'!2#!"&546!3!3##5335#53ȼ|°°|ýD|°°„ýDÈþÔdXddÈý¨d,ddL°|þ |°°|ô|°ÈýD¼Èþpôþ dÈÈÈþÔdÿœ°L"&!2#!"&546!#575#5!##53#53ȼ|°°|ýD|°°„þ ÇdÇÈ,ddÈÇddL°|þ |°°|ô|°ÈýD¼þpÈ2È–dþ dþ d §§%2".4>"2>4&!!!'57!àðÛž^^žÛðÛž^^žÅäÂqqÂäÂqqlþÔ,þÔdd,§^žÛðÛž^^žÛðÛžLqÂäÂqqÂäÂÐÈddÈd §§'+2".4>"2>4&#'##!35àðÛž^^žÛðÛž^^žÅäÂqqÂäÂqql2ddd–d,Èȧ^žÛðÛž^^žÛðÛžLqÂäÂqqÂäÂÐd2d2dddddÿòÿÂA 62632+54&#!"#"&5467&54>3232"/&6;46÷nµ,,.xªªx€þÔÞPpVAbªz– ‰ ß & ß ‰Awa­ñ­úúsOEkdªbý³ þíôô ÿòÿœÃA32632&"#"&5467&54>++"&5#"&76762ön¶,+.yªxZþ† % þƒ OqVAb©æß ‰ – ‰ ÇAwa­xc¤hþ“sOEkd©cý’äþí  ÌdLm%5!33 33!#"!54&#¼þòªþòªþÔþÔªþòªþò2dd,,Mþ³þÔþÔd22y7›/2#"'2!54635#"&547.546324&546X^“Y{;2 iJ7-þÔ-7Ji/9iJ£›qYƒZ=gJiû22ûiJX5Jit£'‰œ*BJb{"&'&7>2"3276767>/&'&"327>7>/&'&&"267"327>76&/&"327>76&/&òoOOoSÙÜÙSoOOoSÙÜÙþ=y±" $GF`   Pu "Q9   ùcŒccŒcVQ:   Pu "GF`   y±" $òoþÕþÕoSWWSo++oSWW"±y  `FG # ‘uP  :Q # úccŒcc:Q # uP  $`FG # "±y  dè° "!#5!!463!#53'353!"&5+¼,´þ¬þ„ ?,Èd¢ÔÔ¢d´þu „ à þ„ÈÈó þÔÈüàÔÔÈþ  ‹Èà dè° !! 463!#5##5#7!"&=)+5¼,þ¢ýÚ ?,È>¢d¢Ôªþ | › ýø^ýÚG þÔÈü|ÈÈÔþd 77 P°ô#3!#732!!34>3!!Š¢ddþÔ¢ÔýÈ!,ý¨Èd!sððüà,ô Èd,ÔÔ+$dþ¢Â$+þpþpôLL293232#!"&=46;54652#!"'74633!265#535Šd2þÔ2s);;)ý¨öþº;)X>,>Xý´ÔÈÈL2dd2ú–;)üà);öFD);–>XXýæÔ¢d¢d¼L6=3232#!"&=46;54652#3#!"&54633!265#535Âd2þÔ2s);ÈÈ!ý¨);;)X>,>XœÔÈÈL2dd2ú–;)þ þÔ$+;) );–>XXýæÔ¢d¢ÿ¢Ô  #!"&762#";2676&35’} ,û, }@DÐ:#6#:àÈ­û°&77&P'þLþÒ.þ dd LL/?O_o32+"&=4632+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=4632+"&=46!32+"&=46!32+"&=46©ú  ú  ú  ú šú  ú üêú  ú šú  ú šú  ú üêú  ú šú  ú šú  ú L –  – þÔ –  –  –  – þÔ –  –  –  –  –  – þÔ –  –  –  –  –  – °)33#!2!&/&63!5#5353!2+!7#"&46!2!546¼dd^>1B)(üü()B1>^ddÈþ>¼ ‰üJŠ ³LûP°ÈdO7„S33S„7OdÈdü|*dd*þÔ22°+52#4!!2!'&63!&54!2+!%5#"&46!2!5460P9Â<:H)"¯ýZ²" )H¯¼–üJ–³LûP;))%&!‘‘!&þ•*ÈÈÈÈ*ý¨22°$.2"&432!65463!2+!7#"&46!2!546 –jj–j·."+'þ¼'+#þͼ ŠüJ‰ ³LûPj–jj–þë9:LkkL:9þr*dd*þÔ22°,62"&5477'632!65463!2+!7#"&46!2!546X/[3oœo"o£"."+'þ¼'+#þͼ ŠüJ‰ ³LûPk‹6NooN>Qo£þ 9:LkkL:9þr*dd*þÔ22°",!!.54>7!2+!7#"&46!2!546X,þÔ%??Mýî<=BmJþ¢¼ ŠüJ‰ ³LûP°¡‹9fQ?HS½TT¡vKü~*dd*þÔ22Èè)2!546754!2#3#3#3#!"&546/R;.6þp6.d6\¬ÈÈÈÈÈuSþpSuu;)N\6226\N)þG6.dddddSuuSSudÿÿLL/3!2#!"&546!2#!"/!"&4?!"&=46!'–„ü|¶  þåà % XýôW & àþß ªdDdLþ ôýD 2 à % XX % à 2 ddd°L#-7!2#4&+"#4&+"#546!2!46+"&=!+"&=È Sud;)ú);d;)ú);duè);ûP;ñdèdLuSÈ);;));;)ÈSuþ ;)þÔ,);þ 2222©¬  !&4762 !2!546ઃþýû 'Yþ¬V/þ«¢ ü|ýUYƒY(þnþª0Uü22!°/.#!"3!26=326!546;546;33232!½'þp'½q*}¨ý­20È/2‡úþ––ýŒ22,þÔ2°° "!#!5463!#5!#!"&5463!#5„, þ‰þÔ w,Èý¨, ýv  w,È ýÁ O,T þÔÈþ ýÁ  ¶ þÔÈÿœdGFV32676'&7>++"&?+"'+"&?&/.=46;67'&6;6#";26=4&äÃKŽjI C   )V=>8'"d 1*Ã) "dT,Ÿ| -oËtEú  ú GAkŠI ! "% ,=?W7|&êF@Je5&2WO_e_ 2  2 ÿœÿæ~ $4<Rb%6%32!2&'&#!"&=46#";2654&'&"2647>?&/&6%?6'.'.§. ‹ü+jCHf7ý" *:þÔ>XX¹P*† €@--@-þ˜ -?0 !3P/|)‚( )f!% = „÷ &* xÈ"6Ô2&„CX>È>X¬83 DÉ-@--@þÛ‚ # ³=I+E( /—/}X&+ 5!H d9°Q`o322#+"&=#+"&=#"&=46;#"&=46;546;23546!2>574.#!2>574.#q– Oh ..40:*"6-@# – d – ¯  KK  ¯ – d×)  )þùk)  )° m!mJ.M-(2N-;]<* K  KK  K – X – K  KK þÔÈ "þpÈ "°®),!2#!"&'.546"!7.#Ô Vz$RýÄR‚(z Œ}VG+œ0œ )IU!îzVþ`3·BBWwvXZÅ3 Vz™&--% óó,(1#þÂÈ„32#!"&546+"&=Û–g¬T)þ>)T¬H6–6¬gþ )TT)ôg¬üá66áÈ„33#!"&546+"&=Û`³–T)þ>)T¬H6–6–³þB)TT)ôg¬üá66á %'5754&>?' %5%ý‚þ†Nd––d/“‚\þ¢þ¢^^ÿþåª<à–Ç”•È–ú  (Aýb¦¦“¥¥dô° 2"&4$2"&4$2"&4¼|XX|Xè|XX|Xè|XX|X X|XX|XX|XX|XX|XX|¼L2"&42"&42"&4è|XX|XX|XX|XX|XX|XLX|XX|þÈX|XX|þÈX|XX|ddLL/!2#!"&=46!2#!"&=46!2#!"&=46}¶  üJ  ¶  üJ  ¶  üJ L –  – þp –  – þp –  – °°/3!2#!"&546!"3!2654&!2#!"&546!5^ô¢¼»£þ ¥¹¹Ëý¨);;)X);;ý±ôþ G°»£þ ¥¹¹¥ô¥¹È;)ý¨);;)X);dþÔ,dÈÈdd°L;!2+32+32+32#!"&46;5#"&46;5#"&46;5#"&46–è222222ü222222L*È*È*È**È*È*È*,è£ *.62"&%#462"&%#46"&=32ŠW??WW??þù|°|°¼°|°ýÀ|°|°¼°|°°*(£C²²BB²²þÀ°|°||°|°þÔ°|°||°|°þÓŽÿµÈ”B76+2+"47&"+".543#"&'&676/!'.6éE*  '?)’¸ T ¸Ž0I' *L #3¶{¶,# nþÙ  6F82 þà*5#"#!#4.+3#525#"#5!°2 &È2þp"È& 2èýD d È2d ô„ ü®dd R ,ý þW 22© –L® 05"'./#!5"&?!##!"&=463!2èþßEþÔ  1;E%= !'þì†y±üè,2 " ëý# 22+.°¦"A2‡Vþªýãdd°°GJ!2#!"&546#"3!26=4&#"'&?!#"3!26=4&'"'&'#&#2Lû´FF þÕ&  7 ? 9   9 þàÅg°û´LR ý  2 2 £™ 2 2 $ì þ°°#'!5!!2#!"&546)2#!"&546!°ûP°û‚þpmþpG,LdÈü|„þpdþÔ,°°#'!2#!"&546!2#!"&546!!5!2þpmþpG,ÈûP°°ü|„þ þpdþÔ,ý¨dd°è'+!235463!23##!"&=##!"&546!2dddþpdþpŸ,èþ¢––d––þ¢ þÔþÔ,°°'3#3!2#!"&546!!2#!"&546ddd–þpG,þ¢„ü|°dþpdþÔ,þ þpdL°'+32+!2#!"&5463!5#"&546;53!X––Âü|^––dÈ,LþpdþpddÈþÔ,°°'!#3!2#!"&546!!2#!"&546°ddývþpG,ü®„ü|°dþpdþÔ,þ þp,0o€ #"&54632aþî5þèþ*A2„~ 6'&4Oî**þ{î)ü)î*2A~„ !2"'&6dè)þ*þ„*þî*2,~o #!"&762{î)ü)î*aþ**î°( 5-5!5!¼ýLþc¨üà å¶þ½ÝÁÁÝûØÈd°° 1#3!35#5!34>;!5".5323!°ÈÈþÔÈÈ,ûP2 &d2"d& 2üà„dd,ddþ  ýÚdd & ,Lè%1#4.+!52>5#"#!#3!35#5! 2 &d2þp"d& 2 ,ÈÈþÔÈÈ,¼ ýÚdd & ,üàdd,ddÈfrJ32 +"'&476½  þ0Ð   þ)× J þ0þ0  ×× >fèJ32+"&7 &6S  ×þ)   Ðþ0 J þ)þ)  ÐÐ fÈJr"'&=46 4 þ)þ)  ÐÐw   þ)×   þ0Ðf>Jè ' &=4762j×  þ0þ0  ×áþ)   Ðþ0   ×Ùÿù=°:#463267>"&#""'./.>'&6è°|°þVd&O "(P3G*+*3M, :I G79_7&%*>7F1“ °|°|°ÈÂ5KmCKG\JBktl$#?hI7 ÀÈ„°!2+&5#"&546!5úX–ÿ–«,°þpþ ² ŠdddÈL°!2%!#4675úî'=ýDXýDd d°Q,ü[u¶}ü4ý]ddMoÃ__<õ°Ðvs—Ðvs—ÿQÿœÜÿ…ÿQþÔÜ£¸(°°d°°°pŠŠ±EØØ¢HE°d°{°È°Èô°ÿò°°°ÿð°°° °d°ÿÓ°ÿÓ°°°°°°&°n°°°°d°°d° °d°°ÿœ°d°°°°°°°d°°d°°°°°°°°°d°È°°°5°d°È°ÿµ°!°°°°°°ÿœ°°°°Û°°u°°°° °È°°°È°È°È°°ÿþ°,°d°ˆ°;°°°°°°°°°°°°°·°·°°°I°°°°]°ÿܰÿܰÿŸ°d°°°°d°ÿÿ°°ÿQ°°°°E°°°ÿœ°J°°°°°ÿœ°a°ÿý°°°°°°Ä°dÿØd9È'dÙdddÿœÿœÿœÿœÿœÿœÿœÿœ ÿòÿòdy'dddÿ¢ÈdÿœÿœdÈÈddd,ÿµd,A22È>ffÙÈÈ****²èèNNNNNNNNNNNNNN¤"~†¬äFnŒÄ2b¢Ü\ºrô bÊb¾ 6 „ ¶ Þ ( L ” â 0 Š Ê  X * ^ °h´(¦æTª*v¶ 8|ÀtÐ*Ô<¨Ì6`°þR¦.j–°àþ(h”ÄÚî6h¸ö^´2”âDl”¼æ.vÀbÒ F ¾!2!v!¸"@"–"¸##"#8#z#Â#à$$0$^$–$â%4%`%¼&&~&æ'P'¼'ø(4(p(¬) )Ì*&*J*„+ +z,,h,º,ì--ˆ-ô.(.f.¢.Ø//F/~/²/ø0>0„0Ò11`1®1è2$2^2š2Þ3"3>3h3¶44`4¨4Ò5,5ž5è6>6|6Ü77N7’7Ô88B8†8È9 9J9ˆ9Ì::l:š:Þ; ;Ü<:>Œ>Ô?(?n?ª?ú@H@€@ÆAA~BB¨BîCCBCvC CÊDD`D®DöEZE¶FFtF´FöG6GvG¶GöHH2HNHjH†HÌII8I^I„IªJJ.JR§@.Æ j (| ¤ L² 8þ x6 6® ä ú $ $4 $X È| É0’ ÙÂwww.glyphicons.comCopyright © 2014 by Jan Kovarik. All rights reserved.GLYPHICONS HalflingsRegular1.009;UKWN;GLYPHICONSHalflings-RegularGLYPHICONS Halflings RegularVersion 1.009;PS 001.009;hotconv 1.0.70;makeotf.lib2.5.58329GLYPHICONSHalflings-RegularJan KovarikJan Kovarikwww.glyphicons.comwww.glyphicons.comwww.glyphicons.comWebfont 1.0Wed Oct 29 06:36:07 2014Font Squirrelÿµ2 –     ï !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ     glyph1glyph2uni00A0uni2000uni2001uni2002uni2003uni2004uni2005uni2006uni2007uni2008uni2009uni200Auni202Funi205FEurouni20BDuni231Buni25FCuni2601uni26FAuni2709uni270FuniE001uniE002uniE003uniE005uniE006uniE007uniE008uniE009uniE010uniE011uniE012uniE013uniE014uniE015uniE016uniE017uniE018uniE019uniE020uniE021uniE022uniE023uniE024uniE025uniE026uniE027uniE028uniE029uniE030uniE031uniE032uniE033uniE034uniE035uniE036uniE037uniE038uniE039uniE040uniE041uniE042uniE043uniE044uniE045uniE046uniE047uniE048uniE049uniE050uniE051uniE052uniE053uniE054uniE055uniE056uniE057uniE058uniE059uniE060uniE062uniE063uniE064uniE065uniE066uniE067uniE068uniE069uniE070uniE071uniE072uniE073uniE074uniE075uniE076uniE077uniE078uniE079uniE080uniE081uniE082uniE083uniE084uniE085uniE086uniE087uniE088uniE089uniE090uniE091uniE092uniE093uniE094uniE095uniE096uniE097uniE101uniE102uniE103uniE104uniE105uniE106uniE107uniE108uniE109uniE110uniE111uniE112uniE113uniE114uniE115uniE116uniE117uniE118uniE119uniE120uniE121uniE122uniE123uniE124uniE125uniE126uniE127uniE128uniE129uniE130uniE131uniE132uniE133uniE134uniE135uniE136uniE137uniE138uniE139uniE140uniE141uniE142uniE143uniE144uniE145uniE146uniE148uniE149uniE150uniE151uniE152uniE153uniE154uniE155uniE156uniE157uniE158uniE159uniE160uniE161uniE162uniE163uniE164uniE165uniE166uniE167uniE168uniE169uniE170uniE171uniE172uniE173uniE174uniE175uniE176uniE177uniE178uniE179uniE180uniE181uniE182uniE183uniE184uniE185uniE186uniE187uniE188uniE189uniE190uniE191uniE192uniE193uniE194uniE195uniE197uniE198uniE199uniE200uniE201uniE202uniE203uniE204uniE205uniE206uniE209uniE210uniE211uniE212uniE213uniE214uniE215uniE216uniE218uniE219uniE221uniE223uniE224uniE225uniE226uniE227uniE230uniE231uniE232uniE233uniE234uniE235uniE236uniE237uniE238uniE239uniE240uniE241uniE242uniE243uniE244uniE245uniE246uniE247uniE248uniE249uniE250uniE251uniE252uniE253uniE254uniE255uniE256uniE257uniE258uniE259uniE260uniF8FFu1F511u1F6AATPÃHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/0002775000175000017500000000000013166626114030500 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-sprockets.scss0000664000175000017500000000025013111777164035561 0ustar abompardabompard00000000000000@function twbs-font-path($path) { @return font-path($path); } @function twbs-image-path($path) { @return image-path($path); } $bootstrap-sass-asset-helper: true; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-mincer.scss0000664000175000017500000000136513111777164035031 0ustar abompardabompard00000000000000// Mincer asset helper functions // // This must be imported into a .css.ejs.scss file. // Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. @function twbs-font-path($path) { // do something like following // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" @return "<%- asset_path('#{$path}'.replace(/[#?].*$/, '')) + '#{$path}'.replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; } @function twbs-image-path($file) { @return "<%- asset_path('#{$file}') %>"; } $bootstrap-sass-asset-helper: true; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/_bootstrap-compass.scss0000664000175000017500000000026213111777164035214 0ustar abompardabompard00000000000000@function twbs-font-path($path) { @return font-url($path, true); } @function twbs-image-path($path) { @return image-url($path, true); } $bootstrap-sass-asset-helper: true; HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/0002775000175000017500000000000013166626114032515 5ustar abompardabompard00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_buttons.scss0000664000175000017500000000735313111777164035257 0ustar abompardabompard00000000000000// // Buttons // -------------------------------------------------- // Base styles // -------------------------------------------------- .btn { display: inline-block; margin-bottom: 0; // For input.btn font-weight: $btn-font-weight; text-align: center; vertical-align: middle; touch-action: manipulation; cursor: pointer; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid transparent; white-space: nowrap; @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); @include user-select(none); &, &:active, &.active { &:focus, &.focus { @include tab-focus; } } &:hover, &:focus, &.focus { color: $btn-default-color; text-decoration: none; } &:active, &.active { outline: 0; background-image: none; @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); } &.disabled, &[disabled], fieldset[disabled] & { cursor: $cursor-disabled; @include opacity(.65); @include box-shadow(none); } // [converter] extracted a& to a.btn } a.btn { &.disabled, fieldset[disabled] & { pointer-events: none; // Future-proof disabling of clicks on `` elements } } // Alternate buttons // -------------------------------------------------- .btn-default { @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); } .btn-primary { @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); } // Success appears as green .btn-success { @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); } // Info appears as blue-green .btn-info { @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); } // Warning appears as orange .btn-warning { @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); } // Danger and error appear as red .btn-danger { @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); } // Link buttons // ------------------------- // Make a button look and behave like a link .btn-link { color: $link-color; font-weight: normal; border-radius: 0; &, &:active, &.active, &[disabled], fieldset[disabled] & { background-color: transparent; @include box-shadow(none); } &, &:hover, &:focus, &:active { border-color: transparent; } &:hover, &:focus { color: $link-hover-color; text-decoration: $link-hover-decoration; background-color: transparent; } &[disabled], fieldset[disabled] & { &:hover, &:focus { color: $btn-link-disabled-color; text-decoration: none; } } } // Button Sizes // -------------------------------------------------- .btn-lg { // line-height: ensure even-numbered height of button next to large input @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); } .btn-sm { // line-height: ensure proper height of button next to small input @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); } .btn-xs { @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); } // Block button // -------------------------------------------------- .btn-block { display: block; width: 100%; } // Vertically space out multiple block buttons .btn-block + .btn-block { margin-top: 5px; } // Specificity overrides input[type="submit"], input[type="reset"], input[type="button"] { &.btn-block { width: 100%; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_theme.scss0000664000175000017500000002055613111777164034663 0ustar abompardabompard00000000000000/*! * Bootstrap v3.3.5 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ // // Load core variables and mixins // -------------------------------------------------- @import "variables"; @import "mixins"; // // Buttons // -------------------------------------------------- // Common styles .btn-default, .btn-primary, .btn-success, .btn-info, .btn-warning, .btn-danger { text-shadow: 0 -1px 0 rgba(0,0,0,.2); $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075); @include box-shadow($shadow); // Reset the shadow &:active, &.active { @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); } &.disabled, &[disabled], fieldset[disabled] & { @include box-shadow(none); } .badge { text-shadow: none; } } // Mixin for generating new styles @mixin btn-styles($btn-color: #555) { @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%)); @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620 background-repeat: repeat-x; border-color: darken($btn-color, 14%); &:hover, &:focus { background-color: darken($btn-color, 12%); background-position: 0 -15px; } &:active, &.active { background-color: darken($btn-color, 12%); border-color: darken($btn-color, 14%); } &.disabled, &[disabled], fieldset[disabled] & { &, &:hover, &:focus, &.focus, &:active, &.active { background-color: darken($btn-color, 12%); background-image: none; } } } // Common styles .btn { // Remove the gradient for the pressed/active state &:active, &.active { background-image: none; } } // Apply the mixin to the buttons .btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; } .btn-primary { @include btn-styles($btn-primary-bg); } .btn-success { @include btn-styles($btn-success-bg); } .btn-info { @include btn-styles($btn-info-bg); } .btn-warning { @include btn-styles($btn-warning-bg); } .btn-danger { @include btn-styles($btn-danger-bg); } // // Images // -------------------------------------------------- .thumbnail, .img-thumbnail { @include box-shadow(0 1px 2px rgba(0,0,0,.075)); } // // Dropdowns // -------------------------------------------------- .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%)); background-color: darken($dropdown-link-hover-bg, 5%); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%)); background-color: darken($dropdown-link-active-bg, 5%); } // // Navbar // -------------------------------------------------- // Default navbar .navbar-default { @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg); @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered border-radius: $navbar-border-radius; $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075); @include box-shadow($shadow); .navbar-nav > .open > a, .navbar-nav > .active > a { @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%)); @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075)); } } .navbar-brand, .navbar-nav > li > a { text-shadow: 0 1px 0 rgba(255,255,255,.25); } // Inverted navbar .navbar-inverse { @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg); @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 border-radius: $navbar-border-radius; .navbar-nav > .open > a, .navbar-nav > .active > a { @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%)); @include box-shadow(inset 0 3px 9px rgba(0,0,0,.25)); } .navbar-brand, .navbar-nav > li > a { text-shadow: 0 -1px 0 rgba(0,0,0,.25); } } // Undo rounded corners in static and fixed navbars .navbar-static-top, .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } // Fix active state of dropdown items in collapsed mode @media (max-width: $grid-float-breakpoint-max) { .navbar .navbar-nav .open .dropdown-menu > .active > a { &, &:hover, &:focus { color: #fff; @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%)); } } } // // Alerts // -------------------------------------------------- // Common styles .alert { text-shadow: 0 1px 0 rgba(255,255,255,.2); $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05); @include box-shadow($shadow); } // Mixin for generating new styles @mixin alert-styles($color) { @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%)); border-color: darken($color, 15%); } // Apply the mixin to the alerts .alert-success { @include alert-styles($alert-success-bg); } .alert-info { @include alert-styles($alert-info-bg); } .alert-warning { @include alert-styles($alert-warning-bg); } .alert-danger { @include alert-styles($alert-danger-bg); } // // Progress bars // -------------------------------------------------- // Give the progress background some depth .progress { @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg) } // Mixin for generating new styles @mixin progress-bar-styles($color) { @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%)); } // Apply the mixin to the progress bars .progress-bar { @include progress-bar-styles($progress-bar-bg); } .progress-bar-success { @include progress-bar-styles($progress-bar-success-bg); } .progress-bar-info { @include progress-bar-styles($progress-bar-info-bg); } .progress-bar-warning { @include progress-bar-styles($progress-bar-warning-bg); } .progress-bar-danger { @include progress-bar-styles($progress-bar-danger-bg); } // Reset the striped class because our mixins don't do multiple gradients and // the above custom styles override the new `.progress-bar-striped` in v3.2.0. .progress-bar-striped { @include gradient-striped; } // // List groups // -------------------------------------------------- .list-group { border-radius: $border-radius-base; @include box-shadow(0 1px 2px rgba(0,0,0,.075)); } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%); @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%)); border-color: darken($list-group-active-border, 7.5%); .badge { text-shadow: none; } } // // Panels // -------------------------------------------------- // Common styles .panel { @include box-shadow(0 1px 2px rgba(0,0,0,.05)); } // Mixin for generating new styles @mixin panel-heading-styles($color) { @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%)); } // Apply the mixin to the panel headings only .panel-default > .panel-heading { @include panel-heading-styles($panel-default-heading-bg); } .panel-primary > .panel-heading { @include panel-heading-styles($panel-primary-heading-bg); } .panel-success > .panel-heading { @include panel-heading-styles($panel-success-heading-bg); } .panel-info > .panel-heading { @include panel-heading-styles($panel-info-heading-bg); } .panel-warning > .panel-heading { @include panel-heading-styles($panel-warning-heading-bg); } .panel-danger > .panel-heading { @include panel-heading-styles($panel-danger-heading-bg); } // // Wells // -------------------------------------------------- .well { @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg); border-color: darken($well-bg, 10%); $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); @include box-shadow($shadow); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_panels.scss0000664000175000017500000001436113111777164035040 0ustar abompardabompard00000000000000// // Panels // -------------------------------------------------- // Base class .panel { margin-bottom: $line-height-computed; background-color: $panel-bg; border: 1px solid transparent; border-radius: $panel-border-radius; @include box-shadow(0 1px 1px rgba(0,0,0,.05)); } // Panel contents .panel-body { padding: $panel-body-padding; @include clearfix; } // Optional heading .panel-heading { padding: $panel-heading-padding; border-bottom: 1px solid transparent; @include border-top-radius(($panel-border-radius - 1)); > .dropdown .dropdown-toggle { color: inherit; } } // Within heading, strip any `h*` tag of its default margins for spacing. .panel-title { margin-top: 0; margin-bottom: 0; font-size: ceil(($font-size-base * 1.125)); color: inherit; > a, > small, > .small, > small > a, > .small > a { color: inherit; } } // Optional footer (stays gray in every modifier class) .panel-footer { padding: $panel-footer-padding; background-color: $panel-footer-bg; border-top: 1px solid $panel-inner-border; @include border-bottom-radius(($panel-border-radius - 1)); } // List groups in panels // // By default, space out list group content from panel headings to account for // any kind of custom content between the two. .panel { > .list-group, > .panel-collapse > .list-group { margin-bottom: 0; .list-group-item { border-width: 1px 0; border-radius: 0; } // Add border top radius for first one &:first-child { .list-group-item:first-child { border-top: 0; @include border-top-radius(($panel-border-radius - 1)); } } // Add border bottom radius for last one &:last-child { .list-group-item:last-child { border-bottom: 0; @include border-bottom-radius(($panel-border-radius - 1)); } } } > .panel-heading + .panel-collapse > .list-group { .list-group-item:first-child { @include border-top-radius(0); } } } // Collapse space between when there's no additional content. .panel-heading + .list-group { .list-group-item:first-child { border-top-width: 0; } } .list-group + .panel-footer { border-top-width: 0; } // Tables in panels // // Place a non-bordered `.table` within a panel (not within a `.panel-body`) and // watch it go full width. .panel { > .table, > .table-responsive > .table, > .panel-collapse > .table { margin-bottom: 0; caption { padding-left: $panel-body-padding; padding-right: $panel-body-padding; } } // Add border top radius for first one > .table:first-child, > .table-responsive:first-child > .table:first-child { @include border-top-radius(($panel-border-radius - 1)); > thead:first-child, > tbody:first-child { > tr:first-child { border-top-left-radius: ($panel-border-radius - 1); border-top-right-radius: ($panel-border-radius - 1); td:first-child, th:first-child { border-top-left-radius: ($panel-border-radius - 1); } td:last-child, th:last-child { border-top-right-radius: ($panel-border-radius - 1); } } } } // Add border bottom radius for last one > .table:last-child, > .table-responsive:last-child > .table:last-child { @include border-bottom-radius(($panel-border-radius - 1)); > tbody:last-child, > tfoot:last-child { > tr:last-child { border-bottom-left-radius: ($panel-border-radius - 1); border-bottom-right-radius: ($panel-border-radius - 1); td:first-child, th:first-child { border-bottom-left-radius: ($panel-border-radius - 1); } td:last-child, th:last-child { border-bottom-right-radius: ($panel-border-radius - 1); } } } } > .panel-body + .table, > .panel-body + .table-responsive, > .table + .panel-body, > .table-responsive + .panel-body { border-top: 1px solid $table-border-color; } > .table > tbody:first-child > tr:first-child th, > .table > tbody:first-child > tr:first-child td { border-top: 0; } > .table-bordered, > .table-responsive > .table-bordered { border: 0; > thead, > tbody, > tfoot { > tr { > th:first-child, > td:first-child { border-left: 0; } > th:last-child, > td:last-child { border-right: 0; } } } > thead, > tbody { > tr:first-child { > td, > th { border-bottom: 0; } } } > tbody, > tfoot { > tr:last-child { > td, > th { border-bottom: 0; } } } } > .table-responsive { border: 0; margin-bottom: 0; } } // Collapsable panels (aka, accordion) // // Wrap a series of panels in `.panel-group` to turn them into an accordion with // the help of our collapse JavaScript plugin. .panel-group { margin-bottom: $line-height-computed; // Tighten up margin so it's only between panels .panel { margin-bottom: 0; border-radius: $panel-border-radius; + .panel { margin-top: 5px; } } .panel-heading { border-bottom: 0; + .panel-collapse > .panel-body, + .panel-collapse > .list-group { border-top: 1px solid $panel-inner-border; } } .panel-footer { border-top: 0; + .panel-collapse .panel-body { border-bottom: 1px solid $panel-inner-border; } } } // Contextual variations .panel-default { @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border); } .panel-primary { @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border); } .panel-success { @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border); } .panel-info { @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border); } .panel-warning { @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border); } .panel-danger { @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border); } ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_responsive-utilities.scssHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_responsive-utili0000664000175000017500000001047113111777164036123 0ustar abompardabompard00000000000000// // Responsive: Utility classes // -------------------------------------------------- // IE10 in Windows (Phone) 8 // // Support for responsive views via media queries is kind of borked in IE10, for // Surface/desktop in split view and for Windows Phone 8. This particular fix // must be accompanied by a snippet of JavaScript to sniff the user agent and // apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at // our Getting Started page for more information on this bug. // // For more information, see the following: // // Issue: https://github.com/twbs/bootstrap/issues/10497 // Docs: http://getbootstrap.com/getting-started/#support-ie10-width // Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/ // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/ @at-root { @-ms-viewport { width: device-width; } } // Visibility utilities // Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0 @include responsive-invisibility('.visible-xs'); @include responsive-invisibility('.visible-sm'); @include responsive-invisibility('.visible-md'); @include responsive-invisibility('.visible-lg'); .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block { display: none !important; } @media (max-width: $screen-xs-max) { @include responsive-visibility('.visible-xs'); } .visible-xs-block { @media (max-width: $screen-xs-max) { display: block !important; } } .visible-xs-inline { @media (max-width: $screen-xs-max) { display: inline !important; } } .visible-xs-inline-block { @media (max-width: $screen-xs-max) { display: inline-block !important; } } @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { @include responsive-visibility('.visible-sm'); } .visible-sm-block { @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { display: block !important; } } .visible-sm-inline { @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { display: inline !important; } } .visible-sm-inline-block { @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { display: inline-block !important; } } @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { @include responsive-visibility('.visible-md'); } .visible-md-block { @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { display: block !important; } } .visible-md-inline { @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { display: inline !important; } } .visible-md-inline-block { @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { display: inline-block !important; } } @media (min-width: $screen-lg-min) { @include responsive-visibility('.visible-lg'); } .visible-lg-block { @media (min-width: $screen-lg-min) { display: block !important; } } .visible-lg-inline { @media (min-width: $screen-lg-min) { display: inline !important; } } .visible-lg-inline-block { @media (min-width: $screen-lg-min) { display: inline-block !important; } } @media (max-width: $screen-xs-max) { @include responsive-invisibility('.hidden-xs'); } @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { @include responsive-invisibility('.hidden-sm'); } @media (min-width: $screen-md-min) and (max-width: $screen-md-max) { @include responsive-invisibility('.hidden-md'); } @media (min-width: $screen-lg-min) { @include responsive-invisibility('.hidden-lg'); } // Print utilities // // Media queries are placed on the inside to be mixin-friendly. // Note: Deprecated .visible-print as of v3.2.0 @include responsive-invisibility('.visible-print'); @media print { @include responsive-visibility('.visible-print'); } .visible-print-block { display: none !important; @media print { display: block !important; } } .visible-print-inline { display: none !important; @media print { display: inline !important; } } .visible-print-inline-block { display: none !important; @media print { display: inline-block !important; } } @media print { @include responsive-invisibility('.hidden-print'); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_glyphicons.scss0000664000175000017500000004773413111777164035747 0ustar abompardabompard00000000000000// // Glyphicons for Bootstrap // // Since icons are fonts, they can be placed anywhere text is placed and are // thus automatically sized to match the surrounding child. To use, create an // inline element with the appropriate classes, like so: // // Star @at-root { // Import the fonts @font-face { font-family: 'Glyphicons Halflings'; src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot')); src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'), url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'), url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'), url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'), url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg'); } } // Catchall baseclass .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } // Individual icons .glyphicon-asterisk { &:before { content: "\2a"; } } .glyphicon-plus { &:before { content: "\2b"; } } .glyphicon-euro, .glyphicon-eur { &:before { content: "\20ac"; } } .glyphicon-minus { &:before { content: "\2212"; } } .glyphicon-cloud { &:before { content: "\2601"; } } .glyphicon-envelope { &:before { content: "\2709"; } } .glyphicon-pencil { &:before { content: "\270f"; } } .glyphicon-glass { &:before { content: "\e001"; } } .glyphicon-music { &:before { content: "\e002"; } } .glyphicon-search { &:before { content: "\e003"; } } .glyphicon-heart { &:before { content: "\e005"; } } .glyphicon-star { &:before { content: "\e006"; } } .glyphicon-star-empty { &:before { content: "\e007"; } } .glyphicon-user { &:before { content: "\e008"; } } .glyphicon-film { &:before { content: "\e009"; } } .glyphicon-th-large { &:before { content: "\e010"; } } .glyphicon-th { &:before { content: "\e011"; } } .glyphicon-th-list { &:before { content: "\e012"; } } .glyphicon-ok { &:before { content: "\e013"; } } .glyphicon-remove { &:before { content: "\e014"; } } .glyphicon-zoom-in { &:before { content: "\e015"; } } .glyphicon-zoom-out { &:before { content: "\e016"; } } .glyphicon-off { &:before { content: "\e017"; } } .glyphicon-signal { &:before { content: "\e018"; } } .glyphicon-cog { &:before { content: "\e019"; } } .glyphicon-trash { &:before { content: "\e020"; } } .glyphicon-home { &:before { content: "\e021"; } } .glyphicon-file { &:before { content: "\e022"; } } .glyphicon-time { &:before { content: "\e023"; } } .glyphicon-road { &:before { content: "\e024"; } } .glyphicon-download-alt { &:before { content: "\e025"; } } .glyphicon-download { &:before { content: "\e026"; } } .glyphicon-upload { &:before { content: "\e027"; } } .glyphicon-inbox { &:before { content: "\e028"; } } .glyphicon-play-circle { &:before { content: "\e029"; } } .glyphicon-repeat { &:before { content: "\e030"; } } .glyphicon-refresh { &:before { content: "\e031"; } } .glyphicon-list-alt { &:before { content: "\e032"; } } .glyphicon-lock { &:before { content: "\e033"; } } .glyphicon-flag { &:before { content: "\e034"; } } .glyphicon-headphones { &:before { content: "\e035"; } } .glyphicon-volume-off { &:before { content: "\e036"; } } .glyphicon-volume-down { &:before { content: "\e037"; } } .glyphicon-volume-up { &:before { content: "\e038"; } } .glyphicon-qrcode { &:before { content: "\e039"; } } .glyphicon-barcode { &:before { content: "\e040"; } } .glyphicon-tag { &:before { content: "\e041"; } } .glyphicon-tags { &:before { content: "\e042"; } } .glyphicon-book { &:before { content: "\e043"; } } .glyphicon-bookmark { &:before { content: "\e044"; } } .glyphicon-print { &:before { content: "\e045"; } } .glyphicon-camera { &:before { content: "\e046"; } } .glyphicon-font { &:before { content: "\e047"; } } .glyphicon-bold { &:before { content: "\e048"; } } .glyphicon-italic { &:before { content: "\e049"; } } .glyphicon-text-height { &:before { content: "\e050"; } } .glyphicon-text-width { &:before { content: "\e051"; } } .glyphicon-align-left { &:before { content: "\e052"; } } .glyphicon-align-center { &:before { content: "\e053"; } } .glyphicon-align-right { &:before { content: "\e054"; } } .glyphicon-align-justify { &:before { content: "\e055"; } } .glyphicon-list { &:before { content: "\e056"; } } .glyphicon-indent-left { &:before { content: "\e057"; } } .glyphicon-indent-right { &:before { content: "\e058"; } } .glyphicon-facetime-video { &:before { content: "\e059"; } } .glyphicon-picture { &:before { content: "\e060"; } } .glyphicon-map-marker { &:before { content: "\e062"; } } .glyphicon-adjust { &:before { content: "\e063"; } } .glyphicon-tint { &:before { content: "\e064"; } } .glyphicon-edit { &:before { content: "\e065"; } } .glyphicon-share { &:before { content: "\e066"; } } .glyphicon-check { &:before { content: "\e067"; } } .glyphicon-move { &:before { content: "\e068"; } } .glyphicon-step-backward { &:before { content: "\e069"; } } .glyphicon-fast-backward { &:before { content: "\e070"; } } .glyphicon-backward { &:before { content: "\e071"; } } .glyphicon-play { &:before { content: "\e072"; } } .glyphicon-pause { &:before { content: "\e073"; } } .glyphicon-stop { &:before { content: "\e074"; } } .glyphicon-forward { &:before { content: "\e075"; } } .glyphicon-fast-forward { &:before { content: "\e076"; } } .glyphicon-step-forward { &:before { content: "\e077"; } } .glyphicon-eject { &:before { content: "\e078"; } } .glyphicon-chevron-left { &:before { content: "\e079"; } } .glyphicon-chevron-right { &:before { content: "\e080"; } } .glyphicon-plus-sign { &:before { content: "\e081"; } } .glyphicon-minus-sign { &:before { content: "\e082"; } } .glyphicon-remove-sign { &:before { content: "\e083"; } } .glyphicon-ok-sign { &:before { content: "\e084"; } } .glyphicon-question-sign { &:before { content: "\e085"; } } .glyphicon-info-sign { &:before { content: "\e086"; } } .glyphicon-screenshot { &:before { content: "\e087"; } } .glyphicon-remove-circle { &:before { content: "\e088"; } } .glyphicon-ok-circle { &:before { content: "\e089"; } } .glyphicon-ban-circle { &:before { content: "\e090"; } } .glyphicon-arrow-left { &:before { content: "\e091"; } } .glyphicon-arrow-right { &:before { content: "\e092"; } } .glyphicon-arrow-up { &:before { content: "\e093"; } } .glyphicon-arrow-down { &:before { content: "\e094"; } } .glyphicon-share-alt { &:before { content: "\e095"; } } .glyphicon-resize-full { &:before { content: "\e096"; } } .glyphicon-resize-small { &:before { content: "\e097"; } } .glyphicon-exclamation-sign { &:before { content: "\e101"; } } .glyphicon-gift { &:before { content: "\e102"; } } .glyphicon-leaf { &:before { content: "\e103"; } } .glyphicon-fire { &:before { content: "\e104"; } } .glyphicon-eye-open { &:before { content: "\e105"; } } .glyphicon-eye-close { &:before { content: "\e106"; } } .glyphicon-warning-sign { &:before { content: "\e107"; } } .glyphicon-plane { &:before { content: "\e108"; } } .glyphicon-calendar { &:before { content: "\e109"; } } .glyphicon-random { &:before { content: "\e110"; } } .glyphicon-comment { &:before { content: "\e111"; } } .glyphicon-magnet { &:before { content: "\e112"; } } .glyphicon-chevron-up { &:before { content: "\e113"; } } .glyphicon-chevron-down { &:before { content: "\e114"; } } .glyphicon-retweet { &:before { content: "\e115"; } } .glyphicon-shopping-cart { &:before { content: "\e116"; } } .glyphicon-folder-close { &:before { content: "\e117"; } } .glyphicon-folder-open { &:before { content: "\e118"; } } .glyphicon-resize-vertical { &:before { content: "\e119"; } } .glyphicon-resize-horizontal { &:before { content: "\e120"; } } .glyphicon-hdd { &:before { content: "\e121"; } } .glyphicon-bullhorn { &:before { content: "\e122"; } } .glyphicon-bell { &:before { content: "\e123"; } } .glyphicon-certificate { &:before { content: "\e124"; } } .glyphicon-thumbs-up { &:before { content: "\e125"; } } .glyphicon-thumbs-down { &:before { content: "\e126"; } } .glyphicon-hand-right { &:before { content: "\e127"; } } .glyphicon-hand-left { &:before { content: "\e128"; } } .glyphicon-hand-up { &:before { content: "\e129"; } } .glyphicon-hand-down { &:before { content: "\e130"; } } .glyphicon-circle-arrow-right { &:before { content: "\e131"; } } .glyphicon-circle-arrow-left { &:before { content: "\e132"; } } .glyphicon-circle-arrow-up { &:before { content: "\e133"; } } .glyphicon-circle-arrow-down { &:before { content: "\e134"; } } .glyphicon-globe { &:before { content: "\e135"; } } .glyphicon-wrench { &:before { content: "\e136"; } } .glyphicon-tasks { &:before { content: "\e137"; } } .glyphicon-filter { &:before { content: "\e138"; } } .glyphicon-briefcase { &:before { content: "\e139"; } } .glyphicon-fullscreen { &:before { content: "\e140"; } } .glyphicon-dashboard { &:before { content: "\e141"; } } .glyphicon-paperclip { &:before { content: "\e142"; } } .glyphicon-heart-empty { &:before { content: "\e143"; } } .glyphicon-link { &:before { content: "\e144"; } } .glyphicon-phone { &:before { content: "\e145"; } } .glyphicon-pushpin { &:before { content: "\e146"; } } .glyphicon-usd { &:before { content: "\e148"; } } .glyphicon-gbp { &:before { content: "\e149"; } } .glyphicon-sort { &:before { content: "\e150"; } } .glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } .glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } .glyphicon-sort-by-order { &:before { content: "\e153"; } } .glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } .glyphicon-sort-by-attributes { &:before { content: "\e155"; } } .glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } .glyphicon-unchecked { &:before { content: "\e157"; } } .glyphicon-expand { &:before { content: "\e158"; } } .glyphicon-collapse-down { &:before { content: "\e159"; } } .glyphicon-collapse-up { &:before { content: "\e160"; } } .glyphicon-log-in { &:before { content: "\e161"; } } .glyphicon-flash { &:before { content: "\e162"; } } .glyphicon-log-out { &:before { content: "\e163"; } } .glyphicon-new-window { &:before { content: "\e164"; } } .glyphicon-record { &:before { content: "\e165"; } } .glyphicon-save { &:before { content: "\e166"; } } .glyphicon-open { &:before { content: "\e167"; } } .glyphicon-saved { &:before { content: "\e168"; } } .glyphicon-import { &:before { content: "\e169"; } } .glyphicon-export { &:before { content: "\e170"; } } .glyphicon-send { &:before { content: "\e171"; } } .glyphicon-floppy-disk { &:before { content: "\e172"; } } .glyphicon-floppy-saved { &:before { content: "\e173"; } } .glyphicon-floppy-remove { &:before { content: "\e174"; } } .glyphicon-floppy-save { &:before { content: "\e175"; } } .glyphicon-floppy-open { &:before { content: "\e176"; } } .glyphicon-credit-card { &:before { content: "\e177"; } } .glyphicon-transfer { &:before { content: "\e178"; } } .glyphicon-cutlery { &:before { content: "\e179"; } } .glyphicon-header { &:before { content: "\e180"; } } .glyphicon-compressed { &:before { content: "\e181"; } } .glyphicon-earphone { &:before { content: "\e182"; } } .glyphicon-phone-alt { &:before { content: "\e183"; } } .glyphicon-tower { &:before { content: "\e184"; } } .glyphicon-stats { &:before { content: "\e185"; } } .glyphicon-sd-video { &:before { content: "\e186"; } } .glyphicon-hd-video { &:before { content: "\e187"; } } .glyphicon-subtitles { &:before { content: "\e188"; } } .glyphicon-sound-stereo { &:before { content: "\e189"; } } .glyphicon-sound-dolby { &:before { content: "\e190"; } } .glyphicon-sound-5-1 { &:before { content: "\e191"; } } .glyphicon-sound-6-1 { &:before { content: "\e192"; } } .glyphicon-sound-7-1 { &:before { content: "\e193"; } } .glyphicon-copyright-mark { &:before { content: "\e194"; } } .glyphicon-registration-mark { &:before { content: "\e195"; } } .glyphicon-cloud-download { &:before { content: "\e197"; } } .glyphicon-cloud-upload { &:before { content: "\e198"; } } .glyphicon-tree-conifer { &:before { content: "\e199"; } } .glyphicon-tree-deciduous { &:before { content: "\e200"; } } .glyphicon-cd { &:before { content: "\e201"; } } .glyphicon-save-file { &:before { content: "\e202"; } } .glyphicon-open-file { &:before { content: "\e203"; } } .glyphicon-level-up { &:before { content: "\e204"; } } .glyphicon-copy { &:before { content: "\e205"; } } .glyphicon-paste { &:before { content: "\e206"; } } // The following 2 Glyphicons are omitted for the time being because // they currently use Unicode codepoints that are outside the // Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle // non-BMP codepoints in CSS string escapes, and thus can't display these two icons. // Notably, the bug affects some older versions of the Android Browser. // More info: https://github.com/twbs/bootstrap/issues/10106 // .glyphicon-door { &:before { content: "\1f6aa"; } } // .glyphicon-key { &:before { content: "\1f511"; } } .glyphicon-alert { &:before { content: "\e209"; } } .glyphicon-equalizer { &:before { content: "\e210"; } } .glyphicon-king { &:before { content: "\e211"; } } .glyphicon-queen { &:before { content: "\e212"; } } .glyphicon-pawn { &:before { content: "\e213"; } } .glyphicon-bishop { &:before { content: "\e214"; } } .glyphicon-knight { &:before { content: "\e215"; } } .glyphicon-baby-formula { &:before { content: "\e216"; } } .glyphicon-tent { &:before { content: "\26fa"; } } .glyphicon-blackboard { &:before { content: "\e218"; } } .glyphicon-bed { &:before { content: "\e219"; } } .glyphicon-apple { &:before { content: "\f8ff"; } } .glyphicon-erase { &:before { content: "\e221"; } } .glyphicon-hourglass { &:before { content: "\231b"; } } .glyphicon-lamp { &:before { content: "\e223"; } } .glyphicon-duplicate { &:before { content: "\e224"; } } .glyphicon-piggy-bank { &:before { content: "\e225"; } } .glyphicon-scissors { &:before { content: "\e226"; } } .glyphicon-bitcoin { &:before { content: "\e227"; } } .glyphicon-btc { &:before { content: "\e227"; } } .glyphicon-xbt { &:before { content: "\e227"; } } .glyphicon-yen { &:before { content: "\00a5"; } } .glyphicon-jpy { &:before { content: "\00a5"; } } .glyphicon-ruble { &:before { content: "\20bd"; } } .glyphicon-rub { &:before { content: "\20bd"; } } .glyphicon-scale { &:before { content: "\e230"; } } .glyphicon-ice-lolly { &:before { content: "\e231"; } } .glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } } .glyphicon-education { &:before { content: "\e233"; } } .glyphicon-option-horizontal { &:before { content: "\e234"; } } .glyphicon-option-vertical { &:before { content: "\e235"; } } .glyphicon-menu-hamburger { &:before { content: "\e236"; } } .glyphicon-modal-window { &:before { content: "\e237"; } } .glyphicon-oil { &:before { content: "\e238"; } } .glyphicon-grain { &:before { content: "\e239"; } } .glyphicon-sunglasses { &:before { content: "\e240"; } } .glyphicon-text-size { &:before { content: "\e241"; } } .glyphicon-text-color { &:before { content: "\e242"; } } .glyphicon-text-background { &:before { content: "\e243"; } } .glyphicon-object-align-top { &:before { content: "\e244"; } } .glyphicon-object-align-bottom { &:before { content: "\e245"; } } .glyphicon-object-align-horizontal{ &:before { content: "\e246"; } } .glyphicon-object-align-left { &:before { content: "\e247"; } } .glyphicon-object-align-vertical { &:before { content: "\e248"; } } .glyphicon-object-align-right { &:before { content: "\e249"; } } .glyphicon-triangle-right { &:before { content: "\e250"; } } .glyphicon-triangle-left { &:before { content: "\e251"; } } .glyphicon-triangle-bottom { &:before { content: "\e252"; } } .glyphicon-triangle-top { &:before { content: "\e253"; } } .glyphicon-console { &:before { content: "\e254"; } } .glyphicon-superscript { &:before { content: "\e255"; } } .glyphicon-subscript { &:before { content: "\e256"; } } .glyphicon-menu-left { &:before { content: "\e257"; } } .glyphicon-menu-right { &:before { content: "\e258"; } } .glyphicon-menu-down { &:before { content: "\e259"; } } .glyphicon-menu-up { &:before { content: "\e260"; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_breadcrumbs.scss0000664000175000017500000000112313111777164036037 0ustar abompardabompard00000000000000// // Breadcrumbs // -------------------------------------------------- .breadcrumb { padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; margin-bottom: $line-height-computed; list-style: none; background-color: $breadcrumb-bg; border-radius: $border-radius-base; > li { display: inline-block; + li:before { content: "#{$breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space padding: 0 5px; color: $breadcrumb-color; } } > .active { color: $breadcrumb-active-color; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_carousel.scss0000664000175000017500000001255113111777164035372 0ustar abompardabompard00000000000000// // Carousel // -------------------------------------------------- // Wrapper for the slide container and indicators .carousel { position: relative; } .carousel-inner { position: relative; overflow: hidden; width: 100%; > .item { display: none; position: relative; @include transition(.6s ease-in-out left); // Account for jankitude on images > img, > a > img { @include img-responsive; line-height: 1; } // WebKit CSS3 transforms for supported devices @media all and (transform-3d), (-webkit-transform-3d) { @include transition-transform(0.6s ease-in-out); @include backface-visibility(hidden); @include perspective(1000px); &.next, &.active.right { @include translate3d(100%, 0, 0); left: 0; } &.prev, &.active.left { @include translate3d(-100%, 0, 0); left: 0; } &.next.left, &.prev.right, &.active { @include translate3d(0, 0, 0); left: 0; } } } > .active, > .next, > .prev { display: block; } > .active { left: 0; } > .next, > .prev { position: absolute; top: 0; width: 100%; } > .next { left: 100%; } > .prev { left: -100%; } > .next.left, > .prev.right { left: 0; } > .active.left { left: -100%; } > .active.right { left: 100%; } } // Left/right controls for nav // --------------------------- .carousel-control { position: absolute; top: 0; left: 0; bottom: 0; width: $carousel-control-width; @include opacity($carousel-control-opacity); font-size: $carousel-control-font-size; color: $carousel-control-color; text-align: center; text-shadow: $carousel-text-shadow; // We can't have this transition here because WebKit cancels the carousel // animation if you trip this while in the middle of another animation. // Set gradients for backgrounds &.left { @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); } &.right { left: auto; right: 0; @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); } // Hover/focus state &:hover, &:focus { outline: 0; color: $carousel-control-color; text-decoration: none; @include opacity(.9); } // Toggles .icon-prev, .icon-next, .glyphicon-chevron-left, .glyphicon-chevron-right { position: absolute; top: 50%; margin-top: -10px; z-index: 5; display: inline-block; } .icon-prev, .glyphicon-chevron-left { left: 50%; margin-left: -10px; } .icon-next, .glyphicon-chevron-right { right: 50%; margin-right: -10px; } .icon-prev, .icon-next { width: 20px; height: 20px; line-height: 1; font-family: serif; } .icon-prev { &:before { content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) } } .icon-next { &:before { content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) } } } // Optional indicator pips // // Add an unordered list with the following class and add a list item for each // slide your carousel holds. .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; margin-left: -30%; padding-left: 0; list-style: none; text-align: center; li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; border: 1px solid $carousel-indicator-border-color; border-radius: 10px; cursor: pointer; // IE8-9 hack for event handling // // Internet Explorer 8-9 does not support clicks on elements without a set // `background-color`. We cannot use `filter` since that's not viewed as a // background color by the browser. Thus, a hack is needed. // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer // // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we // set alpha transparency for the best results possible. background-color: #000 \9; // IE8 background-color: rgba(0,0,0,0); // IE9 } .active { margin: 0; width: 12px; height: 12px; background-color: $carousel-indicator-active-bg; } } // Optional captions // ----------------------------- // Hidden by default for smaller viewports .carousel-caption { position: absolute; left: 15%; right: 15%; bottom: 20px; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: $carousel-caption-color; text-align: center; text-shadow: $carousel-text-shadow; & .btn { text-shadow: none; // No shadow for button elements in carousel-caption } } // Scale up controls for tablets and up @media screen and (min-width: $screen-sm-min) { // Scale up the controls a smidge .carousel-control { .glyphicon-chevron-left, .glyphicon-chevron-right, .icon-prev, .icon-next { width: 30px; height: 30px; margin-top: -15px; font-size: 30px; } .glyphicon-chevron-left, .icon-prev { margin-left: -15px; } .glyphicon-chevron-right, .icon-next { margin-right: -15px; } } // Show and left align the captions .carousel-caption { left: 20%; right: 20%; padding-bottom: 30px; } // Move up the indicators .carousel-indicators { bottom: 20px; } } ././@LongLink0000000000000000000000000000014700000000000011217 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_button-groups.scssHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_button-groups.sc0000664000175000017500000001315113111777164036034 0ustar abompardabompard00000000000000// // Button groups // -------------------------------------------------- // Make the div behave like a button .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; // match .btn alignment given font-size hack above > .btn { position: relative; float: left; // Bring the "active" button to the front &:hover, &:focus, &:active, &.active { z-index: 2; } } } // Prevent double borders when buttons are next to each other .btn-group { .btn + .btn, .btn + .btn-group, .btn-group + .btn, .btn-group + .btn-group { margin-left: -1px; } } // Optional: Group multiple button groups together for a toolbar .btn-toolbar { margin-left: -5px; // Offset the first child's margin @include clearfix; .btn, .btn-group, .input-group { float: left; } > .btn, > .btn-group, > .input-group { margin-left: 5px; } } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match .btn-group > .btn:first-child { margin-left: 0; &:not(:last-child):not(.dropdown-toggle) { @include border-right-radius(0); } } // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { @include border-left-radius(0); } // Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child:not(:last-child) { > .btn:last-child, > .dropdown-toggle { @include border-right-radius(0); } } .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { @include border-left-radius(0); } // On active and open, don't show outline .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } // Sizing // // Remix the default button sizing classes into new ones for easier manipulation. .btn-group-xs > .btn { @extend .btn-xs; } .btn-group-sm > .btn { @extend .btn-sm; } .btn-group-lg > .btn { @extend .btn-lg; } // Split button dropdowns // ---------------------- // Give the line between buttons some depth .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-left: 12px; padding-right: 12px; } // The clickable button for toggling the menu // Remove the gradient and set the same inset shadow as the :active state .btn-group.open .dropdown-toggle { @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); // Show no shadow for `.btn-link` since it has no other button styles. &.btn-link { @include box-shadow(none); } } // Reposition the caret .btn .caret { margin-left: 0; } // Carets in other button sizes .btn-lg .caret { border-width: $caret-width-large $caret-width-large 0; border-bottom-width: 0; } // Upside down carets for .dropup .dropup .btn-lg .caret { border-width: 0 $caret-width-large $caret-width-large; } // Vertical button groups // ---------------------- .btn-group-vertical { > .btn, > .btn-group, > .btn-group > .btn { display: block; float: none; width: 100%; max-width: 100%; } // Clear floats so dropdown menus can be properly placed > .btn-group { @include clearfix; > .btn { float: none; } } > .btn + .btn, > .btn + .btn-group, > .btn-group + .btn, > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } } .btn-group-vertical > .btn { &:not(:first-child):not(:last-child) { border-radius: 0; } &:first-child:not(:last-child) { border-top-right-radius: $btn-border-radius-base; @include border-bottom-radius(0); } &:last-child:not(:first-child) { border-bottom-left-radius: $btn-border-radius-base; @include border-top-radius(0); } } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child:not(:last-child) { > .btn:last-child, > .dropdown-toggle { @include border-bottom-radius(0); } } .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { @include border-top-radius(0); } // Justified button groups // ---------------------- .btn-group-justified { display: table; width: 100%; table-layout: fixed; border-collapse: separate; > .btn, > .btn-group { float: none; display: table-cell; width: 1%; } > .btn-group .btn { width: 100%; } > .btn-group .dropdown-menu { left: auto; } } // Checkbox and radio options // // In order to support the browser's form validation feedback, powered by the // `required` attribute, we have to "hide" the inputs via `clip`. We cannot use // `display: none;` or `visibility: hidden;` as that also hides the popover. // Simply visually hiding the inputs via `opacity` would leave them clickable in // certain cases which is prevented by using `clip` and `pointer-events`. // This way, we ensure a DOM element is visible to position the popover from. // // See https://github.com/twbs/bootstrap/pull/12794 and // https://github.com/twbs/bootstrap/pull/14559 for more information. [data-toggle="buttons"] { > .btn, > .btn-group > .btn { input[type="radio"], input[type="checkbox"] { position: absolute; clip: rect(0,0,0,0); pointer-events: none; } } } ././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_input-groups.scssHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_input-groups.scs0000664000175000017500000001024513111777164036044 0ustar abompardabompard00000000000000// // Input groups // -------------------------------------------------- // Base styles // ------------------------- .input-group { position: relative; // For dropdowns display: table; border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table // Undo padding and float of grid classes &[class*="col-"] { float: none; padding-left: 0; padding-right: 0; } .form-control { // Ensure that the input is always above the *appended* addon button for // proper border colors. position: relative; z-index: 2; // IE9 fubars the placeholder attribute in text inputs and the arrows on // select elements in input groups. To fix it, we float the input. Details: // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 float: left; width: 100%; margin-bottom: 0; } } // Sizing options // // Remix the default form control sizing classes into new ones for easier // manipulation. .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { @extend .input-lg; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { @extend .input-sm; } // Display as table-cell // ------------------------- .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; &:not(:first-child):not(:last-child) { border-radius: 0; } } // Addon and addon wrapper for buttons .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; // Match the inputs } // Text input groups // ------------------------- .input-group-addon { padding: $padding-base-vertical $padding-base-horizontal; font-size: $font-size-base; font-weight: normal; line-height: 1; color: $input-color; text-align: center; background-color: $input-group-addon-bg; border: 1px solid $input-group-addon-border-color; border-radius: $border-radius-base; // Sizing &.input-sm { padding: $padding-small-vertical $padding-small-horizontal; font-size: $font-size-small; border-radius: $border-radius-small; } &.input-lg { padding: $padding-large-vertical $padding-large-horizontal; font-size: $font-size-large; border-radius: $border-radius-large; } // Nuke default margins from checkboxes and radios to vertically center within. input[type="radio"], input[type="checkbox"] { margin-top: 0; } } // Reset rounded corners .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { @include border-right-radius(0); } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { @include border-left-radius(0); } .input-group-addon:last-child { border-left: 0; } // Button input groups // ------------------------- .input-group-btn { position: relative; // Jankily prevent input button groups from wrapping with `white-space` and // `font-size` in combination with `inline-block` on buttons. font-size: 0; white-space: nowrap; // Negative margin for spacing, position for bringing hovered/focused/actived // element above the siblings. > .btn { position: relative; + .btn { margin-left: -1px; } // Bring the "active" button to the front &:hover, &:focus, &:active { z-index: 2; } } // Negative margin to only have a 1px border between the two &:first-child { > .btn, > .btn-group { margin-right: -1px; } } &:last-child { > .btn, > .btn-group { z-index: 2; margin-left: -1px; } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_modals.scss0000664000175000017500000000703413111777164035034 0ustar abompardabompard00000000000000// // Modals // -------------------------------------------------- // .modal-open - body class for killing the scroll // .modal - container to scroll within // .modal-dialog - positioning shell for the actual modal // .modal-content - actual modal w/ bg and corners and shit // Kill the scroll on the body .modal-open { overflow: hidden; } // Container that the modal scrolls within .modal { display: none; overflow: hidden; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: $zindex-modal; -webkit-overflow-scrolling: touch; // Prevent Chrome on Windows from adding a focus outline. For details, see // https://github.com/twbs/bootstrap/pull/10951. outline: 0; // When fading in the modal, animate it to slide down &.fade .modal-dialog { @include translate(0, -25%); @include transition-transform(0.3s ease-out); } &.in .modal-dialog { @include translate(0, 0) } } .modal-open .modal { overflow-x: hidden; overflow-y: auto; } // Shell div to position the modal with bottom padding .modal-dialog { position: relative; width: auto; margin: 10px; } // Actual modal .modal-content { position: relative; background-color: $modal-content-bg; border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc) border: 1px solid $modal-content-border-color; border-radius: $border-radius-large; @include box-shadow(0 3px 9px rgba(0,0,0,.5)); background-clip: padding-box; // Remove focus outline from opened modal outline: 0; } // Modal background .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: $zindex-modal-background; background-color: $modal-backdrop-bg; // Fade for backdrop &.fade { @include opacity(0); } &.in { @include opacity($modal-backdrop-opacity); } } // Modal header // Top section of the modal w/ title and dismiss .modal-header { padding: $modal-title-padding; border-bottom: 1px solid $modal-header-border-color; min-height: ($modal-title-padding + $modal-title-line-height); } // Close icon .modal-header .close { margin-top: -2px; } // Title text within header .modal-title { margin: 0; line-height: $modal-title-line-height; } // Modal body // Where all modal content resides (sibling of .modal-header and .modal-footer) .modal-body { position: relative; padding: $modal-inner-padding; } // Footer (for actions) .modal-footer { padding: $modal-inner-padding; text-align: right; // right align buttons border-top: 1px solid $modal-footer-border-color; @include clearfix; // clear it in case folks use .pull-* classes on buttons // Properly space out buttons .btn + .btn { margin-left: 5px; margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs } // but override that for button groups .btn-group .btn + .btn { margin-left: -1px; } // and override it for block buttons as well .btn-block + .btn-block { margin-left: 0; } } // Measure scrollbar width for padding body during modal show/hide .modal-scrollbar-measure { position: absolute; top: -9999px; width: 50px; height: 50px; overflow: scroll; } // Scale up the modal @media (min-width: $screen-sm-min) { // Automatically set modal's width for larger viewports .modal-dialog { width: $modal-md; margin: 30px auto; } .modal-content { @include box-shadow(0 5px 15px rgba(0,0,0,.5)); } // Modal sizes .modal-sm { width: $modal-sm; } } @media (min-width: $screen-md-min) { .modal-lg { width: $modal-lg; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_labels.scss0000664000175000017500000000220413111777164035011 0ustar abompardabompard00000000000000// // Labels // -------------------------------------------------- .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: $label-color; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; // [converter] extracted a& to a.label // Empty labels collapse automatically (not available in IE8) &:empty { display: none; } // Quick fix for labels in buttons .btn & { position: relative; top: -1px; } } // Add hover effects, but only for links a.label { &:hover, &:focus { color: $label-link-hover-color; text-decoration: none; cursor: pointer; } } // Colors // Contextual variations (linked labels get darker on :hover) .label-default { @include label-variant($label-default-bg); } .label-primary { @include label-variant($label-primary-bg); } .label-success { @include label-variant($label-success-bg); } .label-info { @include label-variant($label-info-bg); } .label-warning { @include label-variant($label-warning-bg); } .label-danger { @include label-variant($label-danger-bg); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_print.scss0000664000175000017500000000362313111777164034711 0ustar abompardabompard00000000000000/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ // ========================================================================== // Print styles. // Inlined to avoid the additional HTTP request: h5bp.com/r // ========================================================================== @media print { *, *:before, *:after { background: transparent !important; color: #000 !important; // Black prints faster: h5bp.com/s box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } // Don't show links that are fragment identifiers, // or use the `javascript:` pseudo protocol a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; // h5bp.com/t } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } // Bootstrap specific changes start // Bootstrap components .navbar { display: none; } .btn, .dropup > .btn { > .caret { border-top-color: #000 !important; } } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; td, th { background-color: #fff !important; } } .table-bordered { th, td { border: 1px solid #ddd !important; } } // Bootstrap specific changes end } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_scaffolding.scss0000664000175000017500000000573013111777164036035 0ustar abompardabompard00000000000000// // Scaffolding // -------------------------------------------------- // Reset the box-sizing // // Heads up! This reset may cause conflicts with some third-party widgets. // For recommendations on resolving such conflicts, see // http://getbootstrap.com/getting-started/#third-box-sizing * { @include box-sizing(border-box); } *:before, *:after { @include box-sizing(border-box); } // Body reset html { font-size: 10px; -webkit-tap-highlight-color: rgba(0,0,0,0); } body { font-family: $font-family-base; font-size: $font-size-base; line-height: $line-height-base; color: $text-color; background-color: $body-bg; } // Reset fonts for relevant elements input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } // Links a { color: $link-color; text-decoration: none; &:hover, &:focus { color: $link-hover-color; text-decoration: $link-hover-decoration; } &:focus { @include tab-focus; } } // Figures // // We reset this here because previously Normalize had no `figure` margins. This // ensures we don't break anyone's use of the element. figure { margin: 0; } // Images img { vertical-align: middle; } // Responsive images (ensure images don't scale beyond their parents) .img-responsive { @include img-responsive; } // Rounded corners .img-rounded { border-radius: $border-radius-large; } // Image thumbnails // // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`. .img-thumbnail { padding: $thumbnail-padding; line-height: $line-height-base; background-color: $thumbnail-bg; border: 1px solid $thumbnail-border; border-radius: $thumbnail-border-radius; @include transition(all .2s ease-in-out); // Keep them at most 100% wide @include img-responsive(inline-block); } // Perfect circle .img-circle { border-radius: 50%; // set radius in percents } // Horizontal rules hr { margin-top: $line-height-computed; margin-bottom: $line-height-computed; border: 0; border-top: 1px solid $hr-border; } // Only display content to screen readers // // See: http://a11yproject.com/posts/how-to-hide-content/ .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); border: 0; } // Use in conjunction with .sr-only to only display content when it's focused. // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 // Credit: HTML5 Boilerplate .sr-only-focusable { &:active, &:focus { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; } } // iOS "clickable elements" fix for role="button" // // Fixes "clickability" issue (and more generally, the firing of events such as focus as well) // for traditionally non-focusable elements with role="button" // see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile [role="button"] { cursor: pointer; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_utilities.scss0000664000175000017500000000137513111777164035572 0ustar abompardabompard00000000000000// // Utility classes // -------------------------------------------------- // Floats // ------------------------- .clearfix { @include clearfix; } .center-block { @include center-block; } .pull-right { float: right !important; } .pull-left { float: left !important; } // Toggling content // ------------------------- // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1 .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { @include text-hide; } // Hide from screenreaders and browsers // // Credit: HTML5 Boilerplate .hidden { display: none !important; } // For Affix plugin // ------------------------- .affix { position: fixed; } ././@LongLink0000000000000000000000000000015600000000000011217 Lustar 00000000000000HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_component-animations.scssHyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_component-animat0000664000175000017500000000146313111777164036054 0ustar abompardabompard00000000000000// // Component animations // -------------------------------------------------- // Heads up! // // We don't use the `.opacity()` mixin here since it causes a bug with text // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. .fade { opacity: 0; @include transition(opacity .15s linear); &.in { opacity: 1; } } .collapse { display: none; &.in { display: block; } // [converter] extracted tr&.in to tr.collapse.in // [converter] extracted tbody&.in to tbody.collapse.in } tr.collapse.in { display: table-row; } tbody.collapse.in { display: table-row-group; } .collapsing { position: relative; height: 0; overflow: hidden; @include transition-property(height, visibility); @include transition-duration(.35s); @include transition-timing-function(ease); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_navbar.scss0000664000175000017500000003461113111777164035027 0ustar abompardabompard00000000000000// // Navbars // -------------------------------------------------- // Wrapper and base class // // Provide a static navbar from which we expand to create full-width, fixed, and // other navbar variations. .navbar { position: relative; min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) margin-bottom: $navbar-margin-bottom; border: 1px solid transparent; // Prevent floats from breaking the navbar @include clearfix; @media (min-width: $grid-float-breakpoint) { border-radius: $navbar-border-radius; } } // Navbar heading // // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy // styling of responsive aspects. .navbar-header { @include clearfix; @media (min-width: $grid-float-breakpoint) { float: left; } } // Navbar collapse (body) // // Group your navbar content into this for easy collapsing and expanding across // various device sizes. By default, this content is collapsed when <768px, but // will expand past that for a horizontal display. // // To start (on mobile devices) the navbar links, forms, and buttons are stacked // vertically and include a `max-height` to overflow in case you have too much // content for the user's viewport. .navbar-collapse { overflow-x: visible; padding-right: $navbar-padding-horizontal; padding-left: $navbar-padding-horizontal; border-top: 1px solid transparent; box-shadow: inset 0 1px 0 rgba(255,255,255,.1); @include clearfix; -webkit-overflow-scrolling: touch; &.in { overflow-y: auto; } @media (min-width: $grid-float-breakpoint) { width: auto; border-top: 0; box-shadow: none; &.collapse { display: block !important; height: auto !important; padding-bottom: 0; // Override default setting overflow: visible !important; } &.in { overflow-y: visible; } // Undo the collapse side padding for navbars with containers to ensure // alignment of right-aligned contents. .navbar-fixed-top &, .navbar-static-top &, .navbar-fixed-bottom & { padding-left: 0; padding-right: 0; } } } .navbar-fixed-top, .navbar-fixed-bottom { .navbar-collapse { max-height: $navbar-collapse-max-height; @media (max-device-width: $screen-xs-min) and (orientation: landscape) { max-height: 200px; } } } // Both navbar header and collapse // // When a container is present, change the behavior of the header and collapse. .container, .container-fluid { > .navbar-header, > .navbar-collapse { margin-right: -$navbar-padding-horizontal; margin-left: -$navbar-padding-horizontal; @media (min-width: $grid-float-breakpoint) { margin-right: 0; margin-left: 0; } } } // // Navbar alignment options // // Display the navbar across the entirety of the page or fixed it to the top or // bottom of the page. // Static top (unfixed, but 100% wide) navbar .navbar-static-top { z-index: $zindex-navbar; border-width: 0 0 1px; @media (min-width: $grid-float-breakpoint) { border-radius: 0; } } // Fix the top/bottom navbars when screen real estate supports it .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: $zindex-navbar-fixed; // Undo the rounded corners @media (min-width: $grid-float-breakpoint) { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; // override .navbar defaults border-width: 1px 0 0; } // Brand/project name .navbar-brand { float: left; padding: $navbar-padding-vertical $navbar-padding-horizontal; font-size: $font-size-large; line-height: $line-height-computed; height: $navbar-height; &:hover, &:focus { text-decoration: none; } > img { display: block; } @media (min-width: $grid-float-breakpoint) { .navbar > .container &, .navbar > .container-fluid & { margin-left: -$navbar-padding-horizontal; } } } // Navbar toggle // // Custom button for toggling the `.navbar-collapse`, powered by the collapse // JavaScript plugin. .navbar-toggle { position: relative; float: right; margin-right: $navbar-padding-horizontal; padding: 9px 10px; @include navbar-vertical-align(34px); background-color: transparent; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid transparent; border-radius: $border-radius-base; // We remove the `outline` here, but later compensate by attaching `:hover` // styles to `:focus`. &:focus { outline: 0; } // Bars .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: $grid-float-breakpoint) { display: none; } } // Navbar nav links // // Builds on top of the `.nav` components with its own modifier class to make // the nav the full height of the horizontal nav (above 768px). .navbar-nav { margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal); > li > a { padding-top: 10px; padding-bottom: 10px; line-height: $line-height-computed; } @media (max-width: $grid-float-breakpoint-max) { // Dropdowns get custom display when collapsed .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; box-shadow: none; > li > a, .dropdown-header { padding: 5px 15px 5px 25px; } > li > a { line-height: $line-height-computed; &:hover, &:focus { background-image: none; } } } } // Uncollapse the nav @media (min-width: $grid-float-breakpoint) { float: left; margin: 0; > li { float: left; > a { padding-top: $navbar-padding-vertical; padding-bottom: $navbar-padding-vertical; } } } } // Navbar form // // Extension of the `.form-inline` with some extra flavor for optimum display in // our navbars. .navbar-form { margin-left: -$navbar-padding-horizontal; margin-right: -$navbar-padding-horizontal; padding: 10px $navbar-padding-horizontal; border-top: 1px solid transparent; border-bottom: 1px solid transparent; $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); @include box-shadow($shadow); // Mixin behavior for optimum display @include form-inline; .form-group { @media (max-width: $grid-float-breakpoint-max) { margin-bottom: 5px; &:last-child { margin-bottom: 0; } } } // Vertically center in expanded, horizontal navbar @include navbar-vertical-align($input-height-base); // Undo 100% width for pull classes @media (min-width: $grid-float-breakpoint) { width: auto; border: 0; margin-left: 0; margin-right: 0; padding-top: 0; padding-bottom: 0; @include box-shadow(none); } } // Dropdown menus // Menu position and menu carets .navbar-nav > li > .dropdown-menu { margin-top: 0; @include border-top-radius(0); } // Menu position and menu caret support for dropups via extra dropup class .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { margin-bottom: 0; @include border-top-radius($navbar-border-radius); @include border-bottom-radius(0); } // Buttons in navbars // // Vertically center a button within a navbar (when *not* in a form). .navbar-btn { @include navbar-vertical-align($input-height-base); &.btn-sm { @include navbar-vertical-align($input-height-small); } &.btn-xs { @include navbar-vertical-align(22); } } // Text in navbars // // Add a class to make any element properly align itself vertically within the navbars. .navbar-text { @include navbar-vertical-align($line-height-computed); @media (min-width: $grid-float-breakpoint) { float: left; margin-left: $navbar-padding-horizontal; margin-right: $navbar-padding-horizontal; } } // Component alignment // // Repurpose the pull utilities as their own navbar utilities to avoid specificity // issues with parents and chaining. Only do this when the navbar is uncollapsed // though so that navbar contents properly stack and align in mobile. // // Declared after the navbar components to ensure more specificity on the margins. @media (min-width: $grid-float-breakpoint) { .navbar-left { float: left !important; } .navbar-right { float: right !important; margin-right: -$navbar-padding-horizontal; ~ .navbar-right { margin-right: 0; } } } // Alternate navbars // -------------------------------------------------- // Default navbar .navbar-default { background-color: $navbar-default-bg; border-color: $navbar-default-border; .navbar-brand { color: $navbar-default-brand-color; &:hover, &:focus { color: $navbar-default-brand-hover-color; background-color: $navbar-default-brand-hover-bg; } } .navbar-text { color: $navbar-default-color; } .navbar-nav { > li > a { color: $navbar-default-link-color; &:hover, &:focus { color: $navbar-default-link-hover-color; background-color: $navbar-default-link-hover-bg; } } > .active > a { &, &:hover, &:focus { color: $navbar-default-link-active-color; background-color: $navbar-default-link-active-bg; } } > .disabled > a { &, &:hover, &:focus { color: $navbar-default-link-disabled-color; background-color: $navbar-default-link-disabled-bg; } } } .navbar-toggle { border-color: $navbar-default-toggle-border-color; &:hover, &:focus { background-color: $navbar-default-toggle-hover-bg; } .icon-bar { background-color: $navbar-default-toggle-icon-bar-bg; } } .navbar-collapse, .navbar-form { border-color: $navbar-default-border; } // Dropdown menu items .navbar-nav { // Remove background color from open dropdown > .open > a { &, &:hover, &:focus { background-color: $navbar-default-link-active-bg; color: $navbar-default-link-active-color; } } @media (max-width: $grid-float-breakpoint-max) { // Dropdowns get custom display when collapsed .open .dropdown-menu { > li > a { color: $navbar-default-link-color; &:hover, &:focus { color: $navbar-default-link-hover-color; background-color: $navbar-default-link-hover-bg; } } > .active > a { &, &:hover, &:focus { color: $navbar-default-link-active-color; background-color: $navbar-default-link-active-bg; } } > .disabled > a { &, &:hover, &:focus { color: $navbar-default-link-disabled-color; background-color: $navbar-default-link-disabled-bg; } } } } } // Links in navbars // // Add a class to ensure links outside the navbar nav are colored correctly. .navbar-link { color: $navbar-default-link-color; &:hover { color: $navbar-default-link-hover-color; } } .btn-link { color: $navbar-default-link-color; &:hover, &:focus { color: $navbar-default-link-hover-color; } &[disabled], fieldset[disabled] & { &:hover, &:focus { color: $navbar-default-link-disabled-color; } } } } // Inverse navbar .navbar-inverse { background-color: $navbar-inverse-bg; border-color: $navbar-inverse-border; .navbar-brand { color: $navbar-inverse-brand-color; &:hover, &:focus { color: $navbar-inverse-brand-hover-color; background-color: $navbar-inverse-brand-hover-bg; } } .navbar-text { color: $navbar-inverse-color; } .navbar-nav { > li > a { color: $navbar-inverse-link-color; &:hover, &:focus { color: $navbar-inverse-link-hover-color; background-color: $navbar-inverse-link-hover-bg; } } > .active > a { &, &:hover, &:focus { color: $navbar-inverse-link-active-color; background-color: $navbar-inverse-link-active-bg; } } > .disabled > a { &, &:hover, &:focus { color: $navbar-inverse-link-disabled-color; background-color: $navbar-inverse-link-disabled-bg; } } } // Darken the responsive nav toggle .navbar-toggle { border-color: $navbar-inverse-toggle-border-color; &:hover, &:focus { background-color: $navbar-inverse-toggle-hover-bg; } .icon-bar { background-color: $navbar-inverse-toggle-icon-bar-bg; } } .navbar-collapse, .navbar-form { border-color: darken($navbar-inverse-bg, 7%); } // Dropdowns .navbar-nav { > .open > a { &, &:hover, &:focus { background-color: $navbar-inverse-link-active-bg; color: $navbar-inverse-link-active-color; } } @media (max-width: $grid-float-breakpoint-max) { // Dropdowns get custom display .open .dropdown-menu { > .dropdown-header { border-color: $navbar-inverse-border; } .divider { background-color: $navbar-inverse-border; } > li > a { color: $navbar-inverse-link-color; &:hover, &:focus { color: $navbar-inverse-link-hover-color; background-color: $navbar-inverse-link-hover-bg; } } > .active > a { &, &:hover, &:focus { color: $navbar-inverse-link-active-color; background-color: $navbar-inverse-link-active-bg; } } > .disabled > a { &, &:hover, &:focus { color: $navbar-inverse-link-disabled-color; background-color: $navbar-inverse-link-disabled-bg; } } } } } .navbar-link { color: $navbar-inverse-link-color; &:hover { color: $navbar-inverse-link-hover-color; } } .btn-link { color: $navbar-inverse-link-color; &:hover, &:focus { color: $navbar-inverse-link-hover-color; } &[disabled], fieldset[disabled] & { &:hover, &:focus { color: $navbar-inverse-link-disabled-color; } } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_pager.scss0000664000175000017500000000152713111777164034654 0ustar abompardabompard00000000000000// // Pager pagination // -------------------------------------------------- .pager { padding-left: 0; margin: $line-height-computed 0; list-style: none; text-align: center; @include clearfix; li { display: inline; > a, > span { display: inline-block; padding: 5px 14px; background-color: $pager-bg; border: 1px solid $pager-border; border-radius: $pager-border-radius; } > a:hover, > a:focus { text-decoration: none; background-color: $pager-hover-bg; } } .next { > a, > span { float: right; } } .previous { > a, > span { float: left; } } .disabled { > a, > a:hover, > a:focus, > span { color: $pager-disabled-color; background-color: $pager-bg; cursor: $cursor-disabled; } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_dropdowns.scss0000664000175000017500000001143113111777164035570 0ustar abompardabompard00000000000000// // Dropdown menus // -------------------------------------------------- // Dropdown arrow/caret .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: $caret-width-base dashed; border-top: $caret-width-base solid \9; // IE8 border-right: $caret-width-base solid transparent; border-left: $caret-width-base solid transparent; } // The dropdown wrapper (div) .dropup, .dropdown { position: relative; } // Prevent the focus on the dropdown toggle when closing dropdowns .dropdown-toggle:focus { outline: 0; } // The dropdown menu (ul) .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: $zindex-dropdown; display: none; // none by default, but block on "open" of the menu float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; // override default ul list-style: none; font-size: $font-size-base; text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) background-color: $dropdown-bg; border: 1px solid $dropdown-fallback-border; // IE8 fallback border: 1px solid $dropdown-border; border-radius: $border-radius-base; @include box-shadow(0 6px 12px rgba(0,0,0,.175)); background-clip: padding-box; // Aligns the dropdown menu to right // // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` &.pull-right { right: 0; left: auto; } // Dividers (basically an hr) within the dropdown .divider { @include nav-divider($dropdown-divider-bg); } // Links within the dropdown menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: $line-height-base; color: $dropdown-link-color; white-space: nowrap; // prevent links from randomly breaking onto new lines } } // Hover/Focus state .dropdown-menu > li > a { &:hover, &:focus { text-decoration: none; color: $dropdown-link-hover-color; background-color: $dropdown-link-hover-bg; } } // Active state .dropdown-menu > .active > a { &, &:hover, &:focus { color: $dropdown-link-active-color; text-decoration: none; outline: 0; background-color: $dropdown-link-active-bg; } } // Disabled state // // Gray out text and ensure the hover/focus state remains gray .dropdown-menu > .disabled > a { &, &:hover, &:focus { color: $dropdown-link-disabled-color; } // Nuke hover/focus effects &:hover, &:focus { text-decoration: none; background-color: transparent; background-image: none; // Remove CSS gradient @include reset-filter; cursor: $cursor-disabled; } } // Open state for the dropdown .open { // Show the menu > .dropdown-menu { display: block; } // Remove the outline when :focus is triggered > a { outline: 0; } } // Menu positioning // // Add extra class to `.dropdown-menu` to flip the alignment of the dropdown // menu with the parent. .dropdown-menu-right { left: auto; // Reset the default from `.dropdown-menu` right: 0; } // With v3, we enabled auto-flipping if you have a dropdown within a right // aligned nav component. To enable the undoing of that, we provide an override // to restore the default dropdown menu alignment. // // This is only for left-aligning a dropdown menu within a `.navbar-right` or // `.pull-right` nav component. .dropdown-menu-left { left: 0; right: auto; } // Dropdown section headers .dropdown-header { display: block; padding: 3px 20px; font-size: $font-size-small; line-height: $line-height-base; color: $dropdown-header-color; white-space: nowrap; // as with > li > a } // Backdrop to catch body clicks on mobile, etc. .dropdown-backdrop { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: ($zindex-dropdown - 10); } // Right aligned dropdowns .pull-right > .dropdown-menu { right: 0; left: auto; } // Allow for dropdowns to go bottom up (aka, dropup-menu) // // Just add .dropup after the standard .dropdown class and you're set, bro. // TODO: abstract this so that the navbar fixed styles are not placed here? .dropup, .navbar-fixed-bottom .dropdown { // Reverse the caret .caret { border-top: 0; border-bottom: $caret-width-base dashed; border-bottom: $caret-width-base solid \9; // IE8 content: ""; } // Different positioning for bottom up menu .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 2px; } } // Component alignment // // Reiterate per navbar.less and the modified component alignment there. @media (min-width: $grid-float-breakpoint) { .navbar-right { .dropdown-menu { right: 0; left: auto; } // Necessary for overrides of the default right aligned menu. // Will remove come v4 in all likelihood. .dropdown-menu-left { left: 0; right: auto; } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_alerts.scss0000664000175000017500000000301613111777164035043 0ustar abompardabompard00000000000000// // Alerts // -------------------------------------------------- // Base styles // ------------------------- .alert { padding: $alert-padding; margin-bottom: $line-height-computed; border: 1px solid transparent; border-radius: $alert-border-radius; // Headings for larger alerts h4 { margin-top: 0; // Specified for the h4 to prevent conflicts of changing $headings-color color: inherit; } // Provide class for links that match alerts .alert-link { font-weight: $alert-link-font-weight; } // Improve alignment and spacing of inner content > p, > ul { margin-bottom: 0; } > p + p { margin-top: 5px; } } // Dismissible alerts // // Expand the right padding and account for the close button's positioning. .alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. .alert-dismissible { padding-right: ($alert-padding + 20); // Adjust close link position .close { position: relative; top: -2px; right: -21px; color: inherit; } } // Alternate styles // // Generate contextual modifier classes for colorizing the alert. .alert-success { @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); } .alert-info { @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); } .alert-warning { @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); } .alert-danger { @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_popovers.scss0000664000175000017500000000665613111777164035443 0ustar abompardabompard00000000000000// // Popovers // -------------------------------------------------- .popover { position: absolute; top: 0; left: 0; z-index: $zindex-popover; display: none; max-width: $popover-max-width; padding: 1px; // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element. // So reset our font and text properties to avoid inheriting weird values. @include reset-text; font-size: $font-size-base; background-color: $popover-bg; background-clip: padding-box; border: 1px solid $popover-fallback-border-color; border: 1px solid $popover-border-color; border-radius: $border-radius-large; @include box-shadow(0 5px 10px rgba(0,0,0,.2)); // Offset the popover to account for the popover arrow &.top { margin-top: -$popover-arrow-width; } &.right { margin-left: $popover-arrow-width; } &.bottom { margin-top: $popover-arrow-width; } &.left { margin-left: -$popover-arrow-width; } } .popover-title { margin: 0; // reset heading margin padding: 8px 14px; font-size: $font-size-base; background-color: $popover-title-bg; border-bottom: 1px solid darken($popover-title-bg, 5%); border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0; } .popover-content { padding: 9px 14px; } // Arrows // // .arrow is outer, .arrow:after is inner .popover > .arrow { &, &:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } } .popover > .arrow { border-width: $popover-arrow-outer-width; } .popover > .arrow:after { border-width: $popover-arrow-width; content: ""; } .popover { &.top > .arrow { left: 50%; margin-left: -$popover-arrow-outer-width; border-bottom-width: 0; border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback border-top-color: $popover-arrow-outer-color; bottom: -$popover-arrow-outer-width; &:after { content: " "; bottom: 1px; margin-left: -$popover-arrow-width; border-bottom-width: 0; border-top-color: $popover-arrow-color; } } &.right > .arrow { top: 50%; left: -$popover-arrow-outer-width; margin-top: -$popover-arrow-outer-width; border-left-width: 0; border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback border-right-color: $popover-arrow-outer-color; &:after { content: " "; left: 1px; bottom: -$popover-arrow-width; border-left-width: 0; border-right-color: $popover-arrow-color; } } &.bottom > .arrow { left: 50%; margin-left: -$popover-arrow-outer-width; border-top-width: 0; border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback border-bottom-color: $popover-arrow-outer-color; top: -$popover-arrow-outer-width; &:after { content: " "; top: 1px; margin-left: -$popover-arrow-width; border-top-width: 0; border-bottom-color: $popover-arrow-color; } } &.left > .arrow { top: 50%; right: -$popover-arrow-outer-width; margin-top: -$popover-arrow-outer-width; border-right-width: 0; border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback border-left-color: $popover-arrow-outer-color; &:after { content: " "; right: 1px; border-right-width: 0; border-left-color: $popover-arrow-color; bottom: -$popover-arrow-width; } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_grid.scss0000664000175000017500000000264313111777164034503 0ustar abompardabompard00000000000000// // Grid system // -------------------------------------------------- // Container widths // // Set the container width, and override it for fixed navbars in media queries. .container { @include container-fixed; @media (min-width: $screen-sm-min) { width: $container-sm; } @media (min-width: $screen-md-min) { width: $container-md; } @media (min-width: $screen-lg-min) { width: $container-lg; } } // Fluid container // // Utilizes the mixin meant for fixed width containers, but without any defined // width for fluid, full width layouts. .container-fluid { @include container-fixed; } // Row // // Rows contain and clear the floats of your columns. .row { @include make-row; } // Columns // // Common styles for small and large grid columns @include make-grid-columns; // Extra small grid // // Columns, offsets, pushes, and pulls for extra small devices like // smartphones. @include make-grid(xs); // Small grid // // Columns, offsets, pushes, and pulls for the small device range, from phones // to tablets. @media (min-width: $screen-sm-min) { @include make-grid(sm); } // Medium grid // // Columns, offsets, pushes, and pulls for the desktop device range. @media (min-width: $screen-md-min) { @include make-grid(md); } // Large grid // // Columns, offsets, pushes, and pulls for the large desktop device range. @media (min-width: $screen-lg-min) { @include make-grid(lg); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_tooltip.scss0000664000175000017500000000567713111777164035262 0ustar abompardabompard00000000000000// // Tooltips // -------------------------------------------------- // Base class .tooltip { position: absolute; z-index: $zindex-tooltip; display: block; // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element. // So reset our font and text properties to avoid inheriting weird values. @include reset-text; font-size: $font-size-small; @include opacity(0); &.in { @include opacity($tooltip-opacity); } &.top { margin-top: -3px; padding: $tooltip-arrow-width 0; } &.right { margin-left: 3px; padding: 0 $tooltip-arrow-width; } &.bottom { margin-top: 3px; padding: $tooltip-arrow-width 0; } &.left { margin-left: -3px; padding: 0 $tooltip-arrow-width; } } // Wrapper for the tooltip content .tooltip-inner { max-width: $tooltip-max-width; padding: 3px 8px; color: $tooltip-color; text-align: center; background-color: $tooltip-bg; border-radius: $border-radius-base; } // Arrows .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } // Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1 .tooltip { &.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -$tooltip-arrow-width; border-width: $tooltip-arrow-width $tooltip-arrow-width 0; border-top-color: $tooltip-arrow-color; } &.top-left .tooltip-arrow { bottom: 0; right: $tooltip-arrow-width; margin-bottom: -$tooltip-arrow-width; border-width: $tooltip-arrow-width $tooltip-arrow-width 0; border-top-color: $tooltip-arrow-color; } &.top-right .tooltip-arrow { bottom: 0; left: $tooltip-arrow-width; margin-bottom: -$tooltip-arrow-width; border-width: $tooltip-arrow-width $tooltip-arrow-width 0; border-top-color: $tooltip-arrow-color; } &.right .tooltip-arrow { top: 50%; left: 0; margin-top: -$tooltip-arrow-width; border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0; border-right-color: $tooltip-arrow-color; } &.left .tooltip-arrow { top: 50%; right: 0; margin-top: -$tooltip-arrow-width; border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width; border-left-color: $tooltip-arrow-color; } &.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -$tooltip-arrow-width; border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; border-bottom-color: $tooltip-arrow-color; } &.bottom-left .tooltip-arrow { top: 0; right: $tooltip-arrow-width; margin-top: -$tooltip-arrow-width; border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; border-bottom-color: $tooltip-arrow-color; } &.bottom-right .tooltip-arrow { top: 0; left: $tooltip-arrow-width; margin-top: -$tooltip-arrow-width; border-width: 0 $tooltip-arrow-width $tooltip-arrow-width; border-bottom-color: $tooltip-arrow-color; } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_type.scss0000664000175000017500000001400213111777164034527 0ustar abompardabompard00000000000000// // Typography // -------------------------------------------------- // Headings // ------------------------- h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: $headings-font-family; font-weight: $headings-font-weight; line-height: $headings-line-height; color: $headings-color; small, .small { font-weight: normal; line-height: 1; color: $headings-small-color; } } h1, .h1, h2, .h2, h3, .h3 { margin-top: $line-height-computed; margin-bottom: ($line-height-computed / 2); small, .small { font-size: 65%; } } h4, .h4, h5, .h5, h6, .h6 { margin-top: ($line-height-computed / 2); margin-bottom: ($line-height-computed / 2); small, .small { font-size: 75%; } } h1, .h1 { font-size: $font-size-h1; } h2, .h2 { font-size: $font-size-h2; } h3, .h3 { font-size: $font-size-h3; } h4, .h4 { font-size: $font-size-h4; } h5, .h5 { font-size: $font-size-h5; } h6, .h6 { font-size: $font-size-h6; } // Body text // ------------------------- p { margin: 0 0 ($line-height-computed / 2); } .lead { margin-bottom: $line-height-computed; font-size: floor(($font-size-base * 1.15)); font-weight: 300; line-height: 1.4; @media (min-width: $screen-sm-min) { font-size: ($font-size-base * 1.5); } } // Emphasis & misc // ------------------------- // Ex: (12px small font / 14px base font) * 100% = about 85% small, .small { font-size: floor((100% * $font-size-small / $font-size-base)); } mark, .mark { background-color: $state-warning-bg; padding: .2em; } // Alignment .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } .text-justify { text-align: justify; } .text-nowrap { white-space: nowrap; } // Transformation .text-lowercase { text-transform: lowercase; } .text-uppercase { text-transform: uppercase; } .text-capitalize { text-transform: capitalize; } // Contextual colors .text-muted { color: $text-muted; } @include text-emphasis-variant('.text-primary', $brand-primary); @include text-emphasis-variant('.text-success', $state-success-text); @include text-emphasis-variant('.text-info', $state-info-text); @include text-emphasis-variant('.text-warning', $state-warning-text); @include text-emphasis-variant('.text-danger', $state-danger-text); // Contextual backgrounds // For now we'll leave these alongside the text classes until v4 when we can // safely shift things around (per SemVer rules). .bg-primary { // Given the contrast here, this is the only class to have its color inverted // automatically. color: #fff; } @include bg-variant('.bg-primary', $brand-primary); @include bg-variant('.bg-success', $state-success-bg); @include bg-variant('.bg-info', $state-info-bg); @include bg-variant('.bg-warning', $state-warning-bg); @include bg-variant('.bg-danger', $state-danger-bg); // Page header // ------------------------- .page-header { padding-bottom: (($line-height-computed / 2) - 1); margin: ($line-height-computed * 2) 0 $line-height-computed; border-bottom: 1px solid $page-header-border-color; } // Lists // ------------------------- // Unordered and Ordered lists ul, ol { margin-top: 0; margin-bottom: ($line-height-computed / 2); ul, ol { margin-bottom: 0; } } // List options // [converter] extracted from `.list-unstyled` for libsass compatibility @mixin list-unstyled { padding-left: 0; list-style: none; } // [converter] extracted as `@mixin list-unstyled` for libsass compatibility .list-unstyled { @include list-unstyled; } // Inline turns list items into inline-block .list-inline { @include list-unstyled; margin-left: -5px; > li { display: inline-block; padding-left: 5px; padding-right: 5px; } } // Description Lists dl { margin-top: 0; // Remove browser default margin-bottom: $line-height-computed; } dt, dd { line-height: $line-height-base; } dt { font-weight: bold; } dd { margin-left: 0; // Undo browser default } // Horizontal description lists // // Defaults to being stacked without any of the below styles applied, until the // grid breakpoint is reached (default of ~768px). .dl-horizontal { dd { @include clearfix; // Clear the floated `dt` if an empty `dd` is present } @media (min-width: $grid-float-breakpoint) { dt { float: left; width: ($dl-horizontal-offset - 20); clear: left; text-align: right; @include text-overflow; } dd { margin-left: $dl-horizontal-offset; } } } // Misc // ------------------------- // Abbreviations and acronyms abbr[title], // Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257 abbr[data-original-title] { cursor: help; border-bottom: 1px dotted $abbr-border-color; } .initialism { font-size: 90%; @extend .text-uppercase; } // Blockquotes blockquote { padding: ($line-height-computed / 2) $line-height-computed; margin: 0 0 $line-height-computed; font-size: $blockquote-font-size; border-left: 5px solid $blockquote-border-color; p, ul, ol { &:last-child { margin-bottom: 0; } } // Note: Deprecated small and .small as of v3.1.0 // Context: https://github.com/twbs/bootstrap/issues/11660 footer, small, .small { display: block; font-size: 80%; // back to default font-size line-height: $line-height-base; color: $blockquote-small-color; &:before { content: '\2014 \00A0'; // em dash, nbsp } } } // Opposite alignment of blockquote // // Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0. .blockquote-reverse, blockquote.pull-right { padding-right: 15px; padding-left: 0; border-right: 5px solid $blockquote-border-color; border-left: 0; text-align: right; // Account for citation footer, small, .small { &:before { content: ''; } &:after { content: '\00A0 \2014'; // nbsp, em dash } } } // Addresses address { margin-bottom: $line-height-computed; font-style: normal; line-height: $line-height-base; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_navs.scss0000664000175000017500000001152613111777164034525 0ustar abompardabompard00000000000000// // Navs // -------------------------------------------------- // Base class // -------------------------------------------------- .nav { margin-bottom: 0; padding-left: 0; // Override default ul/ol list-style: none; @include clearfix; > li { position: relative; display: block; > a { position: relative; display: block; padding: $nav-link-padding; &:hover, &:focus { text-decoration: none; background-color: $nav-link-hover-bg; } } // Disabled state sets text to gray and nukes hover/tab effects &.disabled > a { color: $nav-disabled-link-color; &:hover, &:focus { color: $nav-disabled-link-hover-color; text-decoration: none; background-color: transparent; cursor: $cursor-disabled; } } } // Open dropdowns .open > a { &, &:hover, &:focus { background-color: $nav-link-hover-bg; border-color: $link-color; } } // Nav dividers (deprecated with v3.0.1) // // This should have been removed in v3 with the dropping of `.nav-list`, but // we missed it. We don't currently support this anywhere, but in the interest // of maintaining backward compatibility in case you use it, it's deprecated. .nav-divider { @include nav-divider; } // Prevent IE8 from misplacing imgs // // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989 > li > a > img { max-width: none; } } // Tabs // ------------------------- // Give the tabs something to sit on .nav-tabs { border-bottom: 1px solid $nav-tabs-border-color; > li { float: left; // Make the list-items overlay the bottom border margin-bottom: -1px; // Actual tabs (as links) > a { margin-right: 2px; line-height: $line-height-base; border: 1px solid transparent; border-radius: $border-radius-base $border-radius-base 0 0; &:hover { border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color; } } // Active state, and its :hover to override normal :hover &.active > a { &, &:hover, &:focus { color: $nav-tabs-active-link-hover-color; background-color: $nav-tabs-active-link-hover-bg; border: 1px solid $nav-tabs-active-link-hover-border-color; border-bottom-color: transparent; cursor: default; } } } // pulling this in mainly for less shorthand &.nav-justified { @extend .nav-justified; @extend .nav-tabs-justified; } } // Pills // ------------------------- .nav-pills { > li { float: left; // Links rendered as pills > a { border-radius: $nav-pills-border-radius; } + li { margin-left: 2px; } // Active state &.active > a { &, &:hover, &:focus { color: $nav-pills-active-link-hover-color; background-color: $nav-pills-active-link-hover-bg; } } } } // Stacked pills .nav-stacked { > li { float: none; + li { margin-top: 2px; margin-left: 0; // no need for this gap between nav items } } } // Nav variations // -------------------------------------------------- // Justified nav links // ------------------------- .nav-justified { width: 100%; > li { float: none; > a { text-align: center; margin-bottom: 5px; } } > .dropdown .dropdown-menu { top: auto; left: auto; } @media (min-width: $screen-sm-min) { > li { display: table-cell; width: 1%; > a { margin-bottom: 0; } } } } // Move borders to anchors instead of bottom of list // // Mixin for adding on top the shared `.nav-justified` styles for our tabs .nav-tabs-justified { border-bottom: 0; > li > a { // Override margin from .nav-tabs margin-right: 0; border-radius: $border-radius-base; } > .active > a, > .active > a:hover, > .active > a:focus { border: 1px solid $nav-tabs-justified-link-border-color; } @media (min-width: $screen-sm-min) { > li > a { border-bottom: 1px solid $nav-tabs-justified-link-border-color; border-radius: $border-radius-base $border-radius-base 0 0; } > .active > a, > .active > a:hover, > .active > a:focus { border-bottom-color: $nav-tabs-justified-active-link-border-color; } } } // Tabbable tabs // ------------------------- // Hide tabbable panes to start, show them when `.active` .tab-content { > .tab-pane { display: none; } > .active { display: block; } } // Dropdowns // ------------------------- // Specific dropdowns .nav-tabs .dropdown-menu { // make dropdown border overlap tab border margin-top: -1px; // Remove the top rounded corners here since there is a hard edge above the menu @include border-top-radius(0); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_pagination.scss0000664000175000017500000000405313111777164035704 0ustar abompardabompard00000000000000// // Pagination (multiple pages) // -------------------------------------------------- .pagination { display: inline-block; padding-left: 0; margin: $line-height-computed 0; border-radius: $border-radius-base; > li { display: inline; // Remove list-style and block-level defaults > a, > span { position: relative; float: left; // Collapse white-space padding: $padding-base-vertical $padding-base-horizontal; line-height: $line-height-base; text-decoration: none; color: $pagination-color; background-color: $pagination-bg; border: 1px solid $pagination-border; margin-left: -1px; } &:first-child { > a, > span { margin-left: 0; @include border-left-radius($border-radius-base); } } &:last-child { > a, > span { @include border-right-radius($border-radius-base); } } } > li > a, > li > span { &:hover, &:focus { z-index: 3; color: $pagination-hover-color; background-color: $pagination-hover-bg; border-color: $pagination-hover-border; } } > .active > a, > .active > span { &, &:hover, &:focus { z-index: 2; color: $pagination-active-color; background-color: $pagination-active-bg; border-color: $pagination-active-border; cursor: default; } } > .disabled { > span, > span:hover, > span:focus, > a, > a:hover, > a:focus { color: $pagination-disabled-color; background-color: $pagination-disabled-bg; border-color: $pagination-disabled-border; cursor: $cursor-disabled; } } } // Sizing // -------------------------------------------------- // Large .pagination-lg { @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large); } // Small .pagination-sm { @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small); } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_list-group.scss0000664000175000017500000000614413111777164035663 0ustar abompardabompard00000000000000// // List groups // -------------------------------------------------- // Base class // // Easily usable on
    ,
      , or
      . .list-group { // No need to set list-style: none; since .list-group-item is block level margin-bottom: 20px; padding-left: 0; // reset padding because ul and ol } // Individual list items // // Use on `li`s or `div`s within the `.list-group` parent. .list-group-item { position: relative; display: block; padding: 10px 15px; // Place the border on the list items and negative margin up for better styling margin-bottom: -1px; background-color: $list-group-bg; border: 1px solid $list-group-border; // Round the first and last items &:first-child { @include border-top-radius($list-group-border-radius); } &:last-child { margin-bottom: 0; @include border-bottom-radius($list-group-border-radius); } } // Interactive list items // // Use anchor or button elements instead of `li`s or `div`s to create interactive items. // Includes an extra `.active` modifier class for showing selected items. a.list-group-item, button.list-group-item { color: $list-group-link-color; .list-group-item-heading { color: $list-group-link-heading-color; } // Hover state &:hover, &:focus { text-decoration: none; color: $list-group-link-hover-color; background-color: $list-group-hover-bg; } } button.list-group-item { width: 100%; text-align: left; } .list-group-item { // Disabled state &.disabled, &.disabled:hover, &.disabled:focus { background-color: $list-group-disabled-bg; color: $list-group-disabled-color; cursor: $cursor-disabled; // Force color to inherit for custom content .list-group-item-heading { color: inherit; } .list-group-item-text { color: $list-group-disabled-text-color; } } // Active class on item itself, not parent &.active, &.active:hover, &.active:focus { z-index: 2; // Place active items above their siblings for proper border styling color: $list-group-active-color; background-color: $list-group-active-bg; border-color: $list-group-active-border; // Force color to inherit for custom content .list-group-item-heading, .list-group-item-heading > small, .list-group-item-heading > .small { color: inherit; } .list-group-item-text { color: $list-group-active-text-color; } } } // Contextual variants // // Add modifier classes to change text and background color on individual items. // Organizationally, this must come after the `:hover` states. @include list-group-item-variant(success, $state-success-bg, $state-success-text); @include list-group-item-variant(info, $state-info-bg, $state-info-text); @include list-group-item-variant(warning, $state-warning-bg, $state-warning-text); @include list-group-item-variant(danger, $state-danger-bg, $state-danger-text); // Custom content options // // Extra classes for creating well-formatted content within `.list-group-item`s. .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_tables.scss0000664000175000017500000001106613111777164035027 0ustar abompardabompard00000000000000// // Tables // -------------------------------------------------- table { background-color: $table-bg; } caption { padding-top: $table-cell-padding; padding-bottom: $table-cell-padding; color: $text-muted; text-align: left; } th { text-align: left; } // Baseline styles .table { width: 100%; max-width: 100%; margin-bottom: $line-height-computed; // Cells > thead, > tbody, > tfoot { > tr { > th, > td { padding: $table-cell-padding; line-height: $line-height-base; vertical-align: top; border-top: 1px solid $table-border-color; } } } // Bottom align for column headings > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid $table-border-color; } // Remove top border from thead by default > caption + thead, > colgroup + thead, > thead:first-child { > tr:first-child { > th, > td { border-top: 0; } } } // Account for multiple tbody instances > tbody + tbody { border-top: 2px solid $table-border-color; } // Nesting .table { background-color: $body-bg; } } // Condensed table w/ half padding .table-condensed { > thead, > tbody, > tfoot { > tr { > th, > td { padding: $table-condensed-cell-padding; } } } } // Bordered version // // Add borders all around the table and between all the columns. .table-bordered { border: 1px solid $table-border-color; > thead, > tbody, > tfoot { > tr { > th, > td { border: 1px solid $table-border-color; } } } > thead > tr { > th, > td { border-bottom-width: 2px; } } } // Zebra-striping // // Default zebra-stripe styles (alternating gray and transparent backgrounds) .table-striped { > tbody > tr:nth-of-type(odd) { background-color: $table-bg-accent; } } // Hover effect // // Placed here since it has to come after the potential zebra striping .table-hover { > tbody > tr:hover { background-color: $table-bg-hover; } } // Table cell sizing // // Reset default table behavior table col[class*="col-"] { position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) float: none; display: table-column; } table { td, th { &[class*="col-"] { position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623) float: none; display: table-cell; } } } // Table backgrounds // // Exact selectors below required to override `.table-striped` and prevent // inheritance to nested tables. // Generate the contextual variants @include table-row-variant('active', $table-bg-active); @include table-row-variant('success', $state-success-bg); @include table-row-variant('info', $state-info-bg); @include table-row-variant('warning', $state-warning-bg); @include table-row-variant('danger', $state-danger-bg); // Responsive tables // // Wrap your tables in `.table-responsive` and we'll make them mobile friendly // by enabling horizontal scrolling. Only applies <768px. Everything above that // will display normally. .table-responsive { overflow-x: auto; min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837) @media screen and (max-width: $screen-xs-max) { width: 100%; margin-bottom: ($line-height-computed * 0.75); overflow-y: hidden; -ms-overflow-style: -ms-autohiding-scrollbar; border: 1px solid $table-border-color; // Tighten up spacing > .table { margin-bottom: 0; // Ensure the content doesn't wrap > thead, > tbody, > tfoot { > tr { > th, > td { white-space: nowrap; } } } } // Special overrides for the bordered tables > .table-bordered { border: 0; // Nuke the appropriate borders so that the parent can handle them > thead, > tbody, > tfoot { > tr { > th:first-child, > td:first-child { border-left: 0; } > th:last-child, > td:last-child { border-right: 0; } } } // Only nuke the last row's bottom-border in `tbody` and `tfoot` since // chances are there will be only one `tr` in a `thead` and that would // remove the border altogether. > tbody, > tfoot { > tr:last-child { > th, > td { border-bottom: 0; } } } } } } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_media.scss0000664000175000017500000000160413111777164034631 0ustar abompardabompard00000000000000.media { // Proper spacing between instances of .media margin-top: 15px; &:first-child { margin-top: 0; } } .media, .media-body { zoom: 1; overflow: hidden; } .media-body { width: 10000px; } .media-object { display: block; // Fix collapse in webkit from max-width: 100% and display: table-cell. &.img-thumbnail { max-width: none; } } .media-right, .media > .pull-right { padding-left: 10px; } .media-left, .media > .pull-left { padding-right: 10px; } .media-left, .media-right, .media-body { display: table-cell; vertical-align: top; } .media-middle { vertical-align: middle; } .media-bottom { vertical-align: bottom; } // Reset margins on headings for tighter default spacing .media-heading { margin-top: 0; margin-bottom: 5px; } // Media list variation // // Undo default ul/ol styles .media-list { padding-left: 0; list-style: none; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_close.scss0000664000175000017500000000145713111777164034665 0ustar abompardabompard00000000000000// // Close icons // -------------------------------------------------- .close { float: right; font-size: ($font-size-base * 1.5); font-weight: $close-font-weight; line-height: 1; color: $close-color; text-shadow: $close-text-shadow; @include opacity(.2); &:hover, &:focus { color: $close-color; text-decoration: none; cursor: pointer; @include opacity(.5); } // [converter] extracted button& to button.close } // Additional properties for button version // iOS requires the button element instead of an anchor tag. // If you want the anchor version, it requires `href="#"`. // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } HyperKitty-1.1.4/hyperkitty/static/hyperkitty/libs/bootstrap/stylesheets/bootstrap/_forms.scss0000664000175000017500000003732013111777164034704 0ustar abompardabompard00000000000000// // Forms // -------------------------------------------------- // Normalize non-controls // // Restyle and baseline non-control form elements. fieldset { padding: 0; margin: 0; border: 0; // Chrome and Firefox set a `min-width: min-content;` on fieldsets, // so we reset that to ensure it behaves more like a standard block element. // See https://github.com/twbs/bootstrap/issues/12359. min-width: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: $line-height-computed; font-size: ($font-size-base * 1.5); line-height: inherit; color: $legend-color; border: 0; border-bottom: 1px solid $legend-border-color; } label { display: inline-block; max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) margin-bottom: 5px; font-weight: bold; } // Normalize form controls // // While most of our form styles require extra classes, some basic normalization // is required to ensure optimum display with or without those classes to better // address browser inconsistencies. // Override content-box in Normalize (* isn't specific enough) input[type="search"] { @include box-sizing(border-box); } // Position radios and checkboxes better input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; // IE8-9 line-height: normal; } input[type="file"] { display: block; } // Make range inputs behave like textual form controls input[type="range"] { display: block; width: 100%; } // Make multiple select elements height not fixed select[multiple], select[size] { height: auto; } // Focus for file, radio, and checkbox input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { @include tab-focus; } // Adjust output element output { display: block; padding-top: ($padding-base-vertical + 1); font-size: $font-size-base; line-height: $line-height-base; color: $input-color; } // Common form controls // // Shared size and type resets for form controls. Apply `.form-control` to any // of the following form controls: // // select // textarea // input[type="text"] // input[type="password"] // input[type="datetime"] // input[type="datetime-local"] // input[type="date"] // input[type="month"] // input[type="time"] // input[type="week"] // input[type="number"] // input[type="email"] // input[type="url"] // input[type="search"] // input[type="tel"] // input[type="color"] .form-control { display: block; width: 100%; height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) padding: $padding-base-vertical $padding-base-horizontal; font-size: $font-size-base; line-height: $line-height-base; color: $input-color; background-color: $input-bg; background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 border: 1px solid $input-border; border-radius: $input-border-radius; // Note: This has no effect on s in CSS. @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); // Customize the `:focus` state to imitate native WebKit styles. @include form-control-focus; // Placeholder @include placeholder; // Disabled and read-only inputs // // HTML5 says that controls under a fieldset > legend:first-child won't be // disabled if the fieldset is disabled. Due to implementation difficulty, we // don't honor that edge case; we style them as disabled anyway. &[disabled], &[readonly], fieldset[disabled] & { background-color: $input-bg-disabled; opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 } &[disabled], fieldset[disabled] & { cursor: $cursor-disabled; } // [converter] extracted textarea& to textarea.form-control } // Reset height for `textarea`s textarea.form-control { height: auto; } // Search inputs in iOS // // This overrides the extra rounded corners on search inputs in iOS so that our // `.form-control` class can properly style them. Note that this cannot simply // be added to `.form-control` as it's not specific enough. For details, see // https://github.com/twbs/bootstrap/issues/11586. input[type="search"] { -webkit-appearance: none; } // Special styles for iOS temporal inputs // // In Mobile Safari, setting `display: block` on temporal inputs causes the // text within the input to become vertically misaligned. As a workaround, we // set a pixel line-height that matches the given height of the input, but only // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 // // Note that as of 8.3, iOS doesn't support `datetime` or `week`. @media screen and (-webkit-min-device-pixel-ratio: 0) { input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"] { &.form-control { line-height: $input-height-base; } &.input-sm, .input-group-sm & { line-height: $input-height-small; } &.input-lg, .input-group-lg & { line-height: $input-height-large; } } } // Form groups // // Designed to help with the organization and spacing of vertical forms. For // horizontal forms, use the predefined grid classes. .form-group { margin-bottom: $form-group-margin-bottom; } // Checkboxes and radios // // Indent the labels to position radios/checkboxes as hanging controls. .radio, .checkbox { position: relative; display: block; margin-top: 10px; margin-bottom: 10px; label { min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text padding-left: 20px; margin-bottom: 0; font-weight: normal; cursor: pointer; } } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { position: absolute; margin-left: -20px; margin-top: 4px \9; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing } // Radios and checkboxes on same line .radio-inline, .checkbox-inline { position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; vertical-align: middle; font-weight: normal; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; // space out consecutive inline controls } // Apply same disabled cursor tweak as for inputs // Some special care is needed because