PK†œ…HЗІx. import sys if sys.version_info.major < 3: from ._server_bottle import server else: from ._server_aiohttp import server PKr‡Hh 0Ё Ё virtualtouchpad/resource.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import pkg_resources import os import sys from virtualtouchpad import __name__ as PKG_RESOURCES_PACKAGE def __get_static_root(): # First use the environment variables try: root_from_env = os.environ['VIRTUAL_TOUCHPAD_STATIC_ROOT'] if os.path.isdir(root_from_env): return root_from_env except KeyError: # The environment variable is not set, ignore pass # Then handle frozen applications; expect them to put data alongside the # executable try: if sys.frozen: root_from_exe = os.path.join( os.path.dirname(sys.executable), 'virtualtouchpad', 'html') if os.path.isdir(root_from_exe): return root_from_exe except AttributeError: # The application is not frozen, ignore pass # If we can access the root directory of the package, fall back on that import virtualtouchpad root_from_package = os.path.join( os.path.dirname(virtualtouchpad.__file__), 'html') if os.path.isdir(root_from_package): return root_from_package # If we have no root directory, we are probably running from an egg, and # we return None to make the functions below use pkg_resources return None STATIC_ROOT = __get_static_root() def exists(path): """Returns whether a static file exists. :param str path: The path of the static file. """ if STATIC_ROOT is not None: return os.access(os.path.join(STATIC_ROOT, path), os.R_OK) else: return pkg_resources.resource_exists( PKG_RESOURCES_PACKAGE, os.path.join('html', path)) def isdir(path): """Returns whether a static file exists and is a directory. :param str path: The path of the static file. """ if STATIC_ROOT is not None: return os.path.isdir(os.path.join(STATIC_ROOT, path)) else: return pkg_resources.resource_isdir( PKG_RESOURCES_PACKAGE, os.path.join('html', path)) def list(path): """Lists all resources available under ``path``. :param str path: The path to check. :return: a list of resources :rtype: [str] """ if STATIC_ROOT is not None: return os.listdir(os.path.join(STATIC_ROOT, path)) else: return pkg_resources.resource_listdir( PKG_RESOURCES_PACKAGE, os.path.join('html', path)) def open_stream(path): """Opens a file. :param str path: The path of the static file. :return: a file-like object """ if STATIC_ROOT is not None: return open(os.path.join(STATIC_ROOT, path), 'rb') else: return pkg_resources.resource_stream( PKG_RESOURCES_PACKAGE, os.path.join('html', path)) PK…H ШВMUU"virtualtouchpad/_server_aiohttp.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . from aiohttp import web app = web.Application() def server(port, address): """Creates the actual server instance. :param int port: The port on which to listen. :param address: The address on which to listen. :return: a server instance """ class Server(object): def serve_forever(self): web.run_app(app, host=address, port=port) return Server() PK`BŠH&жSFFvirtualtouchpad/_info.py# coding=utf8 __version__ = (0, 15, 1) __author__ = 'Moses PalmУЉr' PK†œ…HМR6)УУ!virtualtouchpad/_server_bottle.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import bottle import gevent.monkey import gevent.pywsgi import geventwebsocket.handler app = bottle.Bottle() def server(port, address): """Creates the actual server instance. :param int port: The port on which to listen. :param address: The address on which to listen. :return: a server instance """ gevent.monkey.patch_all(thread=False) return gevent.pywsgi.WSGIServer( ('0.0.0.0', port), app, handler_class=geventwebsocket.handler.WebSocketHandler) PKЊ@ŠHцŒkпззvirtualtouchpad/__main__.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import contextlib import logging import os import pkg_resources import socket import sys import PIL.Image import pystray import virtualtouchpad.routes import virtualtouchpad.resource as resource from argparse import ArgumentParser from virtualtouchpad import server from ._info import __version__ # The name of the Virtual Touchpad service SERVICE_NAME = '_virtualtouchpad._http._tcp.local.' log = logging.getLogger('virtualtouchpad') def _get_local_address(default=socket.gethostname()): """Returns the address for the local network. The one returned is the one most likely on a *LAN*. If no probable match is found, or an error occurs, ``default`` is returned. :param default: The default return value if none can be calculated. :type default: str :return: the address """ try: import netifaces except ImportError: return default # Get all interfaces interfaces = { interface: netifaces.ifaddresses(interface) for interface in netifaces.interfaces()} # Get all IPv4 interfaces interfaces4 = { key: value[netifaces.AF_INET] for key, value in interfaces.items() if netifaces.AF_INET in value} # Get the IP address with the longest net mask best_length = 0 result = None for interface, descriptions in interfaces4.items(): for description in descriptions: if not 'broadcast' in description: continue # Count the number of non-0 in the net mask current_length = len([ p for p in description['netmask'].split('.') if int(p)]) if current_length < best_length: continue best_length = current_length result = description if result: return result['addr'] else: return default @contextlib.contextmanager def _announcer(ip_address, port): """Announces that *Virtual Touchpad* is available on the local network. This function works as a context manager that unregisters the service upon exit. :param str ip_address: The IP address on which *Virtual Touchpad* is reachable. :param int port: The port on which to connect to *Virtual Touchpad*. """ import getpass import socket import types try: import zeroconf except: yield return zc = zeroconf.Zeroconf() info = zeroconf.ServiceInfo( SERVICE_NAME, '%s@%s.%s' % (getpass.getuser(), socket.gethostname(), SERVICE_NAME), socket.inet_aton(ip_address), port, 0, 0, { 'version': '.'.join(str(v) for v in __version__)}) zc.register_service(info) try: yield finally: zc.unregister_service(info) zc.close() def start(): parser = ArgumentParser( description='Turns your mobile or tablet into a touchpad for your ' 'computer.') parser.add_argument( '--port', type=int, help='The port on which to listen', default=16080) parser.add_argument( '--log-level', type=str, help='The log level to use.', choices=['debug', 'info', 'warning', 'error', 'critical'], default='error') args = parser.parse_args() logging.basicConfig( level=getattr(logging, args.log_level.upper())) address = _get_local_address() icon = pystray.Icon( __name__, title='Virtual Touchpad - http://%s:%d' % ( address, args.port), icon=PIL.Image.open( resource.open_stream( os.path.join( 'img', 'icon196x196.png')))) try: def setup(icon): sys.stdout.write('Starting server http://%s:%d/...\n' % ( address, args.port)) main_server = server(args.port, address) icon.visible = True main_server.serve_forever() with _announcer(address, args.port): icon.run(setup) except KeyboardInterrupt: log.info('Interrupted, terminating') except: log.exception('An unhandler exception occurred in main') if __name__ == '__main__': try: start() except Exception as e: log.exception('An unhandled exception occurred') PKы™GGJCѓІ]І] virtualtouchpad/html/favicon.ico€ (F@@ (Bn  Ј–H h>Y( ў&,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::7+%#NzЅКЭйћќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќќєиЪДІyG]“РюџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўчИŠSbУэџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўщКO KМѕўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўэЎE/Є№ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўч#KЬўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњЖ9 iмџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўбOƒяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџшp ѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџџџюiaъџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџйFCлџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџ џџџџџџџџџџџџШ/&Чџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ+++џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџџџџџџџџЌš§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџwwwџсссџёёёџуууџЇЇЇџ&&&џџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџџџџ џџџџџџџџџџњ}?цџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ‰‰‰џѓѓѓџџџџџџџџџџџџџќќќџЄЄЄџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџл) Ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ```џюююџџџџџџџџџџџџџџџџџџџџџђђђџlllџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџџџџџџџџњŒUшџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ"""џЙЙЙџџџџџџџџџџџџџџџџџџџџџџџџџіііџ{{{џџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџ777џbbbџxxxџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџzzzџ{{{џ{{{џ{{{џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ|||џ}}}џ}}}џsssџWWWџ***џџџџџџџџџ џџџџџџџџџнCЌџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџcccџњњњџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џgggџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ!!!џiiiџФФФџюююџєєєџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџїїїџјјјџіііџђђђџпппџ–––џ:::џџџџџџџџ џџџџџџџџџ”DфџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџУУУџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщщщџMMMџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ333џЉЉЉџїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџдддџaaaџџџџџџџџџџџџџџџџЪ,pџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџdddџіііџџџџџџџџџџџџџџџџџџџџџџџџџўўўџГГГџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ&&&џЋЋЋџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџоооџ[[[џџџџџџџ џџџџџџџџєXЊџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџХХХџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџPPPџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџ‚‚‚џїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћћћџнннџЈЈЈџœœœџТТТџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЭЭЭџ111џџџџџџџџџџџџџџџŒ 4цџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџbbbџюююџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЌЌЌџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ---џнннџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњњњџ›››џ'''џџ џџqqqџцццџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџxxxџџџџџџџ џџџџџџџџТ"dќџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џџџВВВџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џTTTџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџfffџљљљџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџНННџџџџџџџwwwџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџКККџџџџџџџџџџџџџџџєD—§џџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џџ___џэээџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЉЉЉџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџŽŽŽџќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџgggџџџџџџџ000џЭЭЭџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџйййџ444џџџџџџџџџџџџџџ§iЎўџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џџ џЎЎЎџџџџџџџџџџџџџџџџџџџџџџџџџџџџџъъъџ\\\џ џ џ џ џ џ џ џ џ џ џ џџџџџџџџџџџџІІІџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџђђђџGGGџџџџџџџџЙЙЙџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџBBBџџџџџџџ џџџџџџџ§“Цўџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џџLLLџђђђџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБББџџ џ џ џ џ џ џџ џџџџџџџџџџџџџџџБББџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџTTTџџџџџџџ+++џЩЩЩџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџAAAџџџџџџџџџџџџџџўІйўџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџЂЂЂџџџџџџџџџџџџџџџџџџџџџџџџџџџџџъъъџZZZџ џ џ џџџџџџџџџџџџџџџџџџџџџБББџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЂЂЂџџџџџџџWWWџщщщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџBBBџџџџџџџџџџџџџџўЗџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ<<<џъъъџџџџџџџџџџџџџџџџџџџџџџџџџџџџџРРРџџџџџџџџџџџџџџџџџџџџџџџџџБББџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііџzzzџџџџџGGGџЧЧЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџEEEџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџќќќџџџџџџџџџџџџџџџџџџџџџџџџџіііџmmmџџџџџџџџџџџџџџџџџџџџџџџџџБББџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџЕЕЕџ………џyyyџŸŸŸџйййџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџEEEџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ222џлллџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЧЧЧџ'''џџџџџџџџџџџџџџџџџџџџџџџџџБББџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћћћџїїїџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџEEEџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ~~~џіііџџџџџџџџџџџџџџџџџџџџџџџџџќќќџ}}}џџџџџџџџџџџџџџџџџџџџџџџџџџВВВџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџпппџEEEџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџ,,,џШШШџџџџџџџџџџџџџџџџџџџџџџџџџџџџџбббџ444џџџџџџџџџџџџџџџџџџџџџџџџџџВВВџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџрррџGGGџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџ џhhhџёёёџџџџџџџџџџџџџџџџџџџџџџџџџџџџџˆˆˆџџџџџџџџџџџџџџџџџџџџџџџџџџџВВВџўўўџџџџџџџџџџџџџџџџџџџџџўўўџЇЇЇџŽŽŽџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџœœœџоооџџџџџџџџџџџџџџџџџџџџџџџџџрррџGGGџџџџџџџџџџџџџџўЫџџџџџџџџ џ џ џ џ џ џ џ џџџџџџџџџџџ$$$џ­­­џџџџџџџџџџџџџџџџџџџџџџџџџџџџџмммџJJJџџџџџџџџџџџџџџџџџџџџџџџџџџџВВВџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ===џџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџ&&&џЙЙЙџџџџџџџџџџџџџџџџџџџџџџџџџрррџGGGџџџџџџ!!!џџџџџџџџўЫџџџџџџџџ џ џ џџџџџџџџџџџџџџџџLLLџхххџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЃЃЃџџџџџџџџџџџџџџџџџџџџџџџџџџџџВВВџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџGGGџџ џ!!!џ"""џ"""џ"""џџџџџџџџўЫџџџџџџџџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџчччџYYYџџџџџџџџџџџџџџџџџџџџџџџџџџџџГГГџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџIIIџ!!!џ"""џ"""џ"""џ"""џ"""џџџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџџџ444џзззџџџџџџџџџџџџџџџџџџџџџџџџџџџџџНННџ$$$џџџџџџџџџџџџџџџџџџџџџџџџџџџџГГГџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџIIIџ!!!џ"""џ"""џ"""џ"""џ"""џџџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџџџnnnџљљљџџџџџџџџџџџџџџџџџџџџџџџџџіііџuuuџџџџџџџџџџџџџџџџџџџџџџџџџџџџџГГГџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџIIIџ!!!џ"""џ"""џ"""џ"""џ"""џџџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџџџОООџџџџџџџџџџџџџџџџџџџџџџџџџџџџџкккџ333џџџџџџџџџџџџџџџџџџџџџџџџџџџџџГГГџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџIIIџ!!!џ"""џ###џ%%%џ%%%џ%%%џ џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџџOOOџыыыџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џŠŠŠџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ###џДДДџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџKKKџ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџџœœœџќќќџџџџџџџџџџџџџџџџџџџџџџџџџщщщџGGGџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ###џДДДџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџLLLџ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџ<<<џвввџџџџџџџџџџџџџџџџџџџџџџџџџџџџџБББџ)))џџџџџџџџџџџџџџџџџџџџџџџџџџџџџ###џДДДџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџLLLџ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџџrrrџђђђџџџџџџџџџџџџџџџџџџџџџџџџџљљљџkkkџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ###џДДДџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџKKKџ$$$џ%%%џ%%%џ&&&џ(((џ(((џ"""џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџ$$$џЌЌЌџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЪЪЪџ<<<џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ$$$џЕЕЕџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџрррџLLLџ&&&џ(((џ(((џ(((џ(((џ(((џ###џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџMMMџрррџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ™™™џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%%%џЕЕЕџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџNNNџ'''џ(((џ(((џ(((џ(((џ(((џ###џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџџzzzџўўўџџџџџџџџџџџџџџџџџџџџџџџџџцццџ\\\џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%%%џЕЕЕџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџNNNџ'''џ(((џ(((џ(((џ(((џ(((џ###џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџ+++џДДДџџџџџџџџџџџџџџџџџџџџџџџџџџџџџФФФџ'''џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%%%џЕЕЕџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџNNNџ'''џ(((џ(((џ(((џ)))џ+++џ%%%џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџKKKџ№№№џџџџџџџџџџџџџџџџџџџџџџџџџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ'''џЖЖЖџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџOOOџ'''џ***џ+++џ+++џ+++џ+++џ%%%џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџџŠŠŠџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџчччџFFFџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ"""џ"""џ"""џ(((џЖЖЖџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџQQQџ***џ+++џ+++џ+++џ+++џ+++џ%%%џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџ,,,џЩЩЩџџџџџџџџџџџџџџџџџџџџџџџџџўўўџЙЙЙџ###џџџџџџџџџџџџџџџџџџџџџџ џ!!!џ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ(((џЖЖЖџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџQQQџ***џ+++џ+++џ+++џ+++џ+++џ%%%џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџ___џ№№№џџџџџџџџџџџџџџџџџџџџџџџџџњњњџuuuџџџџџџџџџџџџџџџџџџџџ!!!џ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ(((џЖЖЖџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџQQQџ***џ+++џ+++џ+++џ+++џ---џ'''џџџџџџџўЫџџџџџџџџџџџџџџџџџџџџ‘‘‘џњњњџџџџџџџџџџџџџџџџџџџџџџџџџпппџ===џџџџџџџџџџџџџџ џ џ џ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ###џ(((џЖЖЖџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџсссџQQQџ***џ,,,џ---џ...џ...џ...џ(((џџџџџџџўЫџџџџџџџџџџџџџџџџџџџ,,,џШШШџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЅЅЅџ+++џџџџџџџџџџџ џ џ џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ###џ###џ%%%џ%%%џ***џЗЗЗџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџSSSџ---џ...џ...џ...џ...џ...џ(((џџџџџџџўЫџџџџџџџџџџџџџџџџџџџXXXџфффџџџџџџџџџџџџџџџџџџџџџџџџџњњњџnnnџџџџџџџџ џ!!!џ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ$$$џ$$$џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ+++џЗЗЗџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџSSSџ---џ...џ...џ...џ...џ...џ(((џџџџџџџўЫџџџџџџџџџџџџџџџџџџџ†††џјјјџџџџџџџџџџџџџџџџџџџџџџџџџжжжџGGGџџџџџ!!!џ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ$$$џ$$$џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ+++џЗЗЗџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџSSSџ---џ...џ...џ...џ...џ///џ)))џџџџџџџўЫџџџџџџџџџџџџџџџџџџ...џЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ­­­џ---џџ!!!џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ+++џЗЗЗџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџSSSџ---џ...џ///џ111џ111џ111џ***џџџџџџџўЫџџџџџџџџџџџџџџџџџџQQQџнннџџџџџџџџџџџџџџџџџџџџџџџџџњњњџ€€€џџ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ'''џ(((џ---џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџUUUџ000џ111џ111џ111џ111џ111џ***џџџџџџџўЫџџџџџџџџџџџџџџџџџџvvvџњњњџџџџџџџџџџџџџџџџџџџџџџџџџоооџUUUџџ"""џ"""џ"""џ"""џ"""џ"""џ"""џ"""џ###џ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ&&&џ'''џ(((џ(((џ(((џ(((џ---џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџVVVџ000џ111џ111џ111џ111џ111џ***џџџџџџџўЫџџџџџџџџџџџџџџџџџ,,,џЃЃЃџџџџџџџџџџџџџџџџџџџџџџџџџџџџџСССџ+++џ!!!џ"""џ"""џ"""џ"""џ"""џ$$$џ$$$џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ'''џ'''џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ---џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџVVVџ000џ111џ111џ111џ111џ222џ,,,џџџџџџџўЫџџџџџџџџџџџџџ џ!!!џ!!!џџ===џЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџјјјџџџ"""џ"""џ###џ$$$џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ(((џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ...џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџVVVџ000џ111џ222џ444џ444џ555џ...џџџџџџџўЫџџџџџџџџџ џ!!!џ"""џ"""џ"""џ"""џ"""џ џVVVџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџыыыџ\\\џ###џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ&&&џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ)))џ***џ000џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџтттџWWWџ444џ555џ555џ555џ555џ555џ...џџџџџџџўЫџџџџџџџџџ"""џ"""џ"""џ"""џ"""џ"""џ"""џ&&&џƒƒƒџўўўџџџџџџџџџџџџџџџџџџџџџџџџџйййџ666џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ&&&џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ)))џ+++џ+++џ+++џ+++џ000џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџYYYџ444џ555џ555џ555џ555џ555џ...џџџџџџџўЫџџџџџџџџџ"""џ"""џ"""џ"""џ"""џ"""џ"""џ,,,џАААџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џЎЎЎџ)))џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ'''џ'''џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ***џ***џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ000џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџYYYџ444џ555џ555џ555џ555џ555џ...џџџџџџџўЫџџџџџџџџџ"""џ"""џ"""џ"""џ"""џ###џ$$$џ777џоооџџџџџџџџџџџџџџџџџџџџџџџџџњњњџ‚‚‚џ'''џ%%%џ%%%џ%%%џ%%%џ&&&џ'''џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ***џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ111џИИИџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџYYYџ444џ555џ555џ666џ777џ777џ///џџџџџџџўЫџџџџџџџџџ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ]]]џѓѓѓџџџџџџџџџџџџџџџџџџџџџџџџџєєєџTTTџ%%%џ&&&џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ)))џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ,,,џ222џЙЙЙџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџYYYџ555џ777џ777џ777џ777џ777џ000џџџџџџџўЫџџџџџџџџ!!!џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ‹‹‹џљљљџџџџџџџџџџџџџџџџџџџџџџџџџаааџ;;;џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ)))џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ,,,џ...џ...џ...џ333џКККџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџZZZџ666џ777џ777џ777џ777џ777џ000џџџџџџџўЫџџџџџџџџ"""џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ'''џВВВџўўўџџџџџџџџџџџџџџџџџџџџџџџџџ   џ111џ'''џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ***џ***џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ---џ---џ---џ...џ...џ...џ...џ...џ...џ333џКККџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџZZZџ666џ777џ777џ777џ777џ777џ000џџџџџџџўЫџџџџџџџџ"""џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ111џвввџџџџџџџџџџџџџџџџџџџџџџџџџџџџџvvvџ'''џ(((џ(((џ(((џ(((џ(((џ(((џ)))џ***џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ---џ---џ---џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ333џКККџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџZZZџ666џ777џ777џ777џ999џ:::џ222џџџџџџџўЫџџџџџџџџ"""џ&&&џ&&&џ&&&џ'''џ(((џ&&&џOOOџсссџџџџџџџџџџџџџџџџџџџџџџџџџіііџ^^^џ$$$џ(((џ)))џ)))џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ---џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ444џКККџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџ[[[џ777џ:::џ;;;џ;;;џ;;;џ<<<џ333џџџџџџџўЫџџџџџџџџ###џ(((џ(((џ(((џ(((џ(((џ&&&џmmmџьььџџџџџџџџџџџџџџџџџџџџџџџџџлллџOOOџ&&&џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ,,,џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ///џ///џ111џ111џ666џЛЛЛџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџ]]]џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ333џџџџџџџўЫџџџџџџџ џ$$$џ(((џ(((џ(((џ(((џ(((џ%%%џˆˆˆџіііџџџџџџџџџџџџџџџџџџџџџџџџџОООџAAAџ)))џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ---џ---џ---џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ000џ000џ000џ111џ111џ111џ111џ111џ666џЛЛЛџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџ^^^џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ333џџџџџџџўЫџџџџџџџ џ$$$џ(((џ(((џ(((џ(((џ(((џ%%%џЉЉЉџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁЁЁџ111џ***џ+++џ+++џ+++џ+++џ+++џ+++џ+++џ---џ---џ---џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ000џ000џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ666џЛЛЛџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџ^^^џ:::џ;;;џ;;;џ;;;џ;;;џ<<<џ444џџџџџџџўЫџџџџџџџ џ$$$џ(((џ(((џ(((џ)))џ)))џ>>>џХХХџџџџџџџџџџџџџџџџџџџџџџџџџўўўџ†††џ&&&џ+++џ+++џ+++џ+++џ,,,џ---џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ222џ777џЛЛЛџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџуууџ^^^џ:::џ;;;џ===џ===џ===џ===џ555џџџџџџџўЫџџџџџџџ џ%%%џ***џ+++џ+++џ+++џ(((џQQQџеееџџџџџџџџџџџџџџџџџџџџџџџџџыыыџlllџ(((џ,,,џ,,,џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ///џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ222џ333џ555џ555џ:::џМММџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџ___џ<<<џ===џ===џ===џ===џ===џ555џџџџџџџўЫџџџџџџџ џ'''џ+++џ+++џ+++џ+++џ(((џZZZџнннџџџџџџџџџџџџџџџџџџџџџџџџџпппџ___џ+++џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ...џ///џ///џ///џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ333џ333џ444џ555џ555џ555џ555џ555џ:::џМММџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџ```џ<<<џ===џ===џ===џ===џ===џ555џџџџџџџўЫџџџџџџџ џ'''џ+++џ+++џ+++џ+++џ'''џgggџшшшџџџџџџџџџџџџџџџџџџџџџџџџџвввџNNNџ,,,џ...џ...џ...џ...џ...џ...џ...џ...џ...џ000џ000џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ333џ444џ444џ555џ555џ555џ555џ555џ555џ555џ555џ555џ:::џМММџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџ```џ<<<џ===џ===џ===џ===џ>>>џ666џџџџџџџўЫџџџџџџџ џ'''џ+++џ+++џ+++џ+++џ'''џwwwџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџШШШџAAAџ---џ...џ...џ...џ...џ...џ///џ000џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ444џ444џ444џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ:::џМММџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџ```џ<<<џ===џ>>>џ???џ???џ@@@џ777џџџџџџџўЫџџџџџџџ џ(((џ,,,џ---џ...џ...џ'''џˆˆˆџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџ+++џ...џ///џ///џ000џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ222џ333џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ555џ666џ777џ<<<џНННџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџaaaџ???џ@@@џ@@@џ@@@џ@@@џ@@@џ777џџџџџџџўЫџџџџџџџ џ***џ...џ...џ...џ...џ///џ———џџџџџџџџџџџџџџџџџџџџџџџџџџџџџЋЋЋџ,,,џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ222џ333џ333џ444џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ666џ666џ666џ777џ777џ777џ777џ<<<џНННџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ555џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџфффџbbbџ???џ@@@џ@@@џ@@@џ@@@џ@@@џ777џџџџџџџўЫџџџџџџџ џ***џ...џ...џ...џ---џ999џЊЊЊџџџџџџџџџџџџџџџџџџџџџџџџџњњњџ–––џ...џ111џ111џ111џ111џ111џ111џ111џ111џ111џ111џ333џ333џ333џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ666џ666џ777џ777џ777џ777џ777џ777џ777џ777џ<<<џНННџўўўџџџџџџџџџџџџџџџџџџџџџќќќџ666џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЗЗЗџџџџџџџџџџџџџџџџџџџџџџџџџфффџbbbџ???џ@@@џ@@@џ@@@џ@@@џ@@@џ777џџџџџџџўЫџџџџџџџ џ***џ...џ...џ...џ---џBBBџМММџџџџџџџџџџџџџџџџџџџџџџџџџєєєџ………џ///џ111џ111џ111џ111џ111џ111џ222џ444џ444џ444џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ;;;џЎЎЎџ§§§џџџџџџџџџџџџџџџџџџџџџўўўџвввџЦЦЦџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЧЧЧџЦЦЦџЭЭЭџяяяџџџџџџџџџџџџџџџџџџџџџџџџџфффџaaaџ???џ@@@џ@@@џAAAџBBBџCCCџ999џџџџџџџўЫџџџџџџџ џ***џ///џ///џ000џ///џKKKџЩЩЩџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џzzzџ///џ222џ222џ222џ333џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ888џ888џ999џ>>>џ   џќќќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџнннџQQQџAAAџCCCџCCCџCCCџCCCџDDDџ:::џџџџџџџўЫџџџџџџџ џ,,,џ111џ111џ111џ///џKKKџЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ{{{џ000џ444џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ666џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ888џ888џ:::џ;;;џ;;;џ;;;џ<<<џ~~~џњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџСССџEEEџCCCџCCCџCCCџCCCџCCCџCCCџ:::џџџџџџџўЫџџџџџџџ џ,,,џ111џ111џ111џ///џKKKџЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ}}}џ333џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ555џ666џ666џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ999џ999џ999џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ:::џRRRџлллџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџ………џDDDџCCCџCCCџCCCџCCCџCCCџCCCџ:::џџџџџџџўЫџџџџџџџ џ,,,џ111џ111џ111џ///џKKKџЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ|||џ333џ555џ555џ555џ555џ555џ555џ555џ666џ777џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ:::џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ===џ‰‰‰џјјјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџСССџRRRџCCCџCCCџCCCџCCCџDDDџEEEџFFFџ<<<џџџџџџџўЫџџџџџџџ џ---џ222џ222џ444џ333џNNNџЪЪЪџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ|||џ333џ555џ555џ555џ555џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ888џ888џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ;;;џJJJџЎЎЎџћћћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџлллџmmmџCCCџCCCџEEEџFFFџFFFџFFFџFFFџGGGџ===џџџџџџџўЫџџџџџџџ џ000џ555џ555џ555џ333џNNNџЫЫЫџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ}}}џ444џ666џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ888џ888џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ<<<џNNNџЄЄЄџъъъџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћћћџЬЬЬџoooџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџ===џџџџџџџўЫџџџџџџџ џ000џ555џ555џ555џ333џOOOџЫЫЫџџџџџџџџџџџџџџџџџџџџџџџџџ№№№џ~~~џ555џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ777џ888џ999џ999џ999џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ<<<џEEEџxxxџЕЕЕџиииџшшшџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџќќќџяяяџпппџШШШџ›››џaaaџDDDџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџ===џџџџџџџўЫџџџџџџџ џ000џ555џ555џ555џ444џDDDџЖЖЖџџџџџџџџџџџџџџџџџџџџџџџџџіііџџ444џ777џ777џ777џ777џ777џ777џ777џ777џ999џ:::џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ===џJJJџ```џkkkџxxxџ|||џ{{{џ{{{џ{{{џ{{{џ{{{џ{{{џ{{{џ{{{џzzzџŒŒŒџсссџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџЃЃЃџ{{{џ}}}џ}}}џ}}}џ}}}џ}}}џ}}}џ~~~џ€€€џ€€€џ}}}џsssџiiiџZZZџFFFџDDDџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџIIIџ>>>џџџџџџџўЫџџџџџџџ џ000џ666џ555џ555џ666џ>>>џЈЈЈџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЇЇЇџ333џ777џ777џ777џ888џ888џ:::џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ???џ@@@џ@@@џ@@@џ@@@џ???џ===џ===џ<<<џ<<<џ<<<џ<<<џ<<<џ<<<џ<<<џ<<<џ<<<џ>>>џ<<<џfffџпппџџџџџџџџџџџџџџџџџџџџџџџџџшшшџqqqџ;;;џ???џ???џ???џAAAџAAAџAAAџAAAџBBBџBBBџBBBџCCCџCCCџDDDџFFFџFFFџFFFџFFFџFFFџFFFџFFFџHHHџIIIџIIIџIIIџJJJџ???џџџџџџџўЫџџџџџџџ џ111џ777џ777џ777џ777џ222џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџКККџ777џ888џ999џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ>>>џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџAAAџCCCџCCCџCCCџCCCџ???џџ№№№џџџџџџџџџџџџџџџџџџџџџџџџџлллџgggџAAAџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџGGGџGGGџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџ???џџџџџџџўЫџџџџџџџ џ222џ777џ777џ777џ777џ222џџјјјџџџџџџџџџџџџџџџџџџџџџџџџџШШШџIIIџ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ>>>џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџAAAџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџEEEџЇЇЇџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЪЪЪџXXXџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџGGGџGGGџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџ???џџџџџџџўЫџџџџџџџ џ222џ777џ777џ777џ777џ333џrrrџыыыџџџџџџџџџџџџџџџџџџџџџџџџџдддџYYYџ999џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ???џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџAAAџ]]]џаааџџџџџџџџџџџџџџџџџџџџџџџџџџџџџАААџGGGџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџHHHџHHHџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџKKKџAAAџџџџџџџўЫџџџџџџџ џ222џ777џ777џ777џ888џ777џiiiџтттџџџџџџџџџџџџџџџџџџџџџџџџџъъъџtttџ777џ;;;џ;;;џ;;;џ;;;џ;;;џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ???џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџ‚‚‚џіііџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџ‹‹‹џCCCџFFFџFFFџFFFџFFFџFFFџHHHџHHHџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџKKKџKKKџKKKџLLLџBBBџџџџџџџўЫџџџџџџџ џ333џ999џ;;;џ;;;џ;;;џ999џZZZџеееџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЂЂЂџ>>>џ;;;џ<<<џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ>>>џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџAAAџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџDDDџFFFџFFFџEEEџUUUџШШШџџџџџџџџџџџџџџџџџџџџџџџџџџџџџсссџeeeџEEEџGGGџGGGџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџJJJџJJJџLLLџLLLџLLLџLLLџLLLџLLLџMMMџBBBџџџџџџџўЫџџџџџџџ џ666џ;;;џ;;;џ;;;џ;;;џ;;;џ>>>џДДДџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫЫЫџUUUџ;;;џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ>>>џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџAAAџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџDDDџEEEџFFFџFFFџFFFџFFFџFFFџFFFџџіііџџџџџџџџџџџџџџџџџџџџџџџџџўўўџЙЙЙџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџJJJџJJJџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџBBBџџџџџџџўЫџџџџџџџ џ666џ;;;џ;;;џ;;;џ;;;џ;;;џ888џ………џђђђџџџџџџџџџџџџџџџџџџџџџџџџџђђђџqqqџ;;;џ===џ===џ===џ===џ===џ===џ===џ===џ???џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџEEEџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџ```џдддџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџzzzџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџKKKџKKKџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџCCCџџџџџџџўЫџџџџџџџ џ666џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ\\\џтттџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЂЂЂџCCCџ<<<џ===џ===џ===џ>>>џ???џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџEEEџEEEџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџEEEџMMMџЏЏЏџћћћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩЩЩџTTTџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџKKKџKKKџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџNNNџNNNџOOOџDDDџџџџџџџўЫџџџџџџџ џ666џ<<<џ<<<џ===џ===џ===џ===џAAAџРРРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџыыыџhhhџ===џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџDDDџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџFFFџHHHџŒŒŒџюююџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііџ~~~џIIIџIIIџIIIџJJJџJJJџJJJџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџMMMџMMMџOOOџOOOџOOOџOOOџOOOџPPPџDDDџџџџџџџўЫџџџџџџџ џ777џ===џ===џ===џ===џ===џ===џ>>>џˆˆˆџјјјџџџџџџџџџџџџџџџџџџџџџџџџџўўўџРРРџNNNџ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџAAAџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџDDDџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџGGGџGGGџHHHџIIIџJJJџџуууџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџНННџWWWџIIIџJJJџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџMMMџMMMџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџCCCџџџџџџџўЫџџџџџџџџ555џ===џ===џ===џ===џ===џ===џ===џXXXџщщщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііџ‘‘‘џ>>>џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџEEEџEEEџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџHHHџHHHџHHHџIIIџIIIџIIIџIIIџIIIџsssџоооџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџюююџџJJJџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџNNNџNNNџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџ:::џџџџџџџўЫєџџџџџџџ222џ===џ===џ===џ===џ===џ>>>џ???џDDDџЈЈЈџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџоооџnnnџ???џ@@@џ@@@џAAAџBBBџBBBџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџEEEџEEEџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџHHHџHHHџHHHџIIIџIIIџIIIџIIIџIIIџHHHџKKKџџлллџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџЄЄЄџQQQџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџNNNџNNNџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџRRRџRRRџ666џџџџџџџўЩаўџџџџџџ+++џ===џ===џ???џ@@@џ@@@џ@@@џ@@@џ???џ]]]џгггџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџуууџџGGGџBBBџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџGGGџUUUџšššџъъъџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЫЫЫџ]]]џJJJџLLLџLLLџLLLџLLLџLLLџLLLџLLLџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџPPPџQQQџSSSџRRRџSSSџSSSџRRRџ---џџџџџџџўЉОўџџџџџџ(((џ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џˆˆˆџѓѓѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџшшшџ•••џKKKџBBBџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџDDDџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџGGGџGGGџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџHHHџGGGџiiiџИИИџїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџфффџ}}}џLLLџLLLџLLLџMMMџMMMџMMMџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџPPPџPPPџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџRRRџ'''џџџџџџџў Ѓўџџџџџџџ???џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ@@@џ???џNNNџКККџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџžžžџUUUџAAAџCCCџCCCџDDDџDDDџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџGGGџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџHHHџXXXџ‡‡‡џжжжџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџъъъџŠŠŠџMMMџMMMџMMMџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџQQQџQQQџQQQџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџQQQџџџџџџџџ§ƒ§џџџџџџ џ<<<џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџBBBџBBBџ@@@џlllџфффџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџУУУџ|||џMMMџFFFџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџGGGџHHHџHHHџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџJJJџKKKџZZZџџХХХџ№№№џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓѓѓџ›››џPPPџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџPPPџRRRџRRRџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџUUUџGGGџ џџџџџџџќdYњџџџџџџџ...џAAAџ@@@џBBBџCCCџCCCџCCCџCCCџCCCџCCCџEEEџ———џђђђџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џяяяџУУУџ‡‡‡џTTTџFFFџDDDџEEEџFFFџFFFџFFFџFFFџFFFџFFFџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџIIIџIIIџPPPџ]]]џ’’’џжжжџєєєџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџЁЁЁџVVVџNNNџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџOOOџRRRџRRRџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџUUUџUUUџUUUџVVVџ444џџџџџџџџх7*вџџџџџџџ!!!џCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџCCCџJJJџ˜˜˜џьььџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџїїїџЮЮЮџ†††џ```џRRRџFFFџCCCџEEEџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџJJJџIIIџJJJџHHHџJJJџXXXџgggџyyyџЃЃЃџпппџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџщщщџŸŸŸџUUUџNNNџOOOџOOOџOOOџOOOџOOOџOOOџPPPџPPPџPPPџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџSSSџџџџџџџџџА˜џџџџџџџ џ888џDDDџCCCџCCCџCCCџCCCџCCCџCCCџCCCџDDDџDDDџJJJџŠŠŠџфффџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџїїїџжжжџЙЙЙџŸŸŸџџjjjџQQQџFFFџFFFџGGGџGGGџGGGџGGGџHHHџHHHџHHHџHHHџHHHџHHHџHHHџIIIџHHHџRRRџjjjџ€€€џџНННџйййџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџзззџ„„„џPPPџOOOџOOOџOOOџOOOџPPPџQQQџQQQџQQQџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџWWWџ>>>џ џџџџџџџџ|cњџџџџџџџ!!!џBBBџCCCџCCCџCCCџDDDџEEEџEEEџEEEџFFFџFFFџEEEџHHHџ{{{џпппџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџ№№№џлллџХХХџ­­­џџŽŽŽџ‡‡‡џˆˆˆџ}}}џlllџkkkџjjjџxxxџŠŠŠџ‹‹‹џџЇЇЇџКККџХХХџйййџэээџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџОООџnnnџNNNџOOOџOOOџQQQџRRRџQQQџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџVVVџPPPџ џџџџџџџџхD4гџџџџџџџ џ444џFFFџEEEџEEEџFFFџFFFџFFFџFFFџFFFџFFFџFFFџEEEџGGGџjjjџаааџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џљљљџѓѓѓџ№№№џёёёџэээџчччџцццџцццџыыыџёёёџёёёџјјјџћћћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџюююџžžžџ[[[џNNNџRRRџRRRџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџXXXџZZZџ???џџџџџџџџџП#”џџџџџџџџџ@@@џFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџFFFџcccџУУУџјјјџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііџжжжџ‹‹‹џVVVџQQQџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџVVVџVVVџVVVџXXXџYYYџYYYџYYYџMMMџџџџџџџџџїv4жџџџџџџџџ"""џDDDџFFFџFFFџFFFџFFFџFFFџGGGџGGGџGGGџHHHџIIIџIIIџHHHџ[[[џšššџЬЬЬџіііџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџЩЩЩџ™™™џeeeџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџVVVџWWWџWWWџWWWџYYYџYYYџYYYџYYYџYYYџYYYџSSSџ!!!џџџџџџџџџХ$‹њџџџџџџџџ***џDDDџFFFџGGGџHHHџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџHHHџEEEџ[[[џ‹‹‹џЪЪЪџїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџюююџСССџџbbbџPPPџRRRџSSSџSSSџSSSџSSSџSSSџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџWWWџWWWџWWWџXXXџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџSSSџ+++џџџџџџџџџѓd*лџџџџџџџџџ)))џEEEџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџHHHџGGGџ^^^џŠŠŠџЦЦЦџђђђџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џћћћџыыыџДДДџ€€€џ___џPPPџRRRџSSSџSSSџSSSџSSSџSSSџSSSџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџXXXџXXXџXXXџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџZZZџSSSџ+++џџџџџџџџџџЛpѓџџџџџџџџџ###џBBBџJJJџIIIџIIIџIIIџIIIџIIIџIIIџJJJџIIIџJJJџLLLџLLLџLLLџJJJџMMMџWWWџ}}}џЛЛЛџсссџьььџіііџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјјјџюююџлллџИИИџ–––џpppџYYYџRRRџRRRџSSSџSSSџSSSџSSSџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџVVVџVVVџVVVџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџZZZџ[[[џMMMџ"""џџџџџџџџџџэP˜ќџџџџџџџџџџ777џGGGџJJJџJJJџJJJџJJJџKKKџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџNNNџXXXџyyyџšššџЛЛЛџбббџфффџїїїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџєєєџыыыџиииџСССџЁЁЁџ€€€џ]]]џUUUџTTTџSSSџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџVVVџVVVџVVVџWWWџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџZZZџZZZџ\\\џUUUџAAAџџџџџџџџџџџѓ #Еџџџџџџџџџџ џ џ:::џKKKџMMMџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџNNNџMMMџLLLџLLLџNNNџ___џxxxџ’’’џЎЎЎџЛЛЛџЛЛЛџФФФџгггџдддџдддџрррџшшшџшшшџрррџеееџЯЯЯџОООџИИИџЉЉЉџЂЂЂџџƒƒƒџkkkџTTTџPPPџRRRџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџUUUџWWWџWWWџWWWџXXXџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџYYYџZZZџZZZџZZZџ[[[џ\\\џYYYџCCCџ"""џџџџџџџџџџџќ›5вџџџџџџџџџџџ џџ///џBBBџJJJџKKKџKKKџLLLџLLLџMMMџMMMџMMMџOOOџOOOџOOOџPPPџPPPџPPPџPPPџPPPџNNNџMMMџLLLџRRRџYYYџYYYџ___џgggџiiiџkkkџrrrџwwwџwwwџrrrџkkkџhhhџ^^^џ[[[џRRRџNNNџPPPџQQQџRRRџSSSџTTTџUUUџUUUџUUUџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџXXXџYYYџYYYџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџZZZџ[[[џZZZџZZZџZZZџYYYџYYYџMMMџ777џ џ џџџџџџџџџџџџО#Rпџџџџџџџџџџџџџ џџ$$$џ,,,џ222џ;;;џDDDџCCCџCCCџDDDџDDDџDDDџDDDџDDDџDDDџDDDџDDDџDDDџDDDџDDDџCCCџCCCџDDDџEEEџEEEџEEEџEEEџEEEџDDDџDDDџEEEџEEEџEEEџFFFџFFFџGGGџGGGџGGGџHHHџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџIIIџJJJџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџLLLџMMMџNNNџNNNџNNNџMMMџCCCџ<<<џ111џ***џџ џџџџџџџџџџџџџџЪ6QЪџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџћО65Жћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѓœ!•ѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџя€fаїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєМP zвћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџјЫj5‡УыџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџцРw%%O‹Ля§§ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў§§ќшИ}D$ <d‹ЅГЪЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЩЊ „d9џџј?џўџџРџўџџџўџј?ўџ№ўџрўџ€ўџўўўќ~ј~ј>№ррРР€€€€€€РРрр№ј>ќ~ќўўўџўџРўџрўџ№ўџќџўџџџўџџрџў(@€ @BrЅЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЈЃŠq@'€ХэћџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўћыРy!vйџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўгn'­ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџљЁ.ЧџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџО&Кџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџЌ•ўџџџџџџџџџџџџџџ%%%џ}}}џwwwџ"""џџџџџџџџџџџџ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џ џџџџџџџ џџџџџќ‡FюџџџџџџџџџџџџџџџИИИџџџџџџџџџЂЂЂџџџџџџџџ џ џ џ џ џџ џџџџџџџџџџџџџџџџџџџџџџџџџџш9 ЎџџџџџџџџџџџџџџџqqqџћћћџџџџџџџџџЪЪЪџџџџ џ џ џ џ џ џ џ џ"""џnnnџЁЁЁџАААџАААџАААџАААџАААџАААџАААџАААџБББџБББџБББџБББџБББџБББџБББџБББџЂЂЂџkkkџ###џџџџџџџџ >ьџџџџџџџџџџџџџџ!!!џЯЯЯџџџџџџџџџџџџџ   џџ џ џ џ џ џ џ џ џ џ...џМММџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџњњњџАААџ,,,џџџ џџџџт0†§џџџџџџџџџџџџџџpppџќќќџџџџџџџџџэээџEEEџџ џ џ џ џ џ џ џ џџœœœџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЩЩЩџkkkџrrrџиииџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџ‹‹‹џџџџџџџћqХџџџџџџџџџџџџ џџ џЪЪЪџџџџџџџџџџџџџЄЄЄџџ џ џ џ џ џ џџџџ,,,џкккџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџьььџ===џџџSSSџѓѓѓџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЭЭЭџ'''џџџ џџџџБрџџџџџџџџ џ џ џ џ џџkkkџњњњџџџџџџџџџыыыџFFFџ џ џ џџџџџџџџ<<<џщщщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџмммџџџџ///џщщщџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџмммџ222џџџџџџџгіџџџџ џ џ џ џ џ џ џ џ џџТТТџџџџџџџџџџџџџІІІџџџџџџџџџџџџ???џыыыџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџіііџmmmџ џ џ~~~џњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџмммџ444џџџџџџџуџџџџ џ џ џ џ џ џ џ џ џ џZZZџіііџџџџџџџџџёёёџQQQџџџџџџџџџџџџ???џыыыџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџёёёџМММџРРРџѕѕѕџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџмммџ555џџџџџџџшџџџџ џ џ џ џ џ џ џ џ џџБББџџџџџџџџџџџџџЗЗЗџџџџџџџџџџџџџAAAџыыыџџџџџџџџџўўўџќќќџћћћџћћћџћћћџћћћџћћћџќќќџџџџџўўўџќќќџћћћџћћћџћћћџћћћџћћћџќќќџџџџџџџџџџџџџмммџ666џџџџџџџшџџџџ џ џ џ џџџџџџHHHџэээџџџџџџџџџїїїџbbbџџџџџџџџџџџџџBBBџыыыџџџџџџџџџпппџ___џVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџVVVџnnnџщщщџџџџџџџџџмммџ777џџ џџџџџшџџџџ џџџџџџџџџ–––џџџџџџџџџџџџџШШШџ%%%џџџџџџџџџџџџџCCCџьььџџџџџџџџџЮЮЮџ џџџџџџџџџџџџџџџ!!!џоооџџџџџџџџџмммџ999џ џ"""џџџџџшџџџџџџџџџџџџ222џмммџџџџџџџџџќќќџ{{{џџџџџџџџџџџџџџDDDџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџнннџ:::џ!!!џ###џџџџџшџџџџџџџџџџџџsssџћћћџџџџџџџџџоооџ888џџџџџџџџџџџџџџFFFџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџнннџ;;;џ"""џ%%%џџџџџшџџџџџџџџџџџ!!!џПППџџџџџџџџџџџџџџџџџџџџџџџџџџџџGGGџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџнннџ<<<џ$$$џ&&&џџџџџшџџџџџџџџџџџOOOџ№№№џџџџџџџџџђђђџTTTџџџџџџџџџџџџџџџHHHџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџнннџ===џ%%%џ(((џ!!!џџџџшџџџџџџџџџџџ“““џџџџџџџџџџџџџФФФџ&&&џџџџџџџџџџџџџџџIIIџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџнннџ???џ'''џ)))џ"""џџџџшџџџџџџџџџџ---џбббџџџџџџџџџќќќџџџџџџџџџџџџџџџџџJJJџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџоооџ@@@џ(((џ***џ$$$џџџџшџџџџџџџџџџ```џіііџџџџџџџџџчччџDDDџџџџџџџџџџџ џ џ!!!џ!!!џџKKKџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџоооџBBBџ***џ+++џ$$$џџџџшџџџџџџџџџџ   џџџџџџџџџџџџџЕЕЕџ$$$џџџџџџџ џ џ!!!џ!!!џ"""џ"""џ"""џ"""џ џLLLџьььџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџоооџBBBџ+++џ---џ&&&џџџџшџџџџџџџџџ222џеееџџџџџџџџџќќќџuuuџџџџ џ џ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ###џ###џ$$$џ"""џMMMџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџпппџDDDџ---џ...џ'''џџџџшџџџџџџџџџ\\\џѕѕѕџџџџџџџџџхххџBBBџџ!!!џ!!!џ"""џ"""џ"""џ"""џ"""џ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ###џNNNџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџпппџEEEџ---џ000џ(((џџџџшџџџџџџџџџ•••џџџџџџџџџџџџџЙЙЙџ(((џ"""џ"""џ"""џ"""џ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ'''џ%%%џPPPџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџпппџGGGџ///џ111џ)))џџџџшџџџџџ џ џџ---џЧЧЧџџџџџџџџџќќќџ€€€џџ###џ###џ$$$џ%%%џ%%%џ%%%џ%%%џ%%%џ%%%џ&&&џ'''џ'''џ(((џ(((џ(((џ&&&џPPPџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџпппџHHHџ000џ333џ+++џџџџшџџџџџ"""џ"""џ џJJJџыыыџџџџџџџџџюююџQQQџ"""џ%%%џ%%%џ%%%џ%%%џ&&&џ&&&џ'''џ'''џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ(((џRRRџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџпппџJJJџ333џ666џ---џџџџшџџџџџ"""џ"""џџtttџћћћџџџџџџџџџаааџ555џ$$$џ&&&џ&&&џ'''џ'''џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ***џ***џ+++џ+++џ)))џSSSџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџрррџKKKџ444џ666џ---џџџџшџџџџ џ$$$џ$$$џ&&&џЃЃЃџџџџџџџџџџџџџІІІџ(((џ'''џ(((џ(((џ(((џ(((џ(((џ)))џ)))џ***џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ***џTTTџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџрррџLLLџ555џ777џ...џџџџшџџџџ!!!џ%%%џ%%%џ///џЪЪЪџџџџџџџџџ§§§џvvvџ%%%џ(((џ(((џ)))џ)))џ***џ+++џ+++џ+++џ+++џ+++џ+++џ,,,џ---џ---џ...џ...џ,,,џUUUџэээџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџрррџLLLџ666џ888џ000џџџџшџџџџ"""џ'''џ&&&џEEEџуууџџџџџџџџџђђђџWWWџ'''џ***џ+++џ+++џ+++џ+++џ+++џ,,,џ,,,џ---џ---џ...џ...џ...џ...џ...џ///џ---џVVVџюююџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџрррџOOOџ999џ;;;џ222џџџџшџџџџ###џ(((џ%%%џ^^^џѕѕѕџџџџџџџџџнннџAAAџ***џ+++џ+++џ,,,џ,,,џ---џ---џ...џ...џ...џ...џ...џ///џ///џ000џ000џ111џ///џWWWџюююџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџсссџPPPџ:::џ<<<џ222џџџџшџџџџ$$$џ***џ'''џ€€€џџџџџџџџџџџџџСССџ111џ,,,џ---џ---џ...џ...џ...џ...џ...џ///џ///џ000џ111џ111џ111џ111џ111џ222џ111џYYYџюююџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџсссџQQQџ;;;џ===џ333џџџџшџџџџ&&&џ+++џ)))џ•••џџџџџџџџџџџџџЇЇЇџ///џ...џ...џ...џ...џ///џ///џ000џ111џ111џ111џ111џ111џ222џ333џ444џ444џ555џ333џ[[[џюююџџџџџџџџџЯЯЯџџџџџџџџџџџџџџџџ$$$џоооџџџџџџџџџсссџRRRџ<<<џ>>>џ444џџџџшџџџџ&&&џ---џ,,,џ­­­џџџџџџџџџџџџџџ,,,џ///џ///џ000џ111џ111џ111џ111џ111џ222џ333џ444џ444џ555џ555џ555џ555џ555џ333џ\\\џюююџџџџџџџџџЮЮЮџ џџџџџџџџџџџџџџџ###џоооџџџџџџџџџсссџSSSџ>>>џ@@@џ666џџџџшџџџџ(((џ...џ444џРРРџџџџџџџџџќќќџ}}}џ---џ111џ111џ111џ111џ222џ333џ444џ444џ555џ555џ555џ555џ555џ666џ666џ666џ777џ555џ\\\џюююџџџџџџџџџвввџџџџџџџџџџџџџџџџ222џрррџџџџџџџџџсссџUUUџ???џAAAџ666џџџџшџџџџ)))џ...џ>>>џаааџџџџџџџџџїїїџnnnџ...џ222џ333џ444џ444џ555џ555џ555џ555џ555џ666џ666џ777џ777џ777џ777џ777џ777џ666џWWWџшшшџџџџџџџџџїїїџеееџгггџгггџгггџгггџгггџгггџгггџгггџгггџгггџгггџгггџгггџгггџйййџљљљџџџџџџџџџоооџQQQџAAAџCCCџ888џџџџшџџџџ+++џ000џBBBџеееџџџџџџџџџіііџmmmџ222џ555џ555џ555џ555џ555џ666џ666џ666џ777џ777џ777џ777џ777џ888џ999џ:::џ:::џ:::џFFFџЭЭЭџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџМММџFFFџCCCџDDDџ999џџџџшџџџџ,,,џ111џCCCџеееџџџџџџџџџіііџnnnџ222џ555џ666џ666џ777џ777џ777џ777џ777џ777џ888џ999џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ:::џyyyџяяяџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџчччџpppџBBBџDDDџFFFџ;;;џџџџшџџџџ///џ444џEEEџеееџџџџџџџџџіііџoooџ444џ777џ777џ777џ777џ777џ888џ999џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ???џzzzџЭЭЭџыыыџіііџїїїџїїїџїїїџіііџјјјџўўўџџџџџџџџџўўўџјјјџїїїџїїїџїїїџїїїџѕѕѕџщщщџЪЪЪџwwwџFFFџFFFџFFFџGGGџ;;;џџџџшџџџџ///џ555џ>>>џШШШџџџџџџџџџћћћџ}}}џ444џ777џ888џ999џ:::џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ===џKKKџ^^^џgggџgggџhhhџhhhџfffџџіііџџџџџџџџџхххџyyyџiiiџkkkџkkkџlllџkkkџaaaџOOOџDDDџFFFџGGGџGGGџHHHџ===џџџџшџџџџ000џ777џ777џГГГџџџџџџџџџџџџџ”””џ777џ:::џ;;;џ;;;џ;;;џ;;;џ;;;џ<<<џ<<<џ<<<џ===џ===џ===џ===џ===џ>>>џ>>>џ???џ@@@џ@@@џ@@@џ@@@џ???џ???џ>>>џ???џ@@@џ@@@џ>>>џŒŒŒџќќќџџџџџџџџџЯЯЯџMMMџBBBџCCCџDDDџDDDџDDDџEEEџGGGџHHHџHHHџIIIџIIIџJJJџ>>>џџџџшџџџџ111џ888џ666џžžžџџџџџџџџџџџџџВВВџ===џ;;;џ;;;џ<<<џ<<<џ===џ===џ===џ===џ===џ===џ>>>џ>>>џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџBBBџBBBџCCCџCCCџCCCџCCCџCCCџJJJџУУУџџџџџџџџџџџџџЎЎЎџFFFџFFFџGGGџGGGџHHHџHHHџIIIџIIIџIIIџIIIџIIIџJJJџKKKџ???џџџџшџџџ џ333џ;;;џ888џџќќќџџџџџџџџџоооџQQQџ;;;џ===џ===џ===џ===џ===џ>>>џ>>>џ???џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџAAAџBBBџBBBџCCCџCCCџCCCџCCCџCCCџDDDџEEEџEEEџCCCџwwwџѓѓѓџџџџџџџџџљљљџџEEEџHHHџIIIџIIIџIIIџIIIџIIIџJJJџKKKџKKKџLLLџLLLџMMMџ@@@џџџџшџџџ џ444џ<<<џ:::џXXXџцццџџџџџџџџџњњњџ}}}џ:::џ===џ>>>џ>>>џ???џ???џ@@@џ@@@џ@@@џ@@@џ@@@џAAAџBBBџBBBџCCCџCCCџCCCџCCCџCCCџDDDџDDDџEEEџFFFџFFFџFFFџEEEџUUUџЬЬЬџџџџџџџџџџџџџдддџVVVџHHHџIIIџIIIџJJJџJJJџKKKџLLLџLLLџLLLџLLLџLLLџLLLџNNNџAAAџџџџшџџџџ555џ===џ<<<џAAAџОООџџџџџџџџџџџџџЫЫЫџMMMџ>>>џ@@@џ@@@џ@@@џ@@@џAAAџAAAџBBBџBBBџCCCџCCCџCCCџCCCџCCCџDDDџEEEџEEEџFFFџFFFџFFFџFFFџFFFџGGGџFFFџMMMџЋЋЋџќќќџџџџџџџџџњњњџџHHHџKKKџKKKџLLLџLLLџLLLџLLLџLLLџMMMџMMMџNNNџNNNџOOOџPPPџBBBџџџџшћџџџ333џ>>>џ===џ;;;џƒƒƒџљљљџџџџџџџџџќќќџœœœџCCCџ@@@џAAAџBBBџBBBџCCCџCCCџCCCџCCCџCCCџDDDџEEEџEEEџFFFџFFFџFFFџFFFџFFFџGGGџGGGџHHHџHHHџGGGџQQQџЃЃЃџљљљџџџџџџџџџџџџџЧЧЧџWWWџKKKџLLLџLLLџLLLџMMMџMMMџNNNџNNNџOOOџOOOџOOOџOOOџOOOџQQQџ>>>џџџџцчџџџ///џ@@@џ@@@џ???џKKKџТТТџџџџџџџџџџџџџѕѕѕџЁЁЁџLLLџAAAџCCCџCCCџCCCџDDDџEEEџEEEџFFFџFFFџFFFџFFFџFFFџGGGџGGGџHHHџHHHџIIIџIIIџHHHџGGGџcccџЛЛЛџњњњџџџџџџџџџџџџџцццџpppџJJJџMMMџMMMџNNNџNNNџOOOџOOOџOOOџOOOџPPPџPPPџQQQџRRRџRRRџTTTџ999џџџџзвџџџ&&&џAAAџ@@@џAAAџ???џkkkџьььџџџџџџџџџџџџџћћћџЗЗЗџdddџFFFџCCCџEEEџFFFџFFFџFFFџFFFџGGGџGGGџHHHџHHHџIIIџIIIџIIIџHHHџGGGџHHHџ]]]џ‘‘‘џмммџџџџџџџџџџџџџџџџџяяяџ‡‡‡џMMMџNNNџOOOџOOOџOOOџOOOџOOOџPPPџQQQџRRRџRRRџSSSџSSSџSSSџSSSџTTTџ,,,џџџџР ўџџџ@@@џCCCџCCCџCCCџDDDџџђђђџџџџџџџџџџџџџџџџџшшшџАААџnnnџPPPџGGGџEEEџEEEџFFFџGGGџGGGџGGGџGGGџFFFџGGGџKKKџWWWџnnnџŸŸŸџмммџћћћџџџџџџџџџџџџџџџџџьььџŽŽŽџPPPџOOOџOOOџPPPџPPPџQQQџRRRџRRRџSSSџSSSџSSSџSSSџSSSџTTTџTTTџUUUџQQQџџџџ§‰Uѕџџџ333џDDDџCCCџDDDџDDDџGGGџ†††џщщщџџџџџџџџџџџџџџџџџџџџџяяяџгггџВВВџџxxxџpppџjjjџcccџjjjџtttџ€€€џ’’’џЕЕЕџзззџ№№№џџџџџџџџџџџџџџџџџџџџџџџџџжжжџ{{{џOOOџPPPџQQQџRRRџRRRџSSSџSSSџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџWWWџ;;;џџџџэCЪџџџџAAAџFFFџFFFџFFFџFFFџEEEџwwwџмммџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўўўџіііџёёёџэээџщщщџэээџѓѓѓџњњњџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџєєєџКККџeeeџPPPџRRRџSSSџSSSџSSSџSSSџSSSџTTTџTTTџUUUџUUUџUUUџUUUџUUUџVVVџVVVџXXXџQQQџџџџџМgњџџџ"""џEEEџGGGџGGGџHHHџHHHџGGGџcccџЁЁЁџтттџўўўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџэээџНННџџXXXџRRRџSSSџSSSџTTTџTTTџTTTџUUUџUUUџUUUџUUUџUUUџVVVџVVVџWWWџXXXџYYYџZZZџUUUџ%%%џџџџѕWОџџџџ"""џDDDџJJJџIIIџIIIџIIIџHHHџJJJџcccџ›››џеееџяяяџ§§§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ§§§џюююџгггџЋЋЋџuuuџVVVџQQQџSSSџTTTџTTTџUUUџUUUџUUUџUUUџUUUџVVVџWWWџWWWџXXXџYYYџYYYџYYYџYYYџ[[[џRRRџ%%%џџџџџЏ ;оџџџџџ666џHHHџLLLџMMMџMMMџMMMџKKKџLLLџXXXџpppџŽŽŽџБББџбббџйййџсссџхххџьььџшшшџпппџеееџЩЩЩџГГГџ‘‘‘џrrrџ]]]џTTTџSSSџUUUџVVVџVVVџVVVџVVVџVVVџWWWџWWWџXXXџYYYџZZZџZZZџZZZџZZZџZZZџ[[[џ[[[џVVVџ???џџџџџџд0Xыџџџџџџ***џ666џ<<<џBBBџCCCџCCCџCCCџBBBџAAAџCCCџJJJџPPPџWWWџ[[[џ```џ^^^џWWWџOOOџIIIџGGGџEEEџGGGџHHHџIIIџIIIџIIIџIIIџIIIџJJJџKKKџLLLџLLLџLLLџLLLџLLLџLLLџMMMџMMMџMMMџGGGџ???џ000џџџџџџџуIWмџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџвJ7ЖїџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџѕЌ._ПюўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўыИV G‹РйцшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшшцжО‡@џ€џўј№рР€€€€Рррјќ?џџ( @ iАбййййййййййййййййййаЏeDУљџџџџџџџџџџџџџџџџџџџџџџјП?Jфџџџџџџџџџџџџџџџџџџџџџ џ џџџџсD%аџџџџџџџŽŽŽџ†††џџџџџџџџџџџџџџџџџџџџЪ ˆ§џџџџџџ```џќќќџЮЮЮџџџ џ џ џMMMџЖЖЖџЫЫЫџЫЫЫџЬЬЬџЦЦЦџШШШџЭЭЭџЬЬЬџЬЬЬџЖЖЖџMMMџџџ§жџџџџџџџТТТџўўўџ|||џ џ џ џ џ!!!џЮЮЮџџџџџџџџџџџџџєєєџjjjџsssџјјјџџџџџџџџџџџџџЧЧЧџ%%%џџџЭїџџ џ џ џџ]]]џљљљџиииџ***џ џџџџ555џшшшџџџџџџџџџџџџџъъъџ999џBBBџяяяџџџџџџџџџџџџџсссџ444џџџяџџ џ џ џ џџЗЗЗџџџџџ†††џџџџџџ777џшшшџ§§§џђђђџёёёџёёёџвввџдддџёёёџёёёџѓѓѓџ§§§џсссџ777џџџѕџџ џџџ џLLLџђђђџфффџ888џџџџџџ:::џъъъџсссџIIIџ888џ888џ:::џ:::џ888џ888џQQQџшшшџтттџ999џџџѕџџџџџџ›››џџџџџŸŸŸџџџџџџџ<<<џыыыџиииџџџџџџџџџтттџуууџ<<<џџџѕџџџџџ333џпппџѕѕѕџSSSџџџџџџџ???џыыыџйййџџџџџџџџ!!!џтттџуууџ>>>џџџѕџџџџџpppџ§§§џЦЦЦџ&&&џџџџџџџAAAџыыыџйййџџџџџџџџ!!!џтттџфффџAAAџ"""џџѕџџџџ џЕЕЕџџџџџƒƒƒџџџџџ џ!!!џџCCCџьььџйййџџџџџџџџ!!!џтттџфффџCCCџ$$$џџѕџџџџ???џчччџюююџJJJџџ!!!џ"""џ"""џ###џ$$$џ"""џFFFџьььџйййџџџџџџџџ!!!џтттџхххџFFFџ'''џџѕџџџџpppџ§§§џФФФџ+++џ"""џ$$$џ$$$џ%%%џ&&&џ&&&џ%%%џHHHџьььџйййџџџџџџџџ!!!џтттџхххџIIIџ***џџѕџџџ###џЅЅЅџџџџџ‘‘‘џ###џ&&&џ&&&џ'''џ(((џ)))џ)))џ(((џJJJџэээџйййџџџџџџџџ!!!џтттџцццџLLLџ,,,џџѕџџџ222џаааџњњњџdddџ%%%џ)))џ)))џ***џ+++џ+++џ,,,џ+++џMMMџэээџйййџџџџџџџџ!!!џтттџцццџNNNџ...џџѕџџ!!!џIIIџыыыџшшшџGGGџ)))џ+++џ,,,џ---џ...џ...џ///џ...џOOOџэээџйййџџџџџџџџ!!!џтттџцццџQQQџ111џџѕџџ"""џcccџћћћџаааџ888џ---џ...џ///џ000џ000џ111џ222џ111џRRRџэээџйййџџџџџџџџџтттџчччџSSSџ333џџѕџџ$$$џzzzџџџџџЛЛЛџ222џ000џ111џ222џ333џ444џ555џ555џ444џTTTџюююџмммџ,,,џџџџџџџ555џфффџчччџUUUџ666џџѕџџ'''џŒŒŒџџџџџЎЎЎџ333џ444џ555џ555џ666џ666џ777џ888џ777џNNNџсссџћћћџоооџкккџкккџкккџкккџкккџкккџпппџќќќџлллџQQQџ888џџѕџџ***џџџџџџЎЎЎџ666џ666џ777џ888џ999џ:::џ:::џ;;;џ<<<џ===џŠŠŠџсссџёёёџђђђџєєєџџџџџџџџџєєєџђђђџёёёџрррџˆˆˆџEEEџ<<<џџѕџџ,,,џ‚‚‚џџџџџНННџ;;;џ999џ:::џ;;;џ<<<џ<<<џ===џ===џ>>>џ>>>џ@@@џTTTџ```џ^^^џ„„„џјјјџхххџpppџcccџdddџYYYџGGGџHHHџ>>>џџѕџџ///џmmmџљљљџлллџKKKџ;;;џ===џ===џ>>>џ???џ???џ@@@џAAAџAAAџBBBџBBBџAAAџAAAџžžžџџџџџТТТџIIIџFFFџGGGџHHHџJJJџKKKџAAAџџѕџџ444џOOOџпппџљљљџ}}}џ;;;џ???џ@@@џAAAџAAAџBBBџCCCџDDDџDDDџEEEџFFFџCCCџoooџщщщџњњњџ†††џHHHџKKKџKKKџLLLџMMMџNNNџCCCџџѕљџ444џ???џЁЁЁџџџџџлллџgggџ???џAAAџCCCџDDDџEEEџFFFџFFFџFFFџFFFџIIIџwwwџнннџџџџџСССџTTTџLLLџMMMџNNNџOOOџPPPџRRRџBBBџџёпџ,,,џAAAџUUUџаааџџџџџуууџ”””џ]]]џKKKџFFFџFFFџGGGџJJJџUUUџrrrџЏЏЏџяяяџџџџџаааџeeeџMMMџPPPџQQQџRRRџSSSџSSSџUUUџ777џџж™џџBBBџDDDџ```џЧЧЧџўўўџџџџџчччџШШШџБББџЈЈЈџ­­­џОООџйййџѕѕѕџџџџџїїїџЙЙЙџdddџPPPџSSSџSSSџTTTџTTTџUUUџVVVџRRRџџўŽ3оџ"""џEEEџHHHџVVVџ‘‘‘џвввџєєєџџџџџџџџџџџџџџџџџџџџџќќќџчччџПППџ‚‚‚џYYYџSSSџUUUџVVVџVVVџWWWџXXXџZZZџTTTџ)))џџй,aђџџ222џ===џ@@@џLLLџeeeџƒƒƒџ•••џžžžџšššџŒŒŒџvvvџ\\\џKKKџGGGџIIIџKKKџLLLџLLLџMMMџMMMџIIIџ;;;џџџюZ`кџџџџџџџџџџџџџ џ џ џ џ џ џ џ џџџўзY/жёѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕѕ№дŒ+р€€€р(  ZЩыююююююююыЧW`ыџџ///џ,,,џџџџџ џ!!!џ џџъ]кџџџЖЖЖџaaaџџџЄЄЄџиииџЉЉЉџЌЌЌџйййџЄЄЄџџе§џџYYYџУУУџ###џџ222џфффџяяяџЎЎЎџАААџяяяџтттџ222џљџџџЎЎЎџ|||џџџ999џЩЩЩџBBBџ,,,џ,,,џFFFџЪЪЪџ888џњџџBBBџЭЭЭџ:::џџџ>>>џУУУџџџџџХХХџ===џњџџ„„„џЊЊЊџ!!!џ џ џCCCџФФФџџџџ!!!џЦЦЦџAAAџњџ"""џЙЙЙџtttџ!!!џ&&&џ&&&џHHHџХХХџџџџ!!!џЧЧЧџEEEџњџ:::џЮЮЮџNNNџ(((џ,,,џ+++џMMMџХХХџџџџ џЧЧЧџJJJџњџTTTџЫЫЫџ>>>џ///џ222џ222џRRRџЫЫЫџ555џџџ:::џЭЭЭџNNNџњџcccџШШШџ===џ666џ888џ888џHHHџОООџЭЭЭџдддџдддџЮЮЮџОООџEEEџњџ\\\џаааџJJJџ;;;џ===џ>>>џ???џNNNџaaaџЫЫЫџЅЅЅџ```џUUUџ???џ њўCCCџЮЮЮџ‹‹‹џAAAџ???џAAAџBBBџIIIџŒŒŒџзззџeeeџIIIџNNNџCCCџ њр,,,џ|||џйййџЕЕЕџŒŒŒџ„„„џ•••џСССџиииџƒƒƒџQQQџSSSџVVVџ888џлl ё000џ^^^џ™™™џЗЗЗџНННџГГГџ‘‘‘џ^^^џHHHџKKKџKKKџ;;;џ№hkкљњ њњ њњ њ њ њ љйhPKы™GG”DH\:: virtualtouchpad/html/index.xhtml Virtual Touchpad
Sensitivity
Acceleration
PK`BŠHжэ"mm.virtualtouchpad/html/virtual-touchpad.appcacheCACHE MANIFEST # Version 0.15.1 CACHE: help translations/index translations/help NETWORK: * PKеAŠHЖЉ@BPŽPŽ$virtualtouchpad/html/index.min.xhtmlVirtual Touchpad
Sensitivity
Acceleration
CapsCtrlAltAltGr№ŸŒPK”NGŸŸ#I5&5&)virtualtouchpad/html/keyboard/buttons.svg Caps Ctrl Alt AltGr 🌐 PKiГHHшdвvкк0virtualtouchpad/html/keyboard/geometry/large.svg PKiГHHЊQq*DD8virtualtouchpad/html/keyboard/geometry/function-keys.svg Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Home End PgUp PgDn PKiГHHјм)а>=>=.virtualtouchpad/html/keyboard/layout/se.layout{ "meta": { "name": "Swedish (qwerty)" }, "layout": { "AE00": [ [ "\u00a7", false ], [ "\u00bd", false ], [ "\u00b6", false ], [ "\u00be", false ] ], "AE01": [ [ "1", false ], [ "!", false ], [ "\u00a1", false ], [ "\u00b9", false ] ], "AE02": [ [ "2", false ], [ "\"", false ], [ "@", false ], [ "\u00b2", false ] ], "AE03": [ [ "3", false ], [ "#", false ], [ "\u00a3", false ], [ "\u00b3", false ] ], "AE04": [ [ "4", false ], [ "\u00a4", false ], [ "$", false ], [ "\u00bc", false ] ], "AE05": [ [ "5", false ], [ "%", false ], [ "\u20ac", false ], [ "\u00a2", false ] ], "AE06": [ [ "6", false ], [ "&", false ], [ "\u00a5", false ], [ "\u215d", false ] ], "AE07": [ [ "7", false ], [ "/", false ], [ "{", false ], [ "\u00f7", false ] ], "AE08": [ [ "8", false ], [ "(", false ], [ "[", false ], [ "\u00ab", false ] ], "AE09": [ [ "9", false ], [ ")", false ], [ "]", false ], [ "\u00bb", false ] ], "AE10": [ [ "0", false ], [ "=", false ], [ "}", false ], [ "\u00b0", false ] ], "AE11": [ [ "+", false ], [ "?", false ], [ "\\", false ], [ "\u00bf", false ] ], "AE12": [ [ "\u00b4", true ], [ "`", true ], [ "\u00b1", false ], [ "\u00ac", false ] ], "AD01": [ [ "q", false ], [ "Q", false ], [ "@", false ], [ "\u03a9", false ] ], "AD02": [ [ "w", false ], [ "W", false ], [ "\u0142", false ], [ "\u0141", false ] ], "AD03": [ [ "e", false ], [ "E", false ], [ "\u20ac", false ], [ "\u00a2", false ] ], "AD04": [ [ "r", false ], [ "R", false ], [ "\u00ae", false ], [ "\u00ae", false ] ], "AD05": [ [ "t", false ], [ "T", false ], [ "\u00fe", false ], [ "\u00de", false ] ], "AD06": [ [ "y", false ], [ "Y", false ], [ "\u2190", false ], [ "\u00a5", false ] ], "AD07": [ [ "u", false ], [ "U", false ], [ "\u2193", false ], [ "\u2191", false ] ], "AD08": [ [ "i", false ], [ "I", false ], [ "\u2192", false ], [ "\u0131", false ] ], "AD09": [ [ "o", false ], [ "O", false ], [ "\u0153", false ], [ "\u0152", false ] ], "AD10": [ [ "p", false ], [ "P", false ], [ "\u00fe", false ], [ "\u00de", false ] ], "AD11": [ [ "\u00e5", false ], [ "\u00c5", false ], [ "\u00a8", true ], [ "\u00b0", true ] ], "AD12": [ [ "\u00a8", true ], [ "^", true ], [ "~", true ], [ "\u02c7", true ] ], "AC01": [ [ "a", false ], [ "A", false ], [ "\u00aa", false ], [ "\u00ba", false ] ], "AC02": [ [ "s", false ], [ "S", false ], [ "\u00df", false ], [ "\u00a7", false ] ], "AC03": [ [ "d", false ], [ "D", false ], [ "\u00f0", false ], [ "\u00d0", false ] ], "AC04": [ [ "f", false ], [ "F", false ], [ "\u0111", false ], [ "\u00aa", false ] ], "AC05": [ [ "g", false ], [ "G", false ], [ "\u014b", false ], [ "\u014a", false ] ], "AC06": [ [ "h", false ], [ "H", false ], [ "\u0127", false ], [ "\u0126", false ] ], "AC07": [ [ "j", false ], [ "J", false ], [ "", true ], [ "", true ] ], "AC08": [ [ "k", false ], [ "K", false ], [ "\u0138", false ], [ "&", false ] ], "AC09": [ [ "l", false ], [ "L", false ], [ "\u0142", false ], [ "\u0141", false ] ], "AC10": [ [ "\u00f6", false ], [ "\u00d6", false ], [ "\u00f8", false ], [ "\u00d8", false ] ], "AC11": [ [ "\u00e4", false ], [ "\u00c4", false ], [ "\u00e6", false ], [ "\u00c6", false ] ], "AC12": [ [ "'", false ], [ "*", false ], [ "\u00b4", false ], [ "\u00d7", false ] ], "AB01": [ [ "<", false ], [ ">", false ], [ "|", false ], [ "\u00a6", false ] ], "AB02": [ [ "z", false ], [ "Z", false ], [ "\u00ab", false ], [ "<", false ] ], "AB03": [ [ "x", false ], [ "X", false ], [ "\u00bb", false ], [ ">", false ] ], "AB04": [ [ "c", false ], [ "C", false ], [ "\u00a9", false ], [ "\u00a9", false ] ], "AB05": [ [ "v", false ], [ "V", false ], [ "\u201c", false ], [ "\u2018", false ] ], "AB06": [ [ "b", false ], [ "B", false ], [ "\u201d", false ], [ "\u2019", false ] ], "AB07": [ [ "n", false ], [ "N", false ], [ "n", false ], [ "N", false ] ], "AB08": [ [ "m", false ], [ "M", false ], [ "\u00b5", false ], [ "\u00ba", false ] ], "AB09": [ [ ",", false ], [ ";", false ], [ "\u00b8", true ], [ "\u02db", true ] ], "AB10": [ [ ".", false ], [ ":", false ], [ "\u00b7", false ], [ "\u02d9", true ] ], "AB11": [ [ "-", false ], [ "_", false ], [ "", true ], [ "\u02d9", true ] ] } } PKы™GGŽфM>__2virtualtouchpad/html/translations/index/default.jsexports.translation.catalog = { code: "en", plural: "n == 1 ? 0 : 1", texts: {} }; PK…BŠHЭ?/pЏЏ-virtualtouchpad/html/translations/index/sv.jsexports.translation.catalog={"plural": "(n != 1)", "texts": {"Sensitivity": "K\u00e4nslighet", "Acceleration": "Acceleration", "Please upgrade your browser to a newer version.": "Uppgradera din webbl\u00e4sare till en nyare version.", "One apple.": ["Ett \u00e4pple.", "M\u00e5nga applen."], "Connection closed. Please click here to reconnect.": "Anslutningen st\u00e4ngdes. Klicka h\u00e4r f\u00f6r att ansluta igen.", "Failed to connect. Please verify that is running.": "Anslutningen misslyckades. Kontrollera att k\u00f6r.", "WebSockets are not supported": "WebSockets st\u00f6ds inte", "Touch events are not supported": "Touch events st\u00f6ds inte", "Your browser does not support Virtual Touchpad. These features are missing:": "Din webbl\u00e4sare st\u00f6der inte Virtual Touchpad. F\u00f6ljande funktioner saknas:"}, "code": "sv"}PKы™GGŽфM>__1virtualtouchpad/html/translations/help/default.jsexports.translation.catalog = { code: "en", plural: "n == 1 ? 0 : 1", texts: {} }; PK…BŠH— €€,virtualtouchpad/html/translations/help/sv.jsexports.translation.catalog={"plural": "n != 1", "texts": {"How do I hide the address bar?": "Hur g\u00f6mmer jag webbl\u00e4sarens adressf\u00e4lt?", "How do I drag-and-drop?": "Hur drar-och-sl\u00e4pper jag?", "How do I click?": "Hur klickar jag?", "The address bar is hidden when in fullscreen mode. Tap the fullscreen button to activate it.": "Adressf\u00e4ltet d\u00f6ljs i fullsk\u00e4rmsl\u00e4ge. Knacka p\u00e5 fullsk\u00e4rmsknappen f\u00f6r att aktivera det.", "Start the drag-and-drop operation by tapping once, and then immediately tapping again, quickly followed by dragging.": "B\u00f6rja att dra-och-sl\u00e4ppa genom att knacka en g\u00e5ng och sedan direkt knacka och dra igen.", "On iOS, the address bar will also be hidden if you install Virtual Touchpad to your home screen.": "P\u00e5 IOS f\u00f6rsvinner adressf\u00e4ltet dessutom om du installerar Virtual Touchpad p\u00e5 hemsk\u00e4rmen.", "Simply tap on the virtual touchpad on your device.": "Knacka p\u00e5 sk\u00e4rmen p\u00e5 din enhet.", "Stop the drag-and-drop operation by tapping once.": "Sluta dra-och-sl\u00e4ppa genom att knacka en g\u00e5ng till."}, "code": "sv"}PK6YAGЫЁW"пп%virtualtouchpad/html/css/touchpad.csstouchpad { display: block; position: absolute; top: 0; left: 0; right: 0; min-height: 100%; background: radial-gradient(circle at bottom center, #282828 0%, #181818 50%, black 100%); } PKеAŠH5вНu•• virtualtouchpad/html/css/app.csshtml, body { background-color: black; height: 100%; margin: 0; } table.stack caption { font-size: 12pt; margin-top: 5pt; text-align: left; } table.stack td { font-family: courier; font-size: 10pt; } table.stack td:nth-child(2) { padding-right: 50pt; } #keyboard { position: absolute; left: 0; right: 0; bottom: 0; overflow: hidden; max-height: 0; } @media screen and (min-width: 448px) { #keyboard { transition: max-height 1s ease; } .connected #keyboard.ready { max-height: 100%; } .message-box #keyboard.ready { max-height: 0; } } #keyboard-func { position: absolute; left: 0; right: 0; top: 0; margin-top: -100%; overflow: hidden; } @media screen and (min-width: 448px) and (max-aspect-ratio: 448 / 206) { #keyboard-func { transition: margin-top 1s ease; } *:full-screen .connected #keyboard-func.ready { margin-top: 0; } *:-moz-full-screen .connected #keyboard-func.ready { margin-top: 0; } *:-webkit-full-screen .connected #keyboard-func.ready { margin-top: 0; } .message-box #keyboard-func.ready { margin-top: -100%; } } @media screen and (min-width: 448px) and (max-aspect-ratio: 448 / 244) { #keyboard-func { transition: margin-top 1s ease; } .connected #keyboard-func.ready { margin-top: 52px; } .message-box #keyboard-func.ready { margin-top:; -100%; } } #settings-overlay { display: none; } .connected #settings-overlay.toggled { display: block; position: absolute; z-index: 50; min-height: 100%; top: 0; left: 0; right: 0; } #settings-view { position: absolute; z-index: 51; top: 48px; left: 0; bottom: 0; width: 67%; margin-left: -67%; transition: margin-left 0.5s ease; background: linear-gradient(white 0%, #E0E0E0 50%, #D0D0D0 100%); background-color: white; } #settings-view.toggled { margin-left: 0; } #settings-view.sliding { transition: none; } #settings-view > div { color: black; font-family: sans-serif; font-size: 18pt; margin: 32px; } #toolbar { z-index: 50; position: fixed; display: table-cell; left: 0; right: 0; top: 0; margin: 0; padding: 4px; vertical-align: middle; text-align: right; background-color: white; transition: margin-top 1s ease; } @media (orientation: landscape) { *:fullscreen #toolbar { margin-top: -52px; } *:-moz-full-screen #toolbar { margin-top: -52px; } *:-webkit-full-screen #toolbar { margin-top: -52px; } } #toolbar > button { display: table-cell; height: 44px; width: 44px; float: right; border: 0; margin-left: 4px; margin-right: 4px; padding: 0; outline: 0; vertical-align: middle; text-align: center; background-color: transparent; } #toolbar > button svg { fill: #606060; stroke: #606060; stroke-linecap: round; stroke-linejoin: round; stroke-width: 4; } #toolbar > button text { font-family: sans; font-size: 32px; font-weight: bolder; stroke: none; } #toolbar > button .frame { fill: none; } #toolbar > button .shape { stroke: none; } .connected #toolbar > button.settings { float: left; } *:fullscreen #toolbar > button.fullscreen { display: none; } *:-moz-full-screen #toolbar > button.fullscreen { display: none; } *:-webkit-full-screen #toolbar > button.fullscreen { display: none; } .fullscreen-disabled #toolbar > button.fullscreen { display: none; } PKы™GG№9/-яя!virtualtouchpad/html/css/help.cssarticle > h1 { font-family: sans-serif; font-size: 20pt; } article > h2 { font-family: sans-serif; font-size: 18pt; } article > p { font-family: sans-serif; font-size: 16pt; } svg { fill: #606060; stroke: #606060; stroke-linecap: round; stroke-linejoin: round; stroke-width: 4; } svg text { font-family: sans; font-size: 32px; font-weight: bolder; stroke: none; } svg .frame { fill: none; } svg .shape { stroke: none; } PK7“NGі F{{%virtualtouchpad/html/css/keyboard.csskeyboard svg { width: 100%; } /* * Definitions for the generic groups defined in the shared file; they are not * children of a keyboard element, so we must use the .keyboard class to * distinguish them. */ circle.keyboard, line.keyboard, path.keyboard, rect.keyboard { stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } path.keyboard.shift { fill: none; } text.keyboard, keyboard text { font-family: arial; font-size: 16px; } text.keyboard.small, keyboard text.small { font-size: 10px; } .keyboard.background { fill: #e0e0e0; } .keyboard.background.special { fill: #a0a0e0; } .keyboard.background.layout { fill: #a0e0a0; } .keyboard.overlay { fill: url(#keyboard-shade); fill-opacity: 0.2; stroke: #c0c0c0; } .keyboard.overlay.special { stroke: #a0a0c0; } .keyboard.overlay.layout { stroke: #a0c0a0; } .keyboard.drawing { stroke: black; } /* * Definitions to show and hide the appropriate key labels depending on the * keyboard modifier state */ keyboard .key text { visibility: hidden; } keyboard .key text.static { visibility: visible; font-size: 9px; } keyboard.mod-none .key text.mod-none { visibility: visible; } keyboard.mod-shift .key text.mod-shift { visibility: visible; } keyboard.mod-altgr .key text.mod-altgr { visibility: visible; } keyboard.mod-both .key text.mod-both { visibility: visible; } /* * Definitions to scale and animate keys when pressed. */ keyboard .key { transform-origin: 50% 50%; transform: scale(1.0); transition: transform 0.05s ease; } keyboard .key.pressed { transform: scale(0.85); } PKы™GGїlL€€(virtualtouchpad/html/css/message-box.cssmessage-box { z-index: 100; position: fixed; left: 0; right: 0; max-height: 0; transition: max-height 1s ease; margin: 4pt; margin-top: 60px; padding: 0; background-color: white; color: black; font-family: sans-serif; font-size: 18pt; } .message-box message-box { max-height: 100%; padding: 4pt; } message-box.error {} PKы™GGЩ.Bнн%virtualtouchpad/html/css/trackbar.csstrackbar { display: block; height: 48px; width: 100%; background: none; } trackbar .track { display: block; position: relative; width: 100%; height: 4px; left: 0; top: 0; margin-top: 16px; background-color: #A0A0A0; } trackbar .groove { display: block; position: relative; height: 4px; margin-right: 10px; background-color: #0000FF; } trackbar .mark { position: relative; top: -10px; float: right; margin-right: -10px; width: 16px; height: 16px; background-color: white; transition: background-color 0.2s ease; border: 4px solid #0000FF; border-radius: 16px; } trackbar.active .mark { background-color: #0000FF; } PKы™GGАXtS7S7&virtualtouchpad/html/img/icon96x96.png‰PNG  IHDR_`љКE )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр  ЬЩЯ,ЮIDATxкхнwМ_Eё7№їљо–vгIBIhЁ„о{G‘Ž4i JGЄ‰€ TщHWzQAЊ Нї@шH„є^ПgŸ?foъ~ў$ЯѓЬыu^7ЙwЯ9ЛГГГ3Ÿ™SјVTьLїЫXmжў€eЇл0:@‹ѓH—Лч.ЪTмФЄбŒ\‹сЫѓQ•—ѓъaŒјјПаЖ7Аѕ\д‹—1bдœџb|я•Й| Уї% ўюЙH_УјlЮxŽюЛўOИ>žѕпцщЈ^Д ьџЂkц/ИЗ +LјW .šџuэfьвГоbщЗўэ4]L1•biŠ5(z`2& ќїГ\lˆ˜‚qџІqЪm;b&І.„еa ДХDLZˆwДЦRЈСЇЄЇIS^LњП[љxЧOфБ=№§…aў іњ˜‹ЯЇыУ |n[ъnЅё&:ќ˜VаPCУ94LРза= &OФ\IZ•є єЁr>ХHœC1…b34^С[ј;ž#=KqХ*§)ŽТЉљйЕy4ež”9Й$•?cWŠл)ўщёEžР9я™­(^D' gъ‰L-™Вz3ъZЦэХŒеџн|t6‡.УcЛ/ѓзРЭбwЯfŸЕ їБј,~.OPџ7ЌвRДC!ORДЧGЛ> mO}кœAЇ щи–клhпŽ†ЭЉ}€ЖWPЙ‘‰3љ5ЦЌУ„OџSwfъэLLЬМJ Х`Š!и‹Ђ/6Ю“053_ž јХŸА=•;б—т$|OЌжёѓpЇ‚а…bмR?х4ЦэЫЇm:‰ioќЫPЧ>7№юОџ‚љ}nрЦйшіцQ\Gз!,Е/эIЭИ§(žЪ–Ы|&iCвЕдnN›Зш5ŒЅ–fЩћYђzЖІХНиšЪŠ_PlKё–"§…єх#”PоЭшy$ŸNf№+ zˆл2Ѓе­Љ\IБ/ZR<Ьеђ„ŒъАMЋQмуЉьšћПFОg2ОFэbt‹‰(^Їњ_oР†§™tЫ‚&рю1і _§ЈцЗœЬяях л)юžїжКО,5”%ћQ?‰Д>ЫwьœБ%щ@в6Д:‹ЅЛБaЩЪНh-mzQsНџ9U™і уVу‹О|ќяШ'=˜д‡т}ŠеБ$ХХ!­Ѓ8-ђ3RОЦf&ЏCqiLLёŠSqХг!LГИ5]ь%vЂи)›ѓЮi|ђе ›э№@Ю>п^Eu™y˜ПнѕмВjцc|–щJ›Ј]“є:Хњb›‰1Й#S}„жЇГт]lе@џŸвўЯџf/OМw3Я^РлпcмЎїR|˜ћз чQ4рў`šNи0?`bО Uля)оХŠTnУц{cGЁжF uv#3xПяоOuНцzјщоьzЏ­7ѓ_рКŽќpйy›{гwН{StТhдS<ˆg(њQ4’ЦЦFЛЦўl2•еOЂЭtєџя0~Nš6€g№Ь• <†бQ|†н0dމhƒmѓ:o ј V+Ѓ]~иhaЕŒЖj‚Хчј•н…zъ‹™97vуУ_aО-жй\ѕЧŒdъЫ™љ;ѕрж’жУцjкžnoбяMъf §^KuJžљЄ‰4Ю`йЎж­ўћ oŽf<Т ЃЙыE^=šВ7•™Y3ЬЖŒ&S§)NР-Т€8&ј0ЋmЪэ'c%ŠЛbВŠ“упХhІ\С+ƒљЂY7kј;ьњ"ЯTPѓOЎУўлЬлЌХCє?›ЖЧсЏрх‚т‡б&=Цb§й ›ї keЁѓ8Svbє5ŒЙœёŸ~Рј+™|ОЂ§fДњ-вс4юB‹}iљ•~ЦЌЪНџр‘ƒ™дŸтGTіРCKтЇЙсз˜&6мК<WхЩКšтјЛu„4ЩlПЄiЅœDЭю|y/єgњЭѕшЌ/9eэ‚ЅџРнŸГв™ѓ6YъEњДЁ8L˜`+ kfУ0)гБ,ѕ+œШ:Љlќ/80™q_№й~|ёc>~—O~Р№]˜‘Ј6оЇьEѕELЅю*чPГuЋвbu–иœОŸвw KќnлSsHщПœьС<ћЗ_ЬАCЉМ…M(.Ыуk gЏЩRв5Kњ№ќГ7Укynїк$ODc~бјјљЏў†OOlЎ7O7ВѓћЎЭ•ЋацsўЙХіЌ|$mџ†WАd0Фt$вk, ‡=ЧŠЧbЋцжbдv 8–GЎaШ8&ьЮЬTоˆС?Р?3ЛStЩяxSшшЎ?С@œ‚V—гЁdё koЫ}ш6œтЌO@Z†wцЦ xwŠЖYbЇˆ}ь ЌЊЃи)b‰мІIUMЩм+&ЅиЧj)~&Lб5~'ЯїgЦeѓіdиHі}Єркч8p§yџмi3VшLЭvyCъGё,ХЫ”Ушќ:'яХ*_/`ЄЯ3т>žм†gjљdІ'МG1–bЗЬь–X—bT–О:Šп 36ЭЯ#lѓBX'Sёщl  іKz dЃеXw KьFЭо ž„СЯqеGМџ7*E–шЩsHy;ЁjV иЫPщ‡Ёй‰мGxдУѓ} y,­(ЎA-z2ЕЯЏЩЈ“чƒЅ9ѕŽ‚GŸd‹MцњлPњЎТoc_ŒЪZ+ЄЏціОŸ§6ЅЖО™б рПrуоМ{3њSГfо'nІ8;KPлЬаI™С)Џ ю'fыЊeЖT6ЪnлfakьJЙ)uвe6оƒэя уc ž€ЗŸцђБ|ё>•k№[ŠлЬvІ*YТПЪcп1Ц_™§†)~™Ча1їk„и7VТЖМБЗlЎЗœV№ц‘Ќ|щœПЎМШ щМ{р+ХюBн”СГ•ЯхдЕшв ЈUОРscЙО ŸНDБХЯs‡fрФи№ьDБIL@qRHПiY’š,‹™YЊnЬАСCcђ 9?KчДЬЄ щюНjкВЪhіюР CЉЌйЬиЗф…ѓИтaЦžKq ХБшŸUЮВc;ГЊjОІЧ#Šч№}Їђfм"{е+FћтY>й‰з#ѕœЗЎ_0b :>чЏkюeхБ4ЎKЎИ&$ЏX™6ƒ8ю"6НlўёЬ<њsѓ Œ<‚š§2Г lR<ЫnnЎШ6ѓaт)KнњyeLЩвT5&X†Ђ@ŠA7šЅОД ]Aк—neяKйьъ:4гпWЙЉїі u›jmк˜ оьLeBЌ*ЕyѕЩ“пSlЎѕK…ъБХ}BеДШ3]˜ЋSБ#EF}Ю 5Ьœ/Жѕб#Еѓ2ъ~”q‘+ГєuФлдўŽЕЮlžёЃУ_>aЬ.TЯвё)Ўˆ–ЋgŽІx'wnУx~qЄВ&ціH%ЉРјРiЌЅ7ХўиLЈœ—№—…Ї ѓOЙ_“ХЊ?’тяLžШгЧ0ЃпќЬЏе ЅСиUHњ’nЄfЋ]/П†,Sqat*ефЅКdијZPєСёТи'Kг0œЯ,зэиьЌ–#\НГАЎаЧПЭ}Ў%ЭЬэG suSЌ{GБ —тБујс1Иhю1ЌК9=уЃNTNЯ–NпќŽ[ЂЉ—2cxV‰/֘‹Уб-Oм9Є;HыasЭRГЬw еО”Зb%вѓДћKжЬD=Ьыo0fyŠ7HуѓS/ЮКЙ’ЌРk9А45ыѓ+‚йХЉЙѓ­3TнY8>UœGšŠy ŠхpJши"х•д7$вЙ§ь!ПіИ™Ь8‘ЧkиhНрбœдЁ§—фУ[(—ЄјО0‡—u;Ё^‚ЙЉWє/mЋАёlЎј"лџSФ~Й HyГПŒС”?СЕ”Љ}ˆv3цo:ao&§œbhfъ(мD:›†ЩЅžтX!3ѕЋќ€=HSb5Є“…M? KTїl7/+Шр,АiэМzТ .ХAs)‘ шд {ЦИПЯЋ›ВнЮsЃшШJћp_#3ю#­ˆЛI›с—"жМVUS)і•)јяКЋЬуО>CэЋŠ§aЁ™џ>›фви’њСtZiўІSЗ`ј%B < €І)xЯтR}Ќ€єУў8$TMvД: F09е…13ыи"лѕжХYšF SЉЉ*ќ‘К˜АbЁv6“‰LЛˆW&Гѕ ЭIнЯЅуy|љ•‹ВМ.дJAйя vШЊЖ}6L–ъіЦМ*nЃ\6пГАЬOЇPvЯ)KЎЂуїiќrўЖ“юbєуTЏ!ѕЁx‡Pй$Є]a=LХ/‚ЁЉ~6%KіЏE6Ba6ь№a–ђqY‚.СW +dХNТЖMљj@мщb<)Лк€Šуџщr70ќxzš{,Ћві>л9ЧЇ{цIя›ЄmžќЋ)f†з]ќ-ЄНиЧ…`MбАЖyьпHэLЧoѓfёvHTз*5=цoње3L($=MšŒйв:c!gурlŠЭЬЯœ'"“нF:&ЏŒїЃуХ>ТўŸ‰Ёс|!ыєвИ/Sy3вt;NЁѕyд.Ÿ%P3†ај23›z[oХ*S •5‚сХ-ЖЗ(џФ”юL|œ‘W2э@*?&ѕХ™g—Ё•!‘­с™oТќ‰=ьgЎŽЮЫS9oўІЃЇQНJ,ЙІ]ьнйXF:?eн0-CхZ‘ГЕАІ='дSŽ„Ѕ;В…Г­ШŽЈЩ“БxžР_ЧгіЏl§ ›>CЗAtшAн)ИwžЮ–љОeВƒ7ЕФA KшБЯL6;‰jЋРЎ&ЌУиЇјрWЪ7ЃFŠ5№к‚›дmй>Бд ЌtзtфљвЈt&zЫЋ:пLэЄ(ЃМ'˜ІPўя4гx4о'ƒ=ЂwщbБс'Р‹хЩ™!6лDš–UШУyS.)Шњy{Š&ЩŒ7уя‰Ш^;Œ†)ьљ2[?“!‹џ6­G1№ Уюуу‡Hб‹т%*п)‡у›ПНyЩŸ"TШВ8‹teќœыœ“>Цл"Ра[ЈЌkХnП~…ЮЄч2ьpIЦLъ$PСчЄБ\—{ЕХhOхlBБ’PS3)лВь–lг1oп!-Е[ЕфгЃ аƒд–ън”П"Н#–ЬjСИJі~џ“єgъю ї+4ЮO7ў”vч1v-*GуХlov"жB1П^Јј}˜š_?MѕЭљWOЇQГЌЧ–СЅЄЏ1ˆjП`tq0ХcЙ<^ll›‹ФЅ)"hfЌ ЧЁ%щеРc.ОŠpјjѓЛžЃЭтѓw=Mч№род§ћфіoDщOtЙ[/b“пЯ§ЗbOj^%ѕ#-cЉў‰ђ Ё––љщqв RwŠjЈ–с=Љ^7лЮы†ФЇЕƒ~‘­ЊиŒ+ЄQЄvТ[ќ0&ЗвFшЎh)–fЋ|п(Ќ‘MЮ'I ˆњmЁШО@sAђЩLп/і„iџYоƒiC(›;s№|ј)EG…Ћ(чXГ-ОyhС:ПхdЪЁ”+2ё^Цэ<г–ЏгiЧ“•г(Ч‡К*IпЧЫ‡" \Х‘јх—”лFfqueЊп“6Я0Doš&`‹ЫHO„ЫžЎЏ{ўуџЊY3_!эIѕУШ=J{ ў3Пv/ш‚3p%“Л3bнV›ЛiУІtЙœOŽЮЯ5ГJz/RtУЁи–JБq//bИ7“ОŒžTзФ›"—gМ@ Ѕш•EўЬ4\К4эnбЁzвяH-IoчНщЪ<еќ-ЭKўЈH0ђhfа1LпŽ g6ѓЮ]шј3Ъ=л1Ed{uЮЮWЄжzи–ъmYо˜qўDŒД‹YBIљ5хKTG2ѓ-Ъ хНpk)`ъ-j-`ŒF|!ТЈ§№QѓЭ›—ќї)ЗŠСЋ цMЙŽOЮпДe{–x…ВSЮ$˜(<бЉТСjЪ6Ћgу”И/еerTvŽ4[drk!х{‰”•&П`ŠTvIKS,єZ„šљŸЦЬщ%vязучф7љфЁљ›зюEџ‡Јм,THE„ ˜5­OйŠъ§TпЮVЮaГы%TШHЁюЮ x:mоaѕЮhЇеs т3aџw3+gr‘ БъЇ діЊXхXпаУ=д•ђ7йzy Ÿ3уpоYŽэжšч†§XЕ5-ъ˜|*•[Э>Лžи3žІk%ž!С>тY‘&И™€aЇ‰ ЦЙxІБBЕ ЋМ@њтЛцјєi9• цsсћ,РкiўзУ"?=Nй'ŽМ—C˜БяЫЄ‹цПЅчє˜Luх‡Z–э(Ÿ Н—:Ёn„Nп‘єщ<Ъ?S^EЙхЃЄІŒ…&tД“Г)їxxЧЉДша8вHgRюOљtЮ€иJ@ ЭаMЭЂ‡РшУ мњќѓК9ЫЭsKзЅщн“ї>СыКРД-•CŠёh$@b‰mЪј§‡Yз…кёlLVelWqЈРF ЕгљЛцzІšшkњ@œДйžt|ЦЕ†›}fkj^ђ›$№ в§ЄgPRyŸ/fp3‡МnaХ‹Љ;2f?Н"6Ш^СT?РzЄ§rlѓuЪѕ(7Ž szIlLнcТ ФšXžВ М‹r\Д/Сѕў}‹џ&н™{bуŘи›к-ј–к>Јщ(вв"Пц—л0u^ыШжНЈ|>їmk\M‹Х˜№\@ШХ?3,|‹8Q@)œЅ1q_кQdИЅŒVЖЮжšfcи ћeŸЁ‘ВA`&o~з\Ян{ђЊOQќŒЪ"I,c0HѓЬЏ3ЛZШ1№”уЇхP^_–IчЬ>€зDЫьЪ2Gѓъ_)žј ЕёРы‰уѕЧŠьЏiBM•Є%Вo)ЎW#`^ Љ$ПjjJ`ы ЪќNЈAЄ…џšbEЪ+Џ~ЮB3DH|ъ$@Ё–НD:Щ. ъУЧЧАкцО­нIЌ]0`)<$‚+гEђы/ŸOу/њс‡' ЬЇШ™­EР|+юœcС+хФЄnŸR|œ'uQЁЄУѓИ?Чъ"Bw”Yi‹ѓRГ:?Г)}‘бШУВWњƒHє=žWšСЈ+лВњЪ4ўƒъЮЄ‰9гЌN œvј:`фt&хК”зFІDљpЈЂt‚иH;х{ЧтQвЭ‘%QN Ї/-'џNhP`:хeT_'}œеъЈvše~QГю›Шdв~MЋ№в/™pјќїЎдžыRmI9ŠrB†‡G‘:N!н%ьроF>ЧD4ЌŽIљEф Ѕ}I'Š€LoБ?š7ѕ‘_ѓ_ЇZМоНэВ™=–r- Ьеl^ђџHй—Д5i0ыћРkTŽсэјђžљяэz0k\’sф{тЭМjR„пЪЋ)GSž@y>щNqАЌq€n"’†єFЌ†ђЪх)‰М˜4HDИ%;П)ѓњ сУt(ьiy| Ы|WQvЁК4еWЉžŽOљrDiŠ |}ЏЎ3џ­ХЭlђ$-GG0;;бI {CБgd Ѕ§)ŸŠиpљЃˆѓІІHYWaІ СgссІƒГyњ—0Wmћ]s|z*Т‡хѕ”—“IЛUћ№ќBїТ[9№ё‡`bб {0Г'ЯПЯЎЧQСмЗЏ|Ы уеЮд\GК] |Яf†ѕ X[Hn>ђ“ъdSРfPДHhЯŒt":v,щQpiQЁqЄ‹ТБL?ЫVл0ЪЭ…Ъ\XцЇЛА0!Е"рё1žЅ:ˆёЩ)›“К§šЕЯbр’ћKччіСэтT{k‘\є|ЦwъŒ№Iіr'GТ”п ˆњbџOЯVOEГI\пUcД1;љыоьх#Tѓ6вЫЁcЫ3#іšŽ$="єxЏ8Г:фNпЬ§ЋАёіД%t_OсёњяєалщвY”?Я–ббaЭh+яKQ]№ЇЄIлQОAѕVвї„%БˆPКžђ™œЙАtЦu†ј—РкеNŒ-Х…И[˜ˆц3QfЌЩУ—БыfДzbўяBП6<їg*‡Gтhё=Ё~~!ПётАYŠ8Б3є€№-юЋЄ]іvSn3=WXth(щвШог:‚PхтDg3дќœМ(pѓ‰1: œцjЌNO:2bМoŽу“fІА]kЖ~šЪ+!—ЏP}ъзэ—kf54#˜ЉЃи˜‡ˆ0мкЄПХІœўр\ъnМ:Э&ž~Їд”оVЈУЩ‘i‘&d`ma™ŸNЭ M_†’ RП<=DќƒиGlТc (gИСzIЙ’ˆчў 'QІМ†ъVTЧPн5$&M'§Sk]Хцњ!ЮЯ&ц€идЪHMfнЂBЯЖШўа†Є„Oђёќ1йУmЄœHu"еХЉžOѕ’œ"ё'єcЦЦ<Е#›Љ2ЕмЕЌїld2ЄˆDлЩy{ н_OКƒj7Њe„ЋчE–\К&;с`uIГg‘zљ5,ПEк=#АпЪ3ф0Јљ[šg~!ЄЛі™ј+хž‘ЯSн†ъЃяЗѓЦšМйL=†кZЖЙŸ–QЎ"NБМЖ|к]Xљ=гФ ”W)ЗˆvеWsњ][ЪНТ˜UИНEOѕ4š]Ÿm_в_ѓоЙ'Ћљ whlzх€…ЕEK›tєd<˜QЫ‘}џ.l2˜šyМ5іЄ /оCЭKbߘ)@ЇsЃЃХ“ЂВ_Ÿ8]Xє‰p>хtqі4ŠыА5УХAГŸZ4шБьwьщ.ХЙЯ_Ь7<8‰єЛˆЇІ)љцЦˆd;Џ XVœ:Yч~ЯЧŸАмNЅЉ:Щ-тФФ9:ќX~Ogq6Ќeь3ХMxѕ;`ђLЭOњиь ў,ђŠŠu…sљКPг Ы|з(”ЁкrАћ ŠЫsQˆJ^Zэё4ХH^ПŒ—†ЮwеwcЧ>мї #.њ–ЄœJб5Ÿ`щ–IoE1"eЬ*Pƒk:к™:ИЖ ћљ•&š]7bJOSОCѕj–&§"ŸІl*ЖаЬЏvv{‘@UЭЫ“ГФхЄВНШНЙ*~?vю[žMЃХЯч~фъЫВЮмwHžРC)–СЧт8щпз™UFkQZНOѕ,~#6ќšшKsX\ЫюЗВђГQ+ю?IЉ#mіЂзošљc) їњg>)& .Ч…fўБsЇеФах)–bVЙѓнђћъХБЯы#/1Я}x‹ЯЮI­g—ytUІдRм“[МЯЗВј"D;мК?$–њ{ =?N"{, їџф Іo№Ÿeў,jІњŠё‚i*UЙ”А§/Ю'7C LšJнГУpEŽDšoоžУcš-Žƒ"ЌчV†.Э=чГцЅ ?dЭ‚rQЇr в…л0щћ’†f+ЋЩзhОq*>ѕЇњеС‹Xвдc‘сW– pTУу-ZY ?вќ†Лщж\Ÿ`іŽѓYE‹€ˆ}DБЛ(Д8ХЂ t#хR<И ћŽ‰bsRчГsO^ўгЪ:Б)ƒїаМ\›lњкЬјА\T$)–*ёх№–гџфdЪ{ ЙgІ1Ж?Ћ\ЭšЧбАхЗ|оЬЬЋЏБ3ižЇz0щЭХqWЈ2вusЙiы€zг•Сœbп|.Њ­@чЌ‰3#ЬF"яІђ,<Ш#OЬЯ|иц^Ў}7? r•Ф*иAдЌ™jvY­:Q*lЭch xфь…f+t/}xgдlxњЊŸаiM~}GЭ эŠC)К›ѕAА‰GђЇћйђn:ЮsЏЯ@vН‘wж‰˜€ОйЌ\VИщЫ Lч)ББЏDБкRЙЧ…%6ќтoЧЇњ YfSѓЎшј>]жўvЯœњ;Ц_'ъЩѕћп4І?`1мжЏeРJьДХsў)эHu•UЖjN!ъЮЗŒ IЋŠ‡uХрZцП‰<[№D—8^5/эв–лnтaQkЇј‹0=_ЯиNSenј]ф§ЈЩКџ‰Ш‰yэpІN EЃoLћmЬ“Я3pЫРр;<ЬЁџd…ЃEЊт7Єw~ТˆПehф(мУЬ1ЬИZдŽ›‹&ЏЬР›БI†МlояћѕKЉђ|JЕ­RЊ™”Rэт)ео—RэC)еН‘R§>)е_˜RCЇ|ЕIЉЁ!Ѕ†К”ъЋ)еЯHЉіі”v;?Ѕ‰_Єљi§”Юћ[J=SjyNJ-Ы”ZVSjuzJ­KЉѕњ)Ей7Ѕ6ІдfbДk\,ЅЦ6)5ЖNЉѕЦ)ѕщ—вЃНвЗЂђи”оп$ЅЫ/JщЗCRz№р”Іnњэž5Ё6ЅŸ KiБНSъZ“RзЦ”К“Rуk)йЕЙo'Оћ=–џ1кмУу}4ѓХЂkJ5weЦ7ЄT3%Ўк–)еЖIЉіˆ”ъЖMЉnЗ”ъOLЉўХ”ъПJЉaё”КЄTwCJ]ŽHщ6пщAЛІДцг)ЕшœRЋ%Rjе%ЅVEJ-gІдЊ.ЅVнRjе'ЅжSjН]J­'Ідцѕ”кМ•Rcз”Zo–вV;Єєў•пŽi)Ѕ”>N)Н§эoŸњUJ—NIiЩуRъв;ЅЎЋІдuЇ”:_’RэЋ њpхŸ— Ў)ёхЄQŽžЇбњ)UzІT•RЭэ)ежЅT[›RmЛ|)еLHЉfrJЕлІTЛGJuѕ)еHЉО6ЅњOSЊ§ Ѕ=†Ѕ4сњљ;>§ш”;8ЅњнSj1"Ѕ–[ЄдЊ>_SjЕXJ­кХdДœœRЋхSju`J­.NЉѕ )Е~6Ѕ63Rкњ”шŸвФЃџ“№ Љ:6ЅIщднSъГzJзOЉѓе)-vGJ‹]•R›і)ЙА9ЦЯИŒжe–“uw{і}„хK5=ŸыBОKёUќП8cgчєlџO5Ћ\9еМ/ Šтcуxr‰81'еœЯbч…IkfЎ3PдRоL|8`ЛМсЯ ж­ТШŸMJЛ№єЏxw Ћ|РŠшО 5k‹\ЮІ,Ьы OUЏШ†Т}y™lжwaцКЇ*>Vs?“Ї3h^;%§„тН€WR ІŸУфЮ8V34№W<1й1–iœ|0П}3ЊЦЬC+ˆƒ^ЋŠ ЕЛЈ™ыQќU…ЋPЌ#№љ йVџ:МуэGsэd›уУ6SOт˜Йv‹\ct–TђИN|ХsХсZ2Ї—/aVНњTFРКl ц&jіЯ5zNЮњŠ`œ6fп+ХД OОиGдF[-gж5Š4ѕB8Pг…%з>тЧхЭИ*ОRсоут'ЬьУФ’j3u*˜ђGэЩЕŸЮЩ|єР]‹БFЏfЗѓўт{'sx•iB Єи@дLX-УЬKЪY“.Ѕў=и•Sка}U& рІ7јЭ@ЦоI1%ЄОX9˜Џ63h\X#E{ (Іg`nН8„Ё6OxЎuŸr™јЂ?v_єм@T19]|ђЃщ“ ELHЪ_Ї(ЭЯ=‹тЂ˜АЂ6М|Ѕй0СФмП•EЕкeЉЖaђ—Ь\рсьЧЗaїые“ЙАЯстeИт9кЭ_ВњMQїx;QdЈ?FцTРjxЅRЮЗЌfГє#Ч)ОЏїњЇywc:mРИuyѓFНBeDЦiОA–Wђё vтSЙdЄЋѓЄ ѕVl ркTVТст#§Ђ&ˆРљž4#Ч FPЌ/Њ]uЧў9)kš@mяЯњрЬЁЏb"‹ЛЦћŠыЭЊ–›&3}Іž™WDГ4Ќ3чз71~Щ‡КC9e1N\‚њƒє˜YRжWёЕ"ЬИxќ­hAВ‰Yr–ŸЮ гЃшGх \ГxКH2j’ОХ…ЧИFŽzuпU9'?љмѓБ9\Wd!ЈЧйƒХ@ЛФ3tЇш™'dD^I-”M|шдЊЂˆё§–5Uдš–еоš!щХИ‹ђEІ72у‘wд懙ToЂщљОŠијjsЪЩFyњЁЙ­“$дH2[ЙЎ9ЃкŠ•Кj~ц“=+:V§*~ŽŸDўMк@Ры‡Х>ія3цІЭ-OpЪLОzїпЕžƒК]ЬEӘвЭBѕў;К*)Љ]ˆЋfŽ{ъSвr!ЎКoлЏБuœ2•Жп6СЅѕѕŸяё3јџšЋЪ{KГяXџ–ŒoЂЪŠЌ;‚ыяaєсж|з\Џђz†§‘+ЛГъяrФљ?E­6d›WЙ}8_З мшЛ№w~ЁК6CЛsSw6ј> .,G‹…m8›dщ?БЮlЕ+Ы7аўgДќmоЅюЎџрŒ/b4}e&юХфЛ1oўœЎТЋŸ1ш &№Mžі-˜?'еїЁїxКџˆvЇбхQZ7Йaџ/Q МЧјСŒм1г>„A71cЙoћаџ@вc7KтZ%tEXtdate:create2016-04-10T10:20:09+02:00œД%tEXtdate:modify2016-04-10T10:20:09+02:00эщЎНtEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PKы™GGwTѕ~~&virtualtouchpad/html/img/icon57x57.png‰PNG  IHDR99v—M )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр  ЬЩЯљIDAThоЭкyИ_гЙ№Я>ѓs"ѓ@Ф1ХЙf1ЯддTBбšЊкj‹ЖhЋЊцЁJT[3AkЌ ІЦTЉ!† ‘ ‘A‰H"rЮoНїЕ#чИѕ<моїyіПНжoяѕ]яє}пЕ Ы”џЬжџЭЯ3фЏє\—†=ˆ‰ўcRЌЬТћywmž{›Б}xlІ?ё9дЇŽoяЭГђс@"ўџ^ F0О™oюNї ўM€џѕ ŽЇ§Ёџ<€Яs-~ŒЛЋВзџв}чŸ{>ЫyУYunЧЛ554ЭЄѕGSu$жA=."њуАХб3(юС›ФіФjx‰ЊoQNё$VAB[ymA1Ga#ŠfтC,ЮWБ+ОAe/>šФТw˜3эПџ$Єќ˜o§˜‡џШM/хКЌќН%wj'аяњWгr"5ЕTџ„тeb~OC–Чђѓщ{4MП ё= вњ|А:яз3яtо­чЕX8™єuЊюЃиbbХ KёvЙQGQl•7аPbcвMДэЫмеx§%І]ФтG;]ЬsxОoЫџšї`‹—LkШ зшyUC№8V ЎЂf8/dиЭ О™аm#ъ/ћt'ЈteўоЬ<˜ЩMLњ.ыyoЭМјЊ'qХŽЅ–WСЁggЭясчeЧRTS9‚Ћ2a2ѓ.юјЦ{Gp`_fџІ†т6zЭwТDhig!Д'HЇсIЊ6fѕгиn56HЯMБщПчщеягUОЃ§dІžЧcћёЗЬКŠЈЃИ’b$6D?ѕЧ№dѓЮ]ђЦэad.›P0hmn{’5›Ёv*ыЖгѓ}†5ВiжЯ`ЯYь3Šngќk эјш*7вЖUGSїѕ Ј9іSаŸФŒŸpїщПbљЛxНXы,ЖZУnOQѓ<дŒ зNxŽK,Єq(Gќ”n)}Sж№”Їyx.ЌУЌ-YќЭ2’uЇиšb&Іџ…)ў‘}Йх+Ќt"[ѕaи§є(iEэlОЯrйІŽЇj9ьN1—Сш&дтT—Q„ѕЈ*XёяМ9J34VГѓЄ*яЙD1M=hкˆєщЭ8kЌІ™Ъ3Kзд лнТ‚k(†Sœ#ј№ fЎФє=ЈмŸ‹†b9ŠK‰_тkKŸQф,“ЅяцЌ0˜ъNщУЎ'цћг/хиiL;ЊђЫЌ†Aљ…ХŠ2CqХзeNЛ6‰іи–тЖœЭЈзXq. ПТЩyѓ$МŽvtLятэМ Њ1›ЖYЬЙšЛ6фO)W!Х+ј/ЎЯŒУщЛvжфпЉьr љXцлOчTПЅј&†Ѓn*55нriTLЂxИдцbi<ƒžц[cшл}№ЩzpMџ[z–WЉEя}9№fоО“ћ.ЂjН’%}Ђhшь“Уˆ3‰ѓs4ќXкIнHѕФƒЅџѕЮ9*~KњCнњfŸћr­Œ вЪ†eр9˜asщЛ„ЌЭрЃјœWь“Q?’-7Ѓіš2FœBЕ,Ÿм‘Д€4‹їћ.Нпpueдѕ@Љ­г)ўˆб/c4q5ў;3§p18/ЂG ЮЯЯ9“2їŸKj^ф;ЛАyљЛk-5?fq_ŠŸ[. doв7Ј$f%М†Uh^ž–хI'QœAё‹œ“ŠЭБ ŠУ(Ц•мuŠ>Ф†И’јЪf]еЅƒ,цЮ-xoдчY41В л”7nТs”ѕ._–ЙBœN*xge* ђ§кхщ=‰t БKNИщ9вкxŒ%FšBe;* T!НŸTєDŸ2wюАи1д ћ|Ёцч.§cHыQy•є"БgчљЯњЄmБ:яœB[йNЈ^ž~ыцВ)WђШ%Дl?вДLТгŠЄŸwŽЬ~XйœJ?*ЛхЄoћЯъ3хЂ ›+рмЮУ5љkтfb]о\Ž9K’ъqЌz5ЃѓŽЅвГЄyЄу‰‰%шЇˆ‘ЄЄзЫ`uvf щфLЧЂіKy+1;7Ив%™Д|:Ш99‚К‹йг™9|щиJCrЎ"юЩй5Э*iYвуЄі’вM,IєbwвќlFЉБљg­јѓKš)eœœЃЏk—вeФѓD+мХ”ѓ—ѕЋаЗ–ЪЖЅ6Їe”†‘nЯNŸо&Ю%5dMW>Ь…rМš5Oпќ4yi7*‡ч‚њ“‡597›TњFцŠ/4цАнЛ0јGT•ЙhviЂwцо(AoJSшyФй:вЫЄЗАн—ђсМіhF/т7ЫљsbA™рїфХž|аZNќ:CЈо$яZZXVэЄг‰ЗЪ6ФXbЇrь5в:%h%шУПxŒёBцЮёщJ|"яv9ЪsйЧьР”‰Мб!љ#­;чdПKS3УHе™ЖЅ‚єтu"•ЅЯ№В2%Gу/\ОBхИмqˆ_сцe€tMYj=ElЫьыxnяЅУЋteаd*V*Е5ДUйк(rЎŒя•]€'ЪіШqФйМ]№%hђŽв-Q9ˆ4}YšќiїqI$э]xЌЖ§ѓxѓ ћZо€tёAЉ­ЫтuJйакЙфИ)ћjœFZœћFQѕo­ћѓЩЙe?Љ щ(œД,ˆ[‰юr…№5ž[™щ-х„СlњMZŽЯЭЋєFЉЭnЄ JNФuЄ Ы`ѓOвNЄБD{.ЈПpy‰шJМF|›иaY ?Ъ)ЂвDeтЛЬиŽgоZ:g­­YГ‰іk‰ЂЁда>9…ЄЫrq7•lщщь_ДФЄЙ9oЇё‹e€tdY.u'§.Œчўуi{;Oiљ)[ЃjuтЏЙЙ—f25™^Ѕ‰™?ІKПьN:3GПO&ъ/Dn(]g~юћФю‡;kђ%§]й$zcxђ^ПКœДУЯЇGкo'§‘XŽш_іon .*ƒWбЇдрAe'­њKаф1йч+уIЋ_ы<оd‘ћ—ё,Б<Кa3Жхб №QžЗњ(6^›і&вp*=I[—&s}.jc1ƒИŠ]6ЛW} šCМ_дOрјe\!чКЪ`*Нs+$іaёYмГ J[Џ_‘]їЃО щКЌЩtg.­воЙ­™6+ №K2MŒ‰™YЫ_ИмDкˆєLЩЇ?QОuіЩ3ˆYх‚Š2‚>Œoёї!LјівЉ›џ‰5†RЙ/3ЄИІ$Щ}KНЕЌRFQi'эZšџa_<ЦИО,>"оСеЧ;krtЩЬ­ХИ•4СœГИk!ЉdН‡АЫЙИ‚4:[Aє*M§Ъьзi"б/_щ†|~uEюФ}^yлЧЎЦ’vЯk­<ѓY)d•m2‘NЃK>ZЩЉЬ_Ўgъ9хфгйѕњUб>:ѓЅQЙѕ—Ў^Й!W——ДЋcЂ~2ћьч•t~ас֘š6Ѓ,Е.ю<ПsчвšНАІи‚bŽтЕ7Йw-–TKƒ–gћ ј§я(s*)VФЦшY6Ё[p7Хш|/о[њОsђЉ,ИbџO йНp_чл1ъkXЗCЏ(n.Я]ЦQу)ƒх‚’ПvВOе0gнп8•д‹тюlуEdтVŠЕГFц/рЦНйх šОJУ@іЛŸ{2П•Њсx!3P\ZОц!Ь!о$vћŒТe‡rС№ќsFњ­ЫјKмVžx B%“ЅВ БŠY>ž<+гЙєš|міN‡уЖ_f.ZœРИytрвЧl9mFRЙЄŒЂЄ}s—.­Oz3Ÿ?ІЩЬ]№ ЋhяляЯ›Г,YдЦтsHЇбіcкЗэ8:уў*ЦП‚ч(yч%sYВ”š’Ўž“{<Ь{‰Ћі`QйŽoк›Qѓi9ƒJБaN515w*‰t эѓybѓЇ/cХПч№‘r6{ц'oвѕGЫR#ћ> ЦЁ,О+™RЖуёЩиg ”Э‹(6‹ЈQН ЂІgDЭ>5DдюQ[‰Ј;%Ђі™ˆо=#м,>–…GFьГ}Dн…Г"šКE4эбtuDѓ:ЭЏE4шёНˆГzFЬ›Ы”t_DлeЯio‰Ић†ˆ!‡Dєк4Ђз‘uƒ;~99g ;мQУИm9[чy“є]Šгr№(~‹…™б}rСьmоmсŠ5йє@ЎЃёRжъЭmkPДfГ.ў„jт/ыfŸ^јЮмžЧпb‹tџP>дh‘ьЃ.лЛK>г,‘йžзRœЪЂЩŠhбulФrЇGД.ˆhX9BtXyš б№Щ„ЕТЋмŒѕUp—ЋFи;Т™n0)Тлњ/WuHDѕ*еПŽЈО)Ђњˆъ…5GEдМQ{MDнкuЧ—рЏЈ›Q|DCSDУеkE4юбx@Dуy3#šОбМZDѓ˜Ќљцu"o‰Ј{$Ђъ™ЮkШзэ'гыь%Ш>ёхђpіБь^CБёЇFДљмБIvЛL˜Аv’Љ]k‡Б@3Хvиы-Щхx­мWкƒb# (Ч–|йм њPциБžQбTОЪ-зqвЮLyp1ЙїWљеѕМuЖџГяЧПˆkкХœ:‘nпѕяIѕlђ—ŸРЄзYt<1ц?ЄгunХФ§јѕ06кˆЊŸў+4ХВСжмЩЪчВщ+Ќ;ўУщzфПЙS_–\ШœiЬXуБ˜:ŽЪŸі‡џїШ~эЧђЄ%tEXtdate:create2016-04-10T10:20:09+02:00œД%tEXtdate:modify2016-04-10T10:20:09+02:00эщЎНtEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PKы™GGПкHL~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр nЫљYNЗIDATxкэнw˜eEЕ7рЗvїф˜!У 9 9JNAQD$1!˜Н$AD‚ " dЬ‘g`rЮЉяЊнчtЯt@†ы…Яѕ<§є>ЉіЎЊUU+ќжZС{Bс X•~ПbЙ;ŠЕwg™oа ЫoFуИэНЙџџOcс>МјgZЎсЏђђ!М№aТ Lш‡ѕP§_с25тoФ?т_T'уBfФјsЯ)мВ3–gЮJЬ~]7^BЬ3ъIжлџЩV+ВхяiЈ`}Ќ‹оџ‰Q§џœцрќ†9Wpя/xфўє/œЭЌСяія’yяЧ†Ÿч“ЃљиBF.ўгЃі_ъŒтчxѕO\љEЎШ“h:щпmэпdžОg\?>КћžСиC(ўЇ‡цПдSŠзёф–\О?7 фљ~TЎ}Ї­ќЬ3l3^ŠУЧАЮЏ•џєPќ—ў]š7 чW7ђЇ'˜{љ{xГeVуO0y1ўїяƒђїкN>СŸx'мааГЏ…пГўjœѓћ`№vя!‡ў—ўзiHЦ§ŒхїсЁцУ„ю~еƒcЋсікŽ“vgѓMяјйFуdlƒu лb)œ€>K я#єx)tI}—P;ƒ вк~з]ьЅ§XEтKј­4Э—џ…‹ё=ЬЧǘCгMмН*_§OœFбеЛyфcйk(gШиgаsЦY™№a+z fXAПш§)њ Ѓсe†ю•Й7J“П|О&Y€Кє€Й˜‚с7Тd •ŒГ1Гю7Kх шЅб #1(>ŸА:сGX 1бэ—XOaХTТ-И6Vc€ЈчVЎ9„3 гuI-ї0Ї?­Ї1gSZЖcіFLCыЉю–ћ9ГGwDŸ§йсR~ёiŽ9ЧЧтХЎІ  ZC.УzєА›ЌHбLŸA y€ЅжgФнєНƒp&n Ді%мEXŽ8а@ё LЫЛcюxЩD-yрўŒs‰п!NCAИƒp4Хh85uЊиŸтiŠ#$&JeqёxZ/ nFЕ?еuАv&ŠoтТЦ„#%Ћb|Јnв[Л`І aSЌЎ-GУ=ј<šБ ЌkЋ9ЗЗ8ŠXŠАЌ6І ЛрYЊgHЛЮЭФ#ˆЫ3wS&яРФ‹˜ё nHМJЯ_У­їё™+yћфƒyЦ цWЛяŠ+ЛН_ТeєЫшяБboМA˜NиГђ`•ƒ^юcy‹ЗTО^@ёhŸ#nыв`їо‚~збЗ‘cдХєZ˜qј0†зwfP`иїё+|‰)?Їщ[Ьл‚I_Ѓљ|ІžХм{h}›ц#iљ Цвдџ"Фч™љЯьЭ”УX№ЯќщЧЭƒЙєDО™ї­wР<#ПЯїGrШ.єYЉ'ЗъГ"#Od…Ы2pХ+i`4ОOхзхр,nлюKмšъ^ФаяeџŽЏ2є–[™UАъЯXn<Н'^$1[6ЯZСZи4п'рв1їёЬРm„fІСфƒ˜В*/.ЫЋƒ˜ѕsц^Ььбz3aMТТ$Œ#Ќš˜[FОЂ&/5чПЮЈAэ›D ыхчF˜*-І Щ/3:Ÿ-AM™CxKЧњcФл˜8Ÿ—ЗfђK4}Џ'3 г7чЬ+9чќuqЗэШЗqєBNл“=тбзВв]Œљ> wр™3sцў–Ит)ьƒ…и(ЩKњJ;ЩЇеŽ(y"ЛЭ…yЬ`ŠЯ6“ч„–|0ЉюzqTЉЛW/Т„‰Д>ТѓЗ№ќХЬыБ]љЭ59e.пIRqкh1ЗпesЮ]Р‡ыЎйp1УжcЕы~ –ќфEЧ/JђЪ‚|=’p.a\ъ\М•Ъ ЫJ›ГоЙl4ŠеžЅёџ€ы4~™™тЭЙL\›gvс…бLОŒЪ94ь/ЙyKav>~Mј“ЖIЧ:в.X‘фАЮЈ* ўUщˆ›HИNк}ціJуg~nыu]Ы3ѓ$Qс4Њћ№Ц_yІ3зэщм~8Ч|ˆgкЩ?˜gф4~ј>ї§юš k3ъMVН—A+Pьˆ ђCЖbjWГ‘"^Cхшw0ыџ€MџФК+1f9z-Пя{C3ххё<Ж O-Хk7тŠa˜Guкb „А‰ДmAxЙnцK;Ятv’RЋœTЛgЎ–pKŠч$х"фїІvвV+ŽУ…LZ‹Ч/fZЇКT=5=Я7ОЭЯ6ЃѕјњGЋЃlСХOГєЌюšБ?kLfр3ФГPЙoА}(~"щхрЬЋЛл[TОGЏƒ7—ЭџЬИЛYf{ТNяёЬ/Ašї(ЏЗђЬ <јžŸBј'ХY’6UПkЮV;Nж'мP6‚›ПRГЭЬзЙвј™—_ЏGј–dъ˜F“ЧО\МгД—Н*8ˆИ“O`ќЮЬиЃ'Н}№ŽZŸGлtТ:;ЯЈ]ич–^НЛf~ŸUОТР}Г&4ƒиKвˆЊxъ+ЙѕщI+Ѕk)ўХЖги|Vл˜e'tkЯќПG6dЭЉЌЖ&ЎРㇹшžњ•Ѕ ?W“cъЏWЩзЭxšјГ|нŸb]ŒSгтъUј(э2%Э&~2П??)q9IkЂјс/ГeMжхIнЬлђјљЬџBwНнфѓь{%/ьЬœ!Дэсhіy›Ы0№ВЎšшѓmV;1ЃА?^БшY‘ДЉrp>/ЄЮєП’§іdз XъFќѓвпšFыL[—GпрoЗ3сjТЩ(9@ч–ы&5&kР—0 гЬ„ееvЦ.к “ЬЪзТУи^кЭNЅс#ЗтT№B3ЯœBгнuђхM9`!?ЉіKMу˜эйємЎ~ZЌФвFRєУп$!ЎЏšк™Яx§ђп м‚a И€ЯTйc]†­‰—РЄ=Eќ"qЊ'Я&^MЕ•уЉIѕGTПOќ(ё(т“вЪ>-ЋлУ—РsєЇX“#XхB–9‰ЉГЉў–№fВEyCЌK5МTГ{чП^в‚КwauтФЕ‰+aэЌŠЯШŒ2@RPЪм+љРЬ$Ы%&вю]Н‚ъT?ŒыhX‡Ё}™q3ГяЦ9]urиLўo@ѓЕљиѕ]vњewугї ,;+Љ••q,fSмMИ/]ыƒэђУ6/#|1Щ3‡mХ?ЃзhџОOыоt$ДJЫ7˜З)ІА№DоDu.naўОМН)­ы`'<ЫŠŸЅяЯhИŽeFвї"Цќ…>ŸІёbПHЏпRь†Uџ}>jј!<ЩвгЙњ4ю›Ш‚зp–NТnёЕнa Iй(еы І=ЭФђu•И*qлtm4Хч%уcU:ЊV­ћm%3QIs%Ћ6ДRнœъ,Т­Ќ№ЧgЦАй?“ сбlЊ'1џЃ4пЧм М|~JБВšРН•dK+eЇŽFЫвПж›ъV<А їЛ„…Эў+;уЁeCПЪ™ЏqФgё‘Х~ ДАўПшїщ8šзIлKgЅѓuƒЗ9dж^3?lOсg•ДнOйŽ§ŒЧ#Џ]Ь›ЏdШвUФ_K.ŒWеддЎьЅмб‚/PМž_%Ќ@Б1ЎeшЛ+ЭaЕуs>#dРЖя”{№fђЁ=0kЦёт‰Ф`‹К  ЩEй‡еp.О(m;ІAkюу,5@GjPcђљ„Qј~ўў€tД}оЊН;хyІроYx\—=:ŒS/сьV}‹›Ÿdеѕ1jБќp+Ьe•c{р lЫ–a3ыЄ Bу|6ћ ‡bхwЈI5bъš<Г2wœЯ#ЅrіЬpŽ1’ењТ™i†e[Ъp5;K)8.ŽъŘщй›О|Кі:Ол(ўШ2sйьTЦНЭ*g1ф ьі™hw&мФХ2ўqтWБƒХЋфЅ gNV§W—ыќ4Щс'jЛЫл:З\Wr;Ћd‹ѕiёь–ЦЏMPŸGх|юС[oKЮрХг?Йю|Ž| №‰љэUєоДГoЗВіGўУЌ~^GёБд9M˜”ДMвжћ,ЋяХWОЪ*Ћѕ||[Жт•yј+<6ƒЧMѓѓр-ØЬSлŠW"ќ. Р q с%ЕU:Mз†ИљuпэKј%aМEќ6ењ6Уf—2v:#~L1у0аXоЌ№›'yфГФЁљљЛbђfI8†Љ„Ы ƒ$&MqЂфщЇН1Б#eUОM]џс1mVъ№{тЋМјOL КYЇН˜Ыф‡иeX#Ÿ'а–є{œAgYGRmДљ„ˆgІЩ‰ЃМ%Yэ1ЮДмqwоХѓЭзбјŠСЙƒ-ЕZШвЧM‰У$ІкˆАа…ЩЮNЫ T‘хеДУђ­ЯbEєІјГGsу Y‡5cУ•йрзŒ~€pA:љ"ЫЦЇЯќЋxќѓ4ю™ещвЕ1Um7юmtО^šј•ьељй&цЯчn$œл вЎTgCнX Ф’/i~+ЭШhи™jПЬd‹в@†|ш ѓћѓЙ5hXв*X„жЦйўYŽп‘'шMи˜п­Я=Ÿaіб4œIј^>ГwЪЬsХ uїœЃsч`GOtSТ 9.3Я†gJ[xљн9К^§гђuп„ЊNgшOYc9MЎЅјGЯњ[§ O\вŸчЧ%AоkщГт„дз6|OW;[UR§+™I.Їи+ЭQœEёзМЛ”жэЗu.fѓAымЗ#“WУз;ЛqK_?+№зkиэBŠ›їЕ0ˆе~ФвЛчŽ-аЙ>wь№+іМ€7щUцѓрГ\КoЌAб’њоL}ЕPZ0ацбвIƒЅpВ6™/ ФwђиlGУЧ%-ИlЋуЮ2ˆжГyъ[МtЊN$`ЈŒрќ52ьXмзi/‡Sl@KЅ)ys‹ъ&ЂA›‘Њз$ім”БC%WT}šgЏтМЃxqфы*юя08ѕBл i5&тv„lЕ6”№zц+ку[HL5ЌюѕBт. мI‚h5с~Т?Yц/|ъfvІGєј.\tЏќХHэm1ѕдZї^!б†$ —PМ‘ЧЁ*-ђeыЦhqm•ѓXХЁXƒx;х‘oЯъ”yžуў§Bw!Н.bƒUщћўhб3ЗJМŽТodдФЎjсгќ|WnEk? ^RЧˆ‚ЕЄПпЃШиa­YF)ДsФХДS•р#ѓћЋRŒЮПmЭNЧНъкiЖ(3UъкZVђeЫl%GfЦ$Јjѕ.VО—У~У&ЗYTЩX §цfў|.-Гђ8"|FэШl]Ьиз[љЅЩ%&џaАtФѕ"ЌІmU,jm.{ЬšШ7ъьiЋOsп›н„оа7ж‘0 чmВjЙ’ЇО›aгђрќTкЖ;šєГCаљѕуT‡ч šMMГвяТЩи\ Є?Їю™$trн0У—%ц§AТв„yхЯќю9њЮaнmpwзуВѕk<|/>Iq >š5ЇЅђ8яE8ЂŽ:2фŒЯз1;‹ћх>,KБОфЎhСf„SдvЃњЏЏвx•ttCн2MˆWR=DђИЁfтџDѕyŠqпЁџ-]7ѕж7љЫУLл.­аbnъ˜&–Ц6KѕLэWZЋtT”уsYнБ>”b’t„4aћŒa)MњГе„пЈІЭ!ЎNќA~1‡pYінЭЦhТƒвŠ-­жГЕWщыUщcЉ–5gЙj.У‘Кй=’M™а‹…?%\IЕZЛG8S:ІІЇ>„›%p 0›^зXiЪ(mGSђs—˜юЏcѓчЭЉЯіOзFI;kмHн3O§7o%–№аyщсуЌ|0cŽг…] б-­ММ†d}“ъЩ0[rъНЈiТ[и/]ЋHBtGЇ`IГЈТy‚їЄxVк рŸuҘГнёXЖ5˜xБ GqЏ$Ф.Рщ„;еVъt‹nџe[#tтс-ИѕLіџ<§юяz|vўюЬЫх{”FЫсФfт_ђыJ2J†Џцяm’4П6эЋdœА˜ч”ЦЕZіaNк…Т_%ЦšІfTь†К•y=Юwв{2nя№aЄѕм•УЇ0Ј‹Г}юЏ9}їVh8MкŽы;6_ЭLпDјNIя‡[KG\‰щэЉINR;нЗTЦ[Џ”?_™`qmUе˜vŽІГŒФь- пдЮ з‘С тЁŒ8™уzГй›yЗэ‚.x™Пэ@г+йєаMOЯ U:вŽ“”€Й„’роvДMбy@aщ›,m>АрnЛ"…ў-žz(ѓш#эЙ%Wз NМ„>§Xoucќз&l&­ўеђ”Ћqю›q}њNмЁŽyf' -,­†Vœжap:šєgHrіјWKц™KȘА‰š†šЌPS—ЦЇ‰3ѓg-Twœ› А=ХWЕg№9Щ5mMЎо’}4Y КЂэoтŽuh:@ nК Op=ƒзи$юšЏч єЭЯа›тKR@a)tзqЅљaH~=ƒъEzыо=ѓ|1—е9YГ(cЗwbе?Вќщнпшй[xЛ7с,т›Yи-K‹F[жђт/еpКП”BQ2ѓ…?dƒaЉ)еЏюRнZ{џ˜л”Ы№T~=7СТ•j˜пRУ+p§ыšž*%Јт&ЊA-\ІšwМ„‚чvaќql {v>N+OfЕэyј5ЊoЇ 7gEЅ з)CiъgБДьSчџjЄКTўў|тЇuП_ §б[HšщtнRЗЬџќ8еп•Vѕ$Т~ФЕ"/Х1З1}Ÿ'4o<И~R‡JNЫ“ВЇИ3ЗGƒкN№]т\m+1.ЬВШ›х”2vЌуЁдv“ …&—G`3qщdaжŒM(&h/эжЗWПњ'Ї˜{R?тзВеzaz––s§YlќY†.+йДзе­7ˆЧnЂщщtј5ТЅљ™ц~‘‚Й‹yІ(YьъЌvq:—жyЩ” š$ьWg{‡д§Юг[›Р_дсgS™Ц ыщћ%]2Я+oёF3aќ+?јЩкь1qUтОљ§y„aYW:>ЫXЈrp:ьіL“ЎŠ'S,˜€ЉћdSCЉa WSНЃE-ГGЫз Ј\)aДg"ХЉum U366h/Ч]R— $Єy{ekћ2л~–№јтЧЊ8–ЕOЂз4Н%1юФВэжЌ‚џDв”ЖЅЈJ'B96ƒtЮф/Ы]jqЋ4~Z0:Й[кфСwЭ<хй_h”ќ‰ъщ Мон„Oп›Y•,lj2NIoЉЏЋФ ѓ^•ВnY78ƒд š%длЦЇЃ|žVЊŸVГл NР§pPЌzУZОw;ІЌтШ|]I;fхѓщкBŠ—Гš;_bТЕе˜МŸі8эягєiюџ[ŸбХР?ЦВ'Аќ@ў5.Ндd8W›0ЎCхрќщ„сЇЋ яkX”™ълњ~Wу†ъУTwВ„ьaЌY›MкzAЭpЉn …XЗрг$Їi…АšFвњž*˜Й#Ыˆ†Žд‡ЦYцŸ<їOт ЕXN~K‡БЊJY@ђu\–ЪўкмHХD\”ЧnHИ•Gz)їдљуoЅQЇtЫ=`ž=‰#‰WѓіŽMƒпkЏ.aˆЛ лЅдбНїТЏ)Ц~œкА^ђЫДс›чIВK}М{Б+еэДŸaЩ‘ЙPJ №‰КI)Е‹њЖ­ЈR(RДххї3=Mb8]-XЏ5?o}[Oе]?BЕ љF84ƒбrшo8#™ЗOОЭіƒДЌЃ†ЃS‚ЗъST)ЮcвB8 VГ€Яэ0‹SДЗ€’тцZqHоХфЖіVГЅЉkЋ‡™бКgž&$ЅI;Э,>(YGЋв.tДДMЗJрёOд Ю|э§VЭxГЎ­S‰%s,Gб;Зй,a~/%~/JуYФsˆ­y\ъ|E‰ЩJЃ^AБЮcў‡yЃ.sЌ…Kq•=iйЗЎэ„Єє+3ЅХr“$NДJшЩk WžЯЦППЋ!ЮЄZЮјД46a‹t­pщKI№•%ja.Г;єЦiTnЇџЃєнМыŸЭz™щп |ЃюЭr2{a?*Ѕж0)ЮџH+h0ХRv‰rђ;btы-Ху‰Ѕwž”Џomjw8O-SWEЛmдН/S] %кoТЦФciќ'#v`д[є^—!hМPћ]hqД 6юХ№BВ*.aХ;йё0*=лчЈ7ЫIYбжУfTюdўЋЬп…9ПfЪС,X†тДьоЈ“ &Оž• Ь с/ ыQСži[ЙАјKЮаЅЛўљмQЬ:‰А@тш9кл(дИЁ0КЃR'­• ќ„pˆšŸj’іfј ^'џ?:Љёа–šnЉ<ˆkюV‹ЖЌР—mѕGŸ|Д=ЭвwВХѕЌWe•сєŒ\ЦыЛш6КПћЏ„›“œлБ#быщ_ucцŒbцнLљЯ}'>ЦЫS™DЂ§БлK{ygOтT7БшТZ uoч9Ÿ•Єя‰y€п–в—mDмЅ›vТ?’*_K;‹нђDVЕЯSГƒ^ѕ%œ-Mюe ˆnОdˆ;-mЯmYЦод~'*CxЫц мЋ&ЄП!1я\ь'mfњьŸІс|ж=˜§ЗfЃKаˆХ‚ЇkЦтБёls<9‹[VcспЧч>ч1lЗ1 “Wџуи uПѓœEх/ыaЕtІ}%гљ0э‘~‹ЃёФУ‰Я$шFМ—АYr>†q„Ёj*mЧTlAŠx,ЏПOѕ-mцџpЎŽЅЕi'Щ(ЅМур ЊЛ~-;@[ђ=Ÿ•ќ_MЉOaHКGУylјIŽ~šБує›ѓ‰Vј$ŸžЪа\UeСzЉЏс9)_щтщx"є€КgžVтOГіžвGSBuМ4рGwёћiв†I‚нЁФa­фx‹?Эп™›Э№ЊMPДFЭ6TІ& йВЋЖ#Ў2N2hN',•Ћa”жrЇЋЎzЄп…jiOˆgр%–§GХио‹Љ§_ Mњ{>Ф›‡sыЄфˆG'S……’жz сlЕЃl‰Ш“Џ[‰лІ]JЋ$§oGјHэuЧ$жFЈ.#qМdзiNЧMМ)Т Š­ sЅнЈŽЦњ]ЉЏšМ„И§nfя_БЦxП2ЌЦаcйяXžY‹‰Уq5БšЧД1яТПJ˜эъ!–cДlЄД2—цќбвЪэЎ…’Kт!i‹ЁНЕГž™Сљ:Ъn‹f@Б{ўЌ”:ZNыЃ-ўN,b•ƒ$ЯzсSWI‘e~хUЕƒЎ†ŸБдxvџ›”х§NчВьJl9˜?~‰№і‹ё’§Щˆњгю›ь^`ўИф9œерЅЖhієЮ~џбdЏhнŒтйг<§2FЗhKЙо^rЛšхјЖ„ьG‚edмŠ9SЏЋ}vu5щgцˆ#ЈќQђН•ГE!A#су4ŒfУ§0AВ:ЈџЃl8ЋП&йІЖg‘Д.eв…%bчy9йŠ$„§х?ФСYЅоR—ц№O)јьQЊOHЛUЛЅPыHђШGЄ<Цat›%ЯАдЩ8$‡ьdпV8PrДJ@єЕ7щзSПЏkk<•ЕС4Šhќ;Ы<-сЮˆQ Й™щчєuгRПУчЅнw іўН.Ј{ц‰’с%IEп•j_Њы1{ ѓзъњч}_ЁџeФѓгoЫАZOR(љŠ&^ЂX*пЃ5{K•О„Ё–дЃKŠ•/-аЧрк~a5Ц*ўыэгЕУЏT?GЕТ пfОј„cѓПŒNУTў—ш“є§ЋТАI­зы Нi_ЪО9’“ї )YзіI^ь42ЕŽzna.)Ђ…ЁЬxˆ9/HЕ:ЁЯ3ш;иE’?J”^ Д’оwS)еєy&Г@œ•œŒaMIл*У}Ы8є’ъUќsГл ЗЅ’Wо чЉierьzšGЬ№эвА3ЊŽт3пущ$г˜VоŒŸпШо]}i”t\5i—cЉК~*еf]ч‰Юд3ъhIЈ\J[Cx€9ЬŸзѕЯf№ *7г8/ƒЖЊ%Њ.–ЦКЇщOѕuЩ–4V–—•ŽМййoГВšb‚іЊePГ? Эј—хзУsЦHŒГwfњLэyЗ‹ш$Žіџ&…“Єb)uёЅF‹я,ЧЋgAы^`ў)ёS))ЄoQь†ДL=šYыњї 2р”\2ОI<]тјБŸ–VBщ$Љ]єAнI5 Гq:Х,ДчЃ&\Oј’š‘Бc2Љ>jТt“T—ъйtmyi•5хпо‘Д1НЄВЇ™Ьо/t›”-l%iCЈЫrђNћк# sѕ{ФC0„ъXI#šIx™YпK0еЂ‹ŒЂ#OBкТmГќ+R]Cb’9IЈm—ГдЮнЦє}R$EAМЋжй№ I#œ›\ХшќŒхзбџUЏ…]—bЕЩї{ wI‘нноwtеk’\rьVјLТ›+ЭЧФž5еѓck9]FqсЫj Б:Ћ2jjъХ|іA ŒлKЋi‘ћЇ B№ е–Р%ou šЊ?dс0ZЛIhдЗ>W$WЦК/ЏНAА^.!%ШО­82U—б(˜жЄ8DM}_Vmї(ћхГ~‹XžчЭ ™ч:ЬJ!7 _VKХВЌЄѕƒ&ыдSЈћыˆGќЌЄyuCн3ЯLЊї&‹l1I[щЦА"с1fюЩТ‹Є TаR_`Ш›ДЮЪ‚э˜,—ь с}GIщSЪуЄЂНЁЊ Їе>‹kSљŒ6ыhБ0пЁTЖ 6@{ђ‘jQ+вњЃќzbЪ>‡ЗИ-Ыж‰рUтгYЦ\V-ƒˆмп=kЊ{цЉJщџџAЕмъЇхxŸ0щГЬмuЃ0ъhЩ#~)FQ]]BюЯIшp‘Жмya_5Ф_)ядяJ/KFЫђW“ќ19 jёciWkЭ–ц­дрѕQЏS№ѓZ?ЋЋKFЫ*•pџі›%JПN9уЮTЗ ДЄyŒ9HИФ’SеQ+ЛјL~knЏ|ŽIЃЛљ§LЦ|‘3iк–№ЌvщSтЪљHЫп IxГЄ<5Њ­†f‹&ВЌc$GP-™y*сФl`œ–z~ЉЦгЊцi˜ђхZŸуЧ$сёƒDMj)gF{ЇШ_ћJбe4Щƒѕ–ф€Žюв(З!/яЧТOвїŠЮ›Y~CЯуэЃr„B=НEЛˆХјy)§BФкM’Жз„ЃsЌTyџœ\В*um5ЏWЫ.1т%Щ‰к„э2@МLlTŸŠЅ|Ў.г@|Ј€7ъйRЭжЛџiїЬѓbT•ъ2K„yМq>ѓŸьZ9YюдTЈ`ТЕ#Єlи‹ЯЏ\яwњейRСе9јХуjL3EŠу.удыѓ+wlkеe%иЧBьžУZЪнь~ТrџFwјэ…zI qЩbп1CHЁЧr^їцrЂƒЕДeя gfг|B–aў5]WZсѓ й›Ъm9ЄuїмжYpЋЊѕъталѕ†сcTjудp0ё;щYl@Б‹щ,KН|v6еR]oN&x цї’„Щ˜КЏ%n’2šЋ6VлЉпєŽvкž gПŒЇ%лЩw )cХ–М4€yъ̘ †ŽgшIЎ~=СDЕ$МPXI[ЖЮ0,{дЫ"$гЕЯНWтЇЫЗ”@іUЌ›„@гяУS„бj>АКЮЎ>Sеƒ’Д КёAЁпR]žЪеи0)+q&Ёa:с~‹/еАъЙРЖТFФ5ВтГlJ~ŽХХT6“в%wC=3v|нWлф‡Э’яЅиt2}Fuодj{3xцП–v…ЖЮ”;IРRM„ ххyџќVWR\І6щгŸuLХђг:ЋuЬVд›%їЧч(Sѓ&/.•Z7‘яkъИXd<њ‰Фq:Ћ;бŽКgžC$с$ ЈUj_%UвЄОx$ ыК€п1b oЭ‘œoНДOKRТ дНо^[Дj\ŸЪк4Њт\Тлj і‘кчхщmЬjVыхЈœЋ–_yWŠ­д„їw†ђОЁМуЦљ„э;|V&ГmЩРPу)KEх[OИ"яЙ>CX '№D•љЇ3ф'ЗЕЬэ,џ6Я|™ЪјMЎU:0ЗЕМЈЗ4з›Ю_‘ŒљГъЮђЉ‚5)ЦHjxЬ2еъкЊЗœЮ’ŠццЯтuTгfнŽсrџ~9ЫџЋє4ёй1Y-ѓйђЉпm= Щ<ёj)з№sФЁž‘Sв†;“О4ŒIџУ2Ѓ№ЕЮлZїЧмН6szіШPШœˆ)œ$хЮЩйеУЧеЂ-2ОИнNrZ~уFЊуrfжЮ0ƒщЗa5Ц,­жѕm=Ёќ TзOсEяЗ ПnЉ)EюZ†ъўy,š3>ъKyœцZBFBкŠЭъ% Ÿцї#ёр4ШЭпуБыXkяЎ­лЋяAП‡™§Т.’§ІlkrV•cК_1P­\т*Rёљ’ъkO”4ОЎ­~9,У]УгЩ oŽT№ Е-kOдЏИЇЅнщƒЖѓфd]qnVDЪ!ћ3ўJм'х ш*CI=Г0ф‰)кчЎ+э2ГR(ёгGгђНЛUYћ†>Юф+еJ6—mЭгW[рLiЧ9™тCкђђјЎTцАЌ91Sћ0’…кЙт‡‰eТЩчQЃѓяHЖЋvVы*ѕRЋЋ^Oх;“8ыОЉю™чкфЂЯI‰Љ{ЉY!ы’EЧЗ?‘…eР';onшЅŒ§#/ЕR=BТл–Y*fj/Ј•[g/)ЗL TŸ‘PŒmёш§’БRЩ\ЭЭцYК;HАжyRZ”YИ0gаš))oI‚c2EМяш&l“ћИЉ4о“Е7ЬіК˜%ŽЪžыUЅ ŸjЩЂГэМѕЯoЫц›фˆФХPИ• 'qлŽ,8GI–ъѓSдvžiкKeЬ;)ё­  щГ№-ЉШйТ‘ 2Ђ9>C{gj™$3ЗeНь ’'ўxт•љ~нЏоgЯЂz%ехЫJGњСRjтЙj‰Љz@=;ЖFJІњЛЕемŽs§вшCe0lђXч ‡зйњvЮНžy+$ьMœGx&яs%nwТздj‚Nг>щA}КиHчxL%nЮƒГl6–y Їъ:јяlСEzT3ы}E#ˆPй–b'Щ_dёl)љggх7;а;‡Ё–ЦСегЭк1ѕЂe Ц•Ъ„.>Œхb­‚ћў”ђј…е$лУЬмV ёK„оCьNё[5ŸеB‹ю$ѕЦЩkjѓ‰JЕњJщт—F• Ÿ:КUFЈЛџ QiK[UrŽтuЦдщ ќз“МЬ=wO”ѕ+vvБъ­ц__чЭгYѕч8~ёЭ5ьЮVгyhЭ“r[s+ЏЈV@d*•'3Х„AЉdb›\SЊп%ѕбŠК[ѕY*ЏFцнѓ.ŠoЋav;ЖѕAЃŽ–є(-МrёЕoАфВdT/IN3kцЂЅ†д[ћфN1g(ЌЮ*Eч;_уgицd~ЙЭi/ƒ”4ДюzFKeЏ—ЫлюЯДЩDХЫRЖбІќlѕžѓŽLёЁм昪…UЮIƒf6Х•„{Є•зб№A ‹‰e rw fЖ(]§іЇЁГLЉГXі!жz”Оk)юЬ*bЬТю0эw€ЁuзЗH‰&3UAŽD Їф0’Щ88FћЄпUэуЖž”ъXхОV?ŽуЉўLЪКоЯћŠfЇP=Žx*fR\ЕзYRњРѕ{жTЯ’;ѕV‹3П1ПЅ<ƒ[Ј…s\CЫPžРФЙЕŒp‹Ѓ>уиє<|!EЉ|FвМf$U˜:ІOЖzvLХRПу]ЁMkеAZЇHUmЖ”„фBJUцѕ)рњуђFм@М Ÿ’Ш5тuт%I)QЭVў-ѓи~]rёtW]NO˜ЇЬV:лЂ(Г)кWп{8€ мP7Ьѓ*[џˆ YИn-!nNЬў.ыS йpZБЙ”ЕОjK=-TЋ ЅМЩх.68Їљ”t$­&еЉЊж§ЖьsiЯњ RЁ}&дgд№щ}ЉNбЃŠю™чОьЯZ˜еЖ’‰‹CщMЧIЬыУ3RnэЮ(ŒeХ'XћО%Ёјвк3хыTЫtОГвыbgщМn•В˜nЏ3 ЌviїšY{Ћкп•ТѓВр]ЦЉ'!5KЧц‘yJ™pИЄU–їЫyЌ'b‹ю›ъžy>NхИ?E[Z6н0ќ>ЫЅYћm)КѓTМЭCŸхэ'Xњ‹7=ј4Ж}‰яЇЁL8@šиёWК#HZд*9Hў^(ыŠЮУЪRљŸ2Ы<‹ж-л*pеђѕ B™tNveLг#Сё}EЯїHЉkт$\AјКZ Э– ЇЧж`)nыЌе0т7„oJВD…pTFЂ5%‡чŒп1ўŒUюŒњ]Яf{0єf])UnЦЏГGН9wh–šРл fаы—„ОXf:]>GV •ќ2Т#jvœЉкУP‹КЖњoЏЉєе…Фуѕ(Щбћ‰т ЩК\}/і'>#-ВA_ДЕ­’АLж^BŠ%ЏЏЭЄ_\™ЌФцcЦЃ<жк5ѓР УйdgnJУнвЮ№’4бMRФЊZкл2вЁЄzЭщЙюГ чУ„ѕг3Љ&a9|Fћš mЃЊНеz€…к8цћŠJЖcгd)i‡І‘ёKШЮгЈ&ч””…ЯАJэ­ъD”*lУь№р`^ЫŠ/vоќШАѕЭмјIVVР~uїёЮt? вnžT”hŸ 3CZУъRНЭR.ЫnˆИ‡ДEяOqІ$4–G\GЋuМcЋžђ<ЖйХ"ё|т– ѓФ/яр ѕѕЖ*эПъ+сV’€§:пЅ-ЕЮbЉз'YяV~Œ7Ѕ8лЂPдqк\ qgтЯвЕІь_;J šбZїЛњvdаўŸђѓO њВ8bUЉ˜\i8ћ 2M™9ч_nЭв‘ЕАgMuПѓмLМ‚jТ2Ÿ№уВбЦекŠўLМ†џЦопаe8טYlАЏ},'-Ј• к[ŒRKКW%šэ:-RмжюjжфФVR}Цї‰Y~kMїЋ-%Ah–ф  —иt§пЂгЈ~"/œ{(ЖS+{йя5е=ѓє’&сЧhНJ\)™ѕUЅЃd5ЕY9яN8Š–п№и†<ѕыtХНў$iАIчфъФэЄI\+сiŒ счМp(ПT+™е­q0k}ŽЧ‡вp,~†’еaвЮВBЭ*Jюt=цЕ‚kђuUЊmБAў~•АЇTжБ9ѕ%дЇ.кЗ/”2Њ~У‹ mю—Њ‘4ЬpXЪћъ–;КgžзЄѓqˆZ=яy~YŸЅтqтmщaМЩд<љqцПIџх:ПЭъ+Айž<ЖТб†uSG+HPд™„yЧЅk-ј2a;ЕќЪs:<зTэ-рoJI‹Zёќ1П"•Ћ\GM–ыэƒщ]/УЋK'rН]чNЕЄщОЉюц§Г…yˆ$ѓьа€э2Kдk)U5ьpAXŽЧžчљ ир/пg@o6Θ?яЫфOH™4Јe}GьEхќќbRЦјЌ'1Шаl*žŸeE-рѕЊљeФ?фы9р§Еrѓu_ъ§HЅЌkЫHТqЉе–в%z3)—Jž&ХM§œтdipчIu›~І–šэ-э4Б†{xj­Цнмj§iЌyЇwГ”CІc*–RИkLUeQ‘ ВІЖiz–№-BY\ЎФщv0УЗЉћXWЊCкu†Hоћ˜жџHѕ1Њ+K…юfф1~RJ„5Jћ4Ц]PЯŒ„НЅЃkіЄ2Cв\ІR<'Ѕ8™–n\|U К9p# Fsџљьњ:ЫЌаљmVšРІ-мWа<›тGRбв4а1Щb}bЫЇЉ~,}7Ю ќтякr ‡­г{mvЁ7,šŠЅ\qе јўНŸЬџu X*ЁЊ_ЩЏ›п•тмœRЇъњ;/а[Ъ<‘$N­ЧУђЩЉ6–ЖСПPœDУVDuRŠš0+љјТ#в‘ўђ0іьи ЙІтФќ^%ЉуЧгЕ>„}лцзкyМУŽ4oТп6c›Пu-а/Е5ўOlХœйi2УJк3@ЧЄп?Tƒ–ў’ъ'ѓѕмu.—ьSй{м.Ы€WвьŒ_ОЦ">Мї=ѕХƒФ]ѓNнJѕ( AаBј‚”m­ д3KhІсW’€›гЉ„qjлЂН?lКк'э$kwHз–Ю№Бщu"сeыђ%вЎD0~аЈQ{oњхвNŽИcк•КL0YзLзtŸ”=сBщ:Ym@;жA/‹|D<‘мHšзJщnг7чяАцђ]ћс>є$[Oчѕыh~‰Ъ%уN$ќ‚т,mЅ‘ТI’ыО”w:ј^B )вЖ]ІЗghI.h6–„ЦооЊю}C%дЄП4%и­~Мў&Зы†КežъХДЎ–kc}†UЅЭ)§лrќQ38‘˜ъеZ;Б/vІr*зЯч џaЙKtz~'ГлDўК>S^‘Lч$_кЧЈ MзBЎT\Kk'лR[pл\‹–…ЌWC?“UT’|ГAъg.Uвљ 1а$тЏ№iт'qdіљ•ВЮЕ0Я•LкSёI*y{oQ\@ёjЪЁwr)„qjкN_Љ,…фd^<Ÿ;[8 o№5Ж§>нСпЧgЌq ЮъP_ДzXн=>Fё]m;KИ.…пДYР'kЏYДh5Џр тjЩ5уўїv.—(]+Ё Žшќ+ё*Њ#ЉœMБ7с)™У Еl##МБъj†eS‚‚жьз )6 ž эGP”Q 9ѓWщkj§ К”=жbш RœатnмЛ9sЫЃЅ# Ею™єУWsъ)YTёOТiгєK˜нАЕš{тн”XŸ!Ї0єkП‹v–UfшJєњD7_Ќ/P2‚јЗ:дцŠз2мf‰X˜Г9л(ЕмШхCєO1п 7•[ЕУЗ$ЌYђˆяBx ГЈ|‰NfќWиюеьA_ пdыXГрЁOHYУО"7кŽЪВ&h}ђQжJЎŠъЯR?Т ТЎ9„h.~JёЕT,S,ъLэ‚Ч9сdІ’ђџ)ЎФрXs№;ќa}†Њ›dhЦЉЗ5јф)Ž“|Z‹ k uPдьеЎ”хgRl& Ў9ba˜Э‡ЇaЏNю=AW№‰xhЊs ‡J€ІІдй№"с‰ВjоŽС‡ж.‡Rэ%UлYH8xMўэ4ŠЏZЅ-Мок5Гп;œЋџ8•&”ђošвSn#-!цYё9OPЭёпfIѕЉ6R Ј›k‘Lэmљ@Е<Жb ЋмЕ?—JmuFНveЇ37G2 -BŸ жК''bj‘1Ќ f9mе^ЬўЗЖZ@ѕ‡кА;ёbТЕЉ/•%б-№я†„ŒOчъЃ%оiЂчЧжЊem‚&ТgЉќC:[)n”В†езUЛ#кПŽ‡2eWпб5ѓРR_cЯSxјѕ|ФeФ_(aЂ%ldЎТмKr;\“ЪХe4-МЮџeFкн„фW‹ћтяK~ўўЃє$ёЄЮЖ!BќІДјчИ­%ЅmХ[‰w6­“oHўЅѓѓЮђ3‰Б>'Ѕdщ›> ЄЇNX чВ`юќ0/ЌЭjOwў }#;~Ÿ+.с_В­lЋћgR&9Ј$UќДЖPфА5с“jѕEыБахWЂw— šяU2яWS`СЌгxѕXцDж˜Ч№oвpNsНk*­С’lx­TЫ5V§aђЖхЛюІЉ.)6JpЭœћ/Н)Љцѕwe=‡(•Ўў†ZvѕЫ{iƒ=„Е$йiG^Й€ыюхЄnžcх'јшС<} сAmВMиШЂeKzFJЁR>іc9nЋIš—ЦмЮpЕњЂe;яЁgсЉќхPЮУЫч Я^ьзФзЎfєЎ–щН 2ЊЄФm—иэ‚8˜цMллb(`љ@гŽєўЖ]ьзжЁїіTъŠ”yGэ ‚ѕIŸcнgU)чЫЪљКEƒДCLІђ<ляЯofБдV]їљŸїr№ М§ ŠЃ0т˜Œг™!эЧЈ-‰Ž2O}жЏ>Rj5кr y^›ая\дŸ]ЇQќyЩЮ]ѕxЎ]™#3sё”кg}oeŸ]љХnŒјžчЪщ)НєqŽкgnЫ‹zЕнЕ™xѓСєCuQ7Жњ7юyА‘G—gгu;=шцІђс”<и3г _WЫ}|LЏ)Z4-ыЕъШRBЧHp›yv=ўњI>л ѓЌ>НћqСЯ‰?MZTѕEI@nХс4Ќ!%chЦСйRЊѕГыЊU­TeL+Ю‡ЕэЊёbœЛd'ЎЄзІ№уG˜qЯЂŸ-мƒc•јфЈ%ПљХЏP™Dы4МJё‰ЯЫ?фЦ> Ч3ьы?іАoАымМ<Џ~‰ЦЕЕ'1E{йЋO{ЁО2Й6Xсs’OЇЗdC(Уub’CоўVŠ4X’GGx„•Nbјг‹&Љ/Љa.cЇцкb,С›ЃЅ%%Ёe…чњЁ™ъ] ХаЕY,Uїх‰yєЗT;7Е4+)Ь%ь†sfЎвЄ?SћИ­ЂNЅЩџе–_Й5SёsnOqXj7œХэцž‡иKзДевьА3П^7‡п|BЪЏ|œД“”ЧхŒіƒъs57Ї|бЄя…Rсм8ƒаЪ=ММ*еiк#—-s9ћ]ЦE‹Ћ |+|›н/Їa­wиpwtПЫ„Šф№}Vэxš›ќ\ЭгЉ~JgB ДвмФ+ы4ђШSЬќ+ЃNЖhBлDЯPНšpF ГЉ–љ]fЅ№п6cЬџы€шЁиКZ–Ј&!Л:Bк!>У+pгŠlё/Fv‘y}аMьіЗ]ЭЫ/PœB–ёai мEБ—š™НЃЌw€ќt*ЏЄ>™‘ь[wMKy†–оLJEї”Fќ”/\Р‹тіоR ŒLknЬЉ;АсЌД –$Эл‡ћЧбђ•ЄёЦДс—CюІщSК–=ЯјМО%FЎЯЕgяMy#ѓз;F“bl˜cCŒБazў›cуblœcуд{ѕБї 1іcŸ1іщcŸ>]ќ5Ци{Vў›cЏ-c;=Ц;пˆнв‚ѕb<ђ•ћЯŒБпE1іяcПљ1і›cПщ1іп3ЦўM1іŸcџЗbје-у с1у A]џ М0Цб‹ёЂucЌnг§ѓМSj™угb<ї—1~vRŒюуЩЯЧxчm16oЗфяcŒ/nу–ћХ8ъ‘G‹qtпќз;Цбп‰qфъ16ьЃ†Nј §]ЪwŽcР‹Ьў<7ЎХО?–ь‹R3HрЁ№ЙКэ?K2ж&Ю#ќF‚4Ю&м—вЯХМњC?эk элђ0Џ}‹ жлŸЁ]Јю}gяПpїŸyљ`тb,рвsi к_Ь7c;Šyj‰ ЪTСuОРќ‹Йh2ыпЬ&suЖ/џ[д8Е2Ж/3ЏJ1љўХ OfНыцЁЙgђЋ^Й<ƒџыƒ!Yтч/OemЉц}ЇЏчŸ_dўёY"w.wlЬрЮГќƒ†_ўІfгщ эФкŒ„am ЮX‘<ы‘ЌОГа˜Caъш —ВТ\1›MКIѕбКG.ЫWЄВŠ”фЩbž‹dSЪ†Ы0HВ3ѕ’Њ.•1?9n+Ќ$х(ќ% _gЧл8ыV>LJ†№~Ђ?0џ.Ц/f2ћЉXнuc4š–S™ѕ•яtзр§ѓљдt^Y>3ߘПsСчиѓе.З'ХТб$cньjЈЂзOZЕ6amјр1љћ›Q,+Љёй 6NЋёЅk8эs љuз]љн\NР”HQњЂF%Ї_лГ”ivKЊЯ VZРзеf‚(&уœa­Ќ3QћŒЋxуB.ћ!“Я'/eЁoб>‰SйЫВЇogЭы)šє„›ЕэŒaFnkažŒŽI эЂKуWдЬќЛJ9sсћp?сWjЧф]F ЦщФ\ >ь‘їбiЬТј,ш—šи3ys^ШїЈЅB›ППUB!TОЫ‚/аВ!zФ<О‚ћ‡жПГ>оџ.Ю}–бGіЄI{тќ,Нч2‹lЕAЪ‡\ЎТс‡cэ4Ас;„ЉЅL™‘оSlЪюЇsт luLђЭTЧ1a6?о†KZ™ПMVкfрЃЛЉХЇЯV+щd1ЯUo‰žŸŽ%?ЪО:ХA^ЈФmЯдљъo!–Ў›й„…љ(š#х­>€АЁZјЮќаJœЧr!fЃчє4ЮсЊМыe,w=ja*Г~ѕЧоTџФ‚iоPW–ф:zіiŽй€лкId‹†a№Н[љќƒгж=э!iMНёCB‰р/Ј)ЫUиD8ŽPж6ŸCи)k3ѓˆ_KэmДО#iйŠ7FpџKЬ8ƒ†циБжќлЅЕAЁ–wЪ[˜и‘ВЅЙєУЪyQ ЫЬ№@>JЪЖfщММ@Й`JDС@ŠБRyЪљ8“тЕ3[ч2aШ.ž2‡P%с˜•Ц(CQ†ƒ—muNАBђ`ЖМ™Њ UzP)wђlЮјnчуeœœъІVŽЇu;тФЁ’Bб3:˜GрЈс<иЉMН\яг9цENžЫRЈхцzїTHОЅ ­ЖOH9vК3ЖUД;У’еК{%X…вPYцъlћЏ—Щ*RоУхы(–‘ŒxUщ(жE[%­lk)ІЈ"•ShU+Ђ[ек)•fЊV+ŸcvЁО' 66Џ%nEe•kЉž‚Ÿу|] ц‹в3МљWОv1W@ѕєЮОиƒЏОзѓХ9сeЦ|YЛwLННукh/Gѕ’^…6ыp8MзrMgmRєBЃФ`;Юеѓњ[§k’0gЩїћwаЧњЖb†’єЩх†HGњл’МtЏ„е™љoŒ%#yy ОЕ€ЋіЄљєЎОм“јР!єщЭ~kђе*уізCя?N3œП*–`[YўzзT&~X"дrнЮWЗрЁ hэЏkлћ;Ёт\Ж8лџNѓЋ]р=ўћїОћ›Й>WЖВђя„#ўЄi+OчДЇй{+–њ &]ћџˆтx}).}šѓїс­эпЩЏџxцИя^›мqcFбЇGnЕџвџ%šб‹?ЏРOіхїџdк;EохЮБтІьБ,_‘-Ÿ Я­яЎНџв{OsяуoїёчЙуV&ќ|˜05—тKЇsѓнЬ+ˆїџчЯёџўе§эРф;ЙіpП€К PщйЬ/9&ъSАl+\ЭoБѓWйт†­"EЄ—,0}%шRпwsЗџREI1SвŽо–Ь…ёж~м5™ЌЫ3?т&Ў—lЮяžо їXњ^Э№SYz<ыMgН-ЙKпHПcXg[њmD<ѓk„? д/йЬЇпЬЋ'2ыv&<Шм/ђФёŒ?‡ЗЊLП‡жƒДO1њЎщНж–і зЁє;†шѕЉTШЈЯ Š?ЉE‹џ—ў=*0žЪяhюKх0Z ЊЏВ`Z.С_пЋ›џ?Сущ€Ї`%tEXtdate:create2016-04-10T10:20:08+02:00:УЕ%tEXtdate:modify2016-04-10T10:20:08+02:00KžЅ tEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PKы™GGаaд‘‘'virtualtouchpad/html/img/fullscreen.svg PKы™GGсhЦжK„K„(virtualtouchpad/html/img/icon196x196.png‰PNG  IHDRУФиук )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр ўtфШyЦIDATxкэнw˜\U§?№знє^H#Нї^)"Н‰БаUŠ(EЅˆ€ Š *]DŠЉвAz %даBzп”Э–™ћћумЛsgvТЮ„€_ф§<ћ$;{чžsЯ=хSпŸШИ€hбПˆњ3ф.FіgР#lИн6Ѕѓ œЪр 8гџ }]Š%ƒхБ?у&1{ђы1Ѓ?o_ХЌ§ј№ &oO<xёћИѕ‹юdєп›Бо0FlСК3Xё z/ гхє§u’›@ч:Х(4џwњКKн№" ЮЅeтеi9ˆy[гв™iя№юпyѓ=о\——Ў щЌ/К“_аbЈ_†Яeф,Vў*Ћ?ЫŠ`PЃї€/њС—тџ^bz/Цwa|#oўŽЗпсУ#˜pя|јEtтs^ }Wb…1ЌКmРъgГЮх 9џ‹xИЅјŸХМћoоЩ;[ёаAŒЫѓёBšvљМ­ћ|nл§H†ьЧv?ушЃ8ц,ЖШш7щЙ'†}^ДџѓˆБ,bVЉcулиК}‡Грrц7аrљЇ–tУKђdxœмštЩWneџїиrƒ tLєЧ/n<—тџ#љ`чXњѓЅћГ?щФшз?ыl^Ь“!кŒž?bЭ§8эЖэFЯџх•Й_Z|ќ7ПЯхы№ё4њ5œыGџ.ь;Š7ж 1Oaњ‡Xњѓх§ЩяЮЬmЙЇ™vЅг xПж™НІеб7pШВГ1Ћш|Qї/h%.ХRT@tн–ghЗЮ3џ@>Z™ІлkКK зnФЪџц№eйg+?/ЩGЊŸKЏЁфКQ7NЗP?€шлtE§Ё87Й8Ђ•жј‹B~ЂПЭФ”Ьп&b.rŸБ<њЭРюHэ 1аК„В€^ф#z S3эLР‚%4fщ=Ч†y™ЯћS8…–_Вp=ќ•…‡гМ*љ-hy“† (мГ„њQ‚gзчЯѓЙљvЦуе|ЋЪ!‰vЄп#w‡}ЬЈ“–D—ыVЇs/КОJзwшёН‘[™њншм—њƒ‰ŽЁћыtКg„ƒ1ъމіW|Й1fЃЅЪ'ыDќ ~D|Щ=Gt/ё7ёфCHЁЫqёОЩ§[CЛбžИ6м+к%њрLЂ_`Еф;yє'jХ>IП шMєgЌЅ'Я/ЦР&їЬ}HєšАА“­žзмL;гаT§l(ALє!ЮCю§“ј&š—Їёяј# _Ёљ!ђнi>йЛ0ыги…Цoљ™ІTЯФќсznz–kЋљF•пы‡ь<Š_^ЪJo}І>ŽЇг7щ2ŠžУше‰О9њŒЂыjш+ьds„]lК№"_^ZN˜ ЩН„;“Яct!њ!V&_ŠцфIЇсIтПупФg‘Л™њ—Ј;тYr]ЈŸAн.DЋ‘л†hЙNtz+b9|ТУД‰ˆЯЄхBђуp*­‡вК=ёлишkŒЭАOВжРВDлBœNЈЎDЛ ‹ЊЙƒ˜џ г–Х 4­ЧєЇ˜ѓ0…Ы˜§3fхi~ ЯQј:N#ў+…‘6&n@W B—ЬГŒ&:8HУц'Ÿзa™ЦЈ9aёѕKЦЃЋPwu"КOЎЋNГ^Њ_хˆкФO“ЉpzGXHМ<ё{Фыаr,3wх™~9-Н(œ€ѓ”Š`еЁ™ysљЯбПяЯ ptGSъг0“­зчЧ§иў КюНXГ7но`а“,г‡^ПЅѓ–t: ‘ыc№‰А›UћЂ›•юH]`-<_„‰—;јКмТР}ёCЖcљчz:Н/ЁўlŒ—ЩІ~D№ЂXE)&З5†­$,А=)\CЫZј€Тїiй—ќн8‘жuiэOќИŽhДАšБ*Q„  yA!ЏfWOu†ьw‡m…o ;rбКфšp!вј‚МАUЋo,Pдчbс„ЛŒh[aЁ Х_Љ;ƒІ™ЬЭ1s_ЫдŸ’џчbќјd$—Ч}ј`ЮЂЎ\д#œЬАЋ9тQŽx—і\œntћЫ\ЦшuяRј3nŽьЉ™СYˆЭ‰N!к9И&ЌKT'ь–Љ ™O^HАі Џ‘Ѕя Y‰СПЃџ,s?CъщПCЇччbЙјlhў€)2s*6dђя™ёц|ЙЯ2чц_Aы)ф~Eд[8С&cЗ2QжKЦЋ#ˆnєšдBUPTp;BA˜фщiТкфІтќdь“…˜л_0ЬW\L“UoФhPдят№NЃёс9s Дќ˜Iї№СLљMуwЄЧ<Ф/рњЌƒ+ЪЏЈднAtъТСЫqќ‡Ќ?ЁІ6#Ђљt;Œa,w].(‚/ ŠдЂХщŽ6’{_Я xЦХДы)єќ§–aеSXћжи>ћ,ю §w‘?žщЋ0ўІœЬјН_ЯдfПЫТFтЉx?шš•нtSй,Шч6J~/VЌƒ”ъЉˆU ЪЭП А3ЙŸ]!:Z1”шNAiЮNђЊхšEУC№flЭ{?cв54ŽСг‹3КwнЮ9kђќФ/–џЕТдЬ}AOГяdж9ГІЖV!zˆ^[Бќ“ ў>fс]СV_пСї#A!Nб OQ†ћ’‚A:Іў:FЯeƒ;Yu,+ЎGsџЃ ъ6cаtN ~–јP&ќ–—їч­nМЗ>ѓ А…Й‚юв5sƒnaМущИ]˜€и9˜Œ­/LЖDЉЕlђ^:šЈ‘ ІЅшЗ(œДY/lVлQWHхщЩ}ЛatWшж%ѓџЛБ5§w`­явѓ.о~“І­… va-ЃЛ~ФО№ъY,< п/Ф2єў7‡єу„+YБІ8ёш1z^ЩŠSщї:]Ž№мcBJxvЇЈжС”^[‡‡)ЌAЗYџE6Лˆ•o mu-ащйZzћПƒќ†,иƒљёо?xѕOМО&“"Кшarf•лЌ Ж Lф… ™юд_'З‹`$ШО›j•фX8™тL›ёkЂхбJ<‡ш8r—%ŽЙY™яVЋјзakтƒYА5уwflšžХM5фі<;Œ~Щ+бМuіЏУ ЙbYЖјнŽЉЅЉюлБR+Ÿ ўќRАЁПоЩK™…‹Щ§,yйу}Fйрє#>ŸТД~‡Ёe­БЌ5›Wbй щљѕZzјП2}O&]Ю{ПтЏѓЮ;ДœGнr—`]эпlAЉЈв"/ўјIф‰ƒОuNŒtУj,jеъгu†DŸ‰жN‡&Ь!:’мpьЇh6mt•JЦ’~LмлѓбъМЕMПЌuЇ§˜ПЭчь9ЬК>ћ—В&ћ\УnЏsб@ŸRK]Я`й#Йu?LІ“LbТ@ј9б‚ƒ-#:>Q”Л%НšMўZъgХз~+mЭjЇВтrС4ћeЧŒнxkcwgRŸlЮєч1ŽмЅјЊЂUЎЪ­N Б бd &e6%К[8]RГlЋъђH˜уШ\|ƒм[иMЏ`/r')Šr„“g’Ђ_фЬ`™[0›ззeТЪ4=TЫЈЕОЭЛ?тИЮ<ћѓлœШ™Х§‚жхŒЏАc];’№лащ4†ЌЦЈЇщ| б9јXeѕ<œ†Ьgгq7Й 'ШФЧ3ьŠыВS76ј:ўЏ%ї§СМgљш*^Й‚зNeЪ+Ь§qз F™ЇzkRAЉЏg!ZKqДbЂo): гяVы5Ю ’@КИfт—дƒНЕ™t­OєЌрЙO§ћ_ЩŒ1Мu#“їЅхНZFlСО\u!oСЛmЂЬtэН+‡\Хя ОvxЯў и>,ї#њ~W№.ІT­ѕ u˜ѕIx]ПСКЫВпcŒо†.рUСНEЬТIAйny‰ПТCГya"sо%О$ЂаNТЩ›}/еЪь=§ ‚7С)˜:иz QЙяŸ^зIXpi,ѕЂ[ЩнBSтdQGƒПЪkLмw~ЪЄ ‚хЉ*Ou~ŸмЩбƒyр0ZЇRbпYуFЖќѕ'c›Њр:КПЦ€nє^{iяЅЌЦжœЪ–уБѕwГegішЯШГщЇ`ХV|Гš[FЋ0ђm†NЄ{)ю3ъз„I–Ж6OаВд›x$б7№uОњЖўхfQ_Г‚Дxh§гOІuѓ–gЮ.D7$н~Й}˜u­Зa:ПFнѓY3ё>ФGeОлЋЂlЄk”|ўCъWfРNЬ}БЈ’vŒQ{ВЮбмиёеЛ8{g6Ўš)ЃяBVњ =n&…ЇpKђ|ЉŒз@є@’я›Y ё)д­Щ‡9ђmжšnW/ў;nњућ№іŒ=—O&ђQц\A§Ыф&cEfщ$ŸљlnxžhŠЂЌ;—hlsк”МH8ошаt˜NŠЌyВAr٘есЌ{џˆhs†ƒe•П0њn†ŽЇџУ‹?V)Z[xw!џ^‘ЇїЅёWDпvўYUм f[ЊTЇNГЫC˜y›n17'ŸѕЬ\;O№*wдF“RЅz~NŒЖгbN#ъCс`&>Ф[gж еŽFaw§™cGEќh пк’еnЋцЋЙf†ќ•.$ЗŠ`uhI:•M›˜N”'кOбДк•ќцєяУі+rhozZМЏТ”kyы^^Мƒ1?eтРбV7‰шћJwš4?Ђš‰;Oщ$ŸЬ б†Š Ї ч­4rВQuŒщ)ГfЂCё …=hэТрПГњVмеЮbш†єнžњъХŠШїeм“мИ5Џ7гиLюЂ_+“š}zHGіyђt'Ÿ„‰щD_E/јї‰&(њ(виД†*кh*ыЯ\\NѓјiцaЬ8&§Ѕ–бx ?ёЋ:іО”Ќцk=`йˆa›у6ŸЎh–ЩwёЩфbжщЦqcБѕеЙїJаК&ПУƒ-<6‚ё›SІ{0•шbЂuщ^ I6еšJЃe ЊW”ы”Šг‰О|#mЖђ!Мм†ŸЁr™јЂSЩF§ŒмšŸbƒX~!]WМœEг Мzџ8ƒwSи†мсŠЇ{+бšиVщ)з+:zžЌВќQ№OхŽфЖ‚А™ЎŸŒeеFацЭД?aЬ9М$…ЏV;ЯŸЦ9+з]CtЊZ ПK—ЇuМŠ%’>LLЁЃйњ/,Зѕ/Њжзp…G™аТеџфЕŸбАcАvИT№Цv&Оžј%GiЎ{’™­ зCilЭЇ!ЩIбјeтЌWzVP,s{•Ег]ЉгЉк1ƒ!Є"ПљУw7MтѕУйщ›lёлРфс?BЄiЕшG—•Yk(Ї№Џ5ЛЗ0ЉвХ8™шЗфnP<нцŽ кЇ!–ЭДї"?SёєќЈuhI;}Њl#ŸєН•о{гыбвCїгбѓuV§m=+ѕЇћЋе~­ЫŸщr‘4—ВЋЮŽШJЪe:€гш:‹5Вљ)tО?ЉКЗ БŽ7vсўгxхIцK| б™™ОL†йLЈ<… “'iZ’№™J“ЭчЊ,ц”џ^/ФJНљЌ%DTžVдQBFZ4H1Є$мlЌЂ:AмhХбДAг–Œ§sіфНУиѕH†D‹ѕё\˜oыcоЋ4ЩИ‹‚ќ­З (“ТЫŠ tZ№DпVф^JEОy*w"ЋдE00d}I ˆыЩШ|і бъžЇDYžЏВ^“Ж;…N IPQUЁащ0њ]ёрЌ3œыWѓЕЁз3М3н†%еHд—ш ЅŠшЬЄу]ё љYЏ•}`Ћ1‚wwHѕя­Љ'OЏХ§ƒћUц?Kќ“$BvВŽgТХДQ‚0_Xдщ)­œ„adŸe†ъXшRЅ:;)’­)Nž…СЌ=YжЮ,‹žP%/Т2!aІџQlд•­nbе}щ~NѕcšХдщмw#wєЄyь+œ4ѓЉ]$cѕЯDцO7–9С’QzгPінOЗyJY gт?фvWКч%NбІЬwg'пЭс &юЮИ!L­К0ТИorыИˆWeХKщГ}5_[і†_в.MXхО–ьАйй?сыпDбћFОq_љ§ЏЋў%>aЦSМr3їnР+9ќ-Ф=YJDж–Ж@х]ЗГ•.8$DЯgž% V1‡kЏИ5WбFњВВ“|бЎ™WvЬn%:БЌ4”ЙМю‰Г№lъЛАСЫl§ыьШ€GЋп,^[Ÿ|7ˆŸљCрь Я“Ц—Ѕ˜ITŸшKщЦв(dМ]ЎНЙНкeЎ0ЩГРеыaœоs.беЩ†г‚Џ2}яТ„ЛЋ}ђсп?Œ˜ѓ&н'SПm5_љ"Ы}MPFг•ЫТ “і%~‹.—ВхЕдФшZъz^СмпpяымоŸёЯSЄтБ;;D0FY^б.иTЉŒŸW=uJіџuф,SщЮ• Q V)kЃœ+Јкv'Ш•Av6ЙјqД‡ЙіiЯвJўVМ™Џќ™mћвoЂЊH‹˜П /ќ“kЦ2}0…U’]xqžiZВI#œЌIПЃэ…МЕm?ѕњ$!<73вšЪў–эdWтпїЁА/цБ}7–пIАbU‰ж“јpWюшСФiд5(•?ћпOќff0Ш-Чiлфх:exыш9увџŽС_ѓŠЛ“л–ш]ESb$$ЈWЋ(—YЗАгЧЫ*Ё„Ь-›ˆs™ЂŸb.Г0&uЫёбkмЖ1ŸЧЁЇяѕЊŸdшў2k=ЬNsя…Lл“К…JєЋХтIФWgњ0=œКЙЃѕЇ8МGНsм–#~<ф‰‹Ућ(,ї]VЋm<'>Щ]aFФ,;­ЌoсЕЬg­ў„§M„ ШNдYЉВ<_eЄќї—”юЬu~!№†6‡ЁŒњ†HЬш.Eб' c^$‡PљgЏ œВŠп/œDЊ8eДˆШ§) œЫ>ЫОЮdЦ^hbР;|ЕЁдЎаЂсє}ŸmГГ^Єpi"†v4fхЯS'ш”Yfот5(<@œО›YфіMТ.ВИ4’ЖЃv:сm‘аѕAКдfВЯЃ5 œжUр[t™ЩШл2ТжŠYO‹xйљЧш?ˆэЮу№‡шџїъ{7ыc?k.aЮPђ3ˆvгБЌ)щSVhС{‰ќš*Б­Dk=Јд:Q­ВјRГѕцЈМЉєбЮжwhгёNƒ  убњї@<ір t9„-Ёї U#šЯЦ—ёю{сtŽЇ –П!џЕВ1{*Qќ;Г454›сы szэ</ЗQ1„ЅїWжЮ<ЅЦ’Vr[-+(5 њХаŠ;UGсOФЇ !ЖGс{ŠЩцzШwШебяlV=.е†#?ШЌэyЁ?/_Cќ Ž'Юу‚hL€ш(Хptb,Š‹Їoђ“}7/……нЖp DГ“vR}#x‰жWКрГ4ьщK­ “ФПJЮооIп†'œЅЧ+FŒv#:N kеёГєO~Вэмšњ уЗcў,ъџЌH гЙьтXШˆKс„B1žтрлhg– ђlt‚ЂCЈ (Б•єЮку<ЅЪrЇƒЃšм‹ш[D—(*}БЪuчЪM•ќPQмk%оћo'ш' 3]ю4….•›ѓЩГTв7+зŒ˜gўТЪБn=Њ4•vj`ЙяАЪЎМ2’жцYе˜_6fѕЩ˜›ГžD‡ •ƒ:3aмлL— хЦвkѓ~М›Qлbш$ШХ#…jЊіЛTЂѕwКƒЁЇ0ъ:rU<Еє`ьJЬ|U ^S˜АѓбN%%v.nд6Љ,'0BџK‘Ez(Q’ллІФІд—•Ј +)БZ?]ˆН„Фѕ /6] 3Њlq‘йJbЄ @<џHўо„O(ќK1,>ЉМЕ*RвЇЪћЬ№oє­qрzшч,ћ]zЌX§+К*ыfЬQA„ŒжT4Ћ,К†^Ѕ1‹ЫЦЌЇр›ЙK‘Ѓg2fпPX>f)*щЋoЄдЌ[Њ_ ŒM’Oъ‰З"КQ˜i†TB_ЭР+YюzWdAы;МГ9 ыoМ…`}йO‘Ћ5œJооHPъKF†јМDІњgrя ё7ГЕ*бЯ•иД&•eмJЪђ СР r!фž|3kЈ.(ўйvВUˆŠ№рВцŸШЭiакЖф>,msЕщSб™ЩX4‘{•цo‡н}Ћž ыMчjЂŽбяdV=‘^13ї#~RАТ%JtєѓЯ8fџ ю+ЬЃжачм3٘ЅѕќК…HЋu0f)hПQVъCSА Ц?&wбWƒцЏD;Ў‡c9†ы&ФjаgѓкіЬ:&T&лсnЂMУ?: тSЕTъйpуž˜DaUЅ”э[“;…ш a—J,cFЋоЋ\.7QиM(г•F…вMбпLuI;н;h'RJЯвc( NЄXX‡’Л0бЙц bW= ярхŸ2ќFFП-„“T~uЌ5gяgофnRЌДtRВ –д˜Е$Еяn)Г§ˆn*Г•TUP%j“ц GOOт]ШЇ^У$/КˆКГбLї§шњ\ѕЗžwЏџˆ™Нi§u; ЇС=IўјЩŠ фNфvжОTlЕ4ї!я7MC,nќуБ$/гэDtбї”DЖVMЅ qйv>LТ;ўЎHьЛЙ‰В%Ђ(Ѕ{Џ„(щЫ;Š!!yќТ№OmфТбіфoхй3Yљ5Vњб5е WЗAЌ81{0wcМ‘<ЫфPЧЎdЬОBєvbі^Rcі…cЦЦVХЊA yэYЪgЈZлbHГ–њVЄ­ЉљФ‘?3ˆIнЯ ЧdЁ ]˜wc?dсг!ќРрd€MЊщЫˆТ3‚\m'–PЂˆjXФK(WФš№SEЁ…x‡№ŒёКТТlФф~ЋШpЖ3MeЋHy;БрHћ˜8чтeЙwђBWOr‡Г 1UќГ2zЄН;O(є˜ŠЏMФћQИšщ[ёюp&4+t5шv.+mKчл(ЬЃюеЄц cіЁ–Тz™1л.ГД0у’ГСл%3fЋ&ЅОVS%'d)Яš”z=Г$Рž"О‰Т>tkЁ[ $С+2!G~waЇKyЮrJ=–„нѓЋJЈду-’ЯSй3epў—bЉWк(№л-œіrцќ$&ш?Щѓ-DЗ0ЉlЇ-п9к8XmJъЮЅќЄ•џОeŸˆЛу Хп@с:Ђo&žѓЂQt+E‘1Ѓ,—U§bшt,Уoaрo˜В…#“SЌв˜-HтŽВcж%TEЖ'NЧlУ$BwХГ8dЬy<3fs’1+БАVді•”ќЉЇPкŠ˜EЯW§dЕ}ѓžЬ:ќ)IиpEЂJ§( я'1юЉѓe>F …Š–SLл\^HИЯЪДinЅvЪ&џPIнЙјрФ|МyвnJй~БbA–Д,?iŠJЪr ё!s.%яŠП”a[ЇEƒsnњŒ•кIxУЩнТ'Ыёўlл5ˆЖFњЛ‰ЮЅзы лŸзЃaSЂЎ*—Њ4f“‰O ^+y–yAŠh7f#“1Ы‚_д˜U2–Дџ:d5ЦЕU"D-‹!dГ7… ЈђPкЬuё_x;§ЋучЭ3™Бљ'„*ž$ё%[hпR )ыuŠјёЋ™я7Uъ!JЙ}тфкŠlnŸ†œR“a_<2Я<ЊgДaЂФІцлд”ИЎвЭdQэEк{Q? 0 %п›=C$qtЄbс‘nI;YO|ђoє г?ту)ЬНž^я Ѕt;@є,§6Ѕы*Ь™-pe­­”$сгоMљ˜=]aЬN"їЂ?у˜ѕWхMjВ&9žТЌoЃNщбœэрktНA(ЈWээ7bкЯh>V7^!z•Кo “5е>m0ЪбЊ4,И€Ћˆп%>IбњrЙэ”ютеЖ“ЪПŸdЎЯу" ‡Ъe,œ™TЋIЋpІпЏіy ˜ єDћ…C…№ŽBxžш!В4Ъ–ˆJлщ…п2у$омšѕЛUG˜ћƒ7Ѓћ ф?"кˆмxЅ'RЕЯRiЬ Ё_…CЫЦьЇфЦ ЩZ5ЖS#j:т№(ёЮФ‡g:д@є'œKнб,{}kpxДОLУ1ДЌJќ4бoя“пO‘Яsb‡мEjœbz`ЅAЯю\uсОnЮєНуЫ_›ш4/ьДQНв…X‰):m';’„щ™všˆ7 ІщЖ„9‚‰њ2AМЬжA+Ї}\д[€_).ттнА2qZp~і'w5Ж к‚ї1ѕ> лjя№Ћєˆ‡0рКŽ Ќщё!*ЙЭжŸ’ˆЏ” 8­езб˜IоЭЙ™gi"о,Г™1;™мхŠхu;Г*Q›ЮP/ШъџмрщN=ŸјЇB8tzїЇѓѓепvсUЬzПЬЅяђрuAщK0žF4+fМЭ z<ФсД bšŒ^ЉРIN{*ѕїБЋЂyrёО‚ 1JОгˆ=„фN™kЕ@Ъѕš$ љGЩgѓТ˜Юvи–0–б!‰ˆ8(xRу‡(ќјYЬ"ўјФE fжR“ЁxŒО*0†ЏG~ Гњ3сю6‡НDˆм4П„Нdi#‚&њКЂƒt.бBР`GaAооoєwЂЗˆі$::ќлV"7Т‡‰BžГW“1K-‡ѓ’с‚co˜Х*nSЛЮ*Ъй\цјsbцК‡:ŸŒЊЛхмЩЬј-ёЯY4mЇ‡цh‹№b Y[ќ'Dk{]iСю“ƒ M”KwЉr…<‰›)йћуЩФ™˜ОьЙЩuG 'HЊtЏ›„+gгQ+QЉЇИa™Я"бЇ*чвВЌ)†w#ŸUа> ЊKlлщфoХкСбN/ЈдVв˜јоИž8[€|. 'S›7<&EЅјŸИТяѕŠK$œ@MфОOзїXі+Ќx+7ВТсфZXўфPЊjБ1EЈЊєHШБЎЙеоo“ј9ЁP5ј­vІёц˜y>Г˜•cЪ5Œ;ŽЗ сЇ4~HўzЂh‹T>f’џџ…BOЫъ?!\ЈVдЖ:ЂIlХ2Сщ]Ќj’Ајд`В@[zЁœвнvQH'аМвЯтчШЏщя‡ƒ']vmšŸQ вzШYœIсЧ™пчЯnTnЊ-з_*Ё…јR:Mfh/vlfГ™ юKЇЧшtnHŠЭз`ЉЋˆ)5^п$АУgkК~]Яc№1фя&9M/1хžћ1\Э”ˆЖQ]TAъgHu“iJГЋэWеW6уdСвГЁpЅ˜ЁHд›тѕkIЎxšxs Ї+O|1бгBvUvт.ДhКrіYЁuŠy~›$#Ѕ"ЬDЂƒ*˜й™{ЭТJэd?KЉдяR\t-Фџ s]C№DЉ˜о+KЂл‰Тѓєј=kэФ?aхП1№,ъRnфпгjлџ‹X/0˜ф$ћаЅA"юs§Ш2яr c'‘[OBLc˜ЪЩšSd7›К jеŠъCЯПLЁЋŽ™t.њ:б,A%„2wЎњЮAa~ЯчLД?ёя"сдЙPI~ЅcТА$™DVЄ$TщЩ’RЭ ОW+.КDнˆ6Q ƒШ…Ял†ВЈSъпˆ6,чШту’чЩdi9Q WŸGќ-zьЧFSјњЉlа›КЉОTЈЛСВеCtљ=]пbЬЦn!~P qИ1ёіgЭЙхeЕ‰I(„PђUSeGŠrъ„Ъ(ЪбfФмх“? ^бмZŠс­B1Ф”юR…Вvгv:)ЏщƒГ(<ъ3ї‹љЪlќЊf‚ћџ]ЗbѕwиК/З_ТмCpyАXЦd.œ”Ь?+n’'?.ˆѓ5`ЩX“RY>хФYЈ&&ЗЊQN _GМBВ№NJ>kФ>BЎmЊьІЛuЕOлЌДвOт3B]И6™B’г›ъ )Кы8/!ћ<›вiОВ'Ћ_r*–k3јl›ч• yg/šњ'Y}YуDф_Ї8ц">Зі&k[ UЖˆЄŠejЊQ‹o+†'?]UOз>N`TK‘A`ёљ™Ak&jH2ѓВЪWЃЪЉ„хŠr!ЂєўЬч!z5žЄЈмM'К›м9JйfЉL~ѕB;яў›wghЕt:_ф&гП‘ Ўeв<їЃ.ьmЛHрGЪUh (5Ђ&оЄј"тоB XjŸNržЋЊјОФч„ œ…_RxŽм‰SJг8QeжЖJIтџР5™k[‰ЏN*ѓч†№iOJU‰ќЊ›вЌЌG ŒЉхЂ[QЈS ›KДOЎœ“šJa н^bє0†}@чjГПDшv*ы/фбу˜<›КЁкзƒ+ŸН•ŠиUЂ6БЋqi№Ч32Ÿ_›LЊ9‚Ÿa7ЅХB:Тї‚Ь_шЃяœLi(F—`ЗŽS\ti’ј"шклU–9: …H‘'Z+БZeФЉшlЏT!OkgkOц…q‰SjBЈРфLžGшsєqžnПfє*tй5„А|YаiO–˜озћ „ЩD-:Ž,X д&&ѕЇ№nиСуДёљD 5˜_Рw)t&\§mЃ“єН3„B+$ЙГЖЌІмї…ЌЏгQJ<”k(•!E _aФqYцƒ‚Zј7%ІКh#!$ Pvm%…Млн/ЩЏ“<lwёo]gп—Ј{аRTТЖtљ§њг%ІщirџPдщZˆ6PšьUЏ:‡m/6)k1щJ|%ёђaЇЫїaоуДМ€-ЋЛeчЉt›“\_‰fVАК.,Ž,Oн(z>­ъ I2е&ЃkпVм,,КдњT‡ ФdY}Ѓ‡bР^mшIaMђ?"ў9];‘›[Х}ДМAсиёЕR7ˆК 3iGзПCп-УiќЖbˆ7Сšєrз(ŠЛŸЈЅ [Яš”U0#Сйіі%?–‰л3їепЎћє}W(lё*ЦЃмЅ”SЕ+љGB™ЩпV ХЃi cС›МЈ*;хŸНЏ;\МR˜ДmIэ‰† eoГ”+‹b‡ЋЄј?N<€њїщѕ5œЄчмЭЃЇ.Ю‹ћПЁoђѕіzЙЪ:‰CЩ 'ъ$ˆ’/+ŽщBтaфŸRћЏ†B˜†П”a٘VЛ(І|žХТУЩEхBфаuzьo іїJжЄe_ŠБn’S›†Ф!љ(КR`unБHбѓŠЬщЕŸЈžЕэZЅКѕФџ<ЭiJbіў`Ѕ„a‹Ђья†qфЮ ЄЬЙх№ћъЦkLžиl‰МЙџ †оТZнЋ'3IIЏѕBRВ=qЇ@‘:NЗ§jDэŒzН…˜ёŠщzщЫNf­Gу}епЖы.єн‰x$ё§OвЗ­GщЄ*gЁ+'ˆ‰/ QЌ†„ыуеC хјjСš“rВЎ‚='n!љ{Ѕ‰лCћХx@’tžщvKђ#“~ЇŠџE‚ѓ'Ki“ž CZjќGсфЋOЌўкџ‹швŸњg…"(пЋт )їUЅŸX{}pЈЯ™xИ€ї№‡№ТуW„—§]Ќ Ф|ТB>О…†џ(&dt€ЎЗ1А?…Iў˜•ЂH?_—,Ž,ЃэЙx") 3№Еф—FЁіє'I‚Щ”фйњ§Кј,mН(юЂ ”чqзgЦЋ/О#8чjѓDG;КMЪ4НЪо— -a“ЕŽ@`]•hю5E­Ц'QШQИјAFџбѕТЎšfNс,]ях*яџWъ~IыaФћ…МMQяCn‡]RCmЈъшч;—§џ„ѕКOrџyиœКƒ„ВЗixs'!№АZZјrЕ‘xЌОRNƒСИ<Б„Mt›Й>§џ/˜MќLˆl6QбЩ ё]Н-‘œшки1ц–›ЧEѓхdвп%ь  љ•{™~ ћVZѕќˆбWёЮu4 ‰'YНpКP;:ЉЁf ЙЧ“рЙЌs.&] iьћƒJ9bŸ'G’Ы]Oœ$жч~šчЉ­ŒC•Д№>ЬМЈ„-.^žј'ЁЌoќ7<ьŠЯў2џПE,8)ЏЄ0”8eu_HюмрХ/ЩЯЈжЪW†кѕКЛqЪqљ}E;Туїgю4Z§bЈлƒюo­cq%‹г”ЪннCG|Ј ПЄBG $ЕYjУђjЉ šEBHKžБёzћћ’kXЂг‹fA!ЏЄoTb‡ЛJ8огPŽVЅ^№ЅhЎјcˆC‹vL>kЁ№zЂ—ЅљцљK]“г7СgГ&E*SЉЏЯœЕ™ѓЇімX‹B—•Аu/џ.Щ”ЫЂœ4,N<ЪW)ююƒ…Hг…н;qиEГ”RVЂRЯiŸk;'ш9E[м|М2j{(%nCюЋ‚<›q-’В?Е†,PŒЮ­5žыЫˆ^‚a$њГIYV[+ёhтяд~ћкCН№ђ:ЋL&›Уw™ѕГkАѓvЛхЅўJтe№Їф‹Rb#A^,C|qZDЏ+“{‡(RіXћ>MYNn#Ыx›Т|И IFїsЂ9Щ§в+ EЩгS+]„•ис–bёбOЛ2~т‹ШŽсAєЅ2-|}b&­! 3њ6бzЩНžœ+Љ§~”АјЊ™Dй­˜AaEЎЄ…и „wDПQdНЎOкщШ{SjIъ…ЩяšЙзTœ F'>˜Ј‡РBǘ2эRT‰дяU#j3ъѕ"О›ќ)Œт„њ(Ft&ˆЖЅaцж`!щ6‹eз"з›|Oђџ&џO IrП™vj+ ‚ѕсeМ"д†ћgPФђЗ$эмA~ё-Т1\K;i иSx$љƒ§Шo@ыtђ Щ'џ3‹iХАнkx–/3: bіg [ЭФУёЕ$№їVdНnР‰ф~Žяа№OцО *‚*ш~#ОM§VItgAfпP W&ч|ьKюCЦњ­.d™нŽ:&ПЯ„эiО-ЉvXЧЗэ6‡!ч№Щ–4vJV~іaoS‘Qm6ё‰ AэЦТ$mСЪDr}9Хy9rкSЉЯ ŽF?TД&эIю!ч!ЅR_6б?–Q< Jk›ЅЉЇrБh ЁФеOˆ?\Ќ7ёх@$H „Mg`Mь!јМвo$ sA•uЧГX2z)ъДQз bЮп˜t>ЫЯ#Њb1д§„хЗуЭa,јчЇ\˜SъРш;) dv­ЫЮфЎ(Э“‰ѕЊˆІФХН„rVН—’vвSЏG’Л€hЏФЬ'ЇЧš:Vќ#acYЊ7д†H{бr6ёгBШ*ц[9jЗ&UЩtmЭœ_№ЩЎ пЊКhкњПАќ§єј SпHкЉF O_Yж„Vќ˜ТBКg,p"­InЂ@“ЭfЋЖ0wЋв˜Ћ<.ЅЦйџK`еыA4†h;ЅYXеg_Šк‘МуЖR5Ђ6FНs‰‡RИ—шpЅ)ѓ•f‡MfоmL_#8сЊAнŸYю=КN>"їwr' VЊT$jTZА­AЅооЮ‚Ђ{šтЮМxћZЊ ,ЖYјuЂ(VTŒEq^оN'сt8Sqс6'q4+OкiРQ §ќЩ§Ї ЂевSсг‘’Є­Дю•7Ъ:_@І[†TХј>Ё`IКЫ5„‚hŠЖаŒh8s0љHтч­ПЃЮќ‡Зг}љэЉ&T{o5ц†8ЁhˆRKЮэеR}ЃМЖйkФгщ]№l(}дц ›\њQoХjіЉ ЕвB,Џm…—7*–ёš'Фr§N`oIHз^ЯU5пы—s‚ІА …w„т2Ї(žющЛ™ь3<ж&&uСЪи™8Г›ХSљVюЧŠЪщAЬО’ёч+х§д=Щр+щqб‡Иˆ8ы<™тџsT\љ ёuЂѓwёTЁ*W”S%Ж<ьтŽФdœb:ёMфnvЄМАm›„‰ЄŽЦOkЇ’5щтД я.Ф5Ѕ”Yz)кЯ №…(\ “lЦ:mE&mG4U›яч В&Ѕ^с, нЊЁёB&)о"Ф&Mм<8ž:пŽ=;Иїпш:‰>tН€ќ† Ѕ`ŠўјfтпH1‰ш Ё6XЖЂчђDыЈœД_ў{9ХyœД“LСЅф6RДNх1”h}•SUЫ/?Љ†bjb{G`\ŠіH­IЫ&э_‘пQићbб_Щ]‹ѕ„ВЌН™%cMЊ@ GѓІЬZ—iѓўѕ*”ш.DЯБТ9 =‘ёo—ЭБT–Ÿœљ,rё­ŠprqЂtч–ќ­šћfХфЂЄЛQи]БтЂˆ{ЕД“^Ÿ5С.ХЇ#}7уЧЌ5ш‚љžсѓИ!dЉЕ3ъ-ъхД№У0‰Цэјјп ў uПЊЂYі$\ЪЧkhŸQV‰~ў-̘љЌ‘ј( гO‹щ˜ј‹JШƒч…Я+Въе•ЕѓЁ[gк9  o›ќгё\MфЂєšьп—Ђz”ЯЮ‚…яЛŠ{з~лкѕ.тnF*BЅѕ Ъ‹Cф‰Ж`a#ufеED'ГвЯXv/4PЗCІ—sДЇiLѕ€lШEмtк.k"КŸТУЌˆю#šЉtЬе~T"юE9EžЃ­@д@є—ФЧ‘!ПŠњЊ˜>КаE•zTј[њnв(цNk\Ћ_ -ИŒјты“0i‚)ђ!џЙdB-2{упбtL•эЯШn њ?šSДйѓЃ)-›ђЅ–NY’xДfшSœUТIr‡с@EkЮBœMє‹Ь}SkES…vК*-Ћ5(В‚џШ§Dq14 ХеoЕдщжђxЏ_%фІdХЪVэчРb fFНј% /%9ЪFНЩ‚У)УUmШц/Ч[‡а8L ѓшkвэ9†LЇ—P(нЏ„ємЈh-m(иэЫkRWR`ЫјRЃ5ˆWNЬ›)І Хз+Š5yЁмњUЖгEiѕњAј:…Ќel2…›‰’‡–РЫќџMФЇ„xЄИ€GˆS]А И­дšИ›Kэ t“`›OEёхITi:QњФм PжіУЉЬ:ŠхЯCGфW6aшЙŒЪЬя‡ъžбZФ <Іi;Гƒˆ“лA)-|gелэЫщч;?D|•ЂО1•ш ЂДŽ4•ХГOC‹в пUАРнKМŽSО‹FЋАЩ|—Т„’j„їб—(#H -Е6А8‹Ё<$#'$у<ЄИѓ~N†|_Lрн&F~иКд!оЩ№—xс8СœВЉ§'гN3ёj^M"NaЙƒ“жДp$,р*+ЪхчЏтЙЬч ‰G„|лtРуYф6IЬЪ33їšЋ2[xy;uФo ље3ДЯЈ[ŠRЄIJWZˆwLb‘вMђcЁJRX2ІеrКvј~rЄ=HыLоП9ЏTПŸы vхЭwњЌс,т”мŒP7aЖP:moъДнЋдЂ3Kх‰[ž)е—wЮ|>€Т›DЏ(š”ч u_WфњL ‹Rќ{)‡\ŠŽQЏ} Н'…ВiщО‡mяжЕ]нS1я4 ˆЊ|ж7ќDЁpяпЦœЊmˆўy]Gаи<рђкOЈђ:m‘|”Еn-и,šY( јG`г()˜8_хњ eхЎDи>i'Хaс.“iЇY(ЬxЊі…—њЊC”Xт6Аh-ЛyѕW%‰k)jуM/˜,Я!^A рнK№)ф3зeщкOыzМГ3~SCЧŽcаs Н‹nЅѕЂg?Ѕl?ЫтgCbHлѕЭIџЅJџ]ДgюЫ/Ђђ24X‘тЙ™ычН!*Їм>Ђэ…гДFrм/%Zю[­vЪћ/0ъ5ŸЊЭ.#^]`дћ!бuŠD^Љы ’K‰Йzїaц%Ж бюD'*1§šЎђФ-/ЏK0й“Й6 ёYŠфС]ˆЖ$КDЉЉuКЪ4ї•ЈK~Aќћ$яс7–’w„ОФџ=c9l aнбпЕYєт–`ХД ю­­‰ЯЮЈ7АьГB`0H JФM‰љqSЦПЮфkoш2ŽVfйСЬYж-“š;?SЬ@"$ш| Lв” ћѕ$уlaёЛmŒ{Н$ф‚PФ№ЇŠD`н’џ (цtСѓ=fcІEеgш#xЎZjIЊБY~…жГЈпMUEЋ;эФ†w0iІLЮш›•"тS“юф„ВLат?*NмnDG“1Ћ(/Њ\џ эќ%а—Ш ‹Њ;Й~ФтTJ?XђЋig):эOЯXУ•~\иŽТ !pЏдОц ŽЩк)Ы‹DŽh%vчУ™t!У?NB):@ч>Ќў‹˜tuЏT1h)КbB cqMвЧ”QяД2FНœpЊTЋчЪўП€Тз…ŠЈaТ#wPтпШ:[,ЦЗ/-вмцJ>ЁJЈKЂjDm‹Ё[’;№уD†DД^ВЫfЭ] Е7wuТыLYŸїFВьkDU„йv9š њбї ?ЬИs“іЊaЗhМЩYЊ˜WEљ~A„I Уо$њЁ bЅ"б<›ювшд—”š~ЛPј…РTоœєeЙg‰ў(јaz ЄbKEЅEcёЫ!>Щ8EK__I\ дNIёЏо žФ7?ЉэeGƒ„˜ЁЏ(Ъш4„ЂOюфЕУйzƒъšЌ›ЪсŒќ o,Ы‚_EюŠЌзiТG%FНJ”"yЁ”lldШŠЗжFLfCЂ}M‘с"/(ёYFНхЛ}JйŸђшRfу})ЌBсhhy‚ЅXšqMд+ЌЄШoеЂ‘ЃgыgЪЄiЙ5 v1Љ›bži,АЭЅ“Њ5˜НЂеˆwQЌ]ж?IЫУ”ѓлљпЂw_‹NxIБ>&ВђkМx+яvЂюЦPЭ1JУт…I”lBшUB9[e†‹ђ|уfт BЂP”мs(јIЬ'nЦ€hІ)›охіђvЪѕ8„ŽЛ<ФUХ/ •RЉљM|yш‡ёФ;eђя ao)ŠЛљ$wфМк›љьжЄђj$…DЛП-љ=)IыћиŸyгљx<ЬЊчWg^Na•жƒЗзІютЏЇрžсЭMТ!……021ГіPJ§X)\:ев6W зЦп &v ЯяCnЊ`KCQ‡Є$§•ŠI•(ћ#E…oИАЫuЗдДкba.ЋйK" RcJK “ˆoУцЕ5БdѕR”ѓMIX!ž Рьyўд^YЮІџЅ 5™ў(ЩŸŽЏ.b<=јr)ž Эи˜шtEядQ‰ ^)eџjЁ_ёƒХv gP8ŒјEƒУRДЧМ$э№А‘ХѕФ›’{UЊœ%Мѓ^ ‘CъЎ‹Џ@з)сVCwђk Є^ ѓњSqкL‘ ЫœТЦзq§™>INЉ‚м}Н’…ш +юф BHдY‘q›Ђ‚›•5#ЅfЛ.xЧ+ŠHѓ‰ПMЁ‡тщ3’ћVйНц+ѕ’–лRдŽrQЈU(›№3UзЬЂ6FНПBњ+юfЉЂМ ь;ЉŒ>4сЖIЏ]˜ШЫo0v ><ЉњХаѕTF g…щ,8€–‹’9Їt‘FB’ЧŽ™~6я,„>єTdзошNE}# бШЦ[ЅЌmYEy ўtŒЖЫf…„ЃТ%Š"ж\Ђ‹„j>FНЊйОьH#†*в-ЊvF_СВ˜ЯKsицеЭпшNњЌЦšyse&Н­T7˜LЌЙ7”’ЯIЕ#њљ:Сњ•­ља‚)I]ш4оhn№;DyЅ1HЭŠМIй6ЪЉє_ЊЭr–bбHkЕе яц<%хХтm(<%М“ёФoзоDэNЗE}#%K ,gЗi›|ёС#ћВЖ§–ЩЯѓц_˜w4НVjJw„-иєЊP–a|'ЁМTJ<hš rЅќ›3‰>JјŠв“*'ˆx•Hісc…ѕ ˆП…g’пуфГьЛYГєк”fНГЅ:C-ЈSšЇсѕФП4ŸЃжBѓе/†‚@е2QажГqњѓЕg…H•ЫLдg4\813з^Хќ~ŒяЪИ­Yѓh:=жqwrГіTVЬгг…ŸžŠтб<ђYбчr{“{AsFМ€ш|Ђл•вЯ7ЊlыTім§qoВШS4zЦw2Ÿ5csЂo)=ОЋ%-^ŠvЅгJъiЉХrИvЄе 6БГjoт3“Я и1„I—XŽ*бЕS‘Й:З237тЉїYqf•žєЗx*ЋЫr+ѓё˜$й'u~ѕ ЪжH‹ƒ,?D1SЊO5s*ъ@­и$стщˆ~>Сђэ МЌ)fуva3Щ–љЕЅ>†jPРЫA‡‹‡c;ЅяbQяІFд&&ѕІАљ+“L6кЂWЃ>ŠaГщЉPхнs'2ug™Ы>wв{W!|уга2zVПяvрEэЖi$jvяD|-љн•08ч~ž8цRšћZщч[•*Фu8N`!ЬXртЕ-‘—јџ=f‡š …БФW у› ЙЏЗDkЯgј'ё1Šхl›Cа]МœЂбHn|HХ,ЩэЎ}Й+Aйm|Ÿїс­Џаg КЭЎЎKknЦWqїŸЈл™h_a—_л]VQЎЬЇїЏчSXŽј^EџС$Ђ_’ЛZ)ЫХ,Eђ€ђvЪiю' F†Эa ''уђљЄY§џМ —=R> iлМтiD-фUмш†јœЫXЅш!0зЅЁбQp*Хы)љMјбЋŠдyЂу‰Ц*Ѕƒœ|…Уiј/<ЪЪ›U_ЦЗЯЩЌ~Ћ\ЧгК+бцD?Wz ,JЏ)Џц3R›žЙv&б`movђйьёmЌf%Я6Sћ’ZBВујИPёшKшŽаUHЫН4IѓLцZмџJbЦcIДŸ’:хетГяGqˆ-/GaКвš­фf$Ё™г"њ ф%фЮЂy<ЯЌУЛ”ж-яЫЏЯVw1~ЭЏ“;(жg(рHЂЏ*uг7Љь!яxžŠФьD!OŸgJpќDч+’!7§›шzEЫQZРЄМPJжšДt!T‡X№[eBbЂе…Б†Ьuїтскoџй+ї,"кВэфШ>K'тTLIишr !мзб|cч§ГцСtњ[u]Zf lЧ?‡А O<ПЭ\аr*тG”pЃFk ЂP5uкњ$ 9ћqН@Тœb б\rЫ)SЯcOЂэ”ъKЃTkCNхM#] йz CCЦ”*ю›СgЏщжMѕ‘$Я ‹Т'UЪмKУ=МxkнЧЪUоЖї…ЌГьБЬ;– ДѓFЧНыKў~$бн™gсг})х(Џгжxoђ)ž8гЩMNоcVъmщ‰P цћм‹@жЖК H|ёoнa4бЁŠbA,ˆ•r*…Hм–Z—&ГхЗЋ+gЛ‰ыМСs“™ќ=ЂŸ’8ё†ї КMД%Йпн „\ЄzЭ,•ЋьTТ8Ѕ”4ѕ‰B~FђМa'[-8K,VхтсR|6”ПЏ—UŸGœAѕ‹aAЙ( Хљт+АBрЎ‰.B вєЛO”z{Ы“ы “юBm“"n Q­ё=іLX•GЮaу;ЊЌэq8gѕ‘Ќ2–‰Ї' v…„а+MЬТ;BйлЙI_7#ї>б ТЮž.тёЭкVŽ4n†ЖјЌјVтчДеЌˆњ ^їЏ КD?мmiРоЇ!eд*ˆHУ}:Ѓ^‹\§bhФnІp!ёЈ ‡Чu(Р4a" yРбўJ OSКы–1xG“ыж'.„њ 3жр™G™аТJ?ЃО:Ќv%Яг'бВf Ÿ*w˜~&œFƒжŒеˆћџT8!šБfАpЕYЦ‹=}жђ—PžПуы™чЮaёО!30оW5уњжўПh$>"PžMRр#ЁHЖ†^ЊУ-Њ_ ЉќЛœ,ПК Ÿ-Ф>I_ƒ™ћ%ЖДќДШр%IˆCvчl*ыx.\ѕGWў‚ОУѓW3јxњUЙ–{‹џЦˆуyП…ќo•Ъ–9ЂхЫО'u†H~KtH`џГ™pђхІпk_ОќYв1+Їь—Xнn ЄёЋФ—ы*y~тП ФcџЋ8KиН›ЊМ~nА …7‰z`$Й‘ФПЌ…IишxA[ mјГ+айфўТ9OбJ4›RЗG’Š—ђЎv КЎ*ЏфжPp}с*<}.›ќŠ~Wр{еukљЕиюk|В ~CtŽO?:ЫшчЃABЊУ)dfсъъ„*Ѓ)Џg—фYЊ­—ŽzЇфџ5ŠHu—“[ T§_УЛдэCt”АaV‹za|SfНЩI­Оѕ6"w QZžЌF,YkRЪ7”&БDФљр“ШпЈШu3/DцЎJќiFZAс=": y№ьr+ФtЊr1Œј лЏС_eсЉФџm*ЈnGJS5VЬЕmХ8ђ7 NФГ‚’ž{<ЩdKхМіФdK#Зgёtў$+Ю?Ъ№ƒ†’Лx1o’ъІЏ*5bМMсч!ч!ЎЂxf9j[ iѕ”хY{Q5дВ!бЩ oЎ(;wЧL  Az „<‡=ЩЕ$“Њш 혢}^§!ыєfљjахZVьЩšgђєO™ї$бНС”Е*%AkQyтІ}Эў>;IЪIu†ЎGс&œЁЉ;:‘мBЁі]Бк$:ЂЗьMaы…дњйюѓп@|.н7bЙ^tйу3оЌмЊ’ћџ ћзvЛкMЋл'T‘ DAvN'F‹Ъ”р9ЂЁ™п“]ЖpОЂ5`^P†тж №jŽОFroѓФlteѕ‹њOcч‘МбТЌЧшМEВc,P\ Mк5Т"Ю;)gИH}йјђЄ€IсdХХ>'Qьš„ХкШ‘s_œmЭТУ|Ќf1iнKЛŒЕkћоџ ЄЂнЗjјN$ˆF}’ŒЪбТ˘ЏtcIkш і$їtTŠ…!ј*Йїіш&mžцшЇJcC*‰%щЄYіy|FL2›ш8ЂлxО•Wоd‹ЕшёTuл{-ЖП‘Фф†Ф•џ„E!эЪма†ГkВЅѕріTš—Вэ•?KЇіж* s…ђК’ŒЌы‰„ ˆЛŠѓ-Ѕšќ4ДркpЊФяЏ$шiћцжЌ!ЃZТч Ј]gш"иyoщ‘І&˜?‘ЛЋ+†kїLЌHеь~ЙdхЇHBђkаt/lЬ АЭ3BЌPGЗЛ‰!b‡[™4‘w7ЂўfЅŠђР№LёcŠІв”QoŒRFНюIМS5Ш)™рбhtKТЛ„ћхЇ&ЌzпLАKQГ‰?">)xўу‘‚ЈўGЂя… Ёњ‹кR;НdšdбЄшUŽˆ[ТюX8VJHtЕ dŽP*]•ЖŸжP{†мЮМvЯnЦ6гЊј.Ёlю,6.№Ш6Ме@}N{6МT–O‘Чљ!юЅ„Qя‰h˜Е€TЇЄ4ЯeОл”Dw"ekБЎ|™'NгIЬJ˜A<„ј‡‚ойBќЂ““ОЎіfЊ_ ѓ‰ћ% y/hчUŽz&:Nёe7 Б§У‰ћ“f~KюTEБ$eЎXГrWЂ ˜И/чУuYюздUs:ќ…5aнбМж…йч$Ђ\љ‚ШŽDН`ЮФЗФM!ААpŸ"{оМ3ЭЬ|–.Ўy:SfО•ВrПъ3+еK˜љГо №k†_IЗ*"†Пdѕ: яяХљ“GпpjФЏсЕ7Q[8Ц0œКˆ†’јœЈМЖY…L 5sˆЮЂ№—аљДXGtLЊюКщI’эЃгtяŒх‘G90ЊŽ4 ъMŸ;иќGМr2ЎL}‹РјнœigВв…X^Э'Ё97Ю\7?ЙЯ›Š;бBJtUћqhGL–ў­ГъЊ~Nhн”7F№ТсŒkbЮEфŸcиDFfнОЌЖtŸ+"эЃ‹cNыпЩп+М—P%§Ф_ йaQъьhQ•хЮJ™ИЋSсŠЬїЇNюNAЮNkЈm-дшJr ъЇ1ё>юпžнNІл(ЁsXяB6~‰Ч— !оVœ„л…Dў’њ хжЄTQю_vу|’и”^жxЈO-ЛѕЕЇьџ?@гzOџ•ыц_S˜œZy’Mmјw8` Ž8‡бзбщџN?ЃЎ–ш”ЃT.ЛahаХђеtћ•ˆіЎЇхbъ_JŒ‹Ђp1ёWё€ЂмŸЧВѕz•Nщ вЗьГЎ(†MLСхф6жvZDS˜ѓЏaм/щЛmѕёXƒоaЭ5v+ПMў1Ё тœ`хЩ§UЈТйœ<ЯнZ"{Vzž2Nжhˆ gу”f ЕЧ^UŽВЃџjCў>О„sNсбзi­АБLФU9&=ЪY?bдk!Kя‹э(ё3ATп'NЫ=ўЉDё ъЙ†z’VЯ‹Пd•7кWѕЈŒx …ž?iњb'1"ъІ=§|Ељ •’lЕb+ ћ)ZЂІ‡щ9цЮ. /ЃB5ˆVb•НйљG\л—жADo zЮšфЛD_iнЙчj›e•vє<ЉH”‡<Ž$о(ѓ§й IСб‹<у?\і{^Н”–Ы„ЂюeˆЩЌѓxр|ЖšЮол3ЈZЦ’Т” žцg‘Пї’{-йЌR‡f:ЎнЩ'џZXИ3‡ж3ђЯc—ЊОї&ёŸЧFКрd ХЯтmЪW•цЯU ‘Ю"R:1:у=тг2Ÿ-q' ГјWЛ\§b€{Гѓмн“ЩПЁ№[ЂŸрнРjб6 ѓp…o ED ЋоGф BмU^XЄѓДЯ_ЎDqџБPп.AмDќт‰‚с B@пчywrїП™ё›OП.>•9g2v8лю8žПP4_†o„ќ—ј ЧcWaОM#К…м0ЌIќB Y5ZоeжœzцœMы)Њ] OaкпU“Ђ$3;Ј“ё4…ГwЩЙDїЫ|–.Ѕ Є’Œž„G4vухYх' 8ПКGюО/ЋЭ`ЫСм{sfP—xЃСeэ, 0AЉ^sЎQ4/ЯФЭфSЬfKМщэ8{Ъ(ћЃ‚5m"б…ЫјYаќŸ\ЮФЏбњPЧзЧ+1юlfН“ŒС‰4њwйћbB1”Zg%яяО№kсјJ- Ф=ЩП^Я”iЊ:œ,о‹Иœ+)NТjЫ nL"щ$ŸFtЙ,л]ЮJvшrЖЛJХЦч'њЦ}<4Š5&Бm нoUіКž—6ЁaеА‹DVhЇ›іЌzфГ‹>^IМ‚@s$бЃeп­TŸс8ђ9ц}ŸТJЋ!}ЮШ_Уќ)ј+Fv|}<…9ЋВ№ў/ЎmшJtЅ@яЙP№>—,h eЎt%љзеpк6ФŒлъ™г–*3ˆЛԘьd­єumџ™ЎВСoS“d;ЃWѓX=Щ™ЈФ6q4…пёши|]6@З*щ{ў‚­oc0i ѓNH<—… эTш{‰e,}ž>ŠђZWЂЩЏ(ЫЖbЕрЪо7šOг>њM/VUлq‰ЁлVЌ0šюoгА­PгюS{•akгыrTy/)Фяав+ Їy\ћS4ЅъьG|;-Гi­)ZxNŽ—цх˜а“…SЋўо‰АYиэšTя0Jхщ™Ÿ8X WRИ5љљ ёС)е”љIЋ§ Ф%,˜УѓУx~Aљ­&ЏјHК~РЎ Ya‹P:W]хvЊ~ž‰[о„№Y<ќdђ“’_ zнd~КтO6MЂ,ПHьDїЙЌћняркСд fдє§цмЯyФ+ѓЩЮЬ^^ЈМT =‰"џ@АZЕ–FZіeЮиz^К‰†биЄЊя}D‹ќA‚-Н>№ЅFJйЕчhOЖK{хВ/?‘љl!Ю!џОЂяb6ЙMЮœ$Г)њˆgњАЪFl:•ЮПђЊ;@ЇЎьјoлБ—гzšD!щOn{EQ.еkВ"_іyЪkЕНBќxщ uVbћNь„№мѓObЬ4іщˆ чs@ПG9И'cзo ›E§‹Ќ~ЛLgй3&Р/љ~LXЉ›Б№&:5 4;YЖФ&AџКœ–ШЉFєЌеyчЉzокž)н‚•?W•д8ђЃйDс†+аF‘вDшFЅ43-’КФячU‰е)Ђp;бkŠ 4†т†/ЎУыЋГіїЋѓcE„РбЭзрхKyѕk‰гKа… pЄЂl.бЂ”Юš•џ.J™ЩЃp]!ЋTOQБѓочхЇ˜vxˆё.­х%~6єx™э/fџyм2›њЖПІЫl6̘У~Эz—вэ \ај$ЏМФьћBDМžbсB”pіЖ HшЊ1}oоЬЌы™}=яЎЭŒП„)RЎ&>Š(GДjIИтЄh"wЌ g“ЕџEєMЅ6јк3ФDх!кQPЦуU3зЮ s\oю_™еЉЭЉЛйМz oЮ†ёmIЎТќЄ$mкЮ rgcSE=Љ &qNйŠЂ*зшUA!Ягє0“.ч•ОЌАSiЩИЯЙЋz пО‰оПссЫ™Ж5ѓO!w=NeєэьО%ћЬЂчіŸЙЩšбаТу'0ћчфжЬЋ™ 5n(њМ /гru"’Vqпт•UˆŽЋЧ8^|-­z1ќ:‰бЇhн)ы@м‰8;3[…Бз ђ}ŠэЫ@,tQ 3šЩ„cyєb;‘.пJLU`х›иьюН“Л‡дPT еŽЛЭќ>мQИZБšO ЏеАъхШэEыЭм}/+Эc‹mЈЌ–—љqЋ4rђJьџcfѓсBКœЦrЛВжЌј Ёшќ_`Па<–їNч?ы2ч@rЯiWN,Z‘џ'ЭGаšS›ѓЩ'wёжжФЫеkњKЛ2юЛl~П ‘}: И=‘‹ЏIBfЫЃ4S;ƒјTт„‰’N†SЎŒОuWѕ5„јНˆћ^bЯ•щ_хbp-ЋЯgчеИђUšЏ”мJm—бЯG]ˆзJт’в`FШш‹ъЪžЇЋEЧ<Уу㧆дБЪaBйжю>tУtНœџЪrЫв:уЉП“Ю}CФ№ј%ЦюФ5{3§ФDyRћрМSx’…З‡гНJHŒ?~oџ•xd=Жbќ‡||(ёBUДŽѓЎюЃp.Йx”hsЅІж єѓёукеM(ќ{ 9t!w\bBЫК§чЈXЇ-ќ3ЦpЫЦlЙ[mЂЦ ВѓKмu“z‘?шŒіэTЄŸ…јйЬgЭјiАЕ‘о6„т%бЅѕр’j>бђФŸајuюќ!}:ѓНјE,„,ŽЂюЈВžДQч|бxc7эФGг| nФ–кG/ЌDсZїЂхMЁPЭЧU5ёwо]‡7ZYАЮЏЧ‹a–Нџ lРЈ{TУЪ3 'O њsш”ŸЪtUžŠg zC/m^чТ…Dg+2Pt >:73Б`НZфі…Ÿ№Ъ,žod™эшїHuƒоm Vо’Эvсо›iиК5•RœWRќ ŠrжБЯ&zњyЯPŸ!КOб˜А0ŒEєXh'к€К…Œ_‡лf*•НЖcхƒTMѓџ Уxё0n§#їўšї‘ћz‘[…Ј^бjу/фoЃi<…upGеM­ЦиЋxяC!ш&+ŒР3гѕУЊo йGп&щT!єї]л4[ŸaЎŠўˆЈB|`<3IJПл“\Кв Ўx–hWЂ#BЖиœИћhV>šZ"xЛў›еžчЁСЧ‘ыЅш Ž‚фC”ц#ЬSYё/їz& $^)sэr_Oю1#ѓнOxѓ&Ўњ*sFБ§§Ќќ+†ЮЅS%™ўзАp>ЯтеЇЙї,яФФwЉ?‡BK2N{э"˜ЅsBўѓоДŒЁy^ЏКЙ—ШЮЋ'ђСЙщ‡™Х№жN<Й:{IдIлyšї№ФцЌн(&эЃ4еВ:яЦроtњŠ3њљЃBО­М6њљм„цLФjдOѕ4їqйuˆ/N6–Еh~‡з7gм›\{ƒ`Х‹YqGњоDЇяџЌк—п„=Ћш+JŠЌДЋŸБИЈ ŽvХЏCpрдГ™Кoуу™ДЌЦТˆGу}Х‚1)вФЋˆјnђЋгє=ZЖЌrЬЦяХ§зѓюŠBKxЅзѕyЏEќЁŽОыдєАЫ`/й:VBЖѕУ…"m-ТФнŠмЫIєkъDKЫ]U9јqZ)'е!ъBhєˆељn'5аљ \џщї™з™‡рЄУјрзt:ЄЌ…ŠмP)ЭЭЏ„С&mєѓЙл‰юT*гЮU=Э}SBЌZзv"Aє:-GїНш>‡Юп#зOfОЛЈВZе ЏmЅxв5kHќBYВ„йJ§Dе"NŸAX5ф)7CЫG,и‘…—Л’ш„Ф„гEхyа—јЎЖГр[ДXНаёУ^ЯЛW№§эљO/л*”іхйFžofѓ#щq^еmL |їТ‰ѓ*qFХA M'Es0AЦƒ‰ЗJЎ[ˆMˆОMДCfРѓТЉSѕКBуЦЮг3f6Њ‚qЂёr^л‚Ц“ СђїXсd‰g)е‰КSX‹hВ  фб?x™Ѓг•ч8Ћ –1]_JзL?žЧ“ДьСЌЏ2ѓ)ЁJв!IћiЈћV‰!cvІгUWќ/ Ywцк…фж"EгЪц€uW*ЂMво_ cˆѓaD+сь@1™kІю їР‹Щ‚Ш:l„“bCтб4’–БЕ.˜љ;ю„WŸЅБ„RЂl1Ф2i>ћ€х^Џ1к)БПХт’АІрЉ.G\mm;Qc’ЪЗNтмJJFЋ‡ћFЃwО|вVjЫh/Z_cЬќmCКЏЧЊ?ЄnќЊs6чЩ‹Иwц^IЎkшл$ŸЃ:Х?N^цЙ™я w&ЦЯŸEНёЖP Н1smƒŠ'H64О.aЊˆП'8/гkыƒЧ?šŒbЂЮxƒшJГСTw‚Є!1ГЉђ›Ш}#бе&&Ÿˆ"э+ЄЮTy!fѕСУvK"х’Э NŒ2iЩГюСТw(‡ьюZ­ђššz3ŠПхqЂ 'еoˆ>Hќ)MK ФjффЄяЉуЛфІ й€УZиПГ;~z2œ,ђЩ}ПBnВPРpО 3…ј€<џЛ“‘ТСфя ўšŒЯСЫУљ§ЛмtѓWE-еїНQ 9ј(Х*?]Rн^lь$„X}:їФ#^R?xXјЁR“у:Пгт~Е*еMё•D‡˜‹Фv8]Weф{З=Я€щŸс~KБ‹1Ыѓї‰мВ6’vqяД„д—UЏb—ѓиЗ‰ ЇбyўgПчR,ХЇaцО<о•[FѓјŸš'KP—8mУ&;Гежо†nГl,ХRд„Yч№ъ=<6œЧ^т…&&,‰;/СЊ ~Хиџ№єqЬй˜hъ ‰ЋqйЯ|ћЅј’cњŒэЬƒ/ђЗ9\7šЗяІiюgПwР’ЖђіТяЉЛ™~Sиn$яФцїа§6К.Cнеиэ ХЅјŸDќ ­—бдШМ5Иc7Д№ТXиТMј‘в”ЂЯ„ЯХх‘мzwКЏЬрNЌ{;mЧЖ]YaŸ|їФъкѓЄ-Х—Г№ nЧm4 у­i ? PKы™GGзСч((&virtualtouchpad/html/img/icon72x72.png‰PNG  IHDRHHЏtЇ )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр  ЬЩЯ•IDATxкнмw˜Vее6№п™ТР0Ь 4АE#иˆиEХXbAЛбББEХK4FБХЈcQА– ЈˆADTPAЅI›чЌя}†1Џ$yCОя[зuЎЙц9ћЁчclгžmJєDлЋЈю‚їVю;ўkвœy­˜}S`дŒšФћ‡АtєПљн•GГ§ŸЙх1оyEчёџіБ№2&nЩuчђН/(_я_gнћИО%Ÿєўя?дъјш#.ћн.ј'€ЩњБѓ)Мќ§џўЌЊctО7-› БТПУ8x.ПОŸЮ4СЎžЪ—ЈщGеtš]Eх_апСRфј’8Шp й4lн1•шEЖњтВ5Шк‘э…жh@,ї7ЧкdmАйAЈHїŒЅXRЬБ”^Б_рC–NaбE,jХМЭX2і)Ц;у9љEўі“џ ўз№ЧщиЗбЧ—RлŽNНYm"-ћQ~/хНHіь‹]ˆћШZаbsкœBлбT@эTWƒ.щ;В=ЩКg0яL~‡ЩOQъБ"HЯ§Cцн/—ЈХMм0‘ƒ.]~hе|жн‚NгЩЦcО@L"П4-ГuІБэЅє)Бњ.”—ќЫ’пШм+јp_Цў•Б§љxљ”MХЙdgр ВiйЉ*ыšŽь%œLЖ5йIdЃбэ -ќ’в[L™ЫkчВdПFS˜Яї2Ј?ЅN@ЛќŒЛ6ІѕПжœ›YП'чIk~mВY8ŸR>šяьAПzЖXƒ6?ћзAљG№бйŒљ ЯЮДœќ1В’]к НЩnФ6dЇbuД’lW6#ћ ў@VGvй8‡и‡ЩmП= "Ђ™mичQЦl‘Qs*З>Ъ€зП>?›Е>Ѓчіd=ъа‚˜Oе8і8†~B›nпў ЅО”v!IщeВPб…ђС”з­XГ.fФ‘ Ч—Г(лƒloЌYЬ­uI?В‹А7йбвkUZŽЩŽ"›'јŸ1ўc&uЧo—Пуƒ8~эŒяЭрС]i?юЋSЕ щЕ>Э[Џ=Jv%бžк;8ˆ=ЗЂjяo~˜yOёййLЧдC˜§‹ždq%_ЖІb_ZнJЫљД™DЛлщ~=гъ!Ъ~ћЭплpЯWqз>8ŽВ;Щn#ыŠ‘f™ЃюT€їsВјй6ш#-ЩТ3f‡1З=Я–˜ПУђw{Ї={Teœн“sGPбƒфn{ОDзѓ1^rЅЭˆiДНЃ7gЧц”-^a9 чЃЃЇ1іtf aо^,§>ё2йпА5й>˜•€зŠl7*ЗЂхкпNЗl2ƒоївњвojЪц’yѓ$)Иы†“W“OЂєљ‰ФkФ $Cˆ‰}ЩK”ž$Ÿ™^DДХЪ&ЯЄејэг {‹›5~9н&1p/jЮ#П…М9љ+”ž%ПјˆИ1§ˆЗШoЇД; ( яCм@љЧ4џСŠ‹Й~гr.о{ѕQ›їЈћ4Н‘hKо†КБїлd‡,Лtђ6\њ)гk)IдЗk§Љb"EЋcˆЎD%q‘d@oТ…x_Š­ю"к…6ФѕdŸАx-&Œbў6l№,ЭЖZ69ѓoц­ХИˆьbм—43:%[(юљPЁ=ЇущЄA1‰иїђЩц>Ж<@‹e)Y[&kЎO—ё*ІбlKЮmЯЖ-–Yд—KлёФ[”§Rђ лЃ ЅЄ]ж#ŠЩ^ЧadЧfh'хoП ЛŒь!\PИцu|gYЄх^ё2ћЯр ЧЉЌ^6Ÿщc8П?ЎCй.8ƒld 'ьКмМ:Є{f—уLВ№3Ву’'_Сдћ—GуЃњВ•Jд—QjIЧmXї„ЦC&|Рѓ3‰_?I>--Љ˜BьŽјБ.ёљвbмBђmˆЕ‰ƒёv$F‘ЏMўљlђЎD3т0ŒФ0<ЯвЧљыnМИ%Ц-›OчыйцN<@J>œвЛфЭ’яЇ9y„ш“МnоœќQђyф›ЫqiPlMlRLьPО3е-7рзМ№&ѓп$;БXB_ЏŸМ_щ ђŠФvХw=RѓљЧфШ_'?И№>Чc6NЖ#Џ “вkфsp#sїхюљbяeSЪnaЫ;isRaSnЦhO,&п˜з›ф‹‰‰ $Oр1bЃТalД2нFЉ+ЅљФГЌUAйmЫЮБ)уюЂ4—ќ|ђЋˆŽФAј;Цb`zш| ђY))ЭЛO{vБCЪўѓ,Vz’ќЬdLу7И;яFџ=мЯЄѕѓ^уyw>œЕžЁс0ђ1”Ц“_G,$†I6чhЂ љzфŸSAОёx1—šTб w‰Я0…ьBкžжјќч/2ѓ\В§Š^XБЧˆ“ёƒ"'њiвЌlCМQPS}№ю*мьqdЏ&ВрŽТЈЎ_МнWШ^#;6=`Ж Жcб<џwv<ŒЪЩi^-fВіЃŒ=NЪбЎ(юйїyфрТˆ_OЖо%ђДjВR*ђmЉ'n!.Ёх™Ќ~Щ ТœŽщ-Х­4Ї“э‚g‰2ЩОМHќl'\…-ШvNъŠѓ}‘‘ѕЦБEќ4‡ИKŠЉоNš™mŽ!dПУйLэРЇ[%ч6ЇSВR•н“пЧfФ iiйšВ3ЩšcOВ7‹y1Н?o/ЖЦ{tjCў'qеЩЌѕўВѓУwхWх4=ž з’?„uбЅH\Ь——3cуOхэyф_’]*!м“В™№Ш0е7ЈŠŽ—’џ€ЎŸqU[Кt[vўыИdyœRИюN9Е0йHœSЄƒSКaЭЄХR~дЋX’'Kђ ZмУР›№.­ЯѓП+KјЌ;wnЫпQ:˜lЁ”Ѓ50с ІŸђ-u|‰­ЩзЂыч\г—.“—hПM~Ž”я&Бzзb‡DPi_hLŽIЭГ!x)ЉtіВѓlz_ѓЮБ{/фЄWЈќ‡мёП/ѓ†rЩ‘<џ eŸ“]‘hу‰uLŸп І6ш6ЩXM)ЎUуг1ќXbЖД\іЦ}Ь†z` Оœ ­ѓ вУ;Вw>!{’ьWdэq ­7bзЃЈмќ?дў„ўsyщhž&ЖТњEHђpуБMНи+E|rK_ЅсЭ.и8’R‰Ќ^LU‹ьaВГ0 OЅьЇRN—э йо…цмXx*ь›‚Э6ЛАњQя7§}>Ÿяп–—вюжeџwY—ъ;’г);—I я вTƒ&їb$sЏfnЧЦЇлnEйz4ќIZ^[ІˆYЗТ[™]ћmЎ$п„И“|>љ[ХpqСП\’>ц'’яMiJK)=O~БWЪгŒРYEФ;Nтt–—ѓў}pьођ2Ѕ˜лЇEф§>qtгЫšк Kpњ1ћžЦчkŽЁЭ:L-Oю[ВўИЕˆ‚;Ka§Ћd“Šьќi)sП лф X@й„„#ˆћг=W‰Ь—(•™…ix!Ѕ~пxXS :€<'Пƒ†žМ'љ‚eЇ[нAЇ­ЩЫђљc)CЯo"N*ђž[№#т\ђя’пIўљD1Gcђ5ЩЄє1љo ЎzH #?‹ИЖHЊwѕмƒaФxяЬYšJL$Ўyэk(ЋФpŒ"Ъ‹7А6V+Hѓ;Š’єЯЩњІБбH,ї%уЭШ>ТОНqо–јŸџДЬХsxЕ €GщЭс‡5Эц_LTiОѓё‰|vSу1=fSіЅ—ШЯNЫ*Ў“hг‰ФфЯ‘ПCОЈШаћIћFФK‰~ШЧ&7?СєU\Bщbђ‰щ85жt‰НW№Зг3Л%<бxHч]Ј›˜АИИ0tЏЅЂ`~]ВaёgŒ’(†šФщф UПD|ЏXїУHЅІU!/я%гPк˜RYЂcО шH\ElI,>•З^[ MYЋ–|kт|т)ЦщOќ”МŽ|Ѕ)Љ~KЯф ‰ФЊN”/ П›|‚AјБхы.џYљƒ‰'ё бCW эЩ’Я%ŠЅK1‹_Z6Іz!цE80ЊаŠн(qvсЎХNФЯ тьvђђC‰‰в5Іа пГ(ЫŒZ5јФEhq<љŸRъпPбmКФnIѕjK€3x{3f-ПЬŽcЃ3ЉjVXџг .xOђћЩпO6,&‡'ўз]ФzЩVхeфїKmЇbi%Š_Ў€L&žРѓRЊ­•д чЩŸЁ4#qЙ0у&U7З^oVП‡вфC wH%ŸУ‰ЗЩ{Ї†…ќ§‚дџœи­ѓpŠИcDjš*&? W@ч“ІДWb&b1о] €|(ЙљѕˆRb:џ ^iе˜щД+эŸˆЇ8|:љЋ”оNк­’V•@ŽХфЋ“O-Ђщ5ˆwŠˆњiIУŽˆБU!sгRЯя)ИѕюЉ №­Х@ђ‹ˆ–Db*б‹Б9ѓ– т*gбЗ’ђ'‰m o4}1ŸW’?Lщ‹дЋwу1IУО яFў љНф[ЅЈж”UƒOм•RЅN ".Oџ+@Ітъ‚№~>х+2qя,ЯOoШЦOГкi86•‰ѓЩп .*<лei\RT%n#oM~<Б)ё{Љкy1†ИxcефSђбф;’?Kў8БѓJІžУшIќQ2bƒљ|8/#u˜вэ<6š˜ДХЁФPbKђПЄrOОQс)Ž+ФлRL—Т Р&В*.‘XШU!3p<ЎL/)NЧЙM‡5M56IБ‰Хи0•wВс4ŒeЬf:"5j@ѓkйn1OBщПЛEб4ВH:HFљ дD™ЭЦEљї5Ђ6—w*jfПCїUа=ф-RГƒ9ЉќmЅlаmRі§ КІвN~.1‰q0yљђl[ЎC‡ЩјЦ­Феэ1— U9ŸТ&)іШЅєЃєBQ§ИH1ž$^ЦьUŽŠ‘iОБzAСth:Ќ)Ѓи+U3‹ІЇЅƒE|ђЃ_ зЖRi`ѓМsjПЭ~(ѕхt•ИžЯ‰ѓR ŸОјU>ыž’мЈЧћ)~ŠžŠ‚й^т—”ЮJЫ?KйўОбA4hЖд|єPсж—ТђƒRžѕфхЖё2.Пй•єП—‡bёЯЩў”*Y7ьWTYЧlу8 –Њ!sЄ ш`Ќ“ИщX‚з­yПM1\YŸТЙд4жd‰хwSКАЈ‘oRаЃqY0a^›дјš>=XчdJ?&&—RЅJJіe­”иƒ?AтИ‚CКOœъЫПџN<#ёхЗ$~(^k:ЌЉ‘юŸŒeL•–Тf8-эЋШѓљx+cЋm‹mДлŸf1~У",ј~Св(8 ж’сэ‘j№YГД+ФАЂк1MjOщŠ­Ќ™@ўGђ=Ш&Є—o§ІУkP&ЕЋ§œxV2œeФЅфGSъDЉ=Oсƒѓ—Лn2§зfЕпPD\‘іcDyŠŽу1ЩшяX№иRъLЉЅmШ+јЂ‘V]6?їїRаХПo:ЌЌЩgї$#–п–иЖ8)r!›У;eŒњKу/Z{Жy+ЙNЯсRЂE‘Ф^TxЖšB;GІ4Цfщo~uд5…кЏ‰‡‹ьщTŒЉ5e}%M—и­щЭgлрСТP?Œ‰)БЬњАјї<Д7ћЌOЫЗвuЭnчљле%#uЦюЫкWžХiи^в–ё3ќДПЪбЋBnJЌfєOќy44вXƒJфm)ЭЁtQjlŠЕ "ы ‰ˆЏ Л‰Oр•уYпZzwЇЁ]b K (еSКŠМŸд=6ДщвBЃFЩюА‚лžај;ѓvџ;XФy+|№8љЯ‰?ЧрN)ЭZAšКљgё;ЉMэЋ–§ЮЉ?›F6ђйš<ј#Ж<‹ђЙщвК5p7/єJuАlЈTЏ_BДC):џjн•щ|Ж N—тІЋАѕВщl{MвФьœЯDtљQФš•kžQлqХ­šж5Ј&ЂzЃˆъжеЧGT?бђ7-?‹ЈЙ/Ђцнˆккˆš—#jзˆИdˆќФхhVФeН#ъŽŠhѓvDнukFдQweD§њѕЧDдПQП$ЂmыˆЖ5mњEь0#bжсёOЩЌc#&nёХ’юКЗK›‰XуЫˆ.чEtн,ЂцВ&m\Fщ†e žќ†Т5п‹}]ŒЏкtп$?5§_šУ§ч2c9Я“ЕeЯSш”ж)Вљг‰ыq ёYawN!nO6-Ž“ђЕ)X`ЅeЬ]ь3Зр€YМёо?БєfHiЯHЂЫ„ˆ]#:Ж‰hѓb„ч–зžМžп^‰УzБАъыЭ"ВЇ"ЪFTДŽЈQёXDхЭ• Э†G4›QеВ­.ЂЂWФ.чE|ўjуILи$b§щЭїЈnQ=0Ђњ/-hљaDЭu5“#jЋгбђгˆ“џБh•{ШХoFŒЎŽИщшˆБ ЅY+wнМ"ŽМ?bѕюэзhwWDѓV\^svbЗIшqŸltђ'eŸG”‰ЈЈŒЈЈ(ŽЖ?Јx6Ђђ’ˆf•…†§(ЂеCУŽi<‘в„ˆг6ЈК9ЂХCе"Њ[GMDѕЁеC#Zžбђˆ–ЏFДџYФe‡E|іOzГ••™]"~YбщЎˆеoŠhїED›aй-+4цЇtи3Ѓтt.ќ€_tFк;VŽ ЩцЉgdЛъЄђLЉ•їfђ+иi8УъЈ{jй*к‹_Ož1{IњQ€)иŽь`Ыbљ–ш—ИщцушЛ€mЇгeSЪТR2На2оКyAъэT4˜wHŸYЂqђ<˜6†Їц•g)–v цo0*K§Ш@i6чдrёW-UыЩф]#aŸяFdЕйw"Вae#Ъ>Œ(? Ђ|BDљвЄeхET?ёћ5“§‰ˆX2>bатˆfЛE4+KВEDе†Uƒ#šзG4П-ЂХ€ˆ# kбbpВw-6‰hНqD›Э#ъЊ#ъŽ‹Јћ<ЂО&ЂОsD}ЇˆњяFдбvчˆЖ/DЌЖ bѕƒ#V_бЎ"ЂнjэжŠX}Пˆ6ƒ"ZwŽЈ_;ЂўƒˆК‡#š5DЈZQ{ЦѕЅы‘|jLКŽЁ}љѕ.T<њ5їЇ1LъЌ"іLmЛбяЄm”1;mђ_TЯQ|1†яvцЅ7ЙyљВУЅощг -j—b ЧlуvRk№ф”м–=Ÿ4fЩT)6jƒ5ШN–в“вяЫЄ=ЊеОŽЃВчЄ}з“НQьEлSіTт KуXtKzKŠЏeQ5зУДп­рвZ?Фm/Ївс ˆVFи(Тї#\сЁГ"ЬŽА4"ЋˆШО‘н•Д­тшˆЪ§"Ъ–F”яQQQб<ЂЂ6ЂтиˆŠG"*/ŠЈ\бь/ЭІETЕŽЈЊЈЊЈъQucDеgЭЧGДи8ЂХФˆK"Њ;FTЏQн)Ђz@Dѕˆˆ–{EДœQsqDЭ'EJдБˆС6ŒЈбjЃˆж›FД:3Ђњˆˆђ-ПщW`>рЊЧЉўњgVјq“nПсц{йсяџcбBbџж—ˆјMЅ]‚_іыMВCБOjwRБЛo[ЉU-/lOu1nчbгЪ –В^ккХ зУВ_'ЮлЩ~QhdYqdвЦв-ЩЦсhВПKoы&:З”гpљ-RЯvљk?Žо•OОюЮšZ/Иєі8ВиЌєэRЋIGОЅвƒRZ)rмЉјЋъХтАЅшTPАыJФўWcJ’сЭ‹яь[МœmШ:.7юЋ{6KЎЗд}r1Їјв№Sюў gdъЉ+ёФэpхБЬнЙЉўџvЬо… іЇЭЏWJ–Iѓиѓ(F’~-уП§ џлЧќ5Й ЛЬK?ѕ/KыЙќАž›_цЭУ™їKЮ‘ŠBџ<шЪљpТМSyuИ†Н*ЉYчлž>[ „ )џ ]ЃwнЮЂ§whЛжПќ*’ИYя1ѓPІ-fмYL{Eк ё­ђЖъmсTŠ%tEXtdate:create2016-04-10T10:20:09+02:00œД%tEXtdate:modify2016-04-10T10:20:09+02:00эщЎНtEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PKы™GGУ@%virtualtouchpad/html/img/settings.svg PKы™GGxДФъqDqD(virtualtouchpad/html/img/icon114x114.png‰PNG  IHDRqržs*Ж )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр nЫљY9ьIDATxкэнw˜]U(№пЙ3ЩЄ'$$„BяBGŠtщ"JDщŠ‚4Ѕˆ€( HяH‘Ž M TщB(в{€tRgцž§ўXћцaf@Рxя­я;пмЙїьsіоkэЕWп…/ц|ŸсЏГд0FЬЧˆїшљ4ƒJЖ"НіхМч›ХђДчэ‡™z&ЏnЦЫПс™ЧxuЦ_єEпај9л}›ючГмNЌy#‡БјbЬ" ЭxKЃ+оћЊЇё+†чXnЊDѓX^яТ“=Йя^›—'vЂѕEŒџo_Pќї}ъ9#џФžoГъPцк‡Ўoе3ѕЭ…k№ўюмў чпРЭЏќ^жu#7цŒђ~+щ`Rњџз—u•№о‰>K­Eх…ЯŠ™ЯИ{œСКГ_†!XФџ‡џ ДЖ№ќъœжЫždц”/сЁУтЬы˜КеWO­џ/]уЮфˆfцXїг0є)+q…c9zo6щIЅч…ћљА V"N‰жќїГBzд4_Ÿ !RHBœјЌP 7rлцќїГBWTђчf<Œ'qЇїў+˜qWяР‘џтѕ;ыrАт•ќi2Ћьё™ЦО‡аыWєYЎgгДнЮ лњЄ (6ХRyR'ЃЅ5ЎРЪ=)†жУІX›`VТлSм‹S\ў˜ŸЂ7† жЬлŠщŸ2yЈєЅи=q4ze„Œћ„6PLЅиНI3уfќ‚iл1s{ЦпЧдnДЬ =ћ™0y7МЧ ђкqџч™ЪЙGАбЉŸі†Ъ?шwћгoњNІЁ‰тDŠ)^ˆ‰Џ,Šыc"‹gБІb ž ­Bz‡.Gвуq*чвt=жІ2…†ЅщёK*MДОРє?а2ž)gв|1г~CZ зRќ‡тUŠУ)&Ѓ;VЧosЧЋmˆЈ-b(жЪїЏCхЃ:ёK Юа’ћно„Ю“ліЅx‡Д iвp-0~оПœї&1с|вŸŠШ ИјзА z|тŸМПя.ќі6іZšтЎ{-Нgžс ОˆžЭљћ;00OЬЬŒ lA…t!NŠ{КаИ нaиq пŸЖbŽлЈЌEгLz.†ЋiX”žћRЬKѕЯL}„–c˜r 3чfъw™мТ‡псныx}І>IЕхЏ№w*Sќ)о_ќ]ЌА~1щRюc­П)N3ЖІи О+nІr‰иcС|я _щ­A†R\'иєVЂ'“_с#xmQ>Zћw†Ч—rмQќі‡Дб ЛМЧўKpьPКџЛЃЧ5ЭмЋ0|EznˆG2ђ(vЂјmtвJЧхЗЬРы”џІсQ$cЁНq;УOЇїСє\›.Я*evicZ fМРЄ3y}O^8œ—eќнLй– QlI1“(ўDbХfX^ЌдщГриќwU‹ sQ93>;†тWщФj­эЫS3вћcЃ цЪ”7№бЊ<ћ7оњ6еNїпё7qp %эн7Ъyч3Я†=ІiAј€yFги-цeu QPіLJБ0.Ч24Ю№,w9ЋНШ‚ЫB‹Eџ/р]в3LН‰ЗšyыžИЮфо1ЁХЯ3тš)Ў+b&Х5и0#ЎэLЕфё%Б_Ю(ц Єњ0XoqрD mкЗЈГё ОEё/ІяТОЧ‹? ѕиЮєя›йy3žеЃ6]ы“8ы<ОЛ{‡\пaШ*4\Kq6ІaЬ#(mВ тžЄ=)Ёы3 л–o]ЪЪПbаКьј?BкЇС›LњЏХƒ[№d…IsQ@eVd‚ƒ…„н•ЂJБFžБхт;Ѕ:ћ,‘ЕэЃxDE3ЉгJёPLDЊаuК“е^`­…И7•-О"фЭзбВoЌЩнз3zя6QžGqaFNЭкYСbB`BбˆyХ^wbFh5п_ƒђ3 !РЭ‹ўTІRˆ,ax&šё8…ъ<{/DљxG§Жћ;п‰}от’gитлэЖљѓўiиЉГmўvi4-L“йъN6{“ы‰Эџk ­ћѓіЛмЗ-їŽgТTnУцBMb…еtм”?/œ…ЃFlJёDFx“ ЈKСЕ9*ѓЕ(ХЯ(F`W*wa@ЬѕŒCxr#^ю#ЙœŸNuЭŒФMOуТп3№ѕіZєifЉчшљSвQX-ыQ;­‰лR>Jџeйa-6Hг1ŸsfЄu-%еSc€-kа: ЏаА]GS”tН‹Ц‡JёE хhZ•+?фгЈl@Бž~.Ф"!dф”ъЫМјŽиKЂxŽ4“bЌ’я™ЁО–Bљo‰ч7 {= /1щUю;‚)};ъэы—Б§о<:Е‘тжyЈ#6ьЧалщ6šъrј–Ёrƒ ЮГ)юІЁ meїЙЙ•Яd&ЈУЬѕyяbЦќœwЎaмx&ПШЬА"їcњQЄ3шжТРГix–~УшГ&}пcРHїcа_iZјП{—ЃYk†~‹ЋžцёПвђLшД•VЌaTіТ‘5gо$ќ‰ДiUќtХљйЧRь&иg‰ЙsлЉЁ#K8“жmшбљОЭшы2q|їcХ›ytн‚ac9џОuf{ЗшЧтЛвѕћјYdПŸГ>N`сћй}>–?‹Ђ‡O…Д!уNbєX^kцЭ•ѓCЦіcrAк™т!l”'cЫ<Н‹~-ўЁhЅЯ} |š!?dX№ †пMп‰t™„Е>BЧПЮMЗsывL?8яƒUЬKБh Ги‹т#Š9…uh]БAЭ{bmЎZrл§(Ж"5SМЙYsGѕеZRєeђ›<2– OvдЫЫяeŸ 6ОšK^gр!ГпRЙ‘…їfюp'Х‚ч7Зщф+ЄYіuі>‡…ЗІБN u?>и”НР№і$šŸЂхdŠCЉœDeД Я‚AKІіšож*$сМ7й/ця.'§žЎѓбm}n`ЉзXcNFEяЯ(7ŸСЈзИь\ЦŽЃВeFвиќўСјi ­ИŽЪЋYeѕЂšчirфжищ2˜+Б  Х/„.й?тйёќЯАu{=|цьzjСБђЋoaшьЗtНŒЅWЄз_…458:QœB‘ Ьis?Х/ГШЇšгtоX–ћ†№шyљ@Њ?С’и–bЕL‘BЗЊ†hяЈLK†1A‹X‰u#u Й1ЦсЯЁМЇл)оЃчk,ћk~ШRбя3ја[›ѕm.Z” WQДѕ)4ЋЋ# B ™Bq7Х:б‡Ђ!,LІф>зЅГѕЙ@Па мeoЦ х‘hn7ˆcц ь=А‘EK!<њDn‚џO"MŠ LуœD—џАйGŒИЁѓЩ˜ў ю^ы–рЭ‹i}ƒЦГАЂлwTЗ?2ЫѓІт€˜ЄtnЃxqš`_Н2[jЪ“R[­}Б?iОOњ#SЦrп<} ќuРъвkщŽћни•Е2љo\z3ЏЇИX(єЛх Џbb~owвКЄ љџЃs_ЧSL1§Г•}м4Ž”ŠIНщw=ўVЇ•CгїБ]Сf§]„НПы2|5цн8яK“еХфVќ‡ђ>F.УСW3`ѓŽ'bђЛ\;ƒkч`Ъ‚a )~#и`+і ђНL?ЄxL] nлћiyТ„QКЋS9PАІѕ(о+qvН­fB+IUWЯУѕc™qhX•‹](vЯ„4#дЭuЕЙšбцџХ„‹Ў…ЪЅ•?/‡эЛ­IЛ)ЎђЧ]@e8 тЛGБт3Tоэd,тє.<ђ!•ы…Й­Šг„ёc *?ћe,”‰sv7XЈКQЌŽэ1œЪ{х9Zє(ЃŸцХ%№є'ЛФ{LJя72}зсJ–<‹9ЮУ6иGАЈеЉќ9дŠэЮaЏUiœйў Ч<СщЫѓpAѕFŠЙЉœ"Єйч Ы~‹`G|œЎ&ю(њ…$hХјЖКАSChVХ>ћнL ЏQ,˜?я‹яЉKиїRюЧРЫиn'6Мˆюш›ЯУя—т§ѓўеš‰cb~oџSybё"B> Х,Н}w е$Ћ$\IЗ2Чп9хFаў`ЋчrСŸИєhŠЉЊЛ|–Я.™йl7$юSiCNmйi Z-Yм?+њTєІјAю_M@ЈC ЙнrћщPїf„NШfГЗ)џAЧи~Жy‹.]лWz“[FpоъДо/< ъоќжмЙ?}2БќŽЂ|ўJёŒр(mлЖeХ b‹8”wѓиУBJџ8Lу™uˆФІMXb z~?Sюм‚эUуЯ'ѓЫСє™Г§С>і0' aм%OЋ[7j,е…хГХb&. ЄjЮNиеѓНгдїИ)I\EБfGq6Я’ѓ–bƒЈ­Ю6Уže=+"”рVzСїЩЦ7а0А§БН''ž™›†Bb-n !ЌјЖаkб 5‰НЙMПїЅ8)PМKšœ%пе ­ёниХЙMэ‰Ÿгxfp‡Hьо•ХКfщД?Я“М:•cияeЖ{Ђ§ANЫ‰yр{4 Ѓ(ђD^йFСЊ.bWеm“ƒЉІђ‹СЙэ(ŽЩ}˜ІОЪjЯiШяŽeЉ+іЈх(žT—^лzфkЯ)„Є8ˆrsУOgеq:„[ЗсьžЬш›е Ёб‡bЗЬBsєТ"љНSд…™f)ѕЯ§œ{cqUќV<ˆu(Ж`мнŒњНй7МOGbЗwYl=–QcЅя3шt~ѕ –{ZЛpЯ:œјІ.‘7ќ$UМ м3ЭЙУч eЭ“>ЛЁyўAqiPh1'ХE ƒ2тj{M­m5Oо:MёUq4ХВљооъ5џ aџ=Še7тt]ћcœјП~б+S9ЁЭ5ЩВoŽѓYKRйEHІ]2Ёъtš­mc6lD1a0їOl7МgЯ ю8ŒП1^VєЩv=1иъгЬw, єnПYs#O\Т”Ј,žЉЇ!:ŸТy1€4Зизњeaч;шIёkБд„–”ўmR–fгpf|Ў€#bBŠcлo‚F<ѕлж0у9HJOPЌ(VќЖBxk>TОЧГПфњЫй}W/ўф8ћнФъkђТЈ<–VuЅˆПщ<‹ўTЏў{d§ВЛиFШїOОд MЧ…OЙ9щ/ъ‘ГAЧ+ёJН›‡QьƒцˆBk˜Сn'ѓУ?ЖџРї/цgKђЪя(6Ю+†њЊЊ}ž™)Б+1ы~Хї‚b‹5)jI{mkЌx\ц иNЈѓRЬ!X\щуЋГ&8дVтд,НОBš˜Yј)Є) И€cvaслкы[ћђЫgљpБЯн@qЕ:ЋLmо[[q]cq˜уЈ,ФYќ>ыЧЭo[ЌЧјy`rюѓЧaЯ ЎшЎЂЌPHuMЊKХ5=ТМ;wиЪ w№f+$нCy>хЄЙ№Њˆ|›дi`юиDa&ЛД#i%ЪХ('RО^wхјM!Е ЩЯјтEвaЄх(—ІœB9†ђ[ЄлpП#"Vk“p)M%ѕЁ\œД2eїh—ngќŠмБ=ехлы€[YlEЊW“FRЮA9Žђ=RЁз=‘8$_MBЅ˜‚SЎœЎœлОEz#ЗН?пз€UƒŽйiC 6 іФjьХuєы+|dГAъЦSгiyLјз^РVAYi(iЛX Хe"tpjWXW]Ўй^ЭЊM‰?R=.T<˜Љ“qX6зЅšzёQ˜ЌДт–ќœ#(ўэ˜Эи-Јж{kŠјсД$-OёDW^ПЄ}ŸvзXє$юНSŽЩl0e$Ÿ‹]ГІJqЋfZђjИ › вjb/NУЁЄ}utн1kfЏоъжŽshм9Џь ЩeŒy4іЌЂ5SPЏмvВˆcC˜ю —ŽfмEБuўмCЌ8bЏљ[n[!=’'}Хw…`zЖMЫ}Ў^5‹XWЄEHOчЖ{f{эФАOцЖ=Х Gq яLх?'АрЅэyињє§[У Ё_žЛgугѕ™zfЋзКAф•…ЉЎ’‰ЗOnћЊр(AЙ’Крѕп 1§™є}4E'Š9ЃƒнзЂџэЗЉvgЬZЅсЂlqиXx@N›љLСNj э^Єš˜>щ`!Tђ`+БЗъыуІКnё{ЪідєѓŒш*?ЮыцL 5НmbžЄюи'і=-ах|De%ќKЌњ=™Й!Я-ЦКягmа'ЧмџdњЬСИ9i81#ylЋHUыѓGЄћp7ц њ@yБ-ХсyŒ fюT3АдB;Ž•§Gё.нзvНM0œUїуЄСt{ф“mопŒŸЌЮkпЃacсЁЈ`'*oуоЫdђ™нž83М+Љ+цЂ˜”kоьAшЎЮ)кЖ­§П€ ъžaЭ)ЖCџ0RЇЛHѓтЛсs4*#Иr9ЏYЊGeНи/—н–Ѓ^Ђ;ъЦ7ё›§xъrD{qУœœ§Ё—хqЎ@ёSсс>›ћe‚‘ћpx^Ё-ј•fЦ/СУЫЊsІ:|ЃQlўуqqфЬѕ ћЖпdЬ!LП(ѓ§~bO„_RNйў‹Фы‹WЈœšПŽEе­3j OИg1щfЁToAёvFxo!ЅЪ„ёAОDˆmšƒДE­ўƒХG1яЁЬЙ'=—#m4л@&чПWтzmE“кsПsљ~6˜Зфžий,…Оx”b9ЌУєБŒ}—1Cxa}о_’ъ=+уѕLD{SЪэћc,щH\г!І:йпћв<‚}HБ>}цІвA^№Œ‹i]7ˆА‰ЅеY`ƒXзВg<­Iљwс<Iх шД‹ВР2S=љЙEыЂгœЄ]ѓ=‡gCТЬьŒ§v~яLсп[†nБЮ^lН3ѓ=DSЂђыЌќwычПзЗџsзXЁГіх І m~q#ЙЃ•›їрЃѓ–‘ё6db8+ИFЊХЉўзH<ƒђКѓѕ }ЏсˆщЁк СЁѕЄкSАЃВ)krи6‹+у{нђ%#ЈІП"uяв-Ь„ѓ'\JЯ?А§­ьx$=юєеA/6ЂћFБ6vўС?сТ9ї›А№T–˜ZtyЭšе tŒФЄ­ТMуд‹r+A-эlђJѕP‰ѕI­bO<tœ0EuЫ†эЎ"ЇЁЏ: "vщfЁ#‰єЕ›а›ЪDœЎnА’пUsхdU"5‹•јьЦк/БУєию+D`;аu;6ИŠїїчŠS}ъЫ"р['…ВЏРЏ>„ю3DАЄ™Є—„ВњZGН|М—њŠ?dDUH#ВОИH^msфЯ'›W3Kм&ˆ!#ЈКиЇ†SйAd-.ђ=цR7еe7RЙC_bлшљ—Џe рj6y•Чютљ%Уk‘Хxв9ЄУ)Яѕё(…йŸббщz‘ЕГАˆ ЅЈeџvАМг2”П$§;З™"ˆ ц‘Ÿ.,.„2_ЭH[Fш%О§Z>‡šЋЋепU6у‘{ГлбTвk?ŠMXrM8ыЋFUч0p+ŒfєS4œ#J‰'ђ<ц"*AЧ+ёŸ”M”П']Gхиˆђ;"4pШ'›—„ЩЈzwVnЧRй7+ИcУbb;ѕр ЙЃI5?к;Yo›&ђ;ЎVžЕ„ЛЈf‡Ќ Ÿ&эЯLKGъœ)amм„љ_ЅвЫьы•˜o]/ хŒP? ЬыЙЗъ$ЇЛc$VВТпŒ](ч"§˜Б/Qž ђаgƒ^gгeKpєЄє(ђжgd§щy!Мl™мšwЛцIЯв)Єљ§щ~‘ї8M„"ю юЎ[ŽЦ…fЗђњѕЪ+ЛИэз<7œ†›џїˆJ]О9EЗvђ/{EЗo1s(ХJfСЪRйввёГ?}O,Хў4ч0ў|Њ КпПщКщP!Tд‚šr№QњyЖ-6ˆм†]DІаL—в˜=энеуnjю™ђ`J\K:3>fWRЋАIVЗ”ќ–Ч;d;pёІ\бЉ~№хТЦ‹1Вђqqa,AБ˜'сц№•+Sўшѓ"q4ОCz>XьJњoЭKkŸs[К\Gy*•yд=ђ?ЋІЩ,`š ’OЛPн ХкTЮЮfЋеГSЕЛzцmmЕž)ЄTa‡MлѓЁДѕЩ~Щ&RvоЏ*>ТірŸ‘ k!!N’{П[gа1ЯЅ\„ђщˆМJ'“і`f&їkЯЕц<„ЃќX…sQl*šr„л4aкЊ Hз‰еs.eЃPЂFR&VэTŽїёЬ\‚:_ЎП?ИGЌЦHЏ счkО'Bк/ŒхІЋ!{Њgw•NЭѕ`в@в1‘s1sJ8~лН}-JЅі{wŒ$M:…В•ъхTЏ х>L:1ПgЈbkс№W’ц!  М“ъ;ДŽІ|!ˆ)mGњ‡0зЭЃN­МОЯдєыЏ=ŸIн)9)_ЇњWЪ{АЋNйy•Х&СТj:лz4ŸЦ‡saЏOо^ХаQ™ЮUI Ј6Сg + Ъљ…OБ_іѓmŒЙEЩ”Zd]}>›УёЃ\NXj&RМŸ-ў„зЃј›АьЬЌЂOУ7њdoб"ЦДJZrЄ…nЬ#qfXkвU/‘fрЪuљш_э7)†3р†№А—рзT6Э?ќО^16_ђЪ"tбѓ=뇕ϣБЯХђsZЬЊ,—^%]"\NуqІQЙ9сСIп˜‚7BE+ЖYУЕА”O)‚д1ЋсD-‡ŠАЛ#ƒвg\Ц[gрwэ71ˆ.‹вrш‡е“д=ђ+хЮюKёŸ,ъ3!{З'уТl 8šт4ŠUѓ§лц€ЈZМЬДhšК‰Ф›‚ъўB59(„БolOЙwо&&ˆ4яi!XМѓІ#Б*Ц„4(ŒЬ3чЅ§i^ЎwВYџ•r?Џl"т_ВЙ+uЩо‹i8Šтс‘“еi‚ѕе|f-87ЗDК;пГCuœDqŽЯœ.ЄИZ,ЪхТuvі‹Я_{xЗ“F‘ж Н­”ї‡ŽмY}КŽ›ёТ] uШTlЮиЭГrћЭzў‘љЗ йtž-˜s'>'ђ ŸР\­xъ™Т~њїЌZLЫю>ž/Q`bошŸУ“T/ЁGgћ)Ќ›їЩйгЦDЭЙo4`щ вВТ ПY„Ѓ”?Ц/;nк1G hLЗцU/p ЏnЫдъ5wкТ№s™ћчŒљ€J-U­&АLЮЪmЪМіІ8+~/ +ЭЌŠLmнQЙюYъIЪEѕŒЄ8CX…ЎЄх“†ѕЏ;љъ.іsТ‰№эТпIмiЧ‚ЭЕйјњ"х в/HwFШ]e^8ўй~гЙ›Xp*.ЬЫV_šю„0ЗzRЩDСJ—"­AKe/ЪWтJУC:KЗзžл6цЖЭТ8Оiу2*_ЅЌ­ўIОpщ-aC~FИћz ЙaŽЮ›vjБIы“^ФД<‰ЃА*•7y}#о<Ћ§тˆХn,y'7gЦ”/сؘќЪѓ"иiЈШДC]Ћ™ї'5Ц REФ„vЩьї'"iѕMarЋ•BicOёмrХьљј&Ры!qЇy)ЗХR9іv†р>ћuмДs=q аѕњ‰МИƒВ3^х™ГXyk\ћЩц‹/Hїљ˜q­Y”ѓ ЃuSvїqЉkХwjљ„X=Z„+"н” ВђП$–ЇВ• І.ёлЌ(ьзCВўF@Wѓ‚HT}&ѕЭА]ЎhЗ4; ге‘?_ЫКIuOž:ъCэЋbУ_fШяпЁŽZAЬLќљ0ЈkХ]TЏŽуKГР2S,л dNћ_!тO^zь\To№ўйˆаЫ ›j­’Цз „‹‹ТJЕрЏŠNНњtЖOЃKѕЗйYЋЬћAф0”[№тіŒйМ*Fшq,ЫОЯГПЁќЇXžhуЭoQЗАŒ–њь‘OcвЖЄИSXgЎЯnЌZлкj-…1ОЬ‚в9B :=іяtПoЄЦЌ'oAБaLћЛщчvEЕˆ`нIџЪЎ9юІ5"ВЦ-ЪsT ю2ŠUюЅВcЄШЅY`iЭщw;Х~›ў-XЩмъ:у;BhYŒ4,,eпмvz6<МDz*п_Kы"Ђ&`GЪeё} …Д-еУ(Їќе­ЂтVЪщуAчўФBGЌ]НАBXкНСјЇ}HЧЭоŒЏЩБ2sˆHзHoSОFy4х™aYI+6Pп‹ћ фіћмЙэ‡с8ЎEyхCЄUIЋ ФЯ™пеEНtи7КЈ[jњ„ЄšŽІмђfѕд‚v cќЖ’–$Н‡ПфАРf!ˆT‚-Жєр™1Œ_˜ўџљф#†ЮС’ЧѓмЙlfMTЎт.Гм+eБП-,jЗ Х†ЙвROѕКтФ2~D=MюВ,Сір+#Б•‘ъе П~OЊ=œ)єъ†ь_lќ:€Ю]QЫ‡эгUФЊŒЬ";Хя•1zојk}‹j няdйЃЙЉ‰™чSщ!„“5rbM`ЉЦŽЮТN.фZ% 6œFёУ|џВYzk›6VlџЁgЭIѕ1Š›ƒ#рLвQ9ЋzTЮKљ…Pјїђ9C vкOїд’<ч 3=Тћо•<ё{–Ћ!h6XіlцК…зџ,є)йё;YАПr,ЭL”кj'j“І0 ЇZ0ђ9MnВ]Е§G Ч*“Ј>{[К-ŒЫп‘Ж &=ž‘1PЌВк9SЯFрUкŒ4’ъ+TŸŠјЬtщqњй Ё+ЮЁ^ƒ{МNї’ЏдJ‡UГNО>iKЪвж>_сOЧFыZ!цWѓ$їЄ“”ВЋЈu [џЬ’э=џХpЫ~4. щнЯKѓ‹jRIЌЊяХЛŠу…ЛvИHТЮ|Т:30МїІQм JВLё;ЇЊGœw.К}} IрСBГ€‘іЯо˜NTЅŽ‡xЁ8р‰ИŠ DyЧšn@ОЏвт›чщОa“n–Ю№“yў@њ ЄДŠд­Z~}л]IcЩXМ“ Ї"Vj­ОЭ=Йнl€ШupŠЕ1‘†•tPћk›Ф‚c.™b`›1w{іпзˆЙD1ЁŸˆe}EMr]6l}гЮцю>l:–~эT@Zф–[ƒбЇRљeДГi^qЙ<ˆ‰ЙГUqE™Cg”­(Žjш%7ЫїЗ‰ЖЄšЯ(чбAmЏЄ"0К\I$MЅИЪa"ъяФŽлvюŠЊ]C=ќ0сЏЄОЁ'bP'№шŽМѕњўЩЧ5ьЫњПтЦ}˜<=:шЯTGи=-ŠбN+Д–ьQтвќоѓCJж*JВЬ+ўЬBkчeфРЂtcD|# ŸCх=3›H}"šЏМЧчЫvEў;4<ђХЗ…˜_IŸUюyпьxХи­yx–ZR]ЏkЋ<ТBЛѓјCYЪ5ивєL.’я~тDа Ђ mоMTїд_™Ѓв[…ѓјRБ?žЯJ3D\Ю7%ŒRžГU…zQЋ;FШ@ЧўФ‡Јž.L>OP9=WӘ7ћшЊŸГ›Г›Z7тя?aЧjћYS}їbƒэxbAucb’‹aбс49GЉ}GАгщQ…АxUЌа7coж,івšl§H.-ГNЛ-Ж 3–qк/ё5ƒДхЕсЁI ‹pnВGпЮлvЌb"’њDьKЙе&Њ Q}ъЃ”ыdDдЪ"Яф?псёЪŒTЖeНAЬ}ел„@SЋен7w|оŒ”уp*хтtЯъ”WRŽІœъХЌу z ХxN!ŒТЃ9ПуІЏ=ŸоЧreЯ‡В—g‡ŒмЛ|Ю$г"OьѕУ‰ъѕƒEсŸQЁЧ˜N1:ЮЇ{<їќ„ЕюЄвŽXМРŽЌЖ2Н1лL{acŠš)mhфчЁ.Аd*эE9SТ›+'бl“Џ\#(ŽЬЯ™ю›Еа”ZTлУйunі›~.$VеГ•~сћЕъјХрњ=ЕJiPд­ЫН?цхХуь’йЁз.Ќ=[g№бюT–С)!§jЦ"d&v +‘ж| Є*ˆjDˆКъjx'феŠЌ‹жќŠпИ†tOЬЅž‚xювмyгЮ§‰%щoљѓmёЗx‰b›fŠšGН–ЎіHTйxс2нЁ}$ТšЛВи‘Б'kф—4Ј+фgвz)їlУKЯБH;HьО[.Ф­-|p:•п ajщ}ŠўT7 ќ?В…gFеxIЯьŽвcsКˆRбoEœазв…ЂВd{АC”бЌvС„ћя Сщ>ъјЙ#Б‹№2Уу"eUœ г/g1џWžдг%Rб*+ёЪ0ўййтэСВCXэЎП*ˆЅX,:\Ь“пŸ‹ЅFвкТkџїœˆљ!ХТqіFšD1ЗА(еjШНбq#ійš.ѓџяX.Ю|пЂБ‚НлЙa’иЊzDgЪ‡Ў§I`‹ЯƒФ„IЭІЏЄ…-ў–ПЪ/ъeM<К_eaєaъЯЙ§HЖ>ŠЙкЉ%гЏяЦ3хqšЖН„МиЪќоZšнж9цЄ…тЇ”уЁШy,“рYыdbш$Pъа?БO%ЛВўЧnЇGњ|ПƒКЈ'ві0‹…Іs|бч*Z;ƒrx ЋИR=mь&ѕУ‹kСОMиХюјY lтнЙnљŒ@˜Ш‡ђЛ‰|№ЬxxmњR›ђdQтeЗ*г“TЛšUnt6heм_лŸ?ЙхVIћф=Ѕ;ОЎiȘтqБžFqY‡‹ЕЙЎт„›’Ъtž{—лџЪвзх№й`й йlЏмGѕХЌRTёf6:ќ=њPйвЌs{+K §ДE=6ѓ)!Њ'qмљ'љЏaтoЙэ[‚xfƒчњёжњЬѕС|ЩЄŸQ„K„aх|Šю” ыHOЌ2љЭF>мШ,ƒV˜.Њ8­ŸН№ ъŠъzсв=VєŠЧ=ФicSЂфIQ3Žчѓ›Ўy†эПзAЙЕѓиё1ўЖoЌ’=%-B ЉUъ§9еœЛQь•уnІDЈ{qrєйuг[љ(у^ЦaОXŠлFъ‘ ГAы5Д~ {nZ\d}œYЇxЇ…[:H‘@3omфеtСQn—Ух6Яе,† AcB.m"B+в!‰узB’НQ§,С3йЯПТЕЛsрpэVє_ЈmюсдФС\§qBіцчJФEŸzїЫ|HJБn‡ЄЌMЅЏ8йeяїЁМэ‹eИѕ=”5oхљ‘т(Н6АШŸ6њ‹#ёƒ™TRЬT?Ћ/­kвВŒXŸ„eyљьД23ЮЭѓПЖNЉЁHЉqб”КьšR—?ЅдхЎ”КŽMЉЉKJM]Sjъ•Џž)55ІдTфЋgJM§Rjš3ЅnыЄдэь”КvMiЕЦ”^’:„Ї^Mi™RjК"Ѕ§Sъ9OJ=/NЉч)ѕК=Ѕо§Rън#ЅоsЄдЛОzЄдЛ1Ѕо )ѕю“Rя!)ѕю›RЏ§SкИGJ“;yпg…ЇVIiхER*6ЉЯЯ2'ЄtчїОјГЇm™вAгRxXJƒЛЄ4xxJƒзKiШ)ѕ9 %Еƒ)ёnkпдШГпс…ёqЎСlp-хэ4|›ђ‰МТ†Fю„Q?ЪољnžWЂИoжЭгc%hХA<З.ЗПнОх –ЭMМќSЪУ#”Џf›-Ў5SљЈТбCдяЊ^IЃІ/іdєxўyBЇVЋЯK?Х…qчH^м‡СЧАщG,ї/О _JмГ+•!Є&ђВ`œ,0s qpZЛ№єYМДšŽсмГкЧtJŽOЉ26ЅЦІ”ЛЄдXIЉaZJ Sтsу*)5.Rу)uэ‘Rз"ЅЎ‡Ѕд4wЌТІ>)55хЋKJsІД^”оxВcЪќїY)-=<ЅnЫЄдЃG§ъ^ІдН%Ѕю)Ѕ+ЇдcdJ=~žRЯRъе3Ѕ^Ѕд{Ў”zMЉї ”zЅ”zМ”вКЄєЬОјŠI)Ѕъ{)Э|0Ѕж–”вћ_ќyc~‘вюзІ4зє”Э—в A) šв ѕRъЛ]JХo;Z…)qмKPaцQ<6э›Š)ВqяЩ6М†ь͘;>{Tш‹#Љ~DuJЮЭ_šrAв\сјMЙ JхЏ\šћd–ХцŽЧxiЃpЃвЕ‘HcSŠqт|Š*ŽЫІЖV!t4ЁШТЮuCі„ і.Š˜q8žЫц‡д+~Е…тyц[їQž.ьЖЇPL ёOrЈ~­$KK–[ѓeе0І‰3ƒŸчілxэnЖŸТЦЫ2ч*tћY– ?єщŸi˜d“„и_|†Ж]ХдОMѓ­Œџ7œР…Уy~~Z_@БъF"@ћQflOsЇгskђШИЙж…з9Ј'НuлaИ0#%G†[Šš+ѓ„JPЬЋ ўІ6'qsгй–є˜‡ЗfпoЉЧзДKяуG[г’ѕЏЂoМSs~ЮBе(sžs›їЪџзОыCz ЂЦпІя8‘СївИЕ8]ДmэДіъЈЭЬщx—d‚-В_Гv0YjгЖm?’АtВФФЇc~А­ЧчEё;ГNџNoаВ SЭ‘эТ”Їия\є^iCGѓ=ЭечАвщ"qЖсZ1AГVл`ЁлєGхfжС”ГТ›еK=OІм—‘Џpі5,6^”Ѓ^фД_’ЮS7pзцešY…zŠ;….л—тWТ]вЎ(]ЧhЋ(Я$§t•PђљˆХrюd‹XmНsлЩmвšп;ƒтž:B+SŒЩїn)М/ЕШ‡Z6YЋˆТ{@TLО_”†~=ю)цХvД>Ю”ƒЈЖS(П7žШюW0іп|‚ьБ8;wи~\‘йYƒNe@™ЙqьITvЩГ[ЖќЗЦ$ЄГЉМХF7pмN,НO<~њ>\<™#OeТ2yn”­B mы†Їђ3ѓ{{cY*'‰0’Ѕ2Ђ›r?к 4M5ыШОb§ :Т…Vl‚9cВеђ?j)EŒ7х~[‰@В†\Oртј\тЭБз•ъ#R~ютqЏŸPН‘iзаšGћ0юіИ‘ыgiŽГ!q№ ЮXŒяќSgА(6iпћфNTrxљјežœJЮЕ8-,+&Q<YUщ1сЋnЬКЯв<‘1мг‹ЗЇQ)rhф>1!ІeIlКшЉ~zx‹'b6ф‰јVої*јeЖ>Ѕ0gЭЪ5hЭmS›ЖЅ№рŒЬ–AИEБТkFъкde›ЖЙМgq46лpqGЖ$еЂ"VвV4aЦ”Z–Ъэ9k#~ё “Яя‰АдЊ\:ŒЅЏђiа3SRUœЈvpЬРьИ­Б‘jNp™“]ьŠФџE“№Llг†QљyжГ_25‹•оBБi~ЯЄLщ љЗэ2ыЎБРšсЛ5Т7ДPЌ",JeЧё bUoœ#цjI,Е:ЋeФќЈfпхяѓsЮЄи-ЮШЌЇж DLЭm“Јхкœч" XOeЮ ^WGпц•hžзg(avз9ќроњXiЂdЋћpЦ џь9EЕ“eZХбъпЭƒ\•ЂцЬ›~Ъ‘фRрdв‹TŽСoђїSђо[[aЕUв’…Ѕ$Nќ$іЈШе3ŠWst\ѓlmЋСЄˆ]14вГJ‘Ѓђ š‘л—ѕЖГи`oa ŸŠл#<ХЄр|Ёz§Йjžс"ї#‡`ЄEуджshН—ђ:+J№ФЫь9’'>ajя‰]ю`ЯѓљѕІєпљгп),+ФыšswЄѓћЖ’мtГRŠ7ƒ ™тg"Ћ–RДгОЭэХЂXAW*ћˆj‘5czЅЖ5IЖ•тfЯЋl‚уеXл+”W#В™%Е'л.Ў~Я=HogЗвxЊkч”ОЃЬЪ’юо}ŸфoMкIжыDЫiЭž}8|oпђ…Yƒ‚Š?KіюЄ˜T=№}СК‡˜u[ЇYЏqМп\тTЗуЭŠУщІЈя­л AЎ!œЭГђ$;‚Z A)ЄдwI7“ŽРЄDrьуџЭЄН6ПКŒЋvЄeЬг2C—5и&ёЬZ›~ўџѕПЙЪIŒњ k"щ‹@eVlсюЅi~їЋмџ зєИby_ч "ov˜gQŽ~•бПu_ƒСўпvUOфЩ.xџWЧYWzБТї9m-оэAкњЋјџз0^Й•#пbЉ%кЯ^љвЁщяЌ:„“ЮЃч1f›8њ+ŸŒoаеВoџŽQopЬК,=….~l|ЮzK37ссю<в‹ОЫГт-ЌЙK~Фа’~ вѓx†LЮх| ё`пXЦŒћm&>Ю”?ёох<о‹ХПOfj7R?Цˆw ŸХ‘ђYЕ.§чcЮeщuнЇ2р‡4\WОъ™ќ a3ЏdтІ.ЧДя2Ж/уŸ$§ѓЫxСџБU…‹№Ќo—%tEXtdate:create2016-04-10T10:20:08+02:00:УЕ%tEXtdate:modify2016-04-10T10:20:08+02:00KžЅ tEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PKы™GG4НOII&virtualtouchpad/html/img/icon48x48.png‰PNG  IHDR00­›эO )iCCPiccxк•‘gP”‡†Яї}л m—ЅУв›T) HYz•^E–оY–"bCФDiŠ Ђ€‚Q)+ЂX ŠXа,”Œ"*(їGюLœ{'?ђќzцwЮ93€"€ŠЄЄ ј~.іьа06|G$/3ыуу џШЧQ@Ќ‚%:&“ЫЯKч \аЪЄ ЃРŒJJ ч€Щ @n3ю/fд_>L~€ŸŠ бтОѓЈяќП{TИ|ABlL.л?-VЩagњЙиГни>ќДи„ф˜яўWх@“+pHKпФOˆ‹АџoЈБЁ‘ќ§‹їО€ТќпџРwНДFЮЖяя,Њ {€єгП3ЕЃЂ…]їxYќьП2( LEP-аc0+А'po€Pи<ˆ‡рCфУ(‚иЁъЁ Z ЮB7\„kpюТ}…g „)xѓ№–!"t„Ш Jˆ:Ђ‹#ФqB<?$‰@тT$ ЩGv"%H9Rƒ4 -ШOШфrFž Ш,ђ'ђХPЪDP дх \д @зЃqhš‡Ђ{б*Д=…vЁзаЛш(*Dп  `TŒ…)czsРМБ0,уc[БbЌkФкБ^l{€ Б9ь3Ž€cри8=œЮˆус2p[qЅИмI\Ўї7›Ч}Угёђx]М%о ‚Учр‹№•јf|'ў~?…џH XM‚9С•JH$l&”:W У„IТ‘H”!ъ­‰оФHЂ€XDЌ&ž"^!ŽЇˆŸHT’٘фL #Ѕ’ H•ЄVвeвišДD#Ћ“-Щофhђ&rЙ‰мKОGž"/QФ)škJ%‘ВƒREiЇм ŒSоSЉTЊе—š@нN­ЂžЁоЂNP?г$h:4Z8-‹Ж—v‚v•і„іžNЇkаэшat}/Н…~ў‚ўI„!Ђ/т&-ВMЄVЄKdDф­(YT]”+КA4OДRєœш=б91˜†˜ƒXЄиVБZБ bcb т q#qoёёRёVёлт3D '‰h‰B‰cз%&C•сРр1v2š7SLS“щЦLd–0O3‡˜ѓ’’&’A’Й’Е’—$…,ŒЅСrc%ГЪXgYX_ЄЄИR1R{ЄкЅFЄЅхЄэЄcЄ‹Ѕ;ЄGЅПШАeœd’dіЫtЫ<—ХЩъШњЪцШ‘Н!;'Ч”Г’уЩЫ•{*ЪыШћЩo–?&?(П  ЈрЂЎP­p]aN‘ЅhЇ˜ЈXЁxYqV‰ЁdЃ” TЁtEщ5[’Эe'ГЋи§ьyeyeWх,хх!х%M•@•••чЊUŽjЌj…jŸъМš’š—ZОZ›кSuВ:G=^§њ€њЂ†ІFАЦnnMiM7Э<Э6Эq-К–­V†VЃжCm‚6G;IћАі}TЧT'^ЇVчž.ЊkІ› {Xwx~•ХЊдUЋЦєhz\НlН6Н }–ОЇ~~Зў[5ƒ0ƒ§п M “ › ŸIЙѕ§iЌcЬ3Ў5~ИšОкyѕЖе=Ћп™шšФ˜1ylЪ0ѕ2нmкgњеЬмŒoжn6kЎfa^g>Цar|8Ѕœ[x {‹m->[šY ,ЯZўaЅg•dеj5ГFsMЬšІ5“ж*ж‘ж жBЖM„ЭQЁ­ВmЄmЃэK;UЛhЛfЛiЎ67‘{ŠћжоаžoпiПш`щАХсЊ#цштXь8ф$сшTуєТYХ9ЮЙЭyоХдeГЫUWМЋ‡ы~з177ž[‹лМЛЙћї~š‡ПGЧKOOОgЏъхюuРk|­њкдЕнорэц}РћЙІO†ЯЯО_пZпW~F~љ~ў џў­ўьЪžjfі‰…Е-;— C BЖ„м • Mэ #†…5‡-ЌsZwpнTИixQјЃѕšыsзпо Л!yУЅЂ#7ž‹РGGДF,GzG6F.DЙEеEЭѓx‡xoЂэЂ+ЂgcЌcЪcІc­cЫcgтЌуФЭЦлЦWЦЯ%8$д$МKtMЌO\LђN:‘Д’œм‘BJ‰HЙ*‘š”кŸІ˜–›6œЎ›^”.ЬАЬ8˜1Яїр7g"™ы3{LAК`0K+kWжDЖMvmіЇœ œsЙтЙЉЙƒ›t6эй4чœw|3n3os_ОrўŽќ‰-м- [‘­Q[ћЖЉn+м6ЕнeћЩ”I;~)0,(/јА3xgoЁBсіТЩ].ЛкŠDŠјEcЛ­vзџ€ћ!с‡Ё=ЋїTяљV]|ЇФАЄВdЙ”WzчGЃЋ~\йЛwЈЬЌьШ>ТОд}ілю?Y.^žW>yРы@WЛЂИтУСoWšTжЂЪ:$ЌђЌъЉVЋоWН\_3Zk_лQ'_ЗЇnёpєс‘#vGкыъKъПM8њИСЅЁЋQЃБђсXіБWMAMЧ9Ч[še›KšПžH=!<щwВПХМЅЅUОЕЌ mЫj›=~ъўiЧг=эzэ ЌŽ’3p&ыЬыŸ"~ztжуlп9ЮЙіѓъчы:Х]HзІЎљюјnaOhЯ№ї }НVН?ыџ|тЂђХкK’—Ъ.S.^^Й’weсjњеЙkqз&ћ6і=Лr§aПoџа Зn:пМ>РИrЫњжХл–З/мсмщОkvЗkаtАѓг_:‡Ь†Кю™пыЙoqПwxЭ№хл‘kм|ші№юшкбсG… G?žy’ќфнгьЇKЯЖуЧ‹Ÿ‹=Џ|!џЂёWэ_;„fТKŽƒ/§_>›фMОљ-ѓЗхЉТWєW•гJг-3Ц3ggяП^їzъMњ›ЅЙЂпХЏ{Ћѕіќv Ю‡ЬOНуП[љГєНЬћL>є-ј,Мј˜ђqiБј“ЬЇ“Ÿ9ŸО™^ЪY&.W}еўкћЭулјJЪЪЪ.ЂМPЇюБ cHRMz&€„њ€шu0ъ`:˜pœКQ<bKGDЊ#2 pHYsHHFЩk>tIMEр  €Х˜uФIDAThоЭкyœUе•/№яЙUEQ E128aD1<‰C'"1ŠХ1Сй8Dэhчu;ХЦhь<FХ‰(AF”œ­ЖQPA‰eЄ ŠЊЛзћу(b—љ˜Žяѓоњ|јpяоћžГ~{­Нжo­]™VЅцxЈсШ;јZ?њЌЃэ-иeџwЅЯг0—ї№ќ<žьЦKГhќјsќ~ŸŸ0i!ѕУ‰јџрп­Ќz” ‡2фКOk›m|wNZШИЌл:|•7Rz‚l3šБ3‰ZтЌУ\МƒSЩЎР}ddЂКј]ƒ0mА Х\-і –P~‹ц™xp[uЮч‡KљЭЅЄ…лј˜SoчжЮд3ш6ŒžgбЁ?m‚вт˜D›д ЄюjЎЁэ…TО@У{lxOY?œЦ‹‰a”V‘uFwВЩцрMВЉИlvСEЄi<›/`E?>8›ђа- >Ы9з2хЛxЎАп'<В#§>€ВЫйt?—ЪvљnЅСTпЧNј‹x }gR7Ъ{)=Oщ*šІщЦѓС ,Кˆ…;№—ЧYЗ^Ѕє$Ž';ч‘M"{Џ“M&ЛЩ.Ѕщ"VМЦыKXџи‹nсјyМ:!Ѓ§jюЏbT-tИœСWQїKЬ'.ЅђW žЦao0t0ЕЯџ}ЇВi–мЫ‹MЬкžПAvй“8п!‰#q.йВЙ9Ј,#;†UG0ыiжouЉћч{Og5‰IGR[WБ‰С3ш9…И‘шDЭіћЧ}LЧv­XУyЌљ6œHу3ЄзЈiЄjЏЄУdћЕЌѕ,ћПžУЌ=IЅkp:ОMv2ЦтфаЗ№Нм*ЅХ,УьЪ'@§?Ј’oпGэhшњ>]&Pо‰˜EЧaŒЦЗ&RU(ПБ‘y+™§ я\ЬЊWh@Й'qUїS§]:БУЃщ5–Ќ#Ўф{ єТ”пГщGdg“НJvn ;Иь$t$ОCмIЏУщ1’їAзGЙ8cс$ŽЮі`зщuAnЪь\NћЃ'Sъїyuў+ѓnЇсЬЂtй;d/c іGЮФcTЌaЛžА’щеœoDљІvчС 4MVЪ-‘]‡Љ…ћЬЦн9 ЧRšШЂЫ˜Л‡УœN%z явvЉ Э?bЗFnЬ•OќОФѕ‰™3љЄ>Dй(b,б—4‡И‚ИhЦ—Шz“~ЪВ“ље[\w/‹СTьЭ‘ƒ8є,Ъ3(ПNъAк”HЗRо5зЇ<†єv>зё(*КnqЪоУKдŽƒв§TМDšLЉУ{вy^ОlўNмБ=мCі&ёsRoвPRв‡ЙџЇ ЄЏф вЗIIљy2žЗЮцІ˜ЙwPѕ Ч}Ф€G(O"Ij_(ћ~h0Љ™t;хЅTЌЄть-j•№c(=†ž” л.|Й!_Вљj=‹•ЋŠ$s8i ёRii%iiR?R}1ОŽ4ЌtйwљpOюЙ•З7цЯяБ€с‡‘]Fš’[;}t&i$Љiщ=R™ьNLл:—Ж~| 7QЙOЁчљ№ђ‡yэВsHWvЩX^@Њ#M›+š6’о }@ъ“[c+ 7IЋpЫ{ѓxM‹ѓw|e5нnЃ\QlЮ^јЄЭЄ§‹w|3Ÿ?ЖЖ­тЩќХххєšAUA›ў kіСуФ=Є‡ˆщФгЄЋ‰AЄЅ…‚э @g/mШ•(_Mљ{4згќ&хрЅCXњPal MWа|MwаМˆђ\R'b?вЧЄW‰xЃ%4Wn§4ƒx-ч/=+0<~џ6 bй[yШ‹_цџ[G<Л†ОФЕd_"О‰?“u%жP}н? нХdWсФœ–ЌюЮЮЈ<”Сgёо=TМNv-q3 яRп‡ІЉ”І“ „лZ№bћГ2ЮЦiљ№кЃђ]Ш†‘]ƒуа…ьВљdЇ[4€Д}FpњdіlЄ§vrТЗ kЈžйЂШб7px#йhє!юeC^YХЄ™дЃд+waЏД юЇќ взБr›ьљяФюФ‚bчПƒФ‰dџ†ЃQ[z•ьд|mІ1ЖпЌ\˜+ч|Кзх\>M%{Mdт.В}quшYмJvWNƒуeтМS7`ѕ'Ќ}іѓшxхЛ н.!—gшИ]ZжЕфЙЄ&.cеA”kѓсž'SеЛˆЫg’ m*Тц{EœўђФ|Ўм‘ђЁ”ЇчЃШціЇДячSВЩv+ОЬЫcќ˜ИЏЗр5твƒ,{Œ 9хгg5u7QnSФћЗЗI`Ї“ОJj"Э'Н[№˜•Є;)Пˆч>ПвŸ)П/ђЮy^БЌђ(ioJ'ёўl>lЂКЂчx–6S9>‘ё#ВОФёXT”ŠGхЌдdЗ€~Hќщз?~–G 40OЂоjЭ/’n"ОЦкY2"ЎYЧ џ$ў)БЉDz‹ђ‡Є]‰бyr‰HЫI.јЫсФќх АРlв8в вcФ6чЈ…JL#†ц.б0ŒзўыШŽbШGTЮ!нKBNœI:Ќє&хUyŽбЄ“ .єѕ|cўaYH,$н“Ÿ‹[ГРdвnЄ}IЏ№jзчSƒгЅ=хўЄS Ю^_ьv&N' Е)јвтРНї˜PœГ/]‘е-S-g`^‘хžЩMџV=яўаwo чнf*яЮw ыШcВz, H:„ш/џуњЧЄЛ[\ио­Y`Iq№nЫMЖj/ЫЇЊ‡Гп+yЗ $ЦфKt#-&-)ŠQэн+ЇЮщK˜љЙѕќl™VP ђ1Пqoю:Љ”ВЭ˜y!Э?ЮчїэF—‹(ї }BšKЙ>ЏЪblž­Ѓ[f—К’Ў'оњћtmUfW‘FчЦmщt‹ž%‘ПДм'7лЫ{ёюУљєЮї1dх“~‘“ПИŽt`hхеЄ!Й…тhтbЬљќЎШФKH{Џ~€јвФЏбх‹˜љ­|Књ ­Щ‹џєUвУФCФ]Є Ф/ˆыIп(jу—IЩ{Іџ Фymz.О ёt^EХXв$bЗ3§4ххзVГнё4Ю]Љ|Q…тЄGˆ‰ёЙ…в=y}ё…фщЄ[ђА'тЕж,№tQўэAЙ х“PХьСќљр|IПk8№ЪуH;RО•ђŽ ячEy\œ3гhРš/РsEanЮrЗЕjK]^tуСЊ‚&,чƒ><ѓCіЄ4—#Џ`ђ%Ќl#ъs—ЫЦц9цЖд./ўЗх-џ]‰пIl—м [ЪнПЖРЏѓ•ЮЫЭwП%НФ3ГXЕ6_Жчеьн–ІЄeEdИ?ЇуqСвdвuЛ]<џšЧ}~ЅЫЯ?)ОЬ+FЏМРoеqCЮід‘ Ф y‰ш~ЬГг9эЋ8n3Я-ІљEЮШŽ&{“нGЌ$ц`WєЇу Л”џУZШvЧFтmДП—оƒЈйТћŸ(Š™EЄKˆC0рг.43ч8Vэ„П7љфG?-ŠœЫ‹Ўн9w?šўуx`‘йZ–ŽЄќйCd•E­ ;хн6uХїs"#‰ішНUы.ђ”aEDлкˆšEэњFДћ—ˆv›"кџ4Ђ§БНЮ˜ёУШх…ˆ;–FдэQЗCDнќˆЮћDtО>ЂѓВˆ.‡FдuŒиџ™ˆUчФgЪтн"ЮП т’XqоgЏ{gSФ>у#Ж[бѓЩˆR—-їg§ѕ'сдˆЊёег#кюбvVDЭЩ5ˆh7 ЂКwФ™C"6Ÿ‘?tљ§УўgDЛ•#jЇFtК>ЂnDDнМˆк'"іН*bх˜ЯVlмœ–ЫМёгџ€e{-‹ш}`DзiY›-П[ЖЂФВЩ` щї-ќ>mWdОEyЧЭЙ<ѓG^)ngњЇ ЂtjС{VPО„r/Ъ§ˆ+љш">§йuрзщz}zГУп }kvcУ/ˆчй|бyЫЬ;–˜ОcmШ їђ“Ÿ)ј}*ј}ŒaхP~9‘ц‘Уq1шšч@з“Ж'О”ЧэїЫЏ~FccыŠХ37ѓддќю 5iј5_ЮкЉy­НЉГЂo•^czS%џћbN]J/б=Џ‰ГƒШЮЪ3lVЪ{>ъ‰ќІФ˜1y щлЁ3їjВШЮ$."Л эp>wќ‘UПуАЏPї'y#”МЛёg*ŽaгžКˆZХˆіЌэСг}yђкŒТ7ЫџЌ КЩSf*Ц›абБXзTЬ•Ая~њхг˜ЖšО•y;џ Mzт’Ї˜Л# CџпџБЧ†љг0ЮŸAзMŸж6ћl }weџa|ѕ ˜Hчэpжпe•џЖD=MgY‰чсЅЧxџіжVўx%ЗPJ%tEXtdate:create2016-04-10T10:20:10+02:00Х†SL%tEXtdate:modify2016-04-10T10:20:10+02:00Длы№tEXtps:HiResBoundingBox157x158+0-1Џ “ўtEXtps:LevelAdobe-3.0 EPSF-3.0 ›pЛуIENDЎB`‚PK­@ŠHђиРТm6m6virtualtouchpad/html/js/app.js/******************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the Free */ /* Software Foundation, either version 3 of the License, or (at your option) */ /* any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY */ /* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License */ /* for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /******************************************************************************/ exports.app = (function() { var module = {}; // If any checks failed, abort if (checks.failures.length > 0) { console.log(checks.failures); addEventListener("load", features.listMissing); return; } // Automatically refresh when the AppCache is changed if (window.applicationCache) { applicationCache.addEventListener("updateready", function(e) { if (applicationCache.status == applicationCache.UPDATEREADY) { document.location.reload(); } }, false); } var ws, touchpad, keyboard; module.ws = { onOpen: function() { touchpad = new controller.Touchpad(ws); keyboard = new controller.Keyboard(ws); // We are now connected document.body.classList.add("connected"); }, onClose: function() { touchpad = undefined; // This happens when the server closes the connection messagebox.show(_( // and must not be translated "Connection closed. Please click " + "here to " + "reconnect."), ["error"]); // We are now disconnected document.body.classList.remove("connected"); }, onError: function(error) { messagebox.show(_( // Do not translate "Failed to connect. Please verify that is running.") .replace(//g, document.location.host), ["error"]); // We are now disconnected document.body.classList.remove("connected"); }, onMessage: function(message) { var reason, data, tb, content, header, stack; try { var json = JSON.parse(message.data); reason = json.reason; data = " (), " .replace(//g, json.exception) .replace(//g, json.data.trim()) .replace(//g, reason); tb = json.tb; } catch (e) { reason = "unknown"; data = message.data; } content = document.createElement("div"); switch (reason) { case "invalid_command": case "invalid_data": header = _( // Do not translate or "Failed to send command: .") .replace(//g, data.xmlEscape()); break; case "internal_error": header = _( // Do not translate or "An error occurred on : .") .replace(//g, document.location.host) .replace(//g, data.xmlEscape()); break; default: header = _( // Do not translate or "An unknown error occurred: .") .replace(//g, data.xmlEscape()); break; } content.innerHTML = header; if (tb) { var row; function start(targetEl) { row = document.createElement("tr"); targetEl.appendChild(row); } function add(text) { var td = document.createElement("td"); td.appendChild(document.createTextNode(text)); row.appendChild(td); } stack = document.createElement("table"); stack.classList.add("stack"); stack.classList.add("collapsed"); // Add a caption to the table var caption = document.createElement("caption"); caption.appendChild( document.createTextNode(_("Stack trace"))); caption.addEventListener("click", function() { stack.classList.toggle("collapsed"); }); stack.appendChild(caption); // Add the stack trace for (var i = 0; i < tb.length; i++) { start(stack); add(tb[i][0] .substring(tb[i][0].indexOf("virtualtouchpad"))); add(tb[i][1]); add(tb[i][2]); add(tb[i][3]); } content.appendChild(stack); } messagebox.show(content, ["error"]); } }; /** * Open the WebSocket connection. */ addEventListener("load", function() { // Connect to the WebSocket ws = new WebSocket("ws://" + document.location.host + "/controller"); ws.onopen = app.ws.onOpen; ws.onclose = app.ws.onClose; ws.onerror = app.ws.onError; ws.onmessage = app.ws.onMessage; }); module.touchpad = { onButtonDown: function(button) { if (touchpad) { touchpad.buttonDown(button); } }, onButtonUp: function(button) { if (touchpad) { touchpad.buttonUp(button); } }, onMove: function(dx, dy) { if (touchpad) { touchpad.move(dx, dy); } }, onScroll: function(dx, dy) { if (touchpad) { touchpad.scroll(dx, dy); } } }; module.keyboard = { onPress: function(name, keysym, symbol) { if (keyboard) { keyboard.press(name, keysym, symbol); } }, onRelease: function(name, keysym, symbol) { if (keyboard) { keyboard.release(name, keysym, symbol); } }, onAction: function(action) { // Get the layouts var ajax = new XMLHttpRequest(); ajax.open("GET", "/keyboard/layout/", true); ajax.send(); ajax.onload = (function(e) { var result = JSON.parse(ajax.responseText); var layouts = result.layouts; // Create the select element with all its options var select = document.createElement("select"); for (var i = 0; i < layouts.length; i++) { var item = layouts[i]; var option = document.createElement("option"); option.setAttribute("value", item.url); option.appendChild(document.createTextNode(item.name)); select.appendChild(option); // If the layout has the same name as the current layout, // make it selected if (item.name === this.keyboard.layoutName) { select.value = item.url; } } document.body.appendChild(select); // Remove the select once it loses focus select.addEventListener("focusout", (function(select) { select.parentElement.removeChild(select); }).bind(this, select)); // Update the keyboard layout when an option is selected select.addEventListener("change", (function(select) { if (this.keyboard.layout != select.value) { this.keyboard.layout = select.value; } // Remove the select once it has been clicked; this may // trigger the focusout handler, in which case this removal // will fail try { select.parentElement.removeChild(select); } catch (e) {} }).bind(this, select)); // Fake a click on the select to activate it var event = document.createEvent("MouseEvents"); event.initMouseEvent("mousedown", true, true, window); select.focus(); select.dispatchEvent(event); }).bind(this); } }; module.toolbar = { onHelp: function() { window.open("help", "_blank"); }, onSettings: function() { if (!app.settings.visible()) { app.settings.show(); } else { app.settings.hide(); } }, onFullscreenOn: function() { document.documentElement.requestFullscreen(); } }; /** * Remove the toolbar if SVGs are not supported. */ addEventListener("load", function() { if (checks.failed("SVG")) { var toolbar = document.querySelector("#toolbar"); toolbar.parentElement.removeChild(toolbar); return; } }); var settingsOverlay, settingsView; module.settings = { /** * The name of the class added to the settings view and overlay when * it should be shown. */ TOGGLED_CLASS: "toggled", /** * The name of the class added to the settings view and overlay when * it is sliding. */ SLIDING_CLASS: "sliding", show: function() { settingsOverlay.classList.add(app.settings.TOGGLED_CLASS); settingsView.classList.add(app.settings.TOGGLED_CLASS); }, visible: function() { return settingsView.classList.contains( app.settings.TOGGLED_CLASS); }, slideBegin: function() { settingsView.classList.add( app.settings.SLIDING_CLASS); }, slideEnd: function() { settingsView.classList.remove( app.settings.SLIDING_CLASS); }, hide: function() { settingsOverlay.classList.remove( app.settings.TOGGLED_CLASS); settingsView.classList.remove( app.settings.TOGGLED_CLASS); } }; /** * Initialise the settings view and overlay. */ addEventListener("load", function() { var firstTouch, currentTouch; var i = 0; function dx(touch) { return touch.screenX - firstTouch.screenX; } settingsOverlay = document.getElementById("settings-overlay"); settingsOverlay.addEventListener("touchstart", function(event) { app.settings.slideBegin(); // Make sure we have a description of the first touch firstTouch = util.cloneTouches(event.touches)[0]; }); settingsOverlay.addEventListener("touchmove", function(event) { // Find the new incarnation of the original touch var c = event.changedTouches.identifiedTouch( firstTouch.identifier); if (!c) { return; } currentTouch = c; // Slide the view, and make sure to snap it to the edge var d = dx(currentTouch).toFixed(0); if (d > 0) d = 0; settingsView.style.marginLeft = d + "px"; }); settingsOverlay.addEventListener("touchend", function(e) { var d = dx(currentTouch) / settingsView.clientWidth; if (d < -0.15) { app.settings.hide(); } else if (d > 0.5) { app.settings.show(); } else { if (app.settings.visible()) { app.settings.show(); } else { app.settings.hide(); } } // Make sure to remove the explicitly set style to allow the CSS to // decide settingsView.removeAttribute("style"); app.settings.slideEnd(); }); settingsView = document.getElementById("settings-view"); settingsView.addEventListener("touchstart", function(e) { e.preventDefault(); }); }); return module; })(); PKы™GGE5њ~~#virtualtouchpad/html/js/lib/init.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ // Make sure exports work exports = window; PK{>ŠHš2ЏFЏF'virtualtouchpad/html/js/lib/keyboard.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.keyboard = (function() { var module = { EL: "keyboard", /** * The class used to mark the root element that contains all keys. */ KEYS_ROOT_CLASS: "keys", /** * The class used to mark each key element. */ KEY_CLASS: "key", /** * The attribute of a key element that contains its key name. */ NAME_ATTR: "x-name", /** * The attribute of a key element that contains its layout ID. * * This attribute is used to look up keys without SYMBOL_ATTR set. */ ID_ATTR: "x-id", /** * The attribute of a key element that contains a general action. * * Keys with this attribute will generate. */ ACTION_ATTR: "x-action", /** * Gets the value of a modifier by reading the class list of an * element. * * @param el * The keyboard element. * @param name * The modifier name. This should be one of the constants in * module.MOD_CLASSES. * @return whether the modifier is set on the element */ getModifier: function(el, name) { return el.classList.contains(name) || el.classList.contains(module.MOD_CLASSES.BOTH); }, /** * Sets a modifier for an element by modifying the class list. * * @param el * The keyboard element. * @param name * The modifier name. This should be one of the constants in * module.MOD_CLASSES. * @param value * Whether to set or clear the modifier. */ setModifier: function(el, name, value) { var other; switch(name) { case module.MOD_CLASSES.SHIFT: other = module.MOD_CLASSES.ALTGR; break; case module.MOD_CLASSES.ALTGR: other = module.MOD_CLASSES.SHIFT; break; default: return; } if (value) { if (module.getModifier(el, other)) { el.classList.remove(other); el.classList.add(module.MOD_CLASSES.BOTH); } else { el.classList.add(name); } el.classList.remove(module.MOD_CLASSES.NONE); } else { if (el.classList.contains(module.MOD_CLASSES.BOTH)) { el.classList.remove(module.MOD_CLASSES.BOTH); el.classList.add(other); } else { el.classList.remove(name); el.classList.add(module.MOD_CLASSES.NONE); } } }, /** * The classes used to set the state of the modifiers on the parent * element. */ MOD_CLASSES: { /** No modifier is active */ NONE: "mod-none", /** Both shift and altgr is active */ BOTH: "mod-both", /** Only shift is active */ SHIFT: "mod-shift", /** Only altgr is active */ ALTGR: "mod-altgr" }, READY_CLASS: "ready" }; /** * The keyboard. */ function Keyboard(parentEl, src, layout) { this.parentEl = parentEl; this.doc = null; this._touches = {}; // Initially, no modifier is toggled parentEl.classList.add(module.MOD_CLASSES.NONE); Object.defineProperty(this, "shift", { get: function() { return module.getModifier(parentEl, module.MOD_CLASSES.SHIFT); }, set: function(value) { module.setModifier(parentEl, module.MOD_CLASSES.SHIFT, value); } }); Object.defineProperty(this, "altgr", { get: function() { return module.getModifier(parentEl, module.MOD_CLASSES.ALTGR); }, set: function(value) { module.setModifier(parentEl, module.MOD_CLASSES.ALTGR, value); } }); // Allow actually setting the layout this._layout = layout Object.defineProperty(this, "layout", { get: function() { return this._layout; }, set: function(value) { this._layout = value; // Make sure to mark the keyboard as non-ready parentEl.classList.remove(module.READY_CLASS); // Get the layout var ajax = new XMLHttpRequest(); ajax.open("GET", value, true); ajax.send(); ajax.onload = (function(e) { try { // Apply the layout and mark the keyboard as ready if (this._applyLayout(JSON.parse(ajax.responseText))) { parentEl.classList.add(module.READY_CLASS); } else { // TODO: Handle } } catch (e) { // TODO: Handle } }).bind(this); } }); // Allow reading the name of the layout Object.defineProperty(this, "layoutName", { get: function() { return this._layoutData ? this._layoutData.meta.name : ""; } }); // Get the keyboard SVG var ajax = new XMLHttpRequest(); ajax.open("GET", src, true); ajax.send(); ajax.onload = (function(e) { // First parse the data into an SVG document var parser = new DOMParser(); var doc = parser.parseFromString(ajax.responseText, "text/xml"); // Insert the document into the DOM and get a reference to it parentEl.appendChild(doc.documentElement); this.svg = parentEl.querySelector("svg"); // Get the element that contains all keys this.keys = this.svg.querySelector("." + module.KEYS_ROOT_CLASS); // Attach touch event handlers this.keys.addEventListener("touchstart", this.onTouchStart.bind(this)); this.keys.addEventListener("touchmove", this.onTouchMove.bind(this)); this.keys.addEventListener("touchend", this.onTouchEnd.bind(this)); // Apply the layout now if specified; the keyboard will be marked // as ready once it has been loaded and applied if (layout) { this.layout = layout; } else { parentEl.classList.add(module.READY_CLASS); } }).bind(this); }; module.Keyboard = Keyboard; /** * Determines whether a DOM element represents a key. * * An element is considered as a key if its immediate parent is the element * with the ID module.KEYS_ROOT_ELEMENT. * * @param el * The DOM element to check. * @return whether the element is a key */ Keyboard.prototype._isKey = function isKey(el) { // All keys are part of the "keys" group return el.classList && el.classList.contains(module.KEY_CLASS); }; /** * Retrieves the key at the specified position. * * @param id * The ID of the key. * @return the key element if it exists */ Keyboard.prototype._getKey = function getKey(id) { return this.svg.querySelector("." + module.KEY_CLASS + "[" + module.ID_ATTR + "='" + id + "']"); }; /** * Calls callback for every key that is touched by on of the touches in * touches. * * @param touches * A list of Touch instances. * @param callback * The callback to call for each touch that is located over a key. This * callback will be passed the parameters key, which is the key * element, and touchID, which is the identifier of the Touch instance. * If the touch does not hover above a key, null will be passed as key. */ Keyboard.prototype._eachKey = function eachKey(touches, callback) { for (var i = 0; i < touches.length; i++) { var touch = touches[i]; var el = document.elementFromPoint(touch.pageX, touch.pageY); while (el) { if (this._isKey(el)) { break; } el = el.parentNode; } callback(el, touch.identifier); } }; /** * Adds text elements to an SVG elements from a layout key array. * * The text elements will have the correct classes applied. * * @param el * The parent element. This element must contain at least one child * element, which is used to center the text elements. * @param key * A key from the layout. See the layout README for a description of * the format. */ Keyboard.prototype._addTexts = function addTexts(el, key) { for (var i = 0; i < key.length; i++) { var name = key[i][0]; if (!name) { continue; } var shift = (i & 1) != 0; var altgr = (i & 2) != 0; var x = parseInt(el.firstChild.getAttribute("x")); var y = parseInt(el.firstChild.getAttribute("y")); var bounds = el.getBBox(); var text = document.createElementNS("http://www.w3.org/2000/svg", "text"); text.appendChild(document.createTextNode(name)); if (shift && altgr) { text.classList.add(module.MOD_CLASSES.BOTH); } else if (shift) { text.classList.add(module.MOD_CLASSES.SHIFT); } else if (altgr) { text.classList.add(module.MOD_CLASSES.ALTGR); } else { text.classList.add(module.MOD_CLASSES.NONE); } // Center the text in the bounding box text.setAttribute("text-anchor", "middle"); text.setAttribute("alignment-baseline", "middle"); text.setAttribute("x", x + bounds.width / 2); text.setAttribute("y", y + bounds.height / 2); el.appendChild(text); } }; /** * Applies a keyboard layout. * * All keyboard keys described in the layout will have their text labels * updated. * * If the layout is incorrect, the state of the keyboard is undefined. * * @param layout * The layout data. See the layout README for a description of the * format. * @return whether the layout was applied correctly */ Keyboard.prototype._applyLayout = function applyLayout(layout) { // Iterate over all keys for (var id in layout.layout) { if (!layout.layout.hasOwnProperty(id)) { continue; } var keyData = layout.layout[id]; // Get the actual key element var key = this._getKey(id); if (!key) { return false; } // Remove all child nodes except for the first one while (key.childNodes.length > 1) { key.removeChild(key.childNodes[1]); } // Add new nodes this._addTexts(key, keyData); } this._layoutData = layout; return true; }; Keyboard.prototype.onTouchStart = function onTouchStart(t) { this._eachKey(t.touches, (function(key, touchID) { this._touches[touchID] = key; if (key) { this._press(key); } }).bind(this)); t.preventDefault(); }; Keyboard.prototype.onTouchMove = function onTouchMove(t) { this._eachKey(t.touches, (function(key, touchID) { // If a touch hovers above a new key, release the old key var previousKey = this._touches[touchID]; if (previousKey && previousKey !== key) { this._release(previousKey); } if (key && key !== previousKey) { this._touches[touchID] = key; this._press(key); } }).bind(this)); t.preventDefault(); }; Keyboard.prototype.onTouchEnd = function onTouchEnd(t) { this._eachKey(t.changedTouches, (function(key, touchID) { var previousKey = this._touches[touchID]; this._release(previousKey); delete this._touches[touchID]; }).bind(this)); t.preventDefault(); }; /** * Handles pressing and releasing of a key. * * This method will update the class list of the key element, update the * modifier state and emit the "press" or "release" event. * * @param key * The key element being pressed or released. * @param pressed * Whether the key is being pressed. */ Keyboard.prototype._handleKey = function handleKey(key, pressed) { // Update the key class if (pressed) { key.classList.add("pressed"); } else { key.classList.remove("pressed"); } // Get any special action var action = key.getAttribute(module.ACTION_ATTR); // If the name is set in the geometry file, this is a special key, and // we enclose it in brackets var name = key.getAttribute(module.NAME_ATTR); if (name) { name = "<" + name + ">"; } // Default to non-dead keys var isDead = false; // If the geometry file does not contain the key name, we need to look // it up in the layout var id = key.getAttribute(module.ID_ATTR); if (!name && id) { var key = this._layoutData.layout[id]; var index = (this.shift << 0) | (this.altgr << 1); name = key[index][0]; isDead = key[index][1]; } // Update internal shift state; remember that special keys are enclosed // in brackets switch (name) { case "": this.altgr = pressed; break; case "": if (pressed) { this.shift = !this.shift; } break; case "": case "": this.shift = pressed; break; } if (name) { this.parentEl.dispatchEvent(new CustomEvent( pressed ? "press" : "release", {"detail": [name, isDead]})); } if (action && pressed) { this.parentEl.dispatchEvent(new CustomEvent( "action", {"detail": [action]})); key.classList.remove("pressed"); } }; /** * Handles pressing of a key. * * This will cause the parent element to dispatch the "press" event, and if * the key is a toggle key, the keys to update accordingly. * * @param key * The key element. */ Keyboard.prototype._press = function press(key) { // TODO: Allow configuration if (navigator.vibrate) { navigator.vibrate(20); } this._handleKey(key, true); }; /** * Handles releasing of a key. * * This will cause the parent element to dispatch the "release" event, and * if the key is a toggle key, the keys to update accordingly. * * @param key * The key element. */ Keyboard.prototype._release = function release(key) { this._handleKey(key, false); }; /** * Automatically instantiate all keyboards when the document is loaded. */ addEventListener("load", function() { var els = document.querySelectorAll(module.EL); for (var i = 0; i < els.length; i++) { var el = els[i]; var src = el.getAttribute("src"); var layout = el.getAttribute("layout"); el.keyboard = new Keyboard(el, src, layout); // Automatically attach the event handlers el.handleEvent("press"); el.handleEvent("release"); el.handleEvent("action"); } }); return module; })(); PK}>ŠH/šK K #virtualtouchpad/html/js/lib/util.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.util = (function() { var module = {}; /** * Clones an array of touches keeping only identifier, screenX, screenY, * clientX and clientY. * * @param touches * A TouchList to clone. If this is falsy, [] is returned. * @return an array of objects */ module.cloneTouches = function(touches) { if (!touches) return []; var result = []; for (var i = 0; i < touches.length; i++) { result.push({ identifier: touches[i].identifier, screenX: touches[i].screenX, screenY: touches[i].screenY, clientX: touches[i].clientX, clientY: touches[i].clientY}); } return result; }; /** * XML escapes a string. */ String.prototype.xmlEscape = function() { return this.replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }; /** * Returns the position of an element, relative to the viewport. * * @return the array [x, y] */ Element.prototype.position = function() { var x = 0; var y = 0; var o = this; while (true) { x += o.offsetLeft; y += o.offsetTop; if (o.offsetParent === null){ break; } o = o.offsetParent; } return [x, y]; }; /** * Automatically attaches an event handler for a named event from an * attribute value. * * @param event * The name of the event. The attribute must be "on" + event. */ Element.prototype.handleEvent = function(event) { var value = this.getAttribute("on" + event); if (value) { this.addEventListener( event, function(event) { eval(value); }); } }; return module; })(); PKz>ŠHЌq:––)virtualtouchpad/html/js/lib/controller.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.controller = (function() { var module = {}; /** * The touchpad controller. */ function Touchpad(ws) { this.ws = ws; }; module.Touchpad = Touchpad; /** * Simulates pressing a button. * * @param button * The button name. */ Touchpad.prototype.buttonDown = function(button) { this.ws.send(JSON.stringify({ command: "mouse.down", data: { button: button}})); }; /** * Simulates releasing a button. * * @param button * The button name. */ Touchpad.prototype.buttonUp = function(button) { this.ws.send(JSON.stringify({ command: "mouse.up", data: { button: button}})); }; /** * Simulates scrolling. * * @param dx, dy * The horizontal and vertical scroll. */ Touchpad.prototype.scroll = function(dx, dy) { this.ws.send(JSON.stringify({ command: "mouse.scroll", data: { dx: dx, dy: dy}})); }; /** * Simulates moving the mouse. * * @param dx, dy * The horizontal and vertical movement. */ Touchpad.prototype.move = function(dx, dy) { this.ws.send(JSON.stringify({ command: "mouse.move", data: { dx: dx, dy: dy}})); }; /** * The keyboard controller. */ function Keyboard(ws) { this.ws = ws; }; module.Keyboard = Keyboard; /** * Simulates pressing a key. * * @param name * The name of the key. This should typically be the actual character * requested, or a key name enclosed in brackets (""). * @param isDead * Whether this is a dead key press. */ Keyboard.prototype.press = function(name, isDead) { this.ws.send(JSON.stringify({ command: "key.down", data: { name: name, is_dead: isDead}})); }; /** * Simulates releasing a key. * * @param name * The name of the key. This should typically be the actual character * requested, or a key name enclosed in brackets (""). * @param isDead * Whether this is a dead key press. */ Keyboard.prototype.release = function(name, isDead) { this.ws.send(JSON.stringify({ command: "key.up", data: { name: name, is_dead: isDead}})); }; return module; })(); PKеAŠH‹Џ/%%%virtualtouchpad/html/js/lib/checks.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.checks = (function() { var module = { /** * The class used to signal that full screen is not available. * * This will be set on the root element. */ FULLSCREEN_DISABLED_CLASS: "fullscreen-disabled", failures: []}; /** * Determines whether a check has failed. * * A check that has not been performed has not failed. * * @param check * The name of the check. * @return whether the check failed */ module.failed = function(check) { return module.failures.indexOf(check) != -1; } // Check for WebSocket if (typeof(WebSocket) == "undefined") { module.failures.push("WebSocket"); } // Check for touch events and make sure TouchList has the "identifiedTouch" // method if (!("ontouchstart" in window)) { module.failures.push("TouchEvents"); } else { if (typeof(TouchList.prototype.identifiedTouch) === "undefined") { TouchList.prototype.identifiedTouch = function(identifier) { for (var i = 0; i < this.length; i++) { if (this[i].identifier === identifier) { return this[i]; } } }; } } // Check for inline SVG support if (!document.implementation.hasFeature( "http://www.w3.org/TR/SVG11/feature#SVG", "1.1") && !document.implementation.hasFeature( "http://www.w3.org/TR/SVG11/feature#Image", "1.1")) { module.failures.push("SVG"); } // Check for fullscreen support for the document element if (typeof(document.documentElement.requestFullscreen) === "undefined") { if (document.documentElement.mozRequestFullScreen) { document.documentElement.requestFullscreen = document.documentElement.mozRequestFullScreen; document.exitFullscreen = document.mozCancelFullScreen; } else if (document.documentElement.webkitRequestFullscreen) { document.documentElement.requestFullscreen = function() { return document.documentElement.webkitRequestFullscreen( Element.ALLOW_KEYBOARD_INPUT); }; document.exitFullscreen = document.webkitExitFullscreen; } else { document.documentElement.requestFullscreen = function() {}; document.exitFullscreen = function() {}; document.documentElement.classList.add( module.FULLSCREEN_DISABLED_CLASS); } } // Check for Web Storage if (typeof("Storage") == "undefined") { module.failures.push("WebStorage"); } return module; })(); PK}>ŠH9Eћ‡ГГ*virtualtouchpad/html/js/lib/translation.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.translation = (function() { var module = {}; /** * Gets the catalogue entry for a string. * * @param k * The catalogue entry key. * @return the catalogue entry, or nothing if no catalogue is loaded */ module.get = function(k) { if (module.catalog) { return module.catalog[k]; } }; /** * Translates a string into the current language. * * @param s * The string to translate. * @return a translated string, or s if no translation exists */ module.translate = function(s) { return module.get(s) || s; }; /** * Translates a plural string into the current language. * * @param s * The string to translate for plural index 0. * @param ... * The other plural strings of the original language followed by the * numeral. * @return a translated string, or the original if no translation exists */ module.translateN = function(s) { var n = arguments[arguments.length - 1]; var i = module.pluralizer(n); var c = module.get(s); if (c instanceof Array) { return c[i]; } else { return arguments[i]; } }; /** * Initialise the pluraliser from the string in the catalogue. */ addEventListener("load", function() { /** * The function used to turn numerals into text indice. * * @param n * The numeral. * @return an index into a plural translation, or nothing if no * catalogue is loaded */ module.pluralizer = function(n) { if (!module.catalog) { return; } var result = eval(module.catalog.plural); if (result === true) { return 1; } else if (result === false) { return 0; } else if (typeof(result) == "number") { return result; } else { throw "Invalid plural value: " + result; } }; // Find all elements with the x-tr attribute var xpathResult = document.evaluate( "//*[@x-tr]", document, null, XPathResult.ANY_TYPE, null); // Store the elements in a list var i; var els = []; while (i = xpathResult.iterateNext()) { i.normalize(); els.push(i); } // Translate the text of all elements for (i = 0; i < els.length; i++) { els[i].textContent = module.translate( els[i].textContent.trim().split(/\s+/).join(" ")); } }); return module; })(); _ = exports.translation.translate; _N = exports.translation.translateN; PK{>ŠHžЛd3е е &virtualtouchpad/html/js/lib/include.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.include = (function() { var module = { EL: "x-include"}; /** * The include element. */ function Include(parentEl, href) { // Get the external XML var ajax = new XMLHttpRequest(); ajax.open("GET", src, true); ajax.send(); ajax.onload = (function(e) { // First parse the data into a document var parser = new DOMParser(); var doc = parser.parseFromString(ajax.responseText, "text/xml"); // Insert the document into the DOM parentEl.parentNode.insertBefore(doc.documentElement, parentEl) parentEl.parentNode.removeChild(parentEl); }).bind(this); }; module.Include = Include; /** * Automatically replace all x-include with the XML from their href * attribute. */ addEventListener("load", function() { var els = document.querySelectorAll(module.EL); for (var i = 0; i < els.length; i++) (function(el) { var href = el.getAttribute("href"); var ajax = new XMLHttpRequest(); ajax.open("GET", href, true); ajax.send(); ajax.onload = function(e) { // First parse the data into a document var parser = new DOMParser(); var doc = parser.parseFromString( ajax.responseText, "text/xml"); // Insert the document into the DOM el.parentNode.insertBefore(doc.documentElement, el) el.parentNode.removeChild(el); }; })(els[i]); }); return module; })(); PK{>ŠH=s""'virtualtouchpad/html/js/lib/trackbar.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.trackbar = (function() { var module = { /** * The element type that is autmatically instantiated as a trackbar. */ EL: "trackbar", /** * The class that is added to the track element when the trackbar is * being modified by the user. */ ACTIVE_CLASS: "active", /** * The class of the track element of a trackbar. */ TRACK_CLASS: "track", /** * The class of the groove element of a trackbar. */ GROOVE_CLASS: "groove", /** * The class of the mark element of a trackbar. */ MARK_CLASS: "mark"}; /** * The trackbar. * * @param parentEl * The trackbar element. * @param value * The current value of the Trackbar. * @param minValue, maxValue * The minimum and maximum value of the Trackbar */ function Trackbar(parentEl, value, minValue, maxValue) { this.parentEl = parentEl; this._value = value < minValue ? minValue : value > maxValue ? maxValue : value; this.minValue = minValue; this.maxValue = maxValue; // Create the track elements this.trackEl = document.createElement("div"); this.trackEl.classList.add(module.TRACK_CLASS); this.parentEl.appendChild(this.trackEl); this.grooveEl = document.createElement("div"); this.grooveEl.classList.add(module.GROOVE_CLASS); this.trackEl.appendChild(this.grooveEl); this.markEl = document.createElement("div"); this.markEl.classList.add(module.MARK_CLASS); this.grooveEl.appendChild(this.markEl); // Add event listeners this.parentEl.addEventListener("touchstart", this.onTouchStart.bind(this)); this.parentEl.addEventListener("touchend", this.onTouchEnd.bind(this)); this.parentEl.addEventListener("touchcancel", this.onTouchCancel.bind(this)); this.parentEl.addEventListener("touchleave", this.onTouchEnd.bind(this)); this.parentEl.addEventListener("touchmove", this.onTouchMove.bind(this)); }; module.Trackbar = Trackbar; /** * Repositions the mark element to reflect the current value. */ Trackbar.prototype._refresh = function() { var v = (this._value - this.minValue) / ( this.maxValue - this.minValue); this.grooveEl.style.width = (v * 100).toFixed(0) + "%"; }; /** * Returns the trackbar value for a given x coordinate of the track * element. * * @param x * The x coordinate of the centre of the track element in viewport * coordinates. * @return a value which may be outside the bounds * [this.minValue..this.maxValue] */ Trackbar.prototype._xToValue = function(x) { var d = this.maxValue - this.minValue; return this.minValue + (x - this.parentEl.position()[0] - this.markEl.clientWidth / 2) * d / (this.parentEl.clientWidth - this.markEl.clientWidth); }; /** * Returns the current value of the trackbar. * * @return a value between minValue and maxValue */ Trackbar.prototype.value = function() { return this._value; }; /** * Sets the current value of the trackbar. * * @param value * The value to set. This is clamped to be between minValue and * maxValue. */ Trackbar.prototype.setValue = function(value) { this._value = value < this.minValue ? this.minValue : value > this.maxValue ? this.maxValue : value; this._refresh(); this.parentEl.dispatchEvent(new CustomEvent( "valuechanged", { value: this._value})); }; Trackbar.prototype.onTouchStart = function(event) { // Ignore multi-finger touches if (event.touches.length > 1) { return; } this.parentEl.classList.add(module.ACTIVE_CLASS); this._currentTouch = util.cloneTouches(event.touches)[0]; // Set value this.setValue(this._xToValue(this._currentTouch.pageX)); event.preventDefault(); }; Trackbar.prototype.onTouchEnd = function(event) { this.parentEl.classList.remove(module.ACTIVE_CLASS); this._currentTouch = undefined; event.preventDefault(); }; Trackbar.prototype.onTouchCancel = function(event) { // TODO: Implement }; Trackbar.prototype.onTouchLeave = function(event) { // TODO: Implement }; Trackbar.prototype.onTouchMove = function(event) { if (!this._currentTouch || !event.changedTouches) { return; } // Get the x position var touch = event.changedTouches.identifiedTouch( this._currentTouch.identifier); if (!touch) { return; } var x = touch.pageX; // Update the trackbar this.setValue(this._xToValue(x)); event.preventDefault(); }; /** * Finds all Trackbar instances by CSS selector. * * @param selector * The CSS selector to use. * @return a list of Trackbar instances */ module.find = function(selector) { var els = document.querySelectorAll(selector); var result = []; for (var i = 0; i < els.length; i++) { var el = els[i]; if (el.trackbar) { result.push(el.trackbar); } } return result; }; /** * Automatically instantiate all trackbars when the document is loaded. */ addEventListener("load", function() { var els = document.querySelectorAll(module.EL); for (var i = 0; i < els.length; i++) { var el = els[i]; // Read the current value from the element var value = eval(el.getAttribute("value")); if (isNaN(value)) { value = 0.0; } // Read the min and max values from the element var minValue = eval(el.getAttribute("min-value")); if (isNaN(minValue)) { minValue = 0.0; } var maxValue = eval(el.getAttribute("max-value")); if (isNaN(maxValue)) { maxValue = minValue + 1.0; } el.trackbar = new Trackbar(el, value, minValue, maxValue); // Register event handlers el.handleEvent("valuechanged"); // If property is passed, bind this control to a configuration // value var property = el.getAttribute("property"); if (property) { el.addEventListener("valuechanged", (function(property) { configuration.set(property, this.value()) }).bind(el.trackbar, property)); var defaultValue = eval(el.getAttribute("default-value")); if (isNaN(defaultValue)) { defaultValue = value; } el.trackbar.setValue( configuration.get(property, defaultValue)); } } }); return module; })(); PK{>ŠH )y§ § *virtualtouchpad/html/js/lib/message-box.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.messagebox = (function() { var module = { /** * The class that must be set on a parent element for the message box to * be visible. */ MESSAGE_BOX_CLASS: "message-box" }; /** * Displays the message box. * * @param message * The message to display. This may be either a string, which will be * displayed verbatim, or an element, which will be set as the child of * the message box. * @param classes * A list of classes to use for the message box. */ module.show = function(message, classes) { var mbox = document.getElementById("message-box"); // Remove all previous content while (mbox.firstChild) { mbox.removeChild(mbox.firstChild); } // Add the message if (typeof(message) === "string") { mbox.innerHTML = message; } else { mbox.appendChild(message); } // Add the classes and show the element mbox.className = classes.join(", "); document.documentElement.classList.add(module.MESSAGE_BOX_CLASS); }; return module; })(); PKеAŠHz†›/ / 'virtualtouchpad/html/js/lib/features.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.features = (function() { var module = {}; /** * Shows a modal message box with missing features if any required features * are mising, otherwise does nothing. * * @return whether any required features were missing */ module.listMissing = function() { var list = document.createDocumentFragment(); /** * Inserts an error message. * * @param message * The error message. */ function insertError(message) { var li = document.createElement("li"); li.innerHTML = message; list.appendChild(li); } // We need WebSocket support to even send messages to the server if (checks.failed("WebSocket")) { insertError(_( "WebSockets are not supported")); } // We need touch events to simulate touchpad if (checks.failed("TouchEvents")) { insertError(_( "Touch events are not supported")); } // We need SVG for the user interface if (checks.failed("SVG")) { insertError(_( "SVG images are not supported")); } // If any checks failed, add them to the displayed list if (list.childNodes.length > 0) { var message = document.createDocumentFragment(); message.appendChild(document.createTextNode(_( "Your browser does not support Virtual Touchpad. These " + "features are missing:"))); var ul = document.createElement("ul"); ul.appendChild(list); message.appendChild(ul); message.appendChild(document.createTextNode(_( "Please upgrade your browser to a newer version."))); messagebox.show( message, ["error"]); return true; } else { return false; } } return module; })(); PKz>ŠH–žшкhh,virtualtouchpad/html/js/lib/configuration.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.configuration = (function() { var module = { _storage: {}, /** * Reads a configuration value. * * This function supports booleans, numbers and strings. * * @param name * The name of the configuration value. * @param defaultValue * The value to use if the value is not stored. * * This value determines the return type of this function. If this * is not passed, a string is returned, otherwise a value with the * same type is returned. * * If the configuration value cannot be interpreted as this type, * or does not exist, or its type is unsupported, this value is * returned. * @return the parsed configuration value */ get: function(name, defaultValue) { var value = read(name); switch (typeof(defaultValue)) { case "boolean": if (value === "true") { return true; } else if (value === "false") { return false; } break; case "number": if (!isNaN(parseFloat(value))) { return parseFloat(value); } break; case "string": if (value) { return value.toString(); } break; } return defaultValue; }, /** * Sets a configuration value. * * @param name * The name of the configuration value. * @param value * The value to set. */ set: function(name, value) { write(name, value); }}; var read = checks.failed("WebStorage") ? function(name) { return module._storage[name]; } : function(name) { return localStorage[name]; }; var write = checks.failed("WebStorage") ? function(name, value, transient) { module._storage[name] = value.toString(); } : function(name, value) { localStorage[name] = value; }; return module; })(); PK€>ŠHm(ўZ3%3%#virtualtouchpad/html/js/lib/view.js/*****************************************************************************/ /* virtual-touchpad */ /* Copyright (C) 2013-2015 Moses PalmУЉr */ /* */ /* This program is free software: you can redistribute it and/or modify it */ /* under the terms of the GNU General Public License as published by the */ /* Free Software Foundation, either version 3 of the License, or (at your */ /* option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, but */ /* WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General */ /* Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License along */ /* with this program. If not, see . */ /*****************************************************************************/ exports.view = (function() { var module = { EL: "touchpad", /** * The maximum accumulated movement where touch-and-release is * considered as a click. */ CLICK_THRESHOLD: 10}; /** * The touchpad view. * * @param touchpad * The controller to use. */ function Touchview(parentEl) { this.parentEl = parentEl; var self = this; this.parentEl.addEventListener("touchstart", function() { return self.onTouchStart.apply(self, arguments); }); this.parentEl.addEventListener("touchend", function() { return self.onTouchEnd.apply(self, arguments); }); this.parentEl.addEventListener("touchcancel", function() { return self.onTouchCancel.apply(self, arguments); }); this.parentEl.addEventListener("touchleave", function() { return self.onTouchEnd.apply(self, arguments); }); this.parentEl.addEventListener("touchmove", function() { return self.onTouchMove.apply(self, arguments); }); }; module.Touchview = Touchview; /** * Calculates the movement vector given the old and new touch events. * * @param oldTouch, newTouch * The previous and current touch events. * @return the movement vector [dx, dy] */ Touchview.prototype._calculateMovement = function(oldTouch, newTouch) { var dx = newTouch.screenX - oldTouch.screenX; var dy = newTouch.screenY - oldTouch.screenY; var d = Math.sqrt(dx * dx + dy * dy); var a = Math.atan2(dy, dx); var acceleration = configuration.get("view.acceleration", 0.3); var sensitivity = configuration.get("view.sensitivity", 1.5); var h = sensitivity * Math.pow(d, 1.0 + acceleration); return [Math.cos(a) * h, Math.sin(a) * h]; } /** * Calculates the scroll vector given the old and new touch events. * * @param oldTouch, newTouch * The previous and current touch events. * @return the scroll vector [dx, dy] */ Touchview.prototype._calculateScroll = function(oldTouch, newTouch) { var dx = newTouch.screenX - oldTouch.screenX; var dy = newTouch.screenY - oldTouch.screenY; var xdirection = configuration.get("view.naturalScroll", true) ? -1 : 1; var ydirection = configuration.get("view.naturalScroll", true) ? -1 : 1; return [dx * xdirection, dy * ydirection]; } /** * Clicks a button. * * The click will be sent with a short delay. Before the click is actually * sent, clickInProgress will return true, and clickCancel may be called to * cancel sending the click. * * If a click is in progress, no action is performed. * * @param button * The button to click. */ Touchview.prototype.click = function(button) { // Do nothing if a click is in progress if (this.clickInProgress()) { return; } var currentTouches = util.cloneTouches(this.currentTouches); // Make a short delay before sending the click event this._click = setTimeout( (function() { var button = currentTouches.length == 2 ? "right" : "left"; this.parentEl.dispatchEvent(new CustomEvent( "buttondown", {"detail": [button]})); this.parentEl.dispatchEvent(new CustomEvent( "buttonup", {"detail": [button]})); delete this._click; }).bind(this), 300); }; /** * Determines whether a click is queued to be sent. * * @return whether a click will be sent in the immediate future */ Touchview.prototype.clickInProgress = function() { return !!this._click; } /** * Cancels the current click. * * @return whether the click was cancelled; this function will return false * if no click is queued */ Touchview.prototype.clickCancel = function() { if (this._click) { clearTimeout(this._click); this._click = undefined; return true; } else { return false; } } /** * Starts a DnD operation. * * This will send a button down event. */ Touchview.prototype.dndStart = function() { this._dnd = true; this.parentEl.dispatchEvent(new CustomEvent( "buttondown", {"detail": ["left"]})); } /** * Determines whether a DnD operation is in progress. * * @return whether a DnD operation is in progress */ Touchview.prototype.dndInProgress = function() { return !!this._dnd; } /** * Ends a DnD operation. * * This will send a button up event. */ Touchview.prototype.dndEnd = function() { this._dnd = false; this.parentEl.dispatchEvent(new CustomEvent( "buttonup", {"detail": ["left"]})); } Touchview.prototype.onTouchStart = function(event) { this.currentTouches = util.cloneTouches(event.touches); this._accumulatedMovement = 0; event.preventDefault(); }; Touchview.prototype.onTouchEnd = function(event) { // Click if not enough movement has been made if (this._accumulatedMovement < module.CLICK_THRESHOLD) { if (this.dndInProgress()) { this.dndEnd(); } else { this.click(this.currentTouches.length == 2 ? "right" : "left"); } } delete this.currentTouches; }; Touchview.prototype.onTouchCancel = function(event) { // TODO: Implement }; Touchview.prototype.onTouchLeave = function(event) { // TODO: Implement }; Touchview.prototype.onTouchMove = function(event) { // If this is the second click in a short period, treat this as DnD if (this.clickInProgress()) { this.clickCancel(); this.dndStart(); } if (!event.changedTouches) { return; } // Require all touches to be present if (event.changedTouches.length != this.currentTouches.length) { return; } // Locate touches that are interesting var oldTouch = this.currentTouches[0]; var newTouch = event.changedTouches.identifiedTouch( oldTouch.identifier); this._accumulatedMovement += Math.sqrt(0 + Math.pow(newTouch.screenX - oldTouch.screenX, 2) + Math.pow(newTouch.screenY - oldTouch.screenY, 2)) // Replace the current touches this.currentTouches = util.cloneTouches(event.changedTouches); if (event.changedTouches.length == 1) { var movement = this._calculateMovement(oldTouch, newTouch); this.parentEl.dispatchEvent(new CustomEvent( "move", {"detail": movement})); } else if (event.changedTouches.length == 2) { var scroll = this._calculateScroll(oldTouch, newTouch); this.parentEl.dispatchEvent(new CustomEvent( "scroll", {"detail": scroll})); } event.preventDefault(); }; /** * Automatically instantiate all touch views when the document is loaded. */ addEventListener("load", function() { var els = document.querySelectorAll(module.EL); for (var i = 0; i < els.length; i++) { var el = els[i]; el.touchview = new Touchview(el); // Automatically attach the event handlers el.handleEvent("buttondown"); el.handleEvent("buttonup"); el.handleEvent("move"); el.handleEvent("scroll"); } }); return module; })(); PK†œ…H2§#џ"virtualtouchpad/routes/__init__.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import sys if sys.version_info.major < 3: from ._routes_bottle import get, websocket else: from ._routes_aiohttp import get, websocket class HTTPResponse(object): """A lightweight class to represent an HTTP response. """ def __init__(self, status, body=None, headers=None): self.status = status self.body = body or b'' self.headers = headers or {} # Importing these modules will attach routes to app from . import controller from . import keyboard from . import translations # Import static last since it is the catch-all route from . import static PKЮAŠH‘џd d virtualtouchpad/routes/static.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import logging import mimetypes import os import email.utils import sys import time import virtualtouchpad.resource as resource from . import get, HTTPResponse log = logging.getLogger(__name__) #: The files, in the preferred order, to use as index files INDEX_FILES = ( 'index.min.xhtml', 'index.xhtml') @get('/') @get('/') def static(headers, filepath='.'): # If the resource is a directory, we try to serve the index file if resource.isdir(filepath): for index_file in ( os.path.join(filepath, index) for index in INDEX_FILES): if resource.exists(index_file): return static(headers, index_file) return HTTPResponse(404) # Open the file and get its size try: stream = resource.open_stream(filepath) stream.seek(0, os.SEEK_END) size = stream.tell() stream.seek(0, os.SEEK_SET) body = stream.read() except IOError: log.exception('File %s does not exist', filepath) return HTTPResponse(404) response_headers = {} response_headers['Content-Length'] = size # Guess the content type and encoding mimetype, encoding = mimetypes.guess_type(filepath) if mimetype: response_headers['Content-Type'] = mimetype if encoding: response_headers['Content-Encoding'] = encoding # Check the file mtime; we use the egg file or the current binary try: st = os.stat(os.path.join(__file__, os.path.pardir, os.path.pardir)) except OSError: st = os.stat(os.path.abspath(sys.argv[0])) response_headers['Last-Modified'] = email.utils.formatdate(st.st_mtime) if headers.get('if-modified-since'): if_modified_since = time.mktime(email.utils.parsedate( headers.get('if-modified-since').split(";")[0].strip())) if if_modified_since is not None \ and if_modified_since >= int(st.st_mtime): response_headers['Date'] = time.strftime( '%a, %d %b %Y %H:%M:%S GMT', time.gmtime()) return HTTPResponse(304, headers=response_headers) return HTTPResponse(200, body=body, headers=response_headers) PK†œ…H‘Аџ33(virtualtouchpad/routes/_routes_bottle.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import json import logging import traceback import types import bottle import geventwebsocket from virtualtouchpad._server_bottle import app def get(path): """A decorator to mark a function as handling an *HTTP* ``GET`` request. Please see :func:`bottle.Application.get` for a reference on the format of ``path``. The decorated function is passed the request headers, where header names are lower case, as its first parameter, and any values extracted from the path. :param str path: The path this function handles. """ log = logging.getLogger('%s.%s' % (__name__, path)) def inner(handler): @app.get(path) def wrapper(*args, **kwargs): try: headers = { key.lower(): value for key, value in bottle.request.headers.items()} response = handler(headers, *args, **kwargs) if isinstance(response, types.DictionaryType): response = HTTPResponse(200, body=json.dumps(response)) return bottle.HTTPResponse( body=response.body, status=response.status, headers=response.headers) except Exception as e: log.exception('An error occurred when handling request') raise bottle.HTTPError(status=500) return handler return inner def websocket(path): """A decorator to mark a function as handling incoming *WebSocket* commands. This is not a generic *WebSocket* handler; it will only handle incoming data. The decorated function must be a generator. It will be sent ``None`` followed by any data received. :param str path: The path this function handles. """ log = logging.getLogger('%s.%s' % (__name__, path)) def inner(handler): @app.route(path) def wrapper(): # Get the actual websocket ws = bottle.request.environ.get('wsgi.websocket') log.info( 'WebSocket with %s opened', bottle.request.environ.get('REMOTE_ADDR')) if not ws: bottle.abort(400, 'Expected WebSocket request.') def report_error(reason, exception, tb): ws.send(json.dumps(dict( reason=reason, exception=type(exception).__name__, data=str(exception), tb=traceback.extract_tb(tb)))) dispatcher = handler(report_error) next(dispatcher) while True: try: message = ws.receive() if message is None: break dispatcher.send(message) except geventwebsocket.WebSocketError: log.exception('Failed to read WebSocket data') break except Exception as e: log.exception( 'An error occurred while dispatching %s', message) break return handler return inner PK…H$э"virtualtouchpad/routes/keyboard.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import json import logging import virtualtouchpad.resource as resource from . import get, HTTPResponse from .static import static log = logging.getLogger(__name__) #: The root path for layouts ROOT = 'keyboard/layout' @get('/keyboard/layout/default') def default_layout(headers): """Returns the default keyboard layout. """ layout_files = resource.list(ROOT) if not layout_files: return HTTPResponse(404) # TODO: Select the one used by the current system return static(headers, '%s/%s' % (ROOT, layout_files[0])) @get('/keyboard/layout/') def list_layouts(headers): """Returns a list of all keyboard layouts. """ layout_files = resource.list(ROOT) if not layout_files: return HTTPResponse(404) layouts = [] for layout_file in layout_files: path = '%s/%s' % (ROOT, layout_file) try: with resource.open_stream(path) as f: layout = json.load(f) layouts.append({ 'url': '/%s' % path, 'name': layout['meta']['name']}) except IOError: log.exception('Failed to open %s', path) except ValueError: log.exception('Failed to load JSON value from %s', path) except: log.exception('wha?') return { 'layouts': layouts} PK…H9с]ЮЄЄ&virtualtouchpad/routes/translations.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import os import virtualtouchpad.resource as resource from . import get, HTTPResponse from .static import static @get('/translations/') def translations(headers, domain): accept_language = headers.get('accept-language', 'default') languages = sorted(( ( language.split(';')[0].strip(), float(language.split(';q=')[1]) if ';q=' in language else 1.0) for language in accept_language.split(',')), key=lambda p: p[1], reverse=True) + [('default', 0.0)] for language, q in languages: path = os.path.join('translations', domain, language + '.js') if resource.exists(path): return static(headers, path) return HTTPResponse(404) PK†œ…HjXЪ3~~)virtualtouchpad/routes/_routes_aiohttp.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import asyncio import json import logging import re import traceback import aiohttp import aiohttp.web from virtualtouchpad._server_aiohttp import app #: The regular expression used to transform bottle variable paths to aiohttp # variable paths BOTTLE_RE = re.compile( r'<([^:>]+)(?::([^>]+))?>') def get(path): """A decorator to mark a function as handling an *HTTP* ``GET`` request. Please see :func:`bottle.Application.get` for a reference on the format of ``path``. The decorated function is passed the request headers, where header names are lower case, as its first parameter, and any values extracted from the path. :param str path: The path this function handles. """ log = logging.getLogger('%s.%s' % (__name__, path)) def inner(handler): @asyncio.coroutine def wrapper(request): #import pudb; pudb.set_trace() arguments = dict(request.match_info) try: headers = { key.lower(): value for key, value in request.headers.items()} response = handler(headers, **arguments) if isinstance(response, dict): return aiohttp.web.Response( content_type='application/json', status=200, text=json.dumps(response)) else: return aiohttp.web.Response( body=response.body, status=response.status, headers=response.headers) except Exception as e: log.exception('An error occurred when handling request') raise aiohttp.web.HTTPInternalServerError() def replacer(m): try: name, extra = m.groups() return '{%s:%s}' % ( name, dict( path='[^{}]+')[extra]) except: return '{%s}' % m.group(1) app.router.add_route( 'GET', BOTTLE_RE.sub(replacer, path), wrapper) return handler return inner def websocket(path): """A decorator to mark a function as handling incoming *WebSocket* commands. This is not a generic *WebSocket* handler; it will only handle incoming data. The decorated function must be a generator. It will be sent ``None`` followed by any data received. :param str path: The path this function handles. """ log = logging.getLogger('%s.%s' % (__name__, path)) def inner(handler): @asyncio.coroutine def wrapper(request): ws = aiohttp.web.WebSocketResponse() yield from ws.prepare(request) def report_error(reason, exception, tb): ws.send_str(json.dumps(dict( reason=reason, exception=type(exception).__name__, data=str(exception), tb=traceback.extract_tb(tb)))) dispatcher = handler(report_error) next(dispatcher) while True: message = yield from ws.receive() if message.tp == aiohttp.MsgType.text: try: dispatcher.send(message.data) except Exception as e: log.exception( 'An error occurred while dispatching %s', message) break else: break app.router.add_route( 'GET', path, wrapper) return handler return inner PK†œ…Hбšўў$virtualtouchpad/routes/controller.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import json import logging import sys from virtualtouchpad.dispatchers import Dispatcher, keyboard, mouse from . import websocket @websocket('/controller') def controller(report_error): log = logging.getLogger(__name__) dispatch = Dispatcher( key=keyboard.Handler(), mouse=mouse.Handler()) while True: message = yield if not message: continue try: command = json.loads(message) except Exception as e: log.exception( 'An error occurred when loading JSON from %s', message) ex_type, ex, tb = sys.exc_info() report_error( 'invalid_data', e, tb) continue try: dispatch(**command) except TypeError as e: log.exception( 'Failed to dispatch command %s', command) ex_type, ex, tb = sys.exc_info() report_error( 'invalid_command', e, tb) continue PK†œ…HGЗРсN N $virtualtouchpad/dispatchers/mouse.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . from pynput.mouse import Button, Controller class Handler(object): """A handler for mouse events. """ #: The scroll threshold required to actually perform scrolling SCROLL_THRESHOLD = 10 def __init__(self): self.d = Controller() self.ax = 0 self.ay = 0 def down(self, button='left'): """Triggers a a mouse press event. :param str button: The button name. This must be one of the values defined for :class:`pynput.mouse.Button`. """ self.d.press(Button[button]) def up(self, button='left'): """Triggers a a mouse release event. :param str button: The button name. This must be one of the values defined for :class:`pynput.mouse.Button`. """ self.d.release(Button[button]) def scroll(self, dx=0, dy=0): """Triggers a mouse scroll event. :param int dx: The horisontal offset to scroll. :param int dy: The vertical offset to scroll. """ self.ax += dx self.ay += dy # Vertical scroll xscroll = int(self.ax // self.SCROLL_THRESHOLD) self.ax -= xscroll * self.SCROLL_THRESHOLD # Horizontal scroll yscroll = int(self.ay // self.SCROLL_THRESHOLD) self.ay -= yscroll * self.SCROLL_THRESHOLD if xscroll or yscroll: self.d.scroll( xscroll, yscroll) def move(self, dx=0, dy=0): """Triggers a mouse move event. :param int dx: The horisontal offset to move. :param int dy: The vertical offset to move. """ self.d.move(int(dx), int(dy)) PK†œ…H^ЂG<<'virtualtouchpad/dispatchers/__init__.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . import logging log = logging.getLogger(__name__) class Dispatcher(object): """A class used to dispatch events to event handlers. """ def __init__(self, **handlers): """Creates a dispatcher for a collection of handlers. :param handlers: The handlers to register. These must be callable, and they will be registered as the key names. """ self._handlers = handlers def __call__(self, command, data): """Dispatches a command. :param str command: The command to dispatch. :param dict data: The arguments. :raises KeyError: if ``command`` is an unknown handler """ try: name, method = command.split('.', 1) handler = getattr(self._handlers[name], method) except ValueError: handler = self._handlers[command] try: return handler(**data) except Exception as e: log.exception( 'Failed to handle %s(%s): %s' % ( command, ', '.join('%s=%s' % i for i in data.items()), str(e))) PK†œ…HveЄи0 0 'virtualtouchpad/dispatchers/keyboard.py# coding=utf-8 # virtual-touchpad # Copyright (C) 2013-2015 Moses PalmУЉr # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . from pynput.keyboard import KeyCode, Key, Controller class Handler(object): def __init__(self): self.d = Controller() def keycode(self, name, is_dead): """Resolves a key description to a value that can be passed to :meth:`pynput.keyboard.Controller.press` and :meth:`~pynput.keyboard.Controller.release`. :param str name: The name of the key. This should typically be the actual character requested. If it starts with ``'<'`` and ends with ``'>'``, the key value is looked up in :class:`pynput.keyboard.Key`, otherwise it is passed straight to :meth:`pynput.keyboard.Controller.press`. :return: a key value """ if is_dead: return KeyCode.from_dead(name) elif name[0] == '<' and name[-1] == '>': return Key[name[1:-1]] else: return name def down(self, name, is_dead=False): """Triggers a key down event. :param str name: The name of the key. This is passed to :meth:`keycode`. :param bool is_dead: Whether a dead key press is requested. In that case, ``name`` must be a unicode character with a corresponding combining codepoint, and the key will be combined with the next character typed. """ self.d.press(self.keycode(name, is_dead)) def up(self, name, is_dead=False): """Triggers a key up event. :param str name: The name of the key. This is passed to :meth:`keycode`. :param bool is_dead: Whether a dead key press is requested. In that case, ``name`` must be a unicode character with a corresponding combining codepoint, and the key will be combined with the next character typed. """ self.d.release(self.keycode(name, is_dead)) PK†BŠHBЦМ-  1virtual_touchpad-0.15.1.dist-info/DESCRIPTION.rstVirtual Touchpad ================ This application allows you to use a mobile phone or tablet as a touchpad and keyboard for your computer. No software needs to be installed on the device. Quick Start ----------- On *Windows*, you can use the pre-packaged binary ``virtualtouchpad.exe``. When you run it, an icon will appear in the notification area. Hovering over this icon reveals the URL to use on your phone or tablet. If no pre-built executable exists for your platform, launch it from a terminal: python -m virtualtouchpad This will start an HTTP server. It will print the line Starting server http://:/... Connect to the URL displayed. Installation ------------ Install this application by running the following command: pip install virtual-touchpad If you want to have access to pre-release versions, you can clone the *git* repository available from the linked *home page* below. Install by running this command: cd $VIRTUAL_TOUCHPAD_REPO python setup.py install Installation issues ~~~~~~~~~~~~~~~~~~~ When installing, the dependencies for this application are also downloaded. Some of the dependencies are native libraries and must be compiled before they can be used. There is no standard way of providing any dependencies for the native libraries through this website, so they must thus be present on your computer before you run the installation, as do *Python* development headers files. The easies way to install the headers is via the packager manager provided by your operating system. The names of the packages required depend on your specific operating system. Release Notes ============= v0.15.1 - Fixes for iOS ----------------------- * Do not require the browser to support *HTML5 Fullscreen*, since this is not supported on *iOS*. * Allow the application to run unpackaged again. v0.15 - Python 3 Support ------------------------ * Added support for Python 3. v0.14 - System tray icon on Mac OSX ----------------------------------- * Added support for system tray icon on Mac OSX by replacing internal system tray icon handling with pystray_. .. _pystray: https://pypi.python.org/pypi/pystray v0.13 - Mac OSX Support ----------------------- * Added support for *Mac OSX* by replacing internal keyboard and mouse handling with pynput_ and, for now, making the systray icon optional. .. _pynput: https://pypi.python.org/pypi/pynput v0.12.4 - Corrected packaging ----------------------------- * Ensure that only dependencies for the current platform are required. * Allow loading the *systray icon* for *Windows* when running from a wheel. v0.12.3 - Corrected clicks -------------------------- * Corrected touch pad clicks. v0.12.2 - Corrected imports --------------------------- * Corrected imports. v0.12.1 - No more PIL --------------------- * Replaced dependency on *PIL* with *Pillow*. This should make it possible to install from *PyPi*. v0.12 - Shiny Keyboard ---------------------- * Support for keyboards has been added. For now only two layouts are included. * The user interface has been polished. * *Virtual Touchpad* now broadcasts its presence on the network using *mDNS*. v0.11 - Translations -------------------- * *Virtual Touchpad* can now be translated into other languages. * Added *Swedish* translation. v0.10 - Systray on Windows -------------------------- * Added systray icon for *Windows*. v0.9.2 - Fixed building on Windows ---------------------------------- * *Virtual Touchpad* now supports zip-safe again. * The build script does not fail if *ImageMagick* ``convert`` is not the first ``convert`` on the path. v0.9.1 - Fixed systray window on Linux -------------------------------------- * The systray window is no longer mapped on *Linux*. v0.9 - Systray on Linux ----------------------- * Added systray icon for *Linux*. v0.8 - Configure sensitivity ---------------------------- * The sensitivity and acceleration of the trackpad is now configurable. * Clicking is now easier and allows the finger to move slightly across the screen. v0.7 - Run from single file --------------------------- * *Virtual Touchpad* can now be run from a zipped egg. * Py2exe is now supported to pack *Virtual Touchpad* into a single exe file on *Windows*. v0.6 - Windows support ---------------------- * It is now possible to run *Virtual Touchpad* on *Windows*. v0.5 - Installation possible ---------------------------- * Corrected snapping of bottom tool bar. * Corrected bugs in setup script that prevented *Virtual Touchpad* from being installed. v0.4 - Basic help ----------------- * Made scrolling a lot smoother. * Added basic *FAQ*. v0.3 - Extended user interface ------------------------------ * Added support for *drag-and-drop*. * Added a bottom toolbar with a fullscreen button. * Increased size of message box text. v0.2 - Initial release ---------------------- * Basic touchpad support, with hard-coded sensitivity and acceleration. * Basic offline support using *AppCache*. PK†BŠH№Gс33/virtual_touchpad-0.15.1.dist-info/metadata.json{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows :: Windows NT/2000", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4"], "extensions": {"python.details": {"contacts": [{"email": "moses.palmer@gmail.com", "name": "Moses Palm\u00e9r", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/moses-palmer/virtual-touchpad"}}}, "extras": [], "generator": "bdist_wheel (0.26.0)", "keywords": ["control", "mouse", "control", "keyboard"], "license": "GPLv3", "metadata_version": "2.0", "name": "virtual-touchpad", "platform": "linux", "run_requires": [{"requires": ["Pillow (>=1.1.7)", "netifaces (>=0.8)", "pynput (>=1.0.3)", "pystray (>=0.3)", "zeroconf (>=0.17)"]}, {"environment": "python_version <= \"2.7\"", "requires": ["bottle (>=0.11)", "gevent (>=0.13)", "gevent-websocket (>=0.9)"]}, {"environment": "python_version >= \"3.3\"", "requires": ["aiohttp (>=0.21)"]}], "summary": "Turns your mobile or tablet into a touchpad and keyboard for your computer.", "version": "0.15.1"}PKiBŠHДўƒ..*virtual_touchpad-0.15.1.dist-info/pbr.json{"is_release": true, "git_version": "85eee83"}PK†BŠH0!М=/virtual_touchpad-0.15.1.dist-info/top_level.txtvirtualtouchpad PKђl‡HЌ…Ђ*virtual_touchpad-0.15.1.dist-info/zip-safe PK†BŠH}Р‚М\\'virtual_touchpad-0.15.1.dist-info/WHEELWheel-Version: 1.0 Generator: bdist_wheel (0.26.0) Root-Is-Purelib: true Tag: py3-none-any PK†BŠH Д ее*virtual_touchpad-0.15.1.dist-info/METADATAMetadata-Version: 2.0 Name: virtual-touchpad Version: 0.15.1 Summary: Turns your mobile or tablet into a touchpad and keyboard for your computer. Home-page: https://github.com/moses-palmer/virtual-touchpad Author: Moses PalmУЉr Author-email: moses.palmer@gmail.com License: GPLv3 Keywords: control mouse,control keyboard Platform: linux Platform: windows Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: End Users/Desktop Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows :: Windows NT/2000 Classifier: Operating System :: POSIX Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.4 Requires-Dist: Pillow (>=1.1.7) Requires-Dist: netifaces (>=0.8) Requires-Dist: pynput (>=1.0.3) Requires-Dist: pystray (>=0.3) Requires-Dist: zeroconf (>=0.17) Requires-Dist: bottle (>=0.11); python_version <= "2.7" Requires-Dist: gevent (>=0.13); python_version <= "2.7" Requires-Dist: gevent-websocket (>=0.9); python_version <= "2.7" Requires-Dist: aiohttp (>=0.21); python_version >= "3.3" Virtual Touchpad ================ This application allows you to use a mobile phone or tablet as a touchpad and keyboard for your computer. No software needs to be installed on the device. Quick Start ----------- On *Windows*, you can use the pre-packaged binary ``virtualtouchpad.exe``. When you run it, an icon will appear in the notification area. Hovering over this icon reveals the URL to use on your phone or tablet. If no pre-built executable exists for your platform, launch it from a terminal: python -m virtualtouchpad This will start an HTTP server. It will print the line Starting server http://:/... Connect to the URL displayed. Installation ------------ Install this application by running the following command: pip install virtual-touchpad If you want to have access to pre-release versions, you can clone the *git* repository available from the linked *home page* below. Install by running this command: cd $VIRTUAL_TOUCHPAD_REPO python setup.py install Installation issues ~~~~~~~~~~~~~~~~~~~ When installing, the dependencies for this application are also downloaded. Some of the dependencies are native libraries and must be compiled before they can be used. There is no standard way of providing any dependencies for the native libraries through this website, so they must thus be present on your computer before you run the installation, as do *Python* development headers files. The easies way to install the headers is via the packager manager provided by your operating system. The names of the packages required depend on your specific operating system. Release Notes ============= v0.15.1 - Fixes for iOS ----------------------- * Do not require the browser to support *HTML5 Fullscreen*, since this is not supported on *iOS*. * Allow the application to run unpackaged again. v0.15 - Python 3 Support ------------------------ * Added support for Python 3. v0.14 - System tray icon on Mac OSX ----------------------------------- * Added support for system tray icon on Mac OSX by replacing internal system tray icon handling with pystray_. .. _pystray: https://pypi.python.org/pypi/pystray v0.13 - Mac OSX Support ----------------------- * Added support for *Mac OSX* by replacing internal keyboard and mouse handling with pynput_ and, for now, making the systray icon optional. .. _pynput: https://pypi.python.org/pypi/pynput v0.12.4 - Corrected packaging ----------------------------- * Ensure that only dependencies for the current platform are required. * Allow loading the *systray icon* for *Windows* when running from a wheel. v0.12.3 - Corrected clicks -------------------------- * Corrected touch pad clicks. v0.12.2 - Corrected imports --------------------------- * Corrected imports. v0.12.1 - No more PIL --------------------- * Replaced dependency on *PIL* with *Pillow*. This should make it possible to install from *PyPi*. v0.12 - Shiny Keyboard ---------------------- * Support for keyboards has been added. For now only two layouts are included. * The user interface has been polished. * *Virtual Touchpad* now broadcasts its presence on the network using *mDNS*. v0.11 - Translations -------------------- * *Virtual Touchpad* can now be translated into other languages. * Added *Swedish* translation. v0.10 - Systray on Windows -------------------------- * Added systray icon for *Windows*. v0.9.2 - Fixed building on Windows ---------------------------------- * *Virtual Touchpad* now supports zip-safe again. * The build script does not fail if *ImageMagick* ``convert`` is not the first ``convert`` on the path. v0.9.1 - Fixed systray window on Linux -------------------------------------- * The systray window is no longer mapped on *Linux*. v0.9 - Systray on Linux ----------------------- * Added systray icon for *Linux*. v0.8 - Configure sensitivity ---------------------------- * The sensitivity and acceleration of the trackpad is now configurable. * Clicking is now easier and allows the finger to move slightly across the screen. v0.7 - Run from single file --------------------------- * *Virtual Touchpad* can now be run from a zipped egg. * Py2exe is now supported to pack *Virtual Touchpad* into a single exe file on *Windows*. v0.6 - Windows support ---------------------- * It is now possible to run *Virtual Touchpad* on *Windows*. v0.5 - Installation possible ---------------------------- * Corrected snapping of bottom tool bar. * Corrected bugs in setup script that prevented *Virtual Touchpad* from being installed. v0.4 - Basic help ----------------- * Made scrolling a lot smoother. * Added basic *FAQ*. v0.3 - Extended user interface ------------------------------ * Added support for *drag-and-drop*. * Added a bottom toolbar with a fullscreen button. * Increased size of message box text. v0.2 - Initial release ---------------------- * Basic touchpad support, with hard-coded sensitivity and acceleration. * Basic offline support using *AppCache*. PK†BŠHн кџ@@(virtual_touchpad-0.15.1.dist-info/RECORDvirtual_touchpad-0.15.1.dist-info/DESCRIPTION.rst,sha256=YH_tx2pm3fJBISUwtwqdj-jO1ab-9hzkNmFHywaAvGM,5133 virtual_touchpad-0.15.1.dist-info/METADATA,sha256=ku4MeMwf3Pq_ogRq4RbTeW8YVyg8ag4Wq_NhN6exlnM,6357 virtual_touchpad-0.15.1.dist-info/RECORD,, virtual_touchpad-0.15.1.dist-info/WHEEL,sha256=zX7PHtH_7K-lEzyK75et0UBa3Bj8egCBMXe1M4gc6SU,92 virtual_touchpad-0.15.1.dist-info/metadata.json,sha256=-Wbt2L_7HgeEUo8S8mhq1I-DneRrvY5soYqABNaQaPA,1331 virtual_touchpad-0.15.1.dist-info/pbr.json,sha256=A2QioSwzZrYilWOAndA9yC_zbYippKxVzfxIw682Sxg,46 virtual_touchpad-0.15.1.dist-info/top_level.txt,sha256=f8ST-YMGazjIsKXQ14kaccfO2bjoI0N8PV_OU5aK6-I,16 virtual_touchpad-0.15.1.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2 virtualtouchpad/__init__.py,sha256=pnGVi6feni9Nf70GuLQZGCh8MrdDq1vogo823KchB8k,838 virtualtouchpad/__main__.py,sha256=Cnnc_Py_A-lxfAbah68KAoHXwee5LrKQ69i7QgzhOQ0,5079 virtualtouchpad/_info.py,sha256=eOqYYTgbsWm-yHzV42a2h0WImBj7_uA5bYodwf8HjZ0,70 virtualtouchpad/_server_aiohttp.py,sha256=n6TqMUGdil4iIQf0vr4nEATHEGz9K3E0Uz3ONPDuAfM,1109 virtualtouchpad/_server_bottle.py,sha256=DiRc_BFsmWTuQA64Jek2aaWEYEgRbc6HbVpVPqtPlio,1219 virtualtouchpad/resource.py,sha256=hCR54cDGGrL3U_iMr-rtLtbqgHvOGs8vJjGEVfmyNnQ,3489 virtualtouchpad/dispatchers/__init__.py,sha256=byEW3PCswE24yDAlorRZW7CJqgQx_Z3ycqAtjxQUKlo,1852 virtualtouchpad/dispatchers/keyboard.py,sha256=iMlinJKRn_k45B5uEqCvgfPBouti_1CL7F0Bz0zbipA,2608 virtualtouchpad/dispatchers/mouse.py,sha256=LNMUDdlLoExuZOom43K7HVcBC99QvXr8ABn23z009_M,2382 virtualtouchpad/html/favicon.ico,sha256=CXrb0YRD471DTPLqjyrylLOU5ffFKfYRgeUy5EMJ2dU,89510 virtualtouchpad/html/index.min.xhtml,sha256=mlEN9l15DIJ4LE5GUjJRwFKkAJAwvZzHEBEF3r_RqOk,36432 virtualtouchpad/html/index.xhtml,sha256=aK8IymsJzAPFHzLQCycv5UlHo19nFUcSh571yUGC0G0,5946 virtualtouchpad/html/virtual-touchpad.appcache,sha256=l_QOD5ZXO3fCHWxNlafGgwT3aKKieRb7vox7hZD8v40,109 virtualtouchpad/html/css/app.css,sha256=QRE7-a3OBYS4AsebrYzVUiFp24vKBg8ZVBx3aUI8Z44,3733 virtualtouchpad/html/css/help.css,sha256=IIuHlGtqp5RteqyTHiAHtzCr9iMNn1ppx-MU-iGV7jU,495 virtualtouchpad/html/css/keyboard.css,sha256=FSRYOYsNUF_3QHgtEY4EzDeai5w-m-But5pQfkt2Ug8,1659 virtualtouchpad/html/css/message-box.css,sha256=6UPMbt___1ZhXcBqgPcYzlqInlMsnUe7twt07PHdlIQ,384 virtualtouchpad/html/css/touchpad.css,sha256=Ao1awSlJ5o4TgFXAsUIHHayD6iZc9gfhxQOPhCDaqLE,223 virtualtouchpad/html/css/trackbar.css,sha256=OMjFsg2jJ9Jjtwy9nh260d1PGj44-unkKa_R-tu38Go,733 virtualtouchpad/html/img/fullscreen.svg,sha256=fSc4M0B4a62A-1E3r37EvnYn0YZX6tKQOwSMyfKVDF0,913 virtualtouchpad/html/img/help.svg,sha256=SgcKRuYfdXxQy4ophySZ-sSr8NAzRSNN-qK3mhRXXng,463 virtualtouchpad/html/img/icon114x114.png,sha256=cfFC7R9StawdyAkr7qQ75FtWn2yKW_w0n37jkh39gv0,17521 virtualtouchpad/html/img/icon144x144.png,sha256=ybUTYdV-fAWTZUvyZaCI6PPnlg1Wo_ckvU1dXqMxyJI,22844 virtualtouchpad/html/img/icon196x196.png,sha256=unBXCG6ogy-ixiK3Hlj176BrJkVIvYMDuC_bC_v8NEw,33867 virtualtouchpad/html/img/icon48x48.png,sha256=mxHDo2VI8wTeZdt2KnHFvL2VEj8VO1dGgMlqNlMRRgc,6729 virtualtouchpad/html/img/icon57x57.png,sha256=7vPzVucQOKUlPy4id82Pgi84972hOpBIF11oWM2EleE,7806 virtualtouchpad/html/img/icon72x72.png,sha256=OE43162i7Aee-Dene8f2MMJK_k5_4AeZootJezbs7xw,10266 virtualtouchpad/html/img/icon96x96.png,sha256=8ua7MN5gAyZRODoMJSXyOvJadQkNlO1miZXyg6crbO4,14163 virtualtouchpad/html/img/settings.svg,sha256=TsCIAXyIlNv-davWMz9TVd9-4XHPaJ_GZypDFt5b25I,399 virtualtouchpad/html/js/app.js,sha256=UAXkeJ-4E03UjJU3VhBSaa_aitvW0tXa7jGBzIje7lk,13933 virtualtouchpad/html/js/lib/checks.js,sha256=kE5FKD7XOwihMA3GU88wpsJ_uAdCkMUPl1XbrdNayz0,4133 virtualtouchpad/html/js/lib/configuration.js,sha256=uwZcJJWmuELiU1XaveSB3tM_XOfOYy1DdM4eD4-kOyU,3688 virtualtouchpad/html/js/lib/controller.js,sha256=3-YuZCDFKv56knnBQESOtoWIq55jZSUklAXOJYnoupQ,3990 virtualtouchpad/html/js/lib/features.js,sha256=TLECK5HXVpWM2s-CoGlPxVK9LbUrdT581EB-Yd5G_YI,3375 virtualtouchpad/html/js/lib/include.js,sha256=TSC4U1o3M428wMvrBYDSs2TAIczDuVBy7_S4xz9LqKk,3029 virtualtouchpad/html/js/lib/init.js,sha256=tv-HIyaUvEUXe4gCqUJ_tosi3i758SX-FGCdJEyIJNw,1406 virtualtouchpad/html/js/lib/keyboard.js,sha256=vOq6u07YwQsB-BXGGjXaP5UZ9zVZVivjtNmBHceTTxU,18095 virtualtouchpad/html/js/lib/message-box.js,sha256=KPbNj1Pih9W07hV2-FQyWZwVS7XX52Uv2ZE4blv3udE,2557 virtualtouchpad/html/js/lib/trackbar.js,sha256=26f8a-fZ-Oup07-8LYUXr1RvxYux6XDuz3IFBJHmd_w,8833 virtualtouchpad/html/js/lib/translation.js,sha256=NL1jV-0YaFXGjF6fZNF10qYv1HzTHyVL3eiXOVIKm4s,4275 virtualtouchpad/html/js/lib/util.js,sha256=rYfy8n3GIpzae2chQikO1tFHY7l1KY5jc7SVbmdb0_M,3403 virtualtouchpad/html/js/lib/view.js,sha256=Uzj9doNH4Ssj-meE8n-kpgHhgsysFCbikxqa4xeL1fs,9523 virtualtouchpad/html/keyboard/buttons.svg,sha256=zL9UbdORRWFDRFS8HJ5vtt22823daj_62hqYeE7TmLM,9781 virtualtouchpad/html/keyboard/geometry/function-keys.svg,sha256=_Fuq0GfFJS7b-4NqcjtKVxv-5IzEBVAB4YfA66apo44,4932 virtualtouchpad/html/keyboard/geometry/large.svg,sha256=Blpv6KR_bsEu63HjyMVubNuLka9cBTpF2lYCR5YLHGA,6106 virtualtouchpad/html/keyboard/layout/se.layout,sha256=_RmxI1fi_h97AFZRJodZcJBbRP7cAYTMXNVDsUBOgUY,15678 virtualtouchpad/html/translations/help/default.js,sha256=VI5DIbGm8E2lQvhHoqGzuOfnrLmvGKZmE3nWzjZDZ5s,95 virtualtouchpad/html/translations/help/sv.js,sha256=frBn5PuSY6sVcmFJcfiuHDi5iTZpMtjj6lehnLo9hlo,1152 virtualtouchpad/html/translations/index/default.js,sha256=VI5DIbGm8E2lQvhHoqGzuOfnrLmvGKZmE3nWzjZDZ5s,95 virtualtouchpad/html/translations/index/sv.js,sha256=xJs2uBV8q31sz2MRrh3XzGLFLjAM6Dix3mPekhMLCGY,943 virtualtouchpad/routes/__init__.py,sha256=_k1eN0il-65jLVQvSTeqrvKNwzJWVdR7efPUfq7LdcY,1308 virtualtouchpad/routes/_routes_aiohttp.py,sha256=Vtbg7YUJ3PyVoliMRSIK0haEULsUsxsi7lYFG15eQ-Y,4478 virtualtouchpad/routes/_routes_bottle.py,sha256=Rouh6CDMq-97qVZLSTPFj7YTyhN_41vN1Z5XLtfaAdM,3891 virtualtouchpad/routes/controller.py,sha256=NcTf6e1b8QVuq3AZMrWz1p3qO34kQRLai0ov7mhj81Y,1790 virtualtouchpad/routes/keyboard.py,sha256=pw5wGgh2JjMdlQai6V0444_C9YpRfuypxKAmXbRfCKk,2063 virtualtouchpad/routes/static.py,sha256=4gXL4GtnahoPj6ttmaS32GCZom-WIkuwr2IUwGvkcrc,2916 virtualtouchpad/routes/translations.py,sha256=1UfmA4uT77yA8OM_6kh4CVxErwqEg4FNUn5dbNvDQaw,1444 PK†œ…HЗІx=>=.a†virtualtouchpad/html/keyboard/layout/se.layoutPKы™GGŽфM>__2ыУvirtualtouchpad/html/translations/index/default.jsPK…BŠHЭ?/pЏЏ-šФvirtualtouchpad/html/translations/index/sv.jsPKы™GGŽфM>__1”Шvirtualtouchpad/html/translations/help/default.jsPK…BŠH— €€,BЩvirtualtouchpad/html/translations/help/sv.jsPK6YAGЫЁW"пп% Юvirtualtouchpad/html/css/touchpad.cssPKеAŠH5вНu•• .Яvirtualtouchpad/html/css/app.cssPKы™GG№9/-яя!оvirtualtouchpad/html/css/help.cssPK7“NGі F{{%/рvirtualtouchpad/html/css/keyboard.cssPKы™GGїlL€€(эцvirtualtouchpad/html/css/message-box.cssPKы™GGЩ.Bнн%Гшvirtualtouchpad/html/css/trackbar.cssPKы™GGАXtS7S7&гыvirtualtouchpad/html/img/icon96x96.pngPKы™GGwTѕ~~&j#virtualtouchpad/html/img/icon57x57.pngPKы™GGПкHŠHš2ЏFЏF'џыvirtualtouchpad/html/js/lib/keyboard.jsPK}>ŠH/šK K #ѓ2virtualtouchpad/html/js/lib/util.jsPKz>ŠHЌq:––)@virtualtouchpad/html/js/lib/controller.jsPKеAŠH‹Џ/%%%\Pvirtualtouchpad/html/js/lib/checks.jsPK}>ŠH9Eћ‡ГГ*Ф`virtualtouchpad/html/js/lib/translation.jsPK{>ŠHžЛd3е е &Пqvirtualtouchpad/html/js/lib/include.jsPK{>ŠH=s""'и}virtualtouchpad/html/js/lib/trackbar.jsPK{>ŠH )y§ § *ž virtualtouchpad/html/js/lib/message-box.jsPKеAŠHz†›/ / 'уЊvirtualtouchpad/html/js/lib/features.jsPKz>ŠH–žшкhh,WИvirtualtouchpad/html/js/lib/configuration.jsPK€>ŠHm(ўZ3%3%# Чvirtualtouchpad/html/js/lib/view.jsPK†œ…H2§#џ"}ьvirtualtouchpad/routes/__init__.pyPKЮAŠH‘џd d йёvirtualtouchpad/routes/static.pyPK†œ…H‘Аџ33({§virtualtouchpad/routes/_routes_bottle.pyPK…H$э"є virtualtouchpad/routes/keyboard.pyPK…H9с]ЮЄЄ&Cvirtualtouchpad/routes/translations.pyPK†œ…HjXЪ3~~)+virtualtouchpad/routes/_routes_aiohttp.pyPK†œ…Hбšўў$№,virtualtouchpad/routes/controller.pyPK†œ…HGЗРсN N $04virtualtouchpad/dispatchers/mouse.pyPK†œ…H^ЂG<<'Р=virtualtouchpad/dispatchers/__init__.pyPK†œ…HveЄи0 0 'AEvirtualtouchpad/dispatchers/keyboard.pyPK†BŠHBЦМ-  1ЖOvirtual_touchpad-0.15.1.dist-info/DESCRIPTION.rstPK†BŠH№Gс33/dvirtual_touchpad-0.15.1.dist-info/metadata.jsonPKiBŠHДўƒ..*’ivirtual_touchpad-0.15.1.dist-info/pbr.jsonPK†BŠH0!М=/jvirtual_touchpad-0.15.1.dist-info/top_level.txtPKђl‡HЌ…Ђ*ejvirtual_touchpad-0.15.1.dist-info/zip-safePK†BŠH}Р‚М\\'Џjvirtual_touchpad-0.15.1.dist-info/WHEELPK†BŠH Д ее*Pkvirtual_touchpad-0.15.1.dist-info/METADATAPK†BŠHн кџ@@(m„virtual_touchpad-0.15.1.dist-info/RECORDPKAAyѓœ