Repository: ikreymer/netcapsule Branch: master Commit: 8f1370c2ff91 Files: 127 Total size: 1.7 MB Directory structure: gitextract_on4keuxv/ ├── .gitattributes ├── .gitignore ├── LICENSE.txt ├── README.md ├── app/ │ ├── Dockerfile │ ├── browser_app.py │ ├── config.yaml │ ├── main.py │ ├── requirements.txt │ ├── run_browser │ ├── static/ │ │ ├── dropdown.css │ │ ├── main.css │ │ ├── main.js │ │ ├── normalize.css │ │ ├── novnc/ │ │ │ ├── base.css │ │ │ ├── base64.js │ │ │ ├── black.css │ │ │ ├── blue.css │ │ │ ├── des.js │ │ │ ├── display.js │ │ │ ├── inflator.js │ │ │ ├── input.js │ │ │ ├── jsunzip.js │ │ │ ├── keyboard.js │ │ │ ├── keysym.js │ │ │ ├── keysymdef.js │ │ │ ├── logo.js │ │ │ ├── playback.js │ │ │ ├── rfb.js │ │ │ ├── ui.js │ │ │ ├── util.js │ │ │ ├── websock.js │ │ │ └── webutil.js │ │ ├── shared.js │ │ ├── skeleton.css │ │ └── timemap.js │ ├── templates/ │ │ ├── archives-list.html │ │ ├── browser-select.html │ │ ├── index.html │ │ ├── replay.html │ │ └── tracking.html │ └── uwsgi.ini ├── archives.yaml ├── browsers/ │ ├── base-basilisk2-browser/ │ │ ├── Dockerfile │ │ ├── basilisk_ii_prefs │ │ ├── performa.rom │ │ └── quadra650.rom │ ├── base-browser/ │ │ ├── Dockerfile │ │ ├── entry_point.sh │ │ └── requirements.txt │ ├── base-chromium/ │ │ ├── Dockerfile │ │ ├── jwmrc │ │ └── run.sh │ ├── base-sheepshaver/ │ │ ├── Dockerfile │ │ ├── NetscapePreferences │ │ ├── SheepShaver │ │ ├── newworld86.rom │ │ ├── oldworld.rom │ │ ├── run.sh │ │ └── sheepshaver_prefs │ ├── base-wine-browser/ │ │ ├── Dockerfile │ │ └── proxy.reg │ ├── build-browsers.sh │ ├── build-me.sh │ ├── chrome/ │ │ ├── Dockerfile │ │ ├── jwmrc │ │ └── run.sh │ ├── chromium10/ │ │ └── Dockerfile │ ├── chromium5/ │ │ └── Dockerfile │ ├── firefox/ │ │ ├── Dockerfile │ │ ├── ffprofile/ │ │ │ └── user.js │ │ ├── jwmrc │ │ └── run.sh │ ├── ie4/ │ │ ├── Dockerfile │ │ └── run.sh │ ├── ie4.01-mac/ │ │ ├── Dockerfile │ │ └── run.sh │ ├── ie5.1-mac/ │ │ └── Dockerfile │ ├── ie5.5/ │ │ ├── Dockerfile │ │ ├── proxy.reg │ │ └── run.sh │ ├── lynx/ │ │ ├── Dockerfile │ │ └── run.sh │ ├── mosaic/ │ │ ├── Dockerfile │ │ ├── fvwm2rc │ │ ├── proxy │ │ └── run.sh │ ├── netscape/ │ │ ├── Dockerfile │ │ ├── fvwm2rc │ │ ├── install.sh │ │ ├── preferences.js │ │ └── run.sh │ ├── netscape-mac-3.04/ │ │ ├── Dockerfile │ │ └── run.sh │ ├── netscape-mac-4.08/ │ │ ├── Dockerfile │ │ ├── NetscapePreferences │ │ └── run.sh │ ├── netscape4.8-mac/ │ │ └── Dockerfile │ ├── netscape4.8-win/ │ │ ├── Dockerfile │ │ ├── prefs.js │ │ └── run.sh │ ├── safari3/ │ │ ├── Dockerfile │ │ └── run.sh │ ├── safari5/ │ │ ├── Dockerfile │ │ └── run.sh │ └── www/ │ ├── Dockerfile │ ├── previous.cfg │ ├── proxy.py │ ├── run.sh │ └── tars.iso.dmg ├── docker-compose.yml ├── nginx/ │ ├── Dockerfile │ └── nginx.conf ├── pull-containers.sh ├── push-containers.sh ├── pywb/ │ ├── Dockerfile │ ├── archivereplayview.py │ ├── ca/ │ │ └── .gitignore │ ├── config.yaml │ ├── mementoquery.py │ ├── redisclient.py │ ├── requirements.txt │ ├── templates/ │ │ ├── blank.html │ │ ├── head_insert.html │ │ └── not_found.html │ └── uwsgi.ini └── run-local.sh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ *.tar.gz filter=lfs diff=lfs merge=lfs -text ================================================ FILE: .gitignore ================================================ *.py[cod] # C extensions *.so # Packages *.egg *.egg-info dist build eggs .eggs parts bin var sdist develop-eggs .installed.cfg lib lib64 __pycache__ #ignore shareddata shareddata/* # Installer logs pip-log.txt # Unit test / coverage reports .coverage .tox nosetests.xml # Translations *.mo # Mr Developer .mr.developer.cfg .project .pydevproject .vagrant pywb/ca/certs/* nginx/cache/ archives.gen.json ================================================ FILE: LICENSE.txt ================================================ Netcapsule is Copyright, 2015 Ilya Kreymer Netcapsule source code is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Netcapsule bundles the noVNC core library, under the ./app/static/include directory. noVNC is Copyright (C) 2011 Joel Martin The noVNC core library files are licensed under the MPL 2.0 (Mozilla Public License 2.0). The noVNC core library is composed of the Javascript code necessary for full noVNC operation. This includes (but is not limited to): include/base64.js include/des.js include/display.js include/input.js include/jsunzip.js include/keysym.js include/logo.js include/playback.js include/rfb.js include/ui.js include/util.js include/websock.js include/webutil.js ================================================ FILE: README.md ================================================ # OldWeb.today / Netcapsule # ## Browse old websites the old way ## **This system is now deployed on http://oldweb.today/** Netcapsule is a proof-of-concept system for browsing old web sites from existing web archives in old browsers, inside a modern browser. When the Netcapsule web page is loaded, the old browser is loaded in an emulator-like setup (Docker container) connecting to an existing archiving service through an HTTP/S proxy (powered by [pywb] (https://github.com/ikreymer/pywb) software). The proxy configures the date/time setting and proxies the content from the archive in its original form (whenever possible). Any web archive (supporting CDX or Memento protocol interfaces) can be a source, and any browser running under Linux can be used. Currently included browsers are: - **Mosaic** - *Mosaic 2.7 on Linux* - **Netscape** - *Netscape 3.04 on Mac* - *Netscape 4.08 on Mac* - *Netscape 4.79 on Linux* - *Netscape 4.8 on Windows* - *Netscape 4.8 on Mac* - **Internet Explorer** - *IE 4.0 on Windows* - *IE 4.01 on Mac* - *IE 5.1.7 on Mac* - *IE 5.5 on Windows* - **Safari** - *Safari 3 on Windows* - **Firefox** - *Firefox 40 on Linux* - **Chrome** - *Chrome 46 on Linux* The system allows user to navigate by both url and by time. The date can be changed dynamically by entering a new date/time (in 14-digit format currently) and hitting *Update*. The virtual browser must then be reloaded to reflect the new date/time settings. Note: Netcapsule now requires latest Docker Engine 1.9 and Docker Compose 1.5 ### Sample screenshots *TODO: Update screenshots to new UI that is now on http://oldweb.today These screenshots reflect old prototype UI* First US web site, from 1991, in NCSA Mosaic (archive courtesy of Stanford web archives), see http://www.slac.stanford.edu/history/earlyweb/firstpages.shtml) (URL: `/mosaic/1991/http://slacvm.slac.stanford.edu/FIND/default.html`) ![IMAGE](sample-screenshots/1991_SLAC.png) Another early SLAC site, from 1994, in NCSA Mosaic (archive courtesy of Stanford web archives): (URL: `/mosaic/19940102000000/http://slacvm.slac.stanford.edu/FIND/slac.html`) ![IMAGE](sample-screenshots/1994_SLAC.png) `http://geocities.com` from end of 1996, in Netscape Navigator 4 (archive courtesy of Internet Archive): (URL: `/netscape/1997/http://geocities.com/`) ![IMAGE](sample-screenshots/1996_geocities.png) Scrollbar - Composition Blue archive from 2006, in Internet Explorer 4 (archive courtesy of Internet Archive): (URL: `/ie4/2006/http://www.leegte.org/works/online/composition_blue/index.htm`) ![IMAGE](sample-screenshots/2006_scrollbars.png) `https://twitter.com/` from early 2015 in modern Firefox (archive courtesy of Internet Archive): (URL: `/firefox/201501/https://twitter.com/`) ![IMAGE](sample-screenshots/2015_twitter.png) ### Running To run locally, Docker and Docker Compose are required. 1. Clone this repo 2. Run `pull-containers.sh` to pull all existing containers from Docker Hub. Alternatively, you can run `browsers/build-containers.sh` to build them locally. 3. Run `run-local.sh`, which will invoke Docker Compose build and run steps. (Netcapsule uses the new Docker networking, requiring Docker Engine 1.9 and Compose 1.5) 5. You can now access the different browsers under: `http://:9020///` where `` is one of `netscape`, `firefox`, `mosaic`, etc.. Netcapsule main app runs on port `9020` and can be changed in `docker-compose.yml`. ### How It Works ### Supported Browsers The `browsers` directory corresponds to each supported browser and a `base-browser` image which serves as the base. Current Browsers include: * Moscaic (built from https://github.com/alandipert/ncsa-mosaic) `netcapsule/mosaic` * Netscape 4.79 (built based on [instructions from here](https://www.ailis.de/~k/archives/75-Netscape-Navigator-4-on-Ubuntu-Linux-12.10.html) `netcapsule/netscape` * Firefox 40 `netcapsule/firefox` * Internet Explorer 4.02 `netcapsule/ie4` (using WINE, built with [steps from here](https://appdb.winehq.org/objectManager.php?sClass=version&iId=2743) * Internet Explorer 5.5 `netcapsule/ie5.5` (using WINE, built with [steps from here](https://appdb.winehq.org/objectManager.php?sClass=version&iId=240) * Safari 5 `netcapsule/safari5` (using WINE, built with `winetricks`) * Netscape 4.08 `netcapsule/netscape-mac-4.08` on 68K MacOS Using [Basilik2](http://basilisk.cebix.net/) * See [Browsers](browsers) for all currently available browsers. #### Adding new browsers To add a new browser, a new image should be created to extend `netcapsule/base-browser`. This base images sets up a number of settings, such as Xvfb, VNC server, [noVNC](https://github.com/kanaka/noVNC), [Fluxbox](http://fluxbox.org) For adding [WINE](https://www.winehq.org/) (Windows-based browsers), extend the `netcapsule/base-wine-browser` image which provides a latest stable build of WINE. For adding [Basilik2](http://basilisk.cebix.net/) (Mac-based browsers), extend the `netcapsule/base-basilisk2-browser` image which includes an installation of BasiliskII. * A `run.sh` file is usually used to start the browser. * The `$URL` environment variable can be used to start browser at requested url. * To read data from the archives, The HTTP (and optionally HTTPS) proxy servers should be set to `netcapsule_pywb_1:8080`. These setting are browser dependent. * A [fluxbox-apps](http://fluxbox.org/help/man-fluxbox-apps.php) config is usually provided to have Fluxbox start the browser in either a fullscreen or maximized state. * Finally, add the browser to the `app/config.yaml` browser configuration and rebuild with `docker-compose build` For convenience, the new browser Docker image build can be added to `browsers/build-browsers.sh` script. Consult the existing browser setups for examples on how to add browsers. ### General Workflow The system operates by running a simple web app as the entry point. When a request is received, an appropriate Docker container is created for that user session. The session establishes a VNC connection (using noVNC) over a websocket (using websockify), which streams X session running in the Docker container. A small python app is also running on the container and is pinged periodically to indicate the session is still active, and to receive information about the current web content viewed. The HTTP/S proxy is a version of [pywb](https://github.com/ikreymer/pywb) which also stores additional state info in Redis, per Docker container. This allows the proxy to track which urls are loaded per session, which hosts are used, etc.. This idea is extended from the [Memento Reconstruct](https://github.com/ikreymer/memento-reconstruct) ### Configuration The system can be configured to read from two different types of web archive sources, a Memento aggregator or a CDX server. These sources are specified as two collections, `memento_reconstruct` and `single_archive` in the pywb `config.yaml` file, in the pywb directory. #### Memento API Source This is the default configuration and uses the Memento JSON API (see: http://timetravel.mementoweb.org/guide/api/#memento-json) to read across multiple web archives which support the Memento protocol. This setting uses the Memento aggregator hosted by Los Alamos National Laboratory (LANL). It uses as a spec the following list of archives: http://labs.mementoweb.org/aggregator_config/archivelist.xml This can be changed by specifying a different file in the `pywb/config.yaml` ``` # Specify memento archivelist XML memento_archive_xml: 'http://labs.mementoweb.org/aggregator_config/archivelist.xml' ``` The relevant Memento timegate and timemap settings are also set as: ``` memento_reconstruct: index_paths: - http://timetravel.mementoweb.org/api/json/ - http://labs.mementoweb.org/timemap/json/ ``` This setting may point to a local version of the `archivelist.xml` which can be modified as needed. The source is configured via the default collection in `config.yaml` ``` use_default_coll: 'memento_reconstruct' ``` Note: This system is partially adapted from the [Memento Reconstruct project](https://github.com/ikreymer/memento-reconstruct) deployed at http://timetravel.mementoweb.org/ when clicking the *Reconstruct* option. #### CDX API Source Alternatively, any CDX server source can be used, including any deployment of pywb or OpenWayback which supports the [pywb CDX Server API](https://github.com/ikreymer/pywb/wiki/CDX-Server-API) or [OpenWayback CDX Server API](https://github.com/iipc/openwayback/blob/master/wayback-cdx-server-webapp/README.md) For example, the default settings are configured to use the Internet Archive Wayback CDX Server as follows: ``` single_archive: index_paths: 'http://web.archive.org/cdx/search/cdx' archive_template: 'http://web.archive.org/web/{timestamp}id_/{url}' archive_name: 'Internet Archive' ``` This can be altered to point to any other CDX server. To enable this source, ensure that it is set as the default collection: ``` use_default_coll: 'single_archive' ``` ### TODO List This system is still an early proof-of-concept and there is much room for improvement. I would encourage and welcome contributions to this project any one interested. Here are some things that could be improved: * UI improvements: Add a timeline of archived captures/mementos, indicating a timeline of archive copies, better data about source archives, etc... * Actual emulator support: Run actual emulators in Docker to support browsers from different OSes and browsers that do not run on Linux * Add support for Memento Link format API, to support archives that use this format (and do not support CDX). * Input validation, eg. for Date/Time, URL, etc... * Improved documentation. * Better abstraction for Docker customization. * Additional browsers, list supported browsers, etc... * Any VNC configuration optimizations. ### LICENSE This software is released under the [MPL 2.0](http://www.mozilla.org/MPL/2.0/). Created by Ilya Kreymer, September, 2015. Portions under the `./app/static/include/*.js` which are part of the [noVNC](https://github.com/kanaka/noVNC) project, also licensed under [MPL 2.0](http://www.mozilla.org/MPL/2.0/). See LICENSE.txt for details. Honored to have received support for this project from: ![IMAGE](app/static/shuttleworth-tiny.png) and ![IMAGE](app/static/rhizome-tiny.png) ================================================ FILE: app/Dockerfile ================================================ FROM python:2.7 MAINTAINER Ilya Kreymer WORKDIR /app ADD requirements.txt /app/ RUN pip install -r requirements.txt ADD main.py /app/ ADD uwsgi.ini /app/ ADD . /app/ VOLUME /app/static/ CMD ["uwsgi", "uwsgi.ini"] #CMD ["python", "main.py"] ================================================ FILE: app/browser_app.py ================================================ from gevent import monkey, spawn, Timeout, sleep monkey.patch_all() from bottle import route, default_app, run, request, response, redirect import requests import logging from redis import StrictRedis import time import sys import os import json import traceback from argparse import ArgumentParser from bottle.ext.websocket import GeventWebSocketServer from bottle.ext.websocket import websocket from geventwebsocket.exceptions import WebSocketError PYWB_HOST_PORT = os.environ.get('PYWB_HOST_PORT', 'netcapsule_pywb_1:8080') LOCAL_REDIS_HOST = 'netcapsule_redis_1' REDIS_HOST = os.environ.get('REDIS_HOST', LOCAL_REDIS_HOST) BROWSER = os.environ.get('BROWSER') my_ip = '127.0.0.1' pywb_ip = None start_url = None curr_ts = None redis = None local_redis = None stat_key_expire_time = 40 HOST = os.environ.get('HOSTNAME', 'localhost') closed = False def set_timestamp(timestamp): params = {'ts': timestamp, 'ip': my_ip} try: r = requests.get('http://set.pywb.proxy/', params=params, proxies={'http': PYWB_HOST_PORT, 'https': PYWB_HOST_PORT}) if r.status_code == 200: global curr_ts curr_ts = timestamp return {'success': r.json()} else: return {'error': r.body} except Exception as e: return {'error': str(e)} #@route('/set') #def route_set_ts(): # ts = request.query.get('ts') # res = set_timestamp(ts) # return res @route('/pingsock', apply=[websocket]) def pingsock(ws): if ws: spawn(receiver, ws) last_data = None sleep_timeout = 0.5 duration = int(redis.get('container_expire_secs')) global closed if closed: try: # reentrancy: user returned likely after back/forward # using cached response remainder = redis.get('c:' + HOST) if remainder.startswith('REM:'): old_time = int(remainder[len('REM:'):]) # subtract time user was away old_time -= (stat_key_expire_time - redis.ttl('c:' + HOST)) duration = old_time except Exception as e: traceback.print_exc(e) finally: closed = False redis.expire('c:' + HOST, duration) logging.debug('Controller for: ' + BROWSER) while not closed: try: data = get_update() if data != last_data: data['ttl'] = redis.ttl('c:' + HOST) logging.debug('Sending ' + str(data)) ws.send(json.dumps(data)) last_data = data # for comparison check del last_data['ttl'] except WebSocketError as e: traceback.print_exc(e) mark_for_removal() break except Exception as e: traceback.print_exc(e) sleep(sleep_timeout) def receiver(ws): while not closed and ws: try: data = ws.receive() logging.debug('Received ' + str(data)) if data is None: continue data = json.loads(data) if data['ts']: set_timestamp(data['ts']) except WebSocketError as e: traceback.print_exc() mark_for_removal() break except Exception as e: print(e) #traceback.print_exc(e) def mark_for_removal(): logging.debug('Marked for removal') ttl = redis.ttl('c:' + HOST) redis.setex('c:' + HOST, stat_key_expire_time, 'REM:' + str(ttl)) redis.rpush('remove_q', HOST + ' ' + my_ip) global closed closed = True # just exit to shutdown container # will prevent reentrancy, but much safer for now sys.exit(0) def shutdown(): duration = int(redis.get('container_expire_secs')) sleep(duration + 10) mark_for_removal() def get_update(): # if not redis.hget('all_containers', HOST): # return # global expire_time # expire_time = redis.get('container_expire_time') # if not expire_time: # expire_time = DEF_EXPIRE_TIME # redis.expire('c:' + HOST, expire_time) #ts = request.query.get('ts') base_key = my_ip + ':' + curr_ts + ':' pi = local_redis.pipeline(transaction=False) pi.hgetall(base_key + 'urls') pi.smembers(base_key + 'hosts') pi.get(base_key + 'ref') pi.get(base_key + 'base') pi.expire(base_key + 'urls', stat_key_expire_time) pi.expire(base_key + 'hosts', stat_key_expire_time) pi.expire(base_key + 'ref', stat_key_expire_time) pi.expire(base_key + 'base', stat_key_expire_time) result = pi.execute() # all urls all_urls = result[0] count = 0 min_sec = sys.maxint max_sec = 0 for url, sec in all_urls.iteritems(): count += 1 sec = int(sec) min_sec = min(sec, min_sec) max_sec = max(sec, max_sec) # all_hosts all_hosts = result[1] referrer = result[2] base = result[3] page_url = referrer if not referrer: # never sends referrer so just stick with initial url # or thinks will get confusing.. if BROWSER == 'mosaic': page_url = start_url else: page_url = base page_url_secs = int(all_urls.get(page_url, 0)) return {'urls': count, 'req_ts': curr_ts, 'min_sec': min_sec, 'max_sec': max_sec, 'hosts': list(all_hosts), 'page_url': page_url, 'page_url_secs': page_url_secs, } @route('/') def homepage(): global start_url redirect(start_url, code=302) PROXY_PAC = """ function FindProxyForURL(url, host) { if (isInNet(host, "10.0.2.2") || shExpMatch(url, "http://10.0.2.2:6082/*")) { return "DIRECT"; } return "PROXY %s:8080"; } """ @route('/proxy.pac') def proxy(): response.content_type = 'application/x-ns-proxy-autoconfig' return PROXY_PAC % pywb_ip def do_init(): logging.basicConfig(format='%(asctime)s: [%(levelname)s]: %(message)s', level=logging.DEBUG) parser = ArgumentParser('netcapsule browser manager') parser.add_argument('--my-ip') parser.add_argument('--pywb-ip') parser.add_argument('--start-url') parser.add_argument('--start-ts') r = parser.parse_args() global my_ip my_ip = r.my_ip global pywb_ip pywb_ip = r.pywb_ip global start_url start_url = r.start_url if '://' not in start_url: start_url = 'http://' + start_url # not used here for now global curr_ts curr_ts = r.start_ts global redis redis = StrictRedis(REDIS_HOST) global local_redis if REDIS_HOST != LOCAL_REDIS_HOST: local_redis = StrictRedis(LOCAL_REDIS_HOST) else: local_redis = redis # set initial url #base_key = my_ip + ':' + curr_ts + ':' #local_redis.set(base_key + 'r', start_url) return default_app() application = do_init() @application.hook('after_request') def enable_cors(): response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS' response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' spawn(shutdown) if __name__ == "__main__": run(host='0.0.0.0', port='6082', server=GeventWebSocketServer) ================================================ FILE: app/config.yaml ================================================ api_version: '1.21' vnc_port: 6080 cmd_port: 6082 max_containers: 100 init_container_expire_secs: 30 full_container_expire_secs: 600 throttle_max_avg: 0.60 throttle_samples: 10 throttle_expire_secs: 60 queue_expire_secs: 30 remove_expired_secs: 30 image_prefix: netcapsule default_browser: firefox random_page_file: /app/urls.txt redirect_paths: '': firefox 'ie': ie5.5 'ns': nswin 'safari3': safari browsers: # firefox - id: firefox name: 'Mozilla Firefox' os: 'Linux' version: '40' icon: 'firefox.png' path: firefox about: 'https://en.wikipedia.org/wiki/Firefox' # chrome - id: chrome name: 'Google Chrome' os: 'Linux' version: '46' icon: 'chrome.png' path: chrome about: 'https://en.wikipedia.org/wiki/Google_Chrome' - id: chromium5 name: 'Chromium' os: 'Linux' version: '5' icon: 'chromium.png' path: chromium5 about: 'https://en.wikipedia.org/wiki/Chromium_(web_browser)' - id: chromium10 name: 'Chromium' os: 'Linux' version: '10' icon: 'chromium.png' path: chromium10 about: 'https://en.wikipedia.org/wiki/Chromium_(web_browser)' skip_random: true # Lynx - id: lynx name: Lynx os: 'Linux' icon: 'lynx.png' path: lynx version: '2.8.9' about: 'https://en.wikipedia.org/wiki/Lynx_(web_browser)' skip_random: true # WWW - id: www name: 'WWW' os: 'NextSTEP' icon: 'next-www.png' path: WWW version: '1.0' about: 'https://en.wikipedia.org/wiki/WorldWideWeb' req_width: 1120 req_height: 856 skip_random: true # mosaic - id: mosaic name: 'NCSA Mosaic' os: 'Linux' version: '2.2' icon: 'mosaic.png' path: mosaic about: 'https://en.wikipedia.org/wiki/Mosaic_%28web_browser%29' # netscape - id: netscape name: 'Netscape Navigator' os: 'Linux' version: '4.79' icon: 'win32-ns4.png' path: nslinux about: 'https://en.wikipedia.org/wiki/Netscape_%28web_browser%29' - id: netscape4.8-win name: 'Netscape Navigator' os: 'Windows' version: '4.8' icon: 'win32-ns4.png' path: nswin about: 'https://en.wikipedia.org/wiki/Netscape_%28web_browser%29' - id: netscape-mac-3.04 name: 'Netscape Navigator' os: 'Macintosh' version: '3.04' icon: 'mac-ns2-3.png' path: nsmac3 about: 'https://en.wikipedia.org/wiki/Netscape_%28web_browser%29' - id: netscape-mac-4.08 name: 'Netscape Navigator' os: 'Macintosh' version: '4.08' icon: 'mac-ns4.png' path: nsmac4 about: 'https://en.wikipedia.org/wiki/Netscape_%28web_browser%29' - id: netscape4.8-mac name: 'Netscape Navigator' os: 'Macintosh' version: '4.8' icon: 'mac-ns4.png' path: nsmac4.8 about: 'https://en.wikipedia.org/wiki/Netscape_%28web_browser%29' # Internet Explorer - id: ie4.01-mac name: 'Internet Explorer' os: 'Macintosh' version: '4.01' icon: 'mac-ie4.png' path: ie4mac about: 'https://en.wikipedia.org/wiki/Internet_Explorer_for_Mac#Internet_Explorer_4.0_for_Macintosh' - id: ie5.1-mac name: 'Internet Explorer' os: 'Macintosh' version: '5.1.7' icon: 'mac-ie5.1.png' path: ie5mac about: 'https://en.wikipedia.org/wiki/Internet_Explorer_for_Mac#Internet_Explorer_5_Macintosh_Edition' - id: ie4 name: 'Internet Explorer' os: 'Windows' version: '4.01' icon: 'win32-ie4.png' path: ie4 about: 'https://en.wikipedia.org/wiki/Internet_Explorer_4' - id: ie5.5 name: 'Internet Explorer' os: 'Windows' version: '5.5' icon: 'win32-ie5.5.png' path: ie5.5 about: 'https://en.wikipedia.org/wiki/Internet_Explorer_5' # Safari - id: safari3 name: 'Apple Safari' os: 'Windows' version: '3.2.3' icon: 'safari.png' path: safari about: 'https://en.wikipedia.org/wiki/Safari_(web_browser)#Safari_3' - id: safari5 name: 'Apple Safari' os: 'Windows' version: '5.0' icon: 'safari.png' path: safari5 about: 'https://en.wikipedia.org/wiki/Safari_%28web_browser%29#Safari_5' ================================================ FILE: app/main.py ================================================ from docker.client import Client from docker.utils import kwargs_from_env from bottle import route, run, template, request, default_app, jinja2_view from bottle import redirect, static_file, response import os import base64 import datetime import time import re import atexit import redis import yaml import json import random import itertools import traceback from uwsgidecorators import timer, mulefunc import uwsgi #============================================================================= class DockerController(object): def _load_config(self): with open('./config.yaml') as fh: config = yaml.load(fh) return config def __init__(self): config = self._load_config() self.LOCAL_REDIS_HOST = 'netcapsule_redis_1' self.REDIS_HOST = os.environ.get('REDIS_HOST', self.LOCAL_REDIS_HOST) self.PYWB_HOST = os.environ.get('PYWB_HOST', 'netcapsule_pywb_1') self.C_EXPIRE_TIME = config['init_container_expire_secs'] self.Q_EXPIRE_TIME = config['queue_expire_secs'] self.REMOVE_EXP_TIME = config['remove_expired_secs'] self.VERSION = config['api_version'] self.VNC_PORT = config['vnc_port'] self.CMD_PORT = config['cmd_port'] self.MAX_CONT = config['max_containers'] self.image_prefix = config['image_prefix'] self.browser_list = config['browsers'] self.browser_paths = {} for browser in self.browser_list: path = browser['path'] if path in self.browser_paths: raise Exception('Already a browser for path {0}'.format(path)) self.browser_paths[path] = browser self.default_browser = config['default_browser'] self.redirect_paths = config['redirect_paths'] self.randompages = [] try: with open(config['random_page_file']) as fh: self.randompages = list([line.rstrip() for line in fh]) except Exception as e: print(e) self.redis = redis.StrictRedis(host=self.REDIS_HOST) self.redis.setnx('next_client', '1') self.redis.setnx('max_containers', self.MAX_CONT) self.redis.setnx('num_containers', '0') self.redis.setnx('cpu_auto_adjust', 5.5) throttle_samples = config['throttle_samples'] self.redis.setnx('throttle_samples', throttle_samples) throttle_max_avg = config['throttle_max_avg'] self.redis.setnx('throttle_max_avg', throttle_max_avg) self.redis.setnx('container_expire_secs', config['full_container_expire_secs']) self.T_EXPIRE_TIME = config['throttle_expire_secs'] if os.path.exists('/var/run/docker.sock'): self.cli = Client(base_url='unix://var/run/docker.sock', version=self.VERSION) else: kwargs = kwargs_from_env(assert_hostname=False) kwargs['version'] = self.VERSION self.cli = Client(**kwargs) def _get_host_port(self, info, port, default_host): info = info['NetworkSettings']['Ports'][str(port) + '/tcp'] info = info[0] host = info['HostIp'] if host == '0.0.0.0' and default_host: host = default_host return host + ':' + info['HostPort'] def timed_new_container(self, browser, env, host, client_id): start = time.time() info = self.new_container(browser, env, host) end = time.time() dur = end - start time_key = 't:' + client_id self.redis.setex(time_key, self.T_EXPIRE_TIME, dur) throttle_samples = int(self.redis.get('throttle_samples')) print('INIT DUR: ' + str(dur)) self.redis.lpush('init_timings', time_key) self.redis.ltrim('init_timings', 0, throttle_samples - 1) return info def new_container(self, browser_id, env=None, default_host=None): browser = self.browser_paths.get(browser_id) # get default browser if not browser: browser = self.browser_paths.get(self.default_browser) if browser.get('req_width'): env['SCREEN_WIDTH'] = browser.get('req_width') if browser.get('req_height'): env['SCREEN_HEIGHT'] = browser.get('req_height') container = self.cli.create_container(image=self.image_prefix + '/' + browser['id'], ports=[self.VNC_PORT, self.CMD_PORT], environment=env, ) short_id = None try: id_ = container.get('Id') short_id = id_[:12] res = self.cli.start(container=id_, port_bindings={self.VNC_PORT: None, self.CMD_PORT: None}, volumes_from=['netcapsule_shared_data_1'], network_mode='netcapsule', ) info = self.cli.inspect_container(id_) ip = info['NetworkSettings']['IPAddress'] if not ip: ip = info['NetworkSettings']['Networks']['netcapsule']['IPAddress'] #self.redis.hset('all_containers', short_id, ip) self.redis.incr('num_containers') self.redis.setex('c:' + short_id, self.C_EXPIRE_TIME, 1) return {'vnc_host': self._get_host_port(info, self.VNC_PORT, default_host), 'cmd_host': self._get_host_port(info, self.CMD_PORT, default_host), } except Exception as e: if short_id: self.remove_container(short_id) traceback.print_exc(e) return {} def remove_container(self, short_id, ip=None): print('REMOVING ' + short_id) try: self.cli.remove_container(short_id, force=True) except Exception as e: print(e) #self.redis.hdel('all_containers', short_id) self.redis.delete('c:' + short_id) if ip: ip_keys = self.redis.keys(ip + ':*') for key in ip_keys: self.redis.delete(key) def remove_expired(self): print('Start Expired Check') while True: try: value = self.redis.blpop('remove_q', 1000) if not value: continue short_id, ip = value[1].split(' ') self.remove_container(short_id, ip) self.redis.decr('num_containers') except Exception as e: traceback.print_exc(e) def check_nodes(self): print('Check Nodes') try: scale = self.redis.get('cpu_auto_adjust') if not scale: return info = self.cli.info() cpus = int(info.get('NCPU', 0)) if cpus <= 1: return total = int(float(scale) * cpus) self.redis.set('max_containers', total) except Exception as e: print(e) def add_new_client(self): client_id = self.redis.incr('clients') enc_id = base64.b64encode(os.urandom(27)) self.redis.setex('cm:' + enc_id, self.Q_EXPIRE_TIME, client_id) self.redis.setex('q:' + str(client_id), self.Q_EXPIRE_TIME, 1) return enc_id, client_id def am_i_next(self, enc_id): client_id = None if enc_id: self.redis.expire('cm:' + enc_id, self.Q_EXPIRE_TIME) client_id = self.redis.get('cm:' + enc_id) if not client_id: enc_id, client_id = self.add_new_client() client_id = int(client_id) next_client = int(self.redis.get('next_client')) # not next client if client_id != next_client: # if this client expired, delete it from queue if not self.redis.get('q:' + str(next_client)): print('skipping expired', next_client) self.redis.incr('next_client') # missed your number somehow, get a new one! if client_id < next_client: enc_id, client_id = self.add_new_client() diff = client_id - next_client if self.throttle(): self.redis.expire('q:' + str(client_id), self.Q_EXPIRE_TIME) return enc_id, client_id - next_client #num_containers = self.redis.hlen('all_containers') num_containers = int(self.redis.get('num_containers')) max_containers = self.redis.get('max_containers') max_containers = int(max_containers) if max_containers else self.MAX_CONT if diff <= (max_containers - num_containers): self.redis.incr('next_client') return enc_id, -1 else: self.redis.expire('q:' + str(client_id), self.Q_EXPIRE_TIME) return enc_id, client_id - next_client def throttle(self): timings = self.redis.lrange('init_timings', 0, -1) if not timings: return False timings = self.redis.mget(*timings) avg = 0 count = 0 for val in timings: if val is not None: avg += float(val) count += 1 if count == 0: return False avg = avg / count print('AVG: ', avg) throttle_max_avg = float(self.redis.get('throttle_max_avg')) if avg >= throttle_max_avg: print('Throttling, too slow...') return True return False def do_init(self, browser, url, ts, host, client_id): env = {} env['URL'] = url env['TS'] = ts env['SCREEN_WIDTH'] = os.environ.get('SCREEN_WIDTH') env['SCREEN_HEIGHT'] = os.environ.get('SCREEN_HEIGHT') env['REDIS_HOST'] = dc.REDIS_HOST env['PYWB_HOST_PORT'] = dc.PYWB_HOST + ':8080' env['BROWSER'] = browser info = self.timed_new_container(browser, env, host, client_id) info['queue'] = 0 return info def get_randompage(self): if not self.randompages: return '/' url, ts = random.choice(self.randompages).split(' ', 1) print(url, ts) path = self.get_random_browser() return '/' + path + '/' + ts + '/' + url def get_random_browser(self): while True: id_ = random.choice(self.browser_paths.keys()) if self.browser_paths[id_].get('skip_random'): continue return id_ # Routes Below # =================== @route('/static/') def server_static(filepath): return static_file(filepath, root='/app/static/') @route(['/init_browser']) def init_container(): host = request.environ.get('HTTP_HOST', '') host = host.split(':')[0] client_id, queue_pos = dc.am_i_next(request.query.get('id')) if queue_pos < 0: browser = request.query.get('browser') url = request.query.get('url') ts = request.query.get('ts') resp = dc.do_init(browser, url, ts, host, client_id) else: resp = {'queue': queue_pos, 'id': client_id} response.headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate' return resp @route(['/', '/index.html', '/index.htm']) @jinja2_view('index.html', template_lookup=['templates']) def index(): return {} @route(['///', '//']) @jinja2_view('replay.html', template_lookup=['templates']) def route_load_url(path='', url='', ts=''): browser = dc.browser_paths.get(path) if not browser: if path == 'random': path = dc.get_random_browser() else: path = dc.redirect_paths.get(path) if not path: path = dc.default_browser if ts: ts += '/' redirect('/' + path + '/' + ts + url) if not ts: ts = re.sub('[ :-]', '', str(datetime.datetime.utcnow()).split('.')[0]) browser_info = dict(name=browser['name'], os=browser['os'], version=browser['version'], icon=browser['icon']) return {'coll': path, 'url': url, 'ts': ts, 'browser': browser_info} @route('/random') def randompage(): redirect(dc.get_randompage()) # Init # ====================== dc = DockerController() application = default_app() def init_cleanup_timer(dc, expire_time): @mulefunc(1) def check_abandonded(): dc.remove_expired() @timer(30, target='mule2') def check_node(signum): dc.check_nodes() check_abandonded() init_cleanup_timer(dc, dc.REMOVE_EXP_TIME) #run(host='0.0.0.0', port='9020') ================================================ FILE: app/requirements.txt ================================================ docker-py bottle gevent uwsgi jinja2 redis pyyaml ================================================ FILE: app/run_browser ================================================ #!/bin/bash while 'true' do "$@" sleep 0.2 done ================================================ FILE: app/static/dropdown.css ================================================ /* dropdown menus */ .dropdown { width: 303px; height: 58px; background-color: white; cursor: pointer; margin-bottom: 4px; border: 1px solid #d1d1d1; border-radius: 4px; box-shadow: 4px 4px 8px rgba(0,0,0,0.4); position: relative; font-size: 13px; } .dropdown-button { position: absolute; right:0; top:0; bottom: 0; width: 33px; padding-top: 19px; padding-left: 19px; } /* button triangle */ .arrow-down { width: 0; height: 0; margin-right: 7px; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 8px solid #222; display: inline-block; } .dropdown:hover .arrow-down {border-top-color: #33C3F0} .dropdown-shown .arrow-down {border-top-color: #1EAEDB} /* when selector is visible*/ .dropdown.dropdown-shown { border: 1px solid #1EAEDB; } /* close menu via × */ /* browser selector */ th.menu-selector-close { text-align: right !important; cursor: pointer; font-size: 15px; } /* date selector */ div.menu-selector-close { cursor: pointer; font-size: 15px; position: absolute; right: 10px; top: 7px; } /* unfolded menus */ /* Both Selector Menus */ .selector-menu { width: 304px; position: absolute; float: left; background-color: white; box-shadow: 4px 4px 8px rgba(0,0,0,0.4); display: none; } .menu-selector-close span { margin-right: 8px; } .menu-selector-close:hover { color: #33C3F0; } /* Browser selector */ #browser-icon-group { display: block; position: relative; float: left; padding: 6px 8px; } /* version number of browser */ #browser-icon-group label { display: block; margin: 0 auto; text-align: center; font-weight: bold; margin-top: 2px; line-height: 0; } #browser-icon { width: 32px; height: 32px; } #browser-text { line-height: 58px; } /* Datetime selector */ #datetime-dropdown {} #datetime-dropdown .dropdown-button { border-left: 1px solid #eee; } #datetime { /* text input field */ background-color: transparent; display: block; width: 224px; height: 100%; padding-left: 25px; border: 0; } /* hover effect only needed when pointer is over button, not all of the dropdown */ #datetime-dropdown:hover .arrow-down {border-top-color: #222} #datetime-dropdown .dropdown-button:hover .arrow-down {border-top-color: #33C3F0} .dropdown-shown .arrow-down {border-top-color: #1EAEDB} /* when selector is visible*/ /* menus that unwrap when the dropdowns are opened */ /* Browser Selector */ #browser-selector { top: 40px; left: 0px; font-size: 11px; } #browser-selector table { border-spacing: 0; margin-bottom: 0px; } #browser-selector thead {height: 40px;} /* table top row */ #browser-selector thead th { width: 56px; padding: 6px 10px; text-align: center; } /* background colors / stripes */ #browser-selector tr.r-odd {background: #f8f8f8;} #browser-selector tr.r-odd td:nth-child(odd) {background: #f0f0f0;} #browser-selector tr.r-even {background: #e8e8e8;} #browser-selector tr.r-even td:nth-child(odd) {background: #e0e0e0;} #browser-selector tbody th { padding: 3px 6px 0; text-align: center; } #browser-selector td { border-bottom: 0; padding: 8px 10px 2px; } #browser-selector th {font-weight: normal; background: #fff;} #browser-selector tbody th {text-align: left; vertical-align: top;} /* selection colors */ #browser-selector td:not(:empty):hover {background-image: radial-gradient(circle, rgba(0,0,0,0), rgba(51,195,240,.5)) !important;} #browser-selector td.selected, #browser-selector td.selected:hover {background-image: radial-gradient(circle, #fff, #1EAEDB) !important;} /* display of browser icons */ #browser-selector img {width: 32px; height: 32px;} #browser-selector img, #browser-selector label { display: block; margin: 0 auto; } #browser-selector label { text-align: center; line-height: inherit; font-weight: bold; } /* browser version numbers*/ #browser-selector input {display: none;} /* make radio buttons invisible */ /* Datetime selector */ #datetime-info { padding: 10px 0 0 8px; font-size: 11px; } /* Sparklines */ #spark { width: auto; height: auto; text-align: left; margin-left: 10px; position: relative; font-size: 11px; } rect.pane { cursor: pointer; fill: transparent; } .axis { font: inherit; fill: #222; } .axis path, .axis line { fill: none; stroke: #222; shape-rendering: crispEdges; } .axis text {font-size: 11px;} .bar {fill: rgba(153,153,153,.25)} .tooltip { position: absolute; border: 1px solid #33C3F0; border-radius: 4px; background: #fff; pointer-events: none; width: 90px; height: 18px; text-align: center; font-size: 11px; } .highlight { fill: #33C3F0 !important; } .curr-dt-marker { fill: blue !important; } .spark-selected { fill: #1EAEDB !important; } ================================================ FILE: app/static/main.css ================================================ html, body { height: 100%; margin: 0px; padding: 0px; border: 0px; background-color: #f0f0f0; font-size: 13px; } iframe { width: 100%; height: 100%; overflow: hidden; } .frame_div { position: absolute; padding-top: 50px; width: 100%; height: 100%; overflow: hidden; } .loading { background-image: url(spinner.gif); background-position: 50% 50%; background-repeat: no-repeat; } .alert { animation: pulse 1s ease infinite; } @keyframes pulse { 0% {color: #222;} 50% {color: #fc0;} 100% {color: #222;} } ul {padding-left: 2ex; margin-bottom: 2px;} li { margin: 0; position: relative; list-style: none; } li:before { content: '-'; font-weight: bold; position: absolute; left: -1.5ex; } /* front page */ #frontpage {font-size: 14px;} #frontpage h1 { margin-bottom: 3rem; margin-top: 1rem; font-size: 32px; font-weight: normal; } #frontpage form {} #frontpage form .row { margin-bottom: 1rem; } #frontpage form .one.columns label { width: 100%; text-align: right; } label[for=browser-dropdown], label[for=datetime-dropdown] { line-height: 60px; } label[for=urlinput] { line-height: 38px; } #frontpage button {margin: 3rem 0 1rem;} .section { margin-top: 5rem; } #frontpage .browser-about { padding-left: 4px; } #frontpage div.support { margin: 1rem 0; } a.support {display: inline-block; opacity: 0.7;} a.support:hover{opacity: 1;} a.support.rhizome {padding: 6px 0 0 20px;} a.support.shuttleworth {margin: -6px 0 6px -3px;} h2 { margin: 2rem 0 0.5rem 0; font-size: 20px; font-weight: normal; } .fold {} .fold > label:before { content: ""; display: inline-block; width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 5px solid #222; margin-right: 8px } .fold.open > label:before { content: ""; display: inline-block; width: 0; height: 0; border-right: 5px solid transparent; border-left: 5px solid transparent; border-top: 5px solid #222; margin-right: 8px } .fold > div {display: none} .fold.open > div {display: block} #invalid-form { display: none; font-size: 16px; color: red; } /* replay page */ #page-replay {overflow: inherit;} /* fonts */ #page-replay label, #browser-label, .browser-about { font-size: 11px; } label {font-weight: normal;} .datetime-string { font-family: "Monaco", "DejaVu Sans Mono", "Consolas", "Courier New", monospace; font-size: 16px; font-weight: normal; } /* app menu on the left */ .header { padding: 8px; width: 310px; position: absolute; left: 0; top: 0; bottom: 0; overflow: visible; } .widget-group {margin-bottom: 1rem;} .widget-group label {margin-left: 4px;} .widget-group.timer { margin-bottom: 3rem; } #page-replay h1 { font-size: 32px; font-weight: normal; margin: 2px 0 4rem 4px; } h1 a { color: inherit; text-decoration: inherit; } .widget-group.timer div.timer { position: absolute; top: 7px; text-align: center; right: 12px; width: 62px; } #expire { display: block; margin-left: 0; text-align: center; } .widget-group.browser { margin-bottom: 4rem; } .widget-group.datetime { margin-bottom: 5rem; } #curr-date-info {margin-bottom: 1rem;} #curr-date {padding-left: 26px;} .rel_message { display: none; background: #1EAEDB; border-radius: 4px; color: white; margin: 1rem 4px 1rem 0; padding: 1rem 8px; } .widget-group.session-info { padding-left: 4px; display: none; } .spanning { margin: 1em; } .spanning div {text-align: center;} .spanning div:nth-child(2) {padding-top: 1em;} #statsCount { font-weight: bold; } .support-info { position: absolute; top: 700px; left: 8px; font-size: 13px; } .about { position: absolute; top: 750px; left: 4px; font-size: 11px; } /* Area for browser */ #browser { position: absolute; top: 0px; left: 326px; right: 0; bottom: 0; } #browserMsg { position: absolute; top: 50%; text-align: center; margin: -7rem auto 0px; font-size: 26px; width: 100%; background-position: top center; padding-top: 40px; } /* noVNC classes */ #noVNC_screen { display: table; width: auto; height: auto; margin: auto; background-color:#313131; line-height: 0; margin-top: 8px; } #noVNC_canvas { margin: 0px; left: 0px; top: 0px; } .hidden { display: none; } ================================================ FILE: app/static/main.js ================================================ window.INCLUDE_URI = "/static/novnc/"; var cmd_host = undefined; var vnc_host = undefined; var connected = false; var ping_id = undefined; var ping_interval = undefined; var page_change = false; var pingsock = undefined; var fail_count = 0; var curr_hosts = undefined; var end_time = undefined; var cid = undefined; var waiting_for_container = false; // Load supporting scripts Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js", "keysymdef.js", "keyboard.js", "input.js", "display.js", "inflator.js", "rfb.js", "keysym.js"]); $(function() { function init_container() { var params = {"url": url, "ts": curr_ts, "browser": coll, "state": "ping"}; function send_request() { var init_url = "/init_browser?" + $.param(params); if (waiting_for_container) { return; } waiting_for_container = true; $.getJSON(init_url, handle_browser_response) .fail(function() { fail_count++; if (fail_count <= 3) { $("#browserMsg").text("Retrying browser init..."); setTimeout(send_request, 5000); } else { $("#browserMsg").text("Failed to init browser... Please try again later"); } $("#browserMsg").show(); }).complete(function() { waiting_for_container = false; }); } function handle_browser_response(data) { params.id = data.id; if (data.cmd_host && data.vnc_host) { cmd_host = data.cmd_host; vnc_host = data.vnc_host; $("#currLabel").html("Loading " + url + ""); window.setTimeout(do_init, 1000); } else if (data.queue != undefined) { var msg = "Waiting for empty slot... "; if (data.queue == 0) { msg += "You are next!"; } else { msg += "At most " + data.queue + " user(s) ahead of you"; } $("#browserMsg").html(msg); window.setTimeout(send_request, 3000); } } send_request(); } function do_init() { var res = do_vnc(); if (!res) { window.setTimeout(do_init, 1000); } } function lose_focus() { if (!rfb) return; rfb.get_keyboard().set_focused(false); rfb.get_mouse().set_focused(false); } function grab_focus() { if (!rfb) return; rfb.get_keyboard().set_focused(true); rfb.get_mouse().set_focused(true); } $("#noVNC_screen").blur(lose_focus); $("#noVNC_screen").mouseleave(lose_focus); $("#noVNC_screen").mouseenter(grab_focus); $("#datetime").click(lose_focus); function update_replay_state() { var full_url = "/" + coll + "/" + curr_ts + "/" + url; window.history.replaceState({}, "", full_url); } function establish_ping_sock() { try { pingsock = new WebSocket("ws://" + cmd_host + "/pingsock"); } catch (e) { console.log(e); } pingsock.onerror = function(e) { //console.log("Sock Error"); pingsock = undefined; window.setTimeout(establish_ping_sock, 1000); } pingsock.onclose = function(e) { //console.log("Sock Close"); pingsock = undefined; } pingsock.onmessage = function(e) { handle_data_update(JSON.parse(e.data)); // hide cursor for nextstep for now due to mouse issues if (coll == "WWW") { $("#noVNC_canvas").css("cursor", "none"); } } } function format_date(date) { return date.toISOString().slice(0, -5).replace("T", " "); } function handle_data_update(data) { if (data.page_url && data.page_url_secs) { var date = new Date(data.page_url_secs * 1000); var date_time = format_date(date).split(" "); //$("#currLabel").html("Loaded " + data.page_url + " from " + url_date + ""); $(".rel_message").hide(); $("#curr-date").html(date_time[0]); $("#curr-time").html(date_time[1]); $("#curr-date-info").removeClass("loading"); //url = data.page_url; if (page_change) { ping_interval = 10000; page_change = false; } if (sparkline) { sparkline.move_current(date); } } var any_data = false; if (data.hosts && data.hosts.length > 0) { if (data.hosts != curr_hosts) { //$("#statsHosts").empty(); $("#statsHosts li").hide(); $.each(data.hosts, function(i, host) { //var elem = document.createElement("li"); //$(elem).text(host); //$("#statsHosts").append(elem); $("#statsHosts li[data-id='" + host + "']").show(); }); data.hosts = curr_hosts; $("#statsHostsWrap").show(); } any_data = true; } if (data.urls) { $("#statsCount").text(data.urls); $("#statsCountWrap").show(); any_data = true; } if (data.min_sec && data.max_sec) { var min_date = new Date(data.min_sec * 1000); var max_date = new Date(data.max_sec * 1000); $(".rel_message").hide(); $("#statsFrom").html(format_date(min_date).replace(" ", "
")); $("#statsTo").html(format_date(max_date).replace(" ", "
")); $("#statsSpanWrap").show(); any_data = true; } if (any_data) { $(".session-info").show(); $("#session-loading").hide(); } if (data.ttl != undefined) { set_time_left(data.ttl); } update_replay_state(); } function set_time_left(time_left) { end_time = Math.floor(new Date().getTime() / 1000 + time_left); } // function ping() { // $.getJSON("http://" + cmd_host + "/ping?ts=" + curr_ts, handle_data_update) // .complete(function() { // ping_id = window.setTimeout(ping, ping_interval); // }); // } var rfb; var resizeTimeout; function UIresize() { if (WebUtil.getQueryVar('resize', false)) { var innerW = window.innerWidth; var innerH = window.innerHeight; var controlbarH = $D('noVNC_status_bar').offsetHeight; var padding = 5; if (innerW !== undefined && innerH !== undefined) rfb.setDesktopSize(innerW, innerH - controlbarH - padding); } } function FBUComplete(rfb, fbu) { UIresize(); rfb.set_onFBUComplete(function() { }); } function onVNCCopyCut(rfb, text) { //$("#clipcontent").text(text); } function do_vnc() { try { rfb = new RFB({'target': $D('noVNC_canvas'), 'encrypt': WebUtil.getQueryVar('encrypt', (window.location.protocol === "https:")), 'repeaterID': WebUtil.getQueryVar('repeaterID', ''), 'true_color': WebUtil.getQueryVar('true_color', true), 'local_cursor': WebUtil.getQueryVar('cursor', true), 'shared': WebUtil.getQueryVar('shared', true), 'view_only': WebUtil.getQueryVar('view_only', false), 'onUpdateState': updateState, 'onClipboard': onVNCCopyCut, 'onFBUComplete': FBUComplete}); } catch (exc) { //updateState(null, 'fatal', null, 'Unable to create RFB client -- ' + exc); console.warn(exc); return false; // don't continue trying to connect } var hostport = vnc_host.split(":"); var host = hostport[0]; var port = hostport[1]; var password = "secret"; var path = "websockify"; try { rfb.connect(host, port, password, path); } catch (exc) { console.warn(exc); return false; } return true; } function updateState(rfb, state, oldstate, msg) { if (state == "failed" || state == "fatal") { // if not connected yet, attempt to connect until succeed if (!connected) { window.setTimeout(do_vnc, 1000); } } else if (state == "disconnected") { if (connected) { connected = false; $("#noVNC_canvas").hide(); $("#browserMsg").show(); if (ping_id) { window.clearInterval(ping_id); } init_container(); } } else if (state == "normal") { $("#noVNC_canvas").show(); $("#browserMsg").hide(); connected = true; ping_interval = 1000; page_change = true; fail_count = 0; // start ping at regular intervals //ping_id = window.setTimeout(ping, ping_interval); establish_ping_sock(); } // var s, sb, cad, level; // s = $D('noVNC_status'); // sb = $D('noVNC_status_bar'); // cad = $D('sendCtrlAltDelButton'); // switch (state) { // case 'failed': level = "error"; break; // case 'fatal': level = "error"; break; // case 'normal': level = "normal"; break; // case 'disconnected': level = "normal"; break; // case 'loaded': level = "normal"; break; // default: level = "warn"; break; // } // // if (state === "normal") { // cad.disabled = false; // } else { // cad.disabled = true; // xvpInit(0); // } // // if (typeof(msg) !== 'undefined') { // sb.setAttribute("class", "noVNC_status_" + level); // s.innerHTML = msg; // } console.log(msg); } window.onresize = function () { // When the window has been resized, wait until the size remains // the same for 0.5 seconds before sending the request for changing // the resolution of the session clearTimeout(resizeTimeout); resizeTimeout = setTimeout(function(){ UIresize(); }, 500); }; // Browser navigate $("#browser-selector td:not(:empty)").click(function(e) { var path = $(this).attr("data-path"); var full_url = window.location.origin + "/" + path + "/" + curr_ts + "/" + url; window.location.href = full_url; }); // Update request dt window.on_change_curr_ts = function(ts) { if (pingsock) { pingsock.send(JSON.stringify({"ts": ts})); $(".rel_message").show(); } } function update_countdown() { if (!end_time) { return; } var curr = Math.floor(new Date().getTime() / 1000); var secdiff = end_time - curr; if (secdiff < 0) { window.location.href = window.location.origin + "/"; return; } var min = Math.floor(secdiff / 60); var sec = secdiff % 60; if (sec <= 9) { sec = "0" + sec; } if (min <= 9) { min = "0" + min; } $("#expire").text(min + ":" + sec); } // Countdown updater cid = setInterval(update_countdown, 1000); // INIT init_container(); if (coll) { var browser = $("#browser-selector td[data-path='" + coll + "']"); browser.addClass("selected"); $("#about-link").attr("href", browser.attr("data-about-url")); $(".about-browser").show(); } }); ================================================ FILE: app/static/normalize.css ================================================ /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ /** * 1. Set default font family to sans-serif. * 2. Prevent iOS text size adjust after orientation change, without disabling * user zoom. */ html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /** * Remove default margin. */ body { margin: 0; } /* HTML5 display definitions ========================================================================== */ /** * Correct `block` display not defined for any HTML5 element in IE 8/9. * Correct `block` display not defined for `details` or `summary` in IE 10/11 * and Firefox. * Correct `block` display not defined for `main` in IE 11. */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } /** * 1. Correct `inline-block` display not defined in IE 8/9. * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */ audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } /** * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /** * Address `[hidden]` styling not present in IE 8/9/10. * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */ [hidden], template { display: none; } /* Links ========================================================================== */ /** * Remove the gray background color from active links in IE 10. */ a { background-color: transparent; } /** * Improve readability when focused and also mouse hovered in all browsers. */ a:active, a:hover { outline: 0; } /* Text-level semantics ========================================================================== */ /** * Address styling not present in IE 8/9/10/11, Safari, and Chrome. */ abbr[title] { border-bottom: 1px dotted; } /** * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */ b, strong { font-weight: bold; } /** * Address styling not present in Safari and Chrome. */ dfn { font-style: italic; } /** * Address variable `h1` font-size and margin within `section` and `article` * contexts in Firefox 4+, Safari, and Chrome. */ h1 { font-size: 2em; margin: 0.67em 0; } /** * Address styling not present in IE 8/9. */ mark { background: #ff0; color: #000; } /** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } /* Embedded content ========================================================================== */ /** * Remove border when inside `a` element in IE 8/9/10. */ img { border: 0; } /** * Correct overflow not hidden in IE 9/10/11. */ svg:not(:root) { overflow: hidden; } /* Grouping content ========================================================================== */ /** * Address margin not present in IE 8/9 and Safari. */ figure { margin: 1em 40px; } /** * Address differences between Firefox and other browsers. */ hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } /** * Contain overflow in all browsers. */ pre { overflow: auto; } /** * Address odd `em`-unit font size rendering in all browsers. */ code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } /* Forms ========================================================================== */ /** * Known limitation: by default, Chrome and Safari on OS X allow very limited * styling of `select`, unless a `border` property is set. */ /** * 1. Correct color not being inherited. * Known issue: affects color of disabled elements. * 2. Correct font properties not being inherited. * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */ button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ } /** * Address `overflow` set to `hidden` in IE 8/9/10/11. */ button { overflow: visible; } /** * Address inconsistent `text-transform` inheritance for `button` and `select`. * All other form control elements do not inherit `text-transform` values. * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. * Correct `select` style inheritance in Firefox. */ button, select { text-transform: none; } /** * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * and `video` controls. * 2. Correct inability to style clickable `input` types in iOS. * 3. Improve usability and consistency of cursor style between image-type * `input` and others. */ button, html input[type="button"], /* 1 */ input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } /** * Re-set default cursor for disabled elements. */ button[disabled], html input[disabled] { cursor: default; } /** * Remove inner padding and border in Firefox 4+. */ button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } /** * Address Firefox 4+ setting `line-height` on `input` using `!important` in * the UA stylesheet. */ input { line-height: normal; } /** * It's recommended that you don't attempt to style these elements. * Firefox's implementation doesn't respect box-sizing, padding, or width. * * 1. Address box sizing set to `content-box` in IE 8/9/10. * 2. Remove excess padding in IE 8/9/10. */ input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** * Fix the cursor style for Chrome's increment/decrement buttons. For certain * `font-size` values of the `input`, it causes the cursor style of the * decrement button to change from `default` to `text`. */ input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } /** * 1. Address `appearance` set to `searchfield` in Safari and Chrome. * 2. Address `box-sizing` set to `border-box` in Safari and Chrome * (include `-moz` to future-proof). */ input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } /** * Remove inner padding and search cancel button in Safari and Chrome on OS X. * Safari (but not Chrome) clips the cancel button when the search input has * padding (and `textfield` appearance). */ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * Define consistent border, margin, and padding. */ fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } /** * 1. Correct `color` not being inherited in IE 8/9/10/11. * 2. Remove padding so people aren't caught out if they zero out fieldsets. */ legend { border: 0; /* 1 */ padding: 0; /* 2 */ } /** * Remove default vertical scrollbar in IE 8/9/10/11. */ textarea { overflow: auto; } /** * Don't inherit the `font-weight` (applied by a rule above). * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */ optgroup { font-weight: bold; } /* Tables ========================================================================== */ /** * Remove most spacing between table cells. */ table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } ================================================ FILE: app/static/novnc/base.css ================================================ /* * noVNC base CSS * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 Samuel Mannehed for Cendio AB * noVNC is licensed under the MPL 2.0 (see LICENSE.txt) * This file is licensed under the 2-Clause BSD license (see LICENSE.txt). */ body { margin:0; padding:0; font-family: Helvetica; /*Background image with light grey curve.*/ /* background-color:#494949; background-repeat:no-repeat; background-position:right bottom; height:100%; */ } html { height:100%; } #noVNC_controls ul { list-style: none; margin: 0px; padding: 0px; } #noVNC_controls li { padding-bottom:8px; } #noVNC_host { width:150px; } #noVNC_port { width: 80px; } #noVNC_password { width: 150px; } #noVNC_encrypt { } #noVNC_path { width: 100px; } #noVNC_connect_button { width: 110px; float:right; } #noVNC_buttons { white-space: nowrap; } #noVNC_view_drag_button { display: none; } #sendCtrlAltDelButton { display: none; } #fullscreenButton { display: none; } #noVNC_xvp_buttons { display: none; } #noVNC_mobile_buttons { display: none; } #noVNC_extra_keys { display: inline; list-style-type: none; padding: 0px; margin: 0px; position: relative; } .noVNC-buttons-left { float: left; z-index: 1; position: relative; } .noVNC-buttons-right { float:right; right: 0px; z-index: 2; position: absolute; } #noVNC_status { font-size: 12px; padding-top: 4px; height:32px; text-align: center; font-weight: bold; color: #fff; } #noVNC_settings_menu { margin: 3px; text-align: left; } #noVNC_settings_menu ul { list-style: none; margin: 0px; padding: 0px; } #noVNC_apply { float:right; } #VNC_clipboard_clear_button { float:right; } #VNC_clipboard_text { font-size: 11px; } #noVNC_clipboard_clear_button { float:right; } /*Bubble contents divs*/ #noVNC_settings { display:none; margin-top:73px; right:20px; position:fixed; } #noVNC_controls { display:none; margin-top:73px; right:12px; position:fixed; } #noVNC_controls.top:after { right:15px; } #noVNC_description { display:none; position:fixed; margin-top:73px; right:20px; left:20px; padding:15px; color:#000; background:#eee; /* default background for browsers without gradient support */ border:2px solid #E0E0E0; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius:10px; } #noVNC_popup_status { display:none; position: fixed; z-index: 1; margin:15px; margin-top:60px; padding:15px; width:auto; text-align:center; font-weight:bold; word-wrap:break-word; color:#fff; background:rgba(0,0,0,0.65); -webkit-border-radius:10px; -moz-border-radius:10px; border-radius:10px; } #noVNC_xvp { display:none; margin-top:73px; right:30px; position:fixed; } #noVNC_xvp.top:after { right:125px; } #noVNC_clipboard { display:none; margin-top:73px; right:30px; position:fixed; } #noVNC_clipboard.top:after { right:85px; } #keyboardinput { width:1px; height:1px; background-color:#fff; color:#fff; border:0; position: relative; left: -40px; z-index: -1; ime-mode: disabled; } /* * Advanced Styling */ .noVNC_status_normal { background: #b2bdcd; /* Old browsers */ background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */ background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */ } .noVNC_status_error { background: #f04040; /* Old browsers */ background: -moz-linear-gradient(top, #f04040 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f04040), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #f04040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #f04040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #f04040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */ background: linear-gradient(top, #f04040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */ } .noVNC_status_warn { background: #f0f040; /* Old browsers */ background: -moz-linear-gradient(top, #f0f040 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f0f040), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #f0f040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #f0f040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #f0f040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */ background: linear-gradient(top, #f0f040 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */ } /* Control bar */ #noVNC-control-bar { position:fixed; display:block; height:36px; left:0; top:0; width:100%; z-index:200; } .noVNC_status_button { padding: 4px 4px; vertical-align: middle; border:1px solid #869dbc; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; background: #b2bdcd; /* Old browsers */ background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b2bdcd', endColorstr='#6e84a3',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */ /*box-shadow:inset 0.4px 0.4px 0.4px #000000;*/ } .noVNC_status_button_selected { padding: 4px 4px; vertical-align: middle; border:1px solid #4366a9; -webkit-border-radius: 6px; -moz-border-radius: 6px; background: #779ced; /* Old browsers */ background: -moz-linear-gradient(top, #779ced 0%, #3970e0 49%, #2160dd 51%, #2463df 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#779ced), color-stop(49%,#3970e0), color-stop(51%,#2160dd), color-stop(100%,#2463df)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#779ced', endColorstr='#2463df',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* W3C */ /*box-shadow:inset 0.4px 0.4px 0.4px #000000;*/ } .noVNC_status_button:disabled { opacity: 0.4; } /*Settings Bubble*/ .triangle-right { position:relative; padding:15px; margin:1em 0 3em; color:#fff; background:#fff; /* default background for browsers without gradient support */ /* css3 */ /*background:-webkit-gradient(linear, 0 0, 0 100%, from(#2e88c4), to(#075698)); background:-moz-linear-gradient(#2e88c4, #075698); background:-o-linear-gradient(#2e88c4, #075698); background:linear-gradient(#2e88c4, #075698);*/ -webkit-border-radius:10px; -moz-border-radius:10px; border-radius:10px; color:#000; border:2px solid #E0E0E0; } .triangle-right.top:after { border-color: transparent #E0E0E0; border-width: 20px 20px 0 0; bottom: auto; left: auto; right: 50px; top: -20px; } .triangle-right:after { content:""; position:absolute; bottom:-20px; /* value = - border-top-width - border-bottom-width */ left:50px; /* controls horizontal position */ border-width:20px 0 0 20px; /* vary these values to change the angle of the vertex */ border-style:solid; border-color:#E0E0E0 transparent; /* reduce the damage in FF3.0 */ display:block; width:0; } .triangle-right.top:after { top:-40px; /* value = - border-top-width - border-bottom-width */ right:50px; /* controls horizontal position */ bottom:auto; left:auto; border-width:40px 40px 0 0; /* vary these values to change the angle of the vertex */ border-color:transparent #E0E0E0; } /* ---------------------------------------- * Media sizing * ---------------------------------------- */ .noVNC_status_button { font-size: 12px; } #noVNC_clipboard_text { width: 500px; } #noVNC_logo { font-size: 180px; } .noVNC-buttons-left { padding-left: 10px; } .noVNC-buttons-right { padding-right: 10px; } #noVNC_status { z-index: 0; position: absolute; width: 100%; margin-left: 0px; } #showExtraKeysButton { display: none; } #toggleCtrlButton { display: inline; } #toggleAltButton { display: inline; } #sendTabButton { display: inline; } #sendEscButton { display: inline; } /* left-align the status text on lower resolutions */ @media screen and (max-width: 800px){ #noVNC_status { z-index: 1; position: relative; width: auto; float: left; margin-left: 4px; } } @media screen and (max-width: 640px){ #noVNC_clipboard_text { width: 410px; } #noVNC_logo { font-size: 150px; } .noVNC_status_button { font-size: 10px; } .noVNC-buttons-left { padding-left: 0px; } .noVNC-buttons-right { padding-right: 0px; } /* collapse the extra keys on lower resolutions */ #showExtraKeysButton { display: inline; } #toggleCtrlButton { display: none; position: absolute; top: 30px; left: 0px; } #toggleAltButton { display: none; position: absolute; top: 65px; left: 0px; } #sendTabButton { display: none; position: absolute; top: 100px; left: 0px; } #sendEscButton { display: none; position: absolute; top: 135px; left: 0px; } } @media screen and (min-width: 321px) and (max-width: 480px) { #noVNC_clipboard_text { width: 250px; } #noVNC_logo { font-size: 110px; } } @media screen and (max-width: 320px) { .noVNC_status_button { font-size: 9px; } #noVNC_clipboard_text { width: 220px; } #noVNC_logo { font-size: 90px; } } ================================================ FILE: app/static/novnc/base64.js ================================================ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // From: http://hg.mozilla.org/mozilla-central/raw-file/ec10630b1a54/js/src/devtools/jint/sunspider/string-base64.js /*jslint white: false */ /*global console */ var Base64 = { /* Convert data (an array of integers) to a Base64 string. */ toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split(''), base64Pad : '=', encode: function (data) { "use strict"; var result = ''; var toBase64Table = Base64.toBase64Table; var length = data.length; var lengthpad = (length % 3); // Convert every three bytes to 4 ascii characters. for (var i = 0; i < (length - 2); i += 3) { result += toBase64Table[data[i] >> 2]; result += toBase64Table[((data[i] & 0x03) << 4) + (data[i + 1] >> 4)]; result += toBase64Table[((data[i + 1] & 0x0f) << 2) + (data[i + 2] >> 6)]; result += toBase64Table[data[i + 2] & 0x3f]; } // Convert the remaining 1 or 2 bytes, pad out to 4 characters. var j = 0; if (lengthpad === 2) { j = length - lengthpad; result += toBase64Table[data[j] >> 2]; result += toBase64Table[((data[j] & 0x03) << 4) + (data[j + 1] >> 4)]; result += toBase64Table[(data[j + 1] & 0x0f) << 2]; result += toBase64Table[64]; } else if (lengthpad === 1) { j = length - lengthpad; result += toBase64Table[data[j] >> 2]; result += toBase64Table[(data[j] & 0x03) << 4]; result += toBase64Table[64]; result += toBase64Table[64]; } return result; }, /* Convert Base64 data to a string */ /* jshint -W013 */ toBinaryTable : [ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63, 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1, -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1 ], /* jshint +W013 */ decode: function (data, offset) { "use strict"; offset = typeof(offset) !== 'undefined' ? offset : 0; var toBinaryTable = Base64.toBinaryTable; var base64Pad = Base64.base64Pad; var result, result_length; var leftbits = 0; // number of bits decoded, but yet to be appended var leftdata = 0; // bits decoded, but yet to be appended var data_length = data.indexOf('=') - offset; if (data_length < 0) { data_length = data.length - offset; } /* Every four characters is 3 resulting numbers */ result_length = (data_length >> 2) * 3 + Math.floor((data_length % 4) / 1.5); result = new Array(result_length); // Convert one by one. for (var idx = 0, i = offset; i < data.length; i++) { var c = toBinaryTable[data.charCodeAt(i) & 0x7f]; var padding = (data.charAt(i) === base64Pad); // Skip illegal characters and whitespace if (c === -1) { console.error("Illegal character code " + data.charCodeAt(i) + " at position " + i); continue; } // Collect data into leftdata, update bitcount leftdata = (leftdata << 6) | c; leftbits += 6; // If we have 8 or more bits, append 8 bits to the result if (leftbits >= 8) { leftbits -= 8; // Append if not padding. if (!padding) { result[idx++] = (leftdata >> leftbits) & 0xff; } leftdata &= (1 << leftbits) - 1; } } // If there are any bits left, the base64 string was corrupted if (leftbits) { err = new Error('Corrupted base64 string'); err.name = 'Base64-Error'; throw err; } return result; } }; /* End of Base64 namespace */ ================================================ FILE: app/static/novnc/black.css ================================================ /* * noVNC black CSS * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 Samuel Mannehed for Cendio AB * noVNC is licensed under the MPL 2.0 (see LICENSE.txt) * This file is licensed under the 2-Clause BSD license (see LICENSE.txt). */ #keyboardinput { background-color:#000; } .noVNC_status_normal { background: #4c4c4c; /* Old browsers */ background: -moz-linear-gradient(top, #4c4c4c 0%, #2c2c2c 50%, #000000 51%, #131313 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(100%,#131313)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* IE10+ */ background: linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* W3C */ } .noVNC_status_error { background: #f04040; /* Old browsers */ background: -moz-linear-gradient(top, #f04040 0%, #2c2c2c 50%, #000000 51%, #131313 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f04040), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(100%,#131313)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #f04040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #f04040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #f04040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* IE10+ */ background: linear-gradient(top, #f04040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* W3C */ } .noVNC_status_warn { background: #f0f040; /* Old browsers */ background: -moz-linear-gradient(top, #f0f040 0%, #2c2c2c 50%, #000000 51%, #131313 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f0f040), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(100%,#131313)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #f0f040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #f0f040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #f0f040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* IE10+ */ background: linear-gradient(top, #f0f040 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* W3C */ } .triangle-right { border:2px solid #fff; background:#000; color:#fff; } .noVNC_status_button { font-size: 12px; vertical-align: middle; border:1px solid #4c4c4c; background: #4c4c4c; /* Old browsers */ background: -moz-linear-gradient(top, #4c4c4c 0%, #2c2c2c 50%, #000000 51%, #131313 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(100%,#131313)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #4c4c4c 0%,#2c2c2c 50%,#000000 51%,#131313 100%); /* W3C */ } .noVNC_status_button_selected { background: #9dd53a; /* Old browsers */ background: -moz-linear-gradient(top, #9dd53a 0%, #a1d54f 50%, #80c217 51%, #7cbc0a 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9dd53a), color-stop(50%,#a1d54f), color-stop(51%,#80c217), color-stop(100%,#7cbc0a)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #9dd53a 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #9dd53a 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, #9dd53a 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9dd53a', endColorstr='#7cbc0a',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, #9dd53a 0%,#a1d54f 50%,#80c217 51%,#7cbc0a 100%); /* W3C */ } ================================================ FILE: app/static/novnc/blue.css ================================================ /* * noVNC blue CSS * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 Samuel Mannehed for Cendio AB * noVNC is licensed under the MPL 2.0 (see LICENSE.txt) * This file is licensed under the 2-Clause BSD license (see LICENSE.txt). */ .noVNC_status_normal { background-color:#04073d; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.54, rgb(10,15,79)), color-stop(0.5, rgb(4,7,61)) ); background-image: -moz-linear-gradient( center bottom, rgb(10,15,79) 54%, rgb(4,7,61) 50% ); } .noVNC_status_error { background-color:#f04040; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.54, rgb(240,64,64)), color-stop(0.5, rgb(4,7,61)) ); background-image: -moz-linear-gradient( center bottom, rgb(4,7,61) 54%, rgb(249,64,64) 50% ); } .noVNC_status_warn { background-color:#f0f040; background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.54, rgb(240,240,64)), color-stop(0.5, rgb(4,7,61)) ); background-image: -moz-linear-gradient( center bottom, rgb(4,7,61) 54%, rgb(240,240,64) 50% ); } .triangle-right { border:2px solid #fff; background:#04073d; color:#fff; } #keyboardinput { background-color:#04073d; } ================================================ FILE: app/static/novnc/des.js ================================================ /* * Ported from Flashlight VNC ActionScript implementation: * http://www.wizhelp.com/flashlight-vnc/ * * Full attribution follows: * * ------------------------------------------------------------------------- * * This DES class has been extracted from package Acme.Crypto for use in VNC. * The unnecessary odd parity code has been removed. * * These changes are: * Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved. * * This software 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. * * DesCipher - the DES encryption method * * The meat of this code is by Dave Zimmerman , and is: * * Copyright (c) 1996 Widget Workshop, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and * without fee is hereby granted, provided that this copyright notice is kept * intact. * * WIDGET WORKSHOP MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WIDGET WORKSHOP SHALL NOT BE LIABLE * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. * * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). WIDGET WORKSHOP * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR * HIGH RISK ACTIVITIES. * * * The rest is: * * Copyright (C) 1996 by Jef Poskanzer . All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * Visit the ACME Labs Java page for up-to-date versions of this and other * fine Java utilities: http://www.acme.com/java/ */ /* jslint white: false */ function DES(passwd) { "use strict"; // Tables, permutations, S-boxes, etc. // jshint -W013 var PC2 = [13,16,10,23, 0, 4, 2,27,14, 5,20, 9,22,18,11, 3, 25, 7,15, 6,26,19,12, 1,40,51,30,36,46,54,29,39, 50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31 ], totrot = [ 1, 2, 4, 6, 8,10,12,14,15,17,19,21,23,25,27,28], z = 0x0, a,b,c,d,e,f, SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8, keys = []; // jshint -W015 a=1<<16; b=1<<24; c=a|b; d=1<<2; e=1<<10; f=d|e; SP1 = [c|e,z|z,a|z,c|f,c|d,a|f,z|d,a|z,z|e,c|e,c|f,z|e,b|f,c|d,b|z,z|d, z|f,b|e,b|e,a|e,a|e,c|z,c|z,b|f,a|d,b|d,b|d,a|d,z|z,z|f,a|f,b|z, a|z,c|f,z|d,c|z,c|e,b|z,b|z,z|e,c|d,a|z,a|e,b|d,z|e,z|d,b|f,a|f, c|f,a|d,c|z,b|f,b|d,z|f,a|f,c|e,z|f,b|e,b|e,z|z,a|d,a|e,z|z,c|d]; a=1<<20; b=1<<31; c=a|b; d=1<<5; e=1<<15; f=d|e; SP2 = [c|f,b|e,z|e,a|f,a|z,z|d,c|d,b|f,b|d,c|f,c|e,b|z,b|e,a|z,z|d,c|d, a|e,a|d,b|f,z|z,b|z,z|e,a|f,c|z,a|d,b|d,z|z,a|e,z|f,c|e,c|z,z|f, z|z,a|f,c|d,a|z,b|f,c|z,c|e,z|e,c|z,b|e,z|d,c|f,a|f,z|d,z|e,b|z, z|f,c|e,a|z,b|d,a|d,b|f,b|d,a|d,a|e,z|z,b|e,z|f,b|z,c|d,c|f,a|e]; a=1<<17; b=1<<27; c=a|b; d=1<<3; e=1<<9; f=d|e; SP3 = [z|f,c|e,z|z,c|d,b|e,z|z,a|f,b|e,a|d,b|d,b|d,a|z,c|f,a|d,c|z,z|f, b|z,z|d,c|e,z|e,a|e,c|z,c|d,a|f,b|f,a|e,a|z,b|f,z|d,c|f,z|e,b|z, c|e,b|z,a|d,z|f,a|z,c|e,b|e,z|z,z|e,a|d,c|f,b|e,b|d,z|e,z|z,c|d, b|f,a|z,b|z,c|f,z|d,a|f,a|e,b|d,c|z,b|f,z|f,c|z,a|f,z|d,c|d,a|e]; a=1<<13; b=1<<23; c=a|b; d=1<<0; e=1<<7; f=d|e; SP4 = [c|d,a|f,a|f,z|e,c|e,b|f,b|d,a|d,z|z,c|z,c|z,c|f,z|f,z|z,b|e,b|d, z|d,a|z,b|z,c|d,z|e,b|z,a|d,a|e,b|f,z|d,a|e,b|e,a|z,c|e,c|f,z|f, b|e,b|d,c|z,c|f,z|f,z|z,z|z,c|z,a|e,b|e,b|f,z|d,c|d,a|f,a|f,z|e, c|f,z|f,z|d,a|z,b|d,a|d,c|e,b|f,a|d,a|e,b|z,c|d,z|e,b|z,a|z,c|e]; a=1<<25; b=1<<30; c=a|b; d=1<<8; e=1<<19; f=d|e; SP5 = [z|d,a|f,a|e,c|d,z|e,z|d,b|z,a|e,b|f,z|e,a|d,b|f,c|d,c|e,z|f,b|z, a|z,b|e,b|e,z|z,b|d,c|f,c|f,a|d,c|e,b|d,z|z,c|z,a|f,a|z,c|z,z|f, z|e,c|d,z|d,a|z,b|z,a|e,c|d,b|f,a|d,b|z,c|e,a|f,b|f,z|d,a|z,c|e, c|f,z|f,c|z,c|f,a|e,z|z,b|e,c|z,z|f,a|d,b|d,z|e,z|z,b|e,a|f,b|d]; a=1<<22; b=1<<29; c=a|b; d=1<<4; e=1<<14; f=d|e; SP6 = [b|d,c|z,z|e,c|f,c|z,z|d,c|f,a|z,b|e,a|f,a|z,b|d,a|d,b|e,b|z,z|f, z|z,a|d,b|f,z|e,a|e,b|f,z|d,c|d,c|d,z|z,a|f,c|e,z|f,a|e,c|e,b|z, b|e,z|d,c|d,a|e,c|f,a|z,z|f,b|d,a|z,b|e,b|z,z|f,b|d,c|f,a|e,c|z, a|f,c|e,z|z,c|d,z|d,z|e,c|z,a|f,z|e,a|d,b|f,z|z,c|e,b|z,a|d,b|f]; a=1<<21; b=1<<26; c=a|b; d=1<<1; e=1<<11; f=d|e; SP7 = [a|z,c|d,b|f,z|z,z|e,b|f,a|f,c|e,c|f,a|z,z|z,b|d,z|d,b|z,c|d,z|f, b|e,a|f,a|d,b|e,b|d,c|z,c|e,a|d,c|z,z|e,z|f,c|f,a|e,z|d,b|z,a|e, b|z,a|e,a|z,b|f,b|f,c|d,c|d,z|d,a|d,b|z,b|e,a|z,c|e,z|f,a|f,c|e, z|f,b|d,c|f,c|z,a|e,z|z,z|d,c|f,z|z,a|f,c|z,z|e,b|d,b|e,z|e,a|d]; a=1<<18; b=1<<28; c=a|b; d=1<<6; e=1<<12; f=d|e; SP8 = [b|f,z|e,a|z,c|f,b|z,b|f,z|d,b|z,a|d,c|z,c|f,a|e,c|e,a|f,z|e,z|d, c|z,b|d,b|e,z|f,a|e,a|d,c|d,c|e,z|f,z|z,z|z,c|d,b|d,b|e,a|f,a|z, a|f,a|z,c|e,z|e,z|d,c|d,z|e,a|f,b|e,z|d,b|d,c|z,c|d,b|z,a|z,b|f, z|z,c|f,a|d,b|d,c|z,b|e,b|f,z|z,c|f,a|e,a|e,z|f,z|f,a|d,b|z,c|e]; // jshint +W013,+W015 // Set the key. function setKeys(keyBlock) { var i, j, l, m, n, o, pc1m = [], pcr = [], kn = [], raw0, raw1, rawi, KnLi; for (j = 0, l = 56; j < 56; ++j, l -= 8) { l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1 m = l & 0x7; pc1m[j] = ((keyBlock[l >>> 3] & (1<>> 10; keys[KnLi] |= (raw1 & 0x00000fc0) >>> 6; ++KnLi; keys[KnLi] = (raw0 & 0x0003f000) << 12; keys[KnLi] |= (raw0 & 0x0000003f) << 16; keys[KnLi] |= (raw1 & 0x0003f000) >>> 4; keys[KnLi] |= (raw1 & 0x0000003f); ++KnLi; } } // Encrypt 8 bytes of text function enc8(text) { var i = 0, b = text.slice(), fval, keysi = 0, l, r, x; // left, right, accumulator // Squash 8 bytes to 2 ints l = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++]; r = b[i++]<<24 | b[i++]<<16 | b[i++]<<8 | b[i++]; x = ((l >>> 4) ^ r) & 0x0f0f0f0f; r ^= x; l ^= (x << 4); x = ((l >>> 16) ^ r) & 0x0000ffff; r ^= x; l ^= (x << 16); x = ((r >>> 2) ^ l) & 0x33333333; l ^= x; r ^= (x << 2); x = ((r >>> 8) ^ l) & 0x00ff00ff; l ^= x; r ^= (x << 8); r = (r << 1) | ((r >>> 31) & 1); x = (l ^ r) & 0xaaaaaaaa; l ^= x; r ^= x; l = (l << 1) | ((l >>> 31) & 1); for (i = 0; i < 8; ++i) { x = (r << 28) | (r >>> 4); x ^= keys[keysi++]; fval = SP7[x & 0x3f]; fval |= SP5[(x >>> 8) & 0x3f]; fval |= SP3[(x >>> 16) & 0x3f]; fval |= SP1[(x >>> 24) & 0x3f]; x = r ^ keys[keysi++]; fval |= SP8[x & 0x3f]; fval |= SP6[(x >>> 8) & 0x3f]; fval |= SP4[(x >>> 16) & 0x3f]; fval |= SP2[(x >>> 24) & 0x3f]; l ^= fval; x = (l << 28) | (l >>> 4); x ^= keys[keysi++]; fval = SP7[x & 0x3f]; fval |= SP5[(x >>> 8) & 0x3f]; fval |= SP3[(x >>> 16) & 0x3f]; fval |= SP1[(x >>> 24) & 0x3f]; x = l ^ keys[keysi++]; fval |= SP8[x & 0x0000003f]; fval |= SP6[(x >>> 8) & 0x3f]; fval |= SP4[(x >>> 16) & 0x3f]; fval |= SP2[(x >>> 24) & 0x3f]; r ^= fval; } r = (r << 31) | (r >>> 1); x = (l ^ r) & 0xaaaaaaaa; l ^= x; r ^= x; l = (l << 31) | (l >>> 1); x = ((l >>> 8) ^ r) & 0x00ff00ff; r ^= x; l ^= (x << 8); x = ((l >>> 2) ^ r) & 0x33333333; r ^= x; l ^= (x << 2); x = ((r >>> 16) ^ l) & 0x0000ffff; l ^= x; r ^= (x << 16); x = ((r >>> 4) ^ l) & 0x0f0f0f0f; l ^= x; r ^= (x << 4); // Spread ints to bytes x = [r, l]; for (i = 0; i < 8; i++) { b[i] = (x[i>>>2] >>> (8 * (3 - (i % 4)))) % 256; if (b[i] < 0) { b[i] += 256; } // unsigned } return b; } // Encrypt 16 bytes of text using passwd as key function encrypt(t) { return enc8(t.slice(0, 8)).concat(enc8(t.slice(8, 16))); } setKeys(passwd); // Setup keys return {'encrypt': encrypt}; // Public interface } // function DES ================================================ FILE: app/static/novnc/display.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Copyright (C) 2015 Samuel Mannehed for Cendio AB * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ /*jslint browser: true, white: false */ /*global Util, Base64, changeCursor */ var Display; (function () { "use strict"; var SUPPORTS_IMAGEDATA_CONSTRUCTOR = false; try { new ImageData(new Uint8ClampedArray(1), 1, 1); SUPPORTS_IMAGEDATA_CONSTRUCTOR = true; } catch (ex) { // ignore failure } Display = function (defaults) { this._drawCtx = null; this._c_forceCanvas = false; this._renderQ = []; // queue drawing actions for in-oder rendering // the full frame buffer (logical canvas) size this._fb_width = 0; this._fb_height = 0; // the size limit of the viewport (start disabled) this._maxWidth = 0; this._maxHeight = 0; // the visible "physical canvas" viewport this._viewportLoc = { 'x': 0, 'y': 0, 'w': 0, 'h': 0 }; this._cleanRect = { 'x1': 0, 'y1': 0, 'x2': -1, 'y2': -1 }; this._prevDrawStyle = ""; this._tile = null; this._tile16x16 = null; this._tile_x = 0; this._tile_y = 0; Util.set_defaults(this, defaults, { 'true_color': true, 'colourMap': [], 'scale': 1.0, 'viewport': false, 'render_mode': '' }); Util.Debug(">> Display.constructor"); if (!this._target) { throw new Error("Target must be set"); } if (typeof this._target === 'string') { throw new Error('target must be a DOM element'); } if (!this._target.getContext) { throw new Error("no getContext method"); } if (!this._drawCtx) { this._drawCtx = this._target.getContext('2d'); } Util.Debug("User Agent: " + navigator.userAgent); if (Util.Engine.gecko) { Util.Debug("Browser: gecko " + Util.Engine.gecko); } if (Util.Engine.webkit) { Util.Debug("Browser: webkit " + Util.Engine.webkit); } if (Util.Engine.trident) { Util.Debug("Browser: trident " + Util.Engine.trident); } if (Util.Engine.presto) { Util.Debug("Browser: presto " + Util.Engine.presto); } this.clear(); // Check canvas features if ('createImageData' in this._drawCtx) { this._render_mode = 'canvas rendering'; } else { throw new Error("Canvas does not support createImageData"); } if (this._prefer_js === null) { Util.Info("Prefering javascript operations"); this._prefer_js = true; } // Determine browser support for setting the cursor via data URI scheme if (this._cursor_uri || this._cursor_uri === null || this._cursor_uri === undefined) { this._cursor_uri = Util.browserSupportsCursorURIs(); } Util.Debug("<< Display.constructor"); }; Display.prototype = { // Public methods viewportChangePos: function (deltaX, deltaY) { var vp = this._viewportLoc; deltaX = Math.floor(deltaX); deltaY = Math.floor(deltaY); if (!this._viewport) { deltaX = -vp.w; // clamped later of out of bounds deltaY = -vp.h; } var vx2 = vp.x + vp.w - 1; var vy2 = vp.y + vp.h - 1; // Position change if (deltaX < 0 && vp.x + deltaX < 0) { deltaX = -vp.x; } if (vx2 + deltaX >= this._fb_width) { deltaX -= vx2 + deltaX - this._fb_width + 1; } if (vp.y + deltaY < 0) { deltaY = -vp.y; } if (vy2 + deltaY >= this._fb_height) { deltaY -= (vy2 + deltaY - this._fb_height + 1); } if (deltaX === 0 && deltaY === 0) { return; } Util.Debug("viewportChange deltaX: " + deltaX + ", deltaY: " + deltaY); vp.x += deltaX; vx2 += deltaX; vp.y += deltaY; vy2 += deltaY; // Update the clean rectangle var cr = this._cleanRect; if (vp.x > cr.x1) { cr.x1 = vp.x; } if (vx2 < cr.x2) { cr.x2 = vx2; } if (vp.y > cr.y1) { cr.y1 = vp.y; } if (vy2 < cr.y2) { cr.y2 = vy2; } var x1, w; if (deltaX < 0) { // Shift viewport left, redraw left section x1 = 0; w = -deltaX; } else { // Shift viewport right, redraw right section x1 = vp.w - deltaX; w = deltaX; } var y1, h; if (deltaY < 0) { // Shift viewport up, redraw top section y1 = 0; h = -deltaY; } else { // Shift viewport down, redraw bottom section y1 = vp.h - deltaY; h = deltaY; } var saveStyle = this._drawCtx.fillStyle; var canvas = this._target; this._drawCtx.fillStyle = "rgb(255,255,255)"; // Due to this bug among others [1] we need to disable the image-smoothing to // avoid getting a blur effect when panning. // // 1. https://bugzilla.mozilla.org/show_bug.cgi?id=1194719 // // We need to set these every time since all properties are reset // when the the size is changed if (this._drawCtx.mozImageSmoothingEnabled) { this._drawCtx.mozImageSmoothingEnabled = false; } else if (this._drawCtx.webkitImageSmoothingEnabled) { this._drawCtx.webkitImageSmoothingEnabled = false; } else if (this._drawCtx.msImageSmoothingEnabled) { this._drawCtx.msImageSmoothingEnabled = false; } else if (this._drawCtx.imageSmoothingEnabled) { this._drawCtx.imageSmoothingEnabled = false; } // Copy the valid part of the viewport to the shifted location this._drawCtx.drawImage(canvas, 0, 0, vp.w, vp.h, -deltaX, -deltaY, vp.w, vp.h); if (deltaX !== 0) { this._drawCtx.fillRect(x1, 0, w, vp.h); } if (deltaY !== 0) { this._drawCtx.fillRect(0, y1, vp.w, h); } this._drawCtx.fillStyle = saveStyle; }, viewportChangeSize: function(width, height) { if (typeof(width) === "undefined" || typeof(height) === "undefined") { Util.Debug("Setting viewport to full display region"); width = this._fb_width; height = this._fb_height; } var vp = this._viewportLoc; if (vp.w !== width || vp.h !== height) { if (this._viewport) { if (this._maxWidth !== 0 && width > this._maxWidth) { width = this._maxWidth; } if (this._maxHeight !== 0 && height > this._maxHeight) { height = this._maxHeight; } } var cr = this._cleanRect; if (width < vp.w && cr.x2 > vp.x + width - 1) { cr.x2 = vp.x + width - 1; } if (height < vp.h && cr.y2 > vp.y + height - 1) { cr.y2 = vp.y + height - 1; } vp.w = width; vp.h = height; var canvas = this._target; if (canvas.width !== width || canvas.height !== height) { // We have to save the canvas data since changing the size will clear it var saveImg = null; if (vp.w > 0 && vp.h > 0 && canvas.width > 0 && canvas.height > 0) { var img_width = canvas.width < vp.w ? canvas.width : vp.w; var img_height = canvas.height < vp.h ? canvas.height : vp.h; saveImg = this._drawCtx.getImageData(0, 0, img_width, img_height); } if (canvas.width !== width) { canvas.width = width; canvas.style.width = width + 'px'; } if (canvas.height !== height) { canvas.height = height; canvas.style.height = height + 'px'; } if (saveImg) { this._drawCtx.putImageData(saveImg, 0, 0); } } } }, // Return a map of clean and dirty areas of the viewport and reset the // tracking of clean and dirty areas // // Returns: { 'cleanBox': { 'x': x, 'y': y, 'w': w, 'h': h}, // 'dirtyBoxes': [{ 'x': x, 'y': y, 'w': w, 'h': h }, ...] } getCleanDirtyReset: function () { var vp = this._viewportLoc; var cr = this._cleanRect; var cleanBox = { 'x': cr.x1, 'y': cr.y1, 'w': cr.x2 - cr.x1 + 1, 'h': cr.y2 - cr.y1 + 1 }; var dirtyBoxes = []; if (cr.x1 >= cr.x2 || cr.y1 >= cr.y2) { // Whole viewport is dirty dirtyBoxes.push({ 'x': vp.x, 'y': vp.y, 'w': vp.w, 'h': vp.h }); } else { // Redraw dirty regions var vx2 = vp.x + vp.w - 1; var vy2 = vp.y + vp.h - 1; if (vp.x < cr.x1) { // left side dirty region dirtyBoxes.push({'x': vp.x, 'y': vp.y, 'w': cr.x1 - vp.x + 1, 'h': vp.h}); } if (vx2 > cr.x2) { // right side dirty region dirtyBoxes.push({'x': cr.x2 + 1, 'y': vp.y, 'w': vx2 - cr.x2, 'h': vp.h}); } if(vp.y < cr.y1) { // top/middle dirty region dirtyBoxes.push({'x': cr.x1, 'y': vp.y, 'w': cr.x2 - cr.x1 + 1, 'h': cr.y1 - vp.y}); } if (vy2 > cr.y2) { // bottom/middle dirty region dirtyBoxes.push({'x': cr.x1, 'y': cr.y2 + 1, 'w': cr.x2 - cr.x1 + 1, 'h': vy2 - cr.y2}); } } this._cleanRect = {'x1': vp.x, 'y1': vp.y, 'x2': vp.x + vp.w - 1, 'y2': vp.y + vp.h - 1}; return {'cleanBox': cleanBox, 'dirtyBoxes': dirtyBoxes}; }, absX: function (x) { return x + this._viewportLoc.x; }, absY: function (y) { return y + this._viewportLoc.y; }, resize: function (width, height) { this._prevDrawStyle = ""; this._fb_width = width; this._fb_height = height; this._rescale(this._scale); this.viewportChangeSize(); }, clear: function () { if (this._logo) { this.resize(this._logo.width, this._logo.height); this.blitStringImage(this._logo.data, 0, 0); } else { if (Util.Engine.trident === 6) { // NB(directxman12): there's a bug in IE10 where we can fail to actually // clear the canvas here because of the resize. // Clearing the current viewport first fixes the issue this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h); } this.resize(240, 20); this._drawCtx.clearRect(0, 0, this._viewportLoc.w, this._viewportLoc.h); } this._renderQ = []; }, fillRect: function (x, y, width, height, color, from_queue) { if (this._renderQ.length !== 0 && !from_queue) { this.renderQ_push({ 'type': 'fill', 'x': x, 'y': y, 'width': width, 'height': height, 'color': color }); } else { this._setFillColor(color); this._drawCtx.fillRect(x - this._viewportLoc.x, y - this._viewportLoc.y, width, height); } }, copyImage: function (old_x, old_y, new_x, new_y, w, h, from_queue) { if (this._renderQ.length !== 0 && !from_queue) { this.renderQ_push({ 'type': 'copy', 'old_x': old_x, 'old_y': old_y, 'x': new_x, 'y': new_y, 'width': w, 'height': h, }); } else { var x1 = old_x - this._viewportLoc.x; var y1 = old_y - this._viewportLoc.y; var x2 = new_x - this._viewportLoc.x; var y2 = new_y - this._viewportLoc.y; this._drawCtx.drawImage(this._target, x1, y1, w, h, x2, y2, w, h); } }, // start updating a tile startTile: function (x, y, width, height, color) { this._tile_x = x; this._tile_y = y; if (width === 16 && height === 16) { this._tile = this._tile16x16; } else { this._tile = this._drawCtx.createImageData(width, height); } if (this._prefer_js) { var bgr; if (this._true_color) { bgr = color; } else { bgr = this._colourMap[color[0]]; } var red = bgr[2]; var green = bgr[1]; var blue = bgr[0]; var data = this._tile.data; for (var i = 0; i < width * height * 4; i += 4) { data[i] = red; data[i + 1] = green; data[i + 2] = blue; data[i + 3] = 255; } } else { this.fillRect(x, y, width, height, color, true); } }, // update sub-rectangle of the current tile subTile: function (x, y, w, h, color) { if (this._prefer_js) { var bgr; if (this._true_color) { bgr = color; } else { bgr = this._colourMap[color[0]]; } var red = bgr[2]; var green = bgr[1]; var blue = bgr[0]; var xend = x + w; var yend = y + h; var data = this._tile.data; var width = this._tile.width; for (var j = y; j < yend; j++) { for (var i = x; i < xend; i++) { var p = (i + (j * width)) * 4; data[p] = red; data[p + 1] = green; data[p + 2] = blue; data[p + 3] = 255; } } } else { this.fillRect(this._tile_x + x, this._tile_y + y, w, h, color, true); } }, // draw the current tile to the screen finishTile: function () { if (this._prefer_js) { this._drawCtx.putImageData(this._tile, this._tile_x - this._viewportLoc.x, this._tile_y - this._viewportLoc.y); } // else: No-op -- already done by setSubTile }, blitImage: function (x, y, width, height, arr, offset, from_queue) { if (this._renderQ.length !== 0 && !from_queue) { this.renderQ_push({ 'type': 'blit', 'data': arr, 'x': x, 'y': y, 'width': width, 'height': height, }); } else if (this._true_color) { this._bgrxImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset); } else { this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset); } }, blitRgbImage: function (x, y , width, height, arr, offset, from_queue) { if (this._renderQ.length !== 0 && !from_queue) { this.renderQ_push({ 'type': 'blitRgb', 'data': arr, 'x': x, 'y': y, 'width': width, 'height': height, }); } else if (this._true_color) { this._rgbImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset); } else { // probably wrong? this._cmapImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset); } }, blitRgbxImage: function (x, y, width, height, arr, offset, from_queue) { if (this._renderQ.length !== 0 && !from_queue) { // NB(directxman12): it's technically more performant here to use preallocated arrays, but it // but it's a lot of extra work for not a lot of payoff -- if we're using the render queue, // this probably isn't getting called *nearly* as much var new_arr = new Uint8Array(width * height * 4); new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length)); this.renderQ_push({ 'type': 'blitRgbx', 'data': new_arr, 'x': x, 'y': y, 'width': width, 'height': height, }); } else { this._rgbxImageData(x, y, this._viewportLoc.x, this._viewportLoc.y, width, height, arr, offset); } }, blitStringImage: function (str, x, y) { var img = new Image(); img.onload = function () { this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y); }.bind(this); img.src = str; return img; // for debugging purposes }, // wrap ctx.drawImage but relative to viewport drawImage: function (img, x, y) { this._drawCtx.drawImage(img, x - this._viewportLoc.x, y - this._viewportLoc.y); }, renderQ_push: function (action) { this._renderQ.push(action); if (this._renderQ.length === 1) { // If this can be rendered immediately it will be, otherwise // the scanner will start polling the queue (every // requestAnimationFrame interval) this._scan_renderQ(); } }, changeCursor: function (pixels, mask, hotx, hoty, w, h) { if (this._cursor_uri === false) { Util.Warn("changeCursor called but no cursor data URI support"); return; } if (this._true_color) { Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h); } else { Display.changeCursor(this._target, pixels, mask, hotx, hoty, w, h, this._colourMap); } }, defaultCursor: function () { this._target.style.cursor = "default"; }, disableLocalCursor: function () { this._target.style.cursor = "none"; }, clippingDisplay: function () { var vp = this._viewportLoc; var fbClip = this._fb_width > vp.w || this._fb_height > vp.h; var limitedVp = this._maxWidth !== 0 && this._maxHeight !== 0; var clipping = false; if (limitedVp) { clipping = vp.w > this._maxWidth || vp.h > this._maxHeight; } return fbClip || (limitedVp && clipping); }, // Overridden getters/setters get_context: function () { return this._drawCtx; }, set_scale: function (scale) { this._rescale(scale); }, set_width: function (w) { this._fb_width = w; }, get_width: function () { return this._fb_width; }, set_height: function (h) { this._fb_height = h; }, get_height: function () { return this._fb_height; }, autoscale: function (containerWidth, containerHeight, downscaleOnly) { var targetAspectRatio = containerWidth / containerHeight; var fbAspectRatio = this._fb_width / this._fb_height; var scaleRatio; if (fbAspectRatio >= targetAspectRatio) { scaleRatio = containerWidth / this._fb_width; } else { scaleRatio = containerHeight / this._fb_height; } var targetW, targetH; if (scaleRatio > 1.0 && downscaleOnly) { targetW = this._fb_width; targetH = this._fb_height; scaleRatio = 1.0; } else if (fbAspectRatio >= targetAspectRatio) { targetW = containerWidth; targetH = Math.round(containerWidth / fbAspectRatio); } else { targetW = Math.round(containerHeight * fbAspectRatio); targetH = containerHeight; } // NB(directxman12): If you set the width directly, or set the // style width to a number, the canvas is cleared. // However, if you set the style width to a string // ('NNNpx'), the canvas is scaled without clearing. this._target.style.width = targetW + 'px'; this._target.style.height = targetH + 'px'; this._scale = scaleRatio; return scaleRatio; // so that the mouse, etc scale can be set }, // Private Methods _rescale: function (factor) { this._scale = factor; var w; var h; if (this._viewport && this._maxWidth !== 0 && this._maxHeight !== 0) { w = Math.min(this._fb_width, this._maxWidth); h = Math.min(this._fb_height, this._maxHeight); } else { w = this._fb_width; h = this._fb_height; } this._target.style.width = Math.round(factor * w) + 'px'; this._target.style.height = Math.round(factor * h) + 'px'; }, _setFillColor: function (color) { var bgr; if (this._true_color) { bgr = color; } else { bgr = this._colourMap[color]; } var newStyle = 'rgb(' + bgr[2] + ',' + bgr[1] + ',' + bgr[0] + ')'; if (newStyle !== this._prevDrawStyle) { this._drawCtx.fillStyle = newStyle; this._prevDrawStyle = newStyle; } }, _rgbImageData: function (x, y, vx, vy, width, height, arr, offset) { var img = this._drawCtx.createImageData(width, height); var data = img.data; for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 3) { data[i] = arr[j]; data[i + 1] = arr[j + 1]; data[i + 2] = arr[j + 2]; data[i + 3] = 255; // Alpha } this._drawCtx.putImageData(img, x - vx, y - vy); }, _bgrxImageData: function (x, y, vx, vy, width, height, arr, offset) { var img = this._drawCtx.createImageData(width, height); var data = img.data; for (var i = 0, j = offset; i < width * height * 4; i += 4, j += 4) { data[i] = arr[j + 2]; data[i + 1] = arr[j + 1]; data[i + 2] = arr[j]; data[i + 3] = 255; // Alpha } this._drawCtx.putImageData(img, x - vx, y - vy); }, _rgbxImageData: function (x, y, vx, vy, width, height, arr, offset) { // NB(directxman12): arr must be an Type Array view var img; if (SUPPORTS_IMAGEDATA_CONSTRUCTOR) { img = new ImageData(new Uint8ClampedArray(arr.buffer, arr.byteOffset, width * height * 4), width, height); } else { img = this._drawCtx.createImageData(width, height); img.data.set(new Uint8ClampedArray(arr.buffer, arr.byteOffset, width * height * 4)); } this._drawCtx.putImageData(img, x - vx, y - vy); }, _cmapImageData: function (x, y, vx, vy, width, height, arr, offset) { var img = this._drawCtx.createImageData(width, height); var data = img.data; var cmap = this._colourMap; for (var i = 0, j = offset; i < width * height * 4; i += 4, j++) { var bgr = cmap[arr[j]]; data[i] = bgr[2]; data[i + 1] = bgr[1]; data[i + 2] = bgr[0]; data[i + 3] = 255; // Alpha } this._drawCtx.putImageData(img, x - vx, y - vy); }, _scan_renderQ: function () { var ready = true; while (ready && this._renderQ.length > 0) { var a = this._renderQ[0]; switch (a.type) { case 'copy': this.copyImage(a.old_x, a.old_y, a.x, a.y, a.width, a.height, true); break; case 'fill': this.fillRect(a.x, a.y, a.width, a.height, a.color, true); break; case 'blit': this.blitImage(a.x, a.y, a.width, a.height, a.data, 0, true); break; case 'blitRgb': this.blitRgbImage(a.x, a.y, a.width, a.height, a.data, 0, true); break; case 'blitRgbx': this.blitRgbxImage(a.x, a.y, a.width, a.height, a.data, 0, true); break; case 'img': if (a.img.complete) { this.drawImage(a.img, a.x, a.y); } else { // We need to wait for this image to 'load' // to keep things in-order ready = false; } break; } if (ready) { this._renderQ.shift(); } } if (this._renderQ.length > 0) { requestAnimFrame(this._scan_renderQ.bind(this)); } }, }; Util.make_properties(Display, [ ['target', 'wo', 'dom'], // Canvas element for rendering ['context', 'ro', 'raw'], // Canvas 2D context for rendering (read-only) ['logo', 'rw', 'raw'], // Logo to display when cleared: {"width": w, "height": h, "data": data} ['true_color', 'rw', 'bool'], // Use true-color pixel data ['colourMap', 'rw', 'arr'], // Colour map array (when not true-color) ['scale', 'rw', 'float'], // Display area scale factor 0.0 - 1.0 ['viewport', 'rw', 'bool'], // Use viewport clipping ['width', 'rw', 'int'], // Display area width ['height', 'rw', 'int'], // Display area height ['maxWidth', 'rw', 'int'], // Viewport max width (0 if disabled) ['maxHeight', 'rw', 'int'], // Viewport max height (0 if disabled) ['render_mode', 'ro', 'str'], // Canvas rendering mode (read-only) ['prefer_js', 'rw', 'str'], // Prefer Javascript over canvas methods ['cursor_uri', 'rw', 'raw'] // Can we render cursor using data URI ]); // Class Methods Display.changeCursor = function (target, pixels, mask, hotx, hoty, w0, h0, cmap) { var w = w0; var h = h0; if (h < w) { h = w; // increase h to make it square } else { w = h; // increase w to make it square } var cur = []; // Push multi-byte little-endian values cur.push16le = function (num) { this.push(num & 0xFF, (num >> 8) & 0xFF); }; cur.push32le = function (num) { this.push(num & 0xFF, (num >> 8) & 0xFF, (num >> 16) & 0xFF, (num >> 24) & 0xFF); }; var IHDRsz = 40; var RGBsz = w * h * 4; var XORsz = Math.ceil((w * h) / 8.0); var ANDsz = Math.ceil((w * h) / 8.0); cur.push16le(0); // 0: Reserved cur.push16le(2); // 2: .CUR type cur.push16le(1); // 4: Number of images, 1 for non-animated ico // Cursor #1 header (ICONDIRENTRY) cur.push(w); // 6: width cur.push(h); // 7: height cur.push(0); // 8: colors, 0 -> true-color cur.push(0); // 9: reserved cur.push16le(hotx); // 10: hotspot x coordinate cur.push16le(hoty); // 12: hotspot y coordinate cur.push32le(IHDRsz + RGBsz + XORsz + ANDsz); // 14: cursor data byte size cur.push32le(22); // 18: offset of cursor data in the file // Cursor #1 InfoHeader (ICONIMAGE/BITMAPINFO) cur.push32le(IHDRsz); // 22: InfoHeader size cur.push32le(w); // 26: Cursor width cur.push32le(h * 2); // 30: XOR+AND height cur.push16le(1); // 34: number of planes cur.push16le(32); // 36: bits per pixel cur.push32le(0); // 38: Type of compression cur.push32le(XORsz + ANDsz); // 42: Size of Image cur.push32le(0); // 46: reserved cur.push32le(0); // 50: reserved cur.push32le(0); // 54: reserved cur.push32le(0); // 58: reserved // 62: color data (RGBQUAD icColors[]) var y, x; for (y = h - 1; y >= 0; y--) { for (x = 0; x < w; x++) { if (x >= w0 || y >= h0) { cur.push(0); // blue cur.push(0); // green cur.push(0); // red cur.push(0); // alpha } else { var idx = y * Math.ceil(w0 / 8) + Math.floor(x / 8); var alpha = (mask[idx] << (x % 8)) & 0x80 ? 255 : 0; if (cmap) { idx = (w0 * y) + x; var rgb = cmap[pixels[idx]]; cur.push(rgb[2]); // blue cur.push(rgb[1]); // green cur.push(rgb[0]); // red cur.push(alpha); // alpha } else { idx = ((w0 * y) + x) * 4; cur.push(pixels[idx + 2]); // blue cur.push(pixels[idx + 1]); // green cur.push(pixels[idx]); // red cur.push(alpha); // alpha } } } } // XOR/bitmask data (BYTE icXOR[]) // (ignored, just needs to be the right size) for (y = 0; y < h; y++) { for (x = 0; x < Math.ceil(w / 8); x++) { cur.push(0); } } // AND/bitmask data (BYTE icAND[]) // (ignored, just needs to be the right size) for (y = 0; y < h; y++) { for (x = 0; x < Math.ceil(w / 8); x++) { cur.push(0); } } var url = 'data:image/x-icon;base64,' + Base64.encode(cur); target.style.cursor = 'url(' + url + ')' + hotx + ' ' + hoty + ', default'; }; })(); ================================================ FILE: app/static/novnc/inflator.js ================================================ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.inflator = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>> 16) & 0xffff) |0, n = 0; while (len !== 0) { // Set limit ~ twice less than 5552, to keep // s2 in 31-bits, because we force signed ints. // in other case %= will fail. n = len > 2000 ? 2000 : len; len -= n; do { s1 = (s1 + buf[pos++]) |0; s2 = (s2 + s1) |0; } while (--n); s1 %= 65521; s2 %= 65521; } return (s1 | (s2 << 16)) |0; } module.exports = adler32; },{}],3:[function(require,module,exports){ 'use strict'; // Note: we can't get significant speed boost here. // So write code to minimize size - no pregenerated tables // and array tools dependencies. // Use ordinary array, since untyped makes no boost here function makeTable() { var c, table = []; for (var n =0; n < 256; n++) { c = n; for (var k =0; k < 8; k++) { c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); } table[n] = c; } return table; } // Create table on load. Just 255 signed longs. Not a problem. var crcTable = makeTable(); function crc32(crc, buf, len, pos) { var t = crcTable, end = pos + len; crc = crc ^ (-1); for (var i = pos; i < end; i++) { crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; } return (crc ^ (-1)); // >>> 0; } module.exports = crc32; },{}],4:[function(require,module,exports){ 'use strict'; // See state defs from inflate.js var BAD = 30; /* got a data error -- remain here until reset */ var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ /* Decode literal, length, and distance codes and write out the resulting literal and match bytes until either not enough input or output is available, an end-of-block is encountered, or a data error is encountered. When large enough input and output buffers are supplied to inflate(), for example, a 16K input buffer and a 64K output buffer, more than 95% of the inflate execution time is spent in this routine. Entry assumptions: state.mode === LEN strm.avail_in >= 6 strm.avail_out >= 258 start >= strm.avail_out state.bits < 8 On return, state.mode is one of: LEN -- ran out of enough output space or enough available input TYPE -- reached end of block code, inflate() to interpret next block BAD -- error in block data Notes: - The maximum input bits used by a length/distance pair is 15 bits for the length code, 5 bits for the length extra, 15 bits for the distance code, and 13 bits for the distance extra. This totals 48 bits, or six bytes. Therefore if strm.avail_in >= 6, then there is enough input to avoid checking for available input while decoding. - The maximum bytes that a single length/distance pair can output is 258 bytes, which is the maximum length that can be coded. inflate_fast() requires strm.avail_out >= 258 for each loop to avoid checking for output space. */ module.exports = function inflate_fast(strm, start) { var state; var _in; /* local strm.input */ var last; /* have enough input while in < last */ var _out; /* local strm.output */ var beg; /* inflate()'s initial strm.output */ var end; /* while out < end, enough space available */ //#ifdef INFLATE_STRICT var dmax; /* maximum distance from zlib header */ //#endif var wsize; /* window size or zero if not using window */ var whave; /* valid bytes in the window */ var wnext; /* window write index */ var window; /* allocated sliding window, if wsize != 0 */ var hold; /* local strm.hold */ var bits; /* local strm.bits */ var lcode; /* local strm.lencode */ var dcode; /* local strm.distcode */ var lmask; /* mask for first level of length codes */ var dmask; /* mask for first level of distance codes */ var here; /* retrieved table entry */ var op; /* code bits, operation, extra bits, or */ /* window position, window bytes to copy */ var len; /* match length, unused bytes */ var dist; /* match distance */ var from; /* where to copy match from */ var from_source; var input, output; // JS specific, because we have no pointers /* copy state to local variables */ state = strm.state; //here = state.here; _in = strm.next_in; input = strm.input; last = _in + (strm.avail_in - 5); _out = strm.next_out; output = strm.output; beg = _out - (start - strm.avail_out); end = _out + (strm.avail_out - 257); //#ifdef INFLATE_STRICT dmax = state.dmax; //#endif wsize = state.wsize; whave = state.whave; wnext = state.wnext; window = state.window; hold = state.hold; bits = state.bits; lcode = state.lencode; dcode = state.distcode; lmask = (1 << state.lenbits) - 1; dmask = (1 << state.distbits) - 1; /* decode literals and length/distances until end-of-block or not enough input data or output space */ top: do { if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = lcode[hold & lmask]; dolen: for (;;) { // Goto emulation op = here >>> 24/*here.bits*/; hold >>>= op; bits -= op; op = (here >>> 16) & 0xff/*here.op*/; if (op === 0) { /* literal */ //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? // "inflate: literal '%c'\n" : // "inflate: literal 0x%02x\n", here.val)); output[_out++] = here & 0xffff/*here.val*/; } else if (op & 16) { /* length base */ len = here & 0xffff/*here.val*/; op &= 15; /* number of extra bits */ if (op) { if (bits < op) { hold += input[_in++] << bits; bits += 8; } len += hold & ((1 << op) - 1); hold >>>= op; bits -= op; } //Tracevv((stderr, "inflate: length %u\n", len)); if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = dcode[hold & dmask]; dodist: for (;;) { // goto emulation op = here >>> 24/*here.bits*/; hold >>>= op; bits -= op; op = (here >>> 16) & 0xff/*here.op*/; if (op & 16) { /* distance base */ dist = here & 0xffff/*here.val*/; op &= 15; /* number of extra bits */ if (bits < op) { hold += input[_in++] << bits; bits += 8; if (bits < op) { hold += input[_in++] << bits; bits += 8; } } dist += hold & ((1 << op) - 1); //#ifdef INFLATE_STRICT if (dist > dmax) { strm.msg = 'invalid distance too far back'; state.mode = BAD; break top; } //#endif hold >>>= op; bits -= op; //Tracevv((stderr, "inflate: distance %u\n", dist)); op = _out - beg; /* max distance in output */ if (dist > op) { /* see if copy from window */ op = dist - op; /* distance back in window */ if (op > whave) { if (state.sane) { strm.msg = 'invalid distance too far back'; state.mode = BAD; break top; } // (!) This block is disabled in zlib defailts, // don't enable it for binary compatibility //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR // if (len <= op - whave) { // do { // output[_out++] = 0; // } while (--len); // continue top; // } // len -= op - whave; // do { // output[_out++] = 0; // } while (--op > whave); // if (op === 0) { // from = _out - dist; // do { // output[_out++] = output[from++]; // } while (--len); // continue top; // } //#endif } from = 0; // window index from_source = window; if (wnext === 0) { /* very common case */ from += wsize - op; if (op < len) { /* some from window */ len -= op; do { output[_out++] = window[from++]; } while (--op); from = _out - dist; /* rest from output */ from_source = output; } } else if (wnext < op) { /* wrap around window */ from += wsize + wnext - op; op -= wnext; if (op < len) { /* some from end of window */ len -= op; do { output[_out++] = window[from++]; } while (--op); from = 0; if (wnext < len) { /* some from start of window */ op = wnext; len -= op; do { output[_out++] = window[from++]; } while (--op); from = _out - dist; /* rest from output */ from_source = output; } } } else { /* contiguous in window */ from += wnext - op; if (op < len) { /* some from window */ len -= op; do { output[_out++] = window[from++]; } while (--op); from = _out - dist; /* rest from output */ from_source = output; } } while (len > 2) { output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; len -= 3; } if (len) { output[_out++] = from_source[from++]; if (len > 1) { output[_out++] = from_source[from++]; } } } else { from = _out - dist; /* copy direct from output */ do { /* minimum length is three */ output[_out++] = output[from++]; output[_out++] = output[from++]; output[_out++] = output[from++]; len -= 3; } while (len > 2); if (len) { output[_out++] = output[from++]; if (len > 1) { output[_out++] = output[from++]; } } } } else if ((op & 64) === 0) { /* 2nd level distance code */ here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; continue dodist; } else { strm.msg = 'invalid distance code'; state.mode = BAD; break top; } break; // need to emulate goto via "continue" } } else if ((op & 64) === 0) { /* 2nd level length code */ here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; continue dolen; } else if (op & 32) { /* end-of-block */ //Tracevv((stderr, "inflate: end of block\n")); state.mode = TYPE; break top; } else { strm.msg = 'invalid literal/length code'; state.mode = BAD; break top; } break; // need to emulate goto via "continue" } } while (_in < last && _out < end); /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ len = bits >> 3; _in -= len; bits -= len << 3; hold &= (1 << bits) - 1; /* update state and return */ strm.next_in = _in; strm.next_out = _out; strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); state.hold = hold; state.bits = bits; return; }; },{}],5:[function(require,module,exports){ 'use strict'; var utils = require('../utils/common'); var adler32 = require('./adler32'); var crc32 = require('./crc32'); var inflate_fast = require('./inffast'); var inflate_table = require('./inftrees'); var CODES = 0; var LENS = 1; var DISTS = 2; /* Public constants ==========================================================*/ /* ===========================================================================*/ /* Allowed flush values; see deflate() and inflate() below for details */ //var Z_NO_FLUSH = 0; //var Z_PARTIAL_FLUSH = 1; //var Z_SYNC_FLUSH = 2; //var Z_FULL_FLUSH = 3; var Z_FINISH = 4; var Z_BLOCK = 5; var Z_TREES = 6; /* Return codes for the compression/decompression functions. Negative values * are errors, positive values are used for special but normal events. */ var Z_OK = 0; var Z_STREAM_END = 1; var Z_NEED_DICT = 2; //var Z_ERRNO = -1; var Z_STREAM_ERROR = -2; var Z_DATA_ERROR = -3; var Z_MEM_ERROR = -4; var Z_BUF_ERROR = -5; //var Z_VERSION_ERROR = -6; /* The deflate compression method */ var Z_DEFLATED = 8; /* STATES ====================================================================*/ /* ===========================================================================*/ var HEAD = 1; /* i: waiting for magic header */ var FLAGS = 2; /* i: waiting for method and flags (gzip) */ var TIME = 3; /* i: waiting for modification time (gzip) */ var OS = 4; /* i: waiting for extra flags and operating system (gzip) */ var EXLEN = 5; /* i: waiting for extra length (gzip) */ var EXTRA = 6; /* i: waiting for extra bytes (gzip) */ var NAME = 7; /* i: waiting for end of file name (gzip) */ var COMMENT = 8; /* i: waiting for end of comment (gzip) */ var HCRC = 9; /* i: waiting for header crc (gzip) */ var DICTID = 10; /* i: waiting for dictionary check value */ var DICT = 11; /* waiting for inflateSetDictionary() call */ var TYPE = 12; /* i: waiting for type bits, including last-flag bit */ var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ var STORED = 14; /* i: waiting for stored size (length and complement) */ var COPY_ = 15; /* i/o: same as COPY below, but only first time in */ var COPY = 16; /* i/o: waiting for input or output to copy stored block */ var TABLE = 17; /* i: waiting for dynamic block table lengths */ var LENLENS = 18; /* i: waiting for code length code lengths */ var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ var LEN_ = 20; /* i: same as LEN below, but only first time in */ var LEN = 21; /* i: waiting for length/lit/eob code */ var LENEXT = 22; /* i: waiting for length extra bits */ var DIST = 23; /* i: waiting for distance code */ var DISTEXT = 24; /* i: waiting for distance extra bits */ var MATCH = 25; /* o: waiting for output space to copy string */ var LIT = 26; /* o: waiting for output space to write literal */ var CHECK = 27; /* i: waiting for 32-bit check value */ var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ var DONE = 29; /* finished check, done -- remain here until reset */ var BAD = 30; /* got a data error -- remain here until reset */ var MEM = 31; /* got an inflate() memory error -- remain here until reset */ var SYNC = 32; /* looking for synchronization bytes to restart inflate() */ /* ===========================================================================*/ var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); var MAX_WBITS = 15; /* 32K LZ77 window */ var DEF_WBITS = MAX_WBITS; function ZSWAP32(q) { return (((q >>> 24) & 0xff) + ((q >>> 8) & 0xff00) + ((q & 0xff00) << 8) + ((q & 0xff) << 24)); } function InflateState() { this.mode = 0; /* current inflate mode */ this.last = false; /* true if processing last block */ this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ this.havedict = false; /* true if dictionary provided */ this.flags = 0; /* gzip header method and flags (0 if zlib) */ this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ this.check = 0; /* protected copy of check value */ this.total = 0; /* protected copy of output count */ // TODO: may be {} this.head = null; /* where to save gzip header information */ /* sliding window */ this.wbits = 0; /* log base 2 of requested window size */ this.wsize = 0; /* window size or zero if not using window */ this.whave = 0; /* valid bytes in the window */ this.wnext = 0; /* window write index */ this.window = null; /* allocated sliding window, if needed */ /* bit accumulator */ this.hold = 0; /* input bit accumulator */ this.bits = 0; /* number of bits in "in" */ /* for string and stored block copying */ this.length = 0; /* literal or length of data to copy */ this.offset = 0; /* distance back to copy string from */ /* for table and code decoding */ this.extra = 0; /* extra bits needed */ /* fixed and dynamic code tables */ this.lencode = null; /* starting table for length/literal codes */ this.distcode = null; /* starting table for distance codes */ this.lenbits = 0; /* index bits for lencode */ this.distbits = 0; /* index bits for distcode */ /* dynamic table building */ this.ncode = 0; /* number of code length code lengths */ this.nlen = 0; /* number of length code lengths */ this.ndist = 0; /* number of distance code lengths */ this.have = 0; /* number of code lengths in lens[] */ this.next = null; /* next available space in codes[] */ this.lens = new utils.Buf16(320); /* temporary storage for code lengths */ this.work = new utils.Buf16(288); /* work area for code table building */ /* because we don't have pointers in js, we use lencode and distcode directly as buffers so we don't need codes */ //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */ this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ this.distdyn = null; /* dynamic table for distance codes (JS specific) */ this.sane = 0; /* if false, allow invalid distance too far */ this.back = 0; /* bits back of last unprocessed length/lit */ this.was = 0; /* initial length of match */ } function inflateResetKeep(strm) { var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; strm.total_in = strm.total_out = state.total = 0; strm.msg = ''; /*Z_NULL*/ if (state.wrap) { /* to support ill-conceived Java test suite */ strm.adler = state.wrap & 1; } state.mode = HEAD; state.last = 0; state.havedict = 0; state.dmax = 32768; state.head = null/*Z_NULL*/; state.hold = 0; state.bits = 0; //state.lencode = state.distcode = state.next = state.codes; state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS); state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS); state.sane = 1; state.back = -1; //Tracev((stderr, "inflate: reset\n")); return Z_OK; } function inflateReset(strm) { var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; state.wsize = 0; state.whave = 0; state.wnext = 0; return inflateResetKeep(strm); } function inflateReset2(strm, windowBits) { var wrap; var state; /* get the state */ if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; /* extract wrap request from windowBits parameter */ if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else { wrap = (windowBits >> 4) + 1; if (windowBits < 48) { windowBits &= 15; } } /* set number of window bits, free window if different */ if (windowBits && (windowBits < 8 || windowBits > 15)) { return Z_STREAM_ERROR; } if (state.window !== null && state.wbits !== windowBits) { state.window = null; } /* update state and reset the rest of it */ state.wrap = wrap; state.wbits = windowBits; return inflateReset(strm); } function inflateInit2(strm, windowBits) { var ret; var state; if (!strm) { return Z_STREAM_ERROR; } //strm.msg = Z_NULL; /* in case we return an error */ state = new InflateState(); //if (state === Z_NULL) return Z_MEM_ERROR; //Tracev((stderr, "inflate: allocated\n")); strm.state = state; state.window = null/*Z_NULL*/; ret = inflateReset2(strm, windowBits); if (ret !== Z_OK) { strm.state = null/*Z_NULL*/; } return ret; } function inflateInit(strm) { return inflateInit2(strm, DEF_WBITS); } /* Return state with length and distance decoding tables and index sizes set to fixed code decoding. Normally this returns fixed tables from inffixed.h. If BUILDFIXED is defined, then instead this routine builds the tables the first time it's called, and returns those tables the first time and thereafter. This reduces the size of the code by about 2K bytes, in exchange for a little execution time. However, BUILDFIXED should not be used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ var virgin = true; var lenfix, distfix; // We have no pointers in JS, so keep tables separate function fixedtables(state) { /* build fixed huffman tables if first call (may not be thread safe) */ if (virgin) { var sym; lenfix = new utils.Buf32(512); distfix = new utils.Buf32(32); /* literal/length table */ sym = 0; while (sym < 144) { state.lens[sym++] = 8; } while (sym < 256) { state.lens[sym++] = 9; } while (sym < 280) { state.lens[sym++] = 7; } while (sym < 288) { state.lens[sym++] = 8; } inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {bits: 9}); /* distance table */ sym = 0; while (sym < 32) { state.lens[sym++] = 5; } inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {bits: 5}); /* do this just once */ virgin = false; } state.lencode = lenfix; state.lenbits = 9; state.distcode = distfix; state.distbits = 5; } /* Update the window with the last wsize (normally 32K) bytes written before returning. If window does not exist yet, create it. This is only called when a window is already in use, or when output has been written during this inflate call, but the end of the deflate stream has not been reached yet. It is also called to create a window for dictionary data when a dictionary is loaded. Providing output buffers larger than 32K to inflate() should provide a speed advantage, since only the last 32K of output is copied to the sliding window upon return from inflate(), and since all distances after the first 32K of output will fall in the output data, making match copies simpler and faster. The advantage may be dependent on the size of the processor's data caches. */ function updatewindow(strm, src, end, copy) { var dist; var state = strm.state; /* if it hasn't been done already, allocate space for the window */ if (state.window === null) { state.wsize = 1 << state.wbits; state.wnext = 0; state.whave = 0; state.window = new utils.Buf8(state.wsize); } /* copy state->wsize or less output bytes into the circular window */ if (copy >= state.wsize) { utils.arraySet(state.window,src, end - state.wsize, state.wsize, 0); state.wnext = 0; state.whave = state.wsize; } else { dist = state.wsize - state.wnext; if (dist > copy) { dist = copy; } //zmemcpy(state->window + state->wnext, end - copy, dist); utils.arraySet(state.window,src, end - copy, dist, state.wnext); copy -= dist; if (copy) { //zmemcpy(state->window, end - copy, copy); utils.arraySet(state.window,src, end - copy, copy, 0); state.wnext = copy; state.whave = state.wsize; } else { state.wnext += dist; if (state.wnext === state.wsize) { state.wnext = 0; } if (state.whave < state.wsize) { state.whave += dist; } } } return 0; } function inflate(strm, flush) { var state; var input, output; // input/output buffers var next; /* next input INDEX */ var put; /* next output INDEX */ var have, left; /* available input and output */ var hold; /* bit buffer */ var bits; /* bits in bit buffer */ var _in, _out; /* save starting available input and output */ var copy; /* number of stored or match bytes to copy */ var from; /* where to copy match bytes from */ var from_source; var here = 0; /* current decoding table entry */ var here_bits, here_op, here_val; // paked "here" denormalized (JS specific) //var last; /* parent table entry */ var last_bits, last_op, last_val; // paked "last" denormalized (JS specific) var len; /* length to copy for repeats, bits to drop */ var ret; /* return code */ var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */ var opts; var n; // temporary var for NEED_BITS var order = /* permutation of code lengths */ [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; if (!strm || !strm.state || !strm.output || (!strm.input && strm.avail_in !== 0)) { return Z_STREAM_ERROR; } state = strm.state; if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ //--- LOAD() --- put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; //--- _in = have; _out = left; ret = Z_OK; inf_leave: // goto emulation for (;;) { switch (state.mode) { case HEAD: if (state.wrap === 0) { state.mode = TYPEDO; break; } //=== NEEDBITS(16); while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ state.check = 0/*crc32(0L, Z_NULL, 0)*/; //=== CRC2(state.check, hold); hbuf[0] = hold & 0xff; hbuf[1] = (hold >>> 8) & 0xff; state.check = crc32(state.check, hbuf, 2, 0); //===// //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = FLAGS; break; } state.flags = 0; /* expect zlib header */ if (state.head) { state.head.done = false; } if (!(state.wrap & 1) || /* check if zlib header allowed */ (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { strm.msg = 'incorrect header check'; state.mode = BAD; break; } if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { strm.msg = 'unknown compression method'; state.mode = BAD; break; } //--- DROPBITS(4) ---// hold >>>= 4; bits -= 4; //---// len = (hold & 0x0f)/*BITS(4)*/ + 8; if (state.wbits === 0) { state.wbits = len; } else if (len > state.wbits) { strm.msg = 'invalid window size'; state.mode = BAD; break; } state.dmax = 1 << len; //Tracev((stderr, "inflate: zlib header ok\n")); strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; state.mode = hold & 0x200 ? DICTID : TYPE; //=== INITBITS(); hold = 0; bits = 0; //===// break; case FLAGS: //=== NEEDBITS(16); */ while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.flags = hold; if ((state.flags & 0xff) !== Z_DEFLATED) { strm.msg = 'unknown compression method'; state.mode = BAD; break; } if (state.flags & 0xe000) { strm.msg = 'unknown header flags set'; state.mode = BAD; break; } if (state.head) { state.head.text = ((hold >> 8) & 1); } if (state.flags & 0x0200) { //=== CRC2(state.check, hold); hbuf[0] = hold & 0xff; hbuf[1] = (hold >>> 8) & 0xff; state.check = crc32(state.check, hbuf, 2, 0); //===// } //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = TIME; /* falls through */ case TIME: //=== NEEDBITS(32); */ while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if (state.head) { state.head.time = hold; } if (state.flags & 0x0200) { //=== CRC4(state.check, hold) hbuf[0] = hold & 0xff; hbuf[1] = (hold >>> 8) & 0xff; hbuf[2] = (hold >>> 16) & 0xff; hbuf[3] = (hold >>> 24) & 0xff; state.check = crc32(state.check, hbuf, 4, 0); //=== } //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = OS; /* falls through */ case OS: //=== NEEDBITS(16); */ while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if (state.head) { state.head.xflags = (hold & 0xff); state.head.os = (hold >> 8); } if (state.flags & 0x0200) { //=== CRC2(state.check, hold); hbuf[0] = hold & 0xff; hbuf[1] = (hold >>> 8) & 0xff; state.check = crc32(state.check, hbuf, 2, 0); //===// } //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = EXLEN; /* falls through */ case EXLEN: if (state.flags & 0x0400) { //=== NEEDBITS(16); */ while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.length = hold; if (state.head) { state.head.extra_len = hold; } if (state.flags & 0x0200) { //=== CRC2(state.check, hold); hbuf[0] = hold & 0xff; hbuf[1] = (hold >>> 8) & 0xff; state.check = crc32(state.check, hbuf, 2, 0); //===// } //=== INITBITS(); hold = 0; bits = 0; //===// } else if (state.head) { state.head.extra = null/*Z_NULL*/; } state.mode = EXTRA; /* falls through */ case EXTRA: if (state.flags & 0x0400) { copy = state.length; if (copy > have) { copy = have; } if (copy) { if (state.head) { len = state.head.extra_len - state.length; if (!state.head.extra) { // Use untyped array for more conveniend processing later state.head.extra = new Array(state.head.extra_len); } utils.arraySet( state.head.extra, input, next, // extra field is limited to 65536 bytes // - no need for additional size check copy, /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ len ); //zmemcpy(state.head.extra + len, next, // len + copy > state.head.extra_max ? // state.head.extra_max - len : copy); } if (state.flags & 0x0200) { state.check = crc32(state.check, input, copy, next); } have -= copy; next += copy; state.length -= copy; } if (state.length) { break inf_leave; } } state.length = 0; state.mode = NAME; /* falls through */ case NAME: if (state.flags & 0x0800) { if (have === 0) { break inf_leave; } copy = 0; do { // TODO: 2 or 1 bytes? len = input[next + copy++]; /* use constant limit because in js we should not preallocate memory */ if (state.head && len && (state.length < 65536 /*state.head.name_max*/)) { state.head.name += String.fromCharCode(len); } } while (len && copy < have); if (state.flags & 0x0200) { state.check = crc32(state.check, input, copy, next); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state.head) { state.head.name = null; } state.length = 0; state.mode = COMMENT; /* falls through */ case COMMENT: if (state.flags & 0x1000) { if (have === 0) { break inf_leave; } copy = 0; do { len = input[next + copy++]; /* use constant limit because in js we should not preallocate memory */ if (state.head && len && (state.length < 65536 /*state.head.comm_max*/)) { state.head.comment += String.fromCharCode(len); } } while (len && copy < have); if (state.flags & 0x0200) { state.check = crc32(state.check, input, copy, next); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state.head) { state.head.comment = null; } state.mode = HCRC; /* falls through */ case HCRC: if (state.flags & 0x0200) { //=== NEEDBITS(16); */ while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if (hold !== (state.check & 0xffff)) { strm.msg = 'header crc mismatch'; state.mode = BAD; break; } //=== INITBITS(); hold = 0; bits = 0; //===// } if (state.head) { state.head.hcrc = ((state.flags >> 9) & 1); state.head.done = true; } strm.adler = state.check = 0 /*crc32(0L, Z_NULL, 0)*/; state.mode = TYPE; break; case DICTID: //=== NEEDBITS(32); */ while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// strm.adler = state.check = ZSWAP32(hold); //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = DICT; /* falls through */ case DICT: if (state.havedict === 0) { //--- RESTORE() --- strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; //--- return Z_NEED_DICT; } strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; state.mode = TYPE; /* falls through */ case TYPE: if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } /* falls through */ case TYPEDO: if (state.last) { //--- BYTEBITS() ---// hold >>>= bits & 7; bits -= bits & 7; //---// state.mode = CHECK; break; } //=== NEEDBITS(3); */ while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.last = (hold & 0x01)/*BITS(1)*/; //--- DROPBITS(1) ---// hold >>>= 1; bits -= 1; //---// switch ((hold & 0x03)/*BITS(2)*/) { case 0: /* stored block */ //Tracev((stderr, "inflate: stored block%s\n", // state.last ? " (last)" : "")); state.mode = STORED; break; case 1: /* fixed block */ fixedtables(state); //Tracev((stderr, "inflate: fixed codes block%s\n", // state.last ? " (last)" : "")); state.mode = LEN_; /* decode codes */ if (flush === Z_TREES) { //--- DROPBITS(2) ---// hold >>>= 2; bits -= 2; //---// break inf_leave; } break; case 2: /* dynamic block */ //Tracev((stderr, "inflate: dynamic codes block%s\n", // state.last ? " (last)" : "")); state.mode = TABLE; break; case 3: strm.msg = 'invalid block type'; state.mode = BAD; } //--- DROPBITS(2) ---// hold >>>= 2; bits -= 2; //---// break; case STORED: //--- BYTEBITS() ---// /* go to byte boundary */ hold >>>= bits & 7; bits -= bits & 7; //---// //=== NEEDBITS(32); */ while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { strm.msg = 'invalid stored block lengths'; state.mode = BAD; break; } state.length = hold & 0xffff; //Tracev((stderr, "inflate: stored length %u\n", // state.length)); //=== INITBITS(); hold = 0; bits = 0; //===// state.mode = COPY_; if (flush === Z_TREES) { break inf_leave; } /* falls through */ case COPY_: state.mode = COPY; /* falls through */ case COPY: copy = state.length; if (copy) { if (copy > have) { copy = have; } if (copy > left) { copy = left; } if (copy === 0) { break inf_leave; } //--- zmemcpy(put, next, copy); --- utils.arraySet(output, input, next, copy, put); //---// have -= copy; next += copy; left -= copy; put += copy; state.length -= copy; break; } //Tracev((stderr, "inflate: stored end\n")); state.mode = TYPE; break; case TABLE: //=== NEEDBITS(14); */ while (bits < 14) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; //--- DROPBITS(5) ---// hold >>>= 5; bits -= 5; //---// state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; //--- DROPBITS(5) ---// hold >>>= 5; bits -= 5; //---// state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; //--- DROPBITS(4) ---// hold >>>= 4; bits -= 4; //---// //#ifndef PKZIP_BUG_WORKAROUND if (state.nlen > 286 || state.ndist > 30) { strm.msg = 'too many length or distance symbols'; state.mode = BAD; break; } //#endif //Tracev((stderr, "inflate: table sizes ok\n")); state.have = 0; state.mode = LENLENS; /* falls through */ case LENLENS: while (state.have < state.ncode) { //=== NEEDBITS(3); while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); //--- DROPBITS(3) ---// hold >>>= 3; bits -= 3; //---// } while (state.have < 19) { state.lens[order[state.have++]] = 0; } // We have separate tables & no pointers. 2 commented lines below not needed. //state.next = state.codes; //state.lencode = state.next; // Switch to use dynamic table state.lencode = state.lendyn; state.lenbits = 7; opts = {bits: state.lenbits}; ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); state.lenbits = opts.bits; if (ret) { strm.msg = 'invalid code lengths set'; state.mode = BAD; break; } //Tracev((stderr, "inflate: code lengths ok\n")); state.have = 0; state.mode = CODELENS; /* falls through */ case CODELENS: while (state.have < state.nlen + state.ndist) { for (;;) { here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ here_bits = here >>> 24; here_op = (here >>> 16) & 0xff; here_val = here & 0xffff; if ((here_bits) <= bits) { break; } //--- PULLBYTE() ---// if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; //---// } if (here_val < 16) { //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// state.lens[state.have++] = here_val; } else { if (here_val === 16) { //=== NEEDBITS(here.bits + 2); n = here_bits + 2; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// if (state.have === 0) { strm.msg = 'invalid bit length repeat'; state.mode = BAD; break; } len = state.lens[state.have - 1]; copy = 3 + (hold & 0x03);//BITS(2); //--- DROPBITS(2) ---// hold >>>= 2; bits -= 2; //---// } else if (here_val === 17) { //=== NEEDBITS(here.bits + 3); n = here_bits + 3; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// len = 0; copy = 3 + (hold & 0x07);//BITS(3); //--- DROPBITS(3) ---// hold >>>= 3; bits -= 3; //---// } else { //=== NEEDBITS(here.bits + 7); n = here_bits + 7; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// len = 0; copy = 11 + (hold & 0x7f);//BITS(7); //--- DROPBITS(7) ---// hold >>>= 7; bits -= 7; //---// } if (state.have + copy > state.nlen + state.ndist) { strm.msg = 'invalid bit length repeat'; state.mode = BAD; break; } while (copy--) { state.lens[state.have++] = len; } } } /* handle error breaks in while */ if (state.mode === BAD) { break; } /* check for end-of-block code (better have one) */ if (state.lens[256] === 0) { strm.msg = 'invalid code -- missing end-of-block'; state.mode = BAD; break; } /* build code tables -- note: do not change the lenbits or distbits values here (9 and 6) without reading the comments in inftrees.h concerning the ENOUGH constants, which depend on those values */ state.lenbits = 9; opts = {bits: state.lenbits}; ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); // We have separate tables & no pointers. 2 commented lines below not needed. // state.next_index = opts.table_index; state.lenbits = opts.bits; // state.lencode = state.next; if (ret) { strm.msg = 'invalid literal/lengths set'; state.mode = BAD; break; } state.distbits = 6; //state.distcode.copy(state.codes); // Switch to use dynamic table state.distcode = state.distdyn; opts = {bits: state.distbits}; ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); // We have separate tables & no pointers. 2 commented lines below not needed. // state.next_index = opts.table_index; state.distbits = opts.bits; // state.distcode = state.next; if (ret) { strm.msg = 'invalid distances set'; state.mode = BAD; break; } //Tracev((stderr, 'inflate: codes ok\n')); state.mode = LEN_; if (flush === Z_TREES) { break inf_leave; } /* falls through */ case LEN_: state.mode = LEN; /* falls through */ case LEN: if (have >= 6 && left >= 258) { //--- RESTORE() --- strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; //--- inflate_fast(strm, _out); //--- LOAD() --- put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; //--- if (state.mode === TYPE) { state.back = -1; } break; } state.back = 0; for (;;) { here = state.lencode[hold & ((1 << state.lenbits) -1)]; /*BITS(state.lenbits)*/ here_bits = here >>> 24; here_op = (here >>> 16) & 0xff; here_val = here & 0xffff; if (here_bits <= bits) { break; } //--- PULLBYTE() ---// if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; //---// } if (here_op && (here_op & 0xf0) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (;;) { here = state.lencode[last_val + ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)]; here_bits = here >>> 24; here_op = (here >>> 16) & 0xff; here_val = here & 0xffff; if ((last_bits + here_bits) <= bits) { break; } //--- PULLBYTE() ---// if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; //---// } //--- DROPBITS(last.bits) ---// hold >>>= last_bits; bits -= last_bits; //---// state.back += last_bits; } //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// state.back += here_bits; state.length = here_val; if (here_op === 0) { //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? // "inflate: literal '%c'\n" : // "inflate: literal 0x%02x\n", here.val)); state.mode = LIT; break; } if (here_op & 32) { //Tracevv((stderr, "inflate: end of block\n")); state.back = -1; state.mode = TYPE; break; } if (here_op & 64) { strm.msg = 'invalid literal/length code'; state.mode = BAD; break; } state.extra = here_op & 15; state.mode = LENEXT; /* falls through */ case LENEXT: if (state.extra) { //=== NEEDBITS(state.extra); n = state.extra; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.length += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/; //--- DROPBITS(state.extra) ---// hold >>>= state.extra; bits -= state.extra; //---// state.back += state.extra; } //Tracevv((stderr, "inflate: length %u\n", state.length)); state.was = state.length; state.mode = DIST; /* falls through */ case DIST: for (;;) { here = state.distcode[hold & ((1 << state.distbits) -1)];/*BITS(state.distbits)*/ here_bits = here >>> 24; here_op = (here >>> 16) & 0xff; here_val = here & 0xffff; if ((here_bits) <= bits) { break; } //--- PULLBYTE() ---// if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; //---// } if ((here_op & 0xf0) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (;;) { here = state.distcode[last_val + ((hold & ((1 << (last_bits + last_op)) -1))/*BITS(last.bits + last.op)*/ >> last_bits)]; here_bits = here >>> 24; here_op = (here >>> 16) & 0xff; here_val = here & 0xffff; if ((last_bits + here_bits) <= bits) { break; } //--- PULLBYTE() ---// if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; //---// } //--- DROPBITS(last.bits) ---// hold >>>= last_bits; bits -= last_bits; //---// state.back += last_bits; } //--- DROPBITS(here.bits) ---// hold >>>= here_bits; bits -= here_bits; //---// state.back += here_bits; if (here_op & 64) { strm.msg = 'invalid distance code'; state.mode = BAD; break; } state.offset = here_val; state.extra = (here_op) & 15; state.mode = DISTEXT; /* falls through */ case DISTEXT: if (state.extra) { //=== NEEDBITS(state.extra); n = state.extra; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// state.offset += hold & ((1 << state.extra) -1)/*BITS(state.extra)*/; //--- DROPBITS(state.extra) ---// hold >>>= state.extra; bits -= state.extra; //---// state.back += state.extra; } //#ifdef INFLATE_STRICT if (state.offset > state.dmax) { strm.msg = 'invalid distance too far back'; state.mode = BAD; break; } //#endif //Tracevv((stderr, "inflate: distance %u\n", state.offset)); state.mode = MATCH; /* falls through */ case MATCH: if (left === 0) { break inf_leave; } copy = _out - left; if (state.offset > copy) { /* copy from window */ copy = state.offset - copy; if (copy > state.whave) { if (state.sane) { strm.msg = 'invalid distance too far back'; state.mode = BAD; break; } // (!) This block is disabled in zlib defailts, // don't enable it for binary compatibility //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR // Trace((stderr, "inflate.c too far\n")); // copy -= state.whave; // if (copy > state.length) { copy = state.length; } // if (copy > left) { copy = left; } // left -= copy; // state.length -= copy; // do { // output[put++] = 0; // } while (--copy); // if (state.length === 0) { state.mode = LEN; } // break; //#endif } if (copy > state.wnext) { copy -= state.wnext; from = state.wsize - copy; } else { from = state.wnext - copy; } if (copy > state.length) { copy = state.length; } from_source = state.window; } else { /* copy from output */ from_source = output; from = put - state.offset; copy = state.length; } if (copy > left) { copy = left; } left -= copy; state.length -= copy; do { output[put++] = from_source[from++]; } while (--copy); if (state.length === 0) { state.mode = LEN; } break; case LIT: if (left === 0) { break inf_leave; } output[put++] = state.length; left--; state.mode = LEN; break; case CHECK: if (state.wrap) { //=== NEEDBITS(32); while (bits < 32) { if (have === 0) { break inf_leave; } have--; // Use '|' insdead of '+' to make sure that result is signed hold |= input[next++] << bits; bits += 8; } //===// _out -= left; strm.total_out += _out; state.total += _out; if (_out) { strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/ (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out)); } _out = left; // NB: crc32 stored as signed 32-bit int, ZSWAP32 returns signed too if ((state.flags ? hold : ZSWAP32(hold)) !== state.check) { strm.msg = 'incorrect data check'; state.mode = BAD; break; } //=== INITBITS(); hold = 0; bits = 0; //===// //Tracev((stderr, "inflate: check matches trailer\n")); } state.mode = LENGTH; /* falls through */ case LENGTH: if (state.wrap && state.flags) { //=== NEEDBITS(32); while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } //===// if (hold !== (state.total & 0xffffffff)) { strm.msg = 'incorrect length check'; state.mode = BAD; break; } //=== INITBITS(); hold = 0; bits = 0; //===// //Tracev((stderr, "inflate: length matches trailer\n")); } state.mode = DONE; /* falls through */ case DONE: ret = Z_STREAM_END; break inf_leave; case BAD: ret = Z_DATA_ERROR; break inf_leave; case MEM: return Z_MEM_ERROR; case SYNC: /* falls through */ default: return Z_STREAM_ERROR; } } // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" /* Return from inflate(), updating the total counts and the check value. If there was no progress during the inflate() call, return a buffer error. Call updatewindow() to create and/or update the window state. Note: a memory error from inflate() is non-recoverable. */ //--- RESTORE() --- strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; //--- if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH))) { if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { state.mode = MEM; return Z_MEM_ERROR; } } _in -= strm.avail_in; _out -= strm.avail_out; strm.total_in += _in; strm.total_out += _out; state.total += _out; if (state.wrap && _out) { strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out)); } strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) { ret = Z_BUF_ERROR; } return ret; } function inflateEnd(strm) { if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { return Z_STREAM_ERROR; } var state = strm.state; if (state.window) { state.window = null; } strm.state = null; return Z_OK; } function inflateGetHeader(strm, head) { var state; /* check state */ if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } /* save header structure */ state.head = head; head.done = false; return Z_OK; } exports.inflateReset = inflateReset; exports.inflateReset2 = inflateReset2; exports.inflateResetKeep = inflateResetKeep; exports.inflateInit = inflateInit; exports.inflateInit2 = inflateInit2; exports.inflate = inflate; exports.inflateEnd = inflateEnd; exports.inflateGetHeader = inflateGetHeader; exports.inflateInfo = 'pako inflate (from Nodeca project)'; /* Not implemented exports.inflateCopy = inflateCopy; exports.inflateGetDictionary = inflateGetDictionary; exports.inflateMark = inflateMark; exports.inflatePrime = inflatePrime; exports.inflateSetDictionary = inflateSetDictionary; exports.inflateSync = inflateSync; exports.inflateSyncPoint = inflateSyncPoint; exports.inflateUndermine = inflateUndermine; */ },{"../utils/common":1,"./adler32":2,"./crc32":3,"./inffast":4,"./inftrees":6}],6:[function(require,module,exports){ 'use strict'; var utils = require('../utils/common'); var MAXBITS = 15; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; //var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); var CODES = 0; var LENS = 1; var DISTS = 2; var lbase = [ /* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ]; var lext = [ /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 ]; var dbase = [ /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 ]; var dext = [ /* Distance codes 0..29 extra */ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64 ]; module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { var bits = opts.bits; //here = opts.here; /* table entry for duplication */ var len = 0; /* a code's length in bits */ var sym = 0; /* index of code symbols */ var min = 0, max = 0; /* minimum and maximum code lengths */ var root = 0; /* number of index bits for root table */ var curr = 0; /* number of index bits for current table */ var drop = 0; /* code bits to drop for sub-table */ var left = 0; /* number of prefix codes available */ var used = 0; /* code entries in table used */ var huff = 0; /* Huffman code */ var incr; /* for incrementing code, index */ var fill; /* index for replicating entries */ var low; /* low bits for current root entry */ var mask; /* mask for low root bits */ var next; /* next available space in table */ var base = null; /* base value table to use */ var base_index = 0; // var shoextra; /* extra bits table to use */ var end; /* use base and extra for symbol > end */ var count = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* number of codes of each length */ var offs = new utils.Buf16(MAXBITS+1); //[MAXBITS+1]; /* offsets in table for each length */ var extra = null; var extra_index = 0; var here_bits, here_op, here_val; /* Process a set of code lengths to create a canonical Huffman code. The code lengths are lens[0..codes-1]. Each length corresponds to the symbols 0..codes-1. The Huffman code is generated by first sorting the symbols by length from short to long, and retaining the symbol order for codes with equal lengths. Then the code starts with all zero bits for the first code of the shortest length, and the codes are integer increments for the same length, and zeros are appended as the length increases. For the deflate format, these bits are stored backwards from their more natural integer increment ordering, and so when the decoding tables are built in the large loop below, the integer codes are incremented backwards. This routine assumes, but does not check, that all of the entries in lens[] are in the range 0..MAXBITS. The caller must assure this. 1..MAXBITS is interpreted as that code length. zero means that that symbol does not occur in this code. The codes are sorted by computing a count of codes for each length, creating from that a table of starting indices for each length in the sorted table, and then entering the symbols in order in the sorted table. The sorted table is work[], with that space being provided by the caller. The length counts are used for other purposes as well, i.e. finding the minimum and maximum length codes, determining if there are any codes at all, checking for a valid set of lengths, and looking ahead at length counts to determine sub-table sizes when building the decoding tables. */ /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ for (len = 0; len <= MAXBITS; len++) { count[len] = 0; } for (sym = 0; sym < codes; sym++) { count[lens[lens_index + sym]]++; } /* bound code lengths, force root to be within code lengths */ root = bits; for (max = MAXBITS; max >= 1; max--) { if (count[max] !== 0) { break; } } if (root > max) { root = max; } if (max === 0) { /* no symbols to code at all */ //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ //table.bits[opts.table_index] = 1; //here.bits = (var char)1; //table.val[opts.table_index++] = 0; //here.val = (var short)0; table[table_index++] = (1 << 24) | (64 << 16) | 0; //table.op[opts.table_index] = 64; //table.bits[opts.table_index] = 1; //table.val[opts.table_index++] = 0; table[table_index++] = (1 << 24) | (64 << 16) | 0; opts.bits = 1; return 0; /* no symbols, but wait for decoding to report error */ } for (min = 1; min < max; min++) { if (count[min] !== 0) { break; } } if (root < min) { root = min; } /* check for an over-subscribed or incomplete set of lengths */ left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) { return -1; } /* over-subscribed */ } if (left > 0 && (type === CODES || max !== 1)) { return -1; /* incomplete set */ } /* generate offsets into symbol table for each length for sorting */ offs[1] = 0; for (len = 1; len < MAXBITS; len++) { offs[len + 1] = offs[len] + count[len]; } /* sort symbols by length, by symbol order within each length */ for (sym = 0; sym < codes; sym++) { if (lens[lens_index + sym] !== 0) { work[offs[lens[lens_index + sym]]++] = sym; } } /* Create and fill in decoding tables. In this loop, the table being filled is at next and has curr index bits. The code being used is huff with length len. That code is converted to an index by dropping drop bits off of the bottom. For codes where len is less than drop + curr, those top drop + curr - len bits are incremented through all values to fill the table with replicated entries. root is the number of index bits for the root table. When len exceeds root, sub-tables are created pointed to by the root entry with an index of the low root bits of huff. This is saved in low to check for when a new sub-table should be started. drop is zero when the root table is being filled, and drop is root when sub-tables are being filled. When a new sub-table is needed, it is necessary to look ahead in the code lengths to determine what size sub-table is needed. The length counts are used for this, and so count[] is decremented as codes are entered in the tables. used keeps track of how many table entries have been allocated from the provided *table space. It is checked for LENS and DIST tables against the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in the initial root table size constants. See the comments in inftrees.h for more information. sym increments through all symbols, and the loop terminates when all codes of length max, i.e. all codes, have been processed. This routine permits incomplete codes, so another loop after this one fills in the rest of the decoding tables with invalid code markers. */ /* set up for code type */ // poor man optimization - use if-else instead of switch, // to avoid deopts in old v8 if (type === CODES) { base = extra = work; /* dummy value--not used */ end = 19; } else if (type === LENS) { base = lbase; base_index -= 257; extra = lext; extra_index -= 257; end = 256; } else { /* DISTS */ base = dbase; extra = dext; end = -1; } /* initialize opts for loop */ huff = 0; /* starting code */ sym = 0; /* starting code symbol */ len = min; /* starting code length */ next = table_index; /* current table to fill in */ curr = root; /* current table index bits */ drop = 0; /* current bits to drop from code for index */ low = -1; /* trigger new sub-table when len > root */ used = 1 << root; /* use root table entries */ mask = used - 1; /* mask for comparing low */ /* check available table space */ if ((type === LENS && used > ENOUGH_LENS) || (type === DISTS && used > ENOUGH_DISTS)) { return 1; } var i=0; /* process all codes and make table entries */ for (;;) { i++; /* create table entry */ here_bits = len - drop; if (work[sym] < end) { here_op = 0; here_val = work[sym]; } else if (work[sym] > end) { here_op = extra[extra_index + work[sym]]; here_val = base[base_index + work[sym]]; } else { here_op = 32 + 64; /* end of block */ here_val = 0; } /* replicate for those indices with low len bits equal to huff */ incr = 1 << (len - drop); fill = 1 << curr; min = fill; /* save offset to next table */ do { fill -= incr; table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; } while (fill !== 0); /* backwards increment the len-bit code huff */ incr = 1 << (len - 1); while (huff & incr) { incr >>= 1; } if (incr !== 0) { huff &= incr - 1; huff += incr; } else { huff = 0; } /* go to next symbol, update count, len */ sym++; if (--count[len] === 0) { if (len === max) { break; } len = lens[lens_index + work[sym]]; } /* create new sub-table if needed */ if (len > root && (huff & mask) !== low) { /* if first time, transition to sub-tables */ if (drop === 0) { drop = root; } /* increment past last table */ next += min; /* here min is 1 << curr */ /* determine length of next table */ curr = len - drop; left = 1 << curr; while (curr + drop < max) { left -= count[curr + drop]; if (left <= 0) { break; } curr++; left <<= 1; } /* check for enough space */ used += 1 << curr; if ((type === LENS && used > ENOUGH_LENS) || (type === DISTS && used > ENOUGH_DISTS)) { return 1; } /* point entry in root table to sub-table */ low = huff & mask; /*table.op[low] = curr; table.bits[low] = root; table.val[low] = next - opts.table_index;*/ table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; } } /* fill in remaining table entry if code is incomplete (guaranteed to have at most one remaining entry, since if the code is incomplete, the maximum code length that was allowed to get this far is one bit) */ if (huff !== 0) { //table.op[next + huff] = 64; /* invalid code marker */ //table.bits[next + huff] = len - drop; //table.val[next + huff] = 0; table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; } /* set return parameters */ //opts.table_index += used; opts.bits = root; return 0; }; },{"../utils/common":1}],7:[function(require,module,exports){ 'use strict'; function ZStream() { /* next input byte */ this.input = null; // JS specific, because we have no pointers this.next_in = 0; /* number of bytes available at input */ this.avail_in = 0; /* total number of input bytes read so far */ this.total_in = 0; /* next output byte should be put there */ this.output = null; // JS specific, because we have no pointers this.next_out = 0; /* remaining free space at output */ this.avail_out = 0; /* total number of bytes output so far */ this.total_out = 0; /* last error message, NULL if no error */ this.msg = ''/*Z_NULL*/; /* not visible by applications */ this.state = null; /* best guess about the data type: binary or text */ this.data_type = 2/*Z_UNKNOWN*/; /* adler32 value of the uncompressed data */ this.adler = 0; } module.exports = ZStream; },{}],"/partial_inflator.js":[function(require,module,exports){ var zlib = require('./lib/zlib/inflate.js'); var ZStream = require('./lib/zlib/zstream.js'); var Inflate = function () { this.strm = new ZStream(); this.chunkSize = 1024 * 10 * 10; this.strm.output = new Uint8Array(this.chunkSize); this.windowBits = 5; zlib.inflateInit(this.strm, this.windowBits); }; Inflate.prototype = { inflate: function (data, flush) { this.strm.input = data; this.strm.avail_in = this.strm.input.length; this.strm.next_in = 0; this.strm.next_out = 0; this.strm.avail_out = this.chunkSize; zlib.inflate(this.strm, flush); return new Uint8Array(this.strm.output.buffer, 0, this.strm.next_out); }, reset: function () { zlib.inflateReset(this.strm); } }; module.exports = {Inflate: Inflate}; },{"./lib/zlib/inflate.js":5,"./lib/zlib/zstream.js":7}]},{},[])("/partial_inflator.js") }); ================================================ FILE: app/static/novnc/input.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 Samuel Mannehed for Cendio AB * Licensed under MPL 2.0 or any later version (see LICENSE.txt) */ /*jslint browser: true, white: false */ /*global window, Util */ var Keyboard, Mouse; (function () { "use strict"; // // Keyboard event handler // Keyboard = function (defaults) { this._keyDownList = []; // List of depressed keys // (even if they are happy) Util.set_defaults(this, defaults, { 'target': document, 'focused': true }); // create the keyboard handler this._handler = new KeyEventDecoder(kbdUtil.ModifierSync(), VerifyCharModifier( /* jshint newcap: false */ TrackKeyState( EscapeModifiers(this._handleRfbEvent.bind(this)) ) ) ); /* jshint newcap: true */ // keep these here so we can refer to them later this._eventHandlers = { 'keyup': this._handleKeyUp.bind(this), 'keydown': this._handleKeyDown.bind(this), 'keypress': this._handleKeyPress.bind(this), 'blur': this._allKeysUp.bind(this) }; }; Keyboard.prototype = { // private methods _handleRfbEvent: function (e) { if (this._onKeyPress) { Util.Debug("onKeyPress " + (e.type == 'keydown' ? "down" : "up") + ", keysym: " + e.keysym.keysym + "(" + e.keysym.keyname + ")"); this._onKeyPress(e.keysym.keysym, e.type == 'keydown'); } }, _handleKeyDown: function (e) { if (!this._focused) { return true; } if (this._handler.keydown(e)) { // Suppress bubbling/default actions Util.stopEvent(e); return false; } else { // Allow the event to bubble and become a keyPress event which // will have the character code translated return true; } }, _handleKeyPress: function (e) { if (!this._focused) { return true; } if (this._handler.keypress(e)) { // Suppress bubbling/default actions Util.stopEvent(e); return false; } else { // Allow the event to bubble and become a keyPress event which // will have the character code translated return true; } }, _handleKeyUp: function (e) { if (!this._focused) { return true; } if (this._handler.keyup(e)) { // Suppress bubbling/default actions Util.stopEvent(e); return false; } else { // Allow the event to bubble and become a keyPress event which // will have the character code translated return true; } }, _allKeysUp: function () { Util.Debug(">> Keyboard.allKeysUp"); this._handler.releaseAll(); Util.Debug("<< Keyboard.allKeysUp"); }, // Public methods grab: function () { //Util.Debug(">> Keyboard.grab"); var c = this._target; Util.addEvent(c, 'keydown', this._eventHandlers.keydown); Util.addEvent(c, 'keyup', this._eventHandlers.keyup); Util.addEvent(c, 'keypress', this._eventHandlers.keypress); // Release (key up) if window loses focus Util.addEvent(window, 'blur', this._eventHandlers.blur); //Util.Debug("<< Keyboard.grab"); }, ungrab: function () { //Util.Debug(">> Keyboard.ungrab"); var c = this._target; Util.removeEvent(c, 'keydown', this._eventHandlers.keydown); Util.removeEvent(c, 'keyup', this._eventHandlers.keyup); Util.removeEvent(c, 'keypress', this._eventHandlers.keypress); Util.removeEvent(window, 'blur', this._eventHandlers.blur); // Release (key up) all keys that are in a down state this._allKeysUp(); //Util.Debug(">> Keyboard.ungrab"); }, sync: function (e) { this._handler.syncModifiers(e); } }; Util.make_properties(Keyboard, [ ['target', 'wo', 'dom'], // DOM element that captures keyboard input ['focused', 'rw', 'bool'], // Capture and send key events ['onKeyPress', 'rw', 'func'] // Handler for key press/release ]); // // Mouse event handler // Mouse = function (defaults) { this._mouseCaptured = false; this._doubleClickTimer = null; this._lastTouchPos = null; // Configuration attributes Util.set_defaults(this, defaults, { 'target': document, 'focused': true, 'scale': 1.0, 'touchButton': 1 }); this._eventHandlers = { 'mousedown': this._handleMouseDown.bind(this), 'mouseup': this._handleMouseUp.bind(this), 'mousemove': this._handleMouseMove.bind(this), 'mousewheel': this._handleMouseWheel.bind(this), 'mousedisable': this._handleMouseDisable.bind(this) }; }; Mouse.prototype = { // private methods _captureMouse: function () { // capturing the mouse ensures we get the mouseup event if (this._target.setCapture) { this._target.setCapture(); } // some browsers give us mouseup events regardless, // so if we never captured the mouse, we can disregard the event this._mouseCaptured = true; }, _releaseMouse: function () { if (this._target.releaseCapture) { this._target.releaseCapture(); } this._mouseCaptured = false; }, _resetDoubleClickTimer: function () { this._doubleClickTimer = null; }, _handleMouseButton: function (e, down) { if (!this._focused) { return true; } if (this._notify) { this._notify(e); } var evt = (e ? e : window.event); var pos = Util.getEventPosition(e, this._target, this._scale); var bmask; if (e.touches || e.changedTouches) { // Touch device // When two touches occur within 500 ms of each other and are // closer than 20 pixels together a double click is triggered. if (down == 1) { if (this._doubleClickTimer === null) { this._lastTouchPos = pos; } else { clearTimeout(this._doubleClickTimer); // When the distance between the two touches is small enough // force the position of the latter touch to the position of // the first. var xs = this._lastTouchPos.x - pos.x; var ys = this._lastTouchPos.y - pos.y; var d = Math.sqrt((xs * xs) + (ys * ys)); // The goal is to trigger on a certain physical width, the // devicePixelRatio brings us a bit closer but is not optimal. if (d < 20 * window.devicePixelRatio) { pos = this._lastTouchPos; } } this._doubleClickTimer = setTimeout(this._resetDoubleClickTimer.bind(this), 500); } bmask = this._touchButton; // If bmask is set } else if (evt.which) { /* everything except IE */ bmask = 1 << evt.button; } else { /* IE including 9 */ bmask = (evt.button & 0x1) + // Left (evt.button & 0x2) * 2 + // Right (evt.button & 0x4) / 2; // Middle } if (this._onMouseButton) { Util.Debug("onMouseButton " + (down ? "down" : "up") + ", x: " + pos.x + ", y: " + pos.y + ", bmask: " + bmask); this._onMouseButton(pos.x, pos.y, down, bmask); } Util.stopEvent(e); return false; }, _handleMouseDown: function (e) { this._captureMouse(); this._handleMouseButton(e, 1); }, _handleMouseUp: function (e) { if (!this._mouseCaptured) { return; } this._handleMouseButton(e, 0); this._releaseMouse(); }, _handleMouseWheel: function (e) { if (!this._focused) { return true; } if (this._notify) { this._notify(e); } var evt = (e ? e : window.event); var pos = Util.getEventPosition(e, this._target, this._scale); var wheelData = evt.detail ? evt.detail * -1 : evt.wheelDelta / 40; var bmask; if (wheelData > 0) { bmask = 1 << 3; } else { bmask = 1 << 4; } if (this._onMouseButton) { this._onMouseButton(pos.x, pos.y, 1, bmask); this._onMouseButton(pos.x, pos.y, 0, bmask); } Util.stopEvent(e); return false; }, _handleMouseMove: function (e) { if (! this._focused) { return true; } if (this._notify) { this._notify(e); } var evt = (e ? e : window.event); var pos = Util.getEventPosition(e, this._target, this._scale); if (this._onMouseMove) { this._onMouseMove(pos.x, pos.y); } Util.stopEvent(e); return false; }, _handleMouseDisable: function (e) { if (!this._focused) { return true; } var evt = (e ? e : window.event); var pos = Util.getEventPosition(e, this._target, this._scale); /* Stop propagation if inside canvas area */ if ((pos.realx >= 0) && (pos.realy >= 0) && (pos.realx < this._target.offsetWidth) && (pos.realy < this._target.offsetHeight)) { //Util.Debug("mouse event disabled"); Util.stopEvent(e); return false; } return true; }, // Public methods grab: function () { var c = this._target; if ('ontouchstart' in document.documentElement) { Util.addEvent(c, 'touchstart', this._eventHandlers.mousedown); Util.addEvent(window, 'touchend', this._eventHandlers.mouseup); Util.addEvent(c, 'touchend', this._eventHandlers.mouseup); Util.addEvent(c, 'touchmove', this._eventHandlers.mousemove); } else { Util.addEvent(c, 'mousedown', this._eventHandlers.mousedown); Util.addEvent(window, 'mouseup', this._eventHandlers.mouseup); Util.addEvent(c, 'mouseup', this._eventHandlers.mouseup); Util.addEvent(c, 'mousemove', this._eventHandlers.mousemove); Util.addEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel', this._eventHandlers.mousewheel); } /* Work around right and middle click browser behaviors */ Util.addEvent(document, 'click', this._eventHandlers.mousedisable); Util.addEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable); }, ungrab: function () { var c = this._target; if ('ontouchstart' in document.documentElement) { Util.removeEvent(c, 'touchstart', this._eventHandlers.mousedown); Util.removeEvent(window, 'touchend', this._eventHandlers.mouseup); Util.removeEvent(c, 'touchend', this._eventHandlers.mouseup); Util.removeEvent(c, 'touchmove', this._eventHandlers.mousemove); } else { Util.removeEvent(c, 'mousedown', this._eventHandlers.mousedown); Util.removeEvent(window, 'mouseup', this._eventHandlers.mouseup); Util.removeEvent(c, 'mouseup', this._eventHandlers.mouseup); Util.removeEvent(c, 'mousemove', this._eventHandlers.mousemove); Util.removeEvent(c, (Util.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel', this._eventHandlers.mousewheel); } /* Work around right and middle click browser behaviors */ Util.removeEvent(document, 'click', this._eventHandlers.mousedisable); Util.removeEvent(document.body, 'contextmenu', this._eventHandlers.mousedisable); } }; Util.make_properties(Mouse, [ ['target', 'ro', 'dom'], // DOM element that captures mouse input ['notify', 'ro', 'func'], // Function to call to notify whenever a mouse event is received ['focused', 'rw', 'bool'], // Capture and send mouse clicks/movement ['scale', 'rw', 'float'], // Viewport scale factor 0.0 - 1.0 ['onMouseButton', 'rw', 'func'], // Handler for mouse button click/release ['onMouseMove', 'rw', 'func'], // Handler for mouse movement ['touchButton', 'rw', 'int'] // Button mask (1, 2, 4) for touch devices (0 means ignore clicks) ]); })(); ================================================ FILE: app/static/novnc/jsunzip.js ================================================ /* * JSUnzip * * Copyright (c) 2011 by Erik Moller * All Rights Reserved * * This software is provided 'as-is', without any express * or implied warranty. In no event will the authors be * held liable for any damages arising from the use of * this software. * * Permission is granted to anyone to use this software * for any purpose, including commercial applications, * and to alter it and redistribute it freely, subject to * the following restrictions: * * 1. The origin of this software must not be * misrepresented; you must not claim that you * wrote the original software. If you use this * software in a product, an acknowledgment in * the product documentation would be appreciated * but is not required. * * 2. Altered source versions must be plainly marked * as such, and must not be misrepresented as * being the original software. * * 3. This notice may not be removed or altered from * any source distribution. */ var tinf; function JSUnzip() { this.getInt = function(offset, size) { switch (size) { case 4: return (this.data.charCodeAt(offset + 3) & 0xff) << 24 | (this.data.charCodeAt(offset + 2) & 0xff) << 16 | (this.data.charCodeAt(offset + 1) & 0xff) << 8 | (this.data.charCodeAt(offset + 0) & 0xff); break; case 2: return (this.data.charCodeAt(offset + 1) & 0xff) << 8 | (this.data.charCodeAt(offset + 0) & 0xff); break; default: return this.data.charCodeAt(offset) & 0xff; break; } }; this.getDOSDate = function(dosdate, dostime) { var day = dosdate & 0x1f; var month = ((dosdate >> 5) & 0xf) - 1; var year = 1980 + ((dosdate >> 9) & 0x7f) var second = (dostime & 0x1f) * 2; var minute = (dostime >> 5) & 0x3f; hour = (dostime >> 11) & 0x1f; return new Date(year, month, day, hour, minute, second); } this.open = function(data) { this.data = data; this.files = []; if (this.data.length < 22) return { 'status' : false, 'error' : 'Invalid data' }; var endOfCentralDirectory = this.data.length - 22; while (endOfCentralDirectory >= 0 && this.getInt(endOfCentralDirectory, 4) != 0x06054b50) --endOfCentralDirectory; if (endOfCentralDirectory < 0) return { 'status' : false, 'error' : 'Invalid data' }; if (this.getInt(endOfCentralDirectory + 4, 2) != 0 || this.getInt(endOfCentralDirectory + 6, 2) != 0) return { 'status' : false, 'error' : 'No multidisk support' }; var entriesInThisDisk = this.getInt(endOfCentralDirectory + 8, 2); var centralDirectoryOffset = this.getInt(endOfCentralDirectory + 16, 4); var globalCommentLength = this.getInt(endOfCentralDirectory + 20, 2); this.comment = this.data.slice(endOfCentralDirectory + 22, endOfCentralDirectory + 22 + globalCommentLength); var fileOffset = centralDirectoryOffset; for (var i = 0; i < entriesInThisDisk; ++i) { if (this.getInt(fileOffset + 0, 4) != 0x02014b50) return { 'status' : false, 'error' : 'Invalid data' }; if (this.getInt(fileOffset + 6, 2) > 20) return { 'status' : false, 'error' : 'Unsupported version' }; if (this.getInt(fileOffset + 8, 2) & 1) return { 'status' : false, 'error' : 'Encryption not implemented' }; var compressionMethod = this.getInt(fileOffset + 10, 2); if (compressionMethod != 0 && compressionMethod != 8) return { 'status' : false, 'error' : 'Unsupported compression method' }; var lastModFileTime = this.getInt(fileOffset + 12, 2); var lastModFileDate = this.getInt(fileOffset + 14, 2); var lastModifiedDate = this.getDOSDate(lastModFileDate, lastModFileTime); var crc = this.getInt(fileOffset + 16, 4); // TODO: crc var compressedSize = this.getInt(fileOffset + 20, 4); var uncompressedSize = this.getInt(fileOffset + 24, 4); var fileNameLength = this.getInt(fileOffset + 28, 2); var extraFieldLength = this.getInt(fileOffset + 30, 2); var fileCommentLength = this.getInt(fileOffset + 32, 2); var relativeOffsetOfLocalHeader = this.getInt(fileOffset + 42, 4); var fileName = this.data.slice(fileOffset + 46, fileOffset + 46 + fileNameLength); var fileComment = this.data.slice(fileOffset + 46 + fileNameLength + extraFieldLength, fileOffset + 46 + fileNameLength + extraFieldLength + fileCommentLength); if (this.getInt(relativeOffsetOfLocalHeader + 0, 4) != 0x04034b50) return { 'status' : false, 'error' : 'Invalid data' }; var localFileNameLength = this.getInt(relativeOffsetOfLocalHeader + 26, 2); var localExtraFieldLength = this.getInt(relativeOffsetOfLocalHeader + 28, 2); var localFileContent = relativeOffsetOfLocalHeader + 30 + localFileNameLength + localExtraFieldLength; this.files[fileName] = { 'fileComment' : fileComment, 'compressionMethod' : compressionMethod, 'compressedSize' : compressedSize, 'uncompressedSize' : uncompressedSize, 'localFileContent' : localFileContent, 'lastModifiedDate' : lastModifiedDate }; fileOffset += 46 + fileNameLength + extraFieldLength + fileCommentLength; } return { 'status' : true } }; this.read = function(fileName) { var fileInfo = this.files[fileName]; if (fileInfo) { if (fileInfo.compressionMethod == 8) { if (!tinf) { tinf = new TINF(); tinf.init(); } var result = tinf.uncompress(this.data, fileInfo.localFileContent); if (result.status == tinf.OK) return { 'status' : true, 'data' : result.data }; else return { 'status' : false, 'error' : result.error }; } else { return { 'status' : true, 'data' : this.data.slice(fileInfo.localFileContent, fileInfo.localFileContent + fileInfo.uncompressedSize) }; } } return { 'status' : false, 'error' : "File '" + fileName + "' doesn't exist in zip" }; }; }; /* * tinflate - tiny inflate * * Copyright (c) 2003 by Joergen Ibsen / Jibz * All Rights Reserved * * http://www.ibsensoftware.com/ * * This software is provided 'as-is', without any express * or implied warranty. In no event will the authors be * held liable for any damages arising from the use of * this software. * * Permission is granted to anyone to use this software * for any purpose, including commercial applications, * and to alter it and redistribute it freely, subject to * the following restrictions: * * 1. The origin of this software must not be * misrepresented; you must not claim that you * wrote the original software. If you use this * software in a product, an acknowledgment in * the product documentation would be appreciated * but is not required. * * 2. Altered source versions must be plainly marked * as such, and must not be misrepresented as * being the original software. * * 3. This notice may not be removed or altered from * any source distribution. */ /* * tinflate javascript port by Erik Moller in May 2011. * emoller@opera.com * * read_bits() patched by mike@imidio.com to allow * reading more then 8 bits (needed in some zlib streams) */ "use strict"; function TINF() { this.OK = 0; this.DATA_ERROR = (-3); this.WINDOW_SIZE = 32768; /* ------------------------------ * * -- internal data structures -- * * ------------------------------ */ this.TREE = function() { this.table = new Array(16); /* table of code length counts */ this.trans = new Array(288); /* code -> symbol translation table */ }; this.DATA = function(that) { this.source = ''; this.sourceIndex = 0; this.tag = 0; this.bitcount = 0; this.dest = []; this.history = []; this.ltree = new that.TREE(); /* dynamic length/symbol tree */ this.dtree = new that.TREE(); /* dynamic distance tree */ }; /* --------------------------------------------------- * * -- uninitialized global data (static structures) -- * * --------------------------------------------------- */ this.sltree = new this.TREE(); /* fixed length/symbol tree */ this.sdtree = new this.TREE(); /* fixed distance tree */ /* extra bits and base tables for length codes */ this.length_bits = new Array(30); this.length_base = new Array(30); /* extra bits and base tables for distance codes */ this.dist_bits = new Array(30); this.dist_base = new Array(30); /* special ordering of code length codes */ this.clcidx = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; /* ----------------------- * * -- utility functions -- * * ----------------------- */ /* build extra bits and base tables */ this.build_bits_base = function(bits, base, delta, first) { var i, sum; /* build bits table */ for (i = 0; i < delta; ++i) bits[i] = 0; for (i = 0; i < 30 - delta; ++i) bits[i + delta] = Math.floor(i / delta); /* build base table */ for (sum = first, i = 0; i < 30; ++i) { base[i] = sum; sum += 1 << bits[i]; } } /* build the fixed huffman trees */ this.build_fixed_trees = function(lt, dt) { var i; /* build fixed length tree */ for (i = 0; i < 7; ++i) lt.table[i] = 0; lt.table[7] = 24; lt.table[8] = 152; lt.table[9] = 112; for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i; for (i = 0; i < 144; ++i) lt.trans[24 + i] = i; for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i; for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i; /* build fixed distance tree */ for (i = 0; i < 5; ++i) dt.table[i] = 0; dt.table[5] = 32; for (i = 0; i < 32; ++i) dt.trans[i] = i; } /* given an array of code lengths, build a tree */ this.build_tree = function(t, lengths, loffset, num) { var offs = new Array(16); var i, sum; /* clear code length count table */ for (i = 0; i < 16; ++i) t.table[i] = 0; /* scan symbol lengths, and sum code length counts */ for (i = 0; i < num; ++i) t.table[lengths[loffset + i]]++; t.table[0] = 0; /* compute offset table for distribution sort */ for (sum = 0, i = 0; i < 16; ++i) { offs[i] = sum; sum += t.table[i]; } /* create code->symbol translation table (symbols sorted by code) */ for (i = 0; i < num; ++i) { if (lengths[loffset + i]) t.trans[offs[lengths[loffset + i]]++] = i; } } /* ---------------------- * * -- decode functions -- * * ---------------------- */ /* get one bit from source stream */ this.getbit = function(d) { var bit; /* check if tag is empty */ if (!d.bitcount--) { /* load next tag */ d.tag = d.source[d.sourceIndex++] & 0xff; d.bitcount = 7; } /* shift bit out of tag */ bit = d.tag & 0x01; d.tag >>= 1; return bit; } /* read a num bit value from a stream and add base */ function read_bits_direct(source, bitcount, tag, idx, num) { var val = 0; while (bitcount < 24) { tag = tag | (source[idx++] & 0xff) << bitcount; bitcount += 8; } val = tag & (0xffff >> (16 - num)); tag >>= num; bitcount -= num; return [bitcount, tag, idx, val]; } this.read_bits = function(d, num, base) { if (!num) return base; var ret = read_bits_direct(d.source, d.bitcount, d.tag, d.sourceIndex, num); d.bitcount = ret[0]; d.tag = ret[1]; d.sourceIndex = ret[2]; return ret[3] + base; } /* given a data stream and a tree, decode a symbol */ this.decode_symbol = function(d, t) { while (d.bitcount < 16) { d.tag = d.tag | (d.source[d.sourceIndex++] & 0xff) << d.bitcount; d.bitcount += 8; } var sum = 0, cur = 0, len = 0; do { cur = 2 * cur + ((d.tag & (1 << len)) >> len); ++len; sum += t.table[len]; cur -= t.table[len]; } while (cur >= 0); d.tag >>= len; d.bitcount -= len; return t.trans[sum + cur]; } /* given a data stream, decode dynamic trees from it */ this.decode_trees = function(d, lt, dt) { var code_tree = new this.TREE(); var lengths = new Array(288+32); var hlit, hdist, hclen; var i, num, length; /* get 5 bits HLIT (257-286) */ hlit = this.read_bits(d, 5, 257); /* get 5 bits HDIST (1-32) */ hdist = this.read_bits(d, 5, 1); /* get 4 bits HCLEN (4-19) */ hclen = this.read_bits(d, 4, 4); for (i = 0; i < 19; ++i) lengths[i] = 0; /* read code lengths for code length alphabet */ for (i = 0; i < hclen; ++i) { /* get 3 bits code length (0-7) */ var clen = this.read_bits(d, 3, 0); lengths[this.clcidx[i]] = clen; } /* build code length tree */ this.build_tree(code_tree, lengths, 0, 19); /* decode code lengths for the dynamic trees */ for (num = 0; num < hlit + hdist; ) { var sym = this.decode_symbol(d, code_tree); switch (sym) { case 16: /* copy previous code length 3-6 times (read 2 bits) */ { var prev = lengths[num - 1]; for (length = this.read_bits(d, 2, 3); length; --length) { lengths[num++] = prev; } } break; case 17: /* repeat code length 0 for 3-10 times (read 3 bits) */ for (length = this.read_bits(d, 3, 3); length; --length) { lengths[num++] = 0; } break; case 18: /* repeat code length 0 for 11-138 times (read 7 bits) */ for (length = this.read_bits(d, 7, 11); length; --length) { lengths[num++] = 0; } break; default: /* values 0-15 represent the actual code lengths */ lengths[num++] = sym; break; } } /* build dynamic trees */ this.build_tree(lt, lengths, 0, hlit); this.build_tree(dt, lengths, hlit, hdist); } /* ----------------------------- * * -- block inflate functions -- * * ----------------------------- */ /* given a stream and two trees, inflate a block of data */ this.inflate_block_data = function(d, lt, dt) { // js optimization. var ddest = d.dest; var ddestlength = ddest.length; while (1) { var sym = this.decode_symbol(d, lt); /* check for end of block */ if (sym == 256) { return this.OK; } if (sym < 256) { ddest[ddestlength++] = sym; // ? String.fromCharCode(sym); d.history.push(sym); } else { var length, dist, offs; var i; sym -= 257; /* possibly get more bits from length code */ length = this.read_bits(d, this.length_bits[sym], this.length_base[sym]); dist = this.decode_symbol(d, dt); /* possibly get more bits from distance code */ offs = d.history.length - this.read_bits(d, this.dist_bits[dist], this.dist_base[dist]); if (offs < 0) throw ("Invalid zlib offset " + offs); /* copy match */ for (i = offs; i < offs + length; ++i) { //ddest[ddestlength++] = ddest[i]; ddest[ddestlength++] = d.history[i]; d.history.push(d.history[i]); } } } } /* inflate an uncompressed block of data */ this.inflate_uncompressed_block = function(d) { var length, invlength; var i; if (d.bitcount > 7) { var overflow = Math.floor(d.bitcount / 8); d.sourceIndex -= overflow; d.bitcount = 0; d.tag = 0; } /* get length */ length = d.source[d.sourceIndex+1]; length = 256*length + d.source[d.sourceIndex]; /* get one's complement of length */ invlength = d.source[d.sourceIndex+3]; invlength = 256*invlength + d.source[d.sourceIndex+2]; /* check length */ if (length != (~invlength & 0x0000ffff)) return this.DATA_ERROR; d.sourceIndex += 4; /* copy block */ for (i = length; i; --i) { d.history.push(d.source[d.sourceIndex]); d.dest[d.dest.length] = d.source[d.sourceIndex++]; } /* make sure we start next block on a byte boundary */ d.bitcount = 0; return this.OK; } /* inflate a block of data compressed with fixed huffman trees */ this.inflate_fixed_block = function(d) { /* decode block using fixed trees */ return this.inflate_block_data(d, this.sltree, this.sdtree); } /* inflate a block of data compressed with dynamic huffman trees */ this.inflate_dynamic_block = function(d) { /* decode trees from stream */ this.decode_trees(d, d.ltree, d.dtree); /* decode block using decoded trees */ return this.inflate_block_data(d, d.ltree, d.dtree); } /* ---------------------- * * -- public functions -- * * ---------------------- */ /* initialize global (static) data */ this.init = function() { /* build fixed huffman trees */ this.build_fixed_trees(this.sltree, this.sdtree); /* build extra bits and base tables */ this.build_bits_base(this.length_bits, this.length_base, 4, 3); this.build_bits_base(this.dist_bits, this.dist_base, 2, 1); /* fix a special case */ this.length_bits[28] = 0; this.length_base[28] = 258; this.reset(); } this.reset = function() { this.d = new this.DATA(this); delete this.header; } /* inflate stream from source to dest */ this.uncompress = function(source, offset) { var d = this.d; var bfinal; /* initialise data */ d.source = source; d.sourceIndex = offset; d.bitcount = 0; d.dest = []; // Skip zlib header at start of stream if (typeof this.header == 'undefined') { this.header = this.read_bits(d, 16, 0); /* byte 0: 0x78, 7 = 32k window size, 8 = deflate */ /* byte 1: check bits for header and other flags */ } var blocks = 0; do { var btype; var res; /* read final block flag */ bfinal = this.getbit(d); /* read block type (2 bits) */ btype = this.read_bits(d, 2, 0); /* decompress block */ switch (btype) { case 0: /* decompress uncompressed block */ res = this.inflate_uncompressed_block(d); break; case 1: /* decompress block with fixed huffman trees */ res = this.inflate_fixed_block(d); break; case 2: /* decompress block with dynamic huffman trees */ res = this.inflate_dynamic_block(d); break; default: return { 'status' : this.DATA_ERROR }; } if (res != this.OK) return { 'status' : this.DATA_ERROR }; blocks++; } while (!bfinal && d.sourceIndex < d.source.length); d.history = d.history.slice(-this.WINDOW_SIZE); return { 'status' : this.OK, 'data' : d.dest }; } }; ================================================ FILE: app/static/novnc/keyboard.js ================================================ var kbdUtil = (function() { "use strict"; function substituteCodepoint(cp) { // Any Unicode code points which do not have corresponding keysym entries // can be swapped out for another code point by adding them to this table var substitutions = { // {S,s} with comma below -> {S,s} with cedilla 0x218 : 0x15e, 0x219 : 0x15f, // {T,t} with comma below -> {T,t} with cedilla 0x21a : 0x162, 0x21b : 0x163 }; var sub = substitutions[cp]; return sub ? sub : cp; } function isMac() { return navigator && !!(/mac/i).exec(navigator.platform); } function isWindows() { return navigator && !!(/win/i).exec(navigator.platform); } function isLinux() { return navigator && !!(/linux/i).exec(navigator.platform); } // Return true if a modifier which is not the specified char modifier (and is not shift) is down function hasShortcutModifier(charModifier, currentModifiers) { var mods = {}; for (var key in currentModifiers) { if (parseInt(key) !== XK_Shift_L) { mods[key] = currentModifiers[key]; } } var sum = 0; for (var k in currentModifiers) { if (mods[k]) { ++sum; } } if (hasCharModifier(charModifier, mods)) { return sum > charModifier.length; } else { return sum > 0; } } // Return true if the specified char modifier is currently down function hasCharModifier(charModifier, currentModifiers) { if (charModifier.length === 0) { return false; } for (var i = 0; i < charModifier.length; ++i) { if (!currentModifiers[charModifier[i]]) { return false; } } return true; } // Helper object tracking modifier key state // and generates fake key events to compensate if it gets out of sync function ModifierSync(charModifier) { if (!charModifier) { if (isMac()) { // on Mac, Option (AKA Alt) is used as a char modifier charModifier = [XK_Alt_L]; } else if (isWindows()) { // on Windows, Ctrl+Alt is used as a char modifier charModifier = [XK_Alt_L, XK_Control_L]; } else if (isLinux()) { // on Linux, ISO Level 3 Shift (AltGr) is used as a char modifier charModifier = [XK_ISO_Level3_Shift]; } else { charModifier = []; } } var state = {}; state[XK_Control_L] = false; state[XK_Alt_L] = false; state[XK_ISO_Level3_Shift] = false; state[XK_Shift_L] = false; state[XK_Meta_L] = false; function sync(evt, keysym) { var result = []; function syncKey(keysym) { return {keysym: keysyms.lookup(keysym), type: state[keysym] ? 'keydown' : 'keyup'}; } if (evt.ctrlKey !== undefined && evt.ctrlKey !== state[XK_Control_L] && keysym !== XK_Control_L) { state[XK_Control_L] = evt.ctrlKey; result.push(syncKey(XK_Control_L)); } if (evt.altKey !== undefined && evt.altKey !== state[XK_Alt_L] && keysym !== XK_Alt_L) { state[XK_Alt_L] = evt.altKey; result.push(syncKey(XK_Alt_L)); } if (evt.altGraphKey !== undefined && evt.altGraphKey !== state[XK_ISO_Level3_Shift] && keysym !== XK_ISO_Level3_Shift) { state[XK_ISO_Level3_Shift] = evt.altGraphKey; result.push(syncKey(XK_ISO_Level3_Shift)); } if (evt.shiftKey !== undefined && evt.shiftKey !== state[XK_Shift_L] && keysym !== XK_Shift_L) { state[XK_Shift_L] = evt.shiftKey; result.push(syncKey(XK_Shift_L)); } if (evt.metaKey !== undefined && evt.metaKey !== state[XK_Meta_L] && keysym !== XK_Meta_L) { state[XK_Meta_L] = evt.metaKey; result.push(syncKey(XK_Meta_L)); } return result; } function syncKeyEvent(evt, down) { var obj = getKeysym(evt); var keysym = obj ? obj.keysym : null; // first, apply the event itself, if relevant if (keysym !== null && state[keysym] !== undefined) { state[keysym] = down; } return sync(evt, keysym); } return { // sync on the appropriate keyboard event keydown: function(evt) { return syncKeyEvent(evt, true);}, keyup: function(evt) { return syncKeyEvent(evt, false);}, // Call this with a non-keyboard event (such as mouse events) to use its modifier state to synchronize anyway syncAny: function(evt) { return sync(evt);}, // is a shortcut modifier down? hasShortcutModifier: function() { return hasShortcutModifier(charModifier, state); }, // if a char modifier is down, return the keys it consists of, otherwise return null activeCharModifier: function() { return hasCharModifier(charModifier, state) ? charModifier : null; } }; } // Get a key ID from a keyboard event // May be a string or an integer depending on the available properties function getKey(evt){ if ('keyCode' in evt && 'key' in evt) { return evt.key + ':' + evt.keyCode; } else if ('keyCode' in evt) { return evt.keyCode; } else { return evt.key; } } // Get the most reliable keysym value we can get from a key event // if char/charCode is available, prefer those, otherwise fall back to key/keyCode/which function getKeysym(evt){ var codepoint; if (evt.char && evt.char.length === 1) { codepoint = evt.char.charCodeAt(); } else if (evt.charCode) { codepoint = evt.charCode; } else if (evt.keyCode && evt.type === 'keypress') { // IE10 stores the char code as keyCode, and has no other useful properties codepoint = evt.keyCode; } if (codepoint) { var res = keysyms.fromUnicode(substituteCodepoint(codepoint)); if (res) { return res; } } // we could check evt.key here. // Legal values are defined in http://www.w3.org/TR/DOM-Level-3-Events/#key-values-list, // so we "just" need to map them to keysym, but AFAIK this is only available in IE10, which also provides evt.key // so we don't *need* it yet if (evt.keyCode) { return keysyms.lookup(keysymFromKeyCode(evt.keyCode, evt.shiftKey)); } if (evt.which) { return keysyms.lookup(keysymFromKeyCode(evt.which, evt.shiftKey)); } return null; } // Given a keycode, try to predict which keysym it might be. // If the keycode is unknown, null is returned. function keysymFromKeyCode(keycode, shiftPressed) { if (typeof(keycode) !== 'number') { return null; } // won't be accurate for azerty if (keycode >= 0x30 && keycode <= 0x39) { return keycode; // digit } if (keycode >= 0x41 && keycode <= 0x5a) { // remap to lowercase unless shift is down return shiftPressed ? keycode : keycode + 32; // A-Z } if (keycode >= 0x60 && keycode <= 0x69) { return XK_KP_0 + (keycode - 0x60); // numpad 0-9 } switch(keycode) { case 0x20: return XK_space; case 0x6a: return XK_KP_Multiply; case 0x6b: return XK_KP_Add; case 0x6c: return XK_KP_Separator; case 0x6d: return XK_KP_Subtract; case 0x6e: return XK_KP_Decimal; case 0x6f: return XK_KP_Divide; case 0xbb: return XK_plus; case 0xbc: return XK_comma; case 0xbd: return XK_minus; case 0xbe: return XK_period; } return nonCharacterKey({keyCode: keycode}); } // if the key is a known non-character key (any key which doesn't generate character data) // return its keysym value. Otherwise return null function nonCharacterKey(evt) { // evt.key not implemented yet if (!evt.keyCode) { return null; } var keycode = evt.keyCode; if (keycode >= 0x70 && keycode <= 0x87) { return XK_F1 + keycode - 0x70; // F1-F24 } switch (keycode) { case 8 : return XK_BackSpace; case 13 : return XK_Return; case 9 : return XK_Tab; case 27 : return XK_Escape; case 46 : return XK_Delete; case 36 : return XK_Home; case 35 : return XK_End; case 33 : return XK_Page_Up; case 34 : return XK_Page_Down; case 45 : return XK_Insert; case 37 : return XK_Left; case 38 : return XK_Up; case 39 : return XK_Right; case 40 : return XK_Down; case 16 : return XK_Shift_L; case 17 : return XK_Control_L; case 18 : return XK_Alt_L; // also: Option-key on Mac case 224 : return XK_Meta_L; case 225 : return XK_ISO_Level3_Shift; // AltGr case 91 : return XK_Super_L; // also: Windows-key case 92 : return XK_Super_R; // also: Windows-key case 93 : return XK_Menu; // also: Windows-Menu, Command on Mac default: return null; } } return { hasShortcutModifier : hasShortcutModifier, hasCharModifier : hasCharModifier, ModifierSync : ModifierSync, getKey : getKey, getKeysym : getKeysym, keysymFromKeyCode : keysymFromKeyCode, nonCharacterKey : nonCharacterKey, substituteCodepoint : substituteCodepoint }; })(); // Takes a DOM keyboard event and: // - determines which keysym it represents // - determines a keyId identifying the key that was pressed (corresponding to the key/keyCode properties on the DOM event) // - synthesizes events to synchronize modifier key state between which modifiers are actually down, and which we thought were down // - marks each event with an 'escape' property if a modifier was down which should be "escaped" // - generates a "stall" event in cases where it might be necessary to wait and see if a keypress event follows a keydown // This information is collected into an object which is passed to the next() function. (one call per event) function KeyEventDecoder(modifierState, next) { "use strict"; function sendAll(evts) { for (var i = 0; i < evts.length; ++i) { next(evts[i]); } } function process(evt, type) { var result = {type: type}; var keyId = kbdUtil.getKey(evt); if (keyId) { result.keyId = keyId; } var keysym = kbdUtil.getKeysym(evt); var hasModifier = modifierState.hasShortcutModifier() || !!modifierState.activeCharModifier(); // Is this a case where we have to decide on the keysym right away, rather than waiting for the keypress? // "special" keys like enter, tab or backspace don't send keypress events, // and some browsers don't send keypresses at all if a modifier is down if (keysym && (type !== 'keydown' || kbdUtil.nonCharacterKey(evt) || hasModifier)) { result.keysym = keysym; } var isShift = evt.keyCode === 0x10 || evt.key === 'Shift'; // Should we prevent the browser from handling the event? // Doing so on a keydown (in most browsers) prevents keypress from being generated // so only do that if we have to. var suppress = !isShift && (type !== 'keydown' || modifierState.hasShortcutModifier() || !!kbdUtil.nonCharacterKey(evt)); // If a char modifier is down on a keydown, we need to insert a stall, // so VerifyCharModifier knows to wait and see if a keypress is comnig var stall = type === 'keydown' && modifierState.activeCharModifier() && !kbdUtil.nonCharacterKey(evt); // if a char modifier is pressed, get the keys it consists of (on Windows, AltGr is equivalent to Ctrl+Alt) var active = modifierState.activeCharModifier(); // If we have a char modifier down, and we're able to determine a keysym reliably // then (a) we know to treat the modifier as a char modifier, // and (b) we'll have to "escape" the modifier to undo the modifier when sending the char. if (active && keysym) { var isCharModifier = false; for (var i = 0; i < active.length; ++i) { if (active[i] === keysym.keysym) { isCharModifier = true; } } if (type === 'keypress' && !isCharModifier) { result.escape = modifierState.activeCharModifier(); } } if (stall) { // insert a fake "stall" event next({type: 'stall'}); } next(result); return suppress; } return { keydown: function(evt) { sendAll(modifierState.keydown(evt)); return process(evt, 'keydown'); }, keypress: function(evt) { return process(evt, 'keypress'); }, keyup: function(evt) { sendAll(modifierState.keyup(evt)); return process(evt, 'keyup'); }, syncModifiers: function(evt) { sendAll(modifierState.syncAny(evt)); }, releaseAll: function() { next({type: 'releaseall'}); } }; } // Combines keydown and keypress events where necessary to handle char modifiers. // On some OS'es, a char modifier is sometimes used as a shortcut modifier. // For example, on Windows, AltGr is synonymous with Ctrl-Alt. On a Danish keyboard layout, AltGr-2 yields a @, but Ctrl-Alt-D does nothing // so when used with the '2' key, Ctrl-Alt counts as a char modifier (and should be escaped), but when used with 'D', it does not. // The only way we can distinguish these cases is to wait and see if a keypress event arrives // When we receive a "stall" event, wait a few ms before processing the next keydown. If a keypress has also arrived, merge the two function VerifyCharModifier(next) { "use strict"; var queue = []; var timer = null; function process() { if (timer) { return; } var delayProcess = function () { clearTimeout(timer); timer = null; process(); }; while (queue.length !== 0) { var cur = queue[0]; queue = queue.splice(1); switch (cur.type) { case 'stall': // insert a delay before processing available events. /* jshint loopfunc: true */ timer = setTimeout(delayProcess, 5); /* jshint loopfunc: false */ return; case 'keydown': // is the next element a keypress? Then we should merge the two if (queue.length !== 0 && queue[0].type === 'keypress') { // Firefox sends keypress even when no char is generated. // so, if keypress keysym is the same as we'd have guessed from keydown, // the modifier didn't have any effect, and should not be escaped if (queue[0].escape && (!cur.keysym || cur.keysym.keysym !== queue[0].keysym.keysym)) { cur.escape = queue[0].escape; } cur.keysym = queue[0].keysym; queue = queue.splice(1); } break; } // swallow stall events, and pass all others to the next stage if (cur.type !== 'stall') { next(cur); } } } return function(evt) { queue.push(evt); process(); }; } // Keeps track of which keys we (and the server) believe are down // When a keyup is received, match it against this list, to determine the corresponding keysym(s) // in some cases, a single key may produce multiple keysyms, so the corresponding keyup event must release all of these chars // key repeat events should be merged into a single entry. // Because we can't always identify which entry a keydown or keyup event corresponds to, we sometimes have to guess function TrackKeyState(next) { "use strict"; var state = []; return function (evt) { var last = state.length !== 0 ? state[state.length-1] : null; switch (evt.type) { case 'keydown': // insert a new entry if last seen key was different. if (!last || !evt.keyId || last.keyId !== evt.keyId) { last = {keyId: evt.keyId, keysyms: {}}; state.push(last); } if (evt.keysym) { // make sure last event contains this keysym (a single "logical" keyevent // can cause multiple key events to be sent to the VNC server) last.keysyms[evt.keysym.keysym] = evt.keysym; last.ignoreKeyPress = true; next(evt); } break; case 'keypress': if (!last) { last = {keyId: evt.keyId, keysyms: {}}; state.push(last); } if (!evt.keysym) { console.log('keypress with no keysym:', evt); } // If we didn't expect a keypress, and already sent a keydown to the VNC server // based on the keydown, make sure to skip this event. if (evt.keysym && !last.ignoreKeyPress) { last.keysyms[evt.keysym.keysym] = evt.keysym; evt.type = 'keydown'; next(evt); } break; case 'keyup': if (state.length === 0) { return; } var idx = null; // do we have a matching key tracked as being down? for (var i = 0; i !== state.length; ++i) { if (state[i].keyId === evt.keyId) { idx = i; break; } } // if we couldn't find a match (it happens), assume it was the last key pressed if (idx === null) { idx = state.length - 1; } var item = state.splice(idx, 1)[0]; // for each keysym tracked by this key entry, clone the current event and override the keysym var clone = (function(){ function Clone(){} return function (obj) { Clone.prototype=obj; return new Clone(); }; }()); for (var key in item.keysyms) { var out = clone(evt); out.keysym = item.keysyms[key]; next(out); } break; case 'releaseall': /* jshint shadow: true */ for (var i = 0; i < state.length; ++i) { for (var key in state[i].keysyms) { var keysym = state[i].keysyms[key]; next({keyId: 0, keysym: keysym, type: 'keyup'}); } } /* jshint shadow: false */ state = []; } }; } // Handles "escaping" of modifiers: if a char modifier is used to produce a keysym (such as AltGr-2 to generate an @), // then the modifier must be "undone" before sending the @, and "redone" afterwards. function EscapeModifiers(next) { "use strict"; return function(evt) { if (evt.type !== 'keydown' || evt.escape === undefined) { next(evt); return; } // undo modifiers for (var i = 0; i < evt.escape.length; ++i) { next({type: 'keyup', keyId: 0, keysym: keysyms.lookup(evt.escape[i])}); } // send the character event next(evt); // redo modifiers /* jshint shadow: true */ for (var i = 0; i < evt.escape.length; ++i) { next({type: 'keydown', keyId: 0, keysym: keysyms.lookup(evt.escape[i])}); } /* jshint shadow: false */ }; } ================================================ FILE: app/static/novnc/keysym.js ================================================ var XK_VoidSymbol = 0xffffff, /* Void symbol */ XK_BackSpace = 0xff08, /* Back space, back char */ XK_Tab = 0xff09, XK_Linefeed = 0xff0a, /* Linefeed, LF */ XK_Clear = 0xff0b, XK_Return = 0xff0d, /* Return, enter */ XK_Pause = 0xff13, /* Pause, hold */ XK_Scroll_Lock = 0xff14, XK_Sys_Req = 0xff15, XK_Escape = 0xff1b, XK_Delete = 0xffff, /* Delete, rubout */ /* Cursor control & motion */ XK_Home = 0xff50, XK_Left = 0xff51, /* Move left, left arrow */ XK_Up = 0xff52, /* Move up, up arrow */ XK_Right = 0xff53, /* Move right, right arrow */ XK_Down = 0xff54, /* Move down, down arrow */ XK_Prior = 0xff55, /* Prior, previous */ XK_Page_Up = 0xff55, XK_Next = 0xff56, /* Next */ XK_Page_Down = 0xff56, XK_End = 0xff57, /* EOL */ XK_Begin = 0xff58, /* BOL */ /* Misc functions */ XK_Select = 0xff60, /* Select, mark */ XK_Print = 0xff61, XK_Execute = 0xff62, /* Execute, run, do */ XK_Insert = 0xff63, /* Insert, insert here */ XK_Undo = 0xff65, XK_Redo = 0xff66, /* Redo, again */ XK_Menu = 0xff67, XK_Find = 0xff68, /* Find, search */ XK_Cancel = 0xff69, /* Cancel, stop, abort, exit */ XK_Help = 0xff6a, /* Help */ XK_Break = 0xff6b, XK_Mode_switch = 0xff7e, /* Character set switch */ XK_script_switch = 0xff7e, /* Alias for mode_switch */ XK_Num_Lock = 0xff7f, /* Keypad functions, keypad numbers cleverly chosen to map to ASCII */ XK_KP_Space = 0xff80, /* Space */ XK_KP_Tab = 0xff89, XK_KP_Enter = 0xff8d, /* Enter */ XK_KP_F1 = 0xff91, /* PF1, KP_A, ... */ XK_KP_F2 = 0xff92, XK_KP_F3 = 0xff93, XK_KP_F4 = 0xff94, XK_KP_Home = 0xff95, XK_KP_Left = 0xff96, XK_KP_Up = 0xff97, XK_KP_Right = 0xff98, XK_KP_Down = 0xff99, XK_KP_Prior = 0xff9a, XK_KP_Page_Up = 0xff9a, XK_KP_Next = 0xff9b, XK_KP_Page_Down = 0xff9b, XK_KP_End = 0xff9c, XK_KP_Begin = 0xff9d, XK_KP_Insert = 0xff9e, XK_KP_Delete = 0xff9f, XK_KP_Equal = 0xffbd, /* Equals */ XK_KP_Multiply = 0xffaa, XK_KP_Add = 0xffab, XK_KP_Separator = 0xffac, /* Separator, often comma */ XK_KP_Subtract = 0xffad, XK_KP_Decimal = 0xffae, XK_KP_Divide = 0xffaf, XK_KP_0 = 0xffb0, XK_KP_1 = 0xffb1, XK_KP_2 = 0xffb2, XK_KP_3 = 0xffb3, XK_KP_4 = 0xffb4, XK_KP_5 = 0xffb5, XK_KP_6 = 0xffb6, XK_KP_7 = 0xffb7, XK_KP_8 = 0xffb8, XK_KP_9 = 0xffb9, /* * Auxiliary functions; note the duplicate definitions for left and right * function keys; Sun keyboards and a few other manufacturers have such * function key groups on the left and/or right sides of the keyboard. * We've not found a keyboard with more than 35 function keys total. */ XK_F1 = 0xffbe, XK_F2 = 0xffbf, XK_F3 = 0xffc0, XK_F4 = 0xffc1, XK_F5 = 0xffc2, XK_F6 = 0xffc3, XK_F7 = 0xffc4, XK_F8 = 0xffc5, XK_F9 = 0xffc6, XK_F10 = 0xffc7, XK_F11 = 0xffc8, XK_L1 = 0xffc8, XK_F12 = 0xffc9, XK_L2 = 0xffc9, XK_F13 = 0xffca, XK_L3 = 0xffca, XK_F14 = 0xffcb, XK_L4 = 0xffcb, XK_F15 = 0xffcc, XK_L5 = 0xffcc, XK_F16 = 0xffcd, XK_L6 = 0xffcd, XK_F17 = 0xffce, XK_L7 = 0xffce, XK_F18 = 0xffcf, XK_L8 = 0xffcf, XK_F19 = 0xffd0, XK_L9 = 0xffd0, XK_F20 = 0xffd1, XK_L10 = 0xffd1, XK_F21 = 0xffd2, XK_R1 = 0xffd2, XK_F22 = 0xffd3, XK_R2 = 0xffd3, XK_F23 = 0xffd4, XK_R3 = 0xffd4, XK_F24 = 0xffd5, XK_R4 = 0xffd5, XK_F25 = 0xffd6, XK_R5 = 0xffd6, XK_F26 = 0xffd7, XK_R6 = 0xffd7, XK_F27 = 0xffd8, XK_R7 = 0xffd8, XK_F28 = 0xffd9, XK_R8 = 0xffd9, XK_F29 = 0xffda, XK_R9 = 0xffda, XK_F30 = 0xffdb, XK_R10 = 0xffdb, XK_F31 = 0xffdc, XK_R11 = 0xffdc, XK_F32 = 0xffdd, XK_R12 = 0xffdd, XK_F33 = 0xffde, XK_R13 = 0xffde, XK_F34 = 0xffdf, XK_R14 = 0xffdf, XK_F35 = 0xffe0, XK_R15 = 0xffe0, /* Modifiers */ XK_Shift_L = 0xffe1, /* Left shift */ XK_Shift_R = 0xffe2, /* Right shift */ XK_Control_L = 0xffe3, /* Left control */ XK_Control_R = 0xffe4, /* Right control */ XK_Caps_Lock = 0xffe5, /* Caps lock */ XK_Shift_Lock = 0xffe6, /* Shift lock */ XK_Meta_L = 0xffe7, /* Left meta */ XK_Meta_R = 0xffe8, /* Right meta */ XK_Alt_L = 0xffe9, /* Left alt */ XK_Alt_R = 0xffea, /* Right alt */ XK_Super_L = 0xffeb, /* Left super */ XK_Super_R = 0xffec, /* Right super */ XK_Hyper_L = 0xffed, /* Left hyper */ XK_Hyper_R = 0xffee, /* Right hyper */ XK_ISO_Level3_Shift = 0xfe03, /* AltGr */ /* * Latin 1 * (ISO/IEC 8859-1 = Unicode U+0020..U+00FF) * Byte 3 = 0 */ XK_space = 0x0020, /* U+0020 SPACE */ XK_exclam = 0x0021, /* U+0021 EXCLAMATION MARK */ XK_quotedbl = 0x0022, /* U+0022 QUOTATION MARK */ XK_numbersign = 0x0023, /* U+0023 NUMBER SIGN */ XK_dollar = 0x0024, /* U+0024 DOLLAR SIGN */ XK_percent = 0x0025, /* U+0025 PERCENT SIGN */ XK_ampersand = 0x0026, /* U+0026 AMPERSAND */ XK_apostrophe = 0x0027, /* U+0027 APOSTROPHE */ XK_quoteright = 0x0027, /* deprecated */ XK_parenleft = 0x0028, /* U+0028 LEFT PARENTHESIS */ XK_parenright = 0x0029, /* U+0029 RIGHT PARENTHESIS */ XK_asterisk = 0x002a, /* U+002A ASTERISK */ XK_plus = 0x002b, /* U+002B PLUS SIGN */ XK_comma = 0x002c, /* U+002C COMMA */ XK_minus = 0x002d, /* U+002D HYPHEN-MINUS */ XK_period = 0x002e, /* U+002E FULL STOP */ XK_slash = 0x002f, /* U+002F SOLIDUS */ XK_0 = 0x0030, /* U+0030 DIGIT ZERO */ XK_1 = 0x0031, /* U+0031 DIGIT ONE */ XK_2 = 0x0032, /* U+0032 DIGIT TWO */ XK_3 = 0x0033, /* U+0033 DIGIT THREE */ XK_4 = 0x0034, /* U+0034 DIGIT FOUR */ XK_5 = 0x0035, /* U+0035 DIGIT FIVE */ XK_6 = 0x0036, /* U+0036 DIGIT SIX */ XK_7 = 0x0037, /* U+0037 DIGIT SEVEN */ XK_8 = 0x0038, /* U+0038 DIGIT EIGHT */ XK_9 = 0x0039, /* U+0039 DIGIT NINE */ XK_colon = 0x003a, /* U+003A COLON */ XK_semicolon = 0x003b, /* U+003B SEMICOLON */ XK_less = 0x003c, /* U+003C LESS-THAN SIGN */ XK_equal = 0x003d, /* U+003D EQUALS SIGN */ XK_greater = 0x003e, /* U+003E GREATER-THAN SIGN */ XK_question = 0x003f, /* U+003F QUESTION MARK */ XK_at = 0x0040, /* U+0040 COMMERCIAL AT */ XK_A = 0x0041, /* U+0041 LATIN CAPITAL LETTER A */ XK_B = 0x0042, /* U+0042 LATIN CAPITAL LETTER B */ XK_C = 0x0043, /* U+0043 LATIN CAPITAL LETTER C */ XK_D = 0x0044, /* U+0044 LATIN CAPITAL LETTER D */ XK_E = 0x0045, /* U+0045 LATIN CAPITAL LETTER E */ XK_F = 0x0046, /* U+0046 LATIN CAPITAL LETTER F */ XK_G = 0x0047, /* U+0047 LATIN CAPITAL LETTER G */ XK_H = 0x0048, /* U+0048 LATIN CAPITAL LETTER H */ XK_I = 0x0049, /* U+0049 LATIN CAPITAL LETTER I */ XK_J = 0x004a, /* U+004A LATIN CAPITAL LETTER J */ XK_K = 0x004b, /* U+004B LATIN CAPITAL LETTER K */ XK_L = 0x004c, /* U+004C LATIN CAPITAL LETTER L */ XK_M = 0x004d, /* U+004D LATIN CAPITAL LETTER M */ XK_N = 0x004e, /* U+004E LATIN CAPITAL LETTER N */ XK_O = 0x004f, /* U+004F LATIN CAPITAL LETTER O */ XK_P = 0x0050, /* U+0050 LATIN CAPITAL LETTER P */ XK_Q = 0x0051, /* U+0051 LATIN CAPITAL LETTER Q */ XK_R = 0x0052, /* U+0052 LATIN CAPITAL LETTER R */ XK_S = 0x0053, /* U+0053 LATIN CAPITAL LETTER S */ XK_T = 0x0054, /* U+0054 LATIN CAPITAL LETTER T */ XK_U = 0x0055, /* U+0055 LATIN CAPITAL LETTER U */ XK_V = 0x0056, /* U+0056 LATIN CAPITAL LETTER V */ XK_W = 0x0057, /* U+0057 LATIN CAPITAL LETTER W */ XK_X = 0x0058, /* U+0058 LATIN CAPITAL LETTER X */ XK_Y = 0x0059, /* U+0059 LATIN CAPITAL LETTER Y */ XK_Z = 0x005a, /* U+005A LATIN CAPITAL LETTER Z */ XK_bracketleft = 0x005b, /* U+005B LEFT SQUARE BRACKET */ XK_backslash = 0x005c, /* U+005C REVERSE SOLIDUS */ XK_bracketright = 0x005d, /* U+005D RIGHT SQUARE BRACKET */ XK_asciicircum = 0x005e, /* U+005E CIRCUMFLEX ACCENT */ XK_underscore = 0x005f, /* U+005F LOW LINE */ XK_grave = 0x0060, /* U+0060 GRAVE ACCENT */ XK_quoteleft = 0x0060, /* deprecated */ XK_a = 0x0061, /* U+0061 LATIN SMALL LETTER A */ XK_b = 0x0062, /* U+0062 LATIN SMALL LETTER B */ XK_c = 0x0063, /* U+0063 LATIN SMALL LETTER C */ XK_d = 0x0064, /* U+0064 LATIN SMALL LETTER D */ XK_e = 0x0065, /* U+0065 LATIN SMALL LETTER E */ XK_f = 0x0066, /* U+0066 LATIN SMALL LETTER F */ XK_g = 0x0067, /* U+0067 LATIN SMALL LETTER G */ XK_h = 0x0068, /* U+0068 LATIN SMALL LETTER H */ XK_i = 0x0069, /* U+0069 LATIN SMALL LETTER I */ XK_j = 0x006a, /* U+006A LATIN SMALL LETTER J */ XK_k = 0x006b, /* U+006B LATIN SMALL LETTER K */ XK_l = 0x006c, /* U+006C LATIN SMALL LETTER L */ XK_m = 0x006d, /* U+006D LATIN SMALL LETTER M */ XK_n = 0x006e, /* U+006E LATIN SMALL LETTER N */ XK_o = 0x006f, /* U+006F LATIN SMALL LETTER O */ XK_p = 0x0070, /* U+0070 LATIN SMALL LETTER P */ XK_q = 0x0071, /* U+0071 LATIN SMALL LETTER Q */ XK_r = 0x0072, /* U+0072 LATIN SMALL LETTER R */ XK_s = 0x0073, /* U+0073 LATIN SMALL LETTER S */ XK_t = 0x0074, /* U+0074 LATIN SMALL LETTER T */ XK_u = 0x0075, /* U+0075 LATIN SMALL LETTER U */ XK_v = 0x0076, /* U+0076 LATIN SMALL LETTER V */ XK_w = 0x0077, /* U+0077 LATIN SMALL LETTER W */ XK_x = 0x0078, /* U+0078 LATIN SMALL LETTER X */ XK_y = 0x0079, /* U+0079 LATIN SMALL LETTER Y */ XK_z = 0x007a, /* U+007A LATIN SMALL LETTER Z */ XK_braceleft = 0x007b, /* U+007B LEFT CURLY BRACKET */ XK_bar = 0x007c, /* U+007C VERTICAL LINE */ XK_braceright = 0x007d, /* U+007D RIGHT CURLY BRACKET */ XK_asciitilde = 0x007e, /* U+007E TILDE */ XK_nobreakspace = 0x00a0, /* U+00A0 NO-BREAK SPACE */ XK_exclamdown = 0x00a1, /* U+00A1 INVERTED EXCLAMATION MARK */ XK_cent = 0x00a2, /* U+00A2 CENT SIGN */ XK_sterling = 0x00a3, /* U+00A3 POUND SIGN */ XK_currency = 0x00a4, /* U+00A4 CURRENCY SIGN */ XK_yen = 0x00a5, /* U+00A5 YEN SIGN */ XK_brokenbar = 0x00a6, /* U+00A6 BROKEN BAR */ XK_section = 0x00a7, /* U+00A7 SECTION SIGN */ XK_diaeresis = 0x00a8, /* U+00A8 DIAERESIS */ XK_copyright = 0x00a9, /* U+00A9 COPYRIGHT SIGN */ XK_ordfeminine = 0x00aa, /* U+00AA FEMININE ORDINAL INDICATOR */ XK_guillemotleft = 0x00ab, /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ XK_notsign = 0x00ac, /* U+00AC NOT SIGN */ XK_hyphen = 0x00ad, /* U+00AD SOFT HYPHEN */ XK_registered = 0x00ae, /* U+00AE REGISTERED SIGN */ XK_macron = 0x00af, /* U+00AF MACRON */ XK_degree = 0x00b0, /* U+00B0 DEGREE SIGN */ XK_plusminus = 0x00b1, /* U+00B1 PLUS-MINUS SIGN */ XK_twosuperior = 0x00b2, /* U+00B2 SUPERSCRIPT TWO */ XK_threesuperior = 0x00b3, /* U+00B3 SUPERSCRIPT THREE */ XK_acute = 0x00b4, /* U+00B4 ACUTE ACCENT */ XK_mu = 0x00b5, /* U+00B5 MICRO SIGN */ XK_paragraph = 0x00b6, /* U+00B6 PILCROW SIGN */ XK_periodcentered = 0x00b7, /* U+00B7 MIDDLE DOT */ XK_cedilla = 0x00b8, /* U+00B8 CEDILLA */ XK_onesuperior = 0x00b9, /* U+00B9 SUPERSCRIPT ONE */ XK_masculine = 0x00ba, /* U+00BA MASCULINE ORDINAL INDICATOR */ XK_guillemotright = 0x00bb, /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ XK_onequarter = 0x00bc, /* U+00BC VULGAR FRACTION ONE QUARTER */ XK_onehalf = 0x00bd, /* U+00BD VULGAR FRACTION ONE HALF */ XK_threequarters = 0x00be, /* U+00BE VULGAR FRACTION THREE QUARTERS */ XK_questiondown = 0x00bf, /* U+00BF INVERTED QUESTION MARK */ XK_Agrave = 0x00c0, /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ XK_Aacute = 0x00c1, /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ XK_Acircumflex = 0x00c2, /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ XK_Atilde = 0x00c3, /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ XK_Adiaeresis = 0x00c4, /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ XK_Aring = 0x00c5, /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ XK_AE = 0x00c6, /* U+00C6 LATIN CAPITAL LETTER AE */ XK_Ccedilla = 0x00c7, /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ XK_Egrave = 0x00c8, /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ XK_Eacute = 0x00c9, /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ XK_Ecircumflex = 0x00ca, /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ XK_Ediaeresis = 0x00cb, /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ XK_Igrave = 0x00cc, /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ XK_Iacute = 0x00cd, /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ XK_Icircumflex = 0x00ce, /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ XK_Idiaeresis = 0x00cf, /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ XK_ETH = 0x00d0, /* U+00D0 LATIN CAPITAL LETTER ETH */ XK_Eth = 0x00d0, /* deprecated */ XK_Ntilde = 0x00d1, /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ XK_Ograve = 0x00d2, /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ XK_Oacute = 0x00d3, /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ XK_Ocircumflex = 0x00d4, /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ XK_Otilde = 0x00d5, /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ XK_Odiaeresis = 0x00d6, /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ XK_multiply = 0x00d7, /* U+00D7 MULTIPLICATION SIGN */ XK_Oslash = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ XK_Ooblique = 0x00d8, /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ XK_Ugrave = 0x00d9, /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ XK_Uacute = 0x00da, /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ XK_Ucircumflex = 0x00db, /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ XK_Udiaeresis = 0x00dc, /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ XK_Yacute = 0x00dd, /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ XK_THORN = 0x00de, /* U+00DE LATIN CAPITAL LETTER THORN */ XK_Thorn = 0x00de, /* deprecated */ XK_ssharp = 0x00df, /* U+00DF LATIN SMALL LETTER SHARP S */ XK_agrave = 0x00e0, /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ XK_aacute = 0x00e1, /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ XK_acircumflex = 0x00e2, /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ XK_atilde = 0x00e3, /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ XK_adiaeresis = 0x00e4, /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ XK_aring = 0x00e5, /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ XK_ae = 0x00e6, /* U+00E6 LATIN SMALL LETTER AE */ XK_ccedilla = 0x00e7, /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ XK_egrave = 0x00e8, /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ XK_eacute = 0x00e9, /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ XK_ecircumflex = 0x00ea, /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ XK_ediaeresis = 0x00eb, /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ XK_igrave = 0x00ec, /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ XK_iacute = 0x00ed, /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ XK_icircumflex = 0x00ee, /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ XK_idiaeresis = 0x00ef, /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ XK_eth = 0x00f0, /* U+00F0 LATIN SMALL LETTER ETH */ XK_ntilde = 0x00f1, /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ XK_ograve = 0x00f2, /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ XK_oacute = 0x00f3, /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ XK_ocircumflex = 0x00f4, /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ XK_otilde = 0x00f5, /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ XK_odiaeresis = 0x00f6, /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ XK_division = 0x00f7, /* U+00F7 DIVISION SIGN */ XK_oslash = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ XK_ooblique = 0x00f8, /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ XK_ugrave = 0x00f9, /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ XK_uacute = 0x00fa, /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ XK_ucircumflex = 0x00fb, /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ XK_udiaeresis = 0x00fc, /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ XK_yacute = 0x00fd, /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ XK_thorn = 0x00fe, /* U+00FE LATIN SMALL LETTER THORN */ XK_ydiaeresis = 0x00ff; /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ ================================================ FILE: app/static/novnc/keysymdef.js ================================================ // This file describes mappings from Unicode codepoints to the keysym values // (and optionally, key names) expected by the RFB protocol // How this file was generated: // node /Users/jalf/dev/mi/novnc/utils/parse.js /opt/X11/include/X11/keysymdef.h var keysyms = (function(){ "use strict"; var keynames = null; var codepoints = {"32":32,"33":33,"34":34,"35":35,"36":36,"37":37,"38":38,"39":39,"40":40,"41":41,"42":42,"43":43,"44":44,"45":45,"46":46,"47":47,"48":48,"49":49,"50":50,"51":51,"52":52,"53":53,"54":54,"55":55,"56":56,"57":57,"58":58,"59":59,"60":60,"61":61,"62":62,"63":63,"64":64,"65":65,"66":66,"67":67,"68":68,"69":69,"70":70,"71":71,"72":72,"73":73,"74":74,"75":75,"76":76,"77":77,"78":78,"79":79,"80":80,"81":81,"82":82,"83":83,"84":84,"85":85,"86":86,"87":87,"88":88,"89":89,"90":90,"91":91,"92":92,"93":93,"94":94,"95":95,"96":96,"97":97,"98":98,"99":99,"100":100,"101":101,"102":102,"103":103,"104":104,"105":105,"106":106,"107":107,"108":108,"109":109,"110":110,"111":111,"112":112,"113":113,"114":114,"115":115,"116":116,"117":117,"118":118,"119":119,"120":120,"121":121,"122":122,"123":123,"124":124,"125":125,"126":126,"160":160,"161":161,"162":162,"163":163,"164":164,"165":165,"166":166,"167":167,"168":168,"169":169,"170":170,"171":171,"172":172,"173":173,"174":174,"175":175,"176":176,"177":177,"178":178,"179":179,"180":180,"181":181,"182":182,"183":183,"184":184,"185":185,"186":186,"187":187,"188":188,"189":189,"190":190,"191":191,"192":192,"193":193,"194":194,"195":195,"196":196,"197":197,"198":198,"199":199,"200":200,"201":201,"202":202,"203":203,"204":204,"205":205,"206":206,"207":207,"208":208,"209":209,"210":210,"211":211,"212":212,"213":213,"214":214,"215":215,"216":216,"217":217,"218":218,"219":219,"220":220,"221":221,"222":222,"223":223,"224":224,"225":225,"226":226,"227":227,"228":228,"229":229,"230":230,"231":231,"232":232,"233":233,"234":234,"235":235,"236":236,"237":237,"238":238,"239":239,"240":240,"241":241,"242":242,"243":243,"244":244,"245":245,"246":246,"247":247,"248":248,"249":249,"250":250,"251":251,"252":252,"253":253,"254":254,"255":255,"256":960,"257":992,"258":451,"259":483,"260":417,"261":433,"262":454,"263":486,"264":710,"265":742,"266":709,"267":741,"268":456,"269":488,"270":463,"271":495,"272":464,"273":496,"274":938,"275":954,"278":972,"279":1004,"280":458,"281":490,"282":460,"283":492,"284":728,"285":760,"286":683,"287":699,"288":725,"289":757,"290":939,"291":955,"292":678,"293":694,"294":673,"295":689,"296":933,"297":949,"298":975,"299":1007,"300":16777516,"301":16777517,"302":967,"303":999,"304":681,"305":697,"308":684,"309":700,"310":979,"311":1011,"312":930,"313":453,"314":485,"315":934,"316":950,"317":421,"318":437,"321":419,"322":435,"323":465,"324":497,"325":977,"326":1009,"327":466,"328":498,"330":957,"331":959,"332":978,"333":1010,"336":469,"337":501,"338":5052,"339":5053,"340":448,"341":480,"342":931,"343":947,"344":472,"345":504,"346":422,"347":438,"348":734,"349":766,"350":426,"351":442,"352":425,"353":441,"354":478,"355":510,"356":427,"357":443,"358":940,"359":956,"360":989,"361":1021,"362":990,"363":1022,"364":733,"365":765,"366":473,"367":505,"368":475,"369":507,"370":985,"371":1017,"372":16777588,"373":16777589,"374":16777590,"375":16777591,"376":5054,"377":428,"378":444,"379":431,"380":447,"381":430,"382":446,"399":16777615,"402":2294,"415":16777631,"416":16777632,"417":16777633,"431":16777647,"432":16777648,"437":16777653,"438":16777654,"439":16777655,"466":16777681,"486":16777702,"487":16777703,"601":16777817,"629":16777845,"658":16777874,"711":439,"728":418,"729":511,"731":434,"733":445,"901":1966,"902":1953,"904":1954,"905":1955,"906":1956,"908":1959,"910":1960,"911":1963,"912":1974,"913":1985,"914":1986,"915":1987,"916":1988,"917":1989,"918":1990,"919":1991,"920":1992,"921":1993,"922":1994,"923":1995,"924":1996,"925":1997,"926":1998,"927":1999,"928":2000,"929":2001,"931":2002,"932":2004,"933":2005,"934":2006,"935":2007,"936":2008,"937":2009,"938":1957,"939":1961,"940":1969,"941":1970,"942":1971,"943":1972,"944":1978,"945":2017,"946":2018,"947":2019,"948":2020,"949":2021,"950":2022,"951":2023,"952":2024,"953":2025,"954":2026,"955":2027,"956":2028,"957":2029,"958":2030,"959":2031,"960":2032,"961":2033,"962":2035,"963":2034,"964":2036,"965":2037,"966":2038,"967":2039,"968":2040,"969":2041,"970":1973,"971":1977,"972":1975,"973":1976,"974":1979,"1025":1715,"1026":1713,"1027":1714,"1028":1716,"1029":1717,"1030":1718,"1031":1719,"1032":1720,"1033":1721,"1034":1722,"1035":1723,"1036":1724,"1038":1726,"1039":1727,"1040":1761,"1041":1762,"1042":1783,"1043":1767,"1044":1764,"1045":1765,"1046":1782,"1047":1786,"1048":1769,"1049":1770,"1050":1771,"1051":1772,"1052":1773,"1053":1774,"1054":1775,"1055":1776,"1056":1778,"1057":1779,"1058":1780,"1059":1781,"1060":1766,"1061":1768,"1062":1763,"1063":1790,"1064":1787,"1065":1789,"1066":1791,"1067":1785,"1068":1784,"1069":1788,"1070":1760,"1071":1777,"1072":1729,"1073":1730,"1074":1751,"1075":1735,"1076":1732,"1077":1733,"1078":1750,"1079":1754,"1080":1737,"1081":1738,"1082":1739,"1083":1740,"1084":1741,"1085":1742,"1086":1743,"1087":1744,"1088":1746,"1089":1747,"1090":1748,"1091":1749,"1092":1734,"1093":1736,"1094":1731,"1095":1758,"1096":1755,"1097":1757,"1098":1759,"1099":1753,"1100":1752,"1101":1756,"1102":1728,"1103":1745,"1105":1699,"1106":1697,"1107":1698,"1108":1700,"1109":1701,"1110":1702,"1111":1703,"1112":1704,"1113":1705,"1114":1706,"1115":1707,"1116":1708,"1118":1710,"1119":1711,"1168":1725,"1169":1709,"1170":16778386,"1171":16778387,"1174":16778390,"1175":16778391,"1178":16778394,"1179":16778395,"1180":16778396,"1181":16778397,"1186":16778402,"1187":16778403,"1198":16778414,"1199":16778415,"1200":16778416,"1201":16778417,"1202":16778418,"1203":16778419,"1206":16778422,"1207":16778423,"1208":16778424,"1209":16778425,"1210":16778426,"1211":16778427,"1240":16778456,"1241":16778457,"1250":16778466,"1251":16778467,"1256":16778472,"1257":16778473,"1262":16778478,"1263":16778479,"1329":16778545,"1330":16778546,"1331":16778547,"1332":16778548,"1333":16778549,"1334":16778550,"1335":16778551,"1336":16778552,"1337":16778553,"1338":16778554,"1339":16778555,"1340":16778556,"1341":16778557,"1342":16778558,"1343":16778559,"1344":16778560,"1345":16778561,"1346":16778562,"1347":16778563,"1348":16778564,"1349":16778565,"1350":16778566,"1351":16778567,"1352":16778568,"1353":16778569,"1354":16778570,"1355":16778571,"1356":16778572,"1357":16778573,"1358":16778574,"1359":16778575,"1360":16778576,"1361":16778577,"1362":16778578,"1363":16778579,"1364":16778580,"1365":16778581,"1366":16778582,"1370":16778586,"1371":16778587,"1372":16778588,"1373":16778589,"1374":16778590,"1377":16778593,"1378":16778594,"1379":16778595,"1380":16778596,"1381":16778597,"1382":16778598,"1383":16778599,"1384":16778600,"1385":16778601,"1386":16778602,"1387":16778603,"1388":16778604,"1389":16778605,"1390":16778606,"1391":16778607,"1392":16778608,"1393":16778609,"1394":16778610,"1395":16778611,"1396":16778612,"1397":16778613,"1398":16778614,"1399":16778615,"1400":16778616,"1401":16778617,"1402":16778618,"1403":16778619,"1404":16778620,"1405":16778621,"1406":16778622,"1407":16778623,"1408":16778624,"1409":16778625,"1410":16778626,"1411":16778627,"1412":16778628,"1413":16778629,"1414":16778630,"1415":16778631,"1417":16778633,"1418":16778634,"1488":3296,"1489":3297,"1490":3298,"1491":3299,"1492":3300,"1493":3301,"1494":3302,"1495":3303,"1496":3304,"1497":3305,"1498":3306,"1499":3307,"1500":3308,"1501":3309,"1502":3310,"1503":3311,"1504":3312,"1505":3313,"1506":3314,"1507":3315,"1508":3316,"1509":3317,"1510":3318,"1511":3319,"1512":3320,"1513":3321,"1514":3322,"1548":1452,"1563":1467,"1567":1471,"1569":1473,"1570":1474,"1571":1475,"1572":1476,"1573":1477,"1574":1478,"1575":1479,"1576":1480,"1577":1481,"1578":1482,"1579":1483,"1580":1484,"1581":1485,"1582":1486,"1583":1487,"1584":1488,"1585":1489,"1586":1490,"1587":1491,"1588":1492,"1589":1493,"1590":1494,"1591":1495,"1592":1496,"1593":1497,"1594":1498,"1600":1504,"1601":1505,"1602":1506,"1603":1507,"1604":1508,"1605":1509,"1606":1510,"1607":1511,"1608":1512,"1609":1513,"1610":1514,"1611":1515,"1612":1516,"1613":1517,"1614":1518,"1615":1519,"1616":1520,"1617":1521,"1618":1522,"1619":16778835,"1620":16778836,"1621":16778837,"1632":16778848,"1633":16778849,"1634":16778850,"1635":16778851,"1636":16778852,"1637":16778853,"1638":16778854,"1639":16778855,"1640":16778856,"1641":16778857,"1642":16778858,"1648":16778864,"1657":16778873,"1662":16778878,"1670":16778886,"1672":16778888,"1681":16778897,"1688":16778904,"1700":16778916,"1705":16778921,"1711":16778927,"1722":16778938,"1726":16778942,"1729":16778945,"1740":16778956,"1746":16778962,"1748":16778964,"1776":16778992,"1777":16778993,"1778":16778994,"1779":16778995,"1780":16778996,"1781":16778997,"1782":16778998,"1783":16778999,"1784":16779000,"1785":16779001,"3458":16780674,"3459":16780675,"3461":16780677,"3462":16780678,"3463":16780679,"3464":16780680,"3465":16780681,"3466":16780682,"3467":16780683,"3468":16780684,"3469":16780685,"3470":16780686,"3471":16780687,"3472":16780688,"3473":16780689,"3474":16780690,"3475":16780691,"3476":16780692,"3477":16780693,"3478":16780694,"3482":16780698,"3483":16780699,"3484":16780700,"3485":16780701,"3486":16780702,"3487":16780703,"3488":16780704,"3489":16780705,"3490":16780706,"3491":16780707,"3492":16780708,"3493":16780709,"3494":16780710,"3495":16780711,"3496":16780712,"3497":16780713,"3498":16780714,"3499":16780715,"3500":16780716,"3501":16780717,"3502":16780718,"3503":16780719,"3504":16780720,"3505":16780721,"3507":16780723,"3508":16780724,"3509":16780725,"3510":16780726,"3511":16780727,"3512":16780728,"3513":16780729,"3514":16780730,"3515":16780731,"3517":16780733,"3520":16780736,"3521":16780737,"3522":16780738,"3523":16780739,"3524":16780740,"3525":16780741,"3526":16780742,"3530":16780746,"3535":16780751,"3536":16780752,"3537":16780753,"3538":16780754,"3539":16780755,"3540":16780756,"3542":16780758,"3544":16780760,"3545":16780761,"3546":16780762,"3547":16780763,"3548":16780764,"3549":16780765,"3550":16780766,"3551":16780767,"3570":16780786,"3571":16780787,"3572":16780788,"3585":3489,"3586":3490,"3587":3491,"3588":3492,"3589":3493,"3590":3494,"3591":3495,"3592":3496,"3593":3497,"3594":3498,"3595":3499,"3596":3500,"3597":3501,"3598":3502,"3599":3503,"3600":3504,"3601":3505,"3602":3506,"3603":3507,"3604":3508,"3605":3509,"3606":3510,"3607":3511,"3608":3512,"3609":3513,"3610":3514,"3611":3515,"3612":3516,"3613":3517,"3614":3518,"3615":3519,"3616":3520,"3617":3521,"3618":3522,"3619":3523,"3620":3524,"3621":3525,"3622":3526,"3623":3527,"3624":3528,"3625":3529,"3626":3530,"3627":3531,"3628":3532,"3629":3533,"3630":3534,"3631":3535,"3632":3536,"3633":3537,"3634":3538,"3635":3539,"3636":3540,"3637":3541,"3638":3542,"3639":3543,"3640":3544,"3641":3545,"3642":3546,"3647":3551,"3648":3552,"3649":3553,"3650":3554,"3651":3555,"3652":3556,"3653":3557,"3654":3558,"3655":3559,"3656":3560,"3657":3561,"3658":3562,"3659":3563,"3660":3564,"3661":3565,"3664":3568,"3665":3569,"3666":3570,"3667":3571,"3668":3572,"3669":3573,"3670":3574,"3671":3575,"3672":3576,"3673":3577,"4304":16781520,"4305":16781521,"4306":16781522,"4307":16781523,"4308":16781524,"4309":16781525,"4310":16781526,"4311":16781527,"4312":16781528,"4313":16781529,"4314":16781530,"4315":16781531,"4316":16781532,"4317":16781533,"4318":16781534,"4319":16781535,"4320":16781536,"4321":16781537,"4322":16781538,"4323":16781539,"4324":16781540,"4325":16781541,"4326":16781542,"4327":16781543,"4328":16781544,"4329":16781545,"4330":16781546,"4331":16781547,"4332":16781548,"4333":16781549,"4334":16781550,"4335":16781551,"4336":16781552,"4337":16781553,"4338":16781554,"4339":16781555,"4340":16781556,"4341":16781557,"4342":16781558,"7682":16784898,"7683":16784899,"7690":16784906,"7691":16784907,"7710":16784926,"7711":16784927,"7734":16784950,"7735":16784951,"7744":16784960,"7745":16784961,"7766":16784982,"7767":16784983,"7776":16784992,"7777":16784993,"7786":16785002,"7787":16785003,"7808":16785024,"7809":16785025,"7810":16785026,"7811":16785027,"7812":16785028,"7813":16785029,"7818":16785034,"7819":16785035,"7840":16785056,"7841":16785057,"7842":16785058,"7843":16785059,"7844":16785060,"7845":16785061,"7846":16785062,"7847":16785063,"7848":16785064,"7849":16785065,"7850":16785066,"7851":16785067,"7852":16785068,"7853":16785069,"7854":16785070,"7855":16785071,"7856":16785072,"7857":16785073,"7858":16785074,"7859":16785075,"7860":16785076,"7861":16785077,"7862":16785078,"7863":16785079,"7864":16785080,"7865":16785081,"7866":16785082,"7867":16785083,"7868":16785084,"7869":16785085,"7870":16785086,"7871":16785087,"7872":16785088,"7873":16785089,"7874":16785090,"7875":16785091,"7876":16785092,"7877":16785093,"7878":16785094,"7879":16785095,"7880":16785096,"7881":16785097,"7882":16785098,"7883":16785099,"7884":16785100,"7885":16785101,"7886":16785102,"7887":16785103,"7888":16785104,"7889":16785105,"7890":16785106,"7891":16785107,"7892":16785108,"7893":16785109,"7894":16785110,"7895":16785111,"7896":16785112,"7897":16785113,"7898":16785114,"7899":16785115,"7900":16785116,"7901":16785117,"7902":16785118,"7903":16785119,"7904":16785120,"7905":16785121,"7906":16785122,"7907":16785123,"7908":16785124,"7909":16785125,"7910":16785126,"7911":16785127,"7912":16785128,"7913":16785129,"7914":16785130,"7915":16785131,"7916":16785132,"7917":16785133,"7918":16785134,"7919":16785135,"7920":16785136,"7921":16785137,"7922":16785138,"7923":16785139,"7924":16785140,"7925":16785141,"7926":16785142,"7927":16785143,"7928":16785144,"7929":16785145,"8194":2722,"8195":2721,"8196":2723,"8197":2724,"8199":2725,"8200":2726,"8201":2727,"8202":2728,"8210":2747,"8211":2730,"8212":2729,"8213":1967,"8215":3295,"8216":2768,"8217":2769,"8218":2813,"8220":2770,"8221":2771,"8222":2814,"8224":2801,"8225":2802,"8226":2790,"8229":2735,"8230":2734,"8240":2773,"8242":2774,"8243":2775,"8248":2812,"8254":1150,"8304":16785520,"8308":16785524,"8309":16785525,"8310":16785526,"8311":16785527,"8312":16785528,"8313":16785529,"8320":16785536,"8321":16785537,"8322":16785538,"8323":16785539,"8324":16785540,"8325":16785541,"8326":16785542,"8327":16785543,"8328":16785544,"8329":16785545,"8352":16785568,"8353":16785569,"8354":16785570,"8355":16785571,"8356":16785572,"8357":16785573,"8358":16785574,"8359":16785575,"8360":16785576,"8361":3839,"8362":16785578,"8363":16785579,"8364":8364,"8453":2744,"8470":1712,"8471":2811,"8478":2772,"8482":2761,"8531":2736,"8532":2737,"8533":2738,"8534":2739,"8535":2740,"8536":2741,"8537":2742,"8538":2743,"8539":2755,"8540":2756,"8541":2757,"8542":2758,"8592":2299,"8593":2300,"8594":2301,"8595":2302,"8658":2254,"8660":2253,"8706":2287,"8709":16785925,"8711":2245,"8712":16785928,"8713":16785929,"8715":16785931,"8728":3018,"8730":2262,"8731":16785947,"8732":16785948,"8733":2241,"8734":2242,"8743":2270,"8744":2271,"8745":2268,"8746":2269,"8747":2239,"8748":16785964,"8749":16785965,"8756":2240,"8757":16785973,"8764":2248,"8771":2249,"8773":16785992,"8775":16785991,"8800":2237,"8801":2255,"8802":16786018,"8803":16786019,"8804":2236,"8805":2238,"8834":2266,"8835":2267,"8866":3068,"8867":3036,"8868":3010,"8869":3022,"8968":3027,"8970":3012,"8981":2810,"8992":2212,"8993":2213,"9109":3020,"9115":2219,"9117":2220,"9118":2221,"9120":2222,"9121":2215,"9123":2216,"9124":2217,"9126":2218,"9128":2223,"9132":2224,"9143":2209,"9146":2543,"9147":2544,"9148":2546,"9149":2547,"9225":2530,"9226":2533,"9227":2537,"9228":2531,"9229":2532,"9251":2732,"9252":2536,"9472":2211,"9474":2214,"9484":2210,"9488":2539,"9492":2541,"9496":2538,"9500":2548,"9508":2549,"9516":2551,"9524":2550,"9532":2542,"9618":2529,"9642":2791,"9643":2785,"9644":2779,"9645":2786,"9646":2783,"9647":2767,"9650":2792,"9651":2787,"9654":2781,"9655":2765,"9660":2793,"9661":2788,"9664":2780,"9665":2764,"9670":2528,"9675":2766,"9679":2782,"9702":2784,"9734":2789,"9742":2809,"9747":2762,"9756":2794,"9758":2795,"9792":2808,"9794":2807,"9827":2796,"9829":2798,"9830":2797,"9837":2806,"9839":2805,"10003":2803,"10007":2804,"10013":2777,"10016":2800,"10216":2748,"10217":2750,"10240":16787456,"10241":16787457,"10242":16787458,"10243":16787459,"10244":16787460,"10245":16787461,"10246":16787462,"10247":16787463,"10248":16787464,"10249":16787465,"10250":16787466,"10251":16787467,"10252":16787468,"10253":16787469,"10254":16787470,"10255":16787471,"10256":16787472,"10257":16787473,"10258":16787474,"10259":16787475,"10260":16787476,"10261":16787477,"10262":16787478,"10263":16787479,"10264":16787480,"10265":16787481,"10266":16787482,"10267":16787483,"10268":16787484,"10269":16787485,"10270":16787486,"10271":16787487,"10272":16787488,"10273":16787489,"10274":16787490,"10275":16787491,"10276":16787492,"10277":16787493,"10278":16787494,"10279":16787495,"10280":16787496,"10281":16787497,"10282":16787498,"10283":16787499,"10284":16787500,"10285":16787501,"10286":16787502,"10287":16787503,"10288":16787504,"10289":16787505,"10290":16787506,"10291":16787507,"10292":16787508,"10293":16787509,"10294":16787510,"10295":16787511,"10296":16787512,"10297":16787513,"10298":16787514,"10299":16787515,"10300":16787516,"10301":16787517,"10302":16787518,"10303":16787519,"10304":16787520,"10305":16787521,"10306":16787522,"10307":16787523,"10308":16787524,"10309":16787525,"10310":16787526,"10311":16787527,"10312":16787528,"10313":16787529,"10314":16787530,"10315":16787531,"10316":16787532,"10317":16787533,"10318":16787534,"10319":16787535,"10320":16787536,"10321":16787537,"10322":16787538,"10323":16787539,"10324":16787540,"10325":16787541,"10326":16787542,"10327":16787543,"10328":16787544,"10329":16787545,"10330":16787546,"10331":16787547,"10332":16787548,"10333":16787549,"10334":16787550,"10335":16787551,"10336":16787552,"10337":16787553,"10338":16787554,"10339":16787555,"10340":16787556,"10341":16787557,"10342":16787558,"10343":16787559,"10344":16787560,"10345":16787561,"10346":16787562,"10347":16787563,"10348":16787564,"10349":16787565,"10350":16787566,"10351":16787567,"10352":16787568,"10353":16787569,"10354":16787570,"10355":16787571,"10356":16787572,"10357":16787573,"10358":16787574,"10359":16787575,"10360":16787576,"10361":16787577,"10362":16787578,"10363":16787579,"10364":16787580,"10365":16787581,"10366":16787582,"10367":16787583,"10368":16787584,"10369":16787585,"10370":16787586,"10371":16787587,"10372":16787588,"10373":16787589,"10374":16787590,"10375":16787591,"10376":16787592,"10377":16787593,"10378":16787594,"10379":16787595,"10380":16787596,"10381":16787597,"10382":16787598,"10383":16787599,"10384":16787600,"10385":16787601,"10386":16787602,"10387":16787603,"10388":16787604,"10389":16787605,"10390":16787606,"10391":16787607,"10392":16787608,"10393":16787609,"10394":16787610,"10395":16787611,"10396":16787612,"10397":16787613,"10398":16787614,"10399":16787615,"10400":16787616,"10401":16787617,"10402":16787618,"10403":16787619,"10404":16787620,"10405":16787621,"10406":16787622,"10407":16787623,"10408":16787624,"10409":16787625,"10410":16787626,"10411":16787627,"10412":16787628,"10413":16787629,"10414":16787630,"10415":16787631,"10416":16787632,"10417":16787633,"10418":16787634,"10419":16787635,"10420":16787636,"10421":16787637,"10422":16787638,"10423":16787639,"10424":16787640,"10425":16787641,"10426":16787642,"10427":16787643,"10428":16787644,"10429":16787645,"10430":16787646,"10431":16787647,"10432":16787648,"10433":16787649,"10434":16787650,"10435":16787651,"10436":16787652,"10437":16787653,"10438":16787654,"10439":16787655,"10440":16787656,"10441":16787657,"10442":16787658,"10443":16787659,"10444":16787660,"10445":16787661,"10446":16787662,"10447":16787663,"10448":16787664,"10449":16787665,"10450":16787666,"10451":16787667,"10452":16787668,"10453":16787669,"10454":16787670,"10455":16787671,"10456":16787672,"10457":16787673,"10458":16787674,"10459":16787675,"10460":16787676,"10461":16787677,"10462":16787678,"10463":16787679,"10464":16787680,"10465":16787681,"10466":16787682,"10467":16787683,"10468":16787684,"10469":16787685,"10470":16787686,"10471":16787687,"10472":16787688,"10473":16787689,"10474":16787690,"10475":16787691,"10476":16787692,"10477":16787693,"10478":16787694,"10479":16787695,"10480":16787696,"10481":16787697,"10482":16787698,"10483":16787699,"10484":16787700,"10485":16787701,"10486":16787702,"10487":16787703,"10488":16787704,"10489":16787705,"10490":16787706,"10491":16787707,"10492":16787708,"10493":16787709,"10494":16787710,"10495":16787711,"12289":1188,"12290":1185,"12300":1186,"12301":1187,"12443":1246,"12444":1247,"12449":1191,"12450":1201,"12451":1192,"12452":1202,"12453":1193,"12454":1203,"12455":1194,"12456":1204,"12457":1195,"12458":1205,"12459":1206,"12461":1207,"12463":1208,"12465":1209,"12467":1210,"12469":1211,"12471":1212,"12473":1213,"12475":1214,"12477":1215,"12479":1216,"12481":1217,"12483":1199,"12484":1218,"12486":1219,"12488":1220,"12490":1221,"12491":1222,"12492":1223,"12493":1224,"12494":1225,"12495":1226,"12498":1227,"12501":1228,"12504":1229,"12507":1230,"12510":1231,"12511":1232,"12512":1233,"12513":1234,"12514":1235,"12515":1196,"12516":1236,"12517":1197,"12518":1237,"12519":1198,"12520":1238,"12521":1239,"12522":1240,"12523":1241,"12524":1242,"12525":1243,"12527":1244,"12530":1190,"12531":1245,"12539":1189,"12540":1200}; function lookup(k) { return k ? {keysym: k, keyname: keynames ? keynames[k] : k} : undefined; } return { fromUnicode : function(u) { return lookup(codepoints[u]); }, lookup : lookup }; })(); ================================================ FILE: app/static/novnc/logo.js ================================================ noVNC_logo = {"width": 640, "height": 435, "data": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGzCAYAAAC/y6a9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAStAAAErQBBHTWggAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAACAASURBVHic7N13fBvlwQfw3522ZMm2vPdIGCFkA4GyoYyGsCmjk+7dQksHL2/H2/dtC4W2tLTlfelu2VA2lEILFCgQIHEGJCQkdjzkLdmWZGvfvX8oOkmJEy/pNO73/Xz44DtLzz2RT7qfnnXC8uXLZUxDlqfdnUYQhIP+bjbPn+5xhypzrmUf6rGzOc5cjzVduXN9/nTPyfRrMt/jzOcY05U5n3L2f95s/34LPW4m/p6FbLp/73xe+5nKnWuZs/07ZOOcnusx5nucbJU727LneuxslDmdTBxn/2NmusyEuZS7kHMxG/XP5Gf3TOVmQzY+u/PhPMnkMcSsH5WIiIiI8goDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMAASERERaQwDIBEREZHGMADSrMmynOsqEBERUQboc10Bym+SJMHv92NiYgJ+vx+CIECv18NgMCj/N5lMcDgcua4qERERzRIDIE0rEfp8Ph8kSVL2y7KMcDiMcDic9niPx4O6ujqYTCa1q1qU/H4/fD4fBEFQ9iV+NplMKC0tTfsdERHRXDAA0gFcLhcmJibS9pkrAJ1ZgBxD/D9JhhQBwt747wOBALq6uuB0OlFZWQlR5OiCuZJlGV6vF263+4CAvT+3242KigoGQSIimhcGQErT19cHr9erbFuqBSy6SETN8QKmyxnurTJ23iNhalCGLMtwu93wer2oq6uDzWZTseaFS5IkjI+Pw+PxIBqNHvB7vQWwVArwu2TI+xpjI5EIBgcH4Xa74XQ6UVZWxiBIRESzJixfvnzakf2zGfB/qAvObCcM7P+42VzE5jIZ4WCPne3Fcq4TH/Yvdz4TJ7L9mkz3HFmW0d/fr4Q/UxnQdoGIhlNECLoZyokBPc9K6HpMQjSQrHN9fT1KS0szUtf9nzefsDOf42bi7zmT3t5eTE5OKtuliwWULRbgaBVgbwWs1QIgABE/MNIhYXijDM/2eAtsgtlsRktLS8ZD4HT/3kwcYz7n+KGefzAzlZuJv2e23p/ZKne2Zc/12NkoczrZOMez9eVpLuUu5FzMRv2nK1Ot90smZOOzOx/Ok0wegwEwg8eartxCCID7h7+K5QJWfEEH0Ti38sJe4J0/xzC8MVmXhoaGA0IgA2DS0NAQxsbG9h0MWHypiNbzZu4+j4WAgX9L2HmXpLQKOhwO1NfXZ7R+DIALP8Z8j8MAOD0GwIUdZyFl5nOImuk4+Vz3XAVAdgETxsbGlPCntwBHXT338AcARgew7As6bP9dDAP/jr/ZXC4XAEzbEqh14+PjSvjTGYGln9ahes3sPgh0JqDxDBE6k4C3fxcDZMDr9cJisaC8vDyb1Z6TcDiMQCCAQCCAYDDIpYRySKfTQa/XQ6/Xo7S0lBO2iDSOAZDSJnwcdrkI0wLygyAAR31CB0GU0P9SvGnK5XJBlmWUlZUttKpFY2pqCkNDQwDi3e0rvqKDo3Xu3wLrThQQDYrYeWf8tR4eHobZbIbFYslofefC6/XC6/UiEAggFovlrB50cB6PByUlJXA6nbBarbmuDhHlAAOgxoXDYQSDQQBA+RECGk5d+OxdQQCO+lh87KDrhXgw6e/vhyzLedU6lSuSJCmhGABWf10HW/38uwCazhQRCwG7H5AgyzJcLhfa2tqg080weDPDZFnG0NAQxsfHD/idIALWOgGiulWiBBmYGpERCyZ3+f1++P1+mM1mVFRUwG63565+RKQ6BkCNS7T+CSKw5GMikKmhCAKw5CMiBBHoey4eAgcGBgBA8y2BU1NTSstY6WJhQeEvoXWdCPdbMsZ2yIhGo/D7/ap2u0ejUbhcLgQCAWWfrUFAxVECyo8SUH6EAH3uGiUJ8cla47tluLfKcG+T4euNfwEJBoNwuVwoLy9HTU1NjmtJRGphANS4RAC01gqw1mR4IKoAHPnheEtg77PJEChJEpxOZ2aPVUCmpqaUn+tPzNxrXrFUwNiO+EU9EAioFgCnpqbQ39+vLGFjbxGw4ss6mLX7J85Lgi7eyl9+hIDF7wdC48DuB5PjdcfGxmAymTT/BY1IKxgANSwQCCASia8lYsvs5NE0R3wg3hLY8/d4CEyMfdNqCEwEQNEA1ByXuQWzy49MhsnUlrhsCgaD6O3tVbqzyw4TsPJaHVv7CoCpDFi633jdoaEhGI1Gjgsk0gDerkHDUu82UdKQ3Wnoh18pomVd8nQbGhqC2+3O6jHzUSwWU8ZcVq0SoM/gddbRJkBnjv8cCoVUmYDhdruV8FdxtIBV1zH8FZR943XrT46/NxNjSGe6Ew0RFT4GQA1LDQhGFXoLD3u/iLb1yVNueHgYo6Oj2T9wHkltmXMuzWzoFkSg/PBkmYmgmS2hUAg+nw8AULVSwIqv6KCbx/JBlGP7hcBYLIa+vr4cV4qIso0BkABg2tu8ZcOiS0W0X5g87UZGRjQVAlNDmd6U+Rfd3qJeN3Dq323RJSJEDigpXAKw5GpRab0Nh8MIhUK5rRMRZRUDIKmu/SIRiy5JD4EjIyM5rFGOZCF0p962L5uLLqe2/lmqBJQ08T7EhU4Q01ulU29PSETFhwGQcqLtfBGLL0uefqOjoxgeHs5hjWguPB6P8vNs715C+a9yRfJvmTpbnYiKDwMg5UzreSIOuyJ5CrrdbobAApHaPVi1mgGwWFQcnVwLVK2Z5ESUGwyAlFMt54o4/Kr0EJhYJobyV2L5IKM9vpg1FQdTGWBvjv89U2esE1HxYQCknGs+W8QRH0qeih6PhyEwj8myrMwgN1cJqk0gInUkAiCQ/ZnkRJQ7DICUF5rOFHHkR5LdTx6PB4ODg7mtFE1LkiTlZ4a/4pM6mzv1b01ExYUBkPJG4+killydDIFjY2PK/YOJSB2iIflzNmeSE1FuMQBSXmk4RcRRHxeVlqXx8XGGQCIVMQASaQMDIOWd+pNEHPVJHYR9Z+f4+Dj6+/tzWykijUjtAmYAJCpeDICUl+reI2Dpp5MhcGJigiGQSAVsASTSBgZAylu1awUc/dlkCPR6vXC5XLwoEWURAyCRNjAAUl6rOVbAss/rlFuc+Xw+9Pf388JElCXsAibSBgZAynvVawQs/4JOuTD5fD62BBJlCZeBIdIGBkAqCFWrBCz/YnoI7OvrYwgkyjDBkFzcke8vouLFAEgFo3KFgBVf1iljlPx+P0MgUYaxC5hIG/QzP4Qof1QsE7DyKzps/kUMUjgeAnt7e9HU1ASBt6UoCtEA8MLno7muRkFoO1/Eoksy+z2ek0CItIEtgFRwnEsFrLxGB50xvj05OYne3l6OVyLNkbKQk9kCSKQNDIBUkJxLBKz8qg46U3ybIZC0SIpkvky2ABJpA7uAqWCVHyFg1dd06PhpDLEgMDU1pXQHiyK/2xQDQRDQ0tKS62rklXA4rCyKzhZAIpovBkAqaGWHCVi9LwRGA/EQ2NPTg+bmZobAImE2mw/YN9tgMtO40EwEnNmMPZ3PcQ5Wbup+KZL5gMYWQCJt4BWSCl7pYgGrr9NBb41vBwIB9PT0sDuYilJaAMxyCyDfQ0TFiwGQioKjXcDqr+tgsMW3A4EAuru7EYvFclsxogxLbwHMfPlsASTSBgZAKhqOVgGrv6GDoSS+HQwG0dPTwxBIRSX7LYBcCJpICxgAKWv8fTJklXuQ7M0C1nxDB6M9vs0QSMUmNQDKbAEkonliAKSs8eyQsfVXMcgqZ6+SJgFrvqmD0RHfDgaD7A6mopH1FkAGQCJNYACkrBrZJGPrL2NZuVAdiq1hXwgsjW+HQiH09PQgGuUdJqiwpc5uz8oYQC4DQ6QJDICUdSObZWy9LQchsF7AMd/SwVQW32YIpGKTjQAo6ACkrEDDEEhUnBgASRWjW2Vs+XksKxesQ7HWClhzvQ6m8vh2OBxmCKSCl2gFzNaXKrYCEhU/BkBSjfstGZtvjSEWVve41moBx1yvg7kivh0Oh9Hd3Y1IROU0SpQhiXGAUjQ74YzjAImKHwMgqcqzXcbmn8UQC6l7XEuVgGOu18NSFb9wRiIR9PT0MARSQVICYJZOXy4GTVT8GABJFTqdTvl57B05fv9elUOguQJY8y0dLNUMgVTYsh4A2QJIVPQYAEkVDocD1dXVyvb4Lhmbbonfv1dNZidwzLd0sNYkQ2B3dzfCYZX7pYkWINkFnJ3yuRg0UfFjACTVVFZWpoXAid0yOnIQAk3l8ZZAa238IheNRtHT08MQSAUj6wGQLYBERY8BkFR1QAjslLHp5hgik+rWw1QGHHO9DrZ6hkAqPMpi0DKystA6ZwETFT8GQFJdRUUFampqlG1vV25CoNEBrPmmDiUNyRDY3d2NUEjlwYlEc5R2NxDeDo6I5oEBkHLC6XSitrZW2fZ1y9h0UwwRv7r1MDri3cH2pvgFNRaLoaenhyGQ8lra3UCycTs4tgASFT0GQMqZ8vLy9BDYK2PjTTGEverWw1ACrP6mDvaW9BAYDAbVrQjRLGW7BVBIaQHkMjBExYkBkHKqvLwcdXV1yra/L0ch0Aas/roOjtZkCOzt7WUIpLyUFgCzsBi0jl3AREWPAZByrqysLC0ETvbL2HhjDKFxdethsAGrv6FDaXt6S2AgoPI0ZaIZZL0FkF3AREWPAZDyQllZGerr65XtyYF9IXBM3XroLcCq63QoXcwQSPkr65NAGACJih4DIOWN0tLStBA4NSTjzRtjCHrUrYfeAqy+Toeyw/ettSZJ6OnpwdTUlLoVITqI9C7gzJcvGrgQNFGxYwCkvFJaWoqGhgblAhcYjrcEBt3q1kNnAlZ9VYfyI5MhsLe3lyGQ8kL2A2DyZwZAouLEAEh5x+FwoL6+PhkCR2S8+aMoAiPqXoh0JmDltTo4j0qGwL6+PoZAyjl2ARPRQjEAUl5yOBxpLYFBN/Dmj2KYGlY5BBqBldfoUHF0ekvg5KTKq1YTpVAzAHIZGKLixABIectut6eFwNAYsPFHMUwNqhsCRQOw4is6VC6P10OWZfT19TEEUs5kfSFodgETFT0GQMprdrsdjY2NyRA4Drx5YwyT/SqHQD2w/Es6VK1MD4F+v8q3LiGCCmMA2QVMVPQYACnvlZSUoKmpSbnohSeAjTfFMOnKQQj8og5Vq5Mh0OVyMQSS6tK7gDP/PmALIFHxYwCkgmCz2dJaAsPeeAj096p7cRJ0wPIv6FB9THoI9Pl8qtaDtI2TQIhooRgAqWDYbDY0NTUp45/CPmDjj2Pw9agcAkVg2ed0qDkuGQL7+/sZAkk1qQFQ5jqARDQPDIBUUKxWKxobG5UQGPEDm34cg3ev+iHw6M/oUHtCekug16vyTYxJkzgGkIgWigGQCo7Vak1rCYxMAptujsHbqX4IXPopHepOTF6M+/v7GQIp67LeBcwxgERFjwGQCpLVakVzc7MSAqNTwKZbYpjYrXIIFICjPqFD/cnJt1J/fz8mJiZUrQdpS9oyMBwDSETzwABIBctisaSHwACw6ScxjL+bgxD4MRENpyXfTgMDAxgfH1e1HqQd2e4CFlJaALkQNFFxYgCkgmaxWNDS0gKdTgcAiAWBjp/EMLZT5VYLAVjyERGNZyTfUoODgwyBlBWcBUxEC8UASAXPbDajubk5GQJDwOafxjC2Q/0QeOSHRTSdlR4Cx8bG1K0HFT2OASSihWIApKJwQAgMAx23xuB5W/2L1xEfENF8TvKtNTQ0xBBIGZXeBcyFoIlo7hgAqWiYzWa0tLRAr4/3X0lhYPPPY3BvU/8CdviVIlrWpYdAj8ejej2oOHEZGCJaKAZAKiomkwnNzc3JEBgBtvwihtEt6l/EDnu/iLb1ybfY8PAwl4ihjMj+GEAuBE1U7BgAqeiYTKb0lsAosPWXMYx0qH8hW3SpiPYLk2+zcDiseh2o+GS9BZBdwERFjwGQipLRaDwwBP4qhuGN6l/M2i8SsegSvtUoc9ScBMJlYIiKE69KVLQSIdBgiF/N5Biw7dcxDL2hfghsO1/E4sv4dqPMSFsImmMAiWgeeEWionZACJSAt/43hsEN6l/UWs8TcdgVfMvRwqW2AMpZXgcQYAgkKka8GlHRMxgMB4TAt++IYeAV9S9qLeeKOPwqvu1o4RIhMBstgBAAQZfcZAAkKj76mR9CVPgMBgOam5vR09ODSCQCWQK2/zYGWRJRf5K6gaz5bDHt4ko0H4IgQJblrIwBBOKtgLFY/GcGQKLiw6YI0oxES6DRaAQAyDKw/fcSXC+qP8i96UwRVauEmR9IdBDJFsDshDPOBCYqbgyApCl6vR7Nzc1KCIQM7PijhL7n1Q+BqRdYorlSAmC2WgAZAImKGgMgaU4iBJpMpvgOGXjnLxJ6/8nlLqhwZHUMILgYNFGxYwAkTZouBO68U0LPMwyBVBjUbAHkWoBExYcBkDRLp9Olh0AAu+6R0P00L3aU/xIBUJbi/2Uau4CJihsDIGlaIgSazWZl37v3Sdj7JEMg5bes3w6Oi0ETFTUGQNI8nU6HpqamtBC4+0EJXY8zBFL+SrsbSJYXg2YAJCo+DIBEmD4E7nlIQucjDIGUn9S8HzADIFHxYQAk2ifRHWyxWJR9nY9K2PNXhkDKP+ldwJkPaAyARMWNAZAohSiKaGpqSguBXU9IePcBhkDKL2n3A+YYQCKaIwZAov0kQqDValX2dT8lYde9DIGUP7LeBZwSALkMDFHxYQAkmoYoimhsbEwLgT1/l7Dzbl4IKT9kOwAKBi4ETVTMGACJDkIURTQ3N8Nmsyn7ep+V8M5fJIDXQ8oxLgNDRAvBAEh0CIIgoKmpKS0E9j0nYcefGQIpt7IeADkJhKioMQASzSARAktKSpR9rhckbP+DBF4XKVe4DiARLQQDINEsCIKAxsbGtBDY/5KE7b+LMQRSTnAdQCJaCP3MDyEiIH7BbWhoQH9/P3w+HwBg4N8yZCmGpZ/UQeDXqayIRA5MN7MNJKkhaTqZCDYzHWO+x5mp3NSZuRwDSERzxQBINAeCIKC+vj4tBA6+KkOOxXD0ZxgCM02WZezZsyfX1ch78YWgZw6ic8EWQKLixssV0RwlQqDD4VD2Db0uY9vtMchcJYZygF3ARDRXbAEkmodECAQAr9cLABh+U8bWX8Ww/PM6CLpc1q6wiQag/SJ+N50Le0tmW/8ALgRNVOwYAIkWoL6+HoIgYGJiAgAwsknG1l/GsOwLurQLKM2eqAfaL2QAzDVRz4WgiYoZP2WJFqiurg6lpaXK9shmGVtvi2VlYD6RWtgFTFTcGACJMqCurg5lZWXK9uhWGVt+HsvK2CwiNTAAEhU3BkCiDKmtrU0Lge63ZGy+NYZYOIeVIponLgNDVNwYAIkyqLa2FuXl5cq2Z7uMzT+LIRbKYaWI5kFgACQqagyAGpZ6K6mgJ/Ply7Hkz7NZLLdY1NTUwOl0Kttj78jo+Kk6ITD1NSdaCHYBExU3BkANs1gsys+eHZn/gA+MJH82m80ZLz+fVVdXp4XA8V0yNt0SQzSQ3eNODSf/jloK3ZR5qQGQy8AQFR8GQA0zmUzQ6eIL1nm75Iy2UElRYGhD8qJhtVozV3iBqK6uRkVFhbI9sVtGR5ZD4NRA8meDwXDwBxLNgGMAiYobA6DGJVoB5Rgw/m7mPuRHOmREJuM/GwwGGI3GjJVdSKqqqtJDYKeMTT+OKa9NJskyMDUY/xsKgoCSkpLMH4Q0gwGQqLgxAGpctrqB+19Otv7ZbLaMlVuIqqqqUFlZqWx798rYdHPmQ2Dfc5Iy49hmsymtu0TzIRq4EDRRMWMA1LjUrtnBVyWExhZeZmgM8LyVvGBosft3f5WVlaiqqlK2fd0yNt0UQ8SfmfKDbmD3A8nQnbowdaalTh4KjTEYFK2UP23q35yIigPf1RpnsViUCRqhMWDjj2MIe+dfXiwE7PhjDPK+LCKKIrsi96moqEgPgb0yNt64sNc7YfsfkrOMs/2aC4KgnDNBT/rEEyoenneSf1e9nvc1JCo2DIAaJwgCGhsble7CqcH4bNX5dE+GxoA3fxjD6NbkhaOxsZEXjxQVFRWorq5Wtv0uGRtvWlgI7H9Jguft5GvucDiyPgM4dejAWBZmkFPujWxKtijzPUxUfBgACQaDAfX19cq2v3ffunXB2Zfh65bx+vej8PUkw0BNTQ1b/6bhdDrTQuBkv4wN34ti8FU5rdttJrIMDLwqY9c9yQu10WhMG2+YLdleQohyS4oA7m3Jv6tWJ3ERFTNdTU3N9+b75Gy0Mqi1dlm2jlOor4nRaIQoipicjDf9hcaAgX9LCIzE1wMzOwUI+31dkCVg0iVj6HUZb90hpbUalpWVobq6uqBeZzWPY7FYoNPplNc7FgSGN8pwvy3D3iTAVH7o4450yNj2KwmuFyRI0fg+o9GI5ubmrLfWCIIAnU4Hjye+enjEB7S8j98li8noNhkD/07OKK+vr59xHGAhvyf5OaVOmdksV43jFPJrMt0x2K5PisrKSgQCAfh8PgBAaDw+s7TvOUBvBapWCCg9TMDUYHzdQF+3PO19bq1WK2pra1WufeEpLy+HKIoYGhpSFtqd2C3j9f+Oof5EETVrBYg6QEj5L+wFuh6TMLEnvdVNrfCXoNfrYTAYEIlEEPbGZ33Xn8QQWCxS1/AsLS1lFzBRERKWL18+bf/NbKb9Hyq1znbZgP0fN5skPJclCQ722Nkm7rkuf7B/ufNZPiHbr8lMx/H5fBgZGUEwOIc+YMS7kp1OJ8rKypTWgunqPt8lJVKfN59vTPM5bib+njOJRqMYHh6G1zu/gYDZDH/T/XsTr4nb7cbISPx2L4IILPucDtXH8O4jhW7PwxK6HosHQEEQ0N7ePu2i4vP5nJrJQq878z1mPrTsLOSzRa3Wrkx8/uWqBTCf684WQMobdrsddrsdPp8Po6OjCAQOfesKk8mEiooKVSYfFCO9Xo/6+nqUlpZicHAQkUhkVs8zGo1wOBwoLy/PyZp/FRUVCAaD8Pl8kCXgrf+LYYVRh4rlPAcK1a57JPQ8k976xzvKEBUntgBm8FjTlVuILYD78/v9CAQCkGVZeU7i/zab7ZATPdgCODeyLMPj8SAYDCISiSAajSIajSq/NxgMsNvtcDgcqtxf+VAtgED8HrF79+5FOBwfCyAagVXX6lB+JENgIZFl4J0/SXD9Kxn+DtX6F38OWwBnwhbA2ZWbDWwBnPkYDIAZPNZ05RZDAFzIMRgAMyMajSIWi8FkMql63JkCIACEw2Hs3btXGcco6gHnUgHVawRUrhRhtKtSVZqHoBvw7JAwtEGGO2Xx9kSr9KEWcWcAnBkD4OzKzQYGwJmPwS5gogKg1+vzdiC+0WhEXV0dXC4XAECKAqNbZIxukSEIEsoOF1C1SoClSgDYMJhz0SlgfJcMzw4ZgZEDL4oWiwUNDQ15e74RUWbwHU5EC2a329He3g63242JiQllvywDYztljO3kWoGFoLy8PKvLNxFR/mAAJKKMSLQEVlRUHBAEKX+JogiLxYLS0lI4HI5cV4eIVMIASEQZlRoEJyYmEA6HD5jMQrkjCAIsFovyn9rjSokoPzAAElFWGI1GVFVVTfu7hU4gmO2A7mxMbJrrMeZ7nGyVO9uyiai4cel+IiIiIo1hACQiIiLSGAZAIiIiIo1hACQiIiLSGAZAIiIiIo1hACQiIiLSGAZAIiIiIo1hACQiIiLSGAZAIiIiIo1hACQiIiLSGAZAIiIiIo3hvYBp3iRJQigUUu4rmnp/UaPRyPuN0rQkSYLX64XP50MkEoFer1f+MxgM0Ov1sNlsEEV+PyUiyhYGQJqzWCwGj8eDsbExxGKxaR9jMBhQUVGB8vJyBsEFkGUZExMTymudGrYFQYAoiigvL4fD4chxTQ9NkiT4/X54vV5MTk5ClmXld+Fw+IDH6/V61NTUwG63q1nNopUI3YlzKPU8EkURdru9oAJ3NBpFIBBAIBBAJBJJO5/yyVw++xbyb8jlZ6zZbIbVaoXFYuFnfYERli9fPu1ZN5uT8VB/7NmezPs/bjYn0FzeKAd77GxP1Lm+Kfcvdz5v6my/JvM9Tjgchtvtxvj4+KyPZzAYUFlZibKyMqX8+X7QpT5vPh808zluJv6e8yFJEsbHx+HxeBCNRmd8vNFoREVFBRwOR0Y/hKf79861/HA4jJ6engP+HSUlOsSiMiJRGdHo9K9rSUkJampqYDAYZqzXdGaqayb+ntl6f2ai3FgshrGxMYyPjx/0yxoA6HQ6lJeXw+l0zjoIzudzaq5lppqYmMDU1JQS+ii/CIIAi8UCm80Gm80Gi8Vy0MepVZ9Uar3X86ncmY7BAJjBY01Xnw4y4QAAIABJREFUbrEEwOHhYYyOjqbtq6o0YsXyEqxaYcfKFXZUVBjwzD88ePzJEby7eyrtsXq9HnV1dbDb7QyAMxgdHZ22dbWkRIeVy+1YtdKOvr4QnvmnG5OT6Y9JBO7S0tKM1GWhATAUCqG3tzct/J1+mhPfu6Edq1amt+5FozLe3T2F//jObvzzeY+yXxRFVFZWwul0HrJe09FqAIxEIhgbG8PExAQkSTrg9xaLDtGohEgk/fmJFmWn0wmdTjenY2crAMZiMfT392NqamqaZwBmU+G0XBabmCQfcA4lVFVVobKy8oD9DIDqlTvTMRgAM3is6cothgA4Pj6O/v5+Zfvs91bg1psPR2Oj+aBl73p3Co8/OYI77xnAns4AgPjFpbW1FSaTac513b++xRoAR0ZG4Ha7le2zzqzA+y+pxupVDixeZIEoJusTCkt44V9jePzJEfzt726MjCa7Uqurq9MC03wtJACGQiH09PQoQfbYYxz47g3tOOWk8hmf+9TTo7j+27vRtTeg7HM4HKivrz9ovaajxQAYDAbR09Oj/M5gELDsaDvWrIp/eVi10oEjD7fC74/h6WfcePypETz7Tw8CgeSXCVEU0djYCKvVOutjZyMABoNBuFyutC8QTU1mnHZyOU47pRynnFyOmmrjgo9L8+f1RvHI4yO48+4BvPb6RNrvEu/Z1HODAVC9cmc6BgNgBo81XbmFHgCnpqbQ3d2tPPYzn2zEjf+zGDrd7F4/tyeC913QgXd2TgKIt1C1tbXN2LowU32LMQBOTExgYGBA2f7yF5rx/e+0p4W+g4nFZHzmiztw/4NDAOL1bmpqOuQFfDbmGwBTw58gAL/59VG4/LKaOR07HJbwy9t78T83dildxHa7XQmBs6G1ABiNRtHd3a0EptoaI+79yzKsXnXoMaKBoITnnvfg+m/vxt7ueOjW6/VobW2FXj/9UPFsB8CJiQkMDQ0p+654fw3+4xttaGudvmuRcm/3nincde8g7rpnAIND8S+kZrMZTU1NynnEAKheuTMdgwEwg8eartxCDoCRSASdnZ2IxWLQ6QTc+D+L8ZlPNs75OINDYZyzfpPSmmOz2dDc3Lyg+hZbAAwEAkqrjV4v4Kc/PhxXf3j2QQeId6F++ONv4cm/xbvqdTod2traDnoBn435BEBZlrFnzx4lhFz94Xr84qdHzLsOjz0xgo99+m2lq8lut6Ourm5W54CWAqAsy+jp6UEwGAQArFhWgnvvXI6G+tm3uPf0BnHO+k1w9YcAABaLBc3NzdPWJZsB0OPxYGRkRNn/6U804OYfHQ7OMSgMA4MhnHHORuU80uv1aGlpUXV1CAbAmY/BwRM0LUmS0rrv7vnzsnmFPyDeCvHEQyvR2BC/EE1OTmJ4eDhjdS10kUgELpcLsizD4dDjr/eumHP4AwC9XsAff7sUp58a72KNxWJKuWqamppSwl9drQn/871FCyrvgvVV+Mvvj4bRGP+48vl86O/vz9uZn7kyODiohL/zz6vC359YPafwBwDNTWY89teVqKqMd6sGAgHV36uSJKUNg7jumhbcciPDXyGpqzXhvruWw2aL9/REo9EDxpBT7jEA0rT8fj9Cofi3t+OPK8W5Z1csqLymfReWxIBtt9vNmXz7DA8PK4HpG19tUQLcfJiMIu758zIce0y8yy8QCKj+wTsxkRwH9LObD4fDsfDVptadW4m7/ng0TPtCoN/vz0m4zVdjY2Pwer0AgHPPrsCdfzgaVuvch1kAwGGLrXjkwRUoK9MrZaf+TbNtbGxMmbjyX99ehO/c0K7asSlzlh9dgj/csVQZwuL1evmZn2cYAGlak5OTys8fuLI2I2UuXmTF8WuTs1MPNqtPaxKvtV4v4MrLF/5aW606XP/1NmXb7/cvuMzZSqz3BwAXX1CNdeceOAtwvs45qwL3/GWZ8iVicnKSIXCfRPgDgE9+rGHBrWXLlpbgFz89Utn2eDyHeHTmSJKEsbExAMDSJTZc++W5DxWh/HHu2RX40X8vBhDvglXrPKLZYQCkaSVCidkk4pILqzNW7skpM0ADgcAhHqkNwWBQae04+70VqK7KzIzG9xxfqnSZhkKhQ64Bl0l+v1/591xycebOm4T3nuHEfXcug8XMEJggSZLS9VtTbcSZpy989jcAnHlauTLZKxQKTbucTKalLn+0fl1V1o9H2ffZTzUqvQAzrUdJ6mIApANEo1Hl7gzr11VmpAsv4dSTypSfGQDTW0E/dFVdxsq1WnU4dk1y5mciIGRbakvUkYfbsnKM009z4v67l8NiiXdxTk5Ooq+vT5WAko9S30eXX1Yz6xn6M7Hb9WlrNWb7/SrLstL6BwDrz2MALAaCAKxcHj+PJEliK2AeYQCkA6R2/1568dyW7pjJ6lUOZWBwauuXViVe68oKA845a2HjLPd36inJ1la1utsTQdNoFLGoPXvLdZx6cjn+eu9yZZzb1NQUXC6XJs+n1L/tB67M3JcIAGlrNmY7AEYiEaV1qKnJjBXLSrJ6PFLP6lXJLxIc+pM/GADpAKlv0LnOIpyJXi/g+OOS4wC13Aooy7Ly719ypA0GQ2anOZ52ivrd7YkAVl1thF6f3WmbJ72nDA/fvwIlJckQqMWWwMT7tbHRjKVLMtvqqmaLfeoEgfXvy9zYUcq9/e/6Q/mBAZAOkDpGQ5eFi3h5WbJLeTb3uS1WsVhMCSuJ8XqZlLpgbmJGd7YlxuLNYu3qjDhhbSkeuX8F7Pb4ORUIBDQVAmVZVlpdyzI4VCPhmJRhBGoGwCOyNHyAcmNNykLkaq0DSDNjACTKA9n4TEwts5gnSRx3bCkee3AFSkuTIbC3t1czITBBzMKnuTHlPrvZfj219vfSktSPNwbA/MEASEQFb81qBx7/60pl7bpgMIje3l7OOCTKA08+nVyLlAEwfzAAElFRWLnCjscfWgWn0wCAIZAoXzz+5MjMDyLVMQASUdFYsawETzy8EhUpITD1loZEpC6PJ4JXXkveScZm4/jOfMEASERF5eijSvDkI6uU+9mGQiGGQKIc+dszbsRi8THIBoMBZWVlMzyD1MIASERF56glNjz16CrUVKeHQC3POidS2+BQGD/7RbeyXVFRwTGAeYQBkIiK0hGHW/HUo6tQVxtfy5IhkEg9Pb1BnLN+E3a9G1+nUq/Xs/UvzzAAElHROmxxPAQmFjQPh8MMgURZtuvdKZyzfhO69ibXjmTrX/5hACSiorao3YK/PbYKjY1mAPEQ2N3dnbbwMBFlxqsbJnDu+Zvg6k8uPm+1Wtn6l4cyv3Q8EVGeaW2x4OnHVmHdhR3o6Q0iEomgp6cHTU1NMBgMua4eUcHq7Q3ihZfG8MKLY3jxpTEMDYfTfu90OlFTk9l7ylNmMAASkSY0N5njIfCizdjbHUAkEkFvby9DoEbcc98gfvLz7pkfSLM2NRVDn2v620yKooi6ujo4HI5pf0+5xwBIRJrR2GjG3x5bhfMu6kBnV0BpCWxubmYILHLjE1FlQgJll9FoRGNjI0wmU66rQofAMYBEpCkN9Sb87bFVWLzICgCIRqPo6elBOBye4ZlENB29Xg+73Y6amhq0traivb2d4a8AsAWQiDSnrjYeAtdf3IGdu6YQjUaV7mCj0Zjr6lGW2Ww2lJaWZv04c5n1KsuyKsdZSJn711EQBJjNZraeFygGQCLSpJpqI556dBXWX7wZO96ZZAjUEIPBoIxNk2U5a8uTFHsApMLGLmAi0qyqSiOefGQVjj6qBECyOzgUmn5gOxFRsWAAJCJNq6ww4ImHV2L50fEQGIvF0NvbyxBIREWNAZCINM/pNOCJh1dh5Qo7gGQIDAaDOa4ZEVF2MAASEQEoK9Pj8b+uxJrV8bFhsVgMfX19DIFEVJQYAImI9ikt1eOxB1fg2GOSIZAtgURUjBgAiYhS2O16PPrAShx/XHyZEEmS0Nvbi0AgMMMziYgKBwMgEdF+Skp0ePj+FTjxhPgN7CVJQl9fH0MgERUNBkAiomnYbDo8dN9ynHJSOYBkCJya4u3EiKjwMQASUcHo6VV3LJ7FosMD9yzH6acmQ6DL5WIIJKKCxwBIRAVj/cWb8e5udcOXxSzivruW48zTnQCSLYGTk5Oq1oOIKJMYAImoYAwOhrDuwvj9e9VkNom4985lOPu9FQDit8RyuVwMgURUsBgAiaigDA2Hse7CDux4R93wZTKKuPtPR2PduZUAkiHQ7/erWg8iokxgACSigjMyGsZ5F3Xgre3qhi+jUcRffn80zj+vCgBDIBEVLgZAyqnJyUlIkpTralABGnVHsP7izdiyTd3wZTAI+NNvl+Ki89NDoM/nU7UeREQLwQBIqjOakqfdxMQEOjs74fV6c1gjKlQeTwTnX9KBzVvUDV96vYDf37EUl11cDSAeAvv7+xkCiahgMACS6m695Qhc/402mPcFwUgkApfLhZ6eHoRCoRzXjgqFKMbPn/HxKM6/dDM2blL3S4ReL+A3tx+Fyy+rAZBsCeSXGSIqBAyApDqzScT1X2/Fm6+uxfp1lcr+yclJdHV1YWhoiN3CNKP6+nolBE5MRHHBZVvw+hsTqtZBpxNwx6+W4ANX1ir7+vv7MTGhbj2IiOaKAZByprnJjLv/tAwP378CixdZAcRbUTweD/bs2cOLKB2SxWJBU1MTdDodAMDni+Kiy7fg1Q3qnjeiKODXPz8SH/lgnbJvYGCA5y8R5TUGQMq5M0934rUXj8V/fXsRrNb4xTwajaK/vx/d3d0IBtW9+wMVDrPZnBYC/f4YLr58C15+ZVzVeoiigNt+diQ+9pF6Zd/AwADGx9WtBxHRbDEAUl4wGkVc++VmbHptrTKwHgCmpqbQ1dWFwcFBxGKxHNaQ8pXJZEoLgVNTMVx65Vb866UxVeshCPHxrZ/6eIOyb3BwkCGQiPISAyAdktpD8errTPj9HUvx5COrcNQSm7J/bGwMnZ2dvJjStBIhUK/XAwACgRgu/8BWPP+CR9V6CALwk5sOx2c/1ajsGxwcxNiYumGUiGgmDIB0gMRFFAB27MjNArcnn1iGl587Fjf94DA4HPH6xGIxDA4OYu/evQgEAjmpF+WvA0JgUMIVH9qGfzynbggEgB//8DB88XNNyvbw8DBDIBHlFQZAOoDValV+fvHl3LW46fUCPvfpRnRsWIsPXlkLQYjvDwaD2Lt3LwYGBtgtTGmMRmNaCAyGJFz14W14+hm36nX54fcX45ovNSvbw8PD8HjUD6NERNNhAKQDWCwW5ed/vZz7VouqSiNuv20J/vHUGqxYblf2j4+PY8+ePWxZoTT7h8BQWMKHPvYWnvzbqOp1+f53FuG6a1qU7ZGREYZAIsoLDIB0AIPBAIPBAADo7Q2iuyc/ZuEee4wD/3p2DW695Qg4nfH6JbqFu7q62C1MCqPRiObmZuU8DoclfOQTb+GxJ0ZUr8t3bmjHt65rVbZHRkbgdqvfIklElIoBkKaV1gqo8mzKQxFFAR//aD06XluLT1zdAFGM9wsnuoX7+/sRjUZzXEvKBwaDIS0ERiIyrv7U23jo0WHV6/If32zDDd9qU7ZHR0cxOqp+iyQRUQIDIE0rdRzgD27sQtfe/GpdKy834Gc3H45/PbsGxx1bquyfmJjAnj174PF4IMtyDmtI+WD/EBiNyvjEZ7bjwYeGVK/LN7/Wiu/e0K5su91uhkAiyhkGQJpWWVkZTCYTAGBgMITzL9kMV3/+3ad3xXI7nn1yNf73tiWorjICACRJwtDQELq6ujA5OZnjGlKuGQwGtLS0wGiMnx+xmIxPfX4H7r1/UPW6fO2aFvz3dxcp2263GyMj6ndLExExANK0RFFEU1OTcq/Vnt4gzr9kM0ZGwzmu2YEEAfjAlbXo2LAWn/9ME/T6eLdwKBRCT08PXC4XIpFIjmtJuaTX69Hc3JwWAj/7pXdw5z0DqtflK19sxo/+e7Gy7fF4GAKJSHUMgHRQRqMRDQ3Juxrs3jOFCy/dglF3foYpu12PG/9nMf79/LE45aRyZb/X60VnZyfcbje7hTVs/xAoSTK+8JV38Me/9Ktely98tgk3/+gwZdvj8WB4WP2xiUSkXQyAdEh2ux2VlZXK9lvb/Vhzwgb87o8uSFJ+hqklR9rwxMMr8YffLEVDfbwbW5IkjIyMsFtY4xIhMDG8QZaBr3xtJ373R5fqdfnMJxvx0x8frqxvOTY2xhBIRKphAKQZVVdXw+FwKNtjYxFc+/VdOPWsjXj9jYkc1uzQLr2oGhtfXYuvfqUFRmP8VA+Hw+jt7UVfXx+7hTVquhB47dd34Y7f9qlel09+rAE//8kRaSFwaEj9CSpEpD0MgDQrjY2NqK+vh06nU/Zt2erDWedtwue+tAPDI/k3NhAArFYdvvef7djw0nF47xlOZb/f70dnZydGR0fZLaxBOp0uLQQCwHXXv4tf/1+v6nW5+sP1+NXPj1SWNBofH8fgoPoTVIhIWxgAadZKS0uxaNEilJWVKftkGbjr3kGsPn4Dbr+jD9FofoapRe0WPHTfCtzz52VoaTYDAGRZxujoKDo7O+Hz+XJcQ1KbTqdDU1MTzGazsu9b/7kbv/hVj+p1+dBVdbj9F8kQODExgYEB9SeoEJF2MADSnOh0OtTV1aGtrS1tsWivN4pv3vAuTjrjDbz8Su7uHzyT895XiTdeWYvrv9EGizl++kciEbhcLvT29iIczs+WTMqO6ULgf35vD35ya7fqdbnqilr85tdLoNMxBBJR9jEA0ryYzWa0trairq5OuecqAGzfMYl1F3bg459+G/0D+bduIACYTSKu/3or3nhlLdavS05wmZycRFdXF0ZGRiBJUg5rSGpKLHmUGgL/6weduOkne1Wvy/svrcFv//coZSmjiYkJ9PerP0uZiIofAyAtSFlZGRYtWgSn05m2/8GHh7HmhA249bYehMP5Gaaam8y4+0/L8PD9K7B4UfzOJ7Isw+12o7OzE16vN8c1JLUkQmBqq/YPbuzCD2/qUr0ul15UjT/8ZikMhngI9Hq9cLlcHKtKRBnFAEgLJooiampq0N7ennYLucnJGL7z/T044dQ38NzznhzW8NDOPN2J1148Fv/17UWw2eKTXKLRKPr7+9Hd3Y1QKD9bMimzRFFEY2NjWgi88Za9+P4POlWvy4Xrq/Cn3x6thECfz4f+/n6GQCLKGAZAyhiTyYSWlhY0NDSkdQu/u3sKF12+BR+8+i309gZzWMODMxpFXPvlZmx8dS0uu7ha2T81NYWuri4MDQ2xW1gDEiEw9YvMLbd24zvf36N6Xdavq8SdfzhaWcLI5/OxJZCIMoYBkDLO4XBg0aJFqKiogJBY4AzA40+O4Jj3bMCNt+xFMJSfYaq+zoTf37EUTz26CkctsQGIdwt7PB7s2bMHExP5u+4hZYYoimhoaEgLgbfe1oPrv71b9bq875xK3PPno2HaFwL9fj9DIBFlBAMgZYUoiqiurkZ7eztsNpuyPxCU8MObunDcia/jqadHc1jDQzvpPWV4+bljcdMPDoPDEW/NjEajGBgYQHd3N4LB/GzJpMxItASmnru/+t9efP36d1Wvy1lnVuC+O5fBbEqGwL6+PoZAIloQBkDKqkS3cGNjIwwGg7J/b3cAV354Gy69cis6uwI5rOHB6fUCPvfpRnRsWIsPXlmr3K0hEAhg7969GBwcRCwWy20lKWsEQUBDQ0NaCPy/3/bhq9/YBbWz1xmnO3H/3cthscTHqE5OTqKvr4/DEoho3hgASRWJbuHKysq0buFn/+nGcSe9ju//oBOBQH6GqapKI26/bQn+8dQarFxhV/aPj4+js7MT4+P5u+4hLUwiBJaUlCj7fvsHF665bqfqIfC0U8rx4D3LYbUmQ6DLpf49jImoODAAkmpSu4VTL6jhsIRbbu3GmhM24OHHhnNYw0M79hgHXnhmDW695Qg4nfHWzFgshsHBQezduxeBQH62ZNLCCIKA+vr6tHP2D3/uxxeveQeSpG4KPPnEMjx033JltjrPOSKaLwZAUp3RaERTUxOamppgNBqV/X2uED76ibdx/iWb8c7OyRzW8OBEUcDHP1qPjtfW4hNXNyi37goGg+ju7sbAwAC7hYtQIgTa7ckW4L/cPYDPfVn9EPie48vwyAMrUFKim/nBREQHwQBIOVNSUoL29nZUVVVBFJOn4r9eGsN7TnsD//Gd3fD78zNMlZcb8LObD8e//nEM1h5bquyfmJjAnj17MDY2lsPaUTYIgoC6urq0EHjPfYP41Od3IBZTNwSuPbYUjz24UpmgREQ0VwyAlFOCIKCyshLt7e1pF9ZoVMYvb+/FqrWv4b4HhnJYw0NbsawEzzy5Gv/3yyWoroq3ZkqShKGhIXR1dWFqairHNaRMSrQEOhwOZd8Dfx3CJz+7HdGouiHwmDUOPPbgCpSWMgQS0dwxAFJeMBgMaGxsRHNzc1q38NBwGJ/6/Hacs34Ttr3tz2END04QgKuuqEXHhrX4wmeblPu4hkIh9PT0oL+/H9FoNMe1pEyqq6tLC4F/fWQYH/vU24hE1A2Bq1c58MRDK1Febpj5wUREKRgAKa/YbDa0t7ejuro6rVv41Q0TOOXMN3Hdt3ZhfDw/w5TdrseP/nsx/v38sTjlpHJlv9frRWdnJ9xuN9duKyJ1dXUoLU12/z/6xAg++sm3VA+BK5bb8cTDK1FRwRBIRLPHAEh5RxAEVFRUYNGiRWmtLLGYjDt+58Kqta/hT3cOqL4Mx2wtOdKGJx5eiT/+dika6k0A4t3CIyMj6OrqwuRkfk5wobmrra1FWVmZsv3EU6P44NXbEA6ruz7fsqUl+N3/LVX1mERU2BgAKW/p9Xo0NDSgpaUFJpNJ2e/2RPCla9/B6edsxMZN3hzW8NAuubAaG19di69d06LczzUcDqO3txculwuRSCTHNaRM2D8EPv2MG1d95C3Vb3dYyRZAIpoDBkDKe1arFe3t7aipqYFOl1z6YlOHF2ecuxFfvOYdjLrzM0xZrTp894Z2bHjpOJx1ZoWy3+fzoaenJ4c1o0yqra1FeXmy2//Zf7px5Ye3IRDknTqIKD8xAFLBKC8vR3t7e9q4K1kG/nzXAFYf/xru+J1L9eU4ZmtRuwV/vXc57v3LMrQ0mwGA4wGLTE1NTVoIfO55D6744Na8vcMNEWkbAyAVFJ1Oh7q6OrS2tsJsNiv7x8ejuO5bu3DKmW/i1Q0TOazhoa07txJvvLIW//HNNljMfPsVm5qaGjidTmX7hRfHcNlVWzE1xRBIRPmFVyAqSBaLBW1tbairq0vrFt72th/nrN+ET31+OwaHwjms4cGZTSK+dV0r3nhlLc4/ryrX1aEMq66uRkVFsrv/pX+P45IrtmJykiGQiPIHAyAVtLKyMixatCit6w0A7ntgCKuPfw23/bpX9WU5Zqu5yYy7/ng0Hrl/BQ5bbM11dSiDqqqq0kLgK6+N46L3b4HPl59LGBGR9jAAUsHT6XSora1FW1sbLBaLst/vj+GG7+7Ge057HS+8mL+3ZjvjdCdu+sFhua4GZVhVVRUqKyuV7Q1vTODC92+B18sQSES5xwBIRcNsNqO1tRX19fXQ65O3x9q5awoXXLoZH/3E2+hzhXJYQ9KaysrKtBD45kYvzr90c94uZk5E2sEASEWntLQUixYtgtPphCAIyv6HHxvGmhM24JZbuxFSeaFe0q79Q2DHZh/Ov6QDY2P5uXQREWkDAyAVJVEUUVNTg7a2NlityfF1gUAM3/9BJ9ae9Dqe+Yc7hzUkLamoqEBVVXLCz5Ztfqy/eDPcHoZAIsoNBkAqaiaTCS0tLWhoaEjrFu7sCuCyq7biig9tw97uQA5rSFrhdDpRXV2tbG9724/zLurAyGh+zlYnouKmn/khRIXP4XDAZrPB7XbD4/EoizD/7e+jeP4FD77yxWZ89ZoWrs1HWZWYrT48PAwA2L5jEuddtBmPP7QSNdXGXFZNU8bHxzE+Pp7rahQVURRhtVphtVphs9nS1mml/MSrHWmGKIqoqqpCW1sbbDabsj8YknDTT/bimPdswONPjuSwhqQF5eXlqKmpUbbf2TmJdRd2YGCQE5SocEmSBL/fj+HhYXR1dWHnzp3o7e3F1NRUrqtGB8EWQNIco9GIpqYm+Hw+DA8PIxKJj8Pq7Q3ig1e/hTNOd+LmHx7Gtfkoa8rKygAAQ0NDAIB3d09h3YUdeOLhVWioN+WyakVr8SILLru4euYH0pzJMhAKS9iyzY/e3iCAZCCcnJw84DaJlB8YAEmz7HY7SkpK4Ha74Xa7lW7h55734PhTXscXPtuEb36tFTabboaSiOaurKwMgiBgcHAQALCnM4D3XdCBpx5ZicZGdp9l2llnVuCsMytmfiDNmywDL78yjrvvHcAjj49gcjIGWZYxODiIUCiEmpqatJUZKHdEUWQXMGmbIAiorKxEe3s7SkpKlP2RiIxbb+vBmhM24MGHhnJYQypmpaWlqK2tVbb3dgdw7gUd6NnXikJUSAQBOPnEMtx+2xLs2X4i7vjVEmVs69jYGHp7exGL8ZaIuSTLMkRRhCAIDIBEAGAwGNDY2IjGxkYYjcnB+P0DIXz8M9ux7sIOvL1jMoc1pGJVWlqKuro6ZbunN4hzL+jg7HQqaFarDldeXov77lymTK6bnJxEd3d3jmumXbIsQ6fTKa2wDIBEKUpKStDW1oaqqiqIYvLt8fIr4zj5jDfwzRve5a28KOMcDkdaCOzrC+J9F3Sgs4shkArb6lUO/Ob2o5Do+Q0Gg/D5fLmtlEbp9fq0LngGQKL9CIKAiooKtLW1weFwKPujURm339GHVWs34K57B7FvyCBRRjgcDtTX1ysf0K7+EN53QQfe3c1ZlFTYLlhfhf/69iJle3R0NIe10R5BEKDTHTiWnQGQ6CAMBgMaGhrQ3NwMkyk5M3NkNIzPfWkH3rtuI7Zs5TdZyhy73Y7vreEdAAAQDUlEQVS6ujolBA4MhrDuwg7s3MUQSIXtmi814+IL4rOwA4EAl4dRiSiK04Y/gAGQaEY2mw1tbW2oqalJ6xZ+400vTj1rI665bic8vKUXZYjdbk9rCRwaDmPdhR3YzjGoVODOPy95T2y3m7fizCZBEOIzfcWDxzwGQKJZEAQBTqcT7e3tad3CkiTj93/qx6rjN+B3f3RBktgvTAtXUlKChoYGJQSOjIax/uIOvLXdn+OaEc3fyhV25Wefz4dwmLdBzIbZhD+AAZBoTvR6Perr69HS0pLWLTw2FsG1X9+FU8/aiNffmMhhDalYlJSUoLGxUQmBo+4I1l+8GVu2MQRSYVrUbkVJSbI7MhrlhLpMS4S/2ay3yABINA8Wi0XpFk4dX7Flqw9nnbcJn/vSDgyP8NstLYzNZksLgR5PBOdf0oHNWzj2lAqPIAArltlnfiDNS2Kyx2wX22YAJFqA8vJytLe3K7f2AuKr4d917yBWH78Bt9/Rh2g0N93CqbOU1Vp9P9HlMDYezUp3eEyDXeyJEJh4bcfHozj/0s3YuMmb9WNLMfVe79TuKjfH1BatZUcnF9znXUEy52AzfQ+FAZBogXQ6HWpra9Ha2gqzOXkLL683im/e8C5OOuMNvPzKuOr1GhtLXkT1enXu+pj49/t8UWzNcFel2xNBJBIPJHq9fsbxLcVk/xA4MRHFBZdtyfpwg+6e5B1Jsn2xTn3vvPzvsawei3JnF5c1yrhDzfQ95POyUBciTTKbzWhtbUVtbW3am3H7jkmsu7ADH//02+gfCKlWnyf/llxrK/XuJtlksViUn//1UmYv4vc9MKj8bLVaM1p2IbBarWkh0OeL4qLLt+DVDdkLgbveTV6ss/0lwmQyKSHztQ0TCIelrB6P1DcxEcVLLyc/F9gCuDCJVr/5fhlmACTKsLKyMrS3t6O8vDxt/4MPD2PNCRtw6209qlzcHki5h3HqhJVsymYAvPNubQdAIP7vbmpqUj7w/f4YLr58S9ZamFNba1LvlZ0NgiAorYCBoIQ3VejiJnX9/Vm30ooPMAAuxFzH+02HAZAoC3Q6HWpqatDa2poWiiYnY/jO9/fghFPfwHPPe7J2/O07JtPWjctFAHx1w0TGxj9u2epLWwJFqwEQiL/GqSFwaiqGS6/cmvHAHQpLuPf+ZOguLS3NaPnTST1/XnxZ/WETlF1PPDWi/Gy1WlX7XCo28xnvNx0GQKIsMpvNaGlpQV1dXVoX2ru7p3DR5VvwwavfQm9v8BAlzE9q658oimkX1mwSRVFpxZmcjOG+B4dmeMbs/OXuAeVng8EAg8GQkXILlcViQXNzsxICA4EYLv/AVjz/Qua+VNx4816lC9hoNKaN0cuW1PP0oUeG4ffHsn5MUkcgEMOzzyXPz6qqqhzWpnDNd7zftGVlpBQiOqTS0lK0t7fD6XSmNdk//uQIjnnPBtx4y14EQ5npFh51R9JabqqqqlSbBAIgbaHsL137Dp56emH3/XzjTS/uuT8ZJLPdFVkozGYzmpqalItBICjhig9twz+eW3gI3LLVh5//skfZVqP1D4i3CiXO1Xd2TuLyD25FIMixgIVuaiqGKz60DZOT8UBvtVphs9lyXKvCstDxftNhACRSiSiKqK6uRmtra1oXZiAo4Yc3deG4E19fcFjq2hvAe9+3Ea7++GQTs9l8wFjEbHM6nbDb42t9RaMyPvqJt/H8v+bXPfnQo8M476IO+HzxBWPNZjNbDlLsHwKDIQlXfXgbnn5m/rfZikRkfP7L76R136eG+mwSRTHtDigvvzKOD350GyeEFDCvN4oLL9uCF15MfgZUVlYe4hm0v0yM95uOrqam5nvzfXI2BnCqNSg0W8fha5L9MrNZrhrH0ev1KC0thclkQiAQgCTFL27jE1E8+PAw3tzkw7FrHCgvn1s356YOL9ZfvFkJfwDQ2NiY8da/2bwmJSUl8Pl8iMViiMVkPPr4CE4+sQyNDbPvRrzl1m589Ru7lCCi1+vR3Nw8p+4PNc6TXJ/jer0eNpsNPp8PsizHX+8nRhCNyjhmjQMGw+y/53u9UXzrP3fjmX8kA6TT6ZxVAMzU66DX66HT6TA5GR/D2tkVwDu7pnDh+VUQRU4aKCRuTwQXXLIZGzuSC5dbLBbU1NRk/djFcj3LZJfv/hgAC6DcQn5NCul1Vvs4JpNJWUA6GEyOA+zsCuD3f+pHICjhsMVWOOwzB7hn/uHGZR/Yhglv8tZKZWVlaQtUZ8psXhNBEGC1WuH1eiHLMqJRGQ89Oozu7gD0egGNjWbodQeWI0ky3t0dwA3f241f3t6bVl5zc/Ocl7PRQgAEkiHQ7/dDkiTEYjJefmUc994/iJpqI45acuhu80BQwq9u78VHPvk2XktZVsbpdKK6ujrj9Z2J2WxGNBpFKBT/MrNz1xSee8GDUFBCba1pVu8Jyp3BoTCeenoUn//yDrydMhnNYrGgsbExa4EmVTFczzLd5XvAcZcvXz7tND1Znnn23qFejNk8f7rHzeYFnm3Zh3rsbP+QcznWdOXO9fnTPSfTr8l8jzOfY0xX5nzK2f9583kjZqL+8637TMLhMIaGhpRWj1RLl9hw9lkVOPu9FVh7bCn0egG790zh9Te8eP3NCWx4fQI7dk6l3XmjpKQE9fX1C/7wmO7fO5fX3ufzweVyHbC/pESHs8+swPp1lRBEAR2bfejY7EXHFt+0A//r6+vTWqFm+3fIxjk912PM9zjzKTccDsPlciEcTr8N4fHHleK7/9mO+joT9DoBeoMAvV6AThTw8GPD+PFPujEwmL5G5Uzhbz6fUzNJLVOWZfT09KR9OYofB1i10oHz11XitFPKYTRxJFOuyXL8i+uLL43hxZfH0taPTCgrK0Ntba1qC7hn47NbrQA4l/v5Lui4DICZO9Z05TIAMgDOhd/vx9DQECKR6W+F5XDoYdALB71VVmL5mUyN2VpoAASAQCAAt9sNv3/udwaxWCyoqKg4YOIHA+DBy5VlGR6PB263e97/vtm0/GU7AAKAJEkYHx+Hx+NBLMYZwYVIEATU1tYqvRG56r0plACYqSVeZnVcBsDMHWu6chkAGQDnKnEB93q9ShfYbDgcDtTU1GT0wyMTATAhGAxidHR0VkGwpKQETqfzoOv9MQDOXG44HMbw8PC0rcoHYzab/7+9e1mO4gYDMKq+mAIvhuL9H9IuXCzMDDSbaCLL3fZc+q5zNoCTjG2STL78aknh+/fvF20cmiMAoxiCT09P4XQ69f45rEtVVefn/dIjhATg8OvWdT3rFZcCcMTP1fe6AlAA3uP379/h5eUlvLy8vFsKa9v2fCbe4XCY5HiUMQMwen19DU9PT+fNL+nnaJom/Pjx49MDYgXg5a/78+fP8Pz8HE6nUzidTu/+mi9fvoTD4RAOh8NVz1jOGYDpH39+fg6/fv0Kx+MxHI/H2f+dpF/TNOHx8TF8+/YtPD4+hq9fv/b+MyEA34vhN/fNKAJwxM/V97oCUACO5Xg8htfX13P0zfF/ilMEYN/rXvuaAvD21z2dTuHPnz/heDyGh4eHmw94XiIA+z7PvX8Pu65bxUaee76PuTY8fPQ1Xvo1CMC3ptzl+xlbqWAj3IDBGOLkeI6bPeYwxn+U1xCAa/s8c0+jShOf9Vvy91kAAgDMZMmpX0oAAgBMLB7vMudGj48IQACACa1hyTcnAAEAJrKWJd+cAAQAGNkap34pAQgAMKK1Tv1SAhAAYCRN06xmo8dHBCAAwJ3WvuSbE4AAAHfYytQvJQABAG6wtalfSgACAFxpi1O/lAAEALjQlqd+KQEIAHCBLRzvcikBCADwgRh+W5/6pQQgAECPuNy75Wf9hghAAIBM0zS7We7tIwABAP6z56lfSgACAIT9T/1SAhAAKFpVVaFt211t8viMAAQAitW27e6Xe/sIQACgOHs82uUaAhAAKEo+9YsR2HXdUl/S7AQgAFCEfJNHqdO/EAQgALBz+XJvyeEXCUAAYLfSM/2E3/8EIACwK13XvVnuFX7vCUAAYDfS5V7hN0wAAgCbF69wK+Umj3sJQABgs9K7e038LicAAYBNiuFX4k0e9xKAAMCmxLt7hd/tBCAAsAnCbzwCEABYvaZpQtvKlrH4nQQAVivu7LXBY1wCEABYnbquQ9u2wm8iAhAAWA3hNw8BCAAszgaPeQlAAGAxVVWFh4cHE7+ZCUAAYHYmfssSgADAbITfOghAAGBydV2fj3RheQIQAJhMvKvXWX7rIgABgNEJv3UTgADAaKqqcnvHBghAAOBucdpX17Xw2wABCADcTPhtkwAEAK5SVdX5OJf4c7ZFAAIAF0nDzzl+2yYAAYAPpeEXz/Hrum7hr4p7CEAAoFcMPwc4748ABADesNS7fwIQADhv5KjrWvgVQAACQMFi+MVlXuFXBgEIAAXKn+9zlEtZBCAAFCJd5nV4c9kEIADsXJz22dFLJAABYKdi9KUTPwhBAALArqRXs8XoE37kBCAA7EC6zBsnfp7vY4gABIANS8PP+X1cSgACwMbk0762bU37uIoABICN6Jv2CT9uIQABYMX6NnU4xoV7CUAAWKG+s/tM+xiLAASAlcif7TPtYyoCEAAWlC7xptFn2seUBCAALCCd9qVn98EcBCAAzCQNvhCCaR+LEYAAMKG+6HM9G0sTgAAwsrikm0720nP7uq5b8KsDAQgAo4nhl/48nt0HayIAAeAOQ8/1uaWDNROAAHClPPriYc2e7WMrBCAAXGAo+uziZYsEIAAMMOljrwQgACTy6AshnKPPQc3shQAEoHh90VfXdWjb9t3HYQ8EIABFSq9gGzqvD/ZKAAJQjDz4uq47P89nMwclEYAA7FrflC+NPiiRAARgdz6LvvTjrmWjRAIQgM1LN3Hk0edWDnhPAAKwSekmjvRj6ZRP9EE/AQjAZsRJXh52zumD6whAAFYrX9qN4Ref53MjB9xGAAKwKukGjnTSV1WVM/pgJAIQgEXld+3mP3dGH4xPAAIwu74pX3oo89CzfsA4BCAAkxta1g0hvIs+YHoCEIDRDd2zG8LwBg4HMsN8BCAAd0t36fbtyo3HtJjywToIQABuEmNu6CiWpmls3oCVEoAAXOSj5/jix9zAAdsgAAHolQZfPuFLl3xN+WB7BCAAIYT3E778EOY0BgUfbJsABChUumnjs926wL4IQICCpLdqpGGX37qRcjwL7I8ABNixvp26+a8t6UJ5BCDATgw9p5du1kgjECiXAATYqDz2YtSlv47RZxkXSLXpG0PXdaGqKm8UACuTX60W37vzjRyWc4FLtCGEN8sE8ceu696EIQDzyXfnpu/PYg+41+AScN9J7qIQYBpp1KVhF3fkOmwZGNNVzwDmUSgGAa7XN8WLP6ZXqcX3W++xwNju2gSSLx2HIAoBUvlze0PRBzCn0XcB58sW0d+/f0MIwhDYv/xQ5aE7deNjNafTacGvtl9J79WlfK+lfJ8hlPW93uofobzfbYnRxloAAAAASUVORK5CYII="}; ================================================ FILE: app/static/novnc/playback.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Licensed under MPL 2.0 (see LICENSE.txt) */ "use strict"; /*jslint browser: true, white: false */ /*global Util, VNC_frame_data, finish */ var rfb, mode, test_state, frame_idx, frame_length, iteration, iterations, istart_time, // Pre-declarations for jslint send_array, next_iteration, queue_next_packet, do_packet, enable_test_mode; // Override send_array send_array = function (arr) { // Stub out send_array }; enable_test_mode = function () { rfb._sock._mode = VNC_frame_encoding; rfb._sock.send = send_array; rfb._sock.close = function () {}; rfb._sock.flush = function () {}; rfb._checkEvents = function () {}; rfb.connect = function (host, port, password, path) { this._rfb_host = host; this._rfb_port = port; this._rfb_password = (password !== undefined) ? password : ""; this._rfb_path = (path !== undefined) ? path : ""; this._sock.init('binary', 'ws'); this._updateState('ProtocolVersion', "Starting VNC handshake"); }; }; next_iteration = function () { rfb = new RFB({'target': $D('VNC_canvas'), 'onUpdateState': updateState}); enable_test_mode(); if (iteration === 0) { frame_length = VNC_frame_data.length; test_state = 'running'; } if (test_state !== 'running') { return; } iteration += 1; if (iteration > iterations) { finish(); return; } frame_idx = 0; istart_time = (new Date()).getTime(); rfb.connect('test', 0, "bogus"); queue_next_packet(); }; queue_next_packet = function () { var frame, foffset, toffset, delay; if (test_state !== 'running') { return; } frame = VNC_frame_data[frame_idx]; while ((frame_idx < frame_length) && (frame.charAt(0) === "}")) { //Util.Debug("Send frame " + frame_idx); frame_idx += 1; frame = VNC_frame_data[frame_idx]; } if (frame === 'EOF') { Util.Debug("Finished, found EOF"); next_iteration(); return; } if (frame_idx >= frame_length) { Util.Debug("Finished, no more frames"); next_iteration(); return; } if (mode === 'realtime') { foffset = frame.slice(1, frame.indexOf('{', 1)); toffset = (new Date()).getTime() - istart_time; delay = foffset - toffset; if (delay < 1) { delay = 1; } setTimeout(do_packet, delay); } else { setTimeout(do_packet, 1); } }; var bytes_processed = 0; do_packet = function () { //Util.Debug("Processing frame: " + frame_idx); var frame = VNC_frame_data[frame_idx], start = frame.indexOf('{', 1) + 1; bytes_processed += frame.length - start; if (VNC_frame_encoding === 'binary') { var u8 = new Uint8Array(frame.length - start); for (var i = 0; i < frame.length - start; i++) { u8[i] = frame.charCodeAt(start + i); } rfb._sock._recv_message({'data' : u8}); } else { rfb._sock._recv_message({'data' : frame.slice(start)}); } frame_idx += 1; queue_next_packet(); }; ================================================ FILE: app/static/novnc/rfb.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 Samuel Mannehed for Cendio AB * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. * * TIGHT decoder portion: * (c) 2012 Michael Tinglof, Joe Balaz, Les Piech (Mercuri.ca) */ /*jslint white: false, browser: true */ /*global window, Util, Display, Keyboard, Mouse, Websock, Websock_native, Base64, DES */ var RFB; (function () { "use strict"; RFB = function (defaults) { if (!defaults) { defaults = {}; } this._rfb_host = ''; this._rfb_port = 5900; this._rfb_password = ''; this._rfb_path = ''; this._rfb_state = 'disconnected'; this._rfb_version = 0; this._rfb_max_version = 3.8; this._rfb_auth_scheme = ''; this._rfb_tightvnc = false; this._rfb_xvp_ver = 0; // In preference order this._encodings = [ ['COPYRECT', 0x01 ], ['TIGHT', 0x07 ], ['TIGHT_PNG', -260 ], ['HEXTILE', 0x05 ], ['RRE', 0x02 ], ['RAW', 0x00 ], ['DesktopSize', -223 ], ['Cursor', -239 ], // Psuedo-encoding settings //['JPEG_quality_lo', -32 ], ['JPEG_quality_med', -26 ], //['JPEG_quality_hi', -23 ], //['compress_lo', -255 ], ['compress_hi', -247 ], ['last_rect', -224 ], ['xvp', -309 ], ['ExtendedDesktopSize', -308 ] ]; this._encHandlers = {}; this._encNames = {}; this._encStats = {}; this._sock = null; // Websock object this._display = null; // Display object this._keyboard = null; // Keyboard input handler object this._mouse = null; // Mouse input handler object this._sendTimer = null; // Send Queue check timer this._disconnTimer = null; // disconnection timer this._msgTimer = null; // queued handle_msg timer // Frame buffer update state this._FBU = { rects: 0, subrects: 0, // RRE lines: 0, // RAW tiles: 0, // HEXTILE bytes: 0, x: 0, y: 0, width: 0, height: 0, encoding: 0, subencoding: -1, background: null, zlib: [] // TIGHT zlib streams }; this._fb_Bpp = 4; this._fb_depth = 3; this._fb_width = 0; this._fb_height = 0; this._fb_name = ""; this._destBuff = null; this._paletteBuff = new Uint8Array(1024); // 256 * 4 (max palette size * max bytes-per-pixel) this._rre_chunk_sz = 100; this._timing = { last_fbu: 0, fbu_total: 0, fbu_total_cnt: 0, full_fbu_total: 0, full_fbu_cnt: 0, fbu_rt_start: 0, fbu_rt_total: 0, fbu_rt_cnt: 0, pixels: 0 }; this._supportsSetDesktopSize = false; this._screen_id = 0; this._screen_flags = 0; // Mouse state this._mouse_buttonMask = 0; this._mouse_arr = []; this._viewportDragging = false; this._viewportDragPos = {}; // set the default value on user-facing properties Util.set_defaults(this, defaults, { 'target': 'null', // VNC display rendering Canvas object 'focusContainer': document, // DOM element that captures keyboard input 'encrypt': false, // Use TLS/SSL/wss encryption 'true_color': true, // Request true color pixel data 'local_cursor': false, // Request locally rendered cursor 'shared': true, // Request shared mode 'view_only': false, // Disable client mouse/keyboard 'xvp_password_sep': '@', // Separator for XVP password fields 'disconnectTimeout': 3, // Time (s) to wait for disconnection 'wsProtocols': ['binary'], // Protocols to use in the WebSocket connection 'repeaterID': '', // [UltraVNC] RepeaterID to connect to 'viewportDrag': false, // Move the viewport on mouse drags // Callback functions 'onUpdateState': function () { }, // onUpdateState(rfb, state, oldstate, statusMsg): state update/change 'onPasswordRequired': function () { }, // onPasswordRequired(rfb): VNC password is required 'onClipboard': function () { }, // onClipboard(rfb, text): RFB clipboard contents received 'onBell': function () { }, // onBell(rfb): RFB Bell message received 'onFBUReceive': function () { }, // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed 'onFBUComplete': function () { }, // onFBUComplete(rfb, fbu): RFB FBU received and processed 'onFBResize': function () { }, // onFBResize(rfb, width, height): frame buffer resized 'onDesktopName': function () { }, // onDesktopName(rfb, name): desktop name received 'onXvpInit': function () { }, // onXvpInit(version): XVP extensions active for this connection }); // main setup Util.Debug(">> RFB.constructor"); // populate encHandlers with bound versions Object.keys(RFB.encodingHandlers).forEach(function (encName) { this._encHandlers[encName] = RFB.encodingHandlers[encName].bind(this); }.bind(this)); // Create lookup tables based on encoding number for (var i = 0; i < this._encodings.length; i++) { this._encHandlers[this._encodings[i][1]] = this._encHandlers[this._encodings[i][0]]; this._encNames[this._encodings[i][1]] = this._encodings[i][0]; this._encStats[this._encodings[i][1]] = [0, 0]; } // NB: nothing that needs explicit teardown should be done // before this point, since this can throw an exception try { this._display = new Display({target: this._target}); } catch (exc) { Util.Error("Display exception: " + exc); throw exc; } this._keyboard = new Keyboard({target: this._focusContainer, onKeyPress: this._handleKeyPress.bind(this)}); this._mouse = new Mouse({target: this._target, onMouseButton: this._handleMouseButton.bind(this), onMouseMove: this._handleMouseMove.bind(this), notify: this._keyboard.sync.bind(this._keyboard)}); this._sock = new Websock(); this._sock.on('message', this._handle_message.bind(this)); this._sock.on('open', function () { if (this._rfb_state === 'connect') { this._updateState('ProtocolVersion', "Starting VNC handshake"); } else { this._fail("Got unexpected WebSocket connection"); } }.bind(this)); this._sock.on('close', function (e) { Util.Warn("WebSocket on-close event"); var msg = ""; if (e.code) { msg = " (code: " + e.code; if (e.reason) { msg += ", reason: " + e.reason; } msg += ")"; } if (this._rfb_state === 'disconnect') { this._updateState('disconnected', 'VNC disconnected' + msg); } else if (this._rfb_state === 'ProtocolVersion') { this._fail('Failed to connect to server' + msg); } else if (this._rfb_state in {'failed': 1, 'disconnected': 1}) { Util.Error("Received onclose while disconnected" + msg); } else { this._fail("Server disconnected" + msg); } this._sock.off('close'); }.bind(this)); this._sock.on('error', function (e) { Util.Warn("WebSocket on-error event"); }); this._init_vars(); var rmode = this._display.get_render_mode(); if (Websock_native) { Util.Info("Using native WebSockets"); this._updateState('loaded', 'noVNC ready: native WebSockets, ' + rmode); } else { this._cleanupSocket('fatal'); throw new Error("WebSocket support is required to use noVNC"); } Util.Debug("<< RFB.constructor"); }; RFB.prototype = { // Public methods connect: function (host, port, password, path) { this._rfb_host = host; this._rfb_port = port; this._rfb_password = (password !== undefined) ? password : ""; this._rfb_path = (path !== undefined) ? path : ""; if (!this._rfb_host || !this._rfb_port) { return this._fail("Must set host and port"); } this._updateState('connect'); }, disconnect: function () { this._updateState('disconnect', 'Disconnecting'); this._sock.off('error'); this._sock.off('message'); this._sock.off('open'); }, sendPassword: function (passwd) { this._rfb_password = passwd; this._rfb_state = 'Authentication'; setTimeout(this._init_msg.bind(this), 1); }, sendCtrlAltDel: function () { if (this._rfb_state !== 'normal' || this._view_only) { return false; } Util.Info("Sending Ctrl-Alt-Del"); RFB.messages.keyEvent(this._sock, XK_Control_L, 1); RFB.messages.keyEvent(this._sock, XK_Alt_L, 1); RFB.messages.keyEvent(this._sock, XK_Delete, 1); RFB.messages.keyEvent(this._sock, XK_Delete, 0); RFB.messages.keyEvent(this._sock, XK_Alt_L, 0); RFB.messages.keyEvent(this._sock, XK_Control_L, 0); this._sock.flush(); }, xvpOp: function (ver, op) { if (this._rfb_xvp_ver < ver) { return false; } Util.Info("Sending XVP operation " + op + " (version " + ver + ")"); this._sock.send_string("\xFA\x00" + String.fromCharCode(ver) + String.fromCharCode(op)); return true; }, xvpShutdown: function () { return this.xvpOp(1, 2); }, xvpReboot: function () { return this.xvpOp(1, 3); }, xvpReset: function () { return this.xvpOp(1, 4); }, // Send a key press. If 'down' is not specified then send a down key // followed by an up key. sendKey: function (code, down) { if (this._rfb_state !== "normal" || this._view_only) { return false; } if (typeof down !== 'undefined') { Util.Info("Sending key code (" + (down ? "down" : "up") + "): " + code); RFB.messages.keyEvent(this._sock, code, down ? 1 : 0); } else { Util.Info("Sending key code (down + up): " + code); RFB.messages.keyEvent(this._sock, code, 1); RFB.messages.keyEvent(this._sock, code, 0); } this._sock.flush(); }, clipboardPasteFrom: function (text) { if (this._rfb_state !== 'normal') { return; } RFB.messages.clientCutText(this._sock, text); this._sock.flush(); }, setDesktopSize: function (width, height) { if (this._rfb_state !== "normal") { return; } if (this._supportsSetDesktopSize) { var arr = [251]; // msg-type arr.push8(0); // padding arr.push16(width); // width arr.push16(height); // height arr.push8(1); // number-of-screens arr.push8(0); // padding // screen array arr.push32(this._screen_id); // id arr.push16(0); // x-position arr.push16(0); // y-position arr.push16(width); // width arr.push16(height); // height arr.push32(this._screen_flags); // flags this._sock.send(arr); } }, // Private methods _connect: function () { Util.Debug(">> RFB.connect"); var uri; if (typeof UsingSocketIO !== 'undefined') { uri = 'http'; } else { uri = this._encrypt ? 'wss' : 'ws'; } uri += '://' + this._rfb_host + ':' + this._rfb_port + '/' + this._rfb_path; Util.Info("connecting to " + uri); this._sock.open(uri, this._wsProtocols); Util.Debug("<< RFB.connect"); }, _init_vars: function () { // reset state this._FBU.rects = 0; this._FBU.subrects = 0; // RRE and HEXTILE this._FBU.lines = 0; // RAW this._FBU.tiles = 0; // HEXTILE this._FBU.zlibs = []; // TIGHT zlib encoders this._mouse_buttonMask = 0; this._mouse_arr = []; this._rfb_tightvnc = false; // Clear the per connection encoding stats var i; for (i = 0; i < this._encodings.length; i++) { this._encStats[this._encodings[i][1]][0] = 0; } for (i = 0; i < 4; i++) { //this._FBU.zlibs[i] = new TINF(); //this._FBU.zlibs[i].init(); this._FBU.zlibs[i] = new inflator.Inflate(); } }, _print_stats: function () { Util.Info("Encoding stats for this connection:"); var i, s; for (i = 0; i < this._encodings.length; i++) { s = this._encStats[this._encodings[i][1]]; if (s[0] + s[1] > 0) { Util.Info(" " + this._encodings[i][0] + ": " + s[0] + " rects"); } } Util.Info("Encoding stats since page load:"); for (i = 0; i < this._encodings.length; i++) { s = this._encStats[this._encodings[i][1]]; Util.Info(" " + this._encodings[i][0] + ": " + s[1] + " rects"); } }, _cleanupSocket: function (state) { if (this._sendTimer) { clearInterval(this._sendTimer); this._sendTimer = null; } if (this._msgTimer) { clearInterval(this._msgTimer); this._msgTimer = null; } if (this._display && this._display.get_context()) { this._keyboard.ungrab(); this._mouse.ungrab(); if (state !== 'connect' && state !== 'loaded') { this._display.defaultCursor(); } if (Util.get_logging() !== 'debug' || state === 'loaded') { // Show noVNC logo on load and when disconnected, unless in // debug mode this._display.clear(); } } this._sock.close(); }, /* * Page states: * loaded - page load, equivalent to disconnected * disconnected - idle state * connect - starting to connect (to ProtocolVersion) * normal - connected * disconnect - starting to disconnect * failed - abnormal disconnect * fatal - failed to load page, or fatal error * * RFB protocol initialization states: * ProtocolVersion * Security * Authentication * password - waiting for password, not part of RFB * SecurityResult * ClientInitialization - not triggered by server message * ServerInitialization (to normal) */ _updateState: function (state, statusMsg) { var oldstate = this._rfb_state; if (state === oldstate) { // Already here, ignore Util.Debug("Already in state '" + state + "', ignoring"); } /* * These are disconnected states. A previous connect may * asynchronously cause a connection so make sure we are closed. */ if (state in {'disconnected': 1, 'loaded': 1, 'connect': 1, 'disconnect': 1, 'failed': 1, 'fatal': 1}) { this._cleanupSocket(state); } if (oldstate === 'fatal') { Util.Error('Fatal error, cannot continue'); } var cmsg = typeof(statusMsg) !== 'undefined' ? (" Msg: " + statusMsg) : ""; var fullmsg = "New state '" + state + "', was '" + oldstate + "'." + cmsg; if (state === 'failed' || state === 'fatal') { Util.Error(cmsg); } else { Util.Warn(cmsg); } if (oldstate === 'failed' && state === 'disconnected') { // do disconnect action, but stay in failed state this._rfb_state = 'failed'; } else { this._rfb_state = state; } if (this._disconnTimer && this._rfb_state !== 'disconnect') { Util.Debug("Clearing disconnect timer"); clearTimeout(this._disconnTimer); this._disconnTimer = null; this._sock.off('close'); // make sure we don't get a double event } switch (state) { case 'normal': if (oldstate === 'disconnected' || oldstate === 'failed') { Util.Error("Invalid transition from 'disconnected' or 'failed' to 'normal'"); } break; case 'connect': this._init_vars(); this._connect(); // WebSocket.onopen transitions to 'ProtocolVersion' break; case 'disconnect': this._disconnTimer = setTimeout(function () { this._fail("Disconnect timeout"); }.bind(this), this._disconnectTimeout * 1000); this._print_stats(); // WebSocket.onclose transitions to 'disconnected' break; case 'failed': if (oldstate === 'disconnected') { Util.Error("Invalid transition from 'disconnected' to 'failed'"); } else if (oldstate === 'normal') { Util.Error("Error while connected."); } else if (oldstate === 'init') { Util.Error("Error while initializing."); } // Make sure we transition to disconnected setTimeout(function () { this._updateState('disconnected'); }.bind(this), 50); break; default: // No state change action to take } if (oldstate === 'failed' && state === 'disconnected') { this._onUpdateState(this, state, oldstate); } else { this._onUpdateState(this, state, oldstate, statusMsg); } }, _fail: function (msg) { this._updateState('failed', msg); return false; }, _handle_message: function () { if (this._sock.rQlen() === 0) { Util.Warn("handle_message called on an empty receive queue"); return; } switch (this._rfb_state) { case 'disconnected': case 'failed': Util.Error("Got data while disconnected"); break; case 'normal': if (this._normal_msg() && this._sock.rQlen() > 0) { // true means we can continue processing // Give other events a chance to run if (this._msgTimer === null) { Util.Debug("More data to process, creating timer"); this._msgTimer = setTimeout(function () { this._msgTimer = null; this._handle_message(); }.bind(this), 10); } else { Util.Debug("More data to process, existing timer"); } } break; default: this._init_msg(); break; } }, _handleKeyPress: function (keysym, down) { if (this._view_only) { return; } // View only, skip keyboard, events RFB.messages.keyEvent(this._sock, keysym, down); this._sock.flush(); }, _handleMouseButton: function (x, y, down, bmask) { if (down) { this._mouse_buttonMask |= bmask; } else { this._mouse_buttonMask ^= bmask; } if (this._viewportDrag) { if (down && !this._viewportDragging) { this._viewportDragging = true; this._viewportDragPos = {'x': x, 'y': y}; // Skip sending mouse events return; } else { this._viewportDragging = false; } } if (this._view_only) { return; } // View only, skip mouse events if (this._rfb_state !== "normal") { return; } RFB.messages.pointerEvent(this._sock, this._display.absX(x), this._display.absY(y), this._mouse_buttonMask); }, _handleMouseMove: function (x, y) { if (this._viewportDragging) { var deltaX = this._viewportDragPos.x - x; var deltaY = this._viewportDragPos.y - y; this._viewportDragPos = {'x': x, 'y': y}; this._display.viewportChangePos(deltaX, deltaY); // Skip sending mouse events return; } if (this._view_only) { return; } // View only, skip mouse events if (this._rfb_state !== "normal") { return; } RFB.messages.pointerEvent(this._sock, this._display.absX(x), this._display.absY(y), this._mouse_buttonMask); }, // Message Handlers _negotiate_protocol_version: function () { if (this._sock.rQlen() < 12) { return this._fail("Incomplete protocol version"); } var sversion = this._sock.rQshiftStr(12).substr(4, 7); Util.Info("Server ProtocolVersion: " + sversion); var is_repeater = 0; switch (sversion) { case "000.000": // UltraVNC repeater is_repeater = 1; break; case "003.003": case "003.006": // UltraVNC case "003.889": // Apple Remote Desktop this._rfb_version = 3.3; break; case "003.007": this._rfb_version = 3.7; break; case "003.008": case "004.000": // Intel AMT KVM case "004.001": // RealVNC 4.6 this._rfb_version = 3.8; break; default: return this._fail("Invalid server version " + sversion); } if (is_repeater) { var repeaterID = this._repeaterID; while (repeaterID.length < 250) { repeaterID += "\0"; } this._sock.send_string(repeaterID); return true; } if (this._rfb_version > this._rfb_max_version) { this._rfb_version = this._rfb_max_version; } // Send updates either at a rate of 1 update per 50ms, or // whatever slower rate the network can handle this._sendTimer = setInterval(this._sock.flush.bind(this._sock), 50); var cversion = "00" + parseInt(this._rfb_version, 10) + ".00" + ((this._rfb_version * 10) % 10); this._sock.send_string("RFB " + cversion + "\n"); this._updateState('Security', 'Sent ProtocolVersion: ' + cversion); }, _negotiate_security: function () { if (this._rfb_version >= 3.7) { // Server sends supported list, client decides var num_types = this._sock.rQshift8(); if (this._sock.rQwait("security type", num_types, 1)) { return false; } if (num_types === 0) { var strlen = this._sock.rQshift32(); var reason = this._sock.rQshiftStr(strlen); return this._fail("Security failure: " + reason); } this._rfb_auth_scheme = 0; var types = this._sock.rQshiftBytes(num_types); Util.Debug("Server security types: " + types); for (var i = 0; i < types.length; i++) { if (types[i] > this._rfb_auth_scheme && (types[i] <= 16 || types[i] == 22)) { this._rfb_auth_scheme = types[i]; } } if (this._rfb_auth_scheme === 0) { return this._fail("Unsupported security types: " + types); } this._sock.send([this._rfb_auth_scheme]); } else { // Server decides if (this._sock.rQwait("security scheme", 4)) { return false; } this._rfb_auth_scheme = this._sock.rQshift32(); } this._updateState('Authentication', 'Authenticating using scheme: ' + this._rfb_auth_scheme); return this._init_msg(); // jump to authentication }, // authentication _negotiate_xvp_auth: function () { var xvp_sep = this._xvp_password_sep; var xvp_auth = this._rfb_password.split(xvp_sep); if (xvp_auth.length < 3) { this._updateState('password', 'XVP credentials required (user' + xvp_sep + 'target' + xvp_sep + 'password) -- got only ' + this._rfb_password); this._onPasswordRequired(this); return false; } var xvp_auth_str = String.fromCharCode(xvp_auth[0].length) + String.fromCharCode(xvp_auth[1].length) + xvp_auth[0] + xvp_auth[1]; this._sock.send_string(xvp_auth_str); this._rfb_password = xvp_auth.slice(2).join(xvp_sep); this._rfb_auth_scheme = 2; return this._negotiate_authentication(); }, _negotiate_std_vnc_auth: function () { if (this._rfb_password.length === 0) { // Notify via both callbacks since it's kind of // an RFB state change and a UI interface issue this._updateState('password', "Password Required"); this._onPasswordRequired(this); } if (this._sock.rQwait("auth challenge", 16)) { return false; } // TODO(directxman12): make genDES not require an Array var challenge = Array.prototype.slice.call(this._sock.rQshiftBytes(16)); var response = RFB.genDES(this._rfb_password, challenge); this._sock.send(response); this._updateState("SecurityResult"); return true; }, _negotiate_tight_tunnels: function (numTunnels) { var clientSupportedTunnelTypes = { 0: { vendor: 'TGHT', signature: 'NOTUNNEL' } }; var serverSupportedTunnelTypes = {}; // receive tunnel capabilities for (var i = 0; i < numTunnels; i++) { var cap_code = this._sock.rQshift32(); var cap_vendor = this._sock.rQshiftStr(4); var cap_signature = this._sock.rQshiftStr(8); serverSupportedTunnelTypes[cap_code] = { vendor: cap_vendor, signature: cap_signature }; } // choose the notunnel type if (serverSupportedTunnelTypes[0]) { if (serverSupportedTunnelTypes[0].vendor != clientSupportedTunnelTypes[0].vendor || serverSupportedTunnelTypes[0].signature != clientSupportedTunnelTypes[0].signature) { return this._fail("Client's tunnel type had the incorrect vendor or signature"); } this._sock.send([0, 0, 0, 0]); // use NOTUNNEL return false; // wait until we receive the sub auth count to continue } else { return this._fail("Server wanted tunnels, but doesn't support the notunnel type"); } }, _negotiate_tight_auth: function () { if (!this._rfb_tightvnc) { // first pass, do the tunnel negotiation if (this._sock.rQwait("num tunnels", 4)) { return false; } var numTunnels = this._sock.rQshift32(); if (numTunnels > 0 && this._sock.rQwait("tunnel capabilities", 16 * numTunnels, 4)) { return false; } this._rfb_tightvnc = true; if (numTunnels > 0) { this._negotiate_tight_tunnels(numTunnels); return false; // wait until we receive the sub auth to continue } } // second pass, do the sub-auth negotiation if (this._sock.rQwait("sub auth count", 4)) { return false; } var subAuthCount = this._sock.rQshift32(); if (this._sock.rQwait("sub auth capabilities", 16 * subAuthCount, 4)) { return false; } var clientSupportedTypes = { 'STDVNOAUTH__': 1, 'STDVVNCAUTH_': 2 }; var serverSupportedTypes = []; for (var i = 0; i < subAuthCount; i++) { var capNum = this._sock.rQshift32(); var capabilities = this._sock.rQshiftStr(12); serverSupportedTypes.push(capabilities); } for (var authType in clientSupportedTypes) { if (serverSupportedTypes.indexOf(authType) != -1) { this._sock.send([0, 0, 0, clientSupportedTypes[authType]]); switch (authType) { case 'STDVNOAUTH__': // no auth this._updateState('SecurityResult'); return true; case 'STDVVNCAUTH_': // VNC auth this._rfb_auth_scheme = 2; return this._init_msg(); default: return this._fail("Unsupported tiny auth scheme: " + authType); } } } this._fail("No supported sub-auth types!"); }, _negotiate_authentication: function () { switch (this._rfb_auth_scheme) { case 0: // connection failed if (this._sock.rQwait("auth reason", 4)) { return false; } var strlen = this._sock.rQshift32(); var reason = this._sock.rQshiftStr(strlen); return this._fail("Auth failure: " + reason); case 1: // no auth if (this._rfb_version >= 3.8) { this._updateState('SecurityResult'); return true; } this._updateState('ClientInitialisation', "No auth required"); return this._init_msg(); case 22: // XVP auth return this._negotiate_xvp_auth(); case 2: // VNC authentication return this._negotiate_std_vnc_auth(); case 16: // TightVNC Security Type return this._negotiate_tight_auth(); default: return this._fail("Unsupported auth scheme: " + this._rfb_auth_scheme); } }, _handle_security_result: function () { if (this._sock.rQwait('VNC auth response ', 4)) { return false; } switch (this._sock.rQshift32()) { case 0: // OK this._updateState('ClientInitialisation', 'Authentication OK'); return this._init_msg(); case 1: // failed if (this._rfb_version >= 3.8) { var length = this._sock.rQshift32(); if (this._sock.rQwait("SecurityResult reason", length, 8)) { return false; } var reason = this._sock.rQshiftStr(length); return this._fail(reason); } else { return this._fail("Authentication failure"); } return false; case 2: return this._fail("Too many auth attempts"); } }, _negotiate_server_init: function () { if (this._sock.rQwait("server initialization", 24)) { return false; } /* Screen size */ this._fb_width = this._sock.rQshift16(); this._fb_height = this._sock.rQshift16(); this._destBuff = new Uint8Array(this._fb_width * this._fb_height * 4); /* PIXEL_FORMAT */ var bpp = this._sock.rQshift8(); var depth = this._sock.rQshift8(); var big_endian = this._sock.rQshift8(); var true_color = this._sock.rQshift8(); var red_max = this._sock.rQshift16(); var green_max = this._sock.rQshift16(); var blue_max = this._sock.rQshift16(); var red_shift = this._sock.rQshift8(); var green_shift = this._sock.rQshift8(); var blue_shift = this._sock.rQshift8(); this._sock.rQskipBytes(3); // padding // NB(directxman12): we don't want to call any callbacks or print messages until // *after* we're past the point where we could backtrack /* Connection name/title */ var name_length = this._sock.rQshift32(); if (this._sock.rQwait('server init name', name_length, 24)) { return false; } this._fb_name = Util.decodeUTF8(this._sock.rQshiftStr(name_length)); if (this._rfb_tightvnc) { if (this._sock.rQwait('TightVNC extended server init header', 8, 24 + name_length)) { return false; } // In TightVNC mode, ServerInit message is extended var numServerMessages = this._sock.rQshift16(); var numClientMessages = this._sock.rQshift16(); var numEncodings = this._sock.rQshift16(); this._sock.rQskipBytes(2); // padding var totalMessagesLength = (numServerMessages + numClientMessages + numEncodings) * 16; if (this._sock.rQwait('TightVNC extended server init header', totalMessagesLength, 32 + name_length)) { return false; } var i; for (i = 0; i < numServerMessages; i++) { var srvMsg = this._sock.rQshiftStr(16); } for (i = 0; i < numClientMessages; i++) { var clientMsg = this._sock.rQshiftStr(16); } for (i = 0; i < numEncodings; i++) { var encoding = this._sock.rQshiftStr(16); } } // NB(directxman12): these are down here so that we don't run them multiple times // if we backtrack Util.Info("Screen: " + this._fb_width + "x" + this._fb_height + ", bpp: " + bpp + ", depth: " + depth + ", big_endian: " + big_endian + ", true_color: " + true_color + ", red_max: " + red_max + ", green_max: " + green_max + ", blue_max: " + blue_max + ", red_shift: " + red_shift + ", green_shift: " + green_shift + ", blue_shift: " + blue_shift); if (big_endian !== 0) { Util.Warn("Server native endian is not little endian"); } if (red_shift !== 16) { Util.Warn("Server native red-shift is not 16"); } if (blue_shift !== 0) { Util.Warn("Server native blue-shift is not 0"); } // we're past the point where we could backtrack, so it's safe to call this this._onDesktopName(this, this._fb_name); if (this._true_color && this._fb_name === "Intel(r) AMT KVM") { Util.Warn("Intel AMT KVM only supports 8/16 bit depths. Disabling true color"); this._true_color = false; } this._display.set_true_color(this._true_color); this._display.resize(this._fb_width, this._fb_height); this._onFBResize(this, this._fb_width, this._fb_height); this._keyboard.grab(); this._mouse.grab(); if (this._true_color) { this._fb_Bpp = 4; this._fb_depth = 3; } else { this._fb_Bpp = 1; this._fb_depth = 1; } RFB.messages.pixelFormat(this._sock, this._fb_Bpp, this._fb_depth, this._true_color); RFB.messages.clientEncodings(this._sock, this._encodings, this._local_cursor, this._true_color); RFB.messages.fbUpdateRequests(this._sock, this._display.getCleanDirtyReset(), this._fb_width, this._fb_height); this._timing.fbu_rt_start = (new Date()).getTime(); this._timing.pixels = 0; this._sock.flush(); if (this._encrypt) { this._updateState('normal', 'Connected (encrypted) to: ' + this._fb_name); } else { this._updateState('normal', 'Connected (unencrypted) to: ' + this._fb_name); } }, _init_msg: function () { switch (this._rfb_state) { case 'ProtocolVersion': return this._negotiate_protocol_version(); case 'Security': return this._negotiate_security(); case 'Authentication': return this._negotiate_authentication(); case 'SecurityResult': return this._handle_security_result(); case 'ClientInitialisation': this._sock.send([this._shared ? 1 : 0]); // ClientInitialisation this._updateState('ServerInitialisation', "Authentication OK"); return true; case 'ServerInitialisation': return this._negotiate_server_init(); } }, _handle_set_colour_map_msg: function () { Util.Debug("SetColorMapEntries"); this._sock.rQskip8(); // Padding var first_colour = this._sock.rQshift16(); var num_colours = this._sock.rQshift16(); if (this._sock.rQwait('SetColorMapEntries', num_colours * 6, 6)) { return false; } for (var c = 0; c < num_colours; c++) { var red = parseInt(this._sock.rQshift16() / 256, 10); var green = parseInt(this._sock.rQshift16() / 256, 10); var blue = parseInt(this._sock.rQshift16() / 256, 10); this._display.set_colourMap([blue, green, red], first_colour + c); } Util.Debug("colourMap: " + this._display.get_colourMap()); Util.Info("Registered " + num_colours + " colourMap entries"); return true; }, _handle_server_cut_text: function () { Util.Debug("ServerCutText"); if (this._sock.rQwait("ServerCutText header", 7, 1)) { return false; } this._sock.rQskipBytes(3); // Padding var length = this._sock.rQshift32(); if (this._sock.rQwait("ServerCutText", length, 8)) { return false; } var text = this._sock.rQshiftStr(length); this._onClipboard(this, text); return true; }, _handle_xvp_msg: function () { if (this._sock.rQwait("XVP version and message", 3, 1)) { return false; } this._sock.rQskip8(); // Padding var xvp_ver = this._sock.rQshift8(); var xvp_msg = this._sock.rQshift8(); switch (xvp_msg) { case 0: // XVP_FAIL this._updateState(this._rfb_state, "Operation Failed"); break; case 1: // XVP_INIT this._rfb_xvp_ver = xvp_ver; Util.Info("XVP extensions enabled (version " + this._rfb_xvp_ver + ")"); this._onXvpInit(this._rfb_xvp_ver); break; default: this._fail("Disconnected: illegal server XVP message " + xvp_msg); break; } return true; }, _normal_msg: function () { var msg_type; if (this._FBU.rects > 0) { msg_type = 0; } else { msg_type = this._sock.rQshift8(); } switch (msg_type) { case 0: // FramebufferUpdate var ret = this._framebufferUpdate(); if (ret) { RFB.messages.fbUpdateRequests(this._sock, this._display.getCleanDirtyReset(), this._fb_width, this._fb_height); this._sock.flush(); } return ret; case 1: // SetColorMapEntries return this._handle_set_colour_map_msg(); case 2: // Bell Util.Debug("Bell"); this._onBell(this); return true; case 3: // ServerCutText return this._handle_server_cut_text(); case 250: // XVP return this._handle_xvp_msg(); default: this._fail("Disconnected: illegal server message type " + msg_type); Util.Debug("sock.rQslice(0, 30): " + this._sock.rQslice(0, 30)); return true; } }, _framebufferUpdate: function () { var ret = true; var now; if (this._FBU.rects === 0) { if (this._sock.rQwait("FBU header", 3, 1)) { return false; } this._sock.rQskip8(); // Padding this._FBU.rects = this._sock.rQshift16(); this._FBU.bytes = 0; this._timing.cur_fbu = 0; if (this._timing.fbu_rt_start > 0) { now = (new Date()).getTime(); Util.Info("First FBU latency: " + (now - this._timing.fbu_rt_start)); } } while (this._FBU.rects > 0) { if (this._rfb_state !== "normal") { return false; } if (this._sock.rQwait("FBU", this._FBU.bytes)) { return false; } if (this._FBU.bytes === 0) { if (this._sock.rQwait("rect header", 12)) { return false; } /* New FramebufferUpdate */ var hdr = this._sock.rQshiftBytes(12); this._FBU.x = (hdr[0] << 8) + hdr[1]; this._FBU.y = (hdr[2] << 8) + hdr[3]; this._FBU.width = (hdr[4] << 8) + hdr[5]; this._FBU.height = (hdr[6] << 8) + hdr[7]; this._FBU.encoding = parseInt((hdr[8] << 24) + (hdr[9] << 16) + (hdr[10] << 8) + hdr[11], 10); this._onFBUReceive(this, {'x': this._FBU.x, 'y': this._FBU.y, 'width': this._FBU.width, 'height': this._FBU.height, 'encoding': this._FBU.encoding, 'encodingName': this._encNames[this._FBU.encoding]}); if (!this._encNames[this._FBU.encoding]) { this._fail("Disconnected: unsupported encoding " + this._FBU.encoding); return false; } } this._timing.last_fbu = (new Date()).getTime(); var handler = this._encHandlers[this._FBU.encoding]; try { //ret = this._encHandlers[this._FBU.encoding](); ret = handler(); } catch (ex) { console.log("missed " + this._FBU.encoding + ": " + handler); ret = this._encHandlers[this._FBU.encoding](); } now = (new Date()).getTime(); this._timing.cur_fbu += (now - this._timing.last_fbu); if (ret) { this._encStats[this._FBU.encoding][0]++; this._encStats[this._FBU.encoding][1]++; this._timing.pixels += this._FBU.width * this._FBU.height; } if (this._timing.pixels >= (this._fb_width * this._fb_height)) { if ((this._FBU.width === this._fb_width && this._FBU.height === this._fb_height) || this._timing.fbu_rt_start > 0) { this._timing.full_fbu_total += this._timing.cur_fbu; this._timing.full_fbu_cnt++; Util.Info("Timing of full FBU, curr: " + this._timing.cur_fbu + ", total: " + this._timing.full_fbu_total + ", cnt: " + this._timing.full_fbu_cnt + ", avg: " + (this._timing.full_fbu_total / this._timing.full_fbu_cnt)); } if (this._timing.fbu_rt_start > 0) { var fbu_rt_diff = now - this._timing.fbu_rt_start; this._timing.fbu_rt_total += fbu_rt_diff; this._timing.fbu_rt_cnt++; Util.Info("full FBU round-trip, cur: " + fbu_rt_diff + ", total: " + this._timing.fbu_rt_total + ", cnt: " + this._timing.fbu_rt_cnt + ", avg: " + (this._timing.fbu_rt_total / this._timing.fbu_rt_cnt)); this._timing.fbu_rt_start = 0; } } if (!ret) { return ret; } // need more data } this._onFBUComplete(this, {'x': this._FBU.x, 'y': this._FBU.y, 'width': this._FBU.width, 'height': this._FBU.height, 'encoding': this._FBU.encoding, 'encodingName': this._encNames[this._FBU.encoding]}); return true; // We finished this FBU }, }; Util.make_properties(RFB, [ ['target', 'wo', 'dom'], // VNC display rendering Canvas object ['focusContainer', 'wo', 'dom'], // DOM element that captures keyboard input ['encrypt', 'rw', 'bool'], // Use TLS/SSL/wss encryption ['true_color', 'rw', 'bool'], // Request true color pixel data ['local_cursor', 'rw', 'bool'], // Request locally rendered cursor ['shared', 'rw', 'bool'], // Request shared mode ['view_only', 'rw', 'bool'], // Disable client mouse/keyboard ['xvp_password_sep', 'rw', 'str'], // Separator for XVP password fields ['disconnectTimeout', 'rw', 'int'], // Time (s) to wait for disconnection ['wsProtocols', 'rw', 'arr'], // Protocols to use in the WebSocket connection ['repeaterID', 'rw', 'str'], // [UltraVNC] RepeaterID to connect to ['viewportDrag', 'rw', 'bool'], // Move the viewport on mouse drags // Callback functions ['onUpdateState', 'rw', 'func'], // onUpdateState(rfb, state, oldstate, statusMsg): RFB state update/change ['onPasswordRequired', 'rw', 'func'], // onPasswordRequired(rfb): VNC password is required ['onClipboard', 'rw', 'func'], // onClipboard(rfb, text): RFB clipboard contents received ['onBell', 'rw', 'func'], // onBell(rfb): RFB Bell message received ['onFBUReceive', 'rw', 'func'], // onFBUReceive(rfb, fbu): RFB FBU received but not yet processed ['onFBUComplete', 'rw', 'func'], // onFBUComplete(rfb, fbu): RFB FBU received and processed ['onFBResize', 'rw', 'func'], // onFBResize(rfb, width, height): frame buffer resized ['onDesktopName', 'rw', 'func'], // onDesktopName(rfb, name): desktop name received ['onXvpInit', 'rw', 'func'], // onXvpInit(version): XVP extensions active for this connection ]); RFB.prototype.set_local_cursor = function (cursor) { if (!cursor || (cursor in {'0': 1, 'no': 1, 'false': 1})) { this._local_cursor = false; this._display.disableLocalCursor(); //Only show server-side cursor } else { if (this._display.get_cursor_uri()) { this._local_cursor = true; } else { Util.Warn("Browser does not support local cursor"); this._display.disableLocalCursor(); } } }; RFB.prototype.get_display = function () { return this._display; }; RFB.prototype.get_keyboard = function () { return this._keyboard; }; RFB.prototype.get_mouse = function () { return this._mouse; }; // Class Methods RFB.messages = { keyEvent: function (sock, keysym, down) { var buff = sock._sQ; var offset = sock._sQlen; buff[offset] = 4; // msg-type buff[offset + 1] = down; buff[offset + 2] = 0; buff[offset + 3] = 0; buff[offset + 4] = (keysym >> 24); buff[offset + 5] = (keysym >> 16); buff[offset + 6] = (keysym >> 8); buff[offset + 7] = keysym; sock._sQlen += 8; }, pointerEvent: function (sock, x, y, mask) { var buff = sock._sQ; var offset = sock._sQlen; buff[offset] = 5; // msg-type buff[offset + 1] = mask; buff[offset + 2] = x >> 8; buff[offset + 3] = x; buff[offset + 4] = y >> 8; buff[offset + 5] = y; sock._sQlen += 6; }, // TODO(directxman12): make this unicode compatible? clientCutText: function (sock, text) { var buff = sock._sQ; var offset = sock._sQlen; buff[offset] = 6; // msg-type buff[offset + 1] = 0; // padding buff[offset + 2] = 0; // padding buff[offset + 3] = 0; // padding var n = text.length; buff[offset + 4] = n >> 24; buff[offset + 5] = n >> 16; buff[offset + 6] = n >> 8; buff[offset + 7] = n; for (var i = 0; i < n; i++) { buff[offset + 8 + i] = text.charCodeAt(i); } sock._sQlen += 8 + n; }, pixelFormat: function (sock, bpp, depth, true_color) { var buff = sock._sQ; var offset = sock._sQlen; buff[offset] = 0; // msg-type buff[offset + 1] = 0; // padding buff[offset + 2] = 0; // padding buff[offset + 3] = 0; // padding buff[offset + 4] = bpp * 8; // bits-per-pixel buff[offset + 5] = depth * 8; // depth buff[offset + 6] = 0; // little-endian buff[offset + 7] = true_color ? 1 : 0; // true-color buff[offset + 8] = 0; // red-max buff[offset + 9] = 255; // red-max buff[offset + 10] = 0; // green-max buff[offset + 11] = 255; // green-max buff[offset + 12] = 0; // blue-max buff[offset + 13] = 255; // blue-max buff[offset + 14] = 16; // red-shift buff[offset + 15] = 8; // green-shift buff[offset + 16] = 0; // blue-shift buff[offset + 17] = 0; // padding buff[offset + 18] = 0; // padding buff[offset + 19] = 0; // padding sock._sQlen += 20; }, clientEncodings: function (sock, encodings, local_cursor, true_color) { var buff = sock._sQ; var offset = sock._sQlen; buff[offset] = 2; // msg-type buff[offset + 1] = 0; // padding // offset + 2 and offset + 3 are encoding count var i, j = offset + 4, cnt = 0; for (i = 0; i < encodings.length; i++) { if (encodings[i][0] === "Cursor" && !local_cursor) { Util.Debug("Skipping Cursor pseudo-encoding"); } else if (encodings[i][0] === "TIGHT" && !true_color) { // TODO: remove this when we have tight+non-true-color Util.Warn("Skipping tight as it is only supported with true color"); } else { var enc = encodings[i][1]; buff[j] = enc >> 24; buff[j + 1] = enc >> 16; buff[j + 2] = enc >> 8; buff[j + 3] = enc; j += 4; cnt++; } } buff[offset + 2] = cnt >> 8; buff[offset + 3] = cnt; sock._sQlen += j - offset; }, fbUpdateRequests: function (sock, cleanDirty, fb_width, fb_height) { var offsetIncrement = 0; var cb = cleanDirty.cleanBox; var w, h; if (cb.w > 0 && cb.h > 0) { w = typeof cb.w === "undefined" ? fb_width : cb.w; h = typeof cb.h === "undefined" ? fb_height : cb.h; // Request incremental for clean box RFB.messages.fbUpdateRequest(sock, 1, cb.x, cb.y, w, h); } for (var i = 0; i < cleanDirty.dirtyBoxes.length; i++) { var db = cleanDirty.dirtyBoxes[i]; // Force all (non-incremental) for dirty box w = typeof db.w === "undefined" ? fb_width : db.w; h = typeof db.h === "undefined" ? fb_height : db.h; RFB.messages.fbUpdateRequest(sock, 0, db.x, db.y, w, h); } }, fbUpdateRequest: function (sock, incremental, x, y, w, h) { var buff = sock._sQ; var offset = sock._sQlen; if (typeof(x) === "undefined") { x = 0; } if (typeof(y) === "undefined") { y = 0; } buff[offset] = 3; // msg-type buff[offset + 1] = incremental; buff[offset + 2] = (x >> 8) & 0xFF; buff[offset + 3] = x & 0xFF; buff[offset + 4] = (y >> 8) & 0xFF; buff[offset + 5] = y & 0xFF; buff[offset + 6] = (w >> 8) & 0xFF; buff[offset + 7] = w & 0xFF; buff[offset + 8] = (h >> 8) & 0xFF; buff[offset + 9] = h & 0xFF; sock._sQlen += 10; } }; RFB.genDES = function (password, challenge) { var passwd = []; for (var i = 0; i < password.length; i++) { passwd.push(password.charCodeAt(i)); } return (new DES(passwd)).encrypt(challenge); }; RFB.extract_data_uri = function (arr) { return ";base64," + Base64.encode(arr); }; RFB.encodingHandlers = { RAW: function () { if (this._FBU.lines === 0) { this._FBU.lines = this._FBU.height; } this._FBU.bytes = this._FBU.width * this._fb_Bpp; // at least a line if (this._sock.rQwait("RAW", this._FBU.bytes)) { return false; } var cur_y = this._FBU.y + (this._FBU.height - this._FBU.lines); var curr_height = Math.min(this._FBU.lines, Math.floor(this._sock.rQlen() / (this._FBU.width * this._fb_Bpp))); this._display.blitImage(this._FBU.x, cur_y, this._FBU.width, curr_height, this._sock.get_rQ(), this._sock.get_rQi()); this._sock.rQskipBytes(this._FBU.width * curr_height * this._fb_Bpp); this._FBU.lines -= curr_height; if (this._FBU.lines > 0) { this._FBU.bytes = this._FBU.width * this._fb_Bpp; // At least another line } else { this._FBU.rects--; this._FBU.bytes = 0; } return true; }, COPYRECT: function () { this._FBU.bytes = 4; if (this._sock.rQwait("COPYRECT", 4)) { return false; } this._display.copyImage(this._sock.rQshift16(), this._sock.rQshift16(), this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height); this._FBU.rects--; this._FBU.bytes = 0; return true; }, RRE: function () { var color; if (this._FBU.subrects === 0) { this._FBU.bytes = 4 + this._fb_Bpp; if (this._sock.rQwait("RRE", 4 + this._fb_Bpp)) { return false; } this._FBU.subrects = this._sock.rQshift32(); color = this._sock.rQshiftBytes(this._fb_Bpp); // Background this._display.fillRect(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, color); } while (this._FBU.subrects > 0 && this._sock.rQlen() >= (this._fb_Bpp + 8)) { color = this._sock.rQshiftBytes(this._fb_Bpp); var x = this._sock.rQshift16(); var y = this._sock.rQshift16(); var width = this._sock.rQshift16(); var height = this._sock.rQshift16(); this._display.fillRect(this._FBU.x + x, this._FBU.y + y, width, height, color); this._FBU.subrects--; } if (this._FBU.subrects > 0) { var chunk = Math.min(this._rre_chunk_sz, this._FBU.subrects); this._FBU.bytes = (this._fb_Bpp + 8) * chunk; } else { this._FBU.rects--; this._FBU.bytes = 0; } return true; }, HEXTILE: function () { var rQ = this._sock.get_rQ(); var rQi = this._sock.get_rQi(); if (this._FBU.tiles === 0) { this._FBU.tiles_x = Math.ceil(this._FBU.width / 16); this._FBU.tiles_y = Math.ceil(this._FBU.height / 16); this._FBU.total_tiles = this._FBU.tiles_x * this._FBU.tiles_y; this._FBU.tiles = this._FBU.total_tiles; } while (this._FBU.tiles > 0) { this._FBU.bytes = 1; if (this._sock.rQwait("HEXTILE subencoding", this._FBU.bytes)) { return false; } var subencoding = rQ[rQi]; // Peek if (subencoding > 30) { // Raw this._fail("Disconnected: illegal hextile subencoding " + subencoding); return false; } var subrects = 0; var curr_tile = this._FBU.total_tiles - this._FBU.tiles; var tile_x = curr_tile % this._FBU.tiles_x; var tile_y = Math.floor(curr_tile / this._FBU.tiles_x); var x = this._FBU.x + tile_x * 16; var y = this._FBU.y + tile_y * 16; var w = Math.min(16, (this._FBU.x + this._FBU.width) - x); var h = Math.min(16, (this._FBU.y + this._FBU.height) - y); // Figure out how much we are expecting if (subencoding & 0x01) { // Raw this._FBU.bytes += w * h * this._fb_Bpp; } else { if (subencoding & 0x02) { // Background this._FBU.bytes += this._fb_Bpp; } if (subencoding & 0x04) { // Foreground this._FBU.bytes += this._fb_Bpp; } if (subencoding & 0x08) { // AnySubrects this._FBU.bytes++; // Since we aren't shifting it off if (this._sock.rQwait("hextile subrects header", this._FBU.bytes)) { return false; } subrects = rQ[rQi + this._FBU.bytes - 1]; // Peek if (subencoding & 0x10) { // SubrectsColoured this._FBU.bytes += subrects * (this._fb_Bpp + 2); } else { this._FBU.bytes += subrects * 2; } } } if (this._sock.rQwait("hextile", this._FBU.bytes)) { return false; } // We know the encoding and have a whole tile this._FBU.subencoding = rQ[rQi]; rQi++; if (this._FBU.subencoding === 0) { if (this._FBU.lastsubencoding & 0x01) { // Weird: ignore blanks are RAW Util.Debug(" Ignoring blank after RAW"); } else { this._display.fillRect(x, y, w, h, this._FBU.background); } } else if (this._FBU.subencoding & 0x01) { // Raw this._display.blitImage(x, y, w, h, rQ, rQi); rQi += this._FBU.bytes - 1; } else { if (this._FBU.subencoding & 0x02) { // Background if (this._fb_Bpp == 1) { this._FBU.background = rQ[rQi]; } else { // fb_Bpp is 4 this._FBU.background = [rQ[rQi], rQ[rQi + 1], rQ[rQi + 2], rQ[rQi + 3]]; } rQi += this._fb_Bpp; } if (this._FBU.subencoding & 0x04) { // Foreground if (this._fb_Bpp == 1) { this._FBU.foreground = rQ[rQi]; } else { // this._fb_Bpp is 4 this._FBU.foreground = [rQ[rQi], rQ[rQi + 1], rQ[rQi + 2], rQ[rQi + 3]]; } rQi += this._fb_Bpp; } this._display.startTile(x, y, w, h, this._FBU.background); if (this._FBU.subencoding & 0x08) { // AnySubrects subrects = rQ[rQi]; rQi++; for (var s = 0; s < subrects; s++) { var color; if (this._FBU.subencoding & 0x10) { // SubrectsColoured if (this._fb_Bpp === 1) { color = rQ[rQi]; } else { // _fb_Bpp is 4 color = [rQ[rQi], rQ[rQi + 1], rQ[rQi + 2], rQ[rQi + 3]]; } rQi += this._fb_Bpp; } else { color = this._FBU.foreground; } var xy = rQ[rQi]; rQi++; var sx = (xy >> 4); var sy = (xy & 0x0f); var wh = rQ[rQi]; rQi++; var sw = (wh >> 4) + 1; var sh = (wh & 0x0f) + 1; this._display.subTile(sx, sy, sw, sh, color); } } this._display.finishTile(); } this._sock.set_rQi(rQi); this._FBU.lastsubencoding = this._FBU.subencoding; this._FBU.bytes = 0; this._FBU.tiles--; } if (this._FBU.tiles === 0) { this._FBU.rects--; } return true; }, getTightCLength: function (arr) { var header = 1, data = 0; data += arr[0] & 0x7f; if (arr[0] & 0x80) { header++; data += (arr[1] & 0x7f) << 7; if (arr[1] & 0x80) { header++; data += arr[2] << 14; } } return [header, data]; }, display_tight: function (isTightPNG) { if (this._fb_depth === 1) { this._fail("Tight protocol handler only implements true color mode"); } this._FBU.bytes = 1; // compression-control byte if (this._sock.rQwait("TIGHT compression-control", this._FBU.bytes)) { return false; } var checksum = function (data) { var sum = 0; for (var i = 0; i < data.length; i++) { sum += data[i]; if (sum > 65536) sum -= 65536; } return sum; }; var resetStreams = 0; var streamId = -1; var decompress = function (data) { for (var i = 0; i < 4; i++) { if ((resetStreams >> i) & 1) { this._FBU.zlibs[i].reset(); Util.Info("Reset zlib stream " + i); } } //var uncompressed = this._FBU.zlibs[streamId].uncompress(data, 0); var uncompressed = this._FBU.zlibs[streamId].inflate(data, true); /*if (uncompressed.status !== 0) { Util.Error("Invalid data in zlib stream"); }*/ //return uncompressed.data; return uncompressed; }.bind(this); var indexedToRGBX2Color = function (data, palette, width, height) { // Convert indexed (palette based) image data to RGB // TODO: reduce number of calculations inside loop var dest = this._destBuff; var w = Math.floor((width + 7) / 8); var w1 = Math.floor(width / 8); /*for (var y = 0; y < height; y++) { var b, x, dp, sp; var yoffset = y * width; var ybitoffset = y * w; var xoffset, targetbyte; for (x = 0; x < w1; x++) { xoffset = yoffset + x * 8; targetbyte = data[ybitoffset + x]; for (b = 7; b >= 0; b--) { dp = (xoffset + 7 - b) * 3; sp = (targetbyte >> b & 1) * 3; dest[dp] = palette[sp]; dest[dp + 1] = palette[sp + 1]; dest[dp + 2] = palette[sp + 2]; } } xoffset = yoffset + x * 8; targetbyte = data[ybitoffset + x]; for (b = 7; b >= 8 - width % 8; b--) { dp = (xoffset + 7 - b) * 3; sp = (targetbyte >> b & 1) * 3; dest[dp] = palette[sp]; dest[dp + 1] = palette[sp + 1]; dest[dp + 2] = palette[sp + 2]; } }*/ for (var y = 0; y < height; y++) { var b, x, dp, sp; for (x = 0; x < w1; x++) { for (b = 7; b >= 0; b--) { dp = (y * width + x * 8 + 7 - b) * 4; sp = (data[y * w + x] >> b & 1) * 3; dest[dp] = palette[sp]; dest[dp + 1] = palette[sp + 1]; dest[dp + 2] = palette[sp + 2]; dest[dp + 3] = 255; } } for (b = 7; b >= 8 - width % 8; b--) { dp = (y * width + x * 8 + 7 - b) * 4; sp = (data[y * w + x] >> b & 1) * 3; dest[dp] = palette[sp]; dest[dp + 1] = palette[sp + 1]; dest[dp + 2] = palette[sp + 2]; dest[dp + 3] = 255; } } return dest; }.bind(this); var indexedToRGBX = function (data, palette, width, height) { // Convert indexed (palette based) image data to RGB var dest = this._destBuff; var total = width * height * 4; for (var i = 0, j = 0; i < total; i += 4, j++) { var sp = data[j] * 3; dest[i] = palette[sp]; dest[i + 1] = palette[sp + 1]; dest[i + 2] = palette[sp + 2]; dest[i + 3] = 255; } return dest; }.bind(this); var rQi = this._sock.get_rQi(); var rQ = this._sock.rQwhole(); var cmode, data; var cl_header, cl_data; var handlePalette = function () { var numColors = rQ[rQi + 2] + 1; var paletteSize = numColors * this._fb_depth; this._FBU.bytes += paletteSize; if (this._sock.rQwait("TIGHT palette " + cmode, this._FBU.bytes)) { return false; } var bpp = (numColors <= 2) ? 1 : 8; var rowSize = Math.floor((this._FBU.width * bpp + 7) / 8); var raw = false; if (rowSize * this._FBU.height < 12) { raw = true; cl_header = 0; cl_data = rowSize * this._FBU.height; //clength = [0, rowSize * this._FBU.height]; } else { // begin inline getTightCLength (returning two-item arrays is bad for performance with GC) var cl_offset = rQi + 3 + paletteSize; cl_header = 1; cl_data = 0; cl_data += rQ[cl_offset] & 0x7f; if (rQ[cl_offset] & 0x80) { cl_header++; cl_data += (rQ[cl_offset + 1] & 0x7f) << 7; if (rQ[cl_offset + 1] & 0x80) { cl_header++; cl_data += rQ[cl_offset + 2] << 14; } } // end inline getTightCLength } this._FBU.bytes += cl_header + cl_data; if (this._sock.rQwait("TIGHT " + cmode, this._FBU.bytes)) { return false; } // Shift ctl, filter id, num colors, palette entries, and clength off this._sock.rQskipBytes(3); //var palette = this._sock.rQshiftBytes(paletteSize); this._sock.rQshiftTo(this._paletteBuff, paletteSize); this._sock.rQskipBytes(cl_header); if (raw) { data = this._sock.rQshiftBytes(cl_data); } else { data = decompress(this._sock.rQshiftBytes(cl_data)); } // Convert indexed (palette based) image data to RGB var rgbx; if (numColors == 2) { rgbx = indexedToRGBX2Color(data, this._paletteBuff, this._FBU.width, this._FBU.height); this._display.blitRgbxImage(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, rgbx, 0, false); } else { rgbx = indexedToRGBX(data, this._paletteBuff, this._FBU.width, this._FBU.height); this._display.blitRgbxImage(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, rgbx, 0, false); } return true; }.bind(this); var handleCopy = function () { var raw = false; var uncompressedSize = this._FBU.width * this._FBU.height * this._fb_depth; if (uncompressedSize < 12) { raw = true; cl_header = 0; cl_data = uncompressedSize; } else { // begin inline getTightCLength (returning two-item arrays is for peformance with GC) var cl_offset = rQi + 1; cl_header = 1; cl_data = 0; cl_data += rQ[cl_offset] & 0x7f; if (rQ[cl_offset] & 0x80) { cl_header++; cl_data += (rQ[cl_offset + 1] & 0x7f) << 7; if (rQ[cl_offset + 1] & 0x80) { cl_header++; cl_data += rQ[cl_offset + 2] << 14; } } // end inline getTightCLength } this._FBU.bytes = 1 + cl_header + cl_data; if (this._sock.rQwait("TIGHT " + cmode, this._FBU.bytes)) { return false; } // Shift ctl, clength off this._sock.rQshiftBytes(1 + cl_header); if (raw) { data = this._sock.rQshiftBytes(cl_data); } else { data = decompress(this._sock.rQshiftBytes(cl_data)); } this._display.blitRgbImage(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, data, 0, false); return true; }.bind(this); var ctl = this._sock.rQpeek8(); // Keep tight reset bits resetStreams = ctl & 0xF; // Figure out filter ctl = ctl >> 4; streamId = ctl & 0x3; if (ctl === 0x08) cmode = "fill"; else if (ctl === 0x09) cmode = "jpeg"; else if (ctl === 0x0A) cmode = "png"; else if (ctl & 0x04) cmode = "filter"; else if (ctl < 0x04) cmode = "copy"; else return this._fail("Illegal tight compression received, ctl: " + ctl); if (isTightPNG && (cmode === "filter" || cmode === "copy")) { return this._fail("filter/copy received in tightPNG mode"); } switch (cmode) { // fill use fb_depth because TPIXELs drop the padding byte case "fill": // TPIXEL this._FBU.bytes += this._fb_depth; break; case "jpeg": // max clength this._FBU.bytes += 3; break; case "png": // max clength this._FBU.bytes += 3; break; case "filter": // filter id + num colors if palette this._FBU.bytes += 2; break; case "copy": break; } if (this._sock.rQwait("TIGHT " + cmode, this._FBU.bytes)) { return false; } // Determine FBU.bytes switch (cmode) { case "fill": // skip ctl byte this._display.fillRect(this._FBU.x, this._FBU.y, this._FBU.width, this._FBU.height, [rQ[rQi + 3], rQ[rQi + 2], rQ[rQi + 1]], false); this._sock.rQskipBytes(4); break; case "png": case "jpeg": // begin inline getTightCLength (returning two-item arrays is for peformance with GC) var cl_offset = rQi + 1; cl_header = 1; cl_data = 0; cl_data += rQ[cl_offset] & 0x7f; if (rQ[cl_offset] & 0x80) { cl_header++; cl_data += (rQ[cl_offset + 1] & 0x7f) << 7; if (rQ[cl_offset + 1] & 0x80) { cl_header++; cl_data += rQ[cl_offset + 2] << 14; } } // end inline getTightCLength this._FBU.bytes = 1 + cl_header + cl_data; // ctl + clength size + jpeg-data if (this._sock.rQwait("TIGHT " + cmode, this._FBU.bytes)) { return false; } // We have everything, render it this._sock.rQskipBytes(1 + cl_header); // shift off clt + compact length var img = new Image(); img.src = "data: image/" + cmode + RFB.extract_data_uri(this._sock.rQshiftBytes(cl_data)); this._display.renderQ_push({ 'type': 'img', 'img': img, 'x': this._FBU.x, 'y': this._FBU.y }); img = null; break; case "filter": var filterId = rQ[rQi + 1]; if (filterId === 1) { if (!handlePalette()) { return false; } } else { // Filter 0, Copy could be valid here, but servers don't send it as an explicit filter // Filter 2, Gradient is valid but not use if jpeg is enabled // TODO(directxman12): why aren't we just calling '_fail' here throw new Error("Unsupported tight subencoding received, filter: " + filterId); } break; case "copy": if (!handleCopy()) { return false; } break; } this._FBU.bytes = 0; this._FBU.rects--; return true; }, TIGHT: function () { return this._encHandlers.display_tight(false); }, TIGHT_PNG: function () { return this._encHandlers.display_tight(true); }, last_rect: function () { this._FBU.rects = 0; return true; }, handle_FB_resize: function () { this._fb_width = this._FBU.width; this._fb_height = this._FBU.height; this._destBuff = new Uint8Array(this._fb_width * this._fb_height * 4); this._display.resize(this._fb_width, this._fb_height); this._onFBResize(this, this._fb_width, this._fb_height); this._timing.fbu_rt_start = (new Date()).getTime(); this._FBU.bytes = 0; this._FBU.rects -= 1; return true; }, ExtendedDesktopSize: function () { this._FBU.bytes = 1; if (this._sock.rQwait("ExtendedDesktopSize", this._FBU.bytes)) { return false; } this._supportsSetDesktopSize = true; var number_of_screens = this._sock.rQpeek8(); this._FBU.bytes = 4 + (number_of_screens * 16); if (this._sock.rQwait("ExtendedDesktopSize", this._FBU.bytes)) { return false; } this._sock.rQskipBytes(1); // number-of-screens this._sock.rQskipBytes(3); // padding for (var i = 0; i < number_of_screens; i += 1) { // Save the id and flags of the first screen if (i === 0) { this._screen_id = this._sock.rQshiftBytes(4); // id this._sock.rQskipBytes(2); // x-position this._sock.rQskipBytes(2); // y-position this._sock.rQskipBytes(2); // width this._sock.rQskipBytes(2); // height this._screen_flags = this._sock.rQshiftBytes(4); // flags } else { this._sock.rQskipBytes(16); } } /* * The x-position indicates the reason for the change: * * 0 - server resized on its own * 1 - this client requested the resize * 2 - another client requested the resize */ // We need to handle errors when we requested the resize. if (this._FBU.x === 1 && this._FBU.y !== 0) { var msg = ""; // The y-position indicates the status code from the server switch (this._FBU.y) { case 1: msg = "Resize is administratively prohibited"; break; case 2: msg = "Out of resources"; break; case 3: msg = "Invalid screen layout"; break; default: msg = "Unknown reason"; break; } Util.Info("Server did not accept the resize request: " + msg); return true; } this._encHandlers.handle_FB_resize(); return true; }, DesktopSize: function () { this._encHandlers.handle_FB_resize(); return true; }, Cursor: function () { Util.Debug(">> set_cursor"); var x = this._FBU.x; // hotspot-x var y = this._FBU.y; // hotspot-y var w = this._FBU.width; var h = this._FBU.height; var pixelslength = w * h * this._fb_Bpp; var masklength = Math.floor((w + 7) / 8) * h; this._FBU.bytes = pixelslength + masklength; if (this._sock.rQwait("cursor encoding", this._FBU.bytes)) { return false; } this._display.changeCursor(this._sock.rQshiftBytes(pixelslength), this._sock.rQshiftBytes(masklength), x, y, w, h); this._FBU.bytes = 0; this._FBU.rects--; Util.Debug("<< set_cursor"); return true; }, JPEG_quality_lo: function () { Util.Error("Server sent jpeg_quality pseudo-encoding"); }, compress_lo: function () { Util.Error("Server sent compress level pseudo-encoding"); } }; })(); ================================================ FILE: app/static/novnc/ui.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Copyright (C) 2015 Samuel Mannehed for Cendio AB * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ /* jslint white: false, browser: true */ /* global window, $D, Util, WebUtil, RFB, Display */ var UI; (function () { "use strict"; var resizeTimeout; // Load supporting scripts window.onscriptsload = function () { UI.load(); }; Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js", "keysymdef.js", "keyboard.js", "input.js", "display.js", "rfb.js", "keysym.js", "inflator.js"]); UI = { rfb_state : 'loaded', settingsOpen : false, connSettingsOpen : false, popupStatusTimeout: null, clipboardOpen: false, keyboardVisible: false, hideKeyboardTimeout: null, lastKeyboardinput: null, defaultKeyboardinputLen: 100, extraKeysVisible: false, ctrlOn: false, altOn: false, isTouchDevice: false, rememberedClipSetting: null, // Setup rfb object, load settings from browser storage, then call // UI.init to setup the UI/menus load: function (callback) { WebUtil.initSettings(UI.start, callback); }, // Render default UI and initialize settings menu start: function(callback) { UI.isTouchDevice = 'ontouchstart' in document.documentElement; // Stylesheet selection dropdown var sheet = WebUtil.selectStylesheet(); var sheets = WebUtil.getStylesheets(); var i; for (i = 0; i < sheets.length; i += 1) { UI.addOption($D('noVNC_stylesheet'),sheets[i].title, sheets[i].title); } // Logging selection dropdown var llevels = ['error', 'warn', 'info', 'debug']; for (i = 0; i < llevels.length; i += 1) { UI.addOption($D('noVNC_logging'),llevels[i], llevels[i]); } // Settings with immediate effects UI.initSetting('logging', 'warn'); WebUtil.init_logging(UI.getSetting('logging')); UI.initSetting('stylesheet', 'default'); WebUtil.selectStylesheet(null); // call twice to get around webkit bug WebUtil.selectStylesheet(UI.getSetting('stylesheet')); // if port == 80 (or 443) then it won't be present and should be // set manually var port = window.location.port; if (!port) { if (window.location.protocol.substring(0,5) == 'https') { port = 443; } else if (window.location.protocol.substring(0,4) == 'http') { port = 80; } } /* Populate the controls if defaults are provided in the URL */ UI.initSetting('host', window.location.hostname); UI.initSetting('port', port); UI.initSetting('password', ''); UI.initSetting('encrypt', (window.location.protocol === "https:")); UI.initSetting('true_color', true); UI.initSetting('cursor', !UI.isTouchDevice); UI.initSetting('resize', 'off'); UI.initSetting('shared', true); UI.initSetting('view_only', false); UI.initSetting('path', 'websockify'); UI.initSetting('repeaterID', ''); var autoconnect = WebUtil.getQueryVar('autoconnect', false); if (autoconnect === 'true' || autoconnect == '1') { autoconnect = true; UI.connect(); } else { autoconnect = false; } UI.updateVisualState(); $D('noVNC_host').focus(); // Show mouse selector buttons on touch screen devices if (UI.isTouchDevice) { // Show mobile buttons $D('noVNC_mobile_buttons').style.display = "inline"; UI.setMouseButton(); // Remove the address bar setTimeout(function() { window.scrollTo(0, 1); }, 100); UI.forceSetting('clip', true); } else { UI.initSetting('clip', false); } UI.setViewClip(); UI.setBarPosition(); Util.addEvent(window, 'resize', function () { UI.onresize(); UI.setViewClip(); UI.updateViewDrag(); UI.setBarPosition(); } ); var isSafari = (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1); // Only show the button if fullscreen is properly supported // * Safari doesn't support alphanumerical input while in fullscreen if (!isSafari && (document.documentElement.requestFullscreen || document.documentElement.mozRequestFullScreen || document.documentElement.webkitRequestFullscreen || document.body.msRequestFullscreen)) { $D('fullscreenButton').style.display = "inline"; Util.addEvent(window, 'fullscreenchange', UI.updateFullscreenButton); Util.addEvent(window, 'mozfullscreenchange', UI.updateFullscreenButton); Util.addEvent(window, 'webkitfullscreenchange', UI.updateFullscreenButton); Util.addEvent(window, 'msfullscreenchange', UI.updateFullscreenButton); } Util.addEvent(window, 'load', UI.keyboardinputReset); Util.addEvent(window, 'beforeunload', function () { if (UI.rfb && UI.rfb_state === 'normal') { return "You are currently connected."; } } ); // Show description by default when hosted at for kanaka.github.com if (location.host === "kanaka.github.io") { // Open the description dialog $D('noVNC_description').style.display = "block"; } else { // Show the connect panel on first load unless autoconnecting if (autoconnect === UI.connSettingsOpen) { UI.toggleConnectPanel(); } } // Add mouse event click/focus/blur event handlers to the UI UI.addMouseHandlers(); if (typeof callback === "function") { callback(UI.rfb); } }, initRFB: function () { try { UI.rfb = new RFB({'target': $D('noVNC_canvas'), 'onUpdateState': UI.updateState, 'onXvpInit': UI.updateXvpVisualState, 'onClipboard': UI.clipReceive, 'onFBUComplete': UI.FBUComplete, 'onFBResize': UI.updateViewDrag, 'onDesktopName': UI.updateDocumentTitle}); return true; } catch (exc) { UI.updateState(null, 'fatal', null, 'Unable to create RFB client -- ' + exc); return false; } }, addMouseHandlers: function() { // Setup interface handlers that can't be inline $D("noVNC_view_drag_button").onclick = UI.toggleViewDrag; $D("noVNC_mouse_button0").onclick = function () { UI.setMouseButton(1); }; $D("noVNC_mouse_button1").onclick = function () { UI.setMouseButton(2); }; $D("noVNC_mouse_button2").onclick = function () { UI.setMouseButton(4); }; $D("noVNC_mouse_button4").onclick = function () { UI.setMouseButton(0); }; $D("showKeyboard").onclick = UI.showKeyboard; $D("keyboardinput").oninput = UI.keyInput; $D("keyboardinput").onblur = UI.keyInputBlur; $D("keyboardinput").onsubmit = function () { return false; }; $D("showExtraKeysButton").onclick = UI.showExtraKeys; $D("toggleCtrlButton").onclick = UI.toggleCtrl; $D("toggleAltButton").onclick = UI.toggleAlt; $D("sendTabButton").onclick = UI.sendTab; $D("sendEscButton").onclick = UI.sendEsc; $D("sendCtrlAltDelButton").onclick = UI.sendCtrlAltDel; $D("xvpShutdownButton").onclick = UI.xvpShutdown; $D("xvpRebootButton").onclick = UI.xvpReboot; $D("xvpResetButton").onclick = UI.xvpReset; $D("noVNC_status").onclick = UI.togglePopupStatus; $D("noVNC_popup_status").onclick = UI.togglePopupStatus; $D("xvpButton").onclick = UI.toggleXvpPanel; $D("clipboardButton").onclick = UI.toggleClipboardPanel; $D("fullscreenButton").onclick = UI.toggleFullscreen; $D("settingsButton").onclick = UI.toggleSettingsPanel; $D("connectButton").onclick = UI.toggleConnectPanel; $D("disconnectButton").onclick = UI.disconnect; $D("descriptionButton").onclick = UI.toggleConnectPanel; $D("noVNC_clipboard_text").onfocus = UI.displayBlur; $D("noVNC_clipboard_text").onblur = UI.displayFocus; $D("noVNC_clipboard_text").onchange = UI.clipSend; $D("noVNC_clipboard_clear_button").onclick = UI.clipClear; $D("noVNC_settings_menu").onmouseover = UI.displayBlur; $D("noVNC_settings_menu").onmouseover = UI.displayFocus; $D("noVNC_apply").onclick = UI.settingsApply; $D("noVNC_connect_button").onclick = UI.connect; $D("noVNC_resize").onchange = UI.enableDisableViewClip; }, onresize: function (callback) { if (!UI.rfb) return; var size = UI.getCanvasLimit(); if (size && UI.rfb_state === 'normal' && UI.rfb.get_display()) { var display = UI.rfb.get_display(); var scaleType = UI.getSetting('resize'); if (scaleType === 'remote') { // use remote resizing // When the local window has been resized, wait until the size remains // the same for 0.5 seconds before sending the request for changing // the resolution of the session clearTimeout(resizeTimeout); resizeTimeout = setTimeout(function(){ display.set_maxWidth(size.w); display.set_maxHeight(size.h); Util.Debug('Attempting setDesktopSize(' + size.w + ', ' + size.h + ')'); UI.rfb.setDesktopSize(size.w, size.h); }, 500); } else if (scaleType === 'scale' || scaleType === 'downscale') { // use local scaling var downscaleOnly = scaleType === 'downscale'; var scaleRatio = display.autoscale(size.w, size.h, downscaleOnly); UI.rfb.get_mouse().set_scale(scaleRatio); Util.Debug('Scaling by ' + UI.rfb.get_mouse().get_scale()); } } }, getCanvasLimit: function () { var container = $D('noVNC_container'); // Hide the scrollbars until the size is calculated container.style.overflow = "hidden"; var pos = Util.getPosition(container); var w = pos.width; var h = pos.height; container.style.overflow = "visible"; if (isNaN(w) || isNaN(h)) { return false; } else { return {w: w, h: h}; } }, // Read form control compatible setting from cookie getSetting: function(name) { var ctrl = $D('noVNC_' + name); var val = WebUtil.readSetting(name); if (typeof val !== 'undefined' && val !== null && ctrl.type === 'checkbox') { if (val.toString().toLowerCase() in {'0':1, 'no':1, 'false':1}) { val = false; } else { val = true; } } return val; }, // Update cookie and form control setting. If value is not set, then // updates from control to current cookie setting. updateSetting: function(name, value) { // Save the cookie for this session if (typeof value !== 'undefined') { WebUtil.writeSetting(name, value); } // Update the settings control value = UI.getSetting(name); var ctrl = $D('noVNC_' + name); if (ctrl.type === 'checkbox') { ctrl.checked = value; } else if (typeof ctrl.options !== 'undefined') { for (var i = 0; i < ctrl.options.length; i += 1) { if (ctrl.options[i].value === value) { ctrl.selectedIndex = i; break; } } } else { /*Weird IE9 error leads to 'null' appearring in textboxes instead of ''.*/ if (value === null) { value = ""; } ctrl.value = value; } }, // Save control setting to cookie saveSetting: function(name) { var val, ctrl = $D('noVNC_' + name); if (ctrl.type === 'checkbox') { val = ctrl.checked; } else if (typeof ctrl.options !== 'undefined') { val = ctrl.options[ctrl.selectedIndex].value; } else { val = ctrl.value; } WebUtil.writeSetting(name, val); //Util.Debug("Setting saved '" + name + "=" + val + "'"); return val; }, // Initial page load read/initialization of settings initSetting: function(name, defVal) { // Check Query string followed by cookie var val = WebUtil.getQueryVar(name); if (val === null) { val = WebUtil.readSetting(name, defVal); } UI.updateSetting(name, val); return val; }, // Force a setting to be a certain value forceSetting: function(name, val) { UI.updateSetting(name, val); return val; }, // Show the popup status togglePopupStatus: function(text) { var psp = $D('noVNC_popup_status'); var closePopup = function() { psp.style.display = "none"; }; if (window.getComputedStyle(psp).display === 'none') { if (typeof text === 'string') { psp.innerHTML = text; } else { psp.innerHTML = $D('noVNC_status').innerHTML; } psp.style.display = "block"; psp.style.left = window.innerWidth/2 - parseInt(window.getComputedStyle(psp).width)/2 -30 + "px"; // Show the popup for a maximum of 1.5 seconds UI.popupStatusTimeout = setTimeout(function() { closePopup(); }, 1500); } else { clearTimeout(UI.popupStatusTimeout); closePopup(); } }, // Show the XVP panel toggleXvpPanel: function() { // Close the description panel $D('noVNC_description').style.display = "none"; // Close settings if open if (UI.settingsOpen === true) { UI.settingsApply(); UI.closeSettingsMenu(); } // Close connection settings if open if (UI.connSettingsOpen === true) { UI.toggleConnectPanel(); } // Close clipboard panel if open if (UI.clipboardOpen === true) { UI.toggleClipboardPanel(); } // Toggle XVP panel if (UI.xvpOpen === true) { $D('noVNC_xvp').style.display = "none"; $D('xvpButton').className = "noVNC_status_button"; UI.xvpOpen = false; } else { $D('noVNC_xvp').style.display = "block"; $D('xvpButton').className = "noVNC_status_button_selected"; UI.xvpOpen = true; } }, // Show the clipboard panel toggleClipboardPanel: function() { // Close the description panel $D('noVNC_description').style.display = "none"; // Close settings if open if (UI.settingsOpen === true) { UI.settingsApply(); UI.closeSettingsMenu(); } // Close connection settings if open if (UI.connSettingsOpen === true) { UI.toggleConnectPanel(); } // Close XVP panel if open if (UI.xvpOpen === true) { UI.toggleXvpPanel(); } // Toggle Clipboard Panel if (UI.clipboardOpen === true) { $D('noVNC_clipboard').style.display = "none"; $D('clipboardButton').className = "noVNC_status_button"; UI.clipboardOpen = false; } else { $D('noVNC_clipboard').style.display = "block"; $D('clipboardButton').className = "noVNC_status_button_selected"; UI.clipboardOpen = true; } }, // Toggle fullscreen mode toggleFullscreen: function() { if (document.fullscreenElement || // alternative standard method document.mozFullScreenElement || // currently working methods document.webkitFullscreenElement || document.msFullscreenElement) { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } else { if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); } else if (document.documentElement.mozRequestFullScreen) { document.documentElement.mozRequestFullScreen(); } else if (document.documentElement.webkitRequestFullscreen) { document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); } else if (document.body.msRequestFullscreen) { document.body.msRequestFullscreen(); } } UI.enableDisableViewClip(); UI.updateFullscreenButton(); }, updateFullscreenButton: function() { if (document.fullscreenElement || // alternative standard method document.mozFullScreenElement || // currently working methods document.webkitFullscreenElement || document.msFullscreenElement ) { $D('fullscreenButton').className = "noVNC_status_button_selected"; } else { $D('fullscreenButton').className = "noVNC_status_button"; } }, // Show the connection settings panel/menu toggleConnectPanel: function() { // Close the description panel $D('noVNC_description').style.display = "none"; // Close connection settings if open if (UI.settingsOpen === true) { UI.settingsApply(); UI.closeSettingsMenu(); $D('connectButton').className = "noVNC_status_button"; } // Close clipboard panel if open if (UI.clipboardOpen === true) { UI.toggleClipboardPanel(); } // Close XVP panel if open if (UI.xvpOpen === true) { UI.toggleXvpPanel(); } // Toggle Connection Panel if (UI.connSettingsOpen === true) { $D('noVNC_controls').style.display = "none"; $D('connectButton').className = "noVNC_status_button"; UI.connSettingsOpen = false; UI.saveSetting('host'); UI.saveSetting('port'); //UI.saveSetting('password'); } else { $D('noVNC_controls').style.display = "block"; $D('connectButton').className = "noVNC_status_button_selected"; UI.connSettingsOpen = true; $D('noVNC_host').focus(); } }, // Toggle the settings menu: // On open, settings are refreshed from saved cookies. // On close, settings are applied toggleSettingsPanel: function() { // Close the description panel $D('noVNC_description').style.display = "none"; if (UI.settingsOpen) { UI.settingsApply(); UI.closeSettingsMenu(); } else { UI.updateSetting('encrypt'); UI.updateSetting('true_color'); if (Util.browserSupportsCursorURIs()) { UI.updateSetting('cursor'); } else { UI.updateSetting('cursor', !UI.isTouchDevice); $D('noVNC_cursor').disabled = true; } UI.updateSetting('clip'); UI.updateSetting('resize'); UI.updateSetting('shared'); UI.updateSetting('view_only'); UI.updateSetting('path'); UI.updateSetting('repeaterID'); UI.updateSetting('stylesheet'); UI.updateSetting('logging'); UI.openSettingsMenu(); } }, // Open menu openSettingsMenu: function() { // Close the description panel $D('noVNC_description').style.display = "none"; // Close clipboard panel if open if (UI.clipboardOpen === true) { UI.toggleClipboardPanel(); } // Close connection settings if open if (UI.connSettingsOpen === true) { UI.toggleConnectPanel(); } // Close XVP panel if open if (UI.xvpOpen === true) { UI.toggleXvpPanel(); } $D('noVNC_settings').style.display = "block"; $D('settingsButton').className = "noVNC_status_button_selected"; UI.settingsOpen = true; }, // Close menu (without applying settings) closeSettingsMenu: function() { $D('noVNC_settings').style.display = "none"; $D('settingsButton').className = "noVNC_status_button"; UI.settingsOpen = false; }, // Save/apply settings when 'Apply' button is pressed settingsApply: function() { //Util.Debug(">> settingsApply"); UI.saveSetting('encrypt'); UI.saveSetting('true_color'); if (Util.browserSupportsCursorURIs()) { UI.saveSetting('cursor'); } UI.saveSetting('resize'); if (UI.getSetting('resize') === 'downscale' || UI.getSetting('resize') === 'scale') { UI.forceSetting('clip', false); } UI.saveSetting('clip'); UI.saveSetting('shared'); UI.saveSetting('view_only'); UI.saveSetting('path'); UI.saveSetting('repeaterID'); UI.saveSetting('stylesheet'); UI.saveSetting('logging'); // Settings with immediate (non-connected related) effect WebUtil.selectStylesheet(UI.getSetting('stylesheet')); WebUtil.init_logging(UI.getSetting('logging')); UI.setViewClip(); UI.updateViewDrag(); //Util.Debug("<< settingsApply"); }, setPassword: function() { UI.rfb.sendPassword($D('noVNC_password').value); //Reset connect button. $D('noVNC_connect_button').value = "Connect"; $D('noVNC_connect_button').onclick = UI.connect; //Hide connection panel. UI.toggleConnectPanel(); return false; }, sendCtrlAltDel: function() { UI.rfb.sendCtrlAltDel(); }, xvpShutdown: function() { UI.rfb.xvpShutdown(); }, xvpReboot: function() { UI.rfb.xvpReboot(); }, xvpReset: function() { UI.rfb.xvpReset(); }, setMouseButton: function(num) { if (typeof num === 'undefined') { // Disable mouse buttons num = -1; } if (UI.rfb) { UI.rfb.get_mouse().set_touchButton(num); } var blist = [0, 1,2,4]; for (var b = 0; b < blist.length; b++) { var button = $D('noVNC_mouse_button' + blist[b]); if (blist[b] === num) { button.style.display = ""; } else { button.style.display = "none"; } } }, updateState: function(rfb, state, oldstate, msg) { UI.rfb_state = state; var klass; switch (state) { case 'failed': case 'fatal': klass = "noVNC_status_error"; break; case 'normal': klass = "noVNC_status_normal"; break; case 'disconnected': $D('noVNC_logo').style.display = "block"; $D('noVNC_container').style.display = "none"; /* falls through */ case 'loaded': klass = "noVNC_status_normal"; break; case 'password': UI.toggleConnectPanel(); $D('noVNC_connect_button').value = "Send Password"; $D('noVNC_connect_button').onclick = UI.setPassword; $D('noVNC_password').focus(); klass = "noVNC_status_warn"; break; default: klass = "noVNC_status_warn"; break; } if (typeof(msg) !== 'undefined') { $D('noVNC-control-bar').setAttribute("class", klass); $D('noVNC_status').innerHTML = msg; } UI.updateVisualState(); }, // Disable/enable controls depending on connection state updateVisualState: function() { var connected = UI.rfb && UI.rfb_state === 'normal'; //Util.Debug(">> updateVisualState"); $D('noVNC_encrypt').disabled = connected; $D('noVNC_true_color').disabled = connected; if (Util.browserSupportsCursorURIs()) { $D('noVNC_cursor').disabled = connected; } else { UI.updateSetting('cursor', !UI.isTouchDevice); $D('noVNC_cursor').disabled = true; } UI.enableDisableViewClip(); $D('noVNC_resize').disabled = connected; $D('noVNC_shared').disabled = connected; $D('noVNC_view_only').disabled = connected; $D('noVNC_path').disabled = connected; $D('noVNC_repeaterID').disabled = connected; if (connected) { UI.setViewClip(); UI.setMouseButton(1); $D('clipboardButton').style.display = "inline"; $D('showKeyboard').style.display = "inline"; $D('noVNC_extra_keys').style.display = ""; $D('sendCtrlAltDelButton').style.display = "inline"; } else { UI.setMouseButton(); $D('clipboardButton').style.display = "none"; $D('showKeyboard').style.display = "none"; $D('noVNC_extra_keys').style.display = "none"; $D('sendCtrlAltDelButton').style.display = "none"; UI.updateXvpVisualState(0); } // State change disables viewport dragging. // It is enabled (toggled) by direct click on the button UI.updateViewDrag(false); switch (UI.rfb_state) { case 'fatal': case 'failed': case 'disconnected': $D('connectButton').style.display = ""; $D('disconnectButton').style.display = "none"; UI.connSettingsOpen = false; UI.toggleConnectPanel(); break; case 'loaded': $D('connectButton').style.display = ""; $D('disconnectButton').style.display = "none"; break; default: $D('connectButton').style.display = "none"; $D('disconnectButton').style.display = ""; break; } //Util.Debug("<< updateVisualState"); }, // Disable/enable XVP button updateXvpVisualState: function(ver) { if (ver >= 1) { $D('xvpButton').style.display = 'inline'; } else { $D('xvpButton').style.display = 'none'; // Close XVP panel if open if (UI.xvpOpen === true) { UI.toggleXvpPanel(); } } }, // This resize can not be done until we know from the first Frame Buffer Update // if it is supported or not. // The resize is needed to make sure the server desktop size is updated to the // corresponding size of the current local window when reconnecting to an // existing session. FBUComplete: function(rfb, fbu) { UI.onresize(); UI.rfb.set_onFBUComplete(function() { }); }, // Display the desktop name in the document title updateDocumentTitle: function(rfb, name) { document.title = name + " - noVNC"; }, clipReceive: function(rfb, text) { Util.Debug(">> UI.clipReceive: " + text.substr(0,40) + "..."); $D('noVNC_clipboard_text').value = text; Util.Debug("<< UI.clipReceive"); }, connect: function() { UI.closeSettingsMenu(); UI.toggleConnectPanel(); var host = $D('noVNC_host').value; var port = $D('noVNC_port').value; var password = $D('noVNC_password').value; var path = $D('noVNC_path').value; if ((!host) || (!port)) { throw new Error("Must set host and port"); } if (!UI.initRFB()) return; UI.rfb.set_encrypt(UI.getSetting('encrypt')); UI.rfb.set_true_color(UI.getSetting('true_color')); UI.rfb.set_local_cursor(UI.getSetting('cursor')); UI.rfb.set_shared(UI.getSetting('shared')); UI.rfb.set_view_only(UI.getSetting('view_only')); UI.rfb.set_repeaterID(UI.getSetting('repeaterID')); UI.rfb.connect(host, port, password, path); //Close dialog. setTimeout(UI.setBarPosition, 100); $D('noVNC_logo').style.display = "none"; $D('noVNC_container').style.display = "inline"; }, disconnect: function() { UI.closeSettingsMenu(); UI.rfb.disconnect(); // Restore the callback used for initial resize UI.rfb.set_onFBUComplete(UI.FBUComplete); $D('noVNC_logo').style.display = "block"; $D('noVNC_container').style.display = "none"; // Don't display the connection settings until we're actually disconnected }, displayBlur: function() { if (!UI.rfb) return; UI.rfb.get_keyboard().set_focused(false); UI.rfb.get_mouse().set_focused(false); }, displayFocus: function() { if (!UI.rfb) return; UI.rfb.get_keyboard().set_focused(true); UI.rfb.get_mouse().set_focused(true); }, clipClear: function() { $D('noVNC_clipboard_text').value = ""; UI.rfb.clipboardPasteFrom(""); }, clipSend: function() { var text = $D('noVNC_clipboard_text').value; Util.Debug(">> UI.clipSend: " + text.substr(0,40) + "..."); UI.rfb.clipboardPasteFrom(text); Util.Debug("<< UI.clipSend"); }, // Set and configure viewport clipping setViewClip: function(clip) { var display; if (UI.rfb) { display = UI.rfb.get_display(); } else { UI.forceSetting('clip', clip); return; } var cur_clip = display.get_viewport(); if (typeof(clip) !== 'boolean') { // Use current setting clip = UI.getSetting('clip'); } if (clip && !cur_clip) { // Turn clipping on UI.updateSetting('clip', true); } else if (!clip && cur_clip) { // Turn clipping off UI.updateSetting('clip', false); display.set_viewport(false); // Disable max dimensions display.set_maxWidth(0); display.set_maxHeight(0); display.viewportChangeSize(); } if (UI.getSetting('clip')) { // If clipping, update clipping settings display.set_viewport(true); var size = UI.getCanvasLimit(); if (size) { display.set_maxWidth(size.w); display.set_maxHeight(size.h); // Hide potential scrollbars that can skew the position $D('noVNC_container').style.overflow = "hidden"; // The x position marks the left margin of the canvas, // remove the margin from both sides to keep it centered var new_w = size.w - (2 * Util.getPosition($D('noVNC_canvas')).x); $D('noVNC_container').style.overflow = "visible"; display.viewportChangeSize(new_w, size.h); } } }, // Handle special cases where clipping is forced on/off or locked enableDisableViewClip: function () { var resizeElem = $D('noVNC_resize'); var connected = UI.rfb && UI.rfb_state === 'normal'; if (resizeElem.value === 'downscale' || resizeElem.value === 'scale') { // Disable clipping if we are scaling UI.setViewClip(false); $D('noVNC_clip').disabled = true; } else if (document.msFullscreenElement) { // The browser is IE and we are in fullscreen mode. // - We need to force clipping while in fullscreen since // scrollbars doesn't work. UI.togglePopupStatus("Forcing clipping mode since scrollbars aren't supported by IE in fullscreen"); UI.rememberedClipSetting = UI.getSetting('clip'); UI.setViewClip(true); $D('noVNC_clip').disabled = true; } else if (document.body.msRequestFullscreen && UI.rememberedClip !== null) { // Restore view clip to what it was before fullscreen on IE UI.setViewClip(UI.rememberedClipSetting); $D('noVNC_clip').disabled = connected || UI.isTouchDevice; } else { $D('noVNC_clip').disabled = connected || UI.isTouchDevice; if (UI.isTouchDevice) { UI.setViewClip(true); } } }, // Update the viewport drag/move button updateViewDrag: function(drag) { if (!UI.rfb) return; var vmb = $D('noVNC_view_drag_button'); // Check if viewport drag is possible if (UI.rfb_state === 'normal' && UI.rfb.get_display().get_viewport() && UI.rfb.get_display().clippingDisplay()) { // Show and enable the drag button vmb.style.display = "inline"; vmb.disabled = false; } else { // The VNC content is the same size as // or smaller than the display if (UI.rfb.get_viewportDrag) { // Turn off viewport drag when it's // active since it can't be used here vmb.className = "noVNC_status_button"; UI.rfb.set_viewportDrag(false); } // Disable or hide the drag button if (UI.rfb_state === 'normal' && UI.isTouchDevice) { vmb.style.display = "inline"; vmb.disabled = true; } else { vmb.style.display = "none"; } return; } if (typeof(drag) !== "undefined" && typeof(drag) !== "object") { if (drag) { vmb.className = "noVNC_status_button_selected"; UI.rfb.set_viewportDrag(true); } else { vmb.className = "noVNC_status_button"; UI.rfb.set_viewportDrag(false); } } }, toggleViewDrag: function() { if (!UI.rfb) return; var vmb = $D('noVNC_view_drag_button'); if (UI.rfb.get_viewportDrag()) { vmb.className = "noVNC_status_button"; UI.rfb.set_viewportDrag(false); } else { vmb.className = "noVNC_status_button_selected"; UI.rfb.set_viewportDrag(true); } }, // On touch devices, show the OS keyboard showKeyboard: function() { var kbi = $D('keyboardinput'); var skb = $D('showKeyboard'); var l = kbi.value.length; if(UI.keyboardVisible === false) { kbi.focus(); try { kbi.setSelectionRange(l, l); } // Move the caret to the end catch (err) {} // setSelectionRange is undefined in Google Chrome UI.keyboardVisible = true; skb.className = "noVNC_status_button_selected"; } else if(UI.keyboardVisible === true) { kbi.blur(); skb.className = "noVNC_status_button"; UI.keyboardVisible = false; } }, keepKeyboard: function() { clearTimeout(UI.hideKeyboardTimeout); if(UI.keyboardVisible === true) { $D('keyboardinput').focus(); $D('showKeyboard').className = "noVNC_status_button_selected"; } else if(UI.keyboardVisible === false) { $D('keyboardinput').blur(); $D('showKeyboard').className = "noVNC_status_button"; } }, keyboardinputReset: function() { var kbi = $D('keyboardinput'); kbi.value = new Array(UI.defaultKeyboardinputLen).join("_"); UI.lastKeyboardinput = kbi.value; }, // When normal keyboard events are left uncought, use the input events from // the keyboardinput element instead and generate the corresponding key events. // This code is required since some browsers on Android are inconsistent in // sending keyCodes in the normal keyboard events when using on screen keyboards. keyInput: function(event) { if (!UI.rfb) return; var newValue = event.target.value; if (!UI.lastKeyboardinput) { UI.keyboardinputReset(); } var oldValue = UI.lastKeyboardinput; var newLen; try { // Try to check caret position since whitespace at the end // will not be considered by value.length in some browsers newLen = Math.max(event.target.selectionStart, newValue.length); } catch (err) { // selectionStart is undefined in Google Chrome newLen = newValue.length; } var oldLen = oldValue.length; var backspaces; var inputs = newLen - oldLen; if (inputs < 0) { backspaces = -inputs; } else { backspaces = 0; } // Compare the old string with the new to account for // text-corrections or other input that modify existing text var i; for (i = 0; i < Math.min(oldLen, newLen); i++) { if (newValue.charAt(i) != oldValue.charAt(i)) { inputs = newLen - i; backspaces = oldLen - i; break; } } // Send the key events for (i = 0; i < backspaces; i++) { UI.rfb.sendKey(XK_BackSpace); } for (i = newLen - inputs; i < newLen; i++) { UI.rfb.sendKey(newValue.charCodeAt(i)); } // Control the text content length in the keyboardinput element if (newLen > 2 * UI.defaultKeyboardinputLen) { UI.keyboardinputReset(); } else if (newLen < 1) { // There always have to be some text in the keyboardinput // element with which backspace can interact. UI.keyboardinputReset(); // This sometimes causes the keyboard to disappear for a second // but it is required for the android keyboard to recognize that // text has been added to the field event.target.blur(); // This has to be ran outside of the input handler in order to work setTimeout(function() { UI.keepKeyboard(); }, 0); } else { UI.lastKeyboardinput = newValue; } }, keyInputBlur: function() { $D('showKeyboard').className = "noVNC_status_button"; //Weird bug in iOS if you change keyboardVisible //here it does not actually occur so next time //you click keyboard icon it doesnt work. UI.hideKeyboardTimeout = setTimeout(function() { UI.setKeyboard(); },100); }, showExtraKeys: function() { UI.keepKeyboard(); if(UI.extraKeysVisible === false) { $D('toggleCtrlButton').style.display = "inline"; $D('toggleAltButton').style.display = "inline"; $D('sendTabButton').style.display = "inline"; $D('sendEscButton').style.display = "inline"; $D('showExtraKeysButton').className = "noVNC_status_button_selected"; UI.extraKeysVisible = true; } else if(UI.extraKeysVisible === true) { $D('toggleCtrlButton').style.display = ""; $D('toggleAltButton').style.display = ""; $D('sendTabButton').style.display = ""; $D('sendEscButton').style.display = ""; $D('showExtraKeysButton').className = "noVNC_status_button"; UI.extraKeysVisible = false; } }, toggleCtrl: function() { UI.keepKeyboard(); if(UI.ctrlOn === false) { UI.rfb.sendKey(XK_Control_L, true); $D('toggleCtrlButton').className = "noVNC_status_button_selected"; UI.ctrlOn = true; } else if(UI.ctrlOn === true) { UI.rfb.sendKey(XK_Control_L, false); $D('toggleCtrlButton').className = "noVNC_status_button"; UI.ctrlOn = false; } }, toggleAlt: function() { UI.keepKeyboard(); if(UI.altOn === false) { UI.rfb.sendKey(XK_Alt_L, true); $D('toggleAltButton').className = "noVNC_status_button_selected"; UI.altOn = true; } else if(UI.altOn === true) { UI.rfb.sendKey(XK_Alt_L, false); $D('toggleAltButton').className = "noVNC_status_button"; UI.altOn = false; } }, sendTab: function() { UI.keepKeyboard(); UI.rfb.sendKey(XK_Tab); }, sendEsc: function() { UI.keepKeyboard(); UI.rfb.sendKey(XK_Escape); }, setKeyboard: function() { UI.keyboardVisible = false; }, //Helper to add options to dropdown. addOption: function(selectbox, text, value) { var optn = document.createElement("OPTION"); optn.text = text; optn.value = value; selectbox.options.add(optn); }, setBarPosition: function() { $D('noVNC-control-bar').style.top = (window.pageYOffset) + 'px'; $D('noVNC_mobile_buttons').style.left = (window.pageXOffset) + 'px'; var vncwidth = $D('noVNC_screen').style.offsetWidth; $D('noVNC-control-bar').style.width = vncwidth + 'px'; } }; })(); ================================================ FILE: app/static/novnc/util.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ /* jshint white: false, nonstandard: true */ /*global window, console, document, navigator, ActiveXObject, INCLUDE_URI */ // Globals defined here var Util = {}; /* * Make arrays quack */ var addFunc = function (cl, name, func) { if (!cl.prototype[name]) { Object.defineProperty(cl.prototype, name, { enumerable: false, value: func }); } }; addFunc(Array, 'push8', function (num) { "use strict"; this.push(num & 0xFF); }); addFunc(Array, 'push16', function (num) { "use strict"; this.push((num >> 8) & 0xFF, num & 0xFF); }); addFunc(Array, 'push32', function (num) { "use strict"; this.push((num >> 24) & 0xFF, (num >> 16) & 0xFF, (num >> 8) & 0xFF, num & 0xFF); }); // IE does not support map (even in IE9) //This prototype is provided by the Mozilla foundation and //is distributed under the MIT license. //http://www.ibiblio.org/pub/Linux/LICENSES/mit.license addFunc(Array, 'map', function (fun /*, thisp*/) { "use strict"; var len = this.length; if (typeof fun != "function") { throw new TypeError(); } var res = new Array(len); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) { res[i] = fun.call(thisp, this[i], i, this); } } return res; }); // IE <9 does not support indexOf //This prototype is provided by the Mozilla foundation and //is distributed under the MIT license. //http://www.ibiblio.org/pub/Linux/LICENSES/mit.license addFunc(Array, 'indexOf', function (elt /*, from*/) { "use strict"; var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) { from += len; } for (; from < len; from++) { if (from in this && this[from] === elt) { return from; } } return -1; }); // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys if (!Object.keys) { Object.keys = (function () { 'use strict'; var hasOwnProperty = Object.prototype.hasOwnProperty, hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), dontEnums = [ 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor' ], dontEnumsLength = dontEnums.length; return function (obj) { if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) { throw new TypeError('Object.keys called on non-object'); } var result = [], prop, i; for (prop in obj) { if (hasOwnProperty.call(obj, prop)) { result.push(prop); } } if (hasDontEnumBug) { for (i = 0; i < dontEnumsLength; i++) { if (hasOwnProperty.call(obj, dontEnums[i])) { result.push(dontEnums[i]); } } } return result; }; })(); } // PhantomJS 1.x doesn't support bind, // so leave this in until PhantomJS 2.0 is released //This prototype is provided by the Mozilla foundation and //is distributed under the MIT license. //http://www.ibiblio.org/pub/Linux/LICENSES/mit.license addFunc(Function, 'bind', function (oThis) { if (typeof this !== "function") { // closest thing possible to the ECMAScript 5 // internal IsCallable function throw new TypeError("Function.prototype.bind - " + "what is trying to be bound is not callable"); } var aArgs = Array.prototype.slice.call(arguments, 1), fToBind = this, fNOP = function () {}, fBound = function () { return fToBind.apply(this instanceof fNOP && oThis ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); }; fNOP.prototype = this.prototype; fBound.prototype = new fNOP(); return fBound; }); // // requestAnimationFrame shim with setTimeout fallback // window.requestAnimFrame = (function () { "use strict"; return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; })(); /* * ------------------------------------------------------ * Namespaced in Util * ------------------------------------------------------ */ /* * Logging/debug routines */ Util._log_level = 'warn'; Util.init_logging = function (level) { "use strict"; if (typeof level === 'undefined') { level = Util._log_level; } else { Util._log_level = level; } if (typeof window.console === "undefined") { if (typeof window.opera !== "undefined") { window.console = { 'log' : window.opera.postError, 'warn' : window.opera.postError, 'error': window.opera.postError }; } else { window.console = { 'log' : function (m) {}, 'warn' : function (m) {}, 'error': function (m) {} }; } } Util.Debug = Util.Info = Util.Warn = Util.Error = function (msg) {}; /* jshint -W086 */ switch (level) { case 'debug': Util.Debug = function (msg) { console.log(msg); }; case 'info': Util.Info = function (msg) { console.log(msg); }; case 'warn': Util.Warn = function (msg) { console.warn(msg); }; case 'error': Util.Error = function (msg) { console.error(msg); }; case 'none': break; default: throw new Error("invalid logging type '" + level + "'"); } /* jshint +W086 */ }; Util.get_logging = function () { return Util._log_level; }; // Initialize logging level Util.init_logging(); Util.make_property = function (proto, name, mode, type) { "use strict"; var getter; if (type === 'arr') { getter = function (idx) { if (typeof idx !== 'undefined') { return this['_' + name][idx]; } else { return this['_' + name]; } }; } else { getter = function () { return this['_' + name]; }; } var make_setter = function (process_val) { if (process_val) { return function (val, idx) { if (typeof idx !== 'undefined') { this['_' + name][idx] = process_val(val); } else { this['_' + name] = process_val(val); } }; } else { return function (val, idx) { if (typeof idx !== 'undefined') { this['_' + name][idx] = val; } else { this['_' + name] = val; } }; } }; var setter; if (type === 'bool') { setter = make_setter(function (val) { if (!val || (val in {'0': 1, 'no': 1, 'false': 1})) { return false; } else { return true; } }); } else if (type === 'int') { setter = make_setter(function (val) { return parseInt(val, 10); }); } else if (type === 'float') { setter = make_setter(parseFloat); } else if (type === 'str') { setter = make_setter(String); } else if (type === 'func') { setter = make_setter(function (val) { if (!val) { return function () {}; } else { return val; } }); } else if (type === 'arr' || type === 'dom' || type == 'raw') { setter = make_setter(); } else { throw new Error('Unknown property type ' + type); // some sanity checking } // set the getter if (typeof proto['get_' + name] === 'undefined') { proto['get_' + name] = getter; } // set the setter if needed if (typeof proto['set_' + name] === 'undefined') { if (mode === 'rw') { proto['set_' + name] = setter; } else if (mode === 'wo') { proto['set_' + name] = function (val, idx) { if (typeof this['_' + name] !== 'undefined') { throw new Error(name + " can only be set once"); } setter.call(this, val, idx); }; } } // make a special setter that we can use in set defaults proto['_raw_set_' + name] = function (val, idx) { setter.call(this, val, idx); //delete this['_init_set_' + name]; // remove it after use }; }; Util.make_properties = function (constructor, arr) { "use strict"; for (var i = 0; i < arr.length; i++) { Util.make_property(constructor.prototype, arr[i][0], arr[i][1], arr[i][2]); } }; Util.set_defaults = function (obj, conf, defaults) { var defaults_keys = Object.keys(defaults); var conf_keys = Object.keys(conf); var keys_obj = {}; var i; for (i = 0; i < defaults_keys.length; i++) { keys_obj[defaults_keys[i]] = 1; } for (i = 0; i < conf_keys.length; i++) { keys_obj[conf_keys[i]] = 1; } var keys = Object.keys(keys_obj); for (i = 0; i < keys.length; i++) { var setter = obj['_raw_set_' + keys[i]]; if (!setter) { Util.Warn('Invalid property ' + keys[i]); continue; } if (keys[i] in conf) { setter.call(obj, conf[keys[i]]); } else { setter.call(obj, defaults[keys[i]]); } } }; /* * Decode from UTF-8 */ Util.decodeUTF8 = function (utf8string) { "use strict"; return decodeURIComponent(escape(utf8string)); }; /* * Cross-browser routines */ // Dynamically load scripts without using document.write() // Reference: http://unixpapa.com/js/dyna.html // // Handles the case where load_scripts is invoked from a script that // itself is loaded via load_scripts. Once all scripts are loaded the // window.onscriptsloaded handler is called (if set). Util.get_include_uri = function () { return (typeof INCLUDE_URI !== "undefined") ? INCLUDE_URI : "include/"; }; Util._loading_scripts = []; Util._pending_scripts = []; Util.load_scripts = function (files) { "use strict"; var head = document.getElementsByTagName('head')[0], script, ls = Util._loading_scripts, ps = Util._pending_scripts; var loadFunc = function (e) { while (ls.length > 0 && (ls[0].readyState === 'loaded' || ls[0].readyState === 'complete')) { // For IE, append the script to trigger execution var s = ls.shift(); //console.log("loaded script: " + s.src); head.appendChild(s); } if (!this.readyState || (Util.Engine.presto && this.readyState === 'loaded') || this.readyState === 'complete') { if (ps.indexOf(this) >= 0) { this.onload = this.onreadystatechange = null; //console.log("completed script: " + this.src); ps.splice(ps.indexOf(this), 1); // Call window.onscriptsload after last script loads if (ps.length === 0 && window.onscriptsload) { window.onscriptsload(); } } } }; for (var f = 0; f < files.length; f++) { script = document.createElement('script'); script.type = 'text/javascript'; script.src = Util.get_include_uri() + files[f]; //console.log("loading script: " + script.src); script.onload = script.onreadystatechange = loadFunc; // In-order script execution tricks if (Util.Engine.trident) { // For IE wait until readyState is 'loaded' before // appending it which will trigger execution // http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order ls.push(script); } else { // For webkit and firefox set async=false and append now // https://developer.mozilla.org/en-US/docs/HTML/Element/script script.async = false; head.appendChild(script); } ps.push(script); } }; Util.getPosition = function(obj) { "use strict"; // NB(sross): the Mozilla developer reference seems to indicate that // getBoundingClientRect includes border and padding, so the canvas // style should NOT include either. var objPosition = obj.getBoundingClientRect(); return {'x': objPosition.left + window.pageXOffset, 'y': objPosition.top + window.pageYOffset, 'width': objPosition.width, 'height': objPosition.height}; }; // Get mouse event position in DOM element Util.getEventPosition = function (e, obj, scale) { "use strict"; var evt, docX, docY, pos; //if (!e) evt = window.event; evt = (e ? e : window.event); evt = (evt.changedTouches ? evt.changedTouches[0] : evt.touches ? evt.touches[0] : evt); if (evt.pageX || evt.pageY) { docX = evt.pageX; docY = evt.pageY; } else if (evt.clientX || evt.clientY) { docX = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; docY = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop; } pos = Util.getPosition(obj); if (typeof scale === "undefined") { scale = 1; } var realx = docX - pos.x; var realy = docY - pos.y; var x = Math.max(Math.min(realx, pos.width - 1), 0); var y = Math.max(Math.min(realy, pos.height - 1), 0); return {'x': x / scale, 'y': y / scale, 'realx': realx / scale, 'realy': realy / scale}; }; // Event registration. Based on: http://www.scottandrew.com/weblog/articles/cbs-events Util.addEvent = function (obj, evType, fn) { "use strict"; if (obj.attachEvent) { var r = obj.attachEvent("on" + evType, fn); return r; } else if (obj.addEventListener) { obj.addEventListener(evType, fn, false); return true; } else { throw new Error("Handler could not be attached"); } }; Util.removeEvent = function (obj, evType, fn) { "use strict"; if (obj.detachEvent) { var r = obj.detachEvent("on" + evType, fn); return r; } else if (obj.removeEventListener) { obj.removeEventListener(evType, fn, false); return true; } else { throw new Error("Handler could not be removed"); } }; Util.stopEvent = function (e) { "use strict"; if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } }; Util._cursor_uris_supported = null; Util.browserSupportsCursorURIs = function () { if (Util._cursor_uris_supported === null) { try { var target = document.createElement('canvas'); target.style.cursor = 'url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default'; if (target.style.cursor) { Util.Info("Data URI scheme cursor supported"); Util._cursor_uris_supported = true; } else { Util.Warn("Data URI scheme cursor not supported"); Util._cursor_uris_supported = false; } } catch (exc) { Util.Error("Data URI scheme cursor test exception: " + exc); Util._cursor_uris_supported = false; } } return Util._cursor_uris_supported; }; // Set browser engine versions. Based on mootools. Util.Features = {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)}; (function () { "use strict"; // 'presto': (function () { return (!window.opera) ? false : true; }()), var detectPresto = function () { return !!window.opera; }; // 'trident': (function () { return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4); var detectTrident = function () { if (!window.ActiveXObject) { return false; } else { if (window.XMLHttpRequest) { return (document.querySelectorAll) ? 6 : 5; } else { return 4; } } }; // 'webkit': (function () { try { return (navigator.taintEnabled) ? false : ((Util.Features.xpath) ? ((Util.Features.query) ? 525 : 420) : 419); } catch (e) { return false; } }()), var detectInitialWebkit = function () { try { if (navigator.taintEnabled) { return false; } else { if (Util.Features.xpath) { return (Util.Features.query) ? 525 : 420; } else { return 419; } } } catch (e) { return false; } }; var detectActualWebkit = function (initial_ver) { var re = /WebKit\/([0-9\.]*) /; var str_ver = (navigator.userAgent.match(re) || ['', initial_ver])[1]; return parseFloat(str_ver, 10); }; // 'gecko': (function () { return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19ssName) ? 19 : 18 : 18); }()) var detectGecko = function () { /* jshint -W041 */ if (!document.getBoxObjectFor && window.mozInnerScreenX == null) { return false; } else { return (document.getElementsByClassName) ? 19 : 18; } /* jshint +W041 */ }; Util.Engine = { // Version detection break in Opera 11.60 (errors on arguments.callee.caller reference) //'presto': (function() { // return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925)); }()), 'presto': detectPresto(), 'trident': detectTrident(), 'webkit': detectInitialWebkit(), 'gecko': detectGecko(), }; if (Util.Engine.webkit) { // Extract actual webkit version if available Util.Engine.webkit = detectActualWebkit(Util.Engine.webkit); } })(); Util.Flash = (function () { "use strict"; var v, version; try { v = navigator.plugins['Shockwave Flash'].description; } catch (err1) { try { v = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version'); } catch (err2) { v = '0 r0'; } } version = v.match(/\d+/g); return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0}; }()); ================================================ FILE: app/static/novnc/websock.js ================================================ /* * Websock: high-performance binary WebSockets * Copyright (C) 2012 Joel Martin * Licensed under MPL 2.0 (see LICENSE.txt) * * Websock is similar to the standard WebSocket object but Websock * enables communication with raw TCP sockets (i.e. the binary stream) * via websockify. This is accomplished by base64 encoding the data * stream between Websock and websockify. * * Websock has built-in receive queue buffering; the message event * does not contain actual data but is simply a notification that * there is new data available. Several rQ* methods are available to * read binary data off of the receive queue. */ /*jslint browser: true, bitwise: true */ /*global Util*/ // Load Flash WebSocket emulator if needed // To force WebSocket emulator even when native WebSocket available //window.WEB_SOCKET_FORCE_FLASH = true; // To enable WebSocket emulator debug: //window.WEB_SOCKET_DEBUG=1; if (window.WebSocket && !window.WEB_SOCKET_FORCE_FLASH) { Websock_native = true; } else if (window.MozWebSocket && !window.WEB_SOCKET_FORCE_FLASH) { Websock_native = true; window.WebSocket = window.MozWebSocket; } else { /* no builtin WebSocket so load web_socket.js */ Websock_native = false; } function Websock() { "use strict"; this._websocket = null; // WebSocket object this._rQi = 0; // Receive queue index this._rQlen = 0; // Next write position in the receive queue this._rQbufferSize = 1024 * 1024 * 4; // Receive queue buffer size (4 MiB) this._rQmax = this._rQbufferSize / 8; // called in init: this._rQ = new Uint8Array(this._rQbufferSize); this._rQ = null; // Receive queue this._sQbufferSize = 1024 * 10; // 10 KiB // called in init: this._sQ = new Uint8Array(this._sQbufferSize); this._sQlen = 0; this._sQ = null; // Send queue this._mode = 'binary'; // Current WebSocket mode: 'binary', 'base64' this.maxBufferedAmount = 200; this._eventHandlers = { 'message': function () {}, 'open': function () {}, 'close': function () {}, 'error': function () {} }; } (function () { "use strict"; var typedArrayToString = (function () { // This is only for PhantomJS, which doesn't like apply-ing // with Typed Arrays try { var arr = new Uint8Array([1, 2, 3]); String.fromCharCode.apply(null, arr); return function (a) { return String.fromCharCode.apply(null, a); }; } catch (ex) { return function (a) { return String.fromCharCode.apply( null, Array.prototype.slice.call(a)); }; } })(); Websock.prototype = { // Getters and Setters get_sQ: function () { return this._sQ; }, get_rQ: function () { return this._rQ; }, get_rQi: function () { return this._rQi; }, set_rQi: function (val) { this._rQi = val; }, // Receive Queue rQlen: function () { return this._rQlen - this._rQi; }, rQpeek8: function () { return this._rQ[this._rQi]; }, rQshift8: function () { return this._rQ[this._rQi++]; }, rQskip8: function () { this._rQi++; }, rQskipBytes: function (num) { this._rQi += num; }, // TODO(directxman12): test performance with these vs a DataView rQshift16: function () { return (this._rQ[this._rQi++] << 8) + this._rQ[this._rQi++]; }, rQshift32: function () { return (this._rQ[this._rQi++] << 24) + (this._rQ[this._rQi++] << 16) + (this._rQ[this._rQi++] << 8) + this._rQ[this._rQi++]; }, rQshiftStr: function (len) { if (typeof(len) === 'undefined') { len = this.rQlen(); } var arr = new Uint8Array(this._rQ.buffer, this._rQi, len); this._rQi += len; return typedArrayToString(arr); }, rQshiftBytes: function (len) { if (typeof(len) === 'undefined') { len = this.rQlen(); } this._rQi += len; return new Uint8Array(this._rQ.buffer, this._rQi - len, len); }, rQshiftTo: function (target, len) { if (len === undefined) { len = this.rQlen(); } // TODO: make this just use set with views when using a ArrayBuffer to store the rQ target.set(new Uint8Array(this._rQ.buffer, this._rQi, len)); this._rQi += len; }, rQwhole: function () { return new Uint8Array(this._rQ.buffer, 0, this._rQlen); }, rQslice: function (start, end) { if (end) { return new Uint8Array(this._rQ.buffer, this._rQi + start, end - start); } else { return new Uint8Array(this._rQ.buffer, this._rQi + start, this._rQlen - this._rQi - start); } }, // Check to see if we must wait for 'num' bytes (default to FBU.bytes) // to be available in the receive queue. Return true if we need to // wait (and possibly print a debug message), otherwise false. rQwait: function (msg, num, goback) { var rQlen = this._rQlen - this._rQi; // Skip rQlen() function call if (rQlen < num) { if (goback) { if (this._rQi < goback) { throw new Error("rQwait cannot backup " + goback + " bytes"); } this._rQi -= goback; } return true; // true means need more data } return false; }, // Send Queue flush: function () { if (this._websocket.bufferedAmount !== 0) { Util.Debug("bufferedAmount: " + this._websocket.bufferedAmount); } if (this._websocket.bufferedAmount < this.maxBufferedAmount) { if (this._sQlen > 0) { this._websocket.send(this._encode_message()); this._sQlen = 0; } return true; } else { Util.Info("Delaying send, bufferedAmount: " + this._websocket.bufferedAmount); return false; } }, send: function (arr) { this._sQ.set(arr, this._sQlen); this._sQlen += arr.length; return this.flush(); }, send_string: function (str) { this.send(str.split('').map(function (chr) { return chr.charCodeAt(0); })); }, // Event Handlers off: function (evt) { this._eventHandlers[evt] = function () {}; }, on: function (evt, handler) { this._eventHandlers[evt] = handler; }, _allocate_buffers: function () { this._rQ = new Uint8Array(this._rQbufferSize); this._sQ = new Uint8Array(this._sQbufferSize); }, init: function (protocols, ws_schema) { this._allocate_buffers(); this._rQi = 0; this._websocket = null; // Check for full typed array support var bt = false; if (('Uint8Array' in window) && ('set' in Uint8Array.prototype)) { bt = true; } // Check for full binary type support in WebSockets // Inspired by: // https://github.com/Modernizr/Modernizr/issues/370 // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/websockets/binary.js var wsbt = false; try { if (bt && ('binaryType' in WebSocket.prototype || !!(new WebSocket(ws_schema + '://.').binaryType))) { Util.Info("Detected binaryType support in WebSockets"); wsbt = true; } } catch (exc) { // Just ignore failed test localhost connection } // Default protocols if not specified if (typeof(protocols) === "undefined") { protocols = 'binary'; } if (Array.isArray(protocols) && protocols.indexOf('binary') > -1) { protocols = 'binary'; } if (!wsbt) { throw new Error("noVNC no longer supports base64 WebSockets. " + "Please use a browser which supports binary WebSockets."); } if (protocols != 'binary') { throw new Error("noVNC no longer supports base64 WebSockets. Please " + "use the binary subprotocol instead."); } return protocols; }, open: function (uri, protocols) { var ws_schema = uri.match(/^([a-z]+):\/\//)[1]; protocols = this.init(protocols, ws_schema); this._websocket = new WebSocket(uri, protocols); if (protocols.indexOf('binary') >= 0) { this._websocket.binaryType = 'arraybuffer'; } this._websocket.onmessage = this._recv_message.bind(this); this._websocket.onopen = (function () { Util.Debug('>> WebSock.onopen'); if (this._websocket.protocol) { this._mode = this._websocket.protocol; Util.Info("Server choose sub-protocol: " + this._websocket.protocol); } else { this._mode = 'binary'; Util.Error('Server select no sub-protocol!: ' + this._websocket.protocol); } if (this._mode != 'binary') { throw new Error("noVNC no longer supports base64 WebSockets. Please " + "use the binary subprotocol instead."); } this._eventHandlers.open(); Util.Debug("<< WebSock.onopen"); }).bind(this); this._websocket.onclose = (function (e) { Util.Debug(">> WebSock.onclose"); this._eventHandlers.close(e); Util.Debug("<< WebSock.onclose"); }).bind(this); this._websocket.onerror = (function (e) { Util.Debug(">> WebSock.onerror: " + e); this._eventHandlers.error(e); Util.Debug("<< WebSock.onerror: " + e); }).bind(this); }, close: function () { if (this._websocket) { if ((this._websocket.readyState === WebSocket.OPEN) || (this._websocket.readyState === WebSocket.CONNECTING)) { Util.Info("Closing WebSocket connection"); this._websocket.close(); } this._websocket.onmessage = function (e) { return; }; } }, // private methods _encode_message: function () { // Put in a binary arraybuffer // according to the spec, you can send ArrayBufferViews with the send method return new Uint8Array(this._sQ.buffer, 0, this._sQlen); }, _decode_message: function (data) { // push arraybuffer values onto the end var u8 = new Uint8Array(data); this._rQ.set(u8, this._rQlen); this._rQlen += u8.length; }, _recv_message: function (e) { try { this._decode_message(e.data); if (this.rQlen() > 0) { this._eventHandlers.message(); // Compact the receive queue if (this._rQlen == this._rQi) { this._rQlen = 0; this._rQi = 0; } else if (this._rQlen > this._rQmax) { if (this._rQlen - this._rQi > 0.5 * this._rQbufferSize) { var old_rQbuffer = this._rQ.buffer; this._rQbufferSize *= 2; this._rQmax = this._rQbufferSize / 8; this._rQ = new Uint8Array(this._rQbufferSize); this._rQ.set(new Uint8Array(old_rQbuffer, this._rQi)); } else { if (this._rQ.copyWithin) { // Firefox only, ATM this._rQ.copyWithin(0, this._rQi); } else { this._rQ.set(new Uint8Array(this._rQ.buffer, this._rQi)); } } this._rQlen = this._rQlen - this._rQi; this._rQi = 0; } } else { Util.Debug("Ignoring empty message"); } } catch (exc) { var exception_str = ""; if (exc.name) { exception_str += "\n name: " + exc.name + "\n"; exception_str += " message: " + exc.message + "\n"; } if (typeof exc.description !== 'undefined') { exception_str += " description: " + exc.description + "\n"; } if (typeof exc.stack !== 'undefined') { exception_str += exc.stack; } if (exception_str.length > 0) { Util.Error("recv_message, caught exception: " + exception_str); } else { Util.Error("recv_message, caught exception: " + exc); } if (typeof exc.name !== 'undefined') { this._eventHandlers.error(exc.name + ": " + exc.message); } else { this._eventHandlers.error(exc); } } } }; })(); ================================================ FILE: app/static/novnc/webutil.js ================================================ /* * noVNC: HTML5 VNC client * Copyright (C) 2012 Joel Martin * Copyright (C) 2013 NTT corp. * Licensed under MPL 2.0 (see LICENSE.txt) * * See README.md for usage and integration instructions. */ /*jslint bitwise: false, white: false, browser: true, devel: true */ /*global Util, window, document */ // Globals defined here var WebUtil = {}, $D; /* * Simple DOM selector by ID */ if (!window.$D) { window.$D = function (id) { if (document.getElementById) { return document.getElementById(id); } else if (document.all) { return document.all[id]; } else if (document.layers) { return document.layers[id]; } return undefined; }; } /* * ------------------------------------------------------ * Namespaced in WebUtil * ------------------------------------------------------ */ // init log level reading the logging HTTP param WebUtil.init_logging = function (level) { "use strict"; if (typeof level !== "undefined") { Util._log_level = level; } else { var param = document.location.href.match(/logging=([A-Za-z0-9\._\-]*)/); Util._log_level = (param || ['', Util._log_level])[1]; } Util.init_logging(); }; WebUtil.dirObj = function (obj, depth, parent) { "use strict"; if (! depth) { depth = 2; } if (! parent) { parent = ""; } // Print the properties of the passed-in object var msg = ""; for (var i in obj) { if ((depth > 1) && (typeof obj[i] === "object")) { // Recurse attributes that are objects msg += WebUtil.dirObj(obj[i], depth - 1, parent + "." + i); } else { //val = new String(obj[i]).replace("\n", " "); var val = ""; if (typeof(obj[i]) === "undefined") { val = "undefined"; } else { val = obj[i].toString().replace("\n", " "); } if (val.length > 30) { val = val.substr(0, 30) + "..."; } msg += parent + "." + i + ": " + val + "\n"; } } return msg; }; // Read a query string variable WebUtil.getQueryVar = function (name, defVal) { "use strict"; var re = new RegExp('.*[?&]' + name + '=([^&#]*)'), match = document.location.href.match(re); if (typeof defVal === 'undefined') { defVal = null; } if (match) { return decodeURIComponent(match[1]); } else { return defVal; } }; /* * Cookie handling. Dervied from: http://www.quirksmode.org/js/cookies.html */ // No days means only for this browser session WebUtil.createCookie = function (name, value, days) { "use strict"; var date, expires; if (days) { date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } var secure; if (document.location.protocol === "https:") { secure = "; secure"; } else { secure = ""; } document.cookie = name + "=" + value + expires + "; path=/" + secure; }; WebUtil.readCookie = function (name, defaultValue) { "use strict"; var nameEQ = name + "=", ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i += 1) { var c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return (typeof defaultValue !== 'undefined') ? defaultValue : null; }; WebUtil.eraseCookie = function (name) { "use strict"; WebUtil.createCookie(name, "", -1); }; /* * Setting handling. */ WebUtil.initSettings = function (callback /*, ...callbackArgs */) { "use strict"; var callbackArgs = Array.prototype.slice.call(arguments, 1); if (window.chrome && window.chrome.storage) { window.chrome.storage.sync.get(function (cfg) { WebUtil.settings = cfg; console.log(WebUtil.settings); if (callback) { callback.apply(this, callbackArgs); } }); } else { // No-op if (callback) { callback.apply(this, callbackArgs); } } }; // No days means only for this browser session WebUtil.writeSetting = function (name, value) { "use strict"; if (window.chrome && window.chrome.storage) { //console.log("writeSetting:", name, value); if (WebUtil.settings[name] !== value) { WebUtil.settings[name] = value; window.chrome.storage.sync.set(WebUtil.settings); } } else { localStorage.setItem(name, value); } }; WebUtil.readSetting = function (name, defaultValue) { "use strict"; var value; if (window.chrome && window.chrome.storage) { value = WebUtil.settings[name]; } else { value = localStorage.getItem(name); } if (typeof value === "undefined") { value = null; } if (value === null && typeof defaultValue !== undefined) { return defaultValue; } else { return value; } }; WebUtil.eraseSetting = function (name) { "use strict"; if (window.chrome && window.chrome.storage) { window.chrome.storage.sync.remove(name); delete WebUtil.settings[name]; } else { localStorage.removeItem(name); } }; /* * Alternate stylesheet selection */ WebUtil.getStylesheets = function () { "use strict"; var links = document.getElementsByTagName("link"); var sheets = []; for (var i = 0; i < links.length; i += 1) { if (links[i].title && links[i].rel.toUpperCase().indexOf("STYLESHEET") > -1) { sheets.push(links[i]); } } return sheets; }; // No sheet means try and use value from cookie, null sheet used to // clear all alternates. WebUtil.selectStylesheet = function (sheet) { "use strict"; if (typeof sheet === 'undefined') { sheet = 'default'; } var sheets = WebUtil.getStylesheets(); for (var i = 0; i < sheets.length; i += 1) { var link = sheets[i]; if (link.title === sheet) { Util.Debug("Using stylesheet " + sheet); link.disabled = false; } else { //Util.Debug("Skipping stylesheet " + link.title); link.disabled = true; } } return sheet; }; ================================================ FILE: app/static/shared.js ================================================ var sparkline = undefined; var sparkline_url = undefined; var sparkline_loading = false; // Dropdowns $(function() { // Shared $(".menu-selector-close").click(function(e) { hide_menu(); }); $(document).click(function(e){ hide_menu(); }); $(".selector-menu").click(function(e){ e.stopPropagation(); }); $(".drop-skip").click(function(e){ e.stopPropagation(); }); function hide_menu() { $(".selector-menu").hide(); $(".dropdown").removeClass("dropdown-shown"); } // Browser $("#browser-dropdown").click(function(e) { if (!$(".selector-menu").is(":visible")) { show_browser_menu(); } else { hide_menu(); } e.stopPropagation(); }); $("#browser-selector td:not(:empty)").click(function(e) { $("#browser-selector td").removeClass("selected"); $(this).addClass("selected"); var tr = $(this).parent(); var browserTH; do { browserTH = tr.find("th"); tr = tr.prev(); } while (tr && !browserTH.length); var platform = $("#browser-selector thead").find("th").eq($(this).index()); $("#browser-text").text(browserTH.text() + " on " + platform.text()); $("#browser-icon").attr("src", $(this).find("img").attr("src")); $("#browser-icon").removeClass("hidden"); $("#browser-label").text($(this).find("label").text()); hide_menu(); coll = $(this).attr("data-path"); $("#browser-input").val(coll).trigger("change"); //$("#about-link").text("about " + browserTH.text()); $("#about-link").attr("href", $(this).attr("data-about-url")); $(".about-browser").show(); }); function show_browser_menu() { $("#browser-selector").show(); $("#browser-dropdown").addClass("dropdown-shown"); var pos = $("#browser-dropdown").offset(); pos.top += $("#browser-dropdown").outerHeight(); $("#browser-selector").offset(pos); } // Datetime $("#datetime-dropdown").click(function(e) { if (!$(".selector-menu").is(":visible")) { show_datetime_menu(); } else { hide_menu(); } e.stopPropagation(); }); function show_datetime_menu() { $("#datetime-selector").show(); $("#datetime-dropdown").addClass("dropdown-shown"); var pos = $("#datetime-dropdown").offset(); pos.top += $("#datetime-dropdown").outerHeight(); $("#datetime-selector").offset(pos); if (url) { load_timemap(url); } else { $("#datetime-info").text("Enter a URL above to see archival dates."); } } var pad = "10000101000000"; function parse_ts(ts) { ts = ts.substr(0, 14); ts += pad.substr(ts.length); set_ts(ts); } function set_ts(ts) { var formatted = ts.substr(0, 4) + "-" + ts.substr(4, 2) + "-" + ts.substr(6, 2) + " " + ts.substr(8, 2) + ":" + ts.substr(10, 2) + ":" + ts.substr(12, 2); $("#datetime").val(formatted); curr_ts = ts; if (window.on_change_curr_ts) { window.on_change_curr_ts(curr_ts); } } $("#datetime").blur(function() { var value = $("#datetime").val(); value = value.replace(/[^\d]/g, ''); parse_ts(value); if (sparkline) { sparkline.move_requested($("#datetime").val()); } }); function set_dt(date) { var date_time = date.toISOString().slice(0, -5).replace("T", " ") $("#datetime").val(date_time); var ts = date_time.replace(/[^\d]/g, ''); curr_ts = ts; if (window.on_change_curr_ts) { window.on_change_curr_ts(curr_ts); } } function load_timemap(url) { if (url == sparkline_url || sparkline_loading) { return; } var jsonUrl = "http://" + window.location.hostname + ":1208/timemap/json/" + url; sparkline_loading = true; $("#datetime-info").text("Loading archive stats..."); $("#datetime-info").addClass("loading"); $.getJSON(jsonUrl, function(data) { init_sparkline(data); sparkline_url = url; $("#datetime-info").text("Archive plot by date:"); }).fail(function(e) { console.log(e); $("#datetime-info").text("Sorry, could not load archive overview!"); }).complete(function(e) { sparkline_loading = false; $("#datetime-info").removeClass("loading"); }); } function init_sparkline(data) { sparkline = new Sparkline("#spark", data, {width: 200, height: 400, thickness: 6, swapXY: true, request_dt: $("#datetime").val(), onchange: set_dt, onmouseup: hide_menu}); } // On Init if (url) { load_timemap(url); } if (curr_ts) { parse_ts(curr_ts); } else { var z = new Date(); z = new Date(z.getFullYear() - 16, z.getMonth(), z.getDate(), z.getHours(), z.getMinutes(), z.getSeconds(), z.getMilliseconds()) set_dt(z); } init_sparkline(); }); ================================================ FILE: app/static/skeleton.css ================================================ /* * Skeleton V2.0.4 * Copyright 2014, Dave Gamache * www.getskeleton.com * Free to use under the MIT license. * http://www.opensource.org/licenses/mit-license.php * 12/29/2014 */ /* Table of contents –––––––––––––––––––––––––––––––––––––––––––––––––– - Grid - Base Styles - Typography - Links - Buttons - Forms - Lists - Code - Tables - Spacing - Utilities - Clearing - Media Queries */ /* Grid –––––––––––––––––––––––––––––––––––––––––––––––––– */ .container { position: relative; width: 100%; max-width: 960px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; } .column, .columns { width: 100%; float: left; box-sizing: border-box; } /* For devices larger than 400px */ @media (min-width: 400px) { .container { width: 85%; padding: 0; } } /* For devices larger than 550px */ @media (min-width: 550px) { .container { width: 80%; } .column, .columns { margin-left: 4%; } .column:first-child, .columns:first-child { margin-left: 0; } .one.column, .one.columns { width: 4.66666666667%; } .two.columns { width: 13.3333333333%; } .three.columns { width: 22%; } .four.columns { width: 30.6666666667%; } .five.columns { width: 39.3333333333%; } .six.columns { width: 48%; } .seven.columns { width: 56.6666666667%; } .eight.columns { width: 65.3333333333%; } .nine.columns { width: 74.0%; } .ten.columns { width: 82.6666666667%; } .eleven.columns { width: 91.3333333333%; } .twelve.columns { width: 100%; margin-left: 0; } .one-third.column { width: 30.6666666667%; } .two-thirds.column { width: 65.3333333333%; } .one-half.column { width: 48%; } /* Offsets */ .offset-by-one.column, .offset-by-one.columns { margin-left: 8.66666666667%; } .offset-by-two.column, .offset-by-two.columns { margin-left: 17.3333333333%; } .offset-by-three.column, .offset-by-three.columns { margin-left: 26%; } .offset-by-four.column, .offset-by-four.columns { margin-left: 34.6666666667%; } .offset-by-five.column, .offset-by-five.columns { margin-left: 43.3333333333%; } .offset-by-six.column, .offset-by-six.columns { margin-left: 52%; } .offset-by-seven.column, .offset-by-seven.columns { margin-left: 60.6666666667%; } .offset-by-eight.column, .offset-by-eight.columns { margin-left: 69.3333333333%; } .offset-by-nine.column, .offset-by-nine.columns { margin-left: 78.0%; } .offset-by-ten.column, .offset-by-ten.columns { margin-left: 86.6666666667%; } .offset-by-eleven.column, .offset-by-eleven.columns { margin-left: 95.3333333333%; } .offset-by-one-third.column, .offset-by-one-third.columns { margin-left: 34.6666666667%; } .offset-by-two-thirds.column, .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } .offset-by-one-half.column, .offset-by-one-half.columns { margin-left: 52%; } } /* Base Styles –––––––––––––––––––––––––––––––––––––––––––––––––– */ /* NOTE html is set to 62.5% so that all the REM measurements throughout Skeleton are based on 10px sizing. So basically 1.5rem = 15px :) */ html { font-size: 62.5%; } body { font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ line-height: 1.6; font-weight: 400; font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; color: #222; } /* Typography –––––––––––––––––––––––––––––––––––––––––––––––––– */ h1, h2, h3, h4, h5, h6 { margin-top: 0; margin-bottom: 2rem; font-weight: 300; } h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } /* Larger than phablet */ @media (min-width: 550px) { h1 { font-size: 5.0rem; } h2 { font-size: 4.2rem; } h3 { font-size: 3.6rem; } h4 { font-size: 3.0rem; } h5 { font-size: 2.4rem; } h6 { font-size: 1.5rem; } } p { margin-top: 0; } /* Links –––––––––––––––––––––––––––––––––––––––––––––––––– */ a { color: #1EAEDB; } a:hover { color: #0FA0CE; } /* Buttons –––––––––––––––––––––––––––––––––––––––––––––––––– */ .button, button, input[type="submit"], input[type="reset"], input[type="button"] { display: inline-block; height: 38px; padding: 0 30px; color: #555; text-align: center; font-size: 11px; font-weight: 600; line-height: 38px; letter-spacing: .1rem; text-transform: uppercase; text-decoration: none; white-space: nowrap; background-color: transparent; border-radius: 4px; border: 1px solid #bbb; cursor: pointer; box-sizing: border-box; } .button:hover, button:hover, input[type="submit"]:hover, input[type="reset"]:hover, input[type="button"]:hover, .button:focus, button:focus, input[type="submit"]:focus, input[type="reset"]:focus, input[type="button"]:focus { color: #333; border-color: #888; outline: 0; } .button.button-primary, button.button-primary, input[type="submit"].button-primary, input[type="reset"].button-primary, input[type="button"].button-primary { color: #FFF; background-color: #33C3F0; border-color: #33C3F0; } .button.button-primary:hover, button.button-primary:hover, input[type="submit"].button-primary:hover, input[type="reset"].button-primary:hover, input[type="button"].button-primary:hover, .button.button-primary:focus, button.button-primary:focus, input[type="submit"].button-primary:focus, input[type="reset"].button-primary:focus, input[type="button"].button-primary:focus { color: #FFF; background-color: #1EAEDB; border-color: #1EAEDB; } /* Forms –––––––––––––––––––––––––––––––––––––––––––––––––– */ input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"], textarea, select { height: 38px; padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ background-color: #fff; border: 1px solid #D1D1D1; border-radius: 4px; box-shadow: none; box-sizing: border-box; } /* Removes awkward default styles on some inputs for iOS */ input[type="email"], input[type="number"], input[type="search"], input[type="text"], input[type="tel"], input[type="url"], input[type="password"], textarea { -webkit-appearance: none; -moz-appearance: none; appearance: none; } textarea { min-height: 65px; padding-top: 6px; padding-bottom: 6px; } input[type="email"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="text"]:focus, input[type="tel"]:focus, input[type="url"]:focus, input[type="password"]:focus, textarea:focus, select:focus { border: 1px solid #33C3F0; outline: 0; } label, legend { display: block; margin-bottom: .5rem; font-weight: 600; } fieldset { padding: 0; border-width: 0; } input[type="checkbox"], input[type="radio"] { display: inline; } label > .label-body { display: inline-block; margin-left: .5rem; font-weight: normal; } /* Lists –––––––––––––––––––––––––––––––––––––––––––––––––– */ ul { list-style: circle inside; } ol { list-style: decimal inside; } ol, ul { padding-left: 0; margin-top: 0; } ul ul, ul ol, ol ol, ol ul { margin: 1.5rem 0 1.5rem 3rem; font-size: 90%; } li { margin-bottom: 1rem; } /* Code –––––––––––––––––––––––––––––––––––––––––––––––––– */ code { padding: .2rem .5rem; margin: 0 .2rem; font-size: 90%; white-space: nowrap; background: #F1F1F1; border: 1px solid #E1E1E1; border-radius: 4px; } pre > code { display: block; padding: 1rem 1.5rem; white-space: pre; } /* Tables –––––––––––––––––––––––––––––––––––––––––––––––––– */ th, td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #E1E1E1; } th:first-child, td:first-child { padding-left: 0; } th:last-child, td:last-child { padding-right: 0; } /* Spacing –––––––––––––––––––––––––––––––––––––––––––––––––– */ button, .button { margin-bottom: 1rem; } input, textarea, select, fieldset { margin-bottom: 1.5rem; } pre, blockquote, dl, figure, table, p, ul, ol, form { margin-bottom: 2.5rem; } /* Utilities –––––––––––––––––––––––––––––––––––––––––––––––––– */ .u-full-width { width: 100%; box-sizing: border-box; } .u-max-full-width { max-width: 100%; box-sizing: border-box; } .u-pull-right { float: right; } .u-pull-left { float: left; } /* Misc –––––––––––––––––––––––––––––––––––––––––––––––––– */ hr { margin-top: 3rem; margin-bottom: 3.5rem; border-width: 0; border-top: 1px solid #E1E1E1; } /* Clearing –––––––––––––––––––––––––––––––––––––––––––––––––– */ /* Self Clearing Goodness */ .container:after, .row:after, .u-cf { content: ""; display: table; clear: both; } /* Media Queries –––––––––––––––––––––––––––––––––––––––––––––––––– */ /* Note: The best way to structure the use of media queries is to create the queries near the relevant code. For example, if you wanted to change the styles for buttons on small devices, paste the mobile query code up in the buttons section and style it there. */ /* Larger than mobile */ @media (min-width: 400px) {} /* Larger than phablet (also point when grid becomes active) */ @media (min-width: 550px) {} /* Larger than tablet */ @media (min-width: 750px) {} /* Larger than desktop */ @media (min-width: 1000px) {} /* Larger than Desktop HD */ @media (min-width: 1200px) {} ================================================ FILE: app/static/timemap.js ================================================ var current_date, requested_date; function Sparkline(target, data, options) { // set up a date parsing function for future use var parseDate = d3.time.format.utc("%Y-%m-%dT%H:%M:%SZ").parse; var dateOnly = d3.time.format.utc("%Y-%m-%d"); var userDate = d3.time.format.utc("%Y-%m-%d %H:%M:%S").parse; if (options.request_dt) { requested_date = userDate(options.request_dt); } var width = options.width; var height = options.height; var timeScale = d3.time.scale() var linScale = d3.scale.linear() //var linScale = d3.scale.log().base(Math.E); var timeAxis = d3.svg.axis().scale(timeScale); if (data) { data = data.mementos.list.map(function(d) { return parseDate(d.datetime); }); data = d3.nest() .key(function(d) { return d3.time.day.utc(d).getTime() }) .rollup(function(vals) { return {"total": vals.length} }) .entries(data); data = data.map(function(d) { return {"date": new Date(+d.key), "total": d.values.total, } }); // Variable time scale // var dom = d3.extent(data, function(d) { return d.date; }); // // if (requested_date || current_date) { // if (requested_date) { // dom.push(requested_date); // } // if (current_date) { // dom.push(current_date); // } // dom = d3.extent(dom); // } // // timeScale.domain(dom); linScale.domain([0, d3.max(data, function(d) { return d.total; })]); } else { //timeScale.domain([new Date(1992, 1, 1), new Date()]); linScale.domain([0, 1]); } timeScale.domain([new Date(1992, 1, 1), new Date()]); var timeAxisTrans; var graphTrans; var xfunc; var yfunc; var widthFunc; var heightFunc; var x_offset = 40; var y_offset = 20; var y_margin = 15; var graphWidth = width - x_offset; var graphHeight = height - y_offset; options.thickness = options.thickness || 4; var halfThick = options.thickness / 2; if (options.swapXY) { timeScale.range([height - y_margin, y_margin]); linScale.range([0, graphWidth]); timeAxis.orient("left"); yVal = function(d) { return timeScale(d.date) - halfThick; }; heightVal = options.thickness; xVal = x_offset; widthVal = function(d) { return linScale(d.total); }; timeAxisTrans = "translate(" + x_offset + ",0)"; } else { timeScale.range([0, width]); linScale.range([graphHeight, 0]); timeAxis.orient("bottom"); xVal = function(d) { return timeScale(d.date) - halfThick; }; widthVal = options.thickness; yVal = function(d) { return linScale(d.total); }; heightVal = function(d) { return graphHeight - linScale(d.total); }; timeAxisTrans = "translate(0," + graphHeight + ")"; } d3.select(target).select("svg").remove(); var svg = d3.select(target) .append("svg") .attr("width", width) .attr("height", height); var tooltipId = options.tooltipId || "spark-mouseover-tooltip"; var tooltip = d3.select("#" + tooltipId); if (tooltip.empty()) { tooltip = d3.select(target).append("div") .attr("id", tooltipId) .attr("class", "tooltip") .style("opacity", 0); } options["class"] = options["class"] || ""; var spark = svg.append("g").attr("class", options["class"]); var requested_marker; var current_marker; spark.append("g") .attr("class", "axis") .attr("transform", timeAxisTrans) .call(timeAxis); var bgrect = svg.append("svg:rect") .attr("class", "pane") .attr("width", width) .attr("height", height); if (data) { spark.append("g") .attr("class", "plot") //.attr("transform", graphTrans) .selectAll(".bar") .data(data) .enter().append("rect") .attr("class", "bar") .attr("x", xVal) .attr("width", widthVal) .attr("y", yVal) .attr("height", heightVal); } //TODO make x-axis time friendly function update_marker(marker, date) { marker.attr("transform", "translate(0, " + timeScale(date) + ")"); marker.classed("hidden", false); } function update_requested_marker(date) { if (options.onchange) { options.onchange(date); } dragging = true; requested_date = date; update_marker(requested_marker, requested_date); } var highlight = spark.append("rect") .attr("class", "highlight hidden") .attr("x", x_offset) .attr("y", 0) .attr("width", graphWidth) .attr("height", 1); this.add_marker = function(name, marker_class, text, x_extra) { var marker = spark.append("g") .attr("id", name) .attr("class", marker_class); marker.append("rect") .attr("x", x_offset) .attr("y", 0) .attr("width", graphWidth) .attr("height", 2); x_extra = x_extra || 8; marker.append("text") .attr("x", x_offset + x_extra) .attr("y", -4) .text(text); return marker; } requested_marker = this.add_marker("select-dt", "spark-selected hidden", "Requested", graphWidth - 70); current_marker = this.add_marker("curr-dt", "curr-dt-marker hidden", "Current"); if (requested_date) { update_marker(requested_marker, requested_date); } if (current_date) { update_marker(current_marker, current_date); } var dragging = false; tooltip.style("left", width + "px"); bgrect.on("mousemove", function(d) { var mouse = d3.mouse(this); var date = timeScale.invert(mouse[1]); highlight.attr("transform", "translate(0, " + timeScale(date) + ")"); highlight.classed("hidden", false); tooltip.html(dateOnly(date)) .style("top", (mouse[1] - 11) + "px") .style("opacity", 1.0); if (dragging) { update_requested_marker(date); } }); bgrect.on("mousedown", function(d) { var date = timeScale.invert(d3.mouse(this)[1]); update_requested_marker(date); }).on("mouseup", function(d) { dragging = false; if (options.onmouseup) { options.onmouseup(d); } }); bgrect.on("mouseout", function(d) { highlight.classed("hidden", true); tooltip.style("opacity", 0.0); }); this.move_current = function(date) { current_date = date; update_marker(current_marker, current_date); } this.move_requested = function(datestr) { var date = userDate(datestr); if (date) { update_requested_marker(date); } } } ================================================ FILE: app/templates/archives-list.html ================================================ ================================================ FILE: app/templates/browser-select.html ================================================
Windows Macintosh Linux
NSCA Mosaic
Netscape Navigator
Internet Explorer
Apple
Safari
Mozilla Firefox
Chromium
Google Chrome
================================================ FILE: app/templates/index.html ================================================ oldweb.today {% include 'tracking.html' %}

oldweb.today

Please select a browser, url and a date.
I'm feeling Random!
oldweb.today is built with open source tools:
Full source code available on Github.

The archived web pages are available courtesy of these public web archives: {% include 'archives-list.html' %}

A project by Ilya Kreymer, with support from:
Shuttleworth Foundation Rhizome
Contact: oldweb.today@rhizome.org
{% include 'browser-select.html' %} ================================================ FILE: app/templates/replay.html ================================================ oldweb.today {% include 'tracking.html' %}

oldweb.today

Time Left 0:00
   
Requested date and time changed, please activate reload or refresh in the emulated browser!
 
Loaded 0 resources, spanning
to
from public web archives:
{% include 'archives-list.html' %}
Source code on github!
Contact: oldweb.today@rhizome.org
Initializing Browser…
{% include 'browser-select.html' %} ================================================ FILE: app/templates/tracking.html ================================================ ================================================ FILE: app/uwsgi.ini ================================================ [uwsgi] if-not-env = PORT http-socket = :9020 socket = :9021 endif = master = true buffer-size = 65536 die-on-term = true http-websockets = true if-env = VIRTUAL_ENV venv = $(VIRTUAL_ENV) endif = processes = 20 threads = 20 gevent = 100 gevent-early-monkey-patch = mules = 2 # specify config file here wsgi = main ================================================ FILE: archives.yaml ================================================ # Wayback Based - id: rhizome name: Rhizome Webenact timegate: http://webenact.rhizome.org/all/ timemap: http://webenact.rhizome.org/all/timemap/*/ link: http://webenact.rhizome.org/ - id: ia name: Internet Archive timegate: http://web.archive.org/web/ timemap: http://web.archive.org/web/timemap/link/ link: https://archive.org/web/ - id: pwa name: Portuguese Web Archive timegate: http://arquivo.pt/wayback/ timemap: http://arquivo.pt/wayback/timemap/*/ link: http://arquivo.pt/ - id: ba name: Bibliotheca Alexandrina Web Archive timegate: http://web.archive.bibalex.org/web/ timemap: http://web.archive.bibalex.org/web/timemap/link/ link: http://www.bibalex.org/isis/frontend/archive/archive_web.aspx ignore: true - id: blarchive name: UK Web Archive timegate: http://www.webarchive.org.uk/wayback/archive/ timemap: http://www.webarchive.org.uk/wayback/archive/timemap/link/ link: http://www.webarchive.org.uk/ukwa/ ignore: true - id: loc name: Library of Congress timegate: http://webarchive.loc.gov/all/ timemap: http://webarchive.loc.gov/all/timemap/link/ link: http://loc.gov/websites/ - id: archiveit name: Archive-It timegate: http://wayback.archive-it.org/all/ timemap: http://wayback.archive-it.org/all/timemap/link/ link: https://archive-it.org/ - id: is name: Icelandic Web Archive timegate: http://wayback.vefsafn.is/wayback/ timemap: http://wayback.vefsafn.is/wayback/timemap/link/ link: http://vefsafn.is/ - id: swa name: Stanford Web Archive timegate: https://swap.stanford.edu/ timemap: https://swap.stanford.edu/timemap/link/ link: https://swap.stanford.edu/ # LANL Proxy - id: es name: Estonian Web Archive timegate: http://timetravel.mementoweb.org/es/timegate/ timemap: http://timetravel.mementoweb.org/es/timemap/link/ base_url: http://veebiarhiiv.digar.ee/a/ link: http://veebiarhiiv.digar.ee/ - id: si name: Slovenian Web Archive timegate: http://timetravel.mementoweb.org/si/timegate/ timemap: http://timetravel.mementoweb.org/si/timemap/link/ base_url: 'http://nukrobi2.nuk.uni-lj.si:8080/wayback/' link: http://www.zal-lj.si/ - id: nara name: The National Archives and Records Administration timegate: http://timetravel.mementoweb.org/nara/timegate/ timemap: http://timetravel.mementoweb.org/nara/timemap/link/ base_url: '{archivehost}/' link: http://www.webharvest.gov/ # IMF-based - id: ukparliament name: UK Parliament Web Archive timegate: http://webarchive.parliament.uk/timegate/ timemap: http://webarchive.parliament.uk/timemap/ base_url: http://webarchive.parliament.uk/ unrewritten_url: http://webarchive.parliament.uk/raw/{timestamp}/{url} link: http://webarchive.parliament.uk/ - id: proni name: Public Record Office of Northern Ireland timegate: http://webarchive.proni.gov.uk/timegate/ timemap: http://webarchive.proni.gov.uk/timemap/ base_url: http://webarchive.proni.gov.uk/ unrewritten_url: http://webarchive.proni.gov.uk/raw/{timestamp}/{url} link: http://webarchive.proni.gov.uk/ - id: uknatarchives name: UK National Archives timegate: http://webarchive.nationalarchives.gov.uk/timegate/ timemap: http://webarchive.nationalarchives.gov.uk/timemap/ base_url: http://webarchive.nationalarchives.gov.uk/ unrewritten_url: http://webarchive.nationalarchives.gov.uk/raw/{timestamp}/{url} link: http://www.nationalarchives.gov.uk/webarchive/ ================================================ FILE: browsers/base-basilisk2-browser/Dockerfile ================================================ FROM netcapsule/base-browser RUN sudo dpkg --add-architecture i386 \ && echo "deb http://httpredir.debian.org/debian jessie contrib" >> /etc/apt/sources.list \ && apt-get update && apt-get install -y basilisk2:i386 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app USER browser COPY performa.rom /app/ COPY basilisk_ii_prefs /app/ ================================================ FILE: browsers/base-basilisk2-browser/basilisk_ii_prefs ================================================ disk /app/hd extfs /app/share/ screen win/1024/768 seriala serialb ether slirp udptunnel false udpport 6066 rom /app/performa.rom bootdrive 0 bootdriver 0 ramsize 67108864 frameskip 0 modelid 14 cpu 4 fpu true nocdrom false nosound true noclipconversion false nogui true jit true jitfpu false jitdebug false jitcachesize 8192 jitlazyflush true jitinline true keyboardtype 5 keycodes false mousewheelmode 1 mousewheellines 3 dsp /dev/dsp mixer /dev/mixer ignoresegv false idlewait true ================================================ FILE: browsers/base-browser/Dockerfile ================================================ FROM debian:jessie ENV TS 1996 ENV URL about:blank ENV SCREEN_WIDTH 1360 ENV SCREEN_HEIGHT 1020 ENV SCREEN_DEPTH 16 ENV DISPLAY :99 RUN apt-get -y update && \ apt-get -qqy install \ git \ sudo \ python2.7 \ python-pip \ python2.7-dev \ python-openssl \ libssl-dev libffi-dev \ net-tools \ x11vnc \ xvfb \ curl \ wget \ vim RUN apt-get -qqy install \ fonts-ipafont-gothic \ xfonts-100dpi \ xfonts-75dpi \ xfonts-cyrillic \ xfonts-scalable \ xfonts-base \ fonts-liberation \ fonts-arphic-bkai00mp fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp fonts-arphic-gkai00mp fonts-arphic-ukai fonts-farsiweb fonts-nafees fonts-sil-abyssinica fonts-sil-ezra fonts-sil-padauk fonts-unfonts-extra fonts-unfonts-core fonts-indic fonts-thai-tlwg fonts-lklug-sinhala \ && easy_install --upgrade pip \ && rm -rf /var/lib/apt/lists/* RUN sudo useradd browser --shell /bin/bash --create-home \ && sudo usermod -a -G sudo browser \ && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ && echo 'browser:secret' | chpasswd WORKDIR /novnc RUN git clone https://github.com/kanaka/noVNC.git /novnc RUN git clone https://github.com/kanaka/websockify.git /novnc/utils/websockify WORKDIR /app/ COPY requirements.txt /app/ RUN pip install -U -r requirements.txt COPY entry_point.sh /app/entry_point.sh CMD /app/entry_point.sh ================================================ FILE: browsers/base-browser/entry_point.sh ================================================ #!/bin/bash export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH" mkdir -p ~/.vnc x11vnc -storepasswd secret ~/.vnc/passwd # start xvfb Xvfb $DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR & # start fluxbox #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & # start websockify / novnc bash /novnc/utils/launch.sh --vnc localhost:5900 & export http_proxy=http://netcapsule_pywb_1:8080 export https_proxy=http://netcapsule_pywb_1:8080 wget -O /dev/null "http://set.pywb.proxy/setts?ts=$TS" function shutdown { kill -s SIGTERM $NODE_PID wait $NODE_PID } # disable any terms sudo chmod a-x /usr/bin/*term sudo chmod a-x /bin/*term # Run browser here eval "$@" & MY_IP=$(head -n 1 /etc/hosts | cut -f 1) PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) # start controller app python /app/app.py --my-ip "$MY_IP" --pywb-ip "$PYWB_IP" --start-url "$URL" --start-ts "$TS" & NODE_PID=$! trap shutdown SIGTERM SIGINT for i in $(seq 1 10) do xdpyinfo -display $DISPLAY >/dev/null 2>&1 if [ $? -eq 0 ]; then break fi echo Waiting xvfb... sleep 0.5 done # start vnc x11vnc -forever -ncache_cr -xdamage -usepw -shared -rfbport 5900 -display $DISPLAY & wait $NODE_PID ================================================ FILE: browsers/base-browser/requirements.txt ================================================ requests bottle redis gevent bottle-websocket ================================================ FILE: browsers/base-chromium/Dockerfile ================================================ FROM netcapsule/base-browser RUN apt-get update && apt-get install -y libpango1.0-0 libfreetype6 libnss3-1d libnspr4-0d libasound2 libgconf-2-4 libgtk2.0-0 libnss3-tools jwm zip \ && rm -rf /var/lib/apt/lists/* # install old libgcrypt RUN echo "deb http://ftp.de.debian.org/debian wheezy main" >> /etc/apt/sources.list \ && apt-get update \ && apt-get install -y libgcrypt11 USER browser WORKDIR /home/browser COPY jwmrc /home/browser/.jwmrc COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/base-chromium/jwmrc ================================================ .* -*-fixed-*-r-*-*-10-*-*-*-*-*-*-* 1 20 white gray30:gray60 black 1.0 #aaaaaa #808488:#303438 black 0.5:0.9:0.1 ================================================ FILE: browsers/base-chromium/run.sh ================================================ #!/bin/bash #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & jwm -display $DISPLAY & http_proxy="http://netcapsule_pywb_1:8080" wget "http://pywb.proxy/pywb-ca.pem" mkdir -p $HOME/.pki/nssdb certutil -d $HOME/.pki/nssdb -N certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "pywb" -i ~/pywb-ca.pem sudo chown -R browser:browser ~/chrome-linux mkdir ~/.config/ mkdir ~/.config/chromium touch ~/.config/chromium/First\ Run if [ -n "$NO_PROXY" ]; then run_browser ~/chrome-linux/chrome "$URL" else run_browser ~/chrome-linux/chrome --proxy-server="netcapsule_pywb_1:8080" "$URL" fi ================================================ FILE: browsers/base-sheepshaver/Dockerfile ================================================ FROM netcapsule/base-browser # Install some tools required for creating the image RUN apt-get update \ && apt-get install -y --no-install-recommends \ libsdl1.2-dev USER browser WORKDIR /home/browser #COPY ./SheepShaver /home/browser/SheepShaver COPY oldworld.rom /home/browser/ COPY NetscapePreferences /home/browser/NetscapePreferences COPY sheepshaver_prefs /home/browser/.sheepshaver_prefs COPY SheepShaver /home/browser/ RUN sudo chown browser ./SheepShaver RUN sudo chmod a+x ./SheepShaver ADD hd.tar.gz /home/browser/ RUN sudo chown browser ./hd.dsk ENV RUN_BROWSER netscape4.8 COPY run.sh /home/browser/run.sh RUN sudo chown browser /home/browser/run.sh CMD /app/entry_point.sh /home/browser/run.sh ================================================ FILE: browsers/base-sheepshaver/NetscapePreferences ================================================ // Netscape User Preferences // This is a generated file! Do not edit. user_pref("browser.startup.agreed_to_licence", true); user_pref("browser.startup.homepage", "HOME_PAGE_URL"); user_pref("browser.startup.homepage_override", false); user_pref("mail.identity.username", "OldWeb"); user_pref("network.proxy.type", 1); user_pref("network.proxy.http", "netcapsule_pywb_1"); user_pref("network.proxy.http_port", 8080); user_pref("network.proxy.ssl", "netcapsule_pywb_1"); user_pref("network.proxy.ssl_port", 8080); user_pref("security.enable_java", false); user_pref("taskbar.mac.is_open", false); ================================================ FILE: browsers/base-sheepshaver/newworld86.rom ================================================ iMac,1 PowerMac1,1 PowerBook1,1 MacROM for NewWorld. 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4925B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92006EDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB0049B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBBBFBBBFBBBFBBBFBBBFBBBFBBBFBB252577BFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F332F2F2F332F2F2F332F2F2F332F2A055757575757575B57575B57575B579BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F2F2F332F2F2F332F2F2F012E57575B575B57575757575757575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF97132F0F2F132F0F2F132F0F2F0F2F0A0557575B5757575B57575B57575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F330F2F2F2F0F2F0F2F2F332F052A575B5757535357575B57575B57575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F0F2B062F332F132F0A00575757575B25255B5757575B5757575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F132F0F332F0B060F2F0F2F2F0529575B575B572525575B575757575B575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F0F2F0B262F0F332F0A0053575757575B25255B57575B5757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F132F2F332F0F2F332F2F0501575B575B5757534F57575B57575B57575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F132F2F2F2F132F2F0F052A575757575B5757575B57575757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77330F332F0F2F132F2F0F2F2F00535757575B5757575B575757575B57575B5777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF972F2F2F2F332F2F132F2F132A00575B575B57575B5757575B5757575B57575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF770F330F330F2F0F2F2F332F05255B575757575B5757575B57575B575757575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF972F2F2F2F332F332F0F2F2F052A575B57575757575B5757575B57575B575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F0F330F2F0F2F0F332F33052A5757575757575B5757575B575757575B575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F332F332F2F2F0F2F050000000000002E57575B5757575B575757575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77332F132F0F2F0F2F0F332F2A0A2A2A2A050053575B5757575B5757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F332F332F330F2F0F332F0F330600575757575B5757575B57575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F332F132F0F2F0F2F2F332F2F332F0F2504575B575B57575753575B57575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F2F0B060A2B0F2F0F332F0F2F33050557575B574F2E2505535757575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F0F330F332F2B0A0606060A0B0B2B0B05052A29250005292E575757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F2F2F2F0F2F132F2F0F2B0A0A060606010025292E53575B57575B575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F330F332F132F2F2F2F2F332F2F2F2F0501575B575757575757575757575777FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF77332F2F2F2F2F2F132F0F2F0F2F2F0F2F050057575B575B57575B575B57575B97FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF772F2F2F0F332F132F2F2F332F332F2F332600535B575757575B5757575B575797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF970F330F332F0F2F2F132F0F2F0F330F2F0A004F57575B5757575B5757575B5797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B332F33332F3333332F333333332F33332F002A77777777777777777777777797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDBDBDBDBDBDBDBDBDBDBDBDBFBDB2025B7DBDBDBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E00B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF006EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFDBDBFFFFFFFFFFFFFFDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB57539BFFFFFFFFFFFF775377DFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFF92006EFFFFFFFFFF6E2592FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53B7DBDBBB53DFFFFFDF97DBFBBB33FFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFF2525FFFFFFFFFF2525DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3397DBFFFFFFDF33DBFF57B7FFFFFF97DBFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFF9225B7FFFFFFB76E25DBFFFFFFFFFFFFFFFFFFFFFFFFFFDBB7FFFFFFFF7733B7FFFFFFFFFF9B53FF3397FFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFF92496EFFFFFFB79225DBFFFFB792496EFFFFFFB7926E49FFFFFFFFFFFF2F73FFFFFFFFFFFFDF0FDB5333FFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFDBB7B725FFFFFF929225DBFF9292FFFF00DBFF6EB7FFFF6E92FFFFFFFFFF0F93FFFFFFFFFFFFFF2F979B2F33DFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFDBB7FF00B7FFDBB7B725DBFF25B7FFFF25B7DB49DBFFFFFFB7FFFFFFFFDF0F97FFFFFFFFFFFFFF3373FFBB330F53FFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFDBDBFF6E49FFB7FFFF00DBFFFFFFFFFF00B74949FFFFFFFFFFFFFFFFFFDF2F97FFFFFFFFFFFFFF3373FFFFFF972F33FFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFDBDBFFB725FF92FFFF00DBFFFFFFDB9225B7256EFFFFFFFFFFFFFFFFFFFF2F97FFFFFFFFFFFFFF2F73FFFFFFFFBB2F97FFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFB7DBFFFF006EB7FFFF00B7FFFFB7DBFF25B7256EFFFFFFFFFFFFFFFFFFFF3373FFFFFFFFFFFFDF2F97FFFFFFFFFF7773FFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFB7DBFFFF4925DBFFFF00B7FF6EB7FFFF25B76E49FFFFFFFFFFFFFFFFFFFF9B33FFFFFFFFFFFF5753B7BBFFFFFFFF7773FFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFF92DBFFFFDB49DBFFFF00B7FF25B7FFB700B7FF25DBFFFFFFFFFFFFFFFFFFFF5377FFFFFFFFBB3397DF53FFFFFFFF57B7FFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFDB2549DBFFFFB7FFDB490049DB254992DB2549DB9225DBFF92FFFFFFFFFFFFFFFF5397FFFFBB53B7FBFF3397FFFF77B7DBFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFB792DBFFFFFFFFFFB7B7B7DBB76EB7FFDB92DBFFB76E6EB7FFFFFFFFFFFFFFFFFFB7737797DBFFFFFFFF977397BBDBFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B 0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B here >r dev / " model" active-package get-package-property abort" can't find MODEL" decode-string 2swap 2drop " iMac,1" $= ?dup 0= if " compatible" active-package get-package-property abort" can't find COMPATIBLE" false >r begin dup while decode-string here over 2swap bounds ?do i c@ dup [char] A [char] Z between if h# 20 xor then c, loop 2dup " powermac1,1" $= r> or >r 2dup " powerbook1,1" $= r> or >r 2drop repeat 2drop r> then r> here - allot 0= abort" this image is not for this platform" dev /openprom 0 0 " supports-bootinfo" property device-end " /chosen" find-package 0= abort" can't find '/chosen'" constant /chosen " memory" /chosen get-package-property abort" memory??" decode-int constant xmem 2drop " mmu" /chosen get-package-property abort" mmu??" decode-int constant xmmu 2drop " AAPL,debug" " /" find-package 0= abort" can't find '/'" get-package-property if false else 2drop true then ( debug? ) constant debug? debug? if cr ." checking for RELEASE-LOAD-AREA" then " release-load-area" $find 0= if 2drop false then ( xt|0 ) constant 'release-load-area debug? if 'release-load-area if ." , found it" else ." , not found" then then : do-translate " translate" xmmu $call-method ; : do-map " map" xmmu $call-method ; : do-unmap " unmap" xmmu $call-method ; : claim-mem " claim" xmem $call-method ; : release-mem " release" xmem $call-method ; : claim-virt " claim" xmmu $call-method ; : release-virt " release" xmmu $call-method ; 1000 constant pagesz pagesz 1- constant pagesz-1 -1000 constant pagemask h# 004000 constant elf-offset h# 00CDB0 constant elf-size elf-size pagesz-1 + pagemask and constant elf-pages h# 010DB0 constant lzss-offset h# 1CA2E2 constant lzss-size lzss-size pagesz-1 + pagemask and constant lzss-pages h# 1DB092 constant info-size info-size pagesz-1 + pagemask and constant info-pages 0 value load-base-claim 0 value info-base 'release-load-area if load-base to info-base else load-base info-pages 0 ['] claim-mem catch if 3drop 0 then to load-base-claim info-pages 1000 claim-virt to info-base load-base info-base info-pages 10 do-map then lzss-pages 400000 claim-mem constant rom-phys lzss-pages 1000 claim-virt constant rom-virt rom-phys rom-virt lzss-pages 10 do-map elf-pages 1000 claim-mem constant elf-phys elf-pages 1000 claim-virt constant elf-virt elf-phys elf-virt elf-pages 10 do-map info-base elf-offset + elf-virt elf-size move debug? if cr ." elf-phys,elf-virt,elf-pages: " elf-phys u. ." , " elf-virt u. ." , " elf-pages u. then debug? if cr ." copying compressed ROM image" then rom-virt lzss-pages 0 fill info-base lzss-offset + rom-virt lzss-size move 'release-load-area 0= if info-base info-pages do-unmap load-base-claim ?dup if info-pages release-mem then then debug? if cr ." MacOS-ROM phys,virt,size: " rom-phys u. ." , " rom-virt u. ." , " lzss-size u. then debug? if cr ." finding/creating '/rom/macos' package" then device-end 0 to my-self " /rom" find-device " macos" ['] find-device catch if 2drop new-device " macos" device-name finish-device then " /rom/macos" find-device debug? if cr ." creating 'AAPL,toolbox-image,lzss' property" then rom-virt encode-int lzss-size encode-int encode+ " AAPL,toolbox-image,lzss" property device-end debug? if cr ." copying MacOS.elf to load-base" then 'release-load-area if load-base elf-pages + 'release-load-area execute else load-base elf-pages 0 claim-mem load-base dup elf-pages 0 do-map then elf-virt load-base elf-size move elf-virt elf-pages do-unmap elf-virt elf-pages release-virt elf-phys elf-pages release-mem debug? if cr ." init-program" then init-program debug? if cr ." .registers" .registers then debug? if cr ." go" cr then go cr ." end of BOOT-SCRIPT" FSPlusAPIs=0 jELF 44 , ;=huPowerPC|!|xbHy9`xHy-`b80c$|#xHvi`8!@|N 8?T2||#xN 98?T2||#xN |!0|fxb|#x|+x0c4989A889 Hu`,A08a8a88a8;Hw`H8`a8a8!Ѐ|N |!09<9!@!8|#x|~x|+x88Hw `bx8x!<0c<9A88Hu`a8!Ѐ|N |!|+x|#x; ;;x|*}'B>_~}Z |b |b |b |b |bHi`,@d8!P|N |!b;xH8L8HP TX_A\a`d h$lK9!Di|ДB8ahH`8H,lTKy`8`dahAl88(<0DHa@LADPT!XA\H`HLaP|cxT|[xaX|cx\|[xa`|cxd|[xah|cxl[x}yAb0cpK`8!|N b l,@a  H U 9 t,T@ 9H9 U@.`|[x` ``==C<a=<<`< @==c` @P`P```p` p9:ȁ, A\=@ T Tx |3xUp"T@.|CxT(4}x`| !. T(4} H, @<$N ,9@AD|9H@ 8kTk>}j[xl|RT>| PB@ 8kTk>}j[x}CSxN |!89|lx|+x8lHt`8!@|N |!!8|#x0)088;@Hp`a808a΀Tc 6|(@A؉!<, @h,@`b0c!Hp`8`HȀb0cHp`!9 |@@@ U>H;8`a<x}?Kx9 K!|H@AP,A |H@Ab;0cfHpA`H(x,A;(8a088PKm8a8x9!88Ka0|@8Hm9`a0|@89!889Hm`a,@808a8; K9!9w Ba8a899!88Kaa8;(@0~Hl`a0~@89!889Hlq`a8(x08`H{`8H ! @职 D,A8(8Da@0 K9`|}xW> >D,A,Ad8(8Da@0 #K`Da,Ab0cH]}`!}HK}jUk>g lD,Ad8(8Da@0 ]K}`Da,Ab0cH]`!}HK}jUk>glB8(9H0f 0 e@88;HZ`H|@@ 9 H9 U&>P<80g)0N|#x8@;HY`@|@At9L0g49AH0'889 ;HY`H|@A4a8L8a耓H[u`8@8aH[a`8(9L0f40Y@9AH889 ;HY`H|@A8L8aa8;H[`8a8HZ`b9!0c 888<@9HX`|@@b0cqK`|;x;@Hh`9ܐl@9!R8b9J80c8HY!`aDs 8 8H8(9L0f40@9AH889 ;HW`H|@A8aLa8aa8;@HY`8a8@HY`R9J8b9܀0c9!88HX]`aDs 8 l8aHr8@8|#x0)08@;`HW%`a@08DK`@a|@A,D,@ a@8`8(0Hfu`H48|#x0)08@HV`0;8`HfA`@8|8@AԀ9L0g49A0g889 ;HVi`|@@ LH8L8a8LHX`b0cr8LH(`,@$b8L0c{H(`,A48(8`0;;?Heu`,?b080g)0|#x8@;HU`@|@A@8(|3x08D;`Kq`$@|@AD,AD8(80f)8(|#x08@;HU5`@|@A<$-AR9kc=kc @;}:}`=, |@@@i| @@A< <} 29f9?}Xx}g}?K;?,?( A<|0@A|J=@|P@@;F@}8=J| P@@\;h(;Ab0cHV`xxexHeq` @_|`? H|;h(:Ab0cHVy`x~xexHe`_? @< @}'@=)@?H ;B(@b0c2Kܵ`8(8`0SHb`K}<8,B9:}4 B;Hv8 8(0nHV`8 9.쑏 9:ȓHL`8`H6Y`职 (@b0czK`H %`,@b0cK۽`~x9@x8@HV!`(s Ab0cHT`(?U>9Ax8@H_`(?U%APb;0c::x9H``;`;}{x~ٳx(@ b~ijx|.0cH``Hb 0c6H``W%:|(.(@b0cH``H.;,A,0(9ADbk|*0cNH`I`H( (0|9Ab|0cNH`!`;( Ab0cH``;{;9(;Z ; A:9(::Ab0cH_`~$x9x8HTU`;9W9A$b0cRHR`x8H^)`3,A81t99B8(@pQ| 0@8H9A49 99}'Kx(@9'@ P}g| 0@@H(@AtH8|(@A8`8(t0fH_`3lglK1hn3;Il|@8l3 |39|H|P@8|3 ~39~H|P@8~3x39xH|P@8x3z39zH|P@8z3gK-h3;I|@8339H|P@83gKṁh3;I|@83(TA;(l0~H\`0~|H\`0~xH\`s0~zH\`S0~ШH\u`30~⨙H\a`0~H\M`:0~䀖| H\-`3,Ab9A 0c 88<=9 HM`a,Ab0c@K`888F8b8*! 0c`=HME`a,Ab0cdKխ`(TAH;(9܀ 0~9!9A88HL`aD0~ H[-`a KMH,b9A 0c 88<99 HL`a,Ab0cK`8888G8*bUJ&! 0c`9HLA`a,Ab0cKԩ`(TAH;(9܀ 0~9!9A88HK`aD0~ HZ)`9@9` 9T>}(:Iib8B0c 8<=@9 HKu`a,Ab0cK`8%8b80c`A=@HK)`a,Ab0cKӑ`88T&8A<~H3`|}xK9!l}`X< l}`X< <D|L|P<}H89=JF9As8klaԑlr $9 |(8b0cHI`aDr | 4r K$| |R $}H8}fRe|L$| |  l$||  , $}|B0Rj$|(|  99,U A8XD('U$A;(0~:HW-`0~f$HW`0~b耼HV`R0~πHV`20~ HV`x,0~KHV`x00~HV`0~ǀHV`0~ HVm`20~C4HVY`(/q$ AȀb0cgHI`(W9Ad8@HT`b0cuHI`(W9Ap8`HT`b0cHIQ`(W9As8HTy`b0cHI!`(W9Ar8HHTI`䀅(fHW`89܀9!9A<<8b80cHF`aD;9>U=CA00HH`80$|#xHE`;9>}#Kx0HUE`8|#x0HE`aHS`0P8`c9>H88`0HNm`zpc Ab<0c'HAe`W9Ax8lHL`b<0cDHA9`W9Ax8(HLe`b<0cgHA `W9Ax8HL9`8`8!|N |A!8|+x,|3x|#x;;`@ 8`H<;B|fx8x|#x0zH=`0z0989AX889 H=`X,A 8`a8b<880cHA`,@8`~8;Hb<880cHA}`,A b<880cHAa`,@8`~;H\88\}0K`~\,A~88\}0K`\,Ax8!|AN (@ 8`N ,@4,@ =H 9=}8}(8|d0|c4Tc~N ,@TdT|d0|c4Tc~N 8`N |!!U)|3x, |#x|}x@ }CxH|:}*W:}K:Tc:|CUY:~xx8K-,A<}h}h| 8@k|A}g|X@A }CxH}*HUC:}@K8!`|!N |ؐ!p|3x|+x|#x||x888<8@|;xK8|xxx0`09D88H;`!D, A, W:^@9x0h09H9AD889 :H|T:~H:`<#x!Dxxx9HKa<|T:|#x8aHH>a`<8T:z|`}X;H| @T:H>I`<@|T:}`H|a@8<;!H:H|8aHT:H>`a<x|exTc:|cH=`a@Dx<|}W:Tc:T:|`|cH=`<,Aa8x@8HK%H$T:8H|2gHW:|"e8!|N |!UJ|;x, |3x|+x|#x||x}?Kx@ xH|}9BW:T:}]*U(:}xx8K=,A\{}B|*|`@A@b(TA(b<0cH;A`|xT:HFu`xH}IPU#:@|K8!`|N |!!|3x|+x|#x|}x888<8@K8|{xzxx0`09D88H7`,@ȀD,@9Bx0j09H9AD889 W:?H7`<Cx@xADxx9!HKE`8!|N |g4,M |!!;B:|#x8*(|3x|+x|;xfxxxx8`@; H>`8`K`|x(@bt0c;K!` :( @?H ?8!`|!N |!88|xt9<0eO0Wx9A@889 ;H.5`@|@A48*(98<0dO0h9A@889 H-`Hd;*(8x|#x0~y89AX9 K#x8K󍃞0O88;(H `!X| @@8`a;H$8aa}?Kx8a8H#`8*(~x0dO0+99AX889 ;H `!X| @@8`aH 8aa8a!8H"`;";`~,@$b|,@b|,A~,@~,Ap~(A88H$`,@P~(Ax8K`,A,~(A8H#`,@ ;`H4~ x,x; @hi$,@\h(,@P@:B*&-b;x:8a\}?.+ Al@ ( @}?.;/H08a|.,A >H>}?.;/;, AD|q.U$<|d.H4@ ( @}?.;/H~.;~/AH,A<8a\}?.( @( @ }?.H,A >H>}?.|.T(@H|.8a|.,A 8H88|0.,A 8H8|4K;;{|x;A;@Tb0;/@0"} |.9)HAĬi|8@BA|i;;|xAă;*(0l8cH!-`$Kcx8K_8z0::(H `?$@(b}918Bb\Kﱀa\H|i}?.|@!X:e8|, <A8iaX:saX|0Tc:| .|+x}#!.K}I8||;K}i8||@;K8!@|} N |!!a8(b;"(;B"@4bt8|#x0c888H `8(@H̀{9<8c {9A\89 ;8*(80dO08H`!\| @@8`a`H 8a|x?U$&|@@U$>#xHb0cK]`?U$&|@@U$>#xHb0cK-`?80U$&<|0@@U$><0|3xHb0c/K`9(@<9 |J|p (@}]"9JF|99)|8@A8|9 HA|:89)}JTBA|:8̀<$| 0@A U>'>U(>x,}Hj|}&X;'|;$x8g@}=Kx(AdxH# `, AT, 8|9?H@ 8|9)Ā888BH;}=,T 6A\<T<T&`(GUJ 6=J UJIz=U&a( HUW88iT&8`(:́_|P8H!`?,;9?A8 |9=̀888B܁(AX<`| @}<:A8i|(8|8H!m` 9?888B܀T'>,T>x|&@9)|(8}|88;^H `,x@@W8 ||9&̀888B܀@T T>8}*3xH|w8|3xI|w8!@|N |}&!Đ!P:B9|;x9 :U>|#x81@-|3x|x0\8` |+x:::; :`:H`81@x0y8` H`,;W>@ 81@x08` H}`H 81@xx08` H]`,AA`,AA(,AA,AH,AH,A|A, A0Hh,A|,AHT,AHA(,A~ @ 9?9B;xHA,AHHW:,|e89@(9'9;|0A8!P|N 8|99` $} :|f.0|I99kBd8cdN C8|99`Uf@.|3xB88dN 99e,A 9k9,@9|`|2}&@#N |!|~x;8H`,9 @h|i|J9$8 8 H @;H ;i|ctTh>, B@;H ;8a8}b8880c9!888K`8!P|N 9`|u8cA9l9k|cu@}c[xN |jx|u8j8A99cl|cuk@}CSxN ,L |99cBN ,L ||t9lBN |t|t| X@8|uA8|t|t|0A|t|t}cx|kN 8`N ,@ 8`N ,9@\|99dH@X, A`, AXl|jt|t| HB@,, A4, A,|i}(| (@8`N 8`N 8`N 8`N |a!;:,|tU>;`A |;x80,9@AW8V@@,@4<| @@ 8:P}#Kx|fxK`8f H(|c;`8 +@8`0aV8U8H/A,A ,@|;;A,/@ 8H8|4@ ;H;A0/9G|h8A|஘}GSxH|讘}GSx|c08(@H, @9:(8M89@0Gh|X@A$g}kt9kg|l|`@@89, 8AaM8M|ct,0@g|ct,0A8a8|8}08HX/| @9A|d9| @@9GA}cஙg}GSxH}c讙g}GSx}Cx8(@/@$,AA|9B8,A8`-g9-Hg8|ht ,89)A 99)h|cui@9)8i8!p|aN +9 9`Ad, A,A 8`N /|t, A, A , @(8c|t, A, A, A|lxL}Jt}cx, -8l@8h|t9 9, 0A0, 9A(@ Uk 6HUc8Ue<}c*|jZ9cHH@p, aA, fAUc 6|9eH$@T, AAT, FAUc 6|9eɍLK8l, A}kA 8}c[xN 8lK8lK8lKN |!!88|}x|+x|u@H |t,%@Ё8;;8;`;@; }CxD}Jt, UA0AX, DA`A(, -AA, %AH, .AH, OAA, LAH, PAH, lAA(, cAXA, XA0H, dAH, sAA, oAHx, uA, xAHd88H/|t;@0,@(9,@} 98 B;];@,Ax9,@} 98 B;]HL, P;@;HxKi`|dx,@| @|;x/@,,@$}@} 98 B;,@ |89GHB;]@,A}@} 98 B(;H98;`K98KĀxxx8 9;K1|}xH<xxx89;K |}xHxxx89;K|}xHxxx89;K|}xH88H}Jt, *@98;K|#x888 K%8|gxK/ 0@88;0H}Jt/ 0AX, 9AP,@; |#x888 Kс8||xKxxx89;K|}x8;88888}u;@H KK8!`|!N |!\`dhl!pAt9!\8|xKuxK`8!@|N |!|#x8:P|xxx0 8a8Ku`8a8K`,@, A08:Px0'8a8? K1`H, A,8:Px0B8a8K`HT,A(8:Px0X8a8K`H(,A 8:Px0i8a8K`8a8;;K`,A4b0cuK`8!|N |!aX\`dhl!pAt9!X8xKxK1`8!@|N |!\`dhl!pAt89|f(9@H(9!\8xKYxK`8!@|N !9 |jx89 p),T~@$88Ap`,T~A,88|I9)U)>A\ 9JK88P%.@8T >9k}i|88|I9) 9JT>U)>BKX!|cPPN }hH |HB"s|S|rRAPc@>s|S|rRAPc@>s|S|rRAPc@>s|S|rRA8` s|S|rRA8` s|N + @|+yAAhA|c*|*HM M }@$|p@Hp}@N |c*|*p@]HYp}@LN  #Cc $DdN p| |(PA$  @@ @ L N p| |(PA, 8c 8@8c8@8c8@8c8L 8c8N T}iM p`A`| |! 8 #Cc|' $DdB|&N 8#Cc|'$DdBN T}iM p`Ad| |!  #Cc|' $8c Dd8 B|&N #Cc|'8c $Dd8 BN |uxK<`Hi`c! K5<@8@d$D(Z$ (|+x:0~ֺ~80|<`1R`c KLd A| LN +:+ @\8Pd`X<DHLT4h+###.2(:;8::;;;;;;<8<;;<;;;;=;;;;;<=;   MacOS: Boot Failure! (0xF3C481F6) exitfinddevicegetpropsetprop checksums = %x,%x,%x,%x,%x,%x,%x,%x,%x,%x MacOS: ROM checksum failure! /chosennvramMacOS: unable to find ihandle to NVRAM in "/chosen", opening "/pci/isa/nvram". /pci/isa/nvraminstance-to-pathopenMacOS: unable to acquire ihandle for NVRAM node - using 0x1400 offset sizeMacOS: NVRAM "size" method failure - using 8K. NVRAM size = 0x%08X. seekreadNVRAM partition offset=%08X, SIG=%02X, size=%04X, name='%12s' NVRAM partition invalid (bad checksum). APL,MacOS75MacOS: NVRAM size too small - using constant NVRAM offset = 0x1400. MacOS: unable to find a usable NVRAM partition - using offset 0x1400. writeMacOS NVRAM partition offset = 0x%x stdout/Unable to get phandle to "/". Device tree probably corrupt. AAPL,debugAAPL,debug bit settings (-OR- bits together): 0x%X = Print general informative messages. 0x%X = Print formatted Mac OS tables (except config/universal info. 0x%X = Print formatted config info table (formatted). 0x%X = Dump Mac OS tables (except config/universal info). 0x%X = Print node names while copying the device tree. 0x%X = Print property info while copying the device tree. 0x%X = Print interrupt info. 0x%X = Print interrupt tree traversal info. 0x%X = Print address resolution info. 0x%X = Print NV-RAM info. 0x%X = Print Mac OS "universal" info. 0x%X = Print "special" node info. 0x%X = Allocate writable ROM aperture. 0x%X = Enable debugging output AFTER Open Firmware is gone. AAPL,writable-ROM-aperturegetproplencopyrightCopyright Apple Computer, Inc.Official Apple copyright message missing. mmuMacOS: unable to find ihandle to MMU in "/chosen". memoryMacOS: unable to find ihandle to Memory in "/chosen". /rtasMacOS: "/rtas" not found! rtas-sizeclaimMacOS: unable to claim memory for RTAS instantiation! MacOS: RTAS -open- method not found or failed instantiate-rtasMacOS: instantiate-rtas failed. MacOS: Unable to find RTAS. Proceed with caution, curves ahead. MacOS: -claim- for work area failed! translatework area logical address = 0x%X, physical address = 0x%X. nvram-fetchMacOS: RTAS nvram-fetch token not found nvram-storeMacOS: RTAS nvram-store token not found get-time-of-dayMacOS: RTAS get-time-of-day token not found set-time-of-dayMacOS: RTAS set-time-of-day token not found system-rebootMacOS: RTAS system-reboot token not found power-offMacOS: RTAS power-off token not found set-time-for-power-onget-time-for-power-onevent-scancheck-exceptionread-pci-configMacOS: RTAS read-pci-config token not found write-pci-configMacOS: RTAS write-pci-config token not found AAPL,cpu-id/cpus/@0603-translationcpu-versionMacOS: missing cpu "cpu-version" property. clock-frequencyMacOS: missing cpu "clock-frequency" property. bus-frequencyMacOS: missing cpu "bus-frequency" property. timebase-frequencyMacOS: missing cpu "timebase-frequency" property. d-cache-sizeMacOS: missing cpu "d-cache-size" property. i-cache-sizeMacOS: missing cpu "i-cache-size" property. reservation-granule-sizereservation-granularityMacOS: missing cpu "reservation-granule-size" property. cache-unifiedd-cache-block-sizeMacOS: missing cpu "d-cache-block-size" property. i-cache-block-sizeMacOS: missing cpu "i-cache-block-size" property. d-cache-line-sizei-cache-line-sized-cache-setsMacOS: missing cpu "d-cache-sets" property. i-cache-setsMacOS: missing cpu "i-cache-sets" property. tlb-sizeMacOS: missing cpu "tlb-size" property. tlb-setsMacOS: missing cpu "tlb-sets" property. MacOS: unable to locate "/cpus/@0" /memoryregMacOS: unable to locate "/memory" node. /cpus/@0/l2-cacheMacOS: missing "/cpus/l2-cache" "d-cache-size" property. MacOS: missing "/cpus/l2-cache" "i-cache-size" property. MacOS: missing "/cpus/l2-cache" "d-cache-sets" property. MacOS: missing "/cpus/l2-cache" "i-cache-sets" property. /rom/macosAAPL,toolbox-image,lzssMacOS: -claim- for toolbox image decompression area failed! AAPL,toolbox-imageinterrupt-controllerChecking root interrupt-controller - is it Heathrow or Paddington? /pci/mac-io/interrupt-controllerHeathrow location method better get fixed. compatibleheathrowpaddingtonFound a Heathrow interrupt controller! /pci8259-interrupt-acknowledge/pci/isaMacOS: There are 26 banks of memory. In copying ROM image, we could lose the last bank! MacOS: can't find "/rom/macos". ROM Phys Base Addr = 0x%X PMR&BGsTreeMacOS: unable to find an interrupt controller node. MacOS: could not create universal product tables. Interrupt masks: Level Raw Value Bits active %d [00..31] %08X [32..63] %08X %d Interrupt vectors: Spurious interrupt vector = 0x%X SIOIntVect = %d SCSIIntVect = %d SCCAIntVect = %d SCCBIntVect = %d VIAIntVect = %d ADBIntVect = %d NMIIntVect = %d %d bytes needed for device tree copy and other tables. MacOS: OpenPIC -claim- failed. mapMacOS: OpenPIC -map- failed. intctlr_addr = 0x%X, phys = 0x%08X MacOS: Interrupt Controller -claim- failed. MacOS: Interrupt Controller -map- failed. MacOS: MacROM -claim- failed. MacOS: MacROM -map- failed. FreeBytes address: logical = 0x%08X WorkArea_target address: logical = 0x%08X SystemInfo addresses: logical = 0x%08X, physical = 0x%08X ProcessorInfo addresses: logical = 0x%08X, physical = 0x%08X HWInfo addresses: logical = 0x%08X, physical = 0x%08X VectorTable addresses: logical = 0x%08X, physical = 0x%08X InterruptMasks addresses:logical = 0x%08X, physical = 0x%08X HwInitInfo addresses: logical = 0x%08X, physical = 0x%08X Config info addresses: logical = 0x%08X, physical = 0x%08X NanoKernelEntry addresses: 0x%08X System info: Processor info: Hardware info: HardwareInit info: Stopping at end of FCODE, as requested. Off to MacOS. The next (and last) call into OpenFirmware is quiesce(). quiesce @ A A B( B B D` D D< E FT GX E E\ F F B C C E D Creating dynamic ProductInfo & Friends -- Dynamic ProductInfoPtr (logical) = %08X -- SizeOf( ProductInfo ) = %d -- Converting UniveralInfoTableBase to 68k logical address %08X. Initializing ProductInfo record -- Initializing productInfoVers to %d. Initializing static section of DecoderInfoPrivate. Initializing DecoderTable. -- Initializing (logical) ROMAddr (which is ALWAYS %08X). -- Clock primitives accessed via RTAS. -- Initializing OpenPICBaseAddr. ---- OpenPICAddr = %08X. -- Initializing HeathrowBaseAddr. ---- HeathrowAddr = %08X. -- Initializing VIA1 address. ERROR - could not find address of VIA1 ---- VIA1Addr = %08X. -- Initializing SCC addresses. ---- SCC base address = %08X. ---- No SCC (of some sort) detected! -- Initializing Mesh SCSI information. ---- Mesh SCSI base address = %08X. -- Initializing ADB information. ---- ADB (of some sort) detected. ---- ADB base address = %08X. ---- No ADB (of some sort) detected! -- Initializing Power Mgt information. ---- Power Mgt (of some sort) detected. ---- No Power Mgt (of some sort) detected! -- Checking for IDE. ---- Found some form of IDE. -- Mac-IO base address = %08X -- Floppy controller base address = %08X -- Initializing Sound information. -- Has Awacs Sound Chip. ---- No Sound (of some sort) detected! Dynamic ProductInfo Table: Dynamic DecoderPrivateInfo Table: Dynamic DecoderInfo Table: parentgetpropdevice_typepciisaeisa#address-cells#size-cellsgetproplenrangesmatching assigned address: assigned-addressesregHandleSpecialNode: SCSI device base address = 0x%08X HandleSpecialNode: SCSI DMA base address = 0x%08X. AAPL,not-fastHandleSpecialNode: AAPL,not-fast detected. AAPL,not-synchronousHandleSpecialNode: AAPL,not-synchronous detected. HandleSpecialNode: SCC legacy base address = 0x%08X. slot-namesHandleSpecialNode: ch-a slot-name detected. HandleSpecialNode: ch-b slot-name detected. HandleSpecialNode: VIA base address = 0x%08X. HandleSpecialNode: Cuda detected, VIA base address = 0x%08X. HandleSpecialNode: Cuda Power Mgt detected. mgt-kindmin-consumption-pwm-ledHandleSpecialNode: PMU Power Mgt detected. HandleSpecialNode: PCCardNode detected. HandleSpecialNode: Cuda ADB detected. HandleSpecialNode: PMU ADB detected. HandleSpecialNode: ADB base address = 0x%08X. AAPL,has-embedded-fn-keysHandleSpecialNode: Embedded function keys detected. HandleSpecialNode: OpenPIC base address = 0x%08X. HandleSpecialNode: Heathrow base address = 0x%08X. HandleSpecialNode 8259. -- 8259 master = 0x%08X -- 8259 slave = 0x%08X -- 8259 sense = 0x%08X. HandleSpecialNode: Hydra base address = 0x%08X. HandleSpecialNode: SWIM3 base address = 0x%08X. HandleSpecialNode: Awacs base address = 0x%08X. 'x''''''''''(((( (((0(@(H(P(X(`(h(p((((((((((()))( )@)X)h )x)) ))))) )** *8*P*X*`*h*p*x************++escc-legacychrp,es1escc-legacych-achrp,es2serialch-bchrp,es3serialch-achrp,es4serialch-bchrp,es5serialadbchrp,adb0adbadbpmuadbadbadbkeyboardkeyboardviaviavia-cudavia-cudavia-pmuvia-pmuethernetscsichrp,mesh0scsiinterrupt-controllerchrp,iicinterrupt-controllerinterrupt-controllerchrp,open-picopen-picmac-iohydraAAPL,Hydraheathrow-atakeywest-atainterrupt-controllerheathrowinterrupt-controllerinterrupt-controllerpaddingtoninterrupt-controllerprogrammer-switchfdcswim3soundawacssounddavbuspower-mgtcudapower-mgtpower-mgtpmupower-mgtpccardti1130pccardcardbusti1210cardbususbusbOpenPIC setup: vector %d, level %d, sense %d, polarity %d MacOS: allot fail. getpropinterrupt-parent#interrupt-cellsparentnamenode '%s' has %d interrupt(s). MacOS: device has more than 4 interrupts! AAPL,requested-prioritiesRequested priorities for this node: getproplen#address-cellsrega unit_interrupt_specifier: interrupt-controllerinterruptsinterrupt-mapinterrupt-map-maskMacOS: "interrupt-map" larger than expected. comparing the following specifiers: MacOS: unit-interrupt-specifier not found in map, ignoring. new specifier: device_typeisaMacOS: too many interrupt sources! AAPL,interrupt-vectorscompatibleAAPL,interrupt-prioritiesAAPL,interruptspeermodelnextproppeer prop '%s' for prop at 0x%X, offset = 0x%X first prop '%s' for node at 0x%X, offset = 0x%X new peer '%s' to node at 0x%X, offset = 0x%X. childnew child '%s' to node at 0x%X, offset = 0x%X. ROM logical address = 0x%08X, MacROM_Base address = 0x%08X. ConfigInfo logical address in current ROM image = 0x%08X. ConfigInfo original ROM logical address = 0x%08X. configinfop->ROMImageBaseOffset address = 0x%08X. configinfop->Mac68KROMOffset address = 0x%08X. configinfop->HWInitCodeOffset address = 0x%08X. configinfop->DiagPEFBundleOffset address = 0x%08X. configinfop->KernelCodeOffset address = 0x%08X. configinfop->EmulatorCodeOffset address = 0x%08X. configinfop->OpcodeTableOffset address = 0x%08X. ConfigInfo Mac ROM value in MapInfo = 0x%08X. MacOS: boot failure - Unexpected value for MacOS ROM entry in segment table. MacOS: boot failure - Unexpected value for MacOS ROM entry in BAT (overlay). MacOS: boot failure - Unexpected value for MacOS ROM entry in BAT (normal). MacOS: boot failure - Unexpected value for MacOS Emulator code entry in BAT. ConfigInfo table: -- CopySomeStuff: From: %08X To: %08X Length: %d MaxLength: %d -- CopySomeStuff: Data size (%d) exceeds maximum safe length (%d) TakeApartFilenameTags: IP = %08X TakeApartFilenameTags: Port = %04X TakeApartFilenameTags: Volume = '%s' (len = %d) TakeApartFilenameTags: DirID = %08X TakeApartFilenameTags: Path = '%s' (len = %d) Processing BOOTP/DHCP tags: %08X: Tag: %d. Tag: %d. Len = %d Processing DHCP_TAG_END Processing DHCP_TAG_PAD Processing DHCP_TAG_SUBNET_MASK Processing DHCP_TAG_DOMAIN_NAMESERVER Processing DHCP_TAG_ROUTER_ADDR Processing DHCP_TAG_CLIENT_HOSTNAME or Processing DHCP_TAG_MACOS_MACHINE_NAME Processing DHCP_TAG_EXTENSIONS_PATH Processing DHCP_TAG_SERVER_VERS Processing DHCP_TAG_SERVER_INFO Processing DHCP_TAG_USER_NAME -- Served-supplied user name: '%s' Processing DHCP_TAG_PASSWORD -- Served-supplied user password: '%s' Processing DHCP_TAG_SSW_SHARED Processing DHCP_TAG_SSW_PRIVATE Processing DHCP_TAG_VM_FILE Processing DHCP_TAG_SSW_SHADOW_SHARED Processing DHCP_TAG_SSW_SHADOW_PRIVATE Processing a tag (%d, length: %d) we do not care about -- Invalid len byte (%d). Stopping tag processing. 'Random' AFP port number = %d Cleartxt PasswrdUsername: '%s' (len = %d) Password: '%s' UAM: '%s' (len = %d) finddevice/chosenbootp-responsegetproplenbootreply-packetclaim-- Storage for bootreply packet obtained. Located at %08X, size = %X getprop-- Storage for '%s' property obtained. Located at %08X, size = %X AAPL,LANDiskInfo-- Storage for miscellaneous information obtained. Located at %08X, size = %X -- ERROR: storage for '%s' overlaps bootreply packet! -- ERROR: storage for bootreply packet overlaps '%s' buffer! -- ERROR: BOOTP reply packet was NOT a DHCP reply packet The BOOTP reply packet is a DHCP reply packet No network files located. LANDiskInfo property not created. Property Table of Contents: Entry: %08X Creating '%s' property in the '/chosen' node setpropAAPL,MacOSMachineNameCould not create '%s' property AAPL,bootp-client-ip-addressAAPL,bootp-subnet-maskAAPL,bootp-gateway-ip-addressAAPL,bootp-domain-nameserverscall-methodinterpretwrite0123456789abcdef0123456789ABCDEF;B@'d -2147483648Dumping %d bytes @ 0x%08X %08X: %08X %08X %08X %08X %08X: %08X %08X %08X %08X: %08X %08X %08X: %08X #*}NDN {cJ O Rx`'VCq^0/P`KJL*<`Copyright (c) 1983-1998 Apple Computer, Inc. All Rcs Reserved.F'N{Nzg"ؐ{ <}@ H x P W1!r !MwK_1NP1۶B"!;v!WLSC x|1H!j!BTLG0<(ln1 "g1k P"!´!l! Ff0$ .Bd`K~Nr`_2ǬppjCg~Nu><( lEO~߇Nu.Bga ϏTNu@NsHGBG)HGNumNu 8 1Ј@@ @@_.. d LBAPACra^B8,€-€.BxUD0r ofC"jrnB *Bx B8 B 21  wBaF΀Zl wr BA Q8!NuH` 8 "8?$$8$S,`F6kv6Z C l gK&0`g(1 {`0g>` f  x| g!` gd` f4 f!    :Nu"!"!"!fNu,~`(pj"p!Π *Jfe1Pg ``O O!IB(O2Nu.Sony .MFMFloppy- (t0Pa J$U//Sr6BHz/<}!@(Df2 f/pEpAC # # // PTHJf R0 @"A$B "R1Q K*#>.8L OH&R0H@r) .$ qPVH&n}n~/ NjHn`r.POg0`@/.F4lN1f"|pw/N. F0/ /F4Z.-F4\0XO?LdǾ۰Ԥ;mr;;ޚ<|dNVlz:2@1pn0.r1 B >L`<651}:0p(p3X0B0@>- f( (gNTH0`B`U> >w003Ү1cȞB;/ :1 g L(n7860Br$K`RJf} Pc"y R`SfL,OHz|BG`-H`@Pp-@"`/.ZPF0N`DXF0F0k/ bTCf4z0Y.`C0Jf0 F0p0/P/bS\D><SXOJGWDIw 0Ɣchrp,fdccompatible PnamP0 :K#[H,QN|F00`B.PO`GOp n1v1ޜQr/4dx*L2ЎJ=`~PRPJfF0Z,c 2 `X .(5H@La/ 3a/a2f2PR-L-`Bn`UF0A>r?4c},cF0P1”lanLib)s,AAPL,MacOS,PowerPCTethernemt70921&H/Y.  _ @fPppJV1v"driver-pt0h6Cs-descriptorT:k#kr2: )䯶J 60x˰ &&Fqp8 8$g@ڰ,s(  ڰ. Vr€.*&E(EF-G,$x J"L .&JzP5@Q@4[@vT Al8@bU<@X@@NUD@DH@:UL@0P@&d@\@! j``Pi_1";02~p#@0%0 DCPR AP=P=| *`f $DRXN51U~ȐB@#>B5)5U bSltfpf~D#r"\208y$70EBpRPuT` BlJ@f0p,.`b WSN$JP>_PrgJP Hfw&~64!HG@ JcJg@O؞9BAp&@B$vQ$Z e1lHNZf(!g&L|F=@:1WauQҢJBg&LȐXPR=wPʿ=|C rr`Ҳf >r6l ||ΐ`q+ZrPBd .BacklighWqQdzHRPRP-|QQzQQbRPRPRPRQx JWGfp.aJдhԴ~gvm BpVR,  g  @VȨ l Px g" _Begin-"&!Version >D% llNubD%vmIsOn Y"PCSampQLLCFMCallbProP NPve[ Ep"b:; T TB"o T/"" h oTp!5 T @IF/0@&/0@ވ1F&v9H/0ʂ00NzFC0kfP߉"A@L dJ g``H### PPC Debugger [ - not enough roYin System heaop to@st ? handlE ^/An&@ _fNsH o(ag /,H$/@VLq/:Nu f< (PP ACf| 2 _? :Q0j0m pNu@AR0cp/\Q6PG:Q _VQ\QSINT$SIr 0 9c^YlNuiCt____o!o3odEerror:??@ exceptH! >A 5trap enabled FPUinvalidBrucdbpiileg`i Y`unused ine checkh w`ce&ia. ess compare breakpoiont"jccåed$ @rdwadetect`0 page faulti-V sulvisor pd proNql data"drovs+qyCyixywritey&yv'YkG _f at bQD>1eF; b:H@ Cg"BP/:sNu08> z7NQB>͜ QNLNTaad~)xjfa_B,fv`z8 "g< 8j  c,A0~1|C !I!|MATT hp0.fGVRG`*А^ GnԐfa"fJv aR?a Utv|vv{g g.`JxkR/ p*_N\NuYO O})W68U9HC6HC Dfff /z`U zXzzG_gxVlBFU O Q0@ /f2FAA Ab8 /Pj@efdJDo`O O֠"OD2L1p0nfB1h2@@WB) 2p#J+f 8)`PNuBD`rHlB|VPO̠g^J@l8aP #glH9D*,$"A A g Eg`00Ƞfp/Ɛ,H/PO @9EലFL8, $p g*2* pr( g0)BCCg i g N`XBSAfLNu6P֠ ,8(`2P.LANDisk0 P0`z< _/.,=G=ip-@C I:L(n Tphg.=n PRP+- P$T,.2VJEgn f2-n0`&if n\8c.ἰrPGgf`c .L~]` ZL0`NRPZb`aXOfZjp/`L`8`uXR``TP]\PR PL*cZb.ðB.npt`YNV=&n(n p/b/.4>(e`fp0.PMfJn~JGf4$L<( &f U> >`/>rHt~0b`C&w0PUNV1q:u n"(T// HpLpJFXBl<~1b`<JFLBG`R{ffH C L<ЖHp0`JPOg^/ Hn`ăf8UHn$$`J_f& .` ".g0RGHǾl^vffvJ`RJg聠I PpQApple_HFSj{NZH5q `&aF`8"pC`JrPfWDP*^.  ae]p8zb 6|? `wБ4rْ`nJy$0d/ Vvsf`,n8VJ| 씦Bsnamedevice_typeQHIrKp\>f6v/@vP&Jg (vv{J`pptata#idߠYàwp`z"J(Jƃ@zQRTfPO>pc'pKזpp p DPΐHy.Ip֑Hz`Np""L&QƁx_ȇ/ :`}B>BVtzzC>=J`/ /Ax6.gFz>&B>J`>B,pچvpNvv0b`,rp(p``Hzp˜sff|-f rp`^2TzĨ``h0d8d&vvր||HѠ>z'Ri`*P` H0dDt`(H g.ѮzH, Lg`x`5rvhHӰ2bL6֔Hv r€,0`v`v|FIXO Ry(ҁg><`rpyvPXOrp bKZ;POridregAAPL,bus-`LPc>j6ZH6:rKπayn`p0pV{ NLn`Tl|pJИ`8"npd@f6f J p`f`f``Zp|"xJ(rp$VCBWq ea=X⨒~UP-cooki߬s8$#6u6{|adq(f/ vQ|Ă`6x xTz0P* ֑"p`V00m09nH0M0H$W`20AFu70am 0fnW Ђ&RIf &9`"{ 3y/fRL-K`g /g@fB~HsRJPfBK(@"PJ1bgF"p "ᩯ p,p4nReLJp,"pѐJfSL Ң`e 6pmVBpk2cq2"2F"$ѤrQuf`$r'$^䬯"ܘį֩[L2eoGLК>wa*n0Wм`'q*0n>ҧVS1Z>a .3$@.3.\a10T5^p$ր-1nS0⬒҃جJg1L2l1p*P-RК 3U jf`bÙa0`0dTԝ8DJ L-A})'0aԀ Dt`@#ӭ212j40>PEf/Jggc^0fJ@" `£1POBG",آetworikIDs:-treee.Pe:=p Zn1pGsBSBB|p:TQ"0X|J 5zB`>B(h 0m9n܆ ܀H0܀f܂.fz]R P@ST0|RLo$ofJg{|Jg"-$^ c7PPOҠTYX_ ˿2tmN̎q">3>rnpV*L$PdW%c#HBthCpq[vB ^7~s϶*Ԡybath?_ee:chosen̒H)8. <.zHƖ/N`fftTB.`B:Zx (`D=F=DB"y‡ |c`qp@XO/I@x1N(0NVlHPI:p E&3BHxRVѡTtě/ r2t҂ EV%9G| GL)H:p)@>)LBXF)|@&9|pr+Jflp)SXph"y2, L*rЁ"@p\J@8 l:"l>Cg$Jg⼠4ǥ>,yzN!`@MP$Q(Η. D1(p$@0NPJf/ϱzV!@XO"L<v@DV $op (L|w, LF* q.Jg RбEL$H f֦@L߳^0*0*r-nD@PNUvXV ]PZ ~J=w@4.8:GM(B+p"?A.y @Er }Gr 9nV g)J:`)o:)Pj|VplV)1Pa0g.Sڴů٩,Ng ڧ lBl&`zK t* Ѕ @AD. J"S$&ΟpE,!"Ҽ$ ޴t" L|y!=H I>g0چP'|'D'F 'Z`\H:Tv@]N"tݔ^>BBnRBIx`r%, @c?f//05B|q #a x!!!ap.Dg f A.N68o28 4 g01x 41|1CJnfl x 4f 08 1 `|G,0k4?20[ g @ @ `f0H0G`  NuA  @hfh\(NuaJPPVHVInP/PPbPP4PɈBP/TP݈P ~P PUOpTO8 O耠6pW2n8`P/nHptPa<8 f $8 ` $-@VP=NJ xkp\` AX0 0R/ 0*jo@?0k W0 #W0RHD@/ Ljtg$H6&H/+0pZSHF<G SCf UHhQSaPB8`J8rf&J6TKa(f~ `aga$gJgpUO/80HWq/ 稭tNuOBx Rp`8qn`F&D Op1fva ,p/amZ gLf8gRFSNYO//UOD6o0W/Tq?DWBg`JFgSFD`f<>z@,0k"4@f0k7n@fz@ N .G "DMFSMTDD@A@PCSR Dg/aNuN]`$_|PONp b&@! |zE ? a xv#?C-?XhD@Q! .@aHPa0?XxY 09o^@/D"@P >L^op N:&ÕV㝀}@ŚӚ&/7Pصฐ/a’؀+N,!MM@zNQRaRSēTPUVh0 0a  `p#W$$%U%a%&&U(()a*U,,--U....U//a/0U0112U3456m677a9>0@@F0A0U@E0AI0A90A10C D50Ff0I0GA0H0Ia0M`%Py0Q10R50UWi0Wa0W10Zi0[90^P_0`I0`0by0b0ep|ma00a0Pʪy0ʕ05010̪0i090y0Ѫq090i0I0ժA0Օ0I010ת0a0A0a0ڪI0A0E0ہ0ܪ0y0ݱ0y0na0o50o10p90x_f@f@r@e@i@p@ @i@@K@A050Uq0*90*E0'0Y(a0)0A0+0+0+E0$U-a0.00A01q0303A0310xU70990:a0=0U10a050q0Uƕ0y09010U0I0!90!10e"a0$0%i0U%00E0 a0U I0 A0 100U0500qQ0q0y0ā0Ī10Ł09000050900A0A0a010i000y010i0q@m@@@i@Pʤu@*@q@PmA90eya0i0`10Uy0010y0q00A00d6ghi`^`«jf`"f`rf`|f`f`k ~`m`k>~`p~`~`l`.``lT`j``ma``½`P ]`d``¿`(W}`a`]`>?`@VpdVX0B]`M pN`N pO]`PQ`R>p`SzFpFpT`+T Rpd4Fh_P 0 p!!!z>d8Fg~PŠ!VD***%**3ŢPŢPŢRgţ ntnxn|nŤ৪=q`! =%q=Ŭq=! q౩೩! PŶෲ吸Pź໪%%! xPê! ! Ɗ! IPUȩ! ! 0˰>dD 8@ڢp遰}饰ƨ@6(ʰ5`ְUݰ0,M H4 LqͪϪϩЪqЩ! Ҫ%Ӭ @ԩ! R=@@p=٪!ݕ T@ʶRTYZ ΐp *"El0FPu}">. J}55p;-Ȱȳ[n8_Eq}>6gNszQМ П Pɢ }Ф5`ɥJ5t ըUШYЪdUЫ)Ƞw-{ȴ ȷ:ȸȹ-йȺJȻ..Eл2.B.eNNAN&NIIP^X@0aaPUa@au@ ˳2XE ǞbfK\¾ i ,LǕ E e M Ƕ Y Pǹy I Y PǺE U Yi Pǽy վI Y ? ``  nQ I A A t1)-Z Y ں} (Z3_48<V145)5H0 -  M i !t5Ș"6 $)$I$ %a a 'a./0-011Z   & žM!$fdP0P  0H07 Y 0| [t@ 0fU ֭6)7`d9(bb0hȀ+t-?.:/00010V0,0>dlȐv000`00H@݀0[P@00}00\6@@H@R@ "@("@0x@0j2@0J@J@J@Z@YAZ@0} j@dr@r@05@0q@0 @y߈@N֡@ؼf@@0چ@*y@!@pL^}WPvUK|!=^05_S[H0ń=KM}}_Rb@UO<퐩H!@QLLh0Qpt=UX=QJI3M)ZX!N*Q?}>QuFWNOQqTPSFV\aaɠ]pT3!t Ő09q6).9%83296!:d8(!*+*)))-,)$}(--+="1=;};<>VBTd ԥF\~;c'G'ZH (̭  Bwu FE2Z ahG Nq2Bf? :FO>c JعfRjKwM)M+fwwE?0ebw" <8og?K>%Owy ! jnTL@Q_( H2SA08 QQLNuH1H10Nup2 |I F!Nq@` BNo%FOIL󀐰1O@p\OVO2Go=LOO1@AL@8$g Bx J<@2D5DKB Y1?rp 29S@W SARAgJJڽf/K|&BvP?Q/WB/ |P|P OoPBeP _Nu *ڐjJnD; _ni_{__Ppda[P_\%xjS_PNu1| $x P*f> *f6P*+f*H`a)0_Pn>jaBn`RcXOra@aQ"h`paH`"I`$i$jp P`g0*1@? LaH`Ҷ` *8/%@8`$//G`*/Na @p@$_%_$p8`HaYO Op)p*a`Ha(5,r2s/w``"0_ au f f"< L@pL| 0HA AmR@"H@p0Haop1f r<00``j`r\` >S`*NSpprrqp<qGR@tqd"`  )`:<?//?M`P}PO$=(%A8.p0& >"gRjHLxc g j x"xTT  jfk`oo .ur2(€BTf؞ƟˆՏ NVt"{H&I` Q@\``$iart+"+#bbe^A| AHn!W_`0Ӑ\`4A!ognpC!3RpN^@``gl`g`gpNu`r`"i$)f g` Z#B8>pfBh& ,R:LRP ^j~|r"HBg,BgʐҔ oJ@f."W$(_gwg4  kIradaao/e`A+J0 +0Iv#b:,rCl"W*+g@J _a"V8݀혴H@_g2ϻ" H@$!g  p2ao Jf` Ҳ$ 9@N(:U $&d Ha`jB Oal?tXLb"W `!3pa(7q P7`H⦦ca~t@w:@#R@svjvL[BtB91?NHaȈF> f1("pbHar{0Tr`Gfx pHaPDRg8@|UO f PgQ`P,kp8<|p`Jg L NuB``&]"G ЃT!ژ l%DA.L|nAg,t@2(4(v6nDBL`Hx@tvKxmP8Q҃%JB$!JD$ Dԩ)%2%`@4prN4;"RN N@<*=*>*?҂PVp@-I`Bnڿ=|mؚث@lke_.pW@dbhs /g,_pа ^ոB^bJm Jm`lpp:0.2n_cTz0Lpwsno@bpoaVH@raF`xrpovoa*< j@塀Lၾ hc<၂ Axy_p O2pЮp wPO``&Hp&LovRp(rmq(pb.g Kp`Fnt>ogr0{ppmj@ LAPppc@`dvD507L9;Y0},fB'H1`$n (ِofpNu(R$\* Et@$ Ppg XޔP琫BgX$^r p<AgP"agޓH@B@ٟgB"(Ng.?[/ / >wP0P IJgW~g/ $HϠ ^E0"Ā"@C+/( (g "@"_B#|<p, I  g>?hܠhjh"&p@Oǂ$JgzPУ`$}$`!.6HҿXUU U $(>p ,3P3S@; "(`NudNt0bV\d~UHzFB@NPJ_f2=|C =p-@Y`'pJnV̀` Ipt .BacklightW MtH~p,.JFf:҆ΐfO=|S۾JpHހH.`> F^8>&=|D,}4 `?Lqݞ..*zBJl~pl~ C=G[`F>@Z>Vv ~6@  Yp@(_"BG-`fn.B@/Y`-/:Ylr f0?LI΂`B@NH~2`B0SGJGf̼Z'pJVp`$U?cTO .DAVAudioL_*8j\ӿX<fB8p<8 JFTOf*.; Jxo/ (PhB.-|slwk g TJPg=P`ր-H(n 6@bIצ~/B@0< ֫U6NA@^իTO Rel0<,* ||?NRx и@(h0.Xq Ҍ A0Nq4qvװ:p /r/]Юp  "Wp "# ""NpU,$ "n vpTxRNрpd&Bn p!f$= )P!f$n @:>`ZSr·g&b'n r'NO[`$' ޢ' !p0JfHZ&7r /kBFДz< pf0W`.zx1+/Мhl1x1t5XOg|0Hx5@/07oP3H32<.#.,8Nq XH@QXD2#N C)@A~ϖv `mQ83db``mdzGd A`c՝AA`Ԑ`rzGV:X"zGZrLyH\c6unzҰ"xҐNqg/8Nu`2'wH0`!`*+lk68 g<@0+N f`p ` `Q|QNu&x vDC\Pn T RDQ7|Nu `^+]fQNDQ p޴0DPPJg4| 5P/ A,00޴H0$prJj1P` &S"os g R 1@m` %% L HRJf}6R"<1n ใZRq01 rJk"0P`!q`T$yl"0 Tg 5PPk<9R 5pP-PU`nP"_ kPB(NqtQ"Jft$BP^ZPPXa^ `H`a>L`^gQStS0b@jH@ t>D`BRUk)SЎLb^8gba>r08 >f0pQt&BPEr`PgY`]Rg^NuB)Nqf2*'b&)f0ErXa]E p쐰NqSAA_Nqp{ fpA.S@UBQv")<<g`UB+ctg)נ`j̠tZÞq1d<gPŐ\qR2`prRSBcSk J" kѺZ"A4琦fY`\lSbڲXa\x"i~gHzJhJ`đ̨Ē*Sx`DQNuPH>!rA"#HHL``PHJrg}"N 0f>xs@4f ڀr`ĜgĜpNL`NNu$@8`Xa[jĐgH`ĐN (?gƥ,,< NB"N, qgfMQ^f`<@|\eHC2. n&GRC,IDFAgKNFHCQ`x~&GRCDPHz I&;ahpPPx/Bg^P8T V \R^P0$O$HBVBަ"Q H@v:t v2@`ضq??Q.JNu(KAHCBHD 6<2\Nf:_OPf*HCzBfvz4f&$&(,NV $P:HCff*zRfp:f z@4g C(,JNp! dp. ?< PtBQO.H@?YOH@>(> ,HAHA`gnz:hn`T\g`npJ*hxnT`Pgn4*kpkpJAjp ܩpm@/ H@m*2QgfnfU2p$*ߌg XbNbf_N*N*N@0<FV[gth{JQJ@NըtGU`NֿoR x fJNz(JfBH|`PpP/wpXB/ BoBT2/~U LN g Gt JSftz$ml$`<*f0FJ16"("N^8/XJN!S) `$B g/y($r/B<)h)Z'N$eB)NB-NB '?8BFFpBB3"(v/ H@~E/A fN/`@ ÀUG KrQqVq{f HdpϠ ^@&<("@+* g  @!| !|PQ^ RRR5 R( zH`R"Hp, I pJ >?whd h hlP"lP& O!p``8Og{j@ 8cRP$OOOC`g 1R0`1jpu`P`]P`P` P "4VLTASH_(gp`P(gpQQLPQdp_Ȁ$@E * G4V@ `@T%5UwPo·1pz1@S@" wӘZ"AzS@ @k&H@2( Ao `P@g h@NLp В(֒(XܓtNRp1>NNA8`rjƌ  t{9R2<\Y gr`f 8"f<{zrZ*CN& ҆^FfޢI=@6 L<2,-ХN`:Xd>t{yw`hL||hH $xʀ $ @p ʀSā{H8x $ R"&`x Ap }@ @"Ap R I2h gC! NuT 2 OB(Q&~`5 2J@f2("xpv#HV1Al$g rZ&\8n`%F8}H`n!Jr8E#J42JAga&vfNu .BCScreen70(1@ P(0L@fNp"9/ $inN$_3@hrf RAzFm`.AfA@@XpZ %p5 !)f"r $gZ 0gP/p @/%Aw,@*!Z(@)qZ _YP `R'`e #h/z cp! O )Y">-@" Nr3$ _ NqV6`3 {?<``\`=H瀡 vr`rfkG padbjdarGujn`r`d`^&/ gH&Ov7BQEeaEۨda?ja& SGVڪaRa ʆ``b3PONuͨcMc,p@p(BQ  4PxLN^ _N . $naT=@p NbBq" ;H@@>qbrPBnLtBp *xѪpp|ptBxp|5|xp pPp0;Bp FpJppPplq(JpsZtVvHpBq H%Dxv(qn xps^qBp3PHJppNk %pdxp+2ph<΂q$R g$R` $c$jfquaPzushGp+r lyFB@6A`zt+JBtpJ]Bƀl̀ Ёր gPA`JJ Ё gA`JKHHa8\!Rh*ljf_`btBJfJ6-@H@B@/HABA/J*f%_tĐpP`q@p|Ғx0*j0l jRp5l5@^g~|jӓs|^xpqN^bvg *f@ 8j4J $ѸVUk,`Dg N%j $20Hr r`r0x0 ?2VXJQd/aH`-da8ava4`apNuJ2 Df `P D` Da#PBŠ^/Xq c hf!dJ)fJ8rj Bp0/!jnVbLOjB  k/b%% Hw?plg 1 Bg/``/_sa(//A /BFftPO %Hl&H"L/`/<C,B ^/(./!/h&{&h(/ Ł'smh'GP$m.L'|L[b:? g @ PgSEfa..K\걬/.hᒟ/t hҟV/f$ԁ`$_p AH|&c&kJg Њ$@J8g\B(kJ,fN 8(,f9Bl H@ `0082lx*ox.ѬW80 (, (gp1yp ־gVRJo2zx*HǨM&pp(pp`zpؓp jf[S`x|xjD"n`gHXplB@oep`/1Ч/MЉВlR ffB9l> T f kАL>Nu ,0gpf!(`df^A4/a n0``H))"8F0,x2@Ao 9A 0@G1fx$H$ %[P%|H0YOB@ @6%p0hp AD0}nd!p_5|8pW`P000  #&,048<"Prg " g( g$"@`"Q $A$$@`{ v J8JaPXA|-HJ0zk6<p&x "K`C龞`)g W{Cp"U\`O ~B(N^c/g@Bg"O/H/ O|k Jg  _Nu   _`Ժ0&$ $#L`P:@"I!IV#HAJ 0 pF 0pH@!\qp$0 pH"2_h!p80ݼV1gn(zNШN0@f PT0`"0 Kz6`5`m~;n7NJhD$x "xԮ*f0*f ,*4Tz*TTlET$RN` P g@fpdj hm |@:@f2(~؂*SAt4 "g ` RBBQ6(^wgJ_aT@NV@|g 0PgFN`PPP}@NqJ`/8:`g &x,KT\ga g:g @Y!:L_Af608 PQCJ)A0NqBTD@N`TN@BF߄AfBg@`8@@gBDa0@A 0q@ xNFc@ØBBfFNau1A@@g^&Y:Sdoa`do Rp~2Y@SUo62Ap`>anP|Ha"fDu>@`4@_fzdg RuLn@f:ao48 `@`0g`(N`gS6C,@WLU:S4C_aa f` !i,!6C`^ `q@@+p~`׎i ސY@g1@$ZX#.P1|T0["@/A,F _@kN@uqgDpU\@4pf` r_fl`"pf`b$*,g\A&Bp@ÿNF`Np(gB`(sJg6$]q0( $O$r0>srF"OT&B?N6 NuurQ/ C%I0HJf`CCVଆf`DARA5AU VĆ]%\@ "f`)pQ28 IAɇ"S[&X:XXBQp`bg$a^2UDPi8izb`f`)Do@`8 Rb00laf6agCB`0^hjbpf&~ Ran(o |VD.v8J\tdrZnqNzrBZt2sgts/g`ZrTs]P`Rr`$4<"z`ܶǞsjԼ1#D.{g֔)h 2$ig"ykz&#.x|ޢH0 ?O0B!I\p*#H-JfHi"HpBY*1b,{XZЧ1|, P2X`&JiLf02 O1iN$$ / "o2"Q ftg` $?<_!Oxh>B: g Nq"_g`ݮR"gNXLNuJ<б ԫ06 ~ f< 4(Qg0\(ArAGlLrCC`ARvC"L{NV4 ] A@ O$ ڒ%0 $ҐN^Nu&M(NU R,L*Kp߁]6^^`o^N*758T]NJkBP^fJCq7Bv'Jxj'HA$a <Qa>prHNҮx]@P^OgNu,a 0+Na¡ pNuv( D;0t4@ 1a<2f($؀?<0 䄳ڒ|`&x \nW@l"(_$Iaj hлJP f4/< /BX*1؀!ؑҒL$> _,ќ<Ґ.ʸ@ܵB8]\XTPLHD~.$N b~~Hx$xafCpRYRSb+Lff6&0>RdRR+Lv`f"o.)g` >$,Ro"t ``pT"‚f"" @>0f}Y>0B.@&D 0rY>0^>08d HB8/t&8 fr NzPg.R`*eȐ 8 \P0_42LeRA`( @& 0.! !BA!wD8 &|&(N g Jf QHN{'UVgEE&N8Kð/ <Vs&P6gP\\>\f6~S`*DO0< p 6o$Wj0N3^?P@@@0.M`a,.&I8[[ q[p[ @|P@ g<.,B<*C OI"@n!A `*O",I Hnfo"pf?CG̎EA&1XJ" PCiXf(B< Q (&,K C©04g&JrG,I$K``$`J0AANrXH  ~Cif )u`Z pD)@0)1@>PBPFPh$P(Pw$dP(PU(fP(jP(P,fP,jP$I "iJgʂ"@PVR V R8V8RPh!@hp0vJPXAE&1EPg wfz `(P`R``"HB)gZ BEƎ I$h/NgP@A,J(v QErgP)f k@@fp:A N g$Q$q,E7:f] g"b<6WRfp  !gBb`.62f0pq2|Wgbd6r,H`$WPg$Na?,Jg*PmBjpg" D\$,J"Arjpttxv"cPf"(?jE(Qf @ Ns&) f &(ip(r({P?f((s`ntJ2(YPNqDRg DIfgYF@INJx* yNNz$N{rC r,A"J`r'AgHD)J)(ADÀBJB΀IЁՃ}ALABOHA(Bǁ,̌܏xA`Q rompgN@ AfXg`GE_Πx`FfH@ @ZfH@`wnj& *"@Ooϐ& ̒]"@eؐ& ̒"@ -& 񚲔g00f9P ;4AK 0%gv2 (P?0NqB9LH@LHL 9LgH<(tvj91nj]%g jof < f 0<0>2Π=` <@ç" <'AS̢!2Π"2Π ܠ ԣP@g#Qܠh |4p"BrJ9QHV60jnpjn 6B2 0 Xf`0`0$T0$0#0#0+0,0-^0.갋o0/ 9L¡i 1 g ¡g`pΠ%`lΠ&`f 6mRnL2YΠ@g>Π0AXg4f fΠ2`"Π1gΠ4`Π6Ÿ007``@N֤48Jl(4p"# CTSB2Ba#FXUAf3?4  Z `"| Јjb6`ah¦0p`4@f H@a jD aVxg(bx0D`x$ta$B63 .aBs Vgb,x `(JAj; (Jk2 Y$H80EGYtY@j  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~AACENOUa ceinou"OaooAAOy?aˉ ͜&6F/V_q܃$'@ !Q#$%&'()*+,-./12356789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_aABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~AA CEN OUAAAAAACEEEEIIIINOOOOOUUUUSAOAOAO"" AA O OO""''Y/8p` IQAQ _NuBga`@p g$>rư~"ش@ZtjRB Q"B !BRXXfưFCoPH@0vDADR0f "HNuwY Yc $fȐr%f[_p__r Hlp x P(p N L 6J@x|pX gQL>&q"P`Qg`=PLdYІKXD@DRA $H4o d`ۂ0@`|a@S@BX4 b"p cp"p`" grpH砀"A"_~"(x r,UҼ C IQJ.f0 f*k4 Rn> &@(`k/,plB(c fSB>lSr pg +0@L)Kq`O L , ,!,n,oo !,ormšPr`fongoJgHlXLPOJ P*VX,-`4`gNgH Prg<~}r 0,gBJgQRWpXzfeʰP@~H  7(Gp!@ A!f9lbdpgJldoS3 `vJ,Pg C$_B? TG , Tp,Tf}V JgD<@HL@D$^=|!@  ް :Ѐzv7_P(s@T("Y.V&_z(0,H4g=lN:՘<(TԲ~ "f&P0F0g G$ f`Nu\aTL.3gaA^LA#HL/aXO&D3g awf@`(h4_ a$0P0rAaA!aLNuA|'HAt0 a'IZNu1r$ Rg"k"iJ߉)4JjPL$I*@@//}! O7J)g.| 1a072IiIG㠅BhNBjۅ7p"2QJߩ4gHNa4` rDhpP+oPg7k&!Zp 0pJp . p6az x((-1 g x @(Ap@@/ aߠ&_D A__A_.PaCtJCfPI1 JP1? $1 ~pAV2 fP2 $2 C0BPt,@@,J@. @Qf]p|ZQOO_޶(_.]@P|^_@QlJ_D$0$j0pgAP@Pbdg ))fpo]gt`ds|%0t.h<^TΧoq0*RjenBd "p0<@BQfB@Df4@Dg@'qA ؈@КBC@` @N fpΣ!(fPS(Qj)B)QR/qPu_RPq@qrR2(?gAbvQ@pt~ JȣbN, (O(^ p0)*"4aZa.Ig  hBJgPѱQ\ p$HX0A/ _@@H@С(pH@3F@ (B 3pA 3 0x`I/p/t AXDXXOzƁQ0T0Nu/@gR@`qXvHA wg g f0("`(Šof`0< 嬲ADAD`(J@`((g$`gg/ N ¹\D\ʡzt@ΝS?vV2rpJpF ICtTm $@ Hysped jaL| f dpp?@ȁQtTtxTxCpȣSAC:m:nIfo`n`9. H@pp+gwpsH@J3f!`!$p$RJ|P@|Nu@I @(Jb* E@(r"1N.HaF@HF<&]$Pr)A'P`.,x\NJ>fMl(0Jg.GXKg$f СJfN`NQL. :8 M6<20<84J04. С0g04HFFQHFoQ8p61 gG(иc&lJ3j20dfp&Pr`0VVf^YH2G^ mH1C>0HLNu7`(_` )WNB/ W"44*_N``.) PJ)af2W34ag$ p`B*afVA$$!N`@J@N;$| `!6aVfޜ$5`qp`|p2qAp`#"@ Nu(_8>g!:&GHxK&@N&GL70.oGNL<L3 `2]1e3`3z0\8|\2i@h@"d2L4 Ц2\4d2H9s4t54d425?L864]0d2e0~04pr7GLDDM0HISN2kF0d2\F<43 HNn0lEUOKqDlOO`ECC4kNH`$$ A0$(䂿₲d?g҂J WLNu8`H@ p2( o D`$gXQNPp_R_ SQA!Yp__Po_QW*cJngkV 0p)h" x1@1@ aFv$rpgrqgrpfax "(`g"AN`p`gaa`^0vpɰ`LaxЯ`(q($HalBgpTOAWB6p6p  JB`$@N fm`(s04# ioa Šw`` g`g djp$aw0qr:kJ`F(yBZaTBD$yHPbwaxu6r4JJՐ,QtfB UA%HYH _ P/QSĚ\}FRHPjNCR_%ɰɰ *D aAfD)*`BD4# 橎Lל A_ 9$pF`+{kɰT jɰ:p>qmS pPpsRazB*m~1 BHL0_$ph4!6`2&ORr8 0`2vbf8 F** `f 0lĠ pl`0rXf7B`z0lĠh  fZP pZfuF$<f805.Dg  $ gp2 џҼ op]fj`w g gp.fN2<hgDr`r"_o2 ̠"O/?/ HiB /#!/{/H ]0;Bg]p _N0_<` tVFHzjߩ0SK1|KC !I].1|ȡ Obh|@ f$fp"$apapXQap`"gH";cPaQf:g2"@ N4!$ g HNnLBJ逤Ôך/C !Nub>;N_p^ſ.^ $ h f NrJ@Ggp.`̱* P`pNu ΑD\r"x `C p)Ap jQ- ovnRR *R  Bg/0<TO _Bg</0<^ Ч OU;J_*_g*x | u"_p @f@|Nr/<? O2M -?A`"Hp@8 $4p@z$0a? ֽ,da,2gl!IT t1 01 $1 B/ HyspedƀNlLW|T` pLܜ`2 g !`;(@"4c#@ A(@~ P8u@ pΑBBJp [QJuPdPNu.oMFTdTZT`4JzBpNxPsW"nGr{A8*.`Pp@Dt@x@g T򀮠Nu80(4]2GPgA#bֿP$Þu@2)\UF(D(hBR#"*g L|it!g rݪPp %AT#v#m~#!!!eBap 2~ʦ!bpi2a؊ 9cK PMn)p?k d\'8Nb[cq"H@0$#jKTzN`D`ÒoJdDdc~Γ&~Ef` g"ªU(4@p2vb62;N}!@_" *JtRpJt JsDAUlDltxpDp$W+8`(". Hp P+4!_t` s, fqNuQOaNQpfxNRJP0gNF@Hи"@"Q"Qȯ Oi,p1Ȑ)23pnf|}2pڐ')(zbh0Mpl8Jg, 8g& @"H J(JDPgB'{/ J#0:Hp@\va$o 4 Be(Bd/p%-/JO $$-?0t$?2Bf /N% _"_"J@XЈʠҫIjd4@CNud"q aA AC@r@ngPAoO[AfC Qe `_Nf` 4Pae4s HQ H"jg"ACV||`S"va/8NuAAg!(IV&x$K"C"gҋ`" "Q_CŰɾA/!z 0p N^nV 5p$055K0AplVH?p!1pR/Ppb}qho3ND J~W"!kGTdP ] n$xox1>t҃Ҋ~(&,tҗ~:tҫqq~ԇC$ WWK]o8Wk8>1pX]4UTI@p\j8p  ?#000aa#?s>mLMM^^\XL |59 |:u} X X'&H  ?ASewX80X"nPN?08 g pC!I eadaX 瀿"xhN x>ސNq 2,2,2,2,2, 2,$2,(NlpPNAb@mNpΆP :`/`p ^H 0ԀNIh$#$# "gB0g!1RB HyMAT_T//}~J4f`ްa9&Nu Ouސ20IP: Ԑ8` "g A"i/N&`/p V80*0H. 0 j Bj0 h$|"xJ)fRp/ fJP ijJg rJf n|NJ g x8t (gB0Ns ׸Hz" p))0{ КԞܢߺڦߪ֪@2d xEpcd$r?NTHTIGE`$R$PEX` J"X`Ј" f fv_#:#U6#2#.#*#U&#"v##U#L #Z p⎐Uގڎ֎ҎΎʎg,k`oo&laX,>Udz~Ն/0? % VHBBN Jg>NpJ@g p/N>XO`,Hn>XOg0`p//.>PpLN^"!NVܱ(_n/ @k XOLz p0+ gS@g>_@@*0JGgp ܲ  TC"""$b."NoW> ""#ohtpj"jj /o6 fPO`T'&B"8"D 2 pj"$$# "!{PO p-@ l-PY/,ꐺ-_BUHHlrIN>g`p2l fL G fu0*<:2>*?<0p> "7/.N ln p P,` yHB(k,`DD4( @C IQ?2gpgz/ / N$(T fZ2Cx$B =/=>"?47P@02{pF1gpBwp F2 p; ,p1# ,#?204.EX8OO JB DNK  1@6H@0 pf *,T)PT0)@L."ZXk&p m2NVyav"kN X^[r &p)P` &D  Gf8^macsU PqC T*,A-H=Bn-0 I ր4*.-|NUBC-|c8B p"p g\ T"K ِ@@L`40(_J.p|P"أ??ݘ Debugger Nub pfigurationPeren0 1CUgy܋W8.0G7|7|PO7| _^7|7|Bn7| 7| ʰְʰnBk6NVpfp`L B_@H@7@GLPK"Lp.ƀnfn LE"J/ "_">P~ GQf ,>0LB BXS0.Q ]jBl@88|@@W3boV (>PWOf&p0{`AH/~@T >rh>[ XPh `4u ll|FniStartupJ3{rh*aXc `hFع @2 p&p궀L|}pBLCSystemExcep cueYLo?wLevelT/ 0 I"K( K4NŚ\""p!0>@6gRNJWg:62.*&*"U Xf p(,ǮP2 K_Zր68 ^pBFBG&q*((Bnv 0.r…g*JFf&rFè(<RF` JGf>G` Rnm?0 Gf4T/ ?`թXap"""`,f&&lJg /~Xa/+K!LA _\OSKvn(h혀ApJAPRgq1@"o6d.JQpP`Pf6JQ.qΨ g f 0HBp#0H {@ g: 8 SfSJn/86/)x 8. W2d"j!OhPq-/A? L+PJ(f(@]Yu.{Z1b2 ]CPt! ،2@hH}` &T~(KXOH@rz@,P&,z@0P0z@4P4H@8 P8NAB1 /}PdPh @@&qp  ?cs| !L`B!@@&TB` Jf~Tp0( i mAI&SJgܞ&q( f p.uR` A`C$z YP| ްl0,Bi"l0p)NදH$~N:afaBo{)ryp,p POgmb -`ypg.ygd lJ J qɤ(w`pAp\'H\`*q0+ + gq7Pq'hzb cJg `*Jwf& 7^̀T0ON P'@g2*p"Lt VhA\1p7΄1/0?Ѷ0hQ vJl0g Op'G:&(\B $ k$"H ("/q "P'P8 f2!Jf*pg$@q/hQ&8a?a psh4$NFragpare: need real FSSpec."locator name.!ɚregLibN tooڐnSg.L!N68` g@BJv)) r pX0_NЬTN:T0f0l1g&VplQNZD(M`"rb8al1f4.Jg*8/ R|ԠaP"l t(l4߁ l?aNx/ /(H hD"`N 00BGHG 0l,o`,"/.N%yl1!1,2 h Ph4N'ɑResolveSymbol: sDzv("1S*Q5&U@` p @ fA'GpyqQ0JgA:(~p@nAP(k ,f$0,Hp/Hl N$wJJ¢(TJ0g(6| XŽH^V:h`rr?a 0f rЁ:yr97G#eģa1j2{NȒRegirMemջ4e:ږnotذ kInq container.%ߛ滌.&P3ht`8p 9]8j` `` k4@`l1,Bj%N2(@|RJom oLb.,/NhsgR zop` T9a(Ro R;PSoSrS!~z|A&hT`"C l*_ C c,_ C f R`&SltA L$,$$A;"ںl*c,A!E>r!F܌&Nfn0NzBO0CDp1F8afL!_(H`P<)|`F@1PHx`P4>Pgc/8?R/> O&fp0hp BP,@rhq> 0`|J+ ,`Ulv(b` f<! ~`z!pP\dNLZc.1l0*~[$`g&T"U.FindCextLlEntry: PowerPC CFM hasroAl %9R~L$ X# TDVhrm0I t  7E* @()K@.g T&{!(`jH@,OCBrgq `&10T!p'U").S6PA |v 쨯~΀@@ e7` 0Y7oBa0a~.)G`0 0N uj`l0 l!h0.nP/ppjFڀf>3hP""b.!!`l0gv@B[$H1 B Zr<1ThqLf$-5TbiPS:! F|$ep2iP&!3p1lpBZ5p5!pA1aHqJgpPO @^pB7tLZ`3af:0on`0f>X(QrbH2qnBc^er! r1q,nu2r /04 Sktfaݢ:@R9`Y Pʄ$\11(/"1~1/(/5#+ }b Jl<0Bpgz``AJHfR4C7o<g0b< @R@H9Pd0;P`hmSllpbr_"BG'`FbaF8ar"1 > G¢BG`JGmf 9XOHJGg8Oaf&a{L0`؂]^`0*k dbHhAIJ,f|ffpx`T|`e`\`X`T`0<`%b$6 qޑD@N7b07`:gߐ<$$,8'7pc۔bJ؂(,DcdpkL0aJuP&~4`3V8B0>;fHz2a((t@-Ea&H} rHn! nNxࣼ0.q1*.BEHE/R`g8e0|` ``` ` `zB`~anj>3#`8z׀0x2<g f` g0g`Ĉxmq؂pQx!qTBC-g`PpMȠ,n0m~E1BQ0Pߐ*PG+&`g aאpb |`ºnJsg 1x R%rcH؄BaDg@@@x+R @ B Q("JfBTfqHP1P QAZZ]gbr,AH0>`Z:!/l0brB|4g:1d(W@PO`^0?gp`6Qg01<l0Kg&V`a>ґAH)H8zb1!L;!f j`d/ YP!w1` |g&k|-L 1 Qf\R QB Qb!f!kO8$ Q(!,ՈPX``g XOr`dn12XO|v T0dpʜ=02r`W*`&@P\BPR`,)E( /D/0@<\=`*b֒P_4g/b4 ٚ&G<‘v!GQ rWp,R \l0q@M"04NO0p?Ϯl@ C -K^0J`bb-0v0L&Xg@y@/ 1 p!"Hp@(l& G fӠ1r@@ "uu`Q`ɀ*`x`nnS!RtxirApz!@ +Hc 2~&+2`P56t~M g"f[g`"أj:! ߊ>`‘qnL& r~b48(4 03>|F.Jq~` ~޳R0R0˜JGlH0fp2w@21f?>< `. GYAr,Nr/ aZH"4,(4. r;B`Ѣc'Ht8d%~q|B1BU8,,.ڍ6>!!xp%|*=ؠ1e(f1 ܨtQܫG a~y"03+ Y{Gwx/ ~.H2E.&8(@R ~op(@@~Ppgreb&Jmk  pШg ? 't,v!f6/ 1:BHgMB~fP°f~:BfDQqЯ(@`+°fBfڃƄ3BY҃-l0@~q/ pZ@0`4 x E0O!HR12.Npe(ydbjib(P`(Jcm g Wg` 6f`(T"Ԑr,@BBBp0$0Q'@: 'h_B+| :JfζgPAnz (Bg H6gNFzxWax2!0Hg*!ޱ1|6HE:`b0,Vr€p Ҁ-AІI AB(`_'x+!N<'@ 6 rtĀ-B@h>}fMPJg"3jP@l.,[mll}вɠɐ6B[g\fBgaP`ɠ dv'߰2@N& `@Hp)AO$0pHx jB9 -`g#l2;fS n` nZ,SgUg*`6$/L(PkLNB` \qRFRfr~ahj!,UfFNPBԌ ؂1C;|"ӂ40 m68k$R0"_ YNs> PBGg `ВB .u~fe~J2T16gqu`f<4(f2;f,& \M2WJ CDt۔ (H̒wK&`"AZNLT KI M` ~J*#dΪq`P S_lpVp&&Q߇JlP -LP`#R&` N "@ u(K((8;&LFB ]!v RDAN^ _PONv (fg p!*dd"$`"">$LZttAJ0.yp#f fRJf ^(hb@R(P{(T.`V0C?HfJV!ȡ>. f3R@1B0`, ^ЪTH7N7n1(HЉ>o)TP VC `AgN;g80pDA;Ag,BBpq"4tU>fR><@`LYN,/ `<-Ljp.np8, "( 7q >8 f*U /!nqڠJDVPٛ4tbd)'F0L&zpX0hoj0olHz"I/n@`+րĐ Ⲱ.ba/H^N S±g^X, яdYJGg o0zdTr z((_,`Adp? QrBz̅ 5RN$NzVN̕.R~fp<@gp JGtqx`Q/ ^{Ff|`|`0ON(v$*5g,`| PЅІ".Ҁ-A/^ޡ6a,Z/ ^j N)@t@x)Dh@pzCApAX)Hltbҽf\Y2<`X S/^Z/oN*\ B0X] g2lhpo S APh B0=h `)QC6BԹ`)UaDPH pΣפPOtCƦ^Tϊ. 1*U+4(|`@o4N<{flxLﺇn0*Ћu#A&`}@ P_I2Wf ^@@;Q XwrŸJqJu0@@0crM'N:hm @LvQ{&@ T!]0@r]0 `10pW?^HzT HYDlq 7by 0%nXOlqfX9C& 6*%tRd@i.MdZ@8G07|7|PO7| _J^7| 7| 7` 7| VbVnBk6?NVpqiP)@H%7@xn lK"Lp. LGP"E"J/ "_"N\# !.<.0%ކAp<`F(k<`8@$@3!A'BEdQ BR0H 0v&2(4pEx@r)p0? SΣa 0&*PvQ~|` "HAH. RS6pof "0"HABAҀ Q^ H* @ *2SL2`!Z1(G Plp`` r7tĀ)B(( ߄|̀ r)~;p b(("ttA"Ҭ(&AG&'@)K,B?B+@@>'LT@ F8€\HABhT(P`&LBQg[}b4p`zAf g&` fE RT`: ЇA@&IP`qCIPX*@*!0&E)Gܰ!#RRA&`@jBi`fEF2!v9`'ЌޠgD`C,TgNZ>&`{}~QЋZdDbQfjBF FU`m\B"C&@fQL`P`"o`6.@r`}lxaPya`xb0{t?DzR.@(Bnp&nNsp{|-%p Dpp Ja -G=p``rB $Jf.H!a&ޡmF.@ 'pNJ.q<@Y/L-_;JA@` PJgQL]Yjg t#'n Nݱ(P| 2.-xb'P&| ',L } dbĀ(BrJgp/?/b4A^\RdRT9X` CnB~ttVtAD "bXrA2;NP,5@ Bvp 8 NPO`DG!p^``B@p 0"t_".0.q@EVpN/?N%撁 j4A(o 0H r(ЁnLp- ~`'a]0"HAŲBAЁ̠0 0f@ : Hnp f/| )А I Ҁ/xlAHQg^z`޺A|Ml>lFJ›^ ȲlR0찓g Rl`D4h@8dtR&iNIЀЋVTt}xh*,) ꢒ\p(=SZ T&@.Z6gj g괒ⴒ g[0ڒBڒT ֐fQۑtUۑ]ۑ~8`^Z쟓*Ќ(@>:?`+ݜz.R`5`>4F>ۜݜXL(> > R dFZ5~8)Dح~>x* ~,=WЌR(@~LS\iJm֐@pl v.[R.T" ׀&A>~r2Ҁrx (؀lf x>?-A\n&W0gn$` hX`x9!{6pԁVOeށJ":8ѦRA A \ A  /A A A<  D A @@, At -|peffr(8sgXN10 Jo܀< x x,y!֊{ bgҟxp4jJl^N@&@Jf$pPlAB&XO`B/HnN*0rfn` "$" ~":02m~ < @gjp.P2<gNbraހb0nbb޾ Oj%-K[~r|J`f*,& POg 40 І2cp/ /N`젬8 K"L .-Fs전( 5 brA2;N(@f8Z`BS8BB`۸*~^(R$>ІPOf88 `S$.587*x $n(#z؁?`..M"ڮ> '`dD*<N \ 6n"ŷ epJ"0>BZQA&<8 f L"S? .0@R6X'/HzZhn@>U !f  GPfBFQ_MixedModeGestalt_B @qGfNsNA#EgR q /P"@0|\" o!\W h~H|nC @Nup`0dk P @ `jl2pP"G(L`$t^udR8t bZq&3}Lsb 0?i+``tg F@ff SH@b@ #Hp p0kLNu * fp bJ*gHg!~hQx8(J$,_zrdAtf&h6p(PV(rvy+` Ӿ`. {!blbJgSfܲ߬fhQp`p/Pt$PJjklvpjaB!P$r!BZ?Nuf:&gځ$ g(c$C@pBh$&D4Qp ngLQO"OBB|$PplOg jQVđPVPv`j pn66r@2XFP2| Rp$5|`.4(oCg.agƞu!Rp&PY݉bp 2!I:3nPO(pa$O!Jwa L+A@>"PJi: )Ppd"Rt&!KPh6:p|43jH^@3|~p` nn NuQ l  p VP;`D@ c6hQPfz&26l0-j @f` inXB-]H 4&Rsg3ۀNg 4f`,FdX/^^L 3slot version 2.3 =b"p Nb/p$Ph!_j3h1h$˭̐p6ƒ ͐700@Trt>b"t"K`X kpR Jg`!@3h$Hf$ Jtag"[a- I _1.L BW0 (Yn`""{HU`" IK  a¨$9>/ /"@p.PZT$P@"|v$/S`bQ ^ J (hR $P/ <"PtOp p, ?g < _01~@&P/ BPFzRpP:$P" K!b$ .jRJ"K .QfW HJ X 2P2 4V3/ 2Q"XI@tr1 RpP"`x` ^&+\蚄`F <0!"$b"P$)0-f0gu d2"_a^u`誤8-)ڑV<;`( X`qc`X"RfSpP,$P&J@0afHNPNLpwBǿK@ԼsjQ"J 0A0HVJ@j5|S0B8=0Apn 7"?r2 (5>Y`ltvgRBQJ`P(7pg*LBXJg.jDFSFSSgQ`SFR RۉppLxD5`~$Rpq$=f F`WR ÞRtT"gf0̒/Ф@f$.ѥ"f&H "H 6` ?K# IB0~"HraJ\0R!v IH3|dӀ`p!?2 p8#HPBC"a n) ѯb> l JpRg.`,p CU0 I`Q`UgTRP\ꨦXT;p@ +b  `<9z/ p(cdh;ܢbg:8gV1Bg^1 r j1f"bAp%Q l50w`$P0"P4k(hph bPa(p% 5~$_t>7 0 ;\64rXl"_QH~@"0C^"1>B$@}(,ƁȂRC2,2Q1*ʩf,̩ fdK6~Nu0``1Cp }```"hiCgXl>JAgtAf*3TP&~4` g(_KԢ (06gRCH8pn$1B$I&I&8 `f$(B?nm$IPU@g4`bPC2 Jkp$KTPg 1hQ \[@r2$w#0<SQw$e4!`Sw#0Fa ~Af JQPMg"iO`8P`!&c$L8`OcH3@@\fdDOPLOPAc@`.fa`"P@a"%d Qg"$pgR$IϠf$%Ip[fRCd!&cꐗr@ QO$OKh2 ~p32@3ZSTSU#9!8.PbĐԑ~pSD2ΐ4#R#w p2(&?g&a4f0q}ȑ%P*q)`b.b03@Ц/BABBP(@r5g<&CPg@4$10‡ `@b 0j瑘W o B0>3""2*-+r2 6:X1bjfjAnvA"01@;ƥҩ7`@ж (2g, hq4Z3H0!rlDp,}еe"gf * !I4R7@NH%<(*0!F0 cR6gRhb>?x`Qvx JG |~PQ 0](4@,$Q@ !' xČ;P/0/@ @@f"  f /JZ?oxXBo^O s Nx"@|!!@pF߼@f*f e g. g莱b&$P.f"j`v8x8x]8x6 WLSC fS68xFO$OP| 8x`orp`$O?B rQQ}`QW8xDp8Kj1fJ[Pj5[QRJs _8x`Cl! C @Bxvxz(P lX0вrƲx?CC?l8 A/C"Op&@<&.^/Ko`^3|`6a~Jрf,Jf Dg,4 8xEfWg` 0,рgv!} Loxq(0!$rlPEhPj g\cXAHQx8Tur$ & Z`JfQ `X8P0PnV%(0P m`ҩ:Z${P9ŒQo@NVHNJgx`pNdn1 Y/d{ziXH8$BDBEbQ&P(ktBIH @=jPR mNN JfH!+ހH`@hS߀NAQtSX$a`B!^Q U!gp`=n P fxGv`.PX,^ n,1n8@,h,, A@0l_1.0 &hXeB4Ji1G0gzgnhn޶)^ t1nw เr4_4fSHtXOR.1e֮ƊÀgؔ rI7jPw@H2<]mJ0T@B`lڏfVRa%H@fa.&If6N GrAXPu@gr]@r`ؐeD``uB@Pp8 SD`g xpp:L>A4B.7pg G5/.Hx&.N׺ hؑ{eRar*7 tw.ԁ$4(^Āg8, n b/ 0n89D  HR-l=@b @e}b rQFr N 4=@| X6bug: ~f@:6>1/@gvne:FRg*f4̢ Ҧ$n#zp`xJfN8J,g^@~0 ZB@:,>0L3L2.3.2FrFڳF1ZJ f LڴVѸ j cbtXfxD`gR]:e1 `LB@PnV PgpWHڀ̡AdzD`g JEl8SJlŬ`8`5NyH(tTN*BG-T `*bH PS`f0/. 1[:>fr~.Q>.`0L̤nq@/p(@ ` `Qg*R(H (/ N>J@(f̰ERfz`> f"*(0//LR`/N!}JXwQx/En0,PAv`s2a[Pf0(زm0=r` RGheJf+B<0o"RJ`Rgn0dPMgjz`:FGY?FJ,40v`*JL :Rf#/ ̰W0Z 0 \Apx-K/ 0!! "_"@p ݘ g2 ը`i@$ P/(`L thЍ3GߘJg</_ PH ~/+ΰЂA`V3p1!F"@4?JɟB7 A C=G@J{X tz d/ v?.曁Qb ƖaAf`Ўl`4OiJ#^C ?4"$2@f0 a@HA㪄1 .(nԎNVBIOF0/r_^PBr€V3&[__Z=_o^=__Q/H!.v GD(Bp"Apd @G` bF+ a| 5a! (̱JLb@,d4A"#H]0b|@ypaC1|UQ0 ah^bT Zdcp pVv=gaB(<`rڢaJypg x} h fBh vrJpf |yp0vJ2H0Le#eB_SBkpdIcdr(+|JBTfxynpm8  x (h&lt(jwJjp: jag YgSgUfg/*Mڅ 䂚 wjp|y*qjЄp%qB|uj҄چ$Bچ4QS7Ao0FV"beV!(0g"vб Jbe@N tbaq|vp+w" tp8J\AyRs!L~d搒!Ta(Pd )"TC IE"J$T$*RAH .~0`,FB0NJ0 R08Ҿb T0=:g0xвƤ&_ S TP@@ T"S3Pph/" 6 &Ta"Sh1)2])(32 eВC@Aj0Ta/n2 I]ld #0# xn|ͱBxm<. Y. _(` l W @ *1ذ\B(T fp⧑iTqGI8!A)H)|9| p_)@ *`taɕғU?HJJ_TOf4U0p?JZf b JTOUHxJ|~c"w`S@J@mBQfWJ g8& So$P(RN:r}Vf T0xpNqpH@0<џr>J,Mg*B,$ `ܔG*/^o.("oHNL x!!!.*w/"p~`GXQS@.ؙAUO OvQp8? V.4 x пJ(g0$6J\ b/ NXO/0 . "6g&H$x  j PJ gNa *@LgpJ@a>g8JP"@1 "ar@:[`NuP h"(8FPppTHalh*x 0Bl y`' 9@`D @] @̚z>XOg 30 @}z.HrT0.Ҁ)A>f7|_`pfr"ц$_k6(kT@k0W B,`lF0@/!9|PnB&jp, ЬSߪ e~``!^r⠒@`%AL'H 7j@X ' p "'A$'J6'L: ci#p"2p!q!.7|,`( , K7J@lf//$/ 6/H' T/f/x//4/,'&//Ү@=s(?B{kD4p4 "6 00@<61GrxpDz<.3"נ.c2`cDaf6C0e5c-2`akB0@gSU@PRRRURRRRRR[QRRR|RvU@g@W@gTPhPiRRRRƀR؀RzRR `71"6 PZ4"6RB^R*^R4"6Q_&bTV#5&bDn&bUDn&b4 "3xp'ak`Pl*^1PVDnPC"iPUgPkD pL1@8:A@W, BCpO7xCƦ"Jp.jpUnr$tpxrnr4tp. |"jpBnr8v,nrHs`G St.(s0.00PowerBook ATA HD$77)APPLE-2q>+ƠN6$_ gT oRp3gJ֠F=GVBJ0n`=|uJ@gVxxrpٲHe.<0(&,܃" $H f U> :`| SЊ"SF€(A J" ҆  L"Fp\:fPp^-L-F8L:f('408 ЫL@n X@'$p`\ J0~` .a,.Th@-3J.9`p*`H UDg `Л. XH@X*(*Nq" (Nq?JfpG

0 8$(|AJG]ב H rPׁ`"/"i#.!e eks#p$pV'+Jf / N2XOp`( )K"/ `LkN`SeXbR (6FF/8<0і`dN<"hlJ<IP?N0+>Kr^!-T(g, d6XOZbp , WOLEn "k^Gf3G#&i/9A t@0t@LA;<H(nlHBM&0&`"h|}p~0|NqDr ~7g@<ɱ`Nq `_ R) J  /&^ҽ f/gv g|`|`BJgr\f|,/>/:&' Bu$p )2n[1Ki``{>$2,Cnΐ|`fg~Q p8d~O8/.g`/Hh&UȦ_LNʤHj(ʤ~ggr6>ppCJ`0<H.| -@ִ.N |JV(.@R[Xd{r㨚gቂ,b]診,B]0nʣLܲk}r?v"~pBW.pCpBnUU4͛ʣϜhBrR'U _A "PNUfb*jt@Jn6gVPfx2xrxZ ( Sn-|Qih`uppBʣNyט,{в.ٳrδt}شሀв-ARVdrtcOm߅Pbtd(Dyh>T JZ\J̶ֶ.X]Qc󔴥p/r/|ʣzBP &{R X>_ʢ6|0pLdNdX`|(*4p{l>BJf^B**4d wX0F . 2PU q}40G:g+@@l .']l~ 'nlbl$ԣP10<\s,.!Ӽg Ь `F"4:Eq "1.09s(.f `z@`dTDɐ. `. .I^B)D)GW )k~0QDp+Pk0:Лlp`0fX*f.@I| #Q~~!-h w $xp@*S `.!g$' '#%/$Jg(2) p ")Ag*""h!fa~!/(. ht@!I!6fSpF2P,!0Lp"Z2AOpf8P a\0@QZ2FRZ4vT F6R"<(-;@0 @ 0 Jg܇JfJ0^$fXj~! : ^Q!/'zx@Ҹ, P,`,Jg( 3'560*)wP E "#B&+"?"7H"C1PbDN&:*??V@ `K,1=`"fXbvQA)H rῩ9A)B,w`>P f U> 0UbXX$d\F=p\J@fWPp$Zr "- &@=AC pU>>N.0P$__RrRXO``B,>/ oHl:J:p'a`*B` ƀ؁r)(RJa֐eRK0֐ep~&H +f hVFƠ?pa7`r37AAR&*`b/ 0`^ S8`@:pp` )(^"j`%rHl n`oRp)@ _fB, ]`z`Ub`{`|`j`n ! }N׌@ cY* _ P h PC r\""Hl r0, vH2, rH,p 1 Yp_? _)H 4r~T;rF`$&~N$ }LPH.6QB., j*8j , fRmJg)E fJ`gNPqaFplnJ |q/0= RpN֐cqbn8ȀnR nr-dH&, }H(HӬ jLpxoH0Ql| }`FptHr(ЁQos|JI0ҁJ+g~a󀠐 ??/, ܀{g>№А bJfV hf"= @f`LKPOℎ\qd'TH8z`fB`TF`BJeRc&p?* g$@%`ae `F$^jlj Rb0;E"J;"[`.PHI], " w  ""TP$$ " Y.[t&_F`\JaR@а4c34tĀg8nJaT@Jyf"pfNXOVabJfN.Pu/mPzb@p=ZXjJ_f==|S=` I9n ^$ `=! C`B(n .Backlight` NJg8Jgrb`` q^4@Vb܀cg>NSk.qn(A2;N r{`) Nl$`{PzҢL.PBGBFp` @9٠6wuZFZІRZXR@J_ L2p0.t ygK3>.p@XRѠP.$Y?Nư&_~ Sphgtpl =G&0+(-|devt*` :fH disk.f>b _(hU l(T f g<,H~aH0<`Gt4 ` 0:P ^"lnT-H80xag $ fnp"`j4JSB I  vf QH؁`4<g&A&H"0H’҄ ,.ׁnڴ&h,S2B@L /J@Nu>02,"xN$q(1H@j1l>!D$raLg @ޠP(((,1܄Fb!raܠP2&(*1 *HEBEHE@.S,QᖁlS`bJf$Jlց0BCHCrvFXfL"NFfD$H5!! 2*pAHH@5JmFUPw"|& UPDg/8*0w &:f.l0R)TL &t g$a>f6J@ `.r}·f&$= *2fp"Jz"0* p"A2B@&PB?g8H 0>&Ja" `r "fr UK" L&Nu/0 0DDDNup"P`"H 8 ptpJ! 0t` @!I #|KT7#g2puP xp#H V1| "lF~J@m$c ap`4C BBN N>N _Nf  N(( NZ0 0 NW< < < Na0<\$(4Ԁ"Ba (fT `4(Ԁ Bb(H~U .>rf P$7:(,,,"rP d,) )F,(2PCฟd2zSf Hب($~ ,a !ztf (( 6031 /0,1@HDBDHDP,vQPo R(1pb{P!l`0$ǀZ "@Q W,4<US W1|  x  K&_!K ,!P$zxJCg& r !@.r fVQ!%P P`F"Kp2<"QZ@7'D7|00RRJgߦ/ K14<pa _`Jg =rO!>0`h(}H ~l#q9h66 LJ0 f0<%`P$10&q0rAgf f 1"fXxQeH*H"x "i @A -RgN L#g6BG@= L1C^A0`%J@k@`(q"#0"R,D`(q0"0*HrR}HPAE(Cp ^flxS@gn"k 0+'A(N`NPFTfErf:X n,QUPf;g$!fQTpz@P`J@W`PaTVf4Pf.WnU6fRUk$R``P fPfHatP40/OHo?<7,$ _A$i6SC8*E:86r|Ag& *Pfa&1AH`EfLBBEQL Nu&H\@ B[^1Nu&6 Qf( (Jje~F)eyqZ`FF̂ffFwg"Հg+BfE 逴0JRz@<#@p0ƁS(`!e ~#B'r' 2PgTa'H 1;r&fREg$2Af"SPHBBBHBfڐbyqf`_"l4xX1]21VGJ"AtFq4Bl4SB Vg ЄAІepvpp(oH<4XR$@ gVRHRItJBgRf U`zGZKF P,x4SB`vSCUBSEEPNf`J@L,`汉VFmgHG>@pЁo@e*00=@.tԈߔ0fPe Bd4`p$`B#rpISOAp 2JP!><cP,8G601$H4*IA0C@0CNSm0K"F?0- E\1<||0B`3vJfX`$f` raf""Hz0 zp,HH|@@N4(HaOg@DftzL30e0IA" a0M0pHD@Ay"Gpa4aؐBA |`@${r@CfL@4@1 A%|><*bQ83&H6" Љ*@G@l!61@CQD0 KD2F;20h E2;QR0z1>8((j`!6]0,$R"" {T㈒߀"H NuS@C0 AH4A2`QH4 A{3QL2J@oS@P2R S@ W-- ("^%a| _2nH@|oDFNuFa Nup]p  \ @֡d0 g d0o&d0b vfJgJg( fȢ Og&&/ Cn"W "_#HJF,ikH g.] ^NHR.r! xa~f" LdTfXP&؁#PBF1@"(b"GAN&H.f FA?N6m hqfƠɾf\vp pb2I$C@```` `E`|?<#N\@!IT ÐǐդːϐӐgJho΀fSpg/HpLyp`/4RBftGBgȡfBt:p V`dd@IE4B`;Bpfp10fx2cEch6C: P;$L6.rR`Hcl{P @(t ddpʵ|6 PNz=f~ZQB0"A>'|azBN0&Ix:"KJEf +SJnxDx "o x,x#]JSf)&|r`—ˊ" oS grWfT Ի:@$rp$H@g&0/"{KB"_ `~v(1Na.g w@pJT.(*1 *HEBEHE)E.S,1p1lS`fJf$JlցqPBCHCr_sBqfR"`fJ$H5 `*pAHH 05Jm@ ErPw>rL|Fn0 &0f6J.\,f&$Hp *>0a$"0`@"A2B@(TB%80A*1K$m4*q`"pl`$OpBga Ot4+ kH1k`pp!JfgS@*`fPJĠ`$`4< gԂ޼g$`HBOL;UPNroff8r PBDf,Gpg pﰕf`& pC&{&Q!x ~ akF~?<*H:P4BET@H<6P8C~CfE`0j DoS{v@TBAAAo HGJGlFmgPrPrHG>AЁe*q0dtԈ00fe Bd4t`p$rl*ISA,tL>8&&H. 4QЉG@l!6^2@C4Q KC!LF;2`h E83RE>h(t"6]V,$@R{п"" B"H&? NuS@fH4A2@``H4 A{3&LJ@oS@< D OS@ Nǎ0T- gl"^r$4C0JjHg>d6g(ff,&HACLf8rc"pT,K :8,V@pRTEajfNJDm2+pAm0 g&A`8SD` +X` &aBf&އp`x 9wDrP2B@Hwa*P$N 8%af&H%:gJr$_wV. dvևm @ohf6Nn4aoH12!X E@.RFNN.ـzp!`"&:n:m|&|&H|pG9@ #X &e9A\PEfH`B$|$$I~\f`&~Y`p#`lm:rz )L֭JP! g )@,g& B&->P($Tblp x&Dx"prvʀ#tX@<"Ҁ"x~`ft& rfj(B(d>G#X@5"D&8Fa! qUjX92k3"8RJvQĎ!0q$tTPTrd6(* pJP(H&5@'0"9C)Dj@@"E:fx$HA.`g:2Af2$30 HBBBHBߨf 4@eS b4@e 4@ e4@dp%`F@CKL)|?KT<A~rjg<ԡ ~&HJg,vQfL$H (?Jh oGsg3f($Ig*:=)Bk JVfZU.DfP6qЬȐhrrf 6fUa([t m/18a)N 1"VQl@gcg@|Bx` xb!}bpfF4Y"x "i 6@""QH瀀 )g @@,_f ܭpPfPJBNu2|`TH1̀agA1A1$)g"BN4w"`!_ p{ So 4 F`FH/(L|"x/)V`Y``P i2(,P=w"hHz-Nѐk4@Ho3@"pahTj8`g `4;p@m>0h`Nɑ[Yv"AJPQS bg @B!fHC 22Nu.6*Jj$DC1C$PBϠ@fv3!Pxp  g$"@iV `) d@pf2teԞF O1f /62/O_Cg0.g"t IWfrVdHfrt xNg`( Gp2ϬgfvB8]H }`Hh?X/۠~@JCLO`pNuo8 ` @PAyC `JLNy<.` 8gȤH Bg?? @NJLg g?03Ȉr "<AB4CJBgbBkJBr@QPBf SiRnpauאcaR` bBBGZ*Lp&.`$QB` Bd.B`"@6)PAg Bd46gBg`_h$&`]*h*@&fa`lp`H>0/OHo70,$ _p|$i6SC8*E:8N *f4 f. " [pe@.`H`@nZfBB_EQRNBKPS _pBglA^pOX@aH*H4-fƜ`(!N 2b,!|rp.D! $0p VBDdV0p&w. C$@@0<&8]Xp x$C.Vf&&*W p  fC,G$v Vg&`–>0p @5BH5A~@$Df* wfBDpMpg*:fPJpB`o0f f$Hlj0V6qfjRƐr#HpUp pH1?N/lJ%Ɛ|%ITpS@P $0&gNRf8Z2j{*H0Q6 U^ Z Ud!Rp"-n!D"B}< p@.Q?1jN."/^ aPa#g j`A@ ^pB.l -NS4@8@BjRdaVb #`B C&Z0 `@ՒdBjDrC%xxP@Vr$*hRGF!`bLVr@l~C8ab)2#p `>Pppf! "2f$a6P8`&8@$@vJg@8J@oQ`H6BZ4XJBB`>pt ?fpC}H@h,H@~`gtvRpS@RٲƒAs@a\|TPpȈP՘8T $xvz|~SmB-]z$ fT fR [ppHGRGHGpd()``fRfRad&`JV`p R&eR%D&Rvrg %ErRtav|`Fvej0 5GeHG`pbpeUQ*AQN wN0 QP SmQN~f Iar`\cN{g.P/8@-a fpgvR/4gBDsf/ZfFqFp@To` Jl3+v22R 2 Ɛ+h~1vpu`ƐvpX"_`f p#T@epBF>NAp  !J!B KNL#>< gk&S`2_+0+op r20KD`@0F`R:afFFfaf R  NU@fTRL@a!f@zr0wBt@x9D ,g"E04@[pfG&ߊ't@pް <xdf@g\DTp(Jg 9@?)@\D֣>rP8(Bt&Bg.v40 :gRCCf`SB"LRJCnWp{`Xg$_RPeP0"(0 e" <Lh.bt.>kbt>VVܔ0<|`f30@0HB0J]D0LF`R0T`V>"XafZ!jw^H0bLPwdNPrRP_vV/XPZhzp . _&Jf"ȡ Q>cfam $0t6$$6HZj|4ߜߺPafݸp.L4!A~!@z>*.Pbt缡aPbN`babءg,"/g$R 1: g ng`fSBffz%h "ޕ&@Iq_A@ @pf4} H^5h2bAq(@wJg$  ARH!w@:ftp B!a/3XfIu<(`2P,pnlg v AR@`S@L[[pHP*0k pJ*skN f ߶a $@1p ` g ;"@P !4N:a.f,8 n2|. g,w.N`Z@ g @f"JO0|` p  `,-1oN~[phzPU` p.W0Rf[pK2pr($` :z 2`3&RrV2##p ]Nu*J& 0&k6+Ұ(KxPa$f/OHo?<?O(* _a d>rJBf4`fgpf g  f` fȸדf!`"2g&D6<H))?N61A*!HP=,r$ 8& pTT0d$._Jg1*qSDnaSHbH~,xjdL~Nu!qh13J@00@pp\bQdUAHAJAf"6"0KBx!f@3@GHfF`Ԫ@ D=1f g HP^ J tR5BX~@ f%HPv0pTGUBo GeRC\pvf ~`ag8pa`H瀀 jPBPLΏ vr[pRAjbRC`j*NurtPXfJf MFrPsFpJ5"RAb$5wGNfP aFfa{eMg< fxeaR%B&RPgTJg aBƁ,IHIq|$*6ghSAe66g܂ CL 6(*g'fBCc('7Df NmPLsjHj}^ȀfXvXBfpR`p"Mr%x 2F\QnP;2T:Wf6R`PHP:QdBu2Q`?rfBo`ǁlVh f@`V^0|4gqze*qD$`N 2Pk 00 D0" "iCÐc@HtwNu, B2raeDE0B@0IfG`bp܀G` ,pq08a.aep1Tp@0 f/ A8HS@BXb_afdpf&A'G6 -'@_2'F:- w` hR p AJGfVC&. L>.^- $AN+ ^Pp`/J*IvR. ^BG6-Cg K$8*W, 08@6'j/ ģt`fmDFl0S@m 4f.aPf0"MBYU@b0+?j&RP** *gSbaRPamt@rspj&_z4BۅP* q4f$Tae8E D`N{KbPZD0|52F@4 @̪rrqAs!0esH @$af @.6p`ApҒ`/ ΰ` .gΰ g@_aPPfXp-zfb aQB -a$`fHaf gJGgpJ!Аbalf N ` f$(*?H,-]!B!^L4P&/H H@L0"L< _fuP}z̐/"H$̐ --I/ $xkf/Hf c(N&.P 50jґ`n0bp|$/+@$uPT"gR-9$ЊxͲ|*I L 6C>;Æ.qg< ݻf ,`bJCgafaf jBDb`ːf"3D{fN%"_Fa!3FB Ѫ>6 ܄Df~Op^fphfa&f7vB&ȯ0$0HPL8 0 F;#] ` ~$8H8--b"&x.&xL1P$aZfx| Zg:2$lwf(S?܀fU0:܀02NaNw@:~-22A INiB MaCd0sBXe/L#iP/$H@* _fHz@(N&Ma=3U@na$8Vf*&Mp:ޖa,4BnaPp.5 g,Lp`&M:޹fB`$+(@0,f 3ޛ0gJ1V0:AP0jgH}T*`&_Z0ށX>*5rl^HfFBL8m@g*5@f/_A@2Ѐ~SGg0 p2e6`_"MK@?bH:*6*C`Zg Ge|`\`~Ed(5C\5GZ fm GgRpeR7C`lNP2MDI`3g4dBPD`TpB2`#Nu$qJp(p.($k4.*1(1(-dk*ڂ`j*jp`$o^Op#BGpjp$tq.q0af~DkxoЇg^4(,Je-g4 @0r"jTpwN^ZL4B^פf(sVabf(gDJgN;bʸ@`aP (upgphq!E."k$0(A hU B `a@f$r&%(5 HR/pRRBRp`SgFe`a er`w atrq$Ȱ`"_-q|NPp_*H/ 0&1tܑѪfrL0hf&Jkڂ&܁#0@pjf pa8Nn8ptPfa`p_&q.`/pچ prBd,@pH@ K"MJnk`$xNpSF;Vx`H{bC1D`6RCxDie ÌL`L0Xr}|t4HvАF`~ȱ$O`b0(ԐFfX|JfJgFHxBBHoHQ ?<=TJWg(BWPo?,Jg .Jxg>fa`Np/1@2!pМ|J?"g 2od0ʠFfkt`NŅ1 Ri0eذf &1 tN0؏NḍP͢-? 1:A ࡿ^*I"^0H&NPJ P ذNPV"Kp .La +x ]0fv l}fe\q&Hqq[PfB/00Ap @ A@p@8pA",$ _qr]~qpHqrNZ+[Lg]`hpGo48JSBB[QL?3̤61fwpܠAvޱe*`G+@.Nku0z/ I6KdG 6&W(_a f0`Nu f$"q"1a&1pʐHBUBfQd pڐ pĞfp P$al&3͌aNfH*Rx Kp_. _0N0ukJ6::2w"@D`>C _"1" aŜn~gJʐ(g0~/ݢfB$ 4oaZg "qf eJgfS@&8oep"q&3]0ͼuЂfen h03̮_f"|D$j*ܰf!Fpxp޼upeL~L0f,4p(bLe"gdedfa6ҍfx(&tfH0"ݡ`Nf`$0Lx<CL8'Hf 0@He0 Ļ p"HN6gL?$*fBq`6܂4Иbd:?z6Vj (AVnB1p--6qO&3| fN\HmdR@`R@4? Kc:L ]H炋,H@HHFEH@%0ANuJCgL0?BEaR6 CvPՠB0 ,0xV8U<H$+p `TP\X(* Ly"mpDhld:04Nu0(m`)[+\)oV+d6'X1|0!_ 0J PIҠ`p /(Cl!I/p _0f"_HP1,xBnl0jNL}]n:A A`f@@8g19g~1HK 0`A f쾀`$`f"x )0{Bgg$`u,:f$dA 22(J2N0Hb 8g @g/`@|C`o``gFlqF/ xbp T`:@@g2H璀1`fA?$CP1 0C1@2pd0>Lߙ| DA"hj7HCVBt2pe@{p'\]C)`_Bf:22(4 O1iL @N"pc`~$O4iPmAz2`qKx8$-p02Ak[&}x"H JHQ&C.!NFbSS4{p&0$k2XЁZP(`Q hUQ'ID@N06tQvBGQ p`CKpD@rQTPevXTn`PT$HhXrSTX._.PQQZBRPSdAHX`PLkp&CJbg2Cf9@`F l0nL?p@@g1pOLQpݤ*h (2p@(-x!M е$*? <NPb`P ap`PJAg.!!oy2:Nf !?dR p!pp`! Xr!n`gpNE"ֈ"S$Ԍa1B0#qV g/ j0"_Buޡ@@2*0+ಊf1g N0NfB@LZ@$H&I !`b eACVpH@Pgnp`(p-Hf f j@ ) A -C.P6 ftA `Nng0 fp0rAo0U.@"t"p"& ܣaB*&&Ht-Q}tp  K]"& I2R$8 ,*&#F&#B rF`,0#j&HEEHErf"A2q!lp1J.d/ PBYR#GC .P"2<.AԨNg"-y # < 8 f,Ri#x GNf"tzB@"$Nx`M?Lޡ~&0Fl ,( *_ `fp3JJgp2`x2g :f\g g 6,4f(Sf"t0B@NNN[~P`x XU0X&8"*gǃg~8f0%CBjHN/` r5D_, .pxt{(_ F,pn8g0<``._пJg2 g"g gg<2o֔p0`V&p.Zfp. _$HKA(!GrfgrFFƻp1l.r@DRlp fz fnP"`QfH#E $f: j$f.\ ׂf($tkB@m@* n ~l(< I$Ck En r#2j"g^%l"6.,A)!f pf "_вzp` B0F0g v"Fh!"g`$d0fR fDN.&`-\f[ E@h4\#1/`a*h42gp. p0`d0fe(N,=1ժv;`&@r q#Ajp*@j"`$ԉ`$@$Ԡ,"F"֘Ы`8ޢ&H.BBD K lpq0$! 20Bh`wfhJ`.hV`(AF!E1D 1+gF`P20 p . BA4161gN(ff.CXA AoA԰gw!NfJCfFfXB@ vֶ"yޡ}G-+g.Jk" PЄk}D**L*`hpdpZ\0<}ZT؀SL@@L@jQfҘ݀TSvzfw٫je+p<DuSPg V:'Pq4VÿN&gpގlzp6`1`غBfn1``J1`g8Sn33/$v􂑬^*fp`xA QAB(:`+VDb,#Pte-L JST"f*.C"L*0!gn(Q^Q*,P"dSr$e`0be^ib eB@` V`zm!Q  ffCr2i4L* Qo$Ljq~>*$&Lj0P&@DրL0 րև,L*`e,pdTaoޢ,Q*QڀSL@PLPj S߀l'EUȻ~&BD|l.8&KP*Q LB@SCg&Q1`CNw%l0*Q1`fbBq`\EhSK> TZ`\.Ye$XN$f4/B6V|ap`bITwLf TP|^PtkT@(NBG@|֤ѦΌ@zxLj@*y40BCN`:Qm@fbScN`O0g6,`QrD T`L`gLp`0f@p"شPe6Cp0ap~4BA0+Q@Bb8TYAlBA $@:T d fSJd~eKBFH|UN4<a,#N2 Nu/,i]_g_ H>$TNL>f|Qaf`N%WڑI ^XʑEN$Q$kz,w -u.('B(;Hf چmf2LJR"},P0e*"E2а$f,@eҬ Fzl.bP|*T:n$,⊲c"pа"l fN)B)A $0|$ (N(Bf l (gw8`RpL D-lX& bh@f`7@ -}gf-!of2[RL(B*>RdvepNuC@NNVN\Jf Vp`(Hrr 8(4,!i^7("T#V 8(T}6N,"Ad`#A8~TpJ)g 8s g4Z{JgO`0:4tkSRvE0&I8 VgRcL 1p00g" E30I0 V0f (Ap2n`(APb*q m($m,0 g rd@`F0g)(+^`.0g h4ej4cQ0g,p}.0 K `^0gAP@*L1ર0 HT@TH8B&pD0g0r6hꀀ0Br:txр0g 0{$r_P@fr0R(r?.f`0 gE0,`0 rHf@0 8Z0FRrf 0 g:X4FRrPʞgi0`ᰰ0g3 PJ$qDL*HJN`P(N`*-$"gP,N`[B1fB ]( $ N` НN`x9@(=Cg$,<`@Vj@젧ж`.aPURVPB9sQg@`@b `VqL2u"æH0uL~dNdB._&N*H -jN &Nr@ f:Ю`8gQ~+G 'm~ZLAB_^+_PP݂@`g.8A hk$0hbe1.p IT` pٚRjz aA4afFp'@w`'LAfR`Ra pdA! X`adf`8ta`!pЀPtXLp gqdNٴ~d~ NNfrp2flNfd&HpB=qg > N4p'A6$6f_$0`8 1f`5:` 0fpՖPp pnfBpfpdf8pf(&?6q gTB H w0`pL@"*- - -( 0!k$0!^^&^M@.L@s6tdA:L@$*^:&H(M-$mB-(aБ䘲A(*])K p@&$(}f <:lf2f`$`N׺к@v@0r!`wN,DLp&e M"K" )  NfX:FB6##: K(IC>p."L`"MN_e`"NTAH`p߅XN`.$pפ~NֿH&Ͱ/S8)lh8d8`~ >X,q8zB[p&@ހ1fl(W@0*COnC&nBY81#F > h,^Hq2<.AOf&$  KN HqNfph`j~5`d!f^ pfN{fHZagBVPv" KH N g~$`JCfNff Dfs`1"zL|6"vo**~ݤDwfHvNtHQ@%g>ЩJxkDAN&fUD*N 6ra5ʴH pܧ@ %aKg "P}l`ñ6ȵ΢\&`^&HޡLf,v4H栀r‡f"f"ChJ̱:tѴ^`ܜ(N&I*H,.,ޡ(|L@,@JQa`@V(QHоЭS Ipf.$BM6nU.?لLTldlnLtpH L@@AqSf Lbf8`Xg@z$& $H=@"$}HПfn`"1Ǯ`5$ M܆RAANQExKzцur^u`xp޲@|HfpH^fb`ZzfPz "@fD?"(X? O^&A?,3rOV.BO0PH O  & @654zV攰& A0Sg=|W`.@Bw-k Kṵ`QL:8nB U?/,Hl =_U0<[(WJx `fX/1:}(,(2!",?XO1 `D8%հ =n}@nYpR*D7BTB9S l}tQ)H)oPO0 L(aV:H2[PP<@﨏> ..$RLrAP2\q/!nNz>g@p.QgGM"pbT#(.*.ABF` 2n`dR n~vp"opX"px Rl-D|~7F<-E FgJFp`pl"fN|b0123456789ABOCDEFPX7JH8FZ TTR\=T`tSfnQnAzCJzg!\A蒀jpn0`<p@RPQ@`tp /HnĆ pm؊q₁tp zp0NrN-|dfjlEĀ/ /+RP0$>O`/.V[p6-Jf -_nf\譄n h\R撕ʒ\nؙg"#P`F-J$ːʐdJ[ʑBnR_`*.ʐ|E|Ĥ#0 #ٚfPQB2:\2YH H_gSHL2UbAJf $N2f'h`C%I~`.L:RƞNn萴p^hf|.vNj:g@ E$g`" gJfz" gvz$&h'+mfDgVL*`V f"g"@pgC !:f ޲,-6{NJBg @n`JE^ `:<0L%"BBNL^OJj*gBCJBf4*vHCJAk2jIe!_`BBH^2pJj `ؒgv-H "*N<(OBGGcHIgJkRGHȒ°`(GIe fBBgHCBcHCj~Ò(~HNj+Nľ~JDg,Id($JSK*~RGSDN>@ jgNpL0hp d0"x Hf 2*J@g"0D@ig ""Af0<` )PmwpqL`|UNC&!I8t/ aD(_#N)m,(_/,i,_g}$p>Hz( (_TNL>1fNuL||f`Ȧl4 ` `.\f``.LT``.f*`   pQ r +A!ּ^` p2"Fـ p02". xWp!]"`p"v."Hp"^""0+p"F"&!"Wp"."] "p "2W@HUOsTOLNwW8Ip,?NZtNN"^ @afpWl`p0Tt4 fv1NT92f6JLg6!( g0.fNRJg0>epBh`҉pJN&&k7jcN 2]>fdN$qK2 14Z2W``E4{":CL6f0G$ZCBIAnE_!J z@~@@1/nB _v21An 2U/50`~0g &S" `B@"{[-0,`M}LUA!lv0`*P00a<"(0M@TV rootg servf: Af28ABvA4Saf2nT $(vfp`t`p/?HVHn#2$.0HPL_$Q6pNR.$Q Desktop DB D`8wHP"w0)0@f$pf+?`=@ pL N^ _XON@NZ$P(H5=AF`Ȯ Hf9P쀢Ξ@nȒPPCʼ !|i$` )3J`̮qsCjAԱ[ec̎&_.0!pv2. .ʯ4JB(9n*n-Jo8pNu"DE ?`п4f,XOv1 wh"R`p(PJUp ^hvz |_- AҸ=tCCвqȼ,"GRr*%A>`QJ@"^b[xDz|"qS`*f^ʿfN`pOPKN@pAH}@<.0ED!L%jD5jH^԰f"f^аߪ@f nLp`(z>`*Lfΰj>fS`npNuN.ʰ(zN$NA*_B*L",rCɰ2*>qgFfr *Db 0*H޸e `(d%l45j[H߰>KFH'2"@"TQoQ`Qz^M̡DERjJRN6ϰ>N`Zb zt $"q0r2BDBJ6>h@z jJc&ff$f>` P.Rj$alJQ > vsfJ&f@|r2+!fY*!0c<)@(P F'ѥZ$fP fVIj*|xHPU$LD߰0& PwfzfysaHS`DNu g,2p>#yp|JA֔pPtC\-h:)z4E4J8*fp5Z3*Ztn8<Mlf3DZt|ʮ ͠DEN^Ld07E04g.101|I0{\w@Tq``PтHlҤ᫬d0d0Fޒf48u@&D|&fp|~p]0BDΐf2!1&f" @Ш6P@ @ DP:PDж cҤH@r  prPg rPgJ beSSgJf` Ppd0<ɡ/8gpq~x:&x|2o6$q&11VaglJlgdJ8wf,f`(K(TgHfH``f~`g00rt/~~b*.4fn2f J,f. x `` a 8Br(l{(ؠ`fJJg# gH SpL0&]$r 0LfaJq"MI .RSDn;Lo?`brLNfP1(Fa|@׾f V^L8pN@eL&S>v jb¤Tf*apt1_"H M",fHa0"$`WWrIPff`l jBD8P`(b$dP&!$k + g!$`p!p!!$! af !dRwrA1jH0jJ_!M (@0@D,  cЀ0 Q B@H@H0 .h,`4.` Nujd} frb,f`̹ 9L`v>4x$`*jF,*J?t Slb0g(fEpx`Cp&* ք fb i0 4"M!.R` Pwb:0 (Jtj0N` "M.-؄(^p(g*b`(J؄uH|/|0,D:04ma0\aBb꿸e搅Ap h`La5g{!LpxCepp@Aep !H | Bl| | ,6 r`!`g`H炀$ (ShfQHaRPH,( ƞqⰾ()L`)H(R7|  `pz`&oLA (-` g"(H PJh*Μr T< L(F!Ap"ug.p I`$"P$S$et$H I"QgbJqL9Ġ pg},`P;f,`x` 6qn`g pa S0pHp gPb$l $*Kx:0dt;@ppge:\`f2\bf$TR@j.x(J`IX\cg LJf:fLΒJ&^xzP(݉ `"+ "T 0)7&Qg<&I&S2'aBEp$%Jp&Q(Ia$uq$'M!U("#I0$]"M Rbҿ]fHgBPb<4 pq.jd&g"g*a(_n`b݄qn`gއtnU(_ `0*N<Hfh,ftfqpb$eZNV`‘h46| R!`,"&)JWg2"NP"شp0,o LpN p0(N9@?)F,\%d"=aAN LNuҀ0@RAI@}4g4 @ g,  "a!C (Il`ghf+! fMV cP UP<| gr 4 _` @` qx"6<؁0 o0؁>@8 fPaJxZg< L`*8 e_Hz"Ⱎ Pe *Rg @BR JpZ,tppK!Ț1$V1f "1R F!AR`"0@!&B 3tҀ@F.!C7J҃Ш1 @n1FB1|CE8 B `Hze0L|NuP dx mPB8o!|>p]X(Hg:2)Jg4 At\@A lQf *R`@`鸣P1"H ),A"bp`Qe` rIAgb02R爧f&4(ASA0|PAPQ~3pNuNVÂC!I(!n"x0AP Ip5BYQp`Lq!0pN^ _NH߾LqbŰf a&Rh,NLq$(A}g Pg"BN@B,xjrXg$@a `ePNu x$1aad|dx R @8 nZhg$"@F"gg$劒S@BQ`B!bPHXi0xVP 0|gI`t1.dq&'K4c0dQ&i^(i4 PSB0,h`EepJpIdd G!4`ĐN/0 0@FtNvNvx`zx TI`C JWJ@oV @nPrqn0 C )_ ragp f#X#Prrqxspg J̡ppp`0&sp@|"kH+]fDg,RI"@ep<'IpqgapFL p`sgtvp&9 kDvXt QWP0N/@qPVP"HP<'HD~H@q/!/! aF` Jgfp OHo /)/g B`/?d0 gX"x  SARAgp)og6&ʠp"o&@ff""@@f /] " gTFfH$f  <0<H$ Pg NLg"0$ g f"AN.WNxHqp @Npfa/Nl@`@Xg?/N^tC g f"@ "g"@  dpD"@a8f@Dk  a&:nR` &Vo`AIiq$_"L$g ԀN/(@gCJʠJgB` Rj1JjDa a >@Nfn4@$*"g,j&Ёe$Ԁft!Bz p $g4 ʼn`*e7й 2ŝ"dЁ#A1 !"a.&q\0 g @&0 fg$80a@} H @N *"_g&"A!! D%9@r`B0d$1"xC2ժJECcNqJNqNqHCFNuBDB$x 0jJD@ 6`.ZrXtD«:A0rs)g rAY`Jg)p~`pt҂P"0&8*Fߴ@k@ 5dRDdR`HDHE8HE"HAD虔@B 2fҁEBAHAف C u@HC6</`0`x 6gjl.@&xN @.@*O! ! ! "X1 4G}./8 0AB BX O"- xNN0< ȠKYOXOpBg$ wO1x@A :"HHx"Bpq` ".0_~|zxvVmP"J J!B_"_""_2 邬&6x g >"@@g4 0afp7 IB$3DB fRSDSCfI @rdjԤ@p bHz?<NbHz$*V J>2& 0/Fb0;N*$p 1i`!I"x S$//9@ TI$Y 0 "R$Ifp` v Jn J$_NuagafaB`Nuzݤб@E @940p6\|b"Q"QEp frpd .EDisk$h f J"M0 hJf Jp @g 4<B`y2{fgH0 `2 J@g EX0F$@jJf><1jN@0Rމp `2gbg&0 fT&0$fNJh4g`Fh0(f FNDR ERIK$g`( ߨDMGR ߨpds  BTFL gN^gdHj,BYeZg?<`? hTOUOBHp/ _kfKB@ A h} (@g~ E ~ DGfp ph@rhQ$ &&&,T&EhFhFh$$&B>H<.BGY?\(_ g Tp 0f~`8*0.1g.=F=|+-|ejecBnC I<f .g~0LN^Q`C>UHz0Hn@J_f=|C D00p-@T0X0 Ix1 .Backligcht7~1ބ7\"xC?$/8hE8} 8$n%*1Ba:-B rLN^ _NM A*.$-n &@*@(r `$.&n(n &.pj& m2m ph,.ކ܂"S F"Kef Q$`>R`t`XgSo{Rnm"g n D%@nXO` %@\ &0(.H~A*"R Ia J a`,Ag& ЄpfS~@aRL ~Ԅngna QЁT|fJka`U*R`Hi`J"H%Jk"""Qa""H _jINuI"$`"HQfp PI . xtU~R"}P$kЁ$;fP`UR`Vp"Q02Pfq^"fN 0H $XPTx "wQ` f01J"BBvN"B3h`"/L/p w Nt` F>0trdgtNp@R`[J[IVb//  Ag"g,r`$S@p (gJj R@t@@"gRPO/ALh`O/o ccPLJWDF0-@` F0r `4BNкPVLq@NLJ[jDJjDFpJfS`av`avapJf`RCjJg`SCԂxpCo C mn´e`߀ԂepR@QdVRpPPTxp@txdցՀ <рփսqQr2r,0/>0r2/@g$HHAL@`h`aJo9FqHAs`pH@6?`Bp.TrY jFAhpH@>Nl|w`l|qjJfXFD*q܃BCHCED拻/ /*`0 f}@x`Dx/2@/ 2@ߗYDj/ 2 1M@*_n*Blz jTjS{ }RFD, oXF/g/` $`>/g&w/*R/*xЁև tdR$_ gDg㍦2N?sN b,w^?b2<@`ڐ _ fr`jADkSAj"W2#w@Nڗ0`@m: )JAfJi` Ap flpik`dReJQ[k P .kpoJQj `pU`r`rjP@D4Dʰpn. 㠿h"`"H3/ &`B]`YO/t0F d(@Aw 0Ҡ$֤|ޠբRS`s&NuYO$ g @af0$ga`ljF pP!pRp@>00 3pA` kafa`JOx2+tNpP|1k7pPfH(of@l~(&0b{ LTjfL&p,~B6 / :! D/( / K) SN̰}*U@gLܰZ f8&D"CP8sL _PONJ lg/8 ިs y D"x l*`/ `/ ³ UHh%`Bg,ũJg 8 f?)` @jNg UOf 0TOfH bfjxffp&6g. @"P0) @ fp"gjn #xjfSCnʨsB?8 bL `HA At@e2t@1t@`<&HWf>XOPf@P0 x1|HA1ABg8:008 g2u$4gli&f pCҀ~pBnL PQOV!tzhfp`DҀx s`b@`$>o?| B@Of$>p?@($g/// Pqs _t"9~0:F:O:~8ApL^F 'jTf$9,9:`<<=?PDjG81RA!ȿ pA-v tA)6v Ar"H$5g{ G͠H@%|0Rp1 "v r v#,~#(!0(ojS `Bx 4AF1|~`B8 /vz /<`ߨ  k{RCqc&w<014@,C( 4!@@Nua"$>`v2s?8l@&TNB P (9P8"N>#`1#ZPj$kJ$R jx0j#aNJx0L#KpN0Қ1d0hP8Џ1r?8J[0f=  nm*g  g"Sf^q@60 jG`U@Co/Q򹡋T 8t@YO?&U&S:+D E8<@g80A 7EgHDPJ` t@`K@7J@gDC7ED0`nPO0\OA/WRo1g& nPICS@1k@?BgBgp TJWgB'p T8A`./(_ T1[0M:1g&R &p`4a U ")aa`22 1pa3p3 P0+`Jg>X`\`<B`a(t'_ NuaapZ1`)q &T8t1.j/.Py LA$n K 7A$U$R'JR, DJ, HN`+JAMa _'x &A;0*a0S0*-Lpl 27UBP̨ p4c0CD !ICpC BfʦP7wfy7|]PPJP&@3%po0"H3"U"Q?'IR7i8Q0"h8QS3g2L:Vau_/ pa ~0pa$_"b$q7r` 0LqlSqa Za7J+$g070qz`"f`:g8n1(P8a)t &$pra{ Q?Q*N^v02Jjo0NuL ~`a7|'qp(u ߐ.ї_żk2W7F2:dZ<! ( ]O??"@յpg-Pa6FfSC0> R00 e?"@0f@DghDg(Dg?"`@/+PgUѪ`Bg0`300е`"0 0lr8p0a5 / JgnFd4@8@`4A8A:`bto0Hk`G/ (a&|P+*g`zHwJpHkrִv(_Fgֶ(_tsP:B"e6 08HCHD6 80`b&6080 8 0ֳ~P0X(_/|(_ܰ"p.p `Pl@j | HF8@k@7O7|p<*:bPt20g|L|:02a lBvа3HC"Q01HA RSBlvЄlф6p6Ϫ4$/<J$Hp2X0Cd2>@d0?At1 P2t"kA@oX`4+`HzgH@Jf@? Jt4spgZXSBf7|0Eq`P>cд8 ߬gF>&FJfb`TTJgNJ`fBH2<6a0>0LFF撾jf0pa$gJE?o`SG`12 0`w`4PN o Nu" ),f`B"Q"iHz~!0BANNp02 N qtP`>MtPc[o0| \Ӛ@<)?ҠP:bWB@2CavЮJ@j}nH刪6000zo0l$vva 6`fo04A4n4/sP8~0XH8Pe8K?ӰТ`J dW@B@.74 _2:n$P6o`b PztUu!0NоҠRgFX`ONg>|S| ` еp3nj2HD`pߨ7_Nu8e8ca̺C_V1/CPHȺ:ƺ{gNucTJ`fTJ pJGg[0 GgaJCg(Rf$Qg@e0'Zg `>GfUJFrk |k|gP=@` >@S@@֘f@Pz`mtnj!J(.gV 0R@ @nJPS]@P`>P z`wn4$m*URSm !R !g](NЮ!Q.d 8BnLBEaaڠѶPga,8_@bvmTMlк`"Lelй2o05|mnAqO X?o4TflTwfTf Tf~`!6t?P @{2|SBg:lY\:0`,"Np`Npf# `&"`?>x@`!,@R!8!THn0SXTH0BL@p`*W-j5:n(* 'E:(Pk@V1 @R? Bf d( ޤ3cE?L@pgj5Y 00Vw` 7a0ڱ#4>Hx0Qc Q-2R`^@QؐIpV _.0cАQDHBa`:DNOHzl lt/ CE$ٰ@Sp8J2,A/APIP^@ɮPnl/X` @^O/Y8#A[`A _6110=f`<251߼@Af2lж&"f"-0n@a`aZ` Q%4+BR!Pe 8!Tg7B,@|0o`P0@|00R!h.8FNђpH:(lJfQS@vЬ3}vИJgB7F`@7u0|: a@ll!xWQYXF% nRQS:bV`D@%8FNl4%"H?0Q2QcQAfz aژ@QgEg JEgFW`FW%W`$oQhu8gu1SXP'0?4b???OO,CTNuvla`HT` SiH]R$NР֨yv"LP8FAp0(,pBA( `+_MgP@f.BJ=A4=Bؾ-Il BQ`02NaӂN+mD\ɦ4dpb@R@Qʞ`.p|Bؐ P428/.~ngS@?YHz-Kn;0`б EA1ɜ"'nѦڬq `$8h B cT8J "f)f"P-P@‘# NVHP N"X&P0H I@`AL; |_\Z 8g h!ܠ#Ƣ,a 4az / "JCbDF`  Jf*vЖl-J=D8~ $n6 Wg2+}@SAJWkArR2vqH`@g xPjD` V  PHt0@@XHSAfw Nuj 2I20ANu<>y@T>/8Nu߾Fc!:lа;Z01Z0_/BE?,J`nf02eΠҁdSHS@&Jf4Р<ƐFB/H@B@H@/~4p(.pgFP@l>JBf<*` {grpnSGFg 0 pcRGHpNH*̺ \D0?a@0`*P@WP!!4&7>XH A4<"00TQ>NupmPNf(2FFm@nJ)>gn|0rP{ t)a)NuUO/???2j՜Tvq?Jp?FC0W6O`6Wb<=2r/HBdg.`Af$p2f|1` `!x`"r`h3Bg0")?p _2&ee\zD`>a40,DA=i1 /)@kWqz<QþFe^ڢDAxP"r&`,lPT0ĒlPRRb<Jf~ @g@bfra|bhP`00P ڏ TgY`H@<7Rg2: aPBBaFa`%@@h0aFl@@ms`d63`/R85P&S@a$R@k_^b@.Qe3Ve=RNu8q#SH>+^gp)`f A 8` @NШSJgQp _"_H?8/ /`,QVJ@gA@00J&(n `v` Li@t*`)&T$kR/ sYO-W/zP{/*N`R=hDwGd`Fd`JD !D`NH1b,b)ˠ%p`p𥀷 a䠌p@p>Rgn8H @ a$Pgs :`BPq\?<HhB'$OPOLlqa,aN?BgBBpa){4(PЦ& d:Ag^6FP$H<RA(S@4F<8& s `20(1XYDd J0a  pR@F刕P"J JĢ.T}Hc(JPg/SPX*!u^֢Ah6p2@eS1AS011~/~@bVP]$H8**U(m(Tz|H jR26RDUfSESDg$YSD_gTRDXƛUg ԝfSE n2M02L4jNub (,f r0 l /&b@g ` PH^r0g+Fr0fTH=ArrfF-A*-B:L6PfJEgJof 0朁"=@>`>$R=I=P:d`w` ^=E̠{Ѣ-R`f`a/.?.1nUD2``a& ."HA|$.*82ga{d 2AafRA`NuS@2@a f``R@&0 B0&NfNuF!SJ j8gHP~w=FF: p @H@-@r(.DʒW%6CxRa3(i7(Tfw8p8iA i PCrtx:ppl20BoJTk89pp egX`XTJjTgX:rRBe(8kD03@`"dΠ7]|n+$,|`@tP9<0w8fh 8`"\Q$gR 8~yf^PZakk.2 ^J(.gA0'X'P^Q.`P qh!@vb&!j?a $a`D 5g8&8<l"`F!a`(aּ $a:N^28<-kV0ZA0HV0ZF@Nu89;/ Y$W1(WRb/ /} B`/ 2`BA U& I4< `$@(A  p `"oqpB"Q/)B@jm#_V2tgDb"g:T Gܰd8:ܰoP`?Ft?y`a'B4 Gf0gRCad8`m4'k:h.f"PkG6koFG <v`V gvڏ#\vPlVS PfF/}p7F" _ \!o 0 a b`ĈpДa2YVH~P/ ڐ2$, RFzam@oa]Bh2ُh&ڐv^v/𮑲R `.a~ x ֲ1]OpJ0@/< >z^ R0` GedUOp00f@rgDrg(rg?"`@/ˠ,@ gU~y`Bg0Z@5Q 0PN"!Nf p2aJ*#WHNRg`D*g N P^)Vr2fa$VRiVNu"f )f#  N `vk$ E{@4SB*pN"QH @PJVPL ?>LJGl1 SRg4Z/?1, @0P`:LZ!Jg4]`` N#fP{BR0BN0NєH= Q g<>@@r1q]>-t@! :-@x` :@v@0 J|zHfJ~Rf FΠUJH`OhmdX)Zg@KpX`|UX`μPgw@ej0H/g@b@fY`Xξ .f&2X~9Y?<2@@(bG`T`ޅfV^26D_Ljfq g`0EF 0`@gbG2Ogjy``hJfX޼W@fNtLwzf<ĐPҡbV\,`z`Jf<`xjrDoy`laݿlZm0Zn0B.p!QDA`DAAOuBF`K(Qu"/A4@+ 'A. /@0<LT`HxR@4S2p 6@Kx8匴p@g c0R@`2`08`r2+"p sbapXR@g/Pb~)pV Pp r2@cXP,p` %? sph'PprHp`& a4a\aABq#X P P4*pΠ3uP6@ > _Pg@Pg) ` JfBrGPGPPg Pf3p]Qg #hndP ^Qg` f8 pn003@ R1iDP FGP z _a1AX fp"~+b0@MPa(` / aap$_aP^ap`H?*(Z>G?0Ƞ"ؠ"f&SN009a$Oΐ.O /HEH`aLTNJGԴwq8s6CB6`Ba24HC6,N`D8:,,,HG>, HG(J$H0A)=8p"L. J H@RcXH$H BfXHPg 0$H{p Q9D(PA 4PȀ0 H@"gRg@`"HA,9ppJT9p8qpg p_f9EVPlQ)F HG9GHGTqg0`fQ9@ ESq L`toJf p$01`5@XJSB@Jqށ`@RdP+DdPPQvR֯PP$EEJPNu f " aܣg

S@az^aN^<>f:0'pf,!:f2< Ag6S@JAk,k@V` "(V N^`o2$_4[4H@!~r"@f"p`z$"P2}`! `p.`dAH<$a"L$<$T=6J[*:EVg` "Z/ Ii)"Q.,dG~@ༀc,ð.&2 8`FcF7C JDf ` Щc 7~+`&HJV{MPItaJLRAQ@ jJg~QaZp,aj6lp ~L`Jg^JgJ$@6BaDB//XN) J)H>((Jv~#tL|&wJj `E+hphv vmkfjThppSJfrt4% ft["$a0"Z0a  "p 6D"O~7kp`"a2Vù(r yP,pIѾz%Wf jfbCt"R"PwQpPP0&`86J@Vb(HXLJDgl0kh !dbvp=Ѽ{ 0qPg )wPg )˒P gJfW`1&, JRp`FFvфDWD+pLHm/`J2VAL'HV? k$~7_$/ gW/ 0ߨXJ@VBR~1b0 |U|$,0U48.f! `PljDJFgnK`$(8`` $E Rà.`a!C.!I !fpVkFvlpCaf6P. g ֙R`p`"$n$ *Ɛg A$f "Pag(JFl]  kA rakڔ "pA a  rRa)`'D.؀"Eg? `$0XO`a Kg?!x `̞p"NVr gJ }t. ft8 F`D  P (D8 F 6x Zl!p ѐ"O.. P TNx1jD0*`:6`2A./H?|B/ OpHpA2;NL?^0 380 D"kP_428 D`wJA`00w/`d!nP$h@ 1n`@a" P(rPg4 PI`.ap|D@J`1gGpW`B0_ 0. H`213h3g OC H`2QAL _XONжUO?qrg p`&p grI0`p t jv /`p XV`VDI0`Y2$< ā&Ɓ fNl`N"x $i fR!cmtb:SEE? ElBg?P?< OT}ON@ @` _ f`~PS$`"RN@kp\"H! pL#H2p *YPރ?<A@V/ LQctb ?(F(hbU?N~J_g fU P?<7NlB0 \Og>>yr|H"€gY?&W>0RG Go/ XOLQ"_x "iт?`h΂dH-(@~r-AN0fpVDppZ@>|0p"\p&H n!@!K61\/Y. @ "RL)n?Hx0?o T! T/(/@JV`lrFPZfr|//(0(( TdN@N@uDkD}J @kCG/Hon8N@ ApLPqNPL@ vHB |N Pi `//N@3oNzB Ƥb~hHW,R4FNZNC6b(2@Ő@Z2 p@ ߮Bx @Td` b ENNup@IUK 2N=L@M&8Me'(( (NNN@BOL=OX:3!6pT= $f z8 ZH)*IJiNu 7 j@T0H #$X8U\fT΍UXJVN@VJ!`Q(.8, F*(@چvbevJWЋ²fn#X(PcJXOfp`:  r(@Z@,4<:3q`gz+ dp`Mpf)"鳽!!Z@)`kg! 0/v!&l@'& &;4$n!/ v!'9$2(n!h'>?9Bv!">0g0`"@F 37? MK`O"Ou"~!op`"_r&3^>$n^2!/ /[ 0H.tBd8P!(xGf [0&h\1 A x(w$qg/72`%H(Xl,d-U2Џ&_"R r€(A P@d @ p`4_0c &C+CqgQ@ +!0!~21 0x^In! 8e!SbI:8*.<p0pg 8`fa$S VJ7f0BW򄐀Hc` rЁ~΀p c~ P0$&@ POfgUT$)RA$߈ D +м{r D@04<@V!!:@簛 Ud-@AEAojW2bM/B$eZ0)Sa&$tv=o&!UiJ` / pVJ}7o/ H>-޾zfnr^xk'+q0t)9q@yOaqlzAl~wy f SjQZaPRk&RdQ4i0d*PbP`Dg @ @DNagk$``@$bM(?C fpP &@(J\u0ctkkh|,dJ+l 4c)K,+g:l:mBaՓP`T8ZQ7x(SQұh%BH `J$Kj̒*^.(C"./p bbr*~:,. ТqxZ A a(:6 jmaHq쮢(jdv@PLJ,Zvg <D dL!(!,ұ/!-,a!r,m"g<JNŕfWgL2&(SIϾ˂UP~}q:v@ $vep&T g“!Bdj"LU˓)^N< PjX"_>X֗6$,< M؆$Wx6/U2B!L, * E( ؅dup"J"&&LGR+2 !"4薯vU>DYҀ@h$KEc& Q(h$@>p`0 S/N76!&o Ъ  "1 "t|ac| &IJg3~Եi<)4*Xl otaqd@bP`$<UҵaPpON'F"ӣʅS(&z$u0Wz%ҐpUVFk|Ɋt0,f/ !Lp,POdq9}&E暯"(K( TzZ0͑`#JԢ7ekQs:hRk7~&$@B POd'J,4U2J68(d`bbHqt3P[b!ذdJi3R vx(z^,Arav |&Ԅď&g~BG`~HchE 2T:JTPf]v")Wr hC!J@Ԣ*Q` g <ePQB?;6<>@b0S&@Af`0@A$*2O0=p5.R::9 gTO0TŖ<"*Q!(@ 1F?PQFO9:k`Fb":T1,0 q^~` FH1KBG.2.g,:_9Z\P\p`tĀ.olpHg@c*>r-&@O b$0VҬT\М:!ҡ@FTp$Li˓T(2T @:0~0qB1aU*Dh(.(R ";qȰ&Ji?jTVTVZxR@c@PXb«M 4#h(@~RtZyG#Y|xZhTwUb0@q*0BK@ bO.gz0 XoR6mxxbji{*:auz&Fڃ0<5q6@y`rxbb&]`PB)`-2a^ 2<`MZ8.J$,Ю2Rs"Zyth{ f)aeh|xnfOt Bg6zt fyrs"r@j6u``"g$ZH:`0Dt fNtEAZ FJA:%`(k"Ќn@fm@`g.+Ё00PoA(KJ5#z$@ Bp`ZJ Pg/+}@ N'eBY11n`#0(:㐠МD/HѶP΀ )J? %LIE!z&j(j 20HX@ '`c#LH`#PO7/.rPT(@[ <@( 00?&h`@$ @J(l  ` #f0f :-s s)|k:/H8~!-hJ@ AH-H!.(P,gA0*(oHvez@ b1(h,Jf-01(pVD`f! g@n0A( o(矓,&e"@".p;.-HHBS@Y`A SfJg`pOOOA cJ Q:0 $*ԁ .`~F -@X [ 02R!!G2°@663.Jm*afVA hd VA!HQ3,O>C16Tm(PJBPBVAf@w@{B>`B`Ai@t›AR-P<0 PhPkA"n?" L"K!S (R1 eL(dK P0(TjPdh@1PΨ.0*1Sb@JR1 "iPg@X R1X%2(P4Np``bq=/?8.{P.rdApfUИ@rdM (00/N&@ QF(mPCPIE{aJ .'l"A +Ppr+Ҁzd"p j@+,T5d u`Y0챠rRPOk 舧/ &I ) "s)C&I`)2t)gf`8I Tz`]A0df@f D-L`UnBn@6ad(@QŰQ@@Ppof'Hd{BpTX0d\`/ 1UȲ.6</JnPg*6P>6@3w(P1`B=PXRg@p %`(ET0zrB@PЂ9!Н2T-ld쨀 l~c`@|~ c Y00v"d,~ MUDg P`&L`rGB@%vJ@w`|( vJ xo"/ &1 !K@" t҂-ATB TA!BcpQ'h"AaQN POc! .Pp\J@gem찣` B prɃBVeqe` ) B80t Rc汐P r€(A!b  $x!w6N f!3F, Qrg>0TnjHX1b `74@,"p08 ppb'A0! 0Hp0h=n,{Ptֱp b>0Ʃppqx!v{R Cg B&@^Y0POb*fD fQRxc&S:`(l | !!g2aS2dDe'!#!4APPOd Cn{` I$Eu&`!krqHZ,p@pqnr@ā`Z@}a`p`"!#qZf_2ד@@bg@үS&tP0"(7ZTrbpp[` zBA^k,BB=|/ HnH~(@Pf$JfP g,x`0.S@k Pn@0;Np ?&&Ђp!Q?$L^ +$#!pfH LĀ($m `^(J•Κ~fJ(q<|,zѯ-_k&Ѓ`Rn*d:0^帀vi_|B$oT&~ )P"R"ҀcJS`l~fZ$x&F|`<Ẅb Jf1~"Jg1B(T^b$fqTQ @(P R"!Lۜ$:`\r!B Tvc0B/ A@L0CJ @(PIuN @|(gpd. T-Hhq)V!~.0)BF"w@ Sqk"*\uD$w>fy@a,f*.E"!k("tFRdb0ylc&1ΥnT$Nnthдd" b"fdZ鎜j2 x4-T槢WD3Yڑ?`-F@Fpgpf@lS JgsPOR V!fX:Бa?>t:oPO:-Lr0 шF.ƲqYfPd.b*` pchڑR( 74"͠/e(h}0h *,v5He! bv`]RJJ XN@Hp Q[]܇" ҇(AbQ܇ ЇppJ0 r!bbQ'>5Lq 0;a["N/`':r" >QBT{JBkHY c;px>leTh@c B,`L1PR0Tc*"HTdgT`({K&c$?Hf`"^1^尊eRn`107pQ@/`(@&^S !K~P0~`vd<7`XJ.DY+QW\դ(@PObz`Sd@h@6ej@M<g6104D,&=LX`(@{K2L%A(J++FG`Ћ`-KB*CgDeˀTTˀp.d`(A`,_"V,RGԣ`Nbtfk_,$k@"V7m .~Zxpp` f$L`@bPe$L(l$bl fr6v["@rPbRd " bRba gu H gp `! g'L` 0. HB0(Pe.((T`t̞Bd"kf 2,r`](ff<1ʷd A{frY8  2r€&AԐr tĀ$B. j" t ҂/!P&}pH'Hrt_ )KpTpdpHp,,2,Wp4@" XA k2"Y&r۸YfP`tXOgf"LC)r$Ipn/ T P"_Jg`0Zqf"@r`&)G 'G)J@f"JC鸐p##r" pl)d"_$p %9n8qT1`pH"ipШ`@/"Lpx LwtЂvƀ?&Cr %Ao " '񀀑p0)k0 f" tw-A* A!B ( pq)A8)lD!2@ <7R!@*`b ԑ.@d`@c&_b` L5 &@ a`Ҁ`""l@p g'`n`G $o">` t?āJg"(SfJg&(@*gf@1 0~ "€g&A* &A R(@SgXf(ȅpn(.`(ʫ SP0SlJgGfx𘨃,w pXOc!/p@/N6$@p0$JJQ%|jeff%|mike %|andy$%|bri %|ericJG0paذ1܄`8!@@ Cl5 P@ 1`ÖnJf @t͊Pw!-k5aP"ha0TGOB`̐i't"+@Qe0c<@ԁ`BRDԁ  ~#(T. `4&S`i<( or, !^ f!`"Bx&HB8"U""" ߸ s  s(!"A*!AF _B( , 0B !LNu.NuJ8 upz Bİ//0<wTR>/at, @`V&0 @pc /) pa@a><1#_n`a2a_0L| ,0mb0uJ f xNav0Np1 Nu/1" gs<10p -iB B""!0! VAHCe"AB?< /!ߪ O,x!3,_Nu 88 p0?` RR0gn&?Q{S.ET`@ K4SUR0A 8"P 07РQpc SSX`bSܢpl%xaJ{WI/PGHA 6gVjfb L"TH 8<|V xZmJfjY.0(]_bߚ0`&x `B Qp" Ġf <`!&@`Ԁ p$ ``L`&T`K`P fU07J_f =_`0Zp..p?*>>n=*=GPtnabqp?_r/\ "x "i`NPr?/F\ƔdNNVQ~>}.g:JGoՀ/ ?p#Jg(Jg $b8 gDc =|^Bnp-g@,4;F?c`t/ Hnp{#tN2x~N=G-oL- ?B\>f8= P P1wPƔhDΓ>vR2[+5p#nl(H rFLI8 )JUQ/RG6`dⱨFa (,~2Jf],T.fd}X$Hk2`f |'_l. r2J$0Ck @n@0;^`: DjvJ+qfJfvJ /w 0+6&> g|PЬ.ag\`.00v>g'nd// VP&WJgr \`r#T#0r0tSkf>l,gN)MV`Jj GgJGf'h[JG"ZpNJgfWpfJd+/~6l B S7_P`PJ&FJf(/+"Q+&l 3f"p󐞡FazEbz~~J<.,lЇ+fJ<hgPJFfz`H/켁Xp2_f2 (2Jc$BE  !Hh2 /_`R*0*TTR=lpRnpTN.`4" \`N< g)n! d.rgF lm~`@pTPH Ў P! `"oP!%)pp7BG9w 2`MHydpp p-Hr-A-| tQAX0pNX0b1v0CGvqqD2Dp`pLagr`rAll'Bu6$ 0KzDpDp*ps0""-kzn0~nnDp}rvBx|C Ip` @pf ܰ+T" XOA0@ʖ5`ut҈B_pf@ "2p)@vVtr)A0@Yu,u "@.gBgtgrTP>tAfJ")H`ETA``X@$-HN1C IJ@\P/.0.y( N4lpՀ@& !)h^P~վA*J_f }:b(衼@NxQgTC$ֶl BmAg!#T"pje2:. ..࿠`PV _&h`PfkNg>9`Jg @/!POJ%aR:XO]&SxݞHrGSnvA^bR*pS/&@b>b p*+``g hRv vhJ<Z2r^L(d_/pd(JX g`~p6BU0H.P=n Rb6pE%>9|w.L8PZ!T) dfbpWp" 8Д.djA(jG V&m7,$Y+p?~&mWbP%hA~ߠ dp@1VqVY>񰸂x25/nU"lE$B4"_!% gUV2rhfrEBG@1DQ08t,@.)krp pr^$_'R.'jrVT0PrRG08<*bJ ` .&f0~V`JFg~ss8pDAfJmgҫxPڒ@f03gJ >ᰒ@FTf.xPgT0 Fn".@X@wMg,+flfݜrgbrg]ZXgRf f;A8prtQfB´E: R"´6d:O8F`ó<6|f$=m$BG`* g Gxf#~ Aڳ@.g . r6}V`F2*2P7j=G($pt .tt6qN [f(`p?P)`pR=_t.tx6u&pbq.r?3.t|6xҁf SGJGm LSLp:geQd`-LSLPe.d@ :kR!`2`BFf&/ /N$pF!T[%̤ @B4`7JEo$0R"@H .BnU6ܬ .t_H51f <@2LҠ8qS g]  ZBBBBT1"Lp 0U=_ L\Pm^thJ0p H8`N=Tbx|@f$PL@ "Af6p.jgO@|`&0<ntgNAB z` SDlT@4z`0!~`(/& $!PJg%vpup@,yn`HEql?l$P@A"Aa00<@~{r2Jњzl39A""7"U> 0N#.6'|afpm(KB{8@9| X@ " _A9@ P9JFUPYJFPuJFUPJFPJF q 9JD YDuq꺠$pVE8P FqBGpn/+ppp,p)@.nr,r)AJҰ P Ұ kJc0P 4Vነg0xpY?< 5$ a7P| o| ~"sQQE"JH"R .}`?<WN!r+R] P/OQJ@@upp2=EtF@ : I Ħp&p*N@,pPprpr,F1SpZ,fasvpf`X,kfNLLS!jp>RS P 0Cf$RɆpaFc#4P&2 F!fzѠGցJ찍qf4nprp@p?p?" R暁HG!dAΠ~BGap:{Tjr.ZŒg؁/mW ```]@1RLR0 @䐮Gp@ !,r#p\{F#hVi8ZIBGzޔBPBRBPvfQ 4`SgParsZ4PJ0 r`KnҿRwQR@RL9fԈ14P( R@ p(_2@RbQ*Rj!ZERR1 *dv-j,0`T&_~.f 0R@@` RHƼn䦲K&Pq:f Rlfδ00^88W.@Z BGJDf&qg t 2.H?hQ Dg0JEg,t?6Ķ&_Bf @ i"K֐.h.g=JEfݲ1-hcH2" @ C2RI I"K p*2Q<:`@*X9 @ T!P$ʣ R/ @"K pf0("H QbEb!x~p-@(Bn,BJg4PK @Dfٜl p fݠ?/(hHn:N@<g=P`C:g*xJ "$H~ CѠ S=h!`0.{,-A(p2X SA(`$K JO)(Rx_S (@@PP8@)n/<.@rqD0Abvp/ :{f֎vp!|J~4"0kJg4HRr€Xށj220g0HXޭjgrN =@Rd]@ 4gj2p|=r7-Ap!%Jg I!F8%"Hl D/V*Yj&4t+z B!QNr !#\O (< .9n.m^ .*ڱ,>.g Kt8l`U{!2pހF2lJg L"Stut#쐟p#ܼ&2 Remote Access45`4a~r f`DN|ߑˠ p4R@:g Re:'L7QBk Kap'{@=G*4rԨ245Aa"bh9@.@L=@S(_`24TGn\CHEq,0ana/ q>_ G|2gg,Tpy`g$rsp@mpֳF'zVHѾ4Il/ pAMP~ᾺPN ^Ơ`<@..j24K5Jrn(TB`8T~Ơ(&nLf q &<@4r24[l/.`Tp2`*=/-G[-`"lqBVLTTZO2>Jqpr@Pp#0`fXlp04rX NnTEsP ATpV<~PpR`p/TN > GxgJGgLQ`fR0 ܁Bwn4ppR |AHЋǶ(@0 jo$(KI`SLp:gweXq S\pg# " ASϢ/(/ ܁a/p/Apġ&L(nd`5*r gݡ`|qN ƠRr ܁`D`@ppssqBr@H>NV>E  R`((_Jl`F&LvR[sobX06Ӑp/n+ H8x&h_qB`E~~}PL`P`0ngyD/A*s?#J[g&U/ Bf6n` IJ@g$:Pg^ zBFLǼN_&_(K\ՎHS"ǂ$_@>=GSGJGm]NlF LZrteRFXV0//H/N:g EgfQ沗ؐhb\A BG@juOl4<*UFJFm*зγgQMҐVlSqlGԜGbp|9H І(@SLH.пqB3Q @2/" Rg/~Z2fu/_Hj2rq:g Bh"湾4t!UOHyalisHx0<HyfoldTONu/0 :b H ;NH _>N!ϰʁ`&2%(0n'@L_ :F:_F:JU o\ _\>NШ ^A4BA^ ~:fB.l`倘 RAAlJ5CD BBڀ(JRL@o2<` gRBBlH Sat 42oBp`2F1n .–p P0BQp0"^` SJf%u`@ FFa~^ ` g`R&E 4bpG#R0: X`<pCL[1>$߲`ڀcBr@B,R`fJfD gC we60+0jAr)A0 Lp a)_Kpj@0nA{`l)F0dLQzYUTL ځ } ``\"SV0w)0eHPin@Jim:2@i,n*Tm"0) Jg@b2@?cpU,9F1I~ Tg@Tg0,H~#ҌX(Ax0 LoX-HIh@8:J`;q>@gL`NHf89F0gA$LX"JtG8n@-KN, Y.F _(_`lg(T f t`ⱺ>h K0.p (:p XOg" Ymp. <g Kp'fBU0&Ȋg]قN`4D6BfD6(6z$ Lأ1΀2p(@Y+Q@\-_g @&P(S g p@kg@!g rГq0?AնD <9ѩBG`B?/<Vf&:0<_ 6f RLZltS4AIP/ ,R~H/nѺ*fpP=F$1*12Ↄ,&,2lƐv!Bp\t&a6.xPeAg0@ vmnvOLL+>yQ0bpf:R`Ff4,.JL,ʀ @?n~`@HPJpNP`4HP@l,~`(P*<POf J.g~`2Qg~1Lv hځ\@g4S@g*P P P P`"2)~P`P`P` P`P ЁDʄQ(*D V,Hbaݪ]ꀲ`U =_* T) TK-Pv@hp*pUp#0H"զb: 7uw~",gaJ_DBP afpmfxv/pP&1I*1/8ATp#&Jg:DLT`j@?`BJ&0U0_#Q?R .V2$=3: HD/j6U~gHN`y=lNuzr6J6ppr-Ax`|`<f..`.,Km S=21.B N,20,F#J~ !B$X$B:ކXO xzH$o2%/ .z6,SXOfV2Sf$ʒ0*P`NJ}Pg0@.l,f / W~J~PO`Cb:>`2;ʒd2a\p@T` AĿN&_:p @f2zrB =hrXx`p`J@f +D\╼\0Ѧ9ڕp)q`R- lJH4P kZpGg/,Ivڠ&n@ .pl;UHkqJgr$@^gjTZjJAʒ>Jf?pfڶA@Tf,޳g+FDu@ L:4=EyH5ƙBpЄp#>gE.aZ"QVNK0EpPaVP\|pwf(g2#Pg,,cf#PPW@|Jgg gJ2y2B<>b22$ēȠ] >j!0QpH(\2/ 0A/NϱCPݐȠKϱ 0np-HN`n-LnN`7锱̌ 0L,$f2BpTO`0v.ѼG.a{/ m|(_1pW0`Y~1^TfN|̊ߴFl, 5 P!RGB` p 2E׀(_~x&p 20BJ@~  RU$N`**|p2|p.|pJ Q(':/hyQ& "Q LʂPL0(`Z&TڰPf`pL&]@J~Px`pAr(4`"`l4:B12"[ݶp r-AކC_p0pJgjR%43WgNJ $VuDR(N`5,}Ď"6B.:|p<|p@ml0TOpp/Ttruj`p7$NL>f.p.` AfH2|pf=Tjx`T|`>`(H.u 0!|*dgp/`2p@NppDA|p0q4qL>f-:.@x`86"6``S@N~ Sf2J߮g,/1E"(Y6QXR2C )1.2~A G=:g~@$(Z6P>&s UBJ R &6QNސ*R@&F>P+ BAp!gPNXO`!0ԓ4POg B*B#XQ 2:"6J~ݶ:̰&ʒ!BU>QzN S` UƢp \:B,Nюa!|l Y @. <`gX$pT0fN|ԓJu0<6v@`d*qf8Q9qn".H2/pgq.`` H>|".3 bVup`f0+k,Ԕʑf `᱋~)0sgnȇԂzTHQ @(rO(g*$p.(r / TS`@` %L:آAH/pةp6 <3r.,<̯0rtF&=b:@=F0 I>0&_(Sh~|f~f^fUڑRH/A 4bvv nJgH.^YfH? |JU=_BgB1x XBhp!@:p`f(6(40. @f01Z048(k2 g:ef*`O1DvA!I p,$1g @ZP~..VΨߪ|.p@ܵmacsgB^Pg&`l<DgPB'H/Hx Jx `g$0/8!0!_?< 0Plx~j  "#!8Uv  `%Y"<6Ѡ?Z$NRl : 4`+&&P~2! ( L|j!P,)tҀ`r (. "ip0Ѣ-]耞bҿ 61;f P@ h)p*P IB t&/+p (H!&H/Y.j0U l KJGgތ `-Q LB Component2LH8:(|PXH$rPL(Ԇ (H-L fU>߸ =_0 J"L .,BG`(J8^S)@8RV^IP0RG(hm(&P(>(SGJGmJ Г&GQ~(Jg(Я(,&h І&1!L ~` rP^rպGn)GK8Q۲ g J( io%?p&> LB,Nў8<&+H$SH"o҇ &&L.4.@.J+|((h\DN0(^(`f4b& .+,̫(l gR ,gJ0 "/f.2 8f ׀fR424߸ fp,(rf @((~`R/ / V@(@JPOof-G"DN"9@4f6D f,"8f"0,.k.f"080_4ffH$ p(@`(K&k g. +N$e+6ߪeܞf etL`H WDIf ` L1  L3 $*Tbv-@BG" gP P"Kp"جA9A"J"2Nhp6n~:r,Ё0 @p0f .` r 0;SFJG0;g~=GZ0M .P>].n@B fUp<'*J_g J<"!# ٬A(pGg` 8 ^4~g͖`:^`U@U.^ ` "^$pGO g .OR@Xp POg )8'LI8г)`L@T #S$RJ7fRpn^&<i@)&RU/ / p+*:f J.j-|E2^22<F@1H"ቂς?/0*.5Jgz(<`H.V)CU. bF .&bF}$^ N@hw@&R,(֘gJ0N0/I1@N0F(Jk@I1V@4V0,`(A l9@,XOlV30p*3TO`pp"&H+90[.)0<~rFg ^ plNn ^/IAp< g?_>DOVE2Q/NJfo_HHUBTt1x ^0=_1?. 16fj0KihH!  ).0P/!1,BP TOg@G"X)"~4|:+//(>PxZl" *BH`B^.naVO0jJB`J0S(5H:pyb2٣ `&Rhp١F,&6~tt<ļ7@=>m zm5}z V$@f k P nE2`:B-HR=kV-qv @ Ip`J@FRĐºp|8 ^pQU2 R> GfXڐ^fPBn|UTXzN <f*0vf zJg~p?vpu,xj Go?1"~jf(x P~ T?6!੘D!|Y>pбP`R 耞@SG?JGmяQN\v *Hq~1*HP1^.6&("0ݐm6F`l_/?XbC#/XoD$0C[`/, , g,$0C>AF-hTPH]V7lw..00"ⓂRh$20Rpp{"+'p&Q&JFfD+N1`@+('x 4T"D"0 $P`f NH%1*tl,+4 ff&@kB*< Fp @@ &!`11ړN4f.T\n.u`zg2ړg 4|Jh(0Jfw+J YH\V,NW6e0jg({J(K`*T 2 X#-U?p*?TOdujԓ)Y$ Ցd`J(<Ԓ-0jZ2S@(DՓ/1PԒ*ԒID>= 228 p_Va'cJ_T"S _.` + =8fn&_J0gBJwgƐ G~NpTr U brRt$ $bpWfBNrDphk&.drq r &zr|Dp$Hptp$HjNkXBG` 5Hp&>E >GrJGxfx$_ w Rvp |þ,/ Nrfdg`/NjXٔf0.4NZL PO`i )_pC! _d Jfp욄 NUL ʆ ؂= $V.L U$ʆ ؂$$$$Z@6.~Iy Cg JEc:JG gp?P_n(/+( B (ByDqOבC3Ovyv╜PUBo5qP9x`p.(K LX"Jp|ë`@xD.:!%X@ dqfzrW1@K(`p>*PTV>h`-lBﴰk" jM)ƛeb&%, @Q1H>ӢO>o` ܵg9FݶtĔ+ƴ `4L^ p̄ϖϴțe̵$ԣ!" 0(d@imW0p ?p&0_g2EגB1D1a@v!RhO((J""+Ft$| B)k4 J,f|{:!&.*1l A,0bAQd1@-#:Ϡ36pjmܾPaݬڭA*2 @pT!Sв!R,\Of0=Ehb$So%ؤi ~|- `]`"*1pA`*2~Jg-FajܤkN:$A/0 &EH ~Hzߤ?< B1 Opf xg ?JG^I t:B3D/ I0?</l0`HJGf>8 XFBn=G BC IpO`<fW0Ԧ0`x ZHfv0Sf,Pr@f"/UHHk{r}(0&( ovKze`y$zHWh$| Q:(x K\p=S-kx `8 DfBDp@JTg4JlL0/ Ȑ/`JPOgRT0LЖ0fg`<PLGnϼJFl~{J@`0`<0SF QH (@pDg(p")H@ K"0pFf`|`9S)n815nx¡& (!Q,H&ɐH"҇ (H$Lpa %"j@LqJ!Ph` q9Fx̱|cJ@@p` 2Q`\XOxPc>'m BA PmCQ*LB{ TESTf2-1#tQd#U eʠ `Jh@{(@`y:qQ?(F">ha@f@ ICN#f2 ҡ"&HUQ/P|є p4 T;@Ja#`$`8&`./ SSPdX`\j $ LJHaF "|5|BEp&f 沟 gbq8i᧱<_ Fab-_fSfXZefJ4 r,ЁW @0rb!0<p"=Eb p/Hzr>0< Bqagx.?TO&JgRr0<ɮaTO@ܾjQJg{QJlg x TжC./8hNu _HH>_Npty*s`_pq#H4N=>lvE/QHY.W&. - ^:1vng"J:A~`C^q(h4Q :x  l"Bz EMDNf~W̎އP+"" fr \6S..5@-"AJ=."@ rg ng-=BP`pOε*/ z. U@ s0h[斀$RP..*.* oJnp` BCfb'9PZ@j f|0x3bY2# *:S!R=qX5%!{p~!z`T0jX1Xp?~!\F."g8Jn90JgnonfB`  / ^. lC1z޴M81Q~!,z$k$` Nz(k Ft!~8QzDQ0!z0#kJ_ ".{`"V(9@ .8Pɳ߱ӳ&j0 g(j .@j~ĥ2ʵ㳥A.BA "BE xP0<[`Hl@.,Q{mf$0,Jl D,o.\K./ N="_0"LC1wn$ 05P1(P`/`` @fzPp d/ .[._2JlP/}<_ `BFt* =GF i` jđۤ"Qtб$ܕ^&@  `,b.Ln,_N/N(@JQ g}}c|:ѺgJIH` ttL(.e /`:0v 2B~!^,)o&p m ~(K`I2A RLJf枽B@Hv rP2:0 f p))L 8)Kf.J'L)Pk!꒜XOtLv " Ĩȱ(. )7008TT0 :P ͶK HPHzTp99P>_E0a WR^FNR``N>P`x4Ry2namepD2A.PN^fW p_6W$F8@cd8 P/Qt.pXOnXl4xIƲR JSlp1x3:P~.T\|> `PNl@ xANjYP6"`4e@Wpn \0B3pp@fBG"0־NpFz>`F$P&az PHhPO`><JG"0 j"-v7)Fp@1` Nt>)0Pa 1r f@t0zWO1`2E3gn`0` 02 Rat‹d,q撑N(BFPnk!<AFD 0|o8.V;cP02z,p`fc1gᮡg{(BG0J@ 6Hz%dgPPOf0no(VN;BGB Ay`02@R >Aad(@ADprE0Q k`$R]"d0WZbfd>@u਄4DoVd^j$G>gRno8 Ʊ"`"i 鰠 )&8dR<0 M&w0찠'Y p`&t$@S%ln,'3qf'Jm(BC$B9 J2g!XOp2p0u-8!DhXOtTpBt𡤮^0,x!0ToXoo tN~ p(HR86EVt beD|3Ɨ4mtڗڃ p shP80L*q g"p -@0ثf gJ AB#E,JH`q$Q].4^ R(3pq$B!Gbp#Ls"K"nxX"_$@ g}(K~"#ˤdPɔ="gps1P#௲4+p p4~p1 -~м$! 8}¿Կ" U?</fhY(_n pV TRrR/ .<ѪpQf"U p R6pSf U[>1@TiGޔlZ˜|!ڜGf$ /f2|1@Q)N>1@HNVHEIHnp|1"0`80md3Ll f&k/80/ *0Hxn N0`z~S~0yxz/>POgGBbpJ.VD?r0NZ@B,0afw8@R:interr?uptsҤ=B fT2A pYJ0ұ<F锘Q*q7B-ny<BFFeBRHS>Ad.Y/yQ!*r ?.oF_*qPBFFRF?(_^ f0 @k$RZ80B1@Z`$B3x ЇRB0nb 'p]2HQ/jp. `U80\*r00D"Duңg ి/ Hn蜠 ,ng0_`Ҝ"yƔ#pQ!p("!\>@P槊&@">>"J`f!~m> Gf*!B0P*0QP*qp2H{xK>l3f/FqR>pŞ !o3@Nߺ>@Q3fu>AbN$@G>Z|F0<> n0/ f&F+)bZ>J7Ѻ" @SIfØ^YcڲurP<[vF^H &_ @]T ۀ"&uH @g p"SA.H$Pe 3HU~DzpʆzsVDCsVFQzpT \P^p6(>@p~q@ZNWBG f ^. ofnPJ0 !` z@.50% ]$r,&tңdriver,AAPL,MacOS,PowerPECץ. C`~8l(2M/Kb+TJ5Ds-֦<zextnьʑ0P/'SaH_xp0F}0..^1 "j(=vqxHB,@pS @A мY@7%51T3Vk"tdescriptor{mzR(=5ژ0xBaӁqЬ3spt Ij4FLps#`du.A";!A!BuFB.ND~q2xᤡR"Jp41ޢ$&0&dP*Sd"Devicesroo2`a Jfd>*.sh!x@zJ(4Z|`Bp f1!E`(2 x3:Jgج`PH'z`DdIr`>2`s lb0ʨ2ld:oRXqBw4@B.tAԤ`j`2a42gPJ]p"a22 9bxB+ꨰf 1ԤPD pB> @Nf"4@ق KXD`6! p"f vap PO Qt2O``t PO2rLޗJCCu>s"original->tG-treeG01SdrDp b|Nn&@(6R /0\́z.؃.#px/0R0k@ g&ۀ]\|"3r P04r`0POgq`8`0"|"r4z0p(5u24F:2f a6!`H1վN3bWXO6<248"461 #address-cells#size.~d8. ’iTgؒ/B/%jԉb ᖑ5r ~0F0:g:<+RDjQT.&`  4a8հ™&B~Bux@(@J>XOfS :n4 vxJ 0.`>F` J4 {g&VXOCX r@dְ~@vpQ*ö:`s0(W*,P,P܂m..`f-regp!Tr K{4>p($R &4OFG#ޖ~P0 T (@ 0#5qjn B&`ʺ>XwO` `ѢTf1R(L[ ()0B60Pa ԟ͔̂EAFnQm袂<c(G(kQɒ&@-K0d`BŠSf$L(:pNb9N3&!So`Bղh좂 `< "8`4XOe0+U|d^}@>rh4Ғz A߄bdNJ_GTpfnpK`J_g&pB8< ࢸFlwQda&Uh"@ ܸ6\ˢ*26htQ @(+``Qn`"5`L@.,Jǿ$@-Jg gj`*\`H8$qn`Q>Ϊ2H8 0|@JD2&k!(R>OD^IQB˦4Ӕ@gfhd(>pRF>̶~(@&lܓؚ`.J_6\3ZH1q @p6ad6\ʈj`5`+.0?t` {`XP A P>ƾ{V>JG"w0JX/+P 2PO k + !"U&!P,@>Pmac-iB`^K.hdh v>`L 0KXlV1l񺠰p2R"pzH Nt @$+`*I~{t &@)gj`@A|!Jf`r5r!~i`RnΆ`)lPZV'1A1YJ3R7p "~݁r5JgjjR5f &].:M0Ҟ<5pr5/012GNQ4RM&@'l0()@1X&XP!pciYsl?ot-nam PةFM Pv gFJ5g@/ lFh XLNP׏&&AJ@@hF@Dvxd[-tree?optionMSNP0NWNi`RUNpAp810|ȼdӰ ՔΊGHIt@ָLO.BC:CCD>DDEXEFFzFަj`b) oH08$O4<BQt?ԏB.B/H/y)qG/K &O/ g g.JL Nu(k$'L&<Ƃ LXgB f1'r? ` x h(NЬ/ (YD`$"@qD^Nt/0 tB*)Wp 3`d n_ Rr.kc$qA6eҡf~A `$ x Rr^$qҀ.f0p bQ =.t`6v.bxol(ppP Nfd sp,ce/_.n:{<.&0Hr2/|1rp00 Fef֑V~`/ ;{` 0 bm6p/)tPq̀{b"|JBB`Rr3BBb肁B1 ,eYPSHx"8$BzN6g{=Ct`-".zNyP:6TO"&H f =| / yPʤ(Kp` TOe⑎(`x`~ <) 4f0 <6r⨠B7cq <5rL`H p0RGrlP,T p`2~,BXGJd<V?DWD0MȐ}B(bfh6>< =0"҇`׀dNFPJQP<<Jg/ J(J?0`G0K>eGbwu%.tbbf +`K0ȗd/J`@HlNG*/.&J/XG/,.ʭ : lPF҅VpL Hop&Jf0`6z| ~΀ *gp ^sgr0`੐YJlB"E QP NԂ) Ws&YAPPrjx#xVvdr@0#L*|zR.nJg,~>/ N:pFXHt["`  PO~`BGBaJ,O>rH8v~&BE|=- P`@LANE.ƀpo:<`(VӰJ܇LJfJEr&"T B]~}TB.z̐NJPOf|PO̐䪪 X |Jgr|D,[J f|/ LPO`8v.Ix;@ІGEXO`SLSKcC I"I . `0@!@02YD}$$zBBv`8pr Jf&|BV`A @f/~Bhq Rnĥ I| 6"Kt`*OJg$prRIԀ` RJf &s|6x`'H6B#!z2<߀gR`~1n`x R lJf Mn8v܆~B6!v&J`xC!&Jgd`Jg`!SzrD #0 $!B` )  `H-P2!`pNAY(q+Az3T8/v3Ё2g/pЁ.Vﴂ(@2z&@ (@^{3NAz3pA|Ax-H/4Yf4+~0RRހH4j&D2.Ap=T / ~0 BGpD`* g-bA~p @sAXO>Ep jB8q i2D}5Ba*&`:̐TN>f2&C;(@0 lSJ f&wGf"g XoptionsG{8$AB Bp@*yo+pl^N&@nRݦ Ї*(K`Jp pf|$RRZP`2p?ЌR0QXSQdJfYB$WGKRdXXXLSQc L"K" . /Jo3T@[JQ`RQBL.A>.qq>,R*چ/N(RgT` K"T .o&GjA"K,HʂB̐0"@g(z`z(@ ݚp,Cg}.BJpbHk>B(ȀXOb/+V8̸̐N>\s=@rJ/ ltA\n/0.Rp2tp .6s"Xq+}aHvpJp+1@@@ p .qTszN6s=RZ>pBs4B8pʒ܂An>C *u6q{̐PR`7 @/(|1(@ A*( i"L$_*.̐̐5nRpJsR0"g ⃯dXjpt=@NR Ap> p PNHK>"AZ@pq*$pҰ"sXO"ghdh A>Paapl,=l2H ^n.ȠN4Suf`2 .r3)ALQ nBSLT޲"aב\>c &vQ@`u#qfh/*6(ӑasddrD6S(N//N[6fbkXms X]D/ `pR`v~PpNw kI p݁pЄ~؂Pp9_P wR&,:L{GnʰvXOpIF LSܨϺdfwnzŽآ7Ֆvz~PIOҜj &',tp6-|Frݶ?"R&H~@(KBD`P}k<<cšĢp qDDQ ne: g,>.Lԃ c@@ ,İRР K i2":?.Gk0Qc@P*Hş.p ާ@|q (H #_Rrqtn{> GR6/Ы(-@/ r.6Xf? L`bb)@;XXOVqЋxǫ^󵟎>f.wHŦaT@ѹL t!"+CP4?(@&l2c@6v*@o.A.8BW`0#8&J,Ћ(@RLVA6 Q1BUؓ>>&qCj/ F[`Φxstn\,kj8D2;Rf(R@ܦR.ƞ~⃨b\O`PXOzJGogdx5^8$@RJXOe$+XORjr1juRU`pR:.‶iwVAk(s RR!p&@~‸N >-nvW(@VrjР4f8ҾĢR:\E:RAH r^P!R@HT1فitzj@,rpV堭Lht_N\">-*~0">.100 @b@0odp`*FQBD<E`U0RFu0S@b 8<I(+IP~!{0z]dpT8t 0L(@#11К&SD,& 4K GFQ@N 'R c>&A<0,wB3 Hl8q:RՀH mHn @ jB>,CNVapNHn倰31.t ` AB0@Rn|-F0(AvBHxG` -@37-@(@~$҄4400pp`r/Tq@`xP0Ap ".Ȓq]R4(nJ@T0&p n0A//Q@X@RPdA$wn^aHnk~@CQ2Dz^c0؁`aTB/Dq0z&1N`00h,GA0^JPOl|`&L0JUn?36 P0R*RyT0RR0RPOPVr>@:C/6Z$WAJRTVU І0Ԙ@/.A .ЮR>=c_ommon<Va.!4F^0$NFoXm<$poef n 0ooBvp r*&tP"r-y@DPb4rzL",< r€p.&($ @ЃS*ʀg. `|*d4 ra0rtas'r` RJ1f #eq *1` :f S @B ` f S10zꠟ/ Ƒ` Jfp` RIRKgɒ `LAr`8(C Nu*1|BC,rL VDgސA _&@J*(@v0Tf0+lԐ+fv1b(؄!Ŗ гZpL 2d n/P`dY?x̸T,0H.!@5`Ó (h,,0ǐ .04H ~{-J-lh`8«$ &(K (5 20f  ` W20JfvaƯ1 ^f~D0t`#P” Z@p fU> `&p,`&)T]K@<‹9!Z (eS.0t:"0UƑ Z>+(Rp`$h@81(AĎ܌*@~f \P, SeT81bJ0;N0ߺ$Ohh4/ /z).;r Vf@WJ@p'V`fuPV|,W | t*lR6& &VfF`*20mf ,Jwf2.)FXmd)`09`!2Jg (XO$l vqa /Ncbr+O ПA BvuFܪN!jGD F8 2n<۳/ v4(QV4B(PVh^ XOfƤ&% /,<,+%<*J$Y!^"`f"l/Jӯ$HN:/)0U0C|+/%ao.<%5;At4nf%.J"rgnB@2N$Vn#"I®,`,BWf B@V%H,ICC%>³pN#rQP$Bpstrp~x;_M__ZppWr/:c__\p]SrXq0_t_\R@.oXrbt*o>oZ!ӎҿYuc$|oo`Y-瀐iubozu& ޥ& <`!>q!K'@T x h4(h`(lTJTf)KT` ^uTp;.u@" g&J k EMDNfqDxfp@ f ^y 2qpqp @{~RPz(p pcNp.br~BG&g%/=q$Nl`{>ٰ=G e"t3TJT``>p(vX$>p,ƏU\^bQp0& `@WВ]4j|dPLp8h>_$.f-.`h<&IlxTP`r@2prD䯈tJ*((XHʟ|xLx2L$||J 2)PD6Vvm0ln Sg UgF`nЩ `fp]`Stc;n]Pf  UA-A##I! PkD쌂0o­F#ƨ X$`>. 26?`v_6PF>i9&Ӣx  ` .V01"bus-range?Spaz(J@POfBx2p^H/m0pJfVX~bwrite-pci-confirea=d rtasg[x~ zj0q F!VNS *&PP `!bЀ0;N0 uZh*P -Fp X&ub8nV+#&:/+3VXzQ&txz//// /,f$3Bڐ@vjb I].7&}dP/ p!p,/ @v"JB",v!f&` G.(L#J_Fg0.abanditnamP0"G60<,QN&>|,p~aB.r`Hz(?NNR*0U*0"PP3(>ffJ0Z0/ HzNP"B|PV43PP]ڰd>Z0xG|0&0pf2ߘN"}D1N>( Jqg>p[D0V`vPtcf pJHx4$|K*&pJv54և?2?q`UpPxD2Vv2ҾxO04xD4@`vx  . vPpV1JGf ^aJg3O0XOB;p0")device_typeD):.<.>`pX(Wp`)@XѲPp0P`P pr2ቂ)Ab"P)v7pP rfdA)H$P`(A`,`F`0`n`4``8A枪`<.``@.``DA`HF`.`LF`V`PRPbAc( cpcc"cUH*d02dX:dBcJcRcjZb`F`c c!a` a`ꎲ"cIa-`2cA:daaaa^dZa/ $@"tBpQBEBFnƮ ߒ(U1 0Oxr<L| (BGf`8 <[f**BCp ,` I SJf/ DQrrP ^-h"AD|_e!(' r/v2p(u!uR V&&F*_+,r*tM,2 nP #address-cell#sizie"8&W&8<r!/$@-j-n\/ jq*;Ю,.܀/ Sjl|< n-H(hp(*~U1`.p"4|prPl" 4 ѓBD`޿n&Jf:0LMJ^|$P P6i!BCp jBДf1H:f0.B3z8b"2N,.4и*0`HD6Sp.p*04|ԮJg$zGvt*;>80еh08ܮ"FRh0tʞ"h0u""zU.Ңfh0ޢU""h0Pޢv" h0Vd"z-)`&h00ޢF\dJEfzvЌNҖ8q0o~/ 40UԢБ|x Η80pf~`pڰ^0f%~,4! 0tD4Rv"ҢVJfeb`0q+JD(T0Qq/XO\%`YchaosAAPL,343S1126&MOT,MPC106Pmodelmultifunc-`S+^Ʋj ]ւ~0h0NX25IJ 4<~V1s9^<ϳxؿ^0f`*,ܔ"|::PD\#"r.JF(Tx` p^>qv x#`S-treP oUO.00Հ` _g<]O/80HopT0# g(o" )dg @ ^f ixJ(fB/HYO/ >8( P \/UB _WDo0J_fP$~Uvp|9>bV3&PBY 0<@x "fH/N?zfAxC IpW|Q$V1Z0Rp~pN2>#d Jlo ,1$1nC I_BlpP"B߰()$1f^i@)7P=|+p0p$@ "> l)vB/+0> >p0 3|1p@$JgR%0`X1,j3!TO?`>J?^2J80L0|E"J;"CPqpM4 bqP"z-? BG*P8~0PP\Ag><7 _JfoA3 ޚJ0gU1 <t TO؀(P f$q_$(H@  x`4(("oA/ Jln~Φ vB0p8QQB0"BR] q(aJ0&lJg7 EfJg -Fz|`b <˨0D0rHkN& > GR G,f>ND pg^_pQ%ʈ0!9jGІ'&'F EfOp/BX>+P@(JEН BR$~A 匆AR AJfw `4d tpf .~!s%|PO )P}"d L,a*2p,D4A8 NFBGq&6!nBA$k*P*jgr pPA0g$p0\app0i k3TOpk f-K|PI` -1f(P0T(_HJf욑S# ;iN$z0 POoB]Avg jv#bpzfrzlr~fr~lpjogC<3J2j0*1"`C>0Y `p'@2*K`bJjd,Dj($֠b~Bnx@g@0#H|rPQbcIpPmitUp @,poA4زX$^i T0POgpoA2]^`i^`)pfbAQ/w0|/FcRZJf6Porph pphf f23 Lj`4 p ,DNuep#w:A*BwE/ PJ0쒐}5` :=E.FN4EVq "A"K [ نb$ s,DepBG0@etbn@0;N \8Tpېf,P`d FuB0`8~02(H 牿^A9A~~ )``~su{hP8$L? bp0g@ xC?&R`&(SqT/ / N!zJP/ 5&Lhp& `W$&T\Jj PRA(K@؈,Dx~}-| NZ,DƗa<֑0 x YFR BV`! K0`BQJ,`r$lr&p'jt0,JL*/A ""?2HjHs0YcD *tplg @` hr2,mA>`'l@W`S`DpN|4C?`ڎ6:%xې 8{d9`2+ p uƙN(? d0CH,D& 89QmF+E!4C^tݒc p0TB-Pd4.e4 :%^ X>fpkX#p1I@ ^` ,p=_0i88$ې֑ gZJgVBFp&AP(H RrPfHҁ ЀҀ4Yplp(T@gS@gW@g,2`:Pƴ< 2(VSGJ/Gm6 w@L"Kp eGQ"dec/kp!*&Y__d j#cmfa/ x"~#:*J/ETOg0-HR"Ё>"H i*"H $`"#HX6:gn`:)" P"LHD`V\ Lqe<ҬaJA ^:g Bf/@ p@@`"Tq-|p@Pp-@kY@;/pz!`Jp"B5 F6d/l _p*0,pr\~穀< 1mixr"wx(_?@~`0 0 .f < M`KT' ,D\V00 .GaI٥4B@eVpBG"<0+ j fL0P0n G@f `fx!:Ua J3gv1/v1p XG@a+pܚa+f<:Xqg@ Bx6PkncomN-0>P$nB! 3g^ 4T`-_|B1z"0)",#,oP@fP`1`@g2;w@3siftN,r3fpDxO@O,4EJM8n0F`: .g0O4p>D1M"(@lti! > $%VB&Pbx(/(#"!0f*JkFX"0=%1΋ȿ<Hς`@@|>M l"f F:^l7 f"R"RHC$""+f"E+|E հ`> HA#K&A?"K 1 9|XA~f`|KJkm0 jJhf8֔/ ʜW`$L 2+:<SFJFm|A"LY@|g Ѯnڪ ,@pp2`JPQʯ`BpN2=|QB> Ј"AL0HXb0HrrfzjTn1'K2( P0 2D * P@u/л0 ,qual Pл``g/*"hjFRD?H5 ۠سX >\kRp;krٸE"~^1 hm0.L0Hr\Of^YgVzH g__Exp1to6RD yComp6to1x33yMACEVersionTwϋ^pfspp8&H gf)K&pf)@9r)ARjpJV1 aproc?<,PPg$*T.;N& f@J(\g(B.Ѿld0`\lt<<`L0S@g U@g6`00( GfpP plAPOP`|K`9G:t)jcp>)l49S8}:axE/@X/h)_ f(Ȗqpm8T PH8$p*@v0*k @np@0;Nۀx|J@ p0*?jgBjA5jPO.*$(* I(G(<< r⨿ބQ%G$%iЏ`(`BjߒB` BC n%^`t ccjdaSBG#+XOg`g8SglPP )k1(BFJf!ܰPP)S ~$K)j(9j>f jj"jj(<*8Jf A$!L)R F"K9i0"pl"o*b$ij"i"i!z u $)Q Ϡ!PP@l l12PPp/ /,?, 00"p <0"_R0,cT3JL,(ܨ,(+9@ֈ r_d810c./ 81p`_P"_ʠ6N4`e 1Va4Mrar,䞠fU7PP6$ Ju2Lxg|}Hlf4(,_|`_p?r/p:tDEl,03Phgmut\ JgQa7`*=|w.ؐN>POfS\e@`x}pATO>WоTVfZvx`vq PTO`0^pkp"pļi zJ_gRJSf  b*@UQ` A)_6!SM@pM@o$Q^V0N4ʼ|Rg twos (`M`6A Rl~B1 e$}ajG#PgHk^n]w@k"n} "kh/ / / `N"YAdN|X0J@XljH2e m-HJqERBG0+ p:]@g|b|`(P (}g,JgPO` Hk4PO7|H@>:p"g@ZRjBkXfɪJXPP"*.`:RH N^>8dJtφؚ"fR'LZ Gl~`1~JGl H DH <Yp/r/M*`0pr*㭠H@<F *.0HJ OLNb(L(E BE~| .g  "„WDHC㏚ȡb$TVqpxPgP "$&U@ D 0A.f"p`*@p/Qnt&| :` p*OpTOH)ܣ i f$ f` f=`KPf Q^b&.p?p(@~*P_|z*P®-AۓQ-d *P".$-Bt®vRؓ`@0܄pW*@Ԫ6v<FF`l:@(?-L.b0p*(_xP @g6D (D $D @p*6Jg&wFw P @Qr`B,$RdB=n P 4$`>g0`P 0@P@plrW(HxP U>? >`LȀǁ00>  +f0ȀPȀ fz$/0L>aCBG`cq=Gjt VdIJ/:`,ad10ZܥM "Lp"@"Pgrg~@p&Up?@?,;0 / r@n+9w@ l 02A`L`f"g )|.1+@5,0lpӀ} ܺp p\*$R&@$݄$gxlcomb$z&_ .l"p"LXrSArr@0=9|=]Rp@}@)LVa"$9TOfP / T%Cܲ^q..jrQ.P.PH!%d66hH9:P v-_8b1kSa!nJagf=|1`4x$Jj.Yp! U^d0jjMT4̒/Ԣc (,F0,(_,f(Z rLG7Lq*b,b\e*~{>%p Ї:uM*)t"sx"ft0x dZ"|vqtas j(*54%2gдAfaJ`0Ad10H@J@frّrap0y!ꡀ;1?RT t 0G6S5\6a0f! v``0"> 0 8T4c"Epq%prc6 rZSF>аJbp_&r2`$qp&$BG 0!tdU3d!`)a)k;>*QRnlm(aQD":vE!*:bWPUd\ ;`*(ԅs, saQ;`|0h"2W(f\P(~ `";` i"K .ۋy|dJfbm0Jfqbrr0 G,O$*'c |0f(r`Sf`&&L|.Sf&ëÈ L@=D:8%53s1@/&-"+4)\'%$H"!?x*~rr| E' K . ) : _97TPvFoJ&lR8  o`QB4'ߓ{vqSPc_[WSPLIFC@ΰƧ'~%6C (3F%6J %6M%6P %6T%6X&%6\3%6`A%6dN%6h^%6mm%6r~%6wp%6|_%6M}%69w%6$q%6k%6d%6]~%64p%4NO%6iF%6{>%6^6%6@-%6 #%6%6!~%6F0(3lmD+8FAUrd[t&ք{֖Ji֨xWֻ9D1Mk(3'.@~Y(t1eqoQ U3 ?%5 /f0 [fU E{ bf 5 TU =?p(3% ,TrEy%5 5x7;%5:iŖ0(3K=%5?A&?BiA(2Ep$%5HUK=%5OL9%5Rխ*)%5Vw %5Ze%5P^m5b[l%5g %5 FkZ!prH%5#8ux%$zJ4%5&oِ(&1ٶ)1+m1/-1:/?2E611΅&4,1m61~k81;z1mĕ>"1Ʀ1xPL0L@%tJ1'yZⰆ)iqpy{Apw veo0 Si3>Bb5%)Z72S:?L<MD?\-<BlG2E|a)H{s KhaOIN R*:V  'Z^":b/^f<2zkKLQYf(ui~@zy2a&@cBu0k#dz7Qt>nC9*ghu`LpY HR.6JHBb=5:}m`g`f(C*H )Eq .~6P < 5?a `%F x2 qO? &%N( u]4z ld }0|( i Yy4qA`; LMv qI: &@J& e : C zn~4 Y3M _gj / 8?|c `tB&K*" :gD "p\D Ti M{ Hvo zg SG Q"# E#Vx> D%Aھn L&TGa([^*uՊ{) ,[ӤLjGF.UѪ:0fϙ|2mk<= 4-qIb"u7.݊?#9[o'%<7e#*'I>ض|) AI*DY .+0,GK8P.J9w}0N@! O3 QAH 5TUeʫE )U7Y2K :1].Cb "11<鳿KG1L*UK 4ߪkNcBQBrUBtBY\BE]YBaB{`!eB!"jjB~$ o)Bֿ%tBXNEH UmT nf BC8:<`68(:(<(mn &n .S*n SH@>Dh k0<`02AAIlH@@k" @nt`:n](r`0nCr`&t`"F@n`x` `t_8BBد<K<,"5r^20@@tFMT6Q6:ELrIH@@E6aZHZ*<A6S5fz<01CTfTNu53NV<<:|><8|BCBDBE`<:h>8h  4hr +-5SrAFMA0 FA:F<8GG@p@FM@2 F&@0 GНG AG\GxӪ+HeoyG0°StAG02 Ak?4@Eh:`E:ЀH@8`$6HVX!%0&܇!9Ҧ&8Ձ/"/4/F/X/H\Xj|/////8]5<0׆1MJGNLRH L 1'JVf n ~ {.: 6 :L8 4_ `8P54<$>< SpA@=@IpA@IAC2Q*G0uB0M<D1Y83^D8!!:@B2BA0LA: 8BLE@I@ A42.CHO_"_4_F_X_j_|TCΈ___`____|Q>]B<0LR>@H1B ZOfXn _/_"gB g@"CtHBcbfAg"$HBHABHAHBpB`xg dp`lH@"BA`bXJgBN& r.NA6 H@HAr`@BsHAt4BAЂ`,6g4gBqԃ&HCHA&BBBHBHCBC҃$&߃vуpw zdBqB pv pdvJkSCԂ[FCJBf"& HB Bfҁр.N>HA0?@N.i&6q2eu"p(z$& 8qBq0YpS[pdh"`dfwC!& (QE*-AKGkL)PUn$Zy_C^ek~erxߜwA-16p4"x"i#H*CR rNb QɂQl Ndd A <_Gn C h h*hH@Nаd$NJ@fBZsH0/g$d W\/N`/|o ڑNΐmԑlB"io#Bo `?|uξ@W^ Np xΑԒAd A1T0fp/@|`NNBA dN _.N _2I>.ޯ {Ȯ2r >:6NbN.N6D6$dɬ& iC//8hnJ )ơ^nrN*N(NN°FNdʰN"ְhְN)lⰢNͰNݰŰPNNH NhJ|ʯvG/&} "8 $ygUNUNUUNUNUN U$V c^JV B=&N^ _Pddn tGa:nNu{AP2;}*>]O/H]aDp[ _NuUV/`\u/ pNuS b H ;N _3@ҥ> Bp f&"0 < 0?NCQP2| p "_^8Z`2B)"u8 "g<Xp8/R@PB\)_@)r}A@m n ;WJxqA@$ g fp;`pP8gdx"Hx f `T   pr8 >fX60\ (6 8Nu lramf ) `5򨐮fYOpϫ pJ8k8f("c)瀡" g"P _SA"B\uH\P/0Ygp,BJ\$H| "$݈xƠdP"#|4Vx%|aGvJ0g 30 =bO0; a $:}b1\`Ћ30A`T s0Ng v`>d``f`.cUONg"f`gf f6TO `dp1@&C2%k2wAb&f1|/ C,PJg֩"_%CJ xk p\ր:p *xmachSBfpu?aqZm%mhv~_siupgsz6StabltvsyUsL`Apv6SprocS"kbd?9Patl rTqd tDrou:vmrApowrtpqqver/Ahd>Lsltq9.tmgaddqa/uxtlmetwmisAnKAshatopfwnrexИfs3prtyser~tosttstb܅qdrAfon~݄scriFbW2 #nuіS:cpu݁q,:p@ppcIq: >bbmqAcarlbug>qvł "_ve˝vrsrqAmicn>ico̵tdIAe{dttea7tei<6bcrMp΀]tdfl9pŁ5sh<ݓPsgp4bl`Nu>H8$n (.(cT&P|*,S Ѕ$ Ѐ"ЁId*`c,R`$B e$pLop^elH8:. ,.pw&@BG~rEt4Jf*Jgp ~ΐ:Y. _cd>spg&U/0:N T-PTO@|8!10F Lʳ=l* @b&roЀ$&'`&HU> => K0a>qo S"Cp\J@f9S*`B"T Q"S"MR$҂ .-Sr˱ҵt ItR$"J"N=_0ڤH( /> GOPf>6ư>TE0U 6/p( k/ ư(cJ_ Z ~*bL,8b³AΑ `\~>.tRCeESqʽS 0F *^dN0*{:cvPb\jt /8 8 . \$  :%'Nj`L  0xnd'(>,ICN#icl48icsssjmmm8Y3 0d02(t٢W0/ "/YO@C/1?V# w0Q@_0H/Hz`&r`2/Af2P0(goJ1 _Hz ?/NV#k [`N Vĺ Ur.R`i Tʺ,$0(Nu1r/_ PN 4$C` 8 (BgNj0 WO/ >Nк8NUu. 2'?;#D H$P(<1`p-!a/t?NKx/@DW.V8KLH1"IX//0"HAY 0QFfX`/` ]/ Y/ _p NzPp`} ^0prP}L0 PJP0`Jg `0o"pPP(U`\XT#1P1"_`` !I00B"WPNUѺdh2>{z I_LA*pTAHkAp GY@g N@*N@0`8H2,H0.H4.HԀ,`<~c@n` @@`BFpOGSO@@(@W,`4`@fDnBtC.`>` >@@G/ ??L̢t"x/ 8"i`ь"AzГv T< LH"҇ $6J_gB.` KHƒDTP|RH`Bu DpA vG0 7-h2(=h6,(K|dpj@, @RDgp<\}pQ R0 RTATO""~Q(8@P"RT.`R.J~QPXHg"(̰$-n$ |xl .` @.eήwJhBEP-Qd Ы JgQ8PRE <g0RE8UF(<ȇJ߄g& vagJFfAhNaݸTbSFla㏯JfĈlbTbSFRn.SQ_lG`WeTN`Je RPr (0& r(00+k f(p,p f Jp $}`i JfSXXTt`[E6ጠr~ p,T&lvrjHǾn6HЫJPOg&HNߓ)@Hp9Gj lzJfXO`YGSFJGwf9GQjpp%z@XTx`S0)^B)dA,AH$p o6n^0 p lpF ,eΡXT|`Ybn5@qH(00b@ HglBp)W|HbUr"p&p p$p guR,\Q"<ˀ9A0 pv9h)p*pzbpL"6 z`WpT"(H f=.` { TP T!7 r P~P гXTNѦnz vPI, p$܀Gﺛf|`(` G ` XLn=|@ DXTl@sTvU~P(w^BEi&)|`/N:fXLXKSFfꏸbQj=EZEY?. { IRZ`Ur~*P]`±(0w$>TO XTn`]2 0Pc`I~P P1AJ~Q@H5 J8p_f T#hᆟjp J;]gAa p&TO L#,IED08:}&@ F&P(s Z.JSg*$k~ g"Y @AJg6Jg2.<@ ,`$ 5RJ`rpH@^qJ GV@Jf/ KK)HaD>@0< >Awp!40bp40cgE@䠎J}G,ng @NH`3?tp*I K@W~*`cB`¥d萀bHu@h̞^oJ~gp~ PphfBF`@`JF̱?1p/0< oTO`E"f=|*:d"*V"|^"Jf`,~~0< peN ~N XO "mHa%Fu "de̦9_l\r rhQeHbtR =5vQ&@q@@^6`J P2`2@t9E8L!p>@pU? RHh"2?@;bU>B1Pp8df2"U  @P&Wz2q4B{F`.DAph)J~oVAfdf. Ff qHa` yB&sPn3} g@Ey@^P2=k~P:+~ o~ // ?p2A?8)K2p#64YzrNJ<>prpN&@ POf0VGV@o>WGo*b WGJGlI `UPDpprHpz~ `z^"~`~_ 9E\`6r8pM%(HźoE/0{POqsqrp.al(pP,LHҀ&0Q@9@L0PaPpflHnް߈J@XO@FJXO0> ?N Jn\g0JklB-Hi@ n)0<m\^ԀdgXN-@ @pdf (hh`=$` g T h/ P?(b1?t`(J!Hzjr/o`p8?TKJ.j`^n&4jRPZtF@RJ(BU_԰ ` _J_f>Դw ,`(L `Գ?68!|@E7FRF7`8Y)(_,pzR T(h f ""@" Q)> P PG>p!@2 !EdEh$8:* P%PP%@FEUߏ8qGXinGdl?ph bpJV1 cluthјߪP<A(p Bh\r7gb  _MP~"@"2?f h P&~z(m&$*0@ @dL ":B$J'JET,!NXO~[`J g p밇@RK0"LT 0ƀJEgc!n!P|v!\`JgP RPLpp=A R"* R"*`'Ҁ⡁-$*$JWhbH LTP"TrNn)# &p$r8$r8>9PLR߇l@SQ AI.*d S4"fg)ABш@@ ` SIJ_fp@600R"`zJfN܄K)bb`*XO԰,~`z/< @3 ^ Je!8JqR@p&l~ SphfP] ``.Jl00 R,zuppnoAHǶA_)pz`l fp`n @$@ POgLQmupCG_`.P2P | f/ bg=GP$HHRAH . N>EPVCH SAI  @+J@VbUcDVb*VbVbVbV`c@Ft$7I8v$PTAP gVN٭ YEPCP0|& "TTJPPI xRNr<RF^   c| `~&@W"TraSO T}bҙdI i(.(S '|P,0O4+r\!p@i0VԲn nHzDN=_ 4$F,8>H|B@v0+<+8H,>6 "ARf.-_ U @) rRЁrd߮D050)DC2 IE2"JpK"Lp=2kNۡl2 P?CTT֑rvаx Hf \fvH9CfRT)H@Bl@Az9l6\{nȔH/@tP g1 @7B>@QrQ@"B!gDC6QFAPh)K~$Po lDpff.0lZJndg>N8$w@&j g5?b/ H;`<`zH0!`(b0!Ŀ`p?˨ Lj`B#L,eFAv eЫb[FL ,0IQ P>`(PPF /rN,Jg0` 0SGJGnA#E9-?`.>{aMENU?< 222KH &@JE]Dg0F@? x0zpI(@BGh FgRP,Y.o _/rT/UJO }fsPFg(PfY)"pnѾ@(>P:pIJV1 aDRVRLa:40@> 0@2/J1/(hP @f @p(2ؕ@>E@JXOfq(H8KéoJ9ёV1 xw `H@p/'+ޒ82+`f@/ 6` 3iRi#k'I=bLpp'@`yS f|dҒ( <+P+`(TPlfl`0<=(@H o/9F PNNP@b5տzԕҚ`+TpLg{p fvv;/H2 cLP&J@gJkg[Jg A8 ` *K R& W 2WGCY0"F9t*4N6h &S`&j`(Sg Jnb@&Lh g J9=qD_! `2 &BpL""#H*2}N0(FA@Y`g0<`80fBp0s 0pfYP{\AFp!R &3J %C5ՕQ8Q0Pp c.QdA;D,Ѐf9ѡX@2Q / mr?\R1\>OC:g(:cbBGHƿ/H/0BgЪA`^VQ7`p_R.vFkNƶўPROXO`Nctd222P| `gll`b0B3./[BPtU7>@qp/|(_@Q0<hY@qlGo@QHzN', A\cN` k`YP`0<v! f\&S fqP/.pszd1zhQp0g`N`@*mcf_` BD$/ LN2wt8Zp8rwfpOSICN &_b`໠&.p$j g. ")H`$ S$l"R .npx @^!wLУ`n_`#B!@ xڄ28&[knNS.Wl v!fnd<,t Ff ߠ^OPO`N "0Jt.ހJf~`|?` pH `~'EU.n* Q/~1@2乬|]/8 g?p aXNuBp@H@|Nu/0 L@2/I@_AFƄ"xC?6/8hFE"oAt"VOra .NuCBQJ8rkRr` j"jr08g0jp(A00 00 O(fNuBxPO"0ra//qf.PBQOtJ_gUO?<AQqpRags=_f pzap`$LUO֠H`ma0"_?@/8fXO&f4]f,J8f&YO/t/8 ިsYO$YO&WHxߤ / ٨s0 @ Ka0g`bJCj0`1JSfy(p g 3Jh(gBg@YJCWTO"KraJSg BgJCkyJ;Pr gWdo,tp00*ޣB7@f HdN drNurh`BB`_H x&8j֮ dv./ p_f>c8 e@g⸪(* "]/Jfʊpg4%|aP_LWNFEN/8/HhX/POV:U-Oj*\l/YOp)ѩ ~Z$NFE!|X!|퀬p\x8@@8I"p)r nЁ"&H($SJ8 gwQh /a}2`x(WN p " a}PN" BԌP'/ SB  `2`0&o J0o Y@()p)$a/ N 'B0N4C $Q RC`""J"Q )t0 @ipfJ#j`C K"}SC p#p)L / d>`U`4#`~9f P B&_8#`Fo@S X SPH0/ Pݒq/?ptW _Pr$ _"_"Q.(C 1"wQ#4B `H@?AA1XX00`23 rm g Af20x\,Pp`p`쌠yBж0pp(12(hl2P6Po;Q1A2<a&_PD*PP2 0! (og"#PpRP4VQBx DLa28 DpRPlJ@ff&Np JPgp "RPNPV"pRP>B(_" T` cK,/8 FQfB&BP &g& Cfv`R4 30CH@HC,aXYs"@ !$}\H t S1F5-n \ hL!_avq0,f6Jj WgBW=W]Pjr&b g\r p2aB`J;/~l $  @Nn m}"pnUe121Bg0<LT&rwnj\a]NXOA -"paJ DPri@ari!k F`a Tq h? @QJg TOp`pj`s20A4pzPrސ"sa ~w`x~\ n}2&&@ GSqJg}a4 fڨzN20Dg$Q&I`&Rh g f$R&ǒp0ސH0A"XB&X&BPung2&@ SvT bf0fiP&P fPx> =`$Nu`ޤp2#HL$?A8~lPpr$Ђ҂ t0HЂddU۩sj/_ސHF>:fJGfpC I>f<.`BFzӠ|=Fƀ>LȑHGe:nU/Pp0pcpD8 .RtۀVyд/ (NB~`lh}Tp-H IpnP}L.Jr1Qg6 T:02.ڡbJXOg nY'q}vJfFȸ qB0ȂP?V򒹠(B.=|<BUCȚ6$qހ F28p$@p/r' N >2SwL<Ҽ "$H POgUߏ> z R0Ypm(_/} zA`/(p/ N&(p(= F=|wP=|]T"VB`<}bϔscrnn(_?U" JA΢ gp(@ f N(@N Lb\b8BF(@Rz${&Pk4])fxլXO< tHz`}N@J-Ka^s"@$ T"Sؠ-IGP" .(K/ ֐ p _pNՂ=FPqPڲtt0,H2+,02H. L"LҀ $ln 4lp` JG^YV `0y`")z)ᐁL|zqiQ6&nVrJf > RPpH.8P*RBF`*RB4@.r)m.Ht{?{ѩRFFb(>RG`8BU۰D;F(p[P0`{vp)pl lvCnn tgJifJg$BAzARGGbTR02S_n:BkCG(y.-[`VU'q]B,J3g(pzhPO` zpvEFPOZ4ppWY(D@P躦`H&BG`Ќ @pK0nBhnxo SȡJ!ԠC$TXz(pHqjlo$쪊"J"C!`7HP"ʗ!$p!Vj*XD!2q$/!/!/,J)]Yg= #D`#03¡HD`3$ҁ҂oo1g`(P2#`1/x1+d42Fޢ$!!R$!ު21`⪪܆2JO`1*\Bܪ2BlO\OҖNB1ܦB:f)`:B&`&lB&`f/6,0? G1fF1f@%fB&rQ$&rT&TV$a T/8% A ql T`S`p8BCY*-_r :߰0pPOdsS0f]0S=E `ᘒ/p޳0`BG-y`Pꬠ }P|#h Z)p!j0\b``..b9ЊaRGpѮVx-P`E8b `f|6`x  @t @$ptPOf6J܈Ъs  @|!iPO g t/zbrhpPO֐pZ0<аHpg :prda>$r0RwEXOt(J&c+EbLkmqb(Hʳ=_re&L`*a&`KXպsuG ur2ȡJİ{>Ԡد"LXT.:2.H}rz9ZqNWBG.Zz€́N~)TPp8[<`B"p4lK8TzԠ` p*H <:A2P6`;Pdz04vufR(9NHB`h <Q(3ؠ, "|ЀVd`4 ӟ6z!`6*,!?.zҨr"N.^dۡ^*1@d0Jw0f0WgXPPG3HkB1?YAk%A$NcbJ%֠-gXp/+F!0< `STO`&r0+wk+zW?^TsZMug&a]Hpg.f ѿ"H"Q"Q` eWePwPWzp &0n"o #+**(ab-('_)K)1f{)@,tU0t4p Dp*>g"f)|badtt tttBG0ZBۘH8$`.$*. (@|" gDX4bD/N9T fbH^*R<A`*$v<`*,dvXO`H=NBJcߺcg4p ְ0p`J@2f.[9z$ }  g/ N:R<_$(| dp<avpc^^^0pV=_$DaveYkzLd iغ["`zoBF jV x&hJ_gX7p:%1=k0~ k$L/ R JXOgtJf)|pkd}oP,з\ fgJf/,t zfІԏV/R |gӶ7P 0!)e;b2 gn?N8l:P߶=Eɚ |T)(/X6Hz:,J8uQ ldjА @dp":zbv0Dz`HpgZbpJfu@pb6\\.v0J6d<JF@9  \(7@<4 "r~ $H,Ԕqt>sp N{=G (Ps7 R(b!f pq0</zb<v >`.5uJGgtWPF`/bŠ&@~|a 423c44z z`c(_`HнtfJ@n*pg"@ -Lr z VcJG !N5ǂ> !sp}/af~ Gap.N`F#S`$z2"'@N"{Q@f b0f0g&v`Hpf4 &7rp*\s  TOfRBFp$@*,%@"#f$L-g Fm0_f&J:Wnڞp"(rp!D"0<<g>J1'W^b!Vb+$/~.f " 6(xzbؘ{g&/p :a%Z$B>H`> ͆fBu>, $DH2DC &?pLD%TIA`nm?N&=1[(]:_\b!zATSN"x&@!SԠ€h H ;g8(:@R*(,+ gpp`gBGAB 2]R ppx"JpLD؈N_0V6j__.X4JoLU|Uu!(@~1.uF&4; ?(edaJ&@ f.p /֔P<{`'@; fV*JJgDJg>>+b(P, g/5P"Z(w rI$0SGJ@f4 h8fƇR0y3(y&Py$u z /M p y2BB~;NB ~k^P1Y*z ~tR0|J6n _@\[]㐨ڑN(aHfBF _ P.oA"4/ |Hr 4H6A1ÔB=?a`цR8 (bt԰ RIF/pbtz>y=np zN5qq^ R0HeAgBYNa&_p* R/(* S|()e S #h*BG LBHBNiy<t|/ _0LQM!jABhHxՀr@rUX\h~ gFrE 2";LA qRmBB TnU24hfP`.n< ~2<p&LA#  -N/ wNr* Du1q4@K8I_f~4&q (O: fNvƿH GG-3sxJa(PFl4Mgq^4Un4Uy1~21@=Tbt7Vn>@N_pz J,܀@Ap*^Vr?"42@qNȆfVj9 BGIBJ+``J̐Jpz`z)Ek31^p53^p 2JZq Lp n0Bp(f:p*f2r,wf*<'l67l.:JpW"/ Z , pf `@Ip@_JGg NRV~}X"LXxeG}^`?XOf(/,L>p>/ tB`͐^`>f~Tf >.4?pRXgJ0pސJpv'0ސpѾWphJ_gs{YAB2iF؃=_[ [RsGBp,A/ZFz4zw@`T^`@fNT^d>l2p6VKpUzr(r2zrj"p "Q2 S&ֆ!vNs`E DxRp`, @e޸+p? ZR& DbVe BEBG.Dp? > RzOJEfa.vчh:/2.:!PDz@RxaBEN`00~rlHlm00b 7c,Vo*< Ҁl`Y@?`?\:f <4JgP0g Pz@Dvxa0~ ,YP"a}f =@$b8V@K t<"TN BS g8 Q2g20F@Hи @$PRZ"( \ 2H6_BB0~ ,OH}@v.3fn)|decAptnBrB|z@ I+p zr4{b!Ή l1nGWDqzz#SxΘYB%rF_<dF /4jvBjKptNsIPjc-R DT0VThXg 0<TOX4:2qY 1(_(԰,`0RGYkp f2\ "&> gu @o`JBF `6` 0RFH Sr\Lz@p ٪ PO.P 0BpZ4H8.Q0SD:>`<JGo$H NH"t\L 4  e`0SFnoH "ؼGoXp\L-A Ax!YH"& "."% .'\GnT# dJ#,R h/"( H9 h=&"W:g?b:`Eo8Hǿ/H/< S/$1A"0R 0B$P0c"null3)N@otHՒBGvF S=h S(h`萺dN9JPOg`Ҫ`r,>0`>) ia``&L:dSGD`(L`p Ra "_(@g/ 6PW"_p r qa8rvb gw,J0p&Jj6p >!`c` J~`rRa1&@pq @i֤hap4~_ui-``6aJ0p7,Jh6p&>`c` Hf ~uțs~2!L&@2Ŷ>(pg'g0)wh1H wf3a(`߂$@ 0 J"Kp\`ZTڠg lr2,Rt$$`p$")HSv&ɤ>P$P(~1θy# Aq04>, 眐&? /~qr$/p3^XOfSdo!/ `JȠd (R( lʨun  ʼذ(̬ R&͠@@v^J@C 0O0ʠ{BZwZʠ$ R9hV( R)h** RC.A" S6\>uBʠFʠJ SwN0 P0"R0$TBu S`* P)PX`&L~_\`Btrg#J|Q:af`Ҁ0lߊgʬaaBH/ @0`00hf"Lp!@#8`YGQ_(Jfhb +Bp"gSAgSAftfJ´B. S`Jp4/Nݠ0JPB Shbp*@/(""@JXO S>. TJPSg~D @N0_J_fT QvQQ `Q@1Jpfu 0Xf8]h.N1J Ox>f1U<~՘ap?}<@`xR L_J/ "f #Ơ@~ο?&tjf1~Rc4x`d0_( 2<ŀ0EbL.]1K䲤H0*G&8`o <AH>].Xx/@xxd | QT..@_xH31|0wE~J_:6"L `rVVR®@ hhb~T "@dy@<`"Hh0HD?aV>^H2,ga "=P=|g2a-g0 I>ꃨ !_ BF GxT fq"@TO`>gamas?pFf(i)1Z LjzTO=Fdh bPb08`!BC|BBT P:( #?,g (3-|Jg~ SPfv!f>Jg EmG@` X2^0`?i4-W4}:N.p.P`&0 $6 T$"}R0./ $@0%=CVSP`Z`:&?J+fhRb_.BGUa?<d!.*PxR%@>Tmp,1OB"C<xbdJf?,Jf(HPNA"0< azP.>2H TzXLXg&HBFC anHKɆPUPxdP hzP0BwⷂP0< D@|qH =Pq20=PdRlPO.?.RҸfPSJGXvgRPv9tPLX3gWEBgO\EB a|@g$X Jӱ.KDaXn`H# NϜ"A` dplvg Wf p"T `r=A{pP p f$HFp (H^Gj& J&f ~R"K .`]Ƥ )J̢w)K0G`4߰҂&߱@NR cyt@v8~j7c*cL,Xl, RL,,>Jc"(` T 50@g$JGg p" wf"T Q"S . _T#(\P$T В"@b.Rleu$"`9 TеldpqБ @p W catƱ gp"" g" B=BPM҂r4*XӺ8g >Lqʠ< Jqc`訴ľp\@4jRd,`R SjR:`r/g@HBp< fg~` Jۆc;\jkA/8:`GG6F@FC6=7F&&v6̑ F  f̑8f:v(f0-1+͒%46:3v@&BFKLLLP&S&ST&EFVEE+&-G&BĦ&fǶv̆F&&˦Ɔ̶GHJI _H@>NLDAdJ_g^1-0g`L @M/Y.@rp^0pS I "J/ "_">NvC\ndvԼپ`꺾8ZB$@x a0<U R`F@p A@ ??ۨF"2%A_ P p/BN V``W P&1S*@#1 Q$@@#A@ v S S1[` S\r'!G|H+I $ / $"$$ Tp TBG0 T"p À1|S# $$E""0 "BTO$1 g(0f>@#h! :1U@2@2@21@H0P`K(@BG>J@Pb1(0`!@p.і3TOf~JfFJg>~&@QHR`g(ptPhp8J.Vpq >Go><筸r~~8JWD&P>HJO|. (_'3Nr UFvjx fɳF ׮C ضOh3f"pPUB.2"0\p g (k`JAw 0 ca~Cc(HtOd/yPrR1d`/y/P'̀f̀glvJGg Ggwgg Fabt 0*rJlACA~/ N Sr TdJh0g$a*qz Bg z_ J>djgL2`n=@L`=2`Tu@/ ܨ߸p! >`"ဗ?`/ CDPx1sN`5Ԗ0,|4䦑v"n Pr `*ԪJGg U> 0Prpvq2`H H4.H’Ҁ2`A?1a욢ʠܦذQsPO`Bnj28`"p,L)Jf p} g RF -Pa/ Tl2-At{FN 0a1,#Hz/p)TOzT|PsqQBGaךPO null 0f$aevt/}h0 f6UP@2Þr!/pР+  |Ա|AXOD.pVI1p>.caLxf/ ln`?(BZ~0B<\!@hT$`ufrl<$FgBF\Jg^>+`PH k P "Ёr Rp/"QBJ@ѰjVpJpVRPٰ8h00SGN0Qj`nr<-Az`~ಘjzP:J_lA FNDRf> MACSߎf4pf, 9 `.YPOlF-P n z ,vP8>g6QA8ô0n%fF\aV.~|2H|xtPgn>,ݪ] ZqhqQ`4llp̂pVrVpfvBF]^`dbw% aPS"(K>/ >"pJ6W g8 Z`  T!K T00RRH% 8"p L#(@p$K0_(STlt| P0`#Tl"lRC  IHE|"J2HHǒ .0Hr)? LH b>`SG0Hct4GnbOT~0>H/8BE0BМw-_>`2P>k(2`RRHX!> >f<SF0$-p>& ܔ4lw(:uȲB P$hn>ZJ` ѨK>В&&_(P|d 2`S@R/ 8Ԓ 0RPH! z&r!>lZ J.gJEfPRló>xa0l0&K` P`K?4|X>"V ߈:. PX0WH&p H1(p\2R! Sh#3 S< T>`>lTHlЇ"S#|("T-p|TP ~ ~&5 S, Vn S"T0PH/l×PSXBB.`zRl*8``/<3`/<3BF:H&rlH(r\ T P"S"i"Q0(il-K&LzP6<:| S0*`H//.`N @)v+l \$`42#G`2B*8@voAAFMi`2`갻0um@oA@`zhp1H/^vSDn+좼wpޒ:`f!S&p0ANlS:2JnP g8H,$S%wphV(rhx+h$DP"?l< |6`40SEd0Œn"ǼNO$@0 sD2a-`n;tpp'`hsy`U0Z` ءآ冎Dgtء 0܆P}XN0H wg<`6` *dZ;a8~qpZn[ J(YfuapVVOr-`7Qpۜda] ofߎNZX/ Lepb ppyDg<~bcg4`g1``(`A&"o`,0a"hp7Q>ؼ#`rnqt{&D pdfҊ`<Ű8pTh8J_fX2Nd&_/sl䖆 pN'80NBX(L, @8 p(` GT\-Xe.bX3~PbXY?*f|vz$BG&rp8a"=fJ.=hN`'ap`<S4vXՆ%.X.4~b`@vp"/'HVP (hrjTp"(1ܒ0\{\֓!$ 00@HrЁL|~Ѐ1-agbJH3 >`6TfsN@N0UDg11Mı1c0`@/ P<0Rƣ(p sv /!B&Rvgp)JllCg0-P7&7` "W\UR ЮĒ0U*ܠ P]. 01#k*R"  PX0n *."S\zbSH9@4x j P PrAahbl `}>B@"LPA攳)P04~t-4BN `,y?XO TLGC1F 2GB f~F$ "{(fY g " F><箊Fᦣ!/-.@>yPq{p< : JXOg* 4`p Rs&@XO`FN (PA"PJ(S6 :0,$HD:"<B@j"AP??]LGf,B@P0 PAN:U :Z,2 PƱ$0OQn8p ?,_:h Sʐ Q$g"R . S Q"Sg#Bh0 S!nX0Lu¾ Ǽ-ZK& pA fb <s.  H?ph` a.Ap2a&(TP`)plf , azN|n>"qZ!2~=@AB4zt뙮*$BGP.:(x-L`fn`@! T`V^ e?.`t zKp!@lRfJ3 NTS!R"!"n01tĊHC,UPju@ZpH S)0S0W0#0JGg" J@PO[fgp`c?@u` YL1/p p?JGH]-&0@PKhdV@((~%@m=Gb\}1e SP}p(SB@1zb P167 SB\1 tz 8Q&sXIp !zb`NC TBPX@q@\B"=P< 1|@qAupB*pB: TQEP$$8T!k?'Lbr!K*<{ BG&Hp(@/Y.  _ @/xp(@ POgq ?~TQs R`~ K& =G"t&#8$GBG/Хl'.v: FNQv ~f$W@JGNX`J"qXOa4 yU~]rxX r94B2/q^ah $SfO!}rLNPf ~f^ JP^(O~\J\Otw ~( V p0q!r{nPO8PPdpb Ht!<\or$PT fqrqr2ei60'.82%ڠ&_4e ,bT!Np`F4-WbJfF]>mlvfg(P9 J,g4vp srB& ܠ4w|?J` 0;n0F>0 T&܋q`!vv"g]!搂@4fJf(v"A.2NWT 1fu$uSP` .pnl40ad>\q6q=,g~н삡:.@nVJFްEfK"$a:h T@Jf4q0?0T@&]TC4k6!zWT`!2$Ш~” ʑBiGs /B2&qҙ0wfff`2 _Hg6vHHЅr.pHІc:` g &0`}A!rl`D\a( *pBR Bl@AYPBG$>ex_āuxuNf*.L>Ef{0g|"BNq\u*B/>%4`d"E,^/v&T.&@AJ\N׸J g;>Jblv`Ņmc11uTO`bZ,hDyPTcBG@ Jg@(`8P `st'@A`8 2<7JGg8AM`rӨt">`8 ت.Q`2 <:1 HR^Ъ‘@vUpz"0BcuN44qqa:m.2%@ 0*5@.*ƪ" @ܮnz:.J`SN\0avJg pΰvΠfJEVsa@~r0< $ղ .%V Ͳa&:P"ZN \| R>WJP TW"Tz ,b|-zN4tNb/sd{G2T~Edrz>˄h$f "gQP S Q 0!i &JgT yNePƜpcNa*@z<2v0`SPs`Pe  vBR'`B g" TJg@g"H i# /L#B7(PPn8Jg P`0|w&H %pHJgB>,`4H0 P 刿"Ёp"Qxap/qNx0a0SGJ@fp"&HU> Ѐ baNP> S1 S!PPqBN$@Y(plL$PP K`! @j&0!Jp&@B g SReA8P@8dCriЌQO=_pAi-@< !$@(@" g(JIPz7("Bbnм1NJu@v:"< < < mPx#42r declfh>>A&fa04‹p`F#/ spffj@ P!T(w:b!"f%,BE^A@ Iz:6YTN$_P R.((f &5L00)gk%:Jb9:Yر2 P"TTS!P!ˠP`B 0Bk`^iV ~pVFSe@Je@fH TTpg aNߺTOaԶb?`Ja.3BLC.(0aFXֶ‘(PA=|gtBBBB:"@ @-E-7< < < ֌Nrt"n`\OPn.Q P0( H(Jr QN=@* A0anNVc/bcrJ_2w `d HgA;`` WQ>SV"*|pVDF@vTfvw*UβT" Rf ɌQ@র$jcΠgZlpno0<nbJ&?``60Jf,Pf0,A`XLdaJf`XK``~.og|Qg>VU& pQ cp`jP>`Ӥm::h*#R$q $jgeVޏg 6"+gQ"S懢.*#)K`p")HVf\"::@@B Rp*2}:p D|ᰌN&p|00t:"J\Ӯ .<V!/ddJM,.PނBEN˩XdL`Dn8sB0_@`fApf ۰<%f ~>v/⟖X&`v &*6`(fpP~'P&.bC"@p"#@Z Z Z оRpIvS~΢!:м>cf&-LV-H5N|A,tN<#E1I"I{.KR/ސ.G7/:\QP6pPN_P>WP"B TbЀ0;N 0aj@.8&:3tQpP24~ dB0 Pb*Q1?21.w`U/Я(,p?wQ?TOSk0r@1b`nd3Rm8:1`0<>6:d* B 6:F:2J檿 2,0!`:pSdAN?:1{`0r5gDF@Op@pW(jB 4B Rr!2 ]r3 [ `pkQ2B Sp)&)qT,1l28&4vjBG0!{Œg / `񶌂Hǻ/P>>2P.g`fJ(`p`xßh#tTP\NN(@Xy`j6 ϫTONС)&-qaB6v @|'qw(@Lt&@B&q ؈tU<2``f P P-P+f4дs"n#P { TqCVp!KHSvrS|!LHT (($H=@f9&>"H*_ S :(feS,BER0`0}Hn0஘H S4мE$$"Tp"x҆x3@s dq֕NАs4xxps/(*NС@ہp>@lt tHz'pBG2<c>n1. Q2W$arub``ner|*kUfbf`fa`HaaΎb6B`ľ"-l`NĖ@ SP DXV.R(0!2b g$򣑀`~tM9BHQ0)U2V7qj07pp/0'zQ@kXQLfvpr|㔖@ "@>rUf}T䜲cg$L RT.p>.䆲b]RRhpnP1device_typedisplayclass-cwode<^)oc dgtm~deD+vd^djHo<.z-|0@NH:~affY?;k}T\ahd 7p?PePj:"6GfEn(N|(^)H{ mP:Sid-!ΰ >f@_uload-priooritygd4NB@z6B/`p1g !"driver-ptrhf (BoHx0descripto75h"PGcJ^^QHn"z4*!vq0pUv :2dP :2iB!#Dar! fq #'fcxpm0V.kZb0qwhi]P*+q!+doBGpp&@(@$@ppؠ/Y.  _ @-x J&haNdpp:(K`00w0f$p0,@p]lX'IpTf5$x4dΞ20RDDl$ nam[iN*H BGzN(b?//}0< #a8pB`q07<af*CDDsp;D a!œQ ?r80:>U*4N(v`zaBGVxBSp080W Rp⬈iQ>p fNbdڇdXJJ"r|pz(j `~: v"ނO.Cret>UBEBn|9x167pma/<`}`d:."L|qqBFJGgUa60PBF0!NՒ$HڐԏРlO 0fS,j`Z> 2IxbFLf_pHp11^R➈BޔVL%H|hV@^& .R@ŀ^st 0Po%b~).<f~>.Jp6%>vdw*PF~|`BEN)q=dNobkpN+8R4bgXHD"<h(8 "vr0RE|ps̈q`ԡ |d>p=EfRvtDoVo/ g4UO0<0Jg(ȳx g0( fJof V0T׏"_^P|/07&o}7Hd aH/ C@ */ PaP6/ L qb&, U( p[s"_d0( ,&rpl&H/JAfoNu  ,($:ÀR8p]!  YO?<! 0N:|I * \f a_z*! n,*8(")j&/ X"N|f//` }j /j $@0,QN0R0x R0!80X"f/ &à*H00fB g !k'f(9{<1`!$&_@Wj0ySByк4@d@x Р#p"(H)! &TYO/&+vRz& 2R`} +f1l "Q0la:gfn8s$P J hnP1Q! h<@w|-&J(nf} f>a< _}X`lN/|$Q f~b! dg2< _"_.Єc /"_#hDu`єr{`jLPg"@"QNQ`B ANH0*a8Pr&PgH.7_aBg>0g aJ`Xbsa2pr pr#:pz8`DQ*fHY0oАs?@ p pp`: @m> KaRaa&It zr| w/.Pި*fLHe"aa**(?p Rr1 L,Uо^d0zg .JF / F P T`pӨ0q1>/ ~/ 1 DaBWx D j (Ẁ j0نBPLx`8QO$[OQ . R$>!/!L2y!2p&S!Sd"XgT"T"i"Q\*Pа_g4A"P"̀~Rj L0w!<2N4 S!&@cf~&EPO@ҭ.jR]O/ ZYB@(` )~@podD B. ?p" ?_k~JWfv`8XWɠ% }b; P"@a@+SF`)40@(_*fTNuHv&UXWp6*C//z2R8P P#u 0*@)B*`QݸRա*f\|5qao@ o}aI|a pqRy *```*fdYg,8I\֟\886`!P/O x)`ˀ/ ]b*fl> *>8$$'Q$k$R o"gPJT  602QJZZAaXX00vaz ‰ Ё0(@9 _@V>pA<UF-X&XBPz p&.Fgp@g:a:H0ra`w4JEgR.aovLxN^O`蚢6 0*fpYЁQ)a00S`P_nYf;sn/1kpagNt&`d:/WXx*ft(ϰ aE0ga &(RV@J,82 L_a.,*$N1 e1rj2O0 ,~u(l`` fQ2'R7$Jрf|vb ?u82X|*fDsb*f^E9pQ((P K^cga Razw`Qr IH _` TJ (f(_sPg.$@!&€U1`%` /-  XV@d!˷ / q틸&(  *ݠ 8 N%v@Z &_ q~>UOTТ n028 XAAd0C22&.o &nMb*yܩv.ok/(Wbr /BgBЁ*g> Eg&/ Pr찐hE?H@HEJZ0pJk`ķU.! 46 8~ڂ؃R&^/Hx 4/8 lra(ql0Qtz ,~. UA^/0wWW+/80F>a>a"0oZP ! ZQJSg*N x <`x .lr(@0j"HAgP/CHCC0g S@fBA&pDnٟn ?2^# ??|EP`0c/ |z& .m@|z 8jTOjbfvv S PO fƵ&N 1f/-|MAB< ؁B(@Nd@g @NNu*`zvpTrz`@/N( >a"(,g A!Pz8X 䌾!<ƻ ,3pL00aЖpT[eppķb^Fƀ`jHzI()k1q`|Ўt,q-P* /.gablgHG0-PVnպ|F|Լfu-@U ( fY/p&>R4h0QJЩrp܀؀vJ.j)_0J)W/NHE6_EHC@,A*fF 0/P eHPA"XB&BPp"N%Jkp`: KgR`pqr0 pVJ@f&k ljp` @m np`T@`pp `wZlg6PuaHnp{vPՒTJ2 w8 и Q!Y` ? B*؇vpcYOj! ~&_F$Q"O/A `2Q",I-BP@ N-ˠ _N p)$.pN,V"C舁3 .I BAN8ևc !ل‽bև>rNdA.r D^܁r =4܁~rq$Җ=Ar؅uևr' Bg"@"Q )nrJ܁4r  ^ fdj<@ \q/8!J!_D!NuN0 #pq."iD/ "QTI4`l2rlf@`B?BNzT؅9A`.ķ "@g @>"Hl8;^H7n0 (qPp SA"fAY*0 U> 0UHlgR2kH4.H’ >H6.HÔ".oo(A"LfA)G`I fTL׈`tpx "i^/Ab"L p/Hz\r/bf('na^HU~.fp`9T8J,20$*,0œAR"UDL H(` seqnڱCiŰ-].p0.n=@?+?w0+kS?v/ Nn lr P"qTfA/.wvGnsB}a( )1pW?NNJgUv P0p /pJHPl|b` fB```~NJPOg=|J o,]f*",td-$ J_.@d+r R!3 ъ  / 0SDH|?0z JA01SnlTr 'PO:} N^b~-/HčV <"-H fpdG`-Av1NUp/r//Hzv1p)J`gR.' ] (@ 8JA"PY`&\PO`_YLSv2fJf^# 0$Hb.U/).^@fAJIAg &ИXOJ:P`$.~^ pFtz $*.JGlBG^frH  `0s@. :PWfN$ `bj&ֺHptԐB(hS{,NEBJftpP(K`f(l f g0Hh%0b@Ӑ|`M{XOp)f prp |f~:0d.t 0ֿ IJ0l_ T(P^B|pHDq~!:4Bqg~ЂPp)pf$j.D$&P4"/0&(2A8NQ8$ Lp ~>g=GP&T Li0)6/ Ю@ XOĠj!"KT>fA` / H!J^Ap Lj6)P Gm"@opA|_=F (򐲄p@iY Nxp o =|.n3Ag@BЭJg!fAʄB.p?Y&_ WtJ_H ~ ./ Y. / !@J+fn\Bw&PCѾ"KPı` 0Qp"nIZ$0֗'D,N1 4dLJ+T` Mk`$ONdHI0VA(WCDg/ D R Q`hcJmWom1#%Hv lޭJfvC>B>J'dovaJ:=@|kL|:.U  2(H`-L~}&XZ߀Q b/ `aШophЇYp)-_\Lpf )x ! ְ0 NX>GlQpJV1 r@ЂpxlP(x &Hp!vI.  _ @Vc`q @pN< KL'8mPr iqN4>p)TO0RG"@mUHbB8|a8F$ՠ RB<Ccps@zp{/ Y"0p#@y Q>0@2IGƹ{<{(_DqN&\DRƹP1pc:cⰼ0Z܀֨ogHP,z6agPJ7fM Rk`"Pg1"D԰@@:bDâB0.p,gN/*A00242{g0%!SDd%d‚J|_jg@pd1z0 R8fA$prCxB$ x /(``N<^tA&LLؔ1&3b8&h:F)Kdqp).q /)J2ٔ,R"-kԮ,>Ԡz0   7`fԠJ0(o&x ,@sNL"٘@䛒`i2QdgT2g2~rA0<.gP0(!h!:ag"AЀ`^~@@$ h!3\`oZL3 xJh{f x|` BB8WT"iBB XOu@XOt pf-K&DrgzhRWTO"3e1l0(g@/ C "/вP RIJ\n" _Im !?<c!(}@n@&L/ tA$X"W1UD _<$J Q^xHzV%0 1 MdXFP^dG>8 dtA0XOBx (wB/VV%1# ^"yS Lp fP RXZ貀PJB¬t?Uu%>$v+H{4v[ p gUPv PHh/ F.+3\ ,v/(/ (I ll T(P/"`$@\BPdG鲐z4gF,&FCTOR^ aELȢp0Ė\2ġ&p‚1p)>f T h/N`!co(8kB*g 0ׄgpdpf`RBBQd/0 -_L֓Y0,e\6/.P&_d xN^JPOgzQp)@``)NJ&!8,0w,vb걄^kg2>?I0oX^c^ Ĺ2Dԁ/ JygA$`}pl$/DEb"X\Ą&N@ V!?,U> 0Ђ\@SdAV!V!jrNX>s^$M[O(W/</<J٬ەOG(@J ϐg< ^`_j`d8B؟i\^k x \ P8 "g"ApH@N~Qu JfP<f(< _2/T@ r1 YO/w/WLV=@-AUO*a.6Pҿ8pa"x"Q%io"0&ِVQH:{?OBx Vk^djvAk^ > j嚄&A 1{ ~A%h0d 2T:>0D"")dg4"AhP`12)TgFAxdI"x"q"Q@"Qs2cH:d@< / a]EFny: P!|`iJh"`p8 ,s8 ^BYO/ gΰ,pHiJx gM /@_?G/؊ gJ@kjs>M `Ou-Wp.Ѯ-_@@  @-P-hp BNuJD$Pnb Vj nPgJ0n=u:w,g*FI, NJ@g:<O82i {8Pݘ@/ rH\p B:2gZ8PngRNF nf<Pf2/ A~_@m*r)_~gd=E1ܶ(`yub"`@mN"`@nD`2OxpOi0Cn," a` ap,paepSPl?\ܡ:N+pcvTg*pg$~t}r =p`J+ Q@LqA`AX+q T11@YFT. n*pH@A"y] hn2PPr1Q"p AJ}X YBg*0S+QOSE0m&wA8A p"O./ C% brA"@a* _,*x РCߠ*L IOxQ*0*THx ڐ0|;(U?88 $g"1? g!PnXSDf8U/_(~y,/x T]xN8l6Yݏ, _Ag"\ACEQ$ZfR@БzBVXgБ PR .b G^J ?7|>RB .JCEt.|CGtOl.\.LOéөϡ-10ABP g N $g UBgN MJ@orCS@ggZI`" "H Jg Iz9 BB0lg A @ /`BMH868/t0206g" P/Hpذ-p/’O C[gXp p g Agf @* p gB>AH0SC"o!±210010g Ip.`9 ŞAHq02ѿCl0:Xp J B> /Bp ^C~u^@BAα(f>-@ ` -p ~p R~*@2<4pgX=Bn2Jg!  1 &,20 0<αgTg ^ d ^U $ nwΰg$N^Nu>uX\pA/Q?wP?< rYOTz H. a:BFL&H+I@ g8v + pK0Y g$)ga m~b`g8RC C`(BJFf):gCA` LxN^`Ldj =C

v`U/ ?/<44012Rc0ֿ/ a^}ABBUP.gX @0f&t; gQnPu^/!< ;(BIUOS0 Af2@B BfArfN2.Rn|AofRAA]AfPWNu07g'**P6A:UO/ P0R@@o:iCG*P0 Sag"L:$H47CpQSJZBH"AӾ` / A/ {/$J.f[ ?GPFE$( 0 D@!Bt`aTf?0g?21:/I`0vH8&o S??/`T#~  @!" 4. B忱!A,Nxt$B&:cR#$o0g$xt(HGp Vb`ZCG1 $`~( oNRB0C0PbfSB?BtC <g. @"2." "%.1/ U|bHi/BgB BA/8Al\$P@zH0NR.Yʰ',fop`:$p-?\O>Nh]p?pNh㐫p0h @0hP@22"PNW P4P9hf_"_0:@@nrBWtL8.:PT>. 3@)p;A PI@R@<SFJFmJg|AZ@Q`nU ?R/ A@?A??AT@HЌ @l WDgCC`pHA@0<n?~`RGE@0SDJ@fpАC*0L"x D"i0NlCAA@JAmp aRA`BA0NX4ZQrAz@G;P6v FONT g R0gvYp?  Ef:.`Pf vpPTfBGPgGfbpaaa/ H// `p<m>`zr?&/ 0R@P GP ngep?Oe?@SnfPUf RP`.`HHQt' 8RT8U0a/Y2Z`1,(V1p`/A{Cad/ a21 S!%p&_.UHW%@n}nJf `0B0)Q1@}iNuH瀀p!/bpOcL>DL nnC Yf.b'ኖ`j @( g @4+H88BDPH >`t$WsN0&YgV C Pȇ&(RvZBnqnȢ{ C/Hj*`/a3V-|ʀ|-j=j0*_x lv/ Y&ĢP)/ /٨sLglؙg>84 @0H2(40A9SA<4}:`=B 얁*#@ ^qLlTП C"P&)#Jg .Qxw.cB's`fY@@/\`r5MXVX @l\zY8ċ$_Ҁ$X,S-Wz\apʠpHAaBg #Ҁ`(%LLN TV0Z`STbbr䄟Ɩ`(3δ=|b&@ S(hvJJjkA"SCp2/uj?@ L۠!_/( > %Q>DdV€XbJgNfєЃV0Ϩu` е1N SB/ڡ SHP/8lIqT`nhXTܱ/&]llNu,B!7 Ɩ@ ,@ff8.Ag7D(3p "!Ɩp o0o PY?H00<%TJf&2h g gA2 x ހp P?P"U! ^>! 6PFDdjr x݆.\@>`8?8B.p/\P0ATp0g"pdpQ Ql]@f\@`PmpH@2@wQgJ@UƖtƖ|Ɩxz ~""x#HC C }zH(hJTJgoPlP7J_f@BG`4 T HpʠP=J.gbNhXO`RG TgmLOzQ>DH/pqI(_ʠʠJ@` feXO\r>D7bP BʠFJpAߨ fZpgogN( YP :XOfu,ff"`x flN 1~ ~`$f&k`H S!U&TOGHP#[si2҂~A6ĢtʡH^؀j @l :`p-@ʠ5Pg_ >`"p`hg 쵪3BGTM`JGfa<W@lnV>BAG~3,!J:`31l22p/ ~3N$_2AzDT"䨽sB`%P`@*Pp` ؠ%B!pPvA6s/ >3?G`y`P$BTO(@=Gs2$~7&RV0/0З :`B!NߺP*p-~# SUxPrJ` tTO`j,%؀BG""B P Sh11ɡȢ{@`@`@/p` 0?/r/R P98P * !,Sv`J0Hr2tA43"@PP23@> t>Sﶆo$ 3e!|o(K*#@ⅾ L|Jg0Ա RTLl |fڕp w "^q h8P@"`w(TjPG {~raf$jPNJ@gH l@n>` V0k 8"00(*0=|A I 6kc!a,.#@BEpX =F)"-|LOADp1"+_-A0$Ru("N:~Pr_d0֮~vABgj\kne$V0,$R>] 0[fRBn зgBA)A&P2V0.&7Tl"b]$b&H*$P'z=81.ATALoad`!y2IBG?APCԾ13ͶQ/@Gf JARcJ_d~dkޓ`L"gD(tP 8GJkp.pg&Jի XԠl_-krk Y.Pfb^(& 6H~Z`0ap(nH1@Ƒp6ƕH@0p")g&A"+($k 2R'A($mHL ~^.4:cFXa` a PL#`1A/a _J@np (@gJxm2(8Nu/? PHƑ,jN8 gppkj+ FGhqҾ_epc`8\dy&p fp`(S=$ L QF0=QrLookupDO⊠A`-L)L8H(*sRʆ0D90// / p/ KN8p f9D{0&S䤱Call_Nat@;]EvR 5|PJrCg*AKJpU>g5GP` "T`"L/ h/`*A^!"_*R褱R<_wupo~>p ~bGf 9|P Uej bb0;N `TX0(~ "$fb NpPO`Xp`,@0; a$ ``'l` ,.ѫ`?~ `~A al`9)dYj Hx@.J@f> pMf~/ĠZ,)4dQZ¢PHt7fҧ:12 ">(r >,XO$`9!bA%monOHyaplf*Rd>&Wm@z( &Q2`px)NSQ*R \p~஌~aL|<Jgp/r ơ`5ep ֣JH|т`0&Tы!KpP @1 @y pS(K0AP֤ F c*PLcKiPIouSkpP g*f /0,P/0Xu&Βrt_Next+:vǰJ6J~L Ef>Zf6H?J@^~Alv Ln<Ő`q"A"L&Tt<X/H¡>`$. P`OؕFinishރAIH2TAA@04DVersJE"[Bi.0) H"0`)#)"'P^Is_SlotEjNS{8zu)k"`+@")JR1j23`k#2B,3*PLRnHxp0l N׺(bv 0pN..A$4B7CodeFragmen0o \>O>Qp&@BQo$Y/p.,"<}zR0 T) J)7F2@~@F+`gp|yg pS@AP2| ahlBk2N_0`Hq7JglQ_@=F@+nPOU1rP"LUMrOpen_*A/QLCS"L2_DTLPw.7n/ jA "_>f R)3fS€BRX>v>BAZP,B` l(n@.JP`m\rd pg4!\`=|.7pհ5 f&Abgbkb\暠Jqb95 c Jfpf~w.uBsf&b!֒^QLd@`PE\@ǎ(H42jNbǠ𞳜KS5J5𜠒@hQ<,ì5gpnRǠBG,PeYN`BǠ뎖P@vn(g l(ր)ր2BS2עNBGPSO7Vи17'los ZF! Joy!z< `? peffFl:p``Bz$ r(4&wB`+n@f|` j maJG ` .,4 ,,Ќ",0tԀ &@{¾-B`Bؐ(Ҁ-A@ pJgG.X SJn: bLA2;N \@ Іe/UƎrЄ`OPOSl`ج(RpK4ЄҞJ2/0>cR!l&$+`*`-C-J.҇lSlu`$$*[(a`"Ѕ7 .@՛HLp\(blBr_ І:0|"^@ۮT,,(0@n  ^ šzp p 1UnpackPiDGataoF(ch2dp6@p`(S`Œ?LookupKc.D Qh _e2 `b*Ѐ0;u` -L ff fPpLap/ KNn3&_7("L ./ !?1ߎ2MAHL0ˠX!p40XO ԣrowUOnitT C2:.QPaEe16 Vq2r>`Hp{1*36 _T1Sf4n8o! 3`*Ge \3_dp`@J@gp B5o__yb$L\"Jo&l||r/>(nld‘StartԭPP IPH/@c0(oHA5lJa0VP=|=|bh0h0Frf(pmx5`1n5AʂȰxSQ1Switch3PowerModn/0 hNun"O.&1P23*D1@x@>PDZAB`th2t2b0_EbA"t҂ª pưPZpЖ0RpxSfЬ LhbhQRkr32S/!ya$ed54`53$3V7*4B(Dp(KSq23}JLB.^EZpsJPOFQD%8DAj AʄKGf6vt4!N5d1ck423*Bz@I/,TR!B ~p(@&@d h ]i`vHxpHzN`}\ЬpdJؐpS @A L? &Hf`./qc`x`n`‹ LY`Š`a1  ٠3Descriptio (y4pT2:2p&@" f~SaUjR r.0 s?fZd^df`&L\/ tv~`p|0:tdt"tpxrX`.0?<xrw.gP><0D mtejfJ $׈`jf|[0 "@C ndrvtf8ʸn.0ďւg P(?BG` ppeBGƢ"JVerifyFragmentAs5" Do3IO.xtNuNV`t$pnbHn>qg_0`r4p`"?͸2JDV"wiskz|GҘBGB ’D hq.0,=f!P\  @4H V"kN#amEPP@~bzp*pp R<۠0H.JFoPY/I ~>(J`6?UHl*沗K0Jga&$ ,((@ S(p'Loqcq$8"!~?I(JRQ0`SJf PStrCopd,8 !r$K`RJf c"Ya RSf"Conn 0t_CToѲe$RzSpaܘ |p)rЖqRe0UЄQ/sa|]fbp`PP&`.RL2(Jgn`Y0R@ǟ3R$3fJb~BCompPropEy c9`,^ lFq>BLaaL`a`Bp?B p~`B6p RpeÁp~.0Hzn/y ұg > PUOn2t.0t"NCg2nkؠ<?J?V1 &~  &_ <0bn2xB |.0axVx@Pgx`$4&/ NҀR@ N |$|(Pxb%P.0l/Nj:1.l Hz(bʲlJG-Wt/4"*t`CP$@ t`j|czzjږDDN plg8vsaVj|d Pp"Q␏p~Xfewvic4TypPfo>dR-d.or$pQ#,AAPL,MacOS,2PCnMjd˹>TҐpp0Rnp zf.pqt`L#`(2:<#3RefNum f$re|p\T&p%t`#@.WDg ҃J`p}b`ckPseudoSlo?tdidetrB Rn} Lz Қ[dLpwk$/U?</H pg8B-LBn=GڂC _Ip`xc`~"v.SystOemFS?QU x>(`4|rBuzf1EnaSr͙кr|&cTCp^2Q\f.u¡& H|:z.sr nTPr5.K:c~Memordoq e GBBF (_ J"K #.s`"B g"qn/ ,Jg ?0<@`h~(:,-?`)(|j| //(L#0ަo1Resour!-UxlӚOEquadƁsL,,S1Y&J ?&p` SE:8}c r1fz)+fu`RVfF~] @f*RuV`VfHwІ`:tPwАAS`*fӢfҥ71tPAHigher7VersiontPNua(͠gL(nn"LoXp2jCJ}gHlr,`l0B,r&팎RXpPushtqBased1And"(SҰ&"Lp+ 60  `@1dPops'v pcBJ,jgLfHk 0XU| | |$ (3pN 1qpUT!lLFP@P@ gUl4P1V!retqCandToProp9Dv!BG.nVn ng`JjLJ,0nfNXNI/R|H7,0z pWidateRoutin\#~N8.SQg@JgR!JGCf~k!Os&!S0FixedƈD bΙn R !pt Bf!LpV-@TOp?/Lp, T@8%!՞, &0!tPr0p*!`U> >LplTO꺁L U,,^RRA aVA*p^JgbdCJX'Of$LO^J^dC30~OOjlB_0;gf1JgCNP~b^D00_Jg~"Loc7ހ(¡<.^3B'gB4u(&e1 u8n꠭&60f,"訶D z!shA0,g|Q@V)pC^R!Q_sъu12 R:B p?P.D]P\$Rr}$CFraggAdd+TTo\>ހtH8DI v6(J0",,*,A*-HA,*ЈXr€$ABp,(Ќ(x0`lc^b* Re1or2`0t/6Q2`D2 o01 Ʊ0Vz|dtzVzfdsJfj2!)giaq|z@C$ |ubtJerg2x`B`Bjc|/ |!^( S݃2Td»onH8*9šMS>|Kb^QpSB,xQp?~.~B6pѿp?n꤬oHz8VgfnlNqYhڌ`u@lv&0ksfIn`*~pS0/ /z@0S21 BQrDR^f8pW`B>@P  JEnCplRVS_2(dScanpùIntL~FB4U $@ܺ>@V fxVАJgj>@NN JA)2 RPOTR֌RPOvfRFg{ 0:SsFo 'Q3T>F0BG % pTBq1iF71'f\F!А~g񞋢N¯ P Ťְ™b.iNBI@ت^0!x!"/PV nԃ9a4'z8q0 /W.ܮ\29g<ҤW6V(m"82>ҡNPg"m\fHJGgfD3XNuU:.<.G/^v" 4HcA]#fjx?褜/] $p/$pQF0രѥ*gHd AԻ4zHZ,ӖInstallr6. lb (F0ER\!έpՃeP0F-q 0]`$24p hJp!@gpz p3I&` pzPg gztfh@wdp@&P`"" Qi)a P&rЁ&@ K"JHRAH .tg"H Qj`!Jf~rgWޮ@t$.gq^6POZJmgP$l&H-{/Y.  _ @UpV` rOl?<ߪZ<f! 0 $K$T$ ~(g &lQw( ",g0~ ,"Kp.oInformation3).>P H/NF>p`xRk|KH,"(H `Z L)&T"KJ$w  r8߀ J "@J!0F@H̄! p! a(0L#ؓ0ReH#3.>PBQ>'$px8(_p  p-޺1-T2hJg$-k_HzrPuD`~.@0*CLB8r! kNӀU}?< `~ bBDgele`&D d-revpB`.$[Pj>b.FA/NVgZbSJ=GvbSJ~fa0<Nzfpcp<_dJg01/N_hXO`P I70LDmov$N.U>$pS0HighestUnitNumib)A6o`-6.Nnro`xn e _N`d1p(0``Cd =|`6*FA`ڹJAFQfJFf5`c6a0RGJgGd0.P0LoOokup4Nk"r0,k1Rvz8ȈP0w YJp=`1hrv2k1/N(`\>wp Rr`T$΄q4>qUHB.jrr p Q܈LReplacTWithFragmentZf /;>w\>f AJ p.o#=G7`altOF06I6HQ d@p%}f#Q6`p`zSVD&Q/a}Is a0oGa@(H/@*/N64Ni"g^* /1 RJQf?)0RQ$ QO@(// 2IC2 Q""" P /82"_ _SP _f*?N2<`28 `vܑH␁NB *4a! Bx P A C Bx p`Jo @0|;Sf _TONp`p`paަ`6p a0g08 p x g1 p1 8) S@mL`D @aF <20)aF "RYOBHQHz4Wh/8 BgB/TgPp(H`}(WHtsJCk*YO? ~ Hzpo%`/KDRD9D/w ?H/VprtafppԨs/ J*fRA Amrp`YO/pgV/ HiP/j oB}b?/0a|g&hQup=t|-_p `5!"wP ig$-_"a}"Bg/BfP|VpNr`{r*^"f 4-H"A p"O.`0EJk,/,E ]O/Ho/pABTO P!n ,_|(_-L&*9|l)K9x nDt/ svd Hl)W"_$Q j>#ksxHp6]Cg UCgYO$(_Nu(jRN xg UOP0J_B+*a& g\6 CgTof& *f/ g@ҩ=_ qL~w.Nu lff 6SCfUO/*l2,W_f gfRb(uR` B*_Phfu2X gRY\hੀ{ _AN&(X p.abIX0(*p Npv@N dє$ @(q fC-I fq!Nz/s _Jhk0(a /( s]O?<Wp&ޱ CNJf UOVJ_grJ_op``S@fpa`~ _b`8NКNa6p?ix@"`Za6q@j"Sx'a( *R@/,x⠷paޠ/`"  WL@>-|0Jf/ )2A_`J j{/1(gtg$$_P4Tv=C^g4߲بJg`A`Hp^fL"RH!RP DgJD0Nuf@Pe kPke8 !/0*J܀ApC`t$fC/3`9qHj PB~h?BT6 g& @ P" A PpC40oѩJ@fPCʲ*$#j6/8 R$HJ/ N])/% Uh P?(:T#|`XePekPjhq0%BNu#` ,gWU`Vp6\D`/s0.ê6|T0`20U@g6*(p2"` (p2A:e("щ@P P"#`.  gd(c?! @BEdT X[g"!gxHag$5q@JEkzv2B`-nwKaqp?grjAr*sCx,s*R_l0pFrrahzW0`6x.r@@528r>sqp_V"(x PRCNu8r*< PnD/t1"y"pa8r>rv"(Nur o9uC8"P#+pg#BI Ѱ؀؅P2ApXi2Xm Jx kPPa&PO%.P6a &!HQ`&P}@ U(PB\RQ$@{ R`S8g2P/ /a W$$R6Cd 9PDJg5wPJ9hfЭF5L2@Jfx Kn,fB<ѳPv,gHNH+ W XOL?J;:aVP_AD>"]P(J>!` _LNuRC`p`/e00mt" g$S2Cl`2p BGGQa$8!? B/0@8<Tp<-@BhhpdU::8P:pJA J@N^8DNuT&_ Ja? xf`{±/ / Z8PSN:HB! f{ !xg@c vgJ`.<tof vs@>!Cg:gUgX` a$`aYN@J U\FT _\{Nv2("< @oXO`:o`T`Y@ɁTNG8| ~p&JT) T&XLXKQUU /r?:0<[hTO*XLL׀䜰t: x ("iPN\e(0JcV=|^E.r@Y T А/ // /<Ȩ,mކbr@Z @(H:|0JEmlmR`vH&p\0[Hr€fT//Hx /,`$ R/t/T ޶F€vp/\(& U؀ރng2bЅ -@_"T*Z1&;=WGL"Խd*UO/<0TOpJfp<@(R-L T-h < I"KpJ#`~@#jZ XOfް 2nF0#`Bn`&P!(P~$_`"f S0D JX  S! `PLbL#vX !F!Dpgd"uڠv(/ k`ZP%" 1p!@ f~X (M!opllfF>lBG/ RG?|JGmp0r2pfhmv`$ `kL!qN>(@JGg$p! g GguV0f\_-L L`\H2f(S P:>SG0?oN~`JP1NpX f8p,Rz6[AC`BppHV`B T SGn&W@ X q2 FgnH(f20J`k`rﲀf dT_O`,rbx` Fb|b>1guJ@`BT`=,p.0Y?I?NJV0|2. L"J/"@ q`,a. 1_|.rbb,2<@f0U,v|b dbsb7pzP @.,npg U#~X` ~C`~V`BPYyQ,`>,g`L"J;"*cjdPDOL!ռv(a`8 g@/ ! "_"@ g&(iQqr$@  ,`]" SR 3Jf n`za{*z0<%|:nU710<%J%_"|Qn*:~xh`@&FA8:jZڐ:*4^DXNa|g8 D5g0*_g(ڐ TP].ЎJ.k ]䞰``V|h4.oV PgB=BT@*w/.4`T|wgJȨtܐs̩r2Ȩsڑ2̩0k$R@A~0.Ypg񮰹 _/Q`PT|~DǨazjD(p@,0UHh訝`0ྪಪUOYO*0< gprtjN8J}gaT(_X`z*\W aB2?;]|a(2:`JCg0R.LQ _h(pj`(pj0T@@@@L0 ! P\( @IJ(ʴqڐٹ|^o41Jfa g`Ѷ JL8 poⴒ}\P XB P SB(Bh֠BguB aJn ! PT!  XB`TG/&C pa&=FJo6!? T1 Z#x T""Qa 8 R@a~h 8B @1|`YOHyROvrBgDr7 P2W g Q4WBbma g/ /"_phNNu *,pEF"@/8BݧTPȈ"H O\!O瀡0")! !  x (H$p Al"T.3Bg O^pQTO$xt*8*Gp*c x (  8 "gv$R JzP `pg&&jU& + //-?* HjaZ$R TfNuH8  RprvR@*k҃$R($҂LSa ^ba &.a@4 5;!a횒% PU"|Xp`^Dk,k&PJBQJ8 ^gagrak ^g.xNmߴk "T lj&н!K$5čf&ԗg"fkF#@ }8k2"k,""Pa2.%ApA5aaj GF!Nu!` 4 G PHH@ #NuJPd~ 0e 80o c.aoW &a6j&a.j&a&k # ." T$Oat! 2! k "Ѐ TШ rNаp$"1 ]`(HĎ^g" @϶`H8a `@`B L#Nu `Jp$"T" tn IC p."H!0nr $)ԁ()̐ $!f<"TB) ҉Tk*0"! a4#Detk)3Fp!%|!& ϡg% XkRH઱ g0< LaVa8 .(@N k ., jn0Bp P(Tf` 0 x PTP?`LZ?8 ZU1 ZQ=|ߺ >@ Z _n`"Qf1xIB0 x[A( &PuDP.P:PU>T &P La?k`P{aZH!F `6Yېp"&_ Xf`g/ (K (_&g &@`ca`H@g 9a6(n@xk$frak-` xpgxp T.eTߪD |xp~`,&e 1%` Xaaxp ypgȕ&Y!l@p@@l &NS&` &H ր"@(w *tNкtoa^jxp"g " Ԑh_ StK N[&T'Gnp_q$+ԓ'B +o " 6p RLFsJkaFab$ Pl$$1 l Ҁa` ( g/. ڀ縉lՀrDЇ Lp/rQX"`Ȉla`пXl11ވ*aba I)PXYlnڈ[ʍ$T0@\( a\a(gV¸l T0Y0L`  BRu<0B T"o " $Ԑ( د KJ`3@0Dr0JЂ@o "Ґހ/ "S S焐*0_L3@S08 o1J-a}`"T90 a?p#Fk(HPJ g @NPJP kJf`"@"Q#H0p TfA   Pv@`x Zf%1 ~P g!!`!`P z/ Z (kg h"y=AQؤN>&BJGor/&`hp0S@lN@A (Xx8&T<+00+@ ! $K! ! 1 ``x Nߺ-H`0@aTأ?a N^=gL _~0 4k&"O0kWg/RGPߊQgNВv4"a ABSBk BoB N^`䒴P>8l!UOa_G4_ Bmӱ|q@g vog=BQءJh(gxp oPDEFfj0/ @d}`tQOH[|x'pЏ W"-Z%!P$gPOP&P?8B'4/0(gg& ud&g?""@ Q0)@11@ Z=@Qr-@.P8 graL??ܒ/&n$ 0Jf@09@niAZ@.qgh`!J f!Y!K8Ljj@AB\glw!nR!i@U L3@p `p `hp` p`p`p"xNJ `g2.g \P#r@TPLN^ _/L`g/8 fXO0 g g%HV{ \"_rNЦ p"Jf T\p`pfRJ@g `h.j|c*fxdH 'B'.d(*H >pp,p̻P8 er` L0.4`>` 0\H oXH0W – B\Saa`taa1@Z /I ԕNa*faaP`@@"T "ЙҙjŐ`M`sR10Ae T.p"@kka*kj `}pj a~`Lao|aap%@_ЁP(`a JTH4/rFAʠ%$Ё$B$0k(af$B bQ$kүCP$ӑJ~L $`p0<`Hp TlFJf>"Hx kriRAPIQ2(n" A n `?kUpU /d@ @"xbТ6Hz4a"@JMf+0Q'P ^@. Fg".fU# OFONT#Ba*rtbPh`΢:TadabPiJ.p> `p>hp:g8atk."a.4 4$0 g$Qي*[@|(a:p`ת`ʷgpSHk`" Jd H~>p_i"fQ6*q-pP `$`Jqs.q00/&_jg Qmp` 8,Su4H2PfB|8 !ұDS0axNTB_l!_dr>Q5SI@?azJ*cPS` na:va--/`Xnp`D `TafP _\ONp{ V /?Op/_ȁ {/?x.6AB @%' ,&H S00 Z ǿXH`8 <'W1!K SgёfОjAC0|Ѱ|Hb z LFz(P$I8ᾒg PJh0l2t|$IVpJ)"T)VJgnf2SFl&"SH,Ҡ$fDSF"{PORE ̤ЭBfºSg34 P)Z S!E$2H 4 SA膀ɠf*/?g*g `$(_`=* (x aLPB/!4 (`f"@PHr Bh\B@#@0 X.RP4P0P,P(P$P PP@Rd dYP'`HPA/8 6 : p > ~ ĻpNVPx BnB=|~-x P=Հx ^Qp0wȓ:$n\uRVP^g0-I* `_-HrrA! P` Pp ;| P<(! P1 ZRGV!D?艹  (@8 W/ / 00Hn멨 ZF /kPHnܩ0.ݰg= 栆`}P.⩠>/)PAC80H@19Jf`)&TG48_k* RB" f T@-H P0` A%Ђdt0;?+&`UD4 B^@ AT!f>sg_" NF@TE`HAHZ+N*@CD`"FT"`IFERfQ9VTD2V(<\ yxN[Ad?C/ ?17By @<@Q"5Ad(_0E ndA2k Xg THQpQ`0)?s`dD@"f~0!eH _4EE &gjX`pv$@/C.sfntAA.4L "{J?0gXO1`"Wq AFP NVH<@p"&@(xN/,k2p:gےShhp Sf $g>fJh(g @<@TO&p_?H|AXq/L@&X4Ɓ>VpN.4p|@Bf& [TJGkP]9 `b<.4tpp :ƂAol↠.`X.XHzԢ/NvоߕԠa e` <(`l (В&H0*()&֨l*/vl(Nԃ" >l$ԅr$քڄ fү*ڮ%` _K T1KwA"puO`=_N.4xl/ *x ?1rovmBg /p "(H P $֐% 3! P0B@@0 BPZ"W"Q2YO&/_4?P2@&T$KL/vК _Ip .BKJpk Uvé`#"1 Z*_.İ.4|ʬ `LJЦJzР `锬T$;&R"kg Jt$I`p",gR2׼0JH$G"R#FNJJFpF P9V0)rY6ڱ4.4g _$a`Vr0pPg$!Z"`%^ f /`Vgap@p @qzHfmNzƁ6`!@[ ~.4>:ƀ V @` PApr8.4NV/ (n{JWfh Dg7@VUoO]dB! #g0`8r(!?qeH(B-m෩(%.pHfk@uRomanx rFbvniD@ @ 1gv\/H@N`vPBo0<bH8pA2.4Sn4m6.J.fSDv*JD&_*Gƀ_g ёg`B2,< _ gP[F"H:` &I6:UE|a2a0a.aff?a&afg<SCa8atgSETC4ÿ4BBpREm Gl3PNFG`pSCm 0FF@^NuagJ2`2aDg@AaAGlDF{ pdmqE0EFrJv@r ml0Hg.m`_(J@g gn&nmB@`0;`4am78qfX00.&=@bUX0Bgȃ`nBP 䨵0Nu@C 2Q"aRamL O@Do@G`:4SSa]_m*@aa&0JCmD@R }.p`@ aphwY߳`3 A26JAlSCDCC8THSDz< GeHĉDHDJDG><Ge0npCl HÇ2HCH///:gڮJClGSGGf!pȒdHÆGV㷁ځSǐ~.|Bhpg.S~p k N@kaTX0~$R J +VJDj:Bg/ ?+?Hl:4o_^_Bo>|TtAC38`NJ.f<`^BP=B28/T Jnj=C`.-KuB`|\VJEj n DaNA4,hJEg60._lg,0T$0_ n pz3e0ְm0Y0E0ְ0kA=_q&(*pol0, 2.u&> `dlDpֱ2!AZc n q&pn Zcq&vd` Al0<2 n&p2.UmnU(b 3h"""n `rN^ _޷N& <6.(k )ns0r`2SA<VJNmu@=|TJoz Q~|z=|VBX@)+P:00),)nH0OG-0jlnn ` &,oSC1Nu܁$/0J_AQ?;4500[1BD1ih!W>$:=, g j#U@HPZl~l.kJ.#08?`\JfL TZ0j@ BnPJP,~X@'9JJNra|tx.p JgmnnD@=@w` OPoOPhpfT0,&6ڛpp.PmQp" dp,"ؽ2"`ldN0ZbCo`Vz`g 0C@DEB'?ġN2gFA4RCOClO00CQ&JJ[lJEl : Emazbr@a L xv`LP4ESBB0@{AD@COaF@2!FA20QشP?>*w (m@,f/ ,(F U -"mJ-!g ,o- - &-$(-,*- ,I`M)N,M|EBZBc$HBF F`+HCna ``a `t`<$Kx<F6`@L\@g(@l>@g,@g@ zpJBg`HBJqf`HB`HB~`Wm>†pp}`"gGYqdqf`s`HBf0BA2=RS`j0?lr.TS`9i|0рFBldUH8&j(kTLP JPm<(g><\WlP*5`EHP(hP+ T|p~`D0@:48<RF`,0@t. GW FWWWgDRFoRGo@/N5NV DASGm 0g d` l gQ+LN^.e^Pm~=l<ф`< ~nm/ h?N9_zѾ2EpfRGzѾPo9LnDڜNuS걯&l <@NgH0,l0g>`0 f,H@7.2@,Rlʮ@uD:ld^t2.,R0.f.".gRp`%tg֝Й=ti0|M/강f x@ QvBt09~UjB k# Vz!`=|0p=@:|,Pg_PNW,,l$ fsJBX\ .kvB nA~f\04tf Jto ~@?g Btp{n\Rc(T Kچ kx@@BNf0D.~0k@@A֕$DVA@R1*h2X<zf0&bpq+0CPxA|1J,gQ+@n n"~! <Gfg>g>`PgM?30'/&V&kQ йUQnQS@` lSBJkPg=kPЕ`m.I$^$jJ/ Nng 7kPD;V[8Q"E a5P 0mp9nPqg<W`N 1Dg>Q Go""ib

LK:4Zdַ`RCFl3{0,,n"KpgCo">fBC=n.RGG|n_^fV LR@20@p2t A(0ƐЁ́BC@>@@B _ tg>2V@M0"1vP̆ER"2"2Qn6aBF{"Ӱg0_@g@U@g.[@gSVlvVӆJ%`v,f|`}jf`fV.EzN}@H.P]R@/C!S@Fn`wQ` B!S@fpQ`g"Jdg@knB}PVHz07n"1 5 ޠ@  "oagL @PF.ap :gpv0f,<0A]>SGmQf>lBRB,`8r0FjD@PA4fC@&Ijrr0fp `^<0(0P=FTvB@GzFl0SFR@\SGrzFf\SEL,@qAp 0^0 gSl` }t``36dȄja (j j.AQ4pgGwV`` : @z4/ HlN< E"#2d4q@%*]a7~-0qs m0DA*0 D6>D0FRȸ0%FlT ElmbCg4n0,L`5PA0{AAKp?0@A;g/ PN>`"E2@E9`߱f,`80@0 `[Bluʦ@nP1GQ`1Nd a"Jj| f|`|Mf WPE84V Hzw/ `ΐB H!V?4> 6N:PҾҼ>4S]GfĔt g@2`/ N:Bn=U/ dm@4p,?ΐ\!HzoB>J g:  SG`$_B\n0. ogPĖ0AfB8qf!"R' }'N{ ]gtz #=A" l# ~!lB2.pwgpf&1`,pfR@n2t0ft0R0:` fPRGz$_$=G41pd"S; C1{W*`T**ΐ*Hz/%3*""POg VȠQ(rQR!`$*ѐ!V >`0CƻPRUj Gl|B=@/~HEonoB*I{*GJGn"z#pE:CR:Gp` P`P JEgc=ESP-`dԄiq(x < ab0)H!$HZQ`PJC)IR9|V9|XCGt`02E QGE0 g Ap@)`YO/`,5 pXN`N>`@l` Dl`6FP$(I`/ 2gET$_8=6=@,+=J=T=L)'((v)Jt($'jD *tT 8p.=r=h5L=^88:0:&,,,# ߶"+_"_Ϡ/ /\*ΐa5v\\?$. U P0(Jf 08 f ꟊH@B@Ph,g//.̨h-_m<)8su Nuށ0Bg4/xH \b6ph.P^pL`( U"P2)2HAJij Ҁ3AV 2(JҀ1AWJHA2bbiހp/ |HuBZ.B"~/ /,p|z{([P/tJ@gJ(HRF-}֠ ]`/ }жN04:g PШh ЄGl~bpH@4`}Fp*(T&r(خzRF0 r  gЄր ̐|P`'Ze bށ4, "4gj?|)ѷ\$4\؜jpo"`$H},ܖ Ph(NBg` U$(T[?$2?oHB L=@(^&Z(b$ _$Q42HABA Bƺt 䒼v*&ޥoDl.& " .-W@n PwM&6кg_M-_R࿾-Hx|>.(oJg<(@RWD,֢ܢ`梶в4N:HEBE_\m`^;nxHӰ-"Qr0HڱZ:`ڂ` :QփbPS}D6=D.&Pl. ߬g=npp.`J8 Wgx"(AnGh&(W`Z0b,"1"0Q-d4.gAgYO?ðiPaf#s .27p4(g#_., 8 gQ6pg w00%` V/01.`#Z^Q 2DDJFQ2""  _La0"Z8b4NS9vPnA`t`fԄ`ԃSl0Q&0Ԃg* f Pf/!B!C!D L*P`"|Z<|B:: :$'y$pJ+1f aP1JK$p^N`\_+-g  D(P+D +M '@l'DD΄ +M'e_$Q !Z@NQ,2 UBB!iFgF`)g"(L#A(2ҀR!AL*PfZDD[FJD P$,ZyH tJh gH傚pD4h$bL"Df(8 fpkZPJ׀k 0aPNuZT 0p_r!6JFl֠ڢ"`.Fn -K K"* 0,_HЅ: U$ $ $H : n:lH DЮ:l l %ބ|T@p0 @H>lZ ScPH D=0pGr2Jf$(.J0Ї @Єrc Ҁ A:3`JEm>`J1S 1 @>`BG#h40Hf1:1<l-LFJFg.SLzz"# n,Lb<2#֪*2μ00049d0JGlVIH?Z0"^?p0v84;RL86:03f6ްb ޼1*0@` @D @00.S1R@E1@]P1BhDDD Lpt"x `"i+NђR!(6/* 0+&PP%PP%PP $0:9J^g 8 `&@w^ BD,0Uּ0*@DEԘ1&@\*@V.Of(@@PP0Ԥ6TOfLvG@ػHd0ؤ63l0I l"pp00h ~P@=P@` H8C(@0HA =_nR"R(T0S / g O"XbB@la⠱/̐ a,=_l@b0dL`ktBx^ 6UO/ Bg?W0ش"f=|lg'p<`S/<  gvv s*gJUOHnxq/<"TO"0"Q JG4SBrpPlQJ3gJBo RHSBP`RIQgA`6vqxs|p2 _ npޒ np hM_dp<T~<G8RDD&O"K0gS@Q=DV Bp Fp_kJ~1f&RFSFԺ@mCSZG8߆`zN8GFGlah`$ ~j~la`SCRDYhqП`:ЌG@WpC8=00#6`Z1 PJ0`os l9@oRDSCNuBtJqX?HsNu...@#\>%G ..p@x znp"Q wL%wT6 K,&SExr4ESE`RAH`Bp ?%J_LoRABnA"J0V[J@j?RCFERA`REJCJFnL$O" ҇E$ "L` c g` K0`Xŵc B`JDg^0!$kR`Nd@&S$O LE"Lſ$2<$`D ZSAoVژ`0C\q,z`NukOcs#iߠޠ4U4ޠ88(pB H88$x 5j*(&*Rj@jNPj *ʰb * fQB@jUOBg8 ^P ^B|@p?<|pa QMJ.gnQ/8 ! vqI`! J@gPu l(H. ІLad0.T@Р#Hf$HEPjgjz!fHzb1LTaWd6rTo.\|pO0@R}`ޱJ}&@0SŰz6 0H prJ(gH0| c x%l `4B d`H?046t2v pSDg*ޱX`!wCg>gzxa`p&Tjg:0 P1|'0PP&H&wsr`+`ʱ#X0"D5 ^0vJ@gP``@DLP6$xB.z`DBp zBAv-1V*)wW 9R`4..\p"fV(~!/BBp*J_f< T PC002.B1 T# .H9@rXԱ`v/ $I$j$R(g@ Z( f.9PAE9SDf$_NuHpj0<0PfVG|]Of/?Jof ޡf }V` 0 WJX/*p0<>QL H>”hx<I |PU<~)p*8o04 SBJBB@up/<ޡX gL``pxha?JDo 0? ^L|.8+*K&s0r6+Ա$"YHp/8? JE5E'Ea (vp 8u=lئq@Pnp T0 @,gFf`0¸`а pTJ_E/|v<``@ְRfz?N~Jitff^%fJ`t@(@f6`2kf,C`Lb@Df bDLL#z3*LNuBP@@B@2`0@Q Do\$LB@>SG46C2RA$Y:E:3PHsp,|*pl>6??xp.300o46C(J-Ab:E<F6307P`7PR@`11$L@0dLNu-@n N%ඌ nRh$hfzjf rv_(a`2x]JgV-WoP6?"?RQ6JgBg0<OJ_ޱ@0A~т޶q`\OLl8(-SusanzNu8U{/DSTR#` "Q $Jg< @ Pf`/$PA02.o@npSAg`N^ _/PONz FpH@"_XO/ NVؤ8&xIz|PHC C(jf0Vʱ yBnp4**5B(.WJ r r(`&/Qʱnp@$*f&LN$JB`p0Jag2IP`$0rd 2< `n5A*0trr1T?2j(gBaf`?<.Nu"yRO YyWDT(J&_SBBg@kX:gnDHQoDECFEj!PYJSfS7P8!a`JC|N^XHnp/|p90fa|piD@X*m8< +"TD`r$pqJgRDB:bp^ Dg`+s:a :l"sWcrip#"JpfzA"vEHIr8<A` &g&Cg&+T K&CHNLQ G hx g Rg PQ!LȅvCށ"pjrr >(e4l@JQbr?` 2J"@"Q0)g:/ "$Ip`RIbBSg"J`gq$"_ON"xG=|< lBZh"vG 5YSWP,`)_6BvDitlcT"A2&*2( \=Ðp08z@2< 8f ,g2<AW0Q6<@r4rP&@QJCgl&grPb@ $@ RC p.j eD {@2 R'hHL P$T(X,\h0{b1cB1`JCf8Ta,BDk`B">Xa Rq(:HDaRDEo`ZDFOND?1 JfNuXO7DT7ѐAvFX LHPhLLP`LPjPXL\PPPoRa4` ^QpJCj lqop1 6,zb&@fv&_lr9CCP+x gu Ц2 x t*/<9x4:(G6~TPZ)H_`0$Hm.QP G,)"FXI64+&4\Ps rPd`&4TIkx2I 3rg @0gg R!4@\tBDr glX@0d[fxRB@<:Dl:Edat l`6`2I5RB'A4EnР<:hv`$HBEnb4HB%CР G*(>`8<0H$sr0*8B@DV h@?*g jz`zZQpB`RC08 `f0<@`<*0`0T@H"$680 4 <00R@Q7p. ",}24N@ށF i`#WA`d duh h:Dڨx<"0:$G$j/`2 R= (lTN(AL QD"܃ա!Jk"$"k"H%IxJ"QC0 .V"^tpէ #ԡOBxJ"9 8#\6(0ԡ0Pa,gCa$g0<Cag CaWN@A N zø_g_NQuwB"?8~-G..ob&;0gXprt($@x4H Fg&vAHC82*fQ`Rւn` f-D` R2؀nz`Ap Qغro'vCA240@/ Bm$qn4)&?J$1 gk"BX84_HU밂{@4"HLHoX 0=BB=|@Ag A8=| 0-HP=@Zz 0 ."*2b 0 ./?.쒐N0/<=_,04`%*1Jmw&=|sppj1A`70S±1j2#`#0.ap@Ȁ !B.Bg8$_!$ g>$R g4"JtHPIA2;(42r` 10pꊰu"Nu.Bo 8tfr 6@xgN^vVİC@C@ACx 2pNg D T &ABN >NвJogt3/8 _$2"_:20fpX$@@5wJ&J@g @23 ju"g 8P 0`RPpwIA>FPH0!*.$ڮ=x B6PBg%0:wrrj(.P Jk E0aX@8-S0g//mqp/ Bg p/P<".|<JfP ܏PﰄmHg Hg\"`/PL"?)`"p@㨵P1bDaBr2I0@ @f.V.fd``t,Pp`rJfhqJg`af$SfQ P?QJ_oSJgn.`i`f0$|dQqiRp``p "(01 Yp|(@p$Dz!2< `WðgQ`@P]ް{/ QB*p mg a1@*An"PRD@ږrpSA0CѿHĜppTqy"|J|uHjdu`^H瀀?8 Z,:KCHR 2}  Ap`6\jgz"jf2< ff`F VR'P"Q/ vqH@sB@@&@(j*g̰4B"Q )` H<@*2drr2P(`x(a$*f&B&økbDRAaJBgw<'17S?߄A`'|"_e8. favڑ0(lhx 4aR>JB$P *jV.XNQ_j>2N|>/ >`! <IJg4a:! (_R𴾟АԒ9ڑXO"}2hz Anp4Be&nN ")$n<`npghf,?H紓81Q 2~.BE4/]ɖf ڑZcP: ڒvnB` 4^mZ/,0 =D*0]OA@Pp T0p0& J@g @o,g2_8,`0pr0{&LJJP  + n f ,`SRA> /J:Ҩ _fr0bPXOR2H@ Xlr` _&L-08ئ?,a46VS7F"WQp26gH dnXvj&5&k`2SASgwGb JAg60`:SA0$S[f&jfľOTK`ڄ?=j(*5A(5@*RjӠ0H`gB&Bg2Pffހ (*5<Сkh`@g2@N0 H@0ːa$_|+`Qwp^g잀&U0g9vqbrSl~`"s~PHи2{ԣ$B&Xgh?a!"ivJitfnvT`Uɐ==SP|TD_J@*D2?</0r@!fФ($pS /@f _H@H;L>?;X/`g _XO4UPnp^npE",Xn,VmeR pT  gBPj/IN.0 Bm$n4)&21f irt`]Oa(4HBt _ H@2QHd@"O`BQ9pNJ8g| oP&D)$X`"BN"_Xo2`XjAf2"o. AG P2W@ A2B2@pA@p iRA0>$@Up>&N^ jR@yk}'a@gS@r h@2A]XP* K ,&Sr#8UO.@/Ul|@0| Nuqf3K#NuXOgF/^>" f&f2i f3V 쐚#M #n _Nu!g @|@?@FN{eNqNq$+8A<.(zM&S0F@"r"Q(1g(T Oiw(1)223pv puv g^0"L ) DrWVɠPVg]Ƞisp$`Ġ& e_HRg,`P0<ږP0<P0<ؖP0<}0P0<̖P`$ZP0W<PQP0< PRE + &@&S`(8L`L0Fw0B/8p>S|p>")Rp"$j'WH^2T6pXJBa'WN_)  mdg4f?I/Ͱ/ N!-Jt찺`H2 OYO"OB1t ݁|fJypN6Lk"_/a _ f! Ġ#PW "olQĠ]F@#Ġ2v}6vg/"_0#TT~:8H8"h fBhv niಐPL"P-Q°)&P-x :R* gHQ4 "k \`ցB8`wh\m~FP%@*Bj0ꒀ /*Hj0:<x !iB}x'2@$ân:. kT P`ry*:pgt*Pp5@ ? p(g,~ JR` -j"&:R-MK%k."4 &-x$D".$f!$~¸HnH¼/rt 8g @g B"P JP(`$?Y`//H5|A[H/0/┖d0+ k2.nA@=@U: 8n:-5=;T"UHi8 *@{R2gnRAId ^JAg^!D$%8n&*n?L o@HP eAHP A4ngABm`BHЁѐ4AC" gI""$"8 f\` \``\ (x f(T6`|f(t4k/ F,gH(lfT(9k)kw""&&`휜/ `)S2+A9AQ/.XJF UﲨNS{tLa>~$q1@v ұ Ȓp,p `j`jL{8s 8 \`"8fnx"gn"A"QĠ"0$n6mH@0"n4mq&0(m_2n`62}(&m `vn np?")ff!Np,H8*:`- P'@"+&ݐ"SI.~!L1ivw Ҩ ߢfr-R &)*T* >) 9@(R.&n݁@.&f!b-&.#C*"(,2\T`^!$^!n!L((hB5Dp8e!2X2p"P֑$À@4$b@ 4BWZB000080:) 480"80$00&`-f} ~pn2  Dg*p0fdB?}`l/0`Vr2p&vY R$"P! pn gϰo YO"͟l1` !TB$"RP R P1|0XJSB !``88rXg\Fs _. NE _!BK.׸TLDI"_"Q.DC"_0 _BFRgRND2@ PJf`1BԢANpv v SJh/j.B'H`Jg SR Co/6-K0SᬐLe:BPO`$H" g UH[hDNP^RQX o(@?_<HP@  &U\S g//&V &U^R>$hO_C___WdX@ @UdUONV` x-O,~(U&T$qRh1Lh.P! CE|2-AfB]HBB0._`Bg-v":`626?=A^`: v-H/H```>A8Phg (Lg@Lޠa=eTO",T(lP@ pf_$H+<2t -@|<P=nB"x *"QJ)6g|PCQՌ\p\p\pBvB&B_tpXtpltpJB.ypS= pi7$$jh$R$*g-$B-J$ppjL=j,Np0Lp4zvJGpg ~(j8J n`^S@0EB.r<$nJ2Pg2q cEB@4J2R @><qZ BET 2TnfF?ʀfag8`,п @ppg 0IRg`b0l}pqf8: 24nL*R 0g1460h@o=wCJ@pN@pL=n4‐6bH@ZVg-HvCz U֠npfA,\p$+0-B=BHB U4(J=BfZWT[gJnLpJjbH UШBJga,^-@zJ5j_@4+Dh@P6. Cf Tg Jf,`m x pT`RV`+xSVԁHBJ,Rp,Hv?, o퐞@CC@`lnԁp84.׀8n8-n"< UhJkH=Ab2A7 Bm*n?.=|}V^ QRlPV,rg*6=_"sQ P{/ ?<,rפg R2.Ю|-@=Aʮ@p]RTfT@ &@d` .rp@m\. $8AHD8.h`8.Fz&{Xf/`>RF,W6.a,HR`BC,_W.$(ش4؁`جSFmJkv_,WCx4pJ00'*JFoSFAgJp( 5e  g 34o~{,e W(j 6hE$HBԴ 0ZH M 6.n\0H@BB"SC0hPQ:Z,_`#J B@䨁TJz"($0\ nd 8z"Ғ("/ 2< BYG{ 8И y_XG"Р"\ҰHDHF <.F:MSEp:?L?^?TNC["R 03<? 03<?   0 3 < ?  03<?000 000030<0?00000000333 330333<3?33333333<<< <<0<3<<P`Bہ pNN`RR߁_Z_ޢ^^UUUh"cj#cZpncZpeeeԂ{3c”󓋣#S㣛Bs3򓫳rqXhsAD@4+Gss upA;I >Ĉrߔ~B   V:L,H5ߔzrsߤݸ~٤厨 !Brgpx@d01AU QԦ{q@ /xр‘U 1 gV Nu0@J !1쀰@Mk B,>P H@YO=CJg n/8 *HnJ.{gJ.g.\0<Tp$n $@` g` x *(P x hh P@-H * @GTJf? .A=EBwnYO| < P$EU"7"QXOLbg @Nu0.`Bn4`:g26?o=A^:/.Hv Hn>A PNTO",T(lPBvB&QC$l$RB.80V2 VSg 46@ v@]H@V=@Xvk=_Cp*bP> x E @5 yBnj=jlj2 np4* jtHB A*00 @f0oH nX j0*D@X L~ N~ }!v0+Q Sg @_fp!Z2 VgA-Hv2 g nfAuR!0!g( i   @*P(Ѐ-W@0 }!Cz H0U$+0-B=BU4(J=Bf2ZWT[gJnp3pJ+j H UШBJga:40zJ}k0(4+h0h +PTgR6.ߜV"J0`+S40WW.TԁH_BJ,B ,H1NSC@,,v, o@gRCC+01?@{ jn\04.n Bn B-n\@yd0` 60 H@B@Lt460 HBLB I@40v0=_@H@@ @UD@ @BU@ N< UhJ2kHA 2A7@20Bm?.=|}C k PHh PS?  Ag=_A:1r2*Xҟ-A0]*0TP"Jl TPhATPTg Sp P^p2EPwhn00_f r0Uz Z`"QQ P g/ $Q?<(RmnB'/ (RtJgLP{B.z r0.2.ؐ]@fc@gPx@v%PAwP PPAЮ|-@=A=n1]z$Q/.fA+T"b0` &@b0`p/ $_`\` {P` 9`@>P.@4, XTACgV=4`60 g,6.UCnLl0Lv`VaNlw`8`Na` o RC` 2``-CHցI4a:@nMTE0HրրhրHօօzg6JTBBbpPW \g0ZրHւPPH*qaf&bݮt3 xNoP@Tyqzg b\Ё̪p!AЇpPH}q& ppns$ n -O*Pۈ # i`@_J nrB.&g @* $g#! / an(_gNJ&QYO6/ P/(?Qpo?(, Wf"d)? -@*q@jBjPjbJP06n4KJ46C?0pOfS J&f @4Ѕ=`(U-:` "6`R 8N/~܁>P4@o=`߮`pQlN~0XgH0Zg@!f02h2.z0*]O/AhBHoSr 4.p堀BnO 40rb<* :P&pSC SoJn 1_zgB p_\SCBJ.`2/-O/Os/ԓBBb JnTP`6Q,0 p".ѻ H@j,0 C _-I @PrAX tV@d g_@A 6 PJ -h`P`lvn8`f̃8`hn" `,:.tRE n60R C F`".ӮSn^oz  g (0TخznrntbЩgKnР>Pՠ40RAoh0bCxg Р=pRv8lokq֐C@@bo`r\lH@0CX bH TnUWPV6nʿL4DRijk><.wk(,@.v( L@8 ?`pġ\d @80TJ!2`|`:.+P*,&fWE( t6 _J0P,~0^oB@AJ0 @ݦP .`*A`X$ng[g 2o8bI*6s* g$>Po PА > a>CSGkxHC L<Ŏ $]E, F@r {g:\bFhzX*n0 p*<F8N<FDtP^DC@fv RLĖSFCx Wf>@x40F,Cp c`XLQ@4Q`8@=Fd4,.r#40nR$40;Ap X n| C EÐ nfJˈXM`@rfX@*ˈJDg$jffd'.d಺C^LnIaDgIځAAnPz`p jH|K PcWڃCCdtn(Pe@X ҅WEE|0bVgbkz&2DA@APZ<̀C #rH`^0'd, pw$gdDDdmL`̬boPNn` n*n~gP>bNbL`* U&P(hP"$B@` @ ␁oQt Cf<g6"npʒKSC< pSFx`؂*D IYH2 @YH#}Q0 pqb0`J@m`NLD"H$H Bn:g/ GISA4& I#㐿F&_=| J- PLPbD>`4|0`6f J."ASA`@4`L4PLf"AU}@PN@AD@wPAHF_&"H B]@0jTp OSGްn42vx%BhERCˮ&_^:8`p"f" (.YO/+DllJlbl l| PXH2XWgl"Pm@d"$"p"QJ@gQd`J?}Bg2XIRQ03p,p@p F?L/TDOppZ$s9G+F,gpN^wGpHpg< lxbfgG;p pZ|`pJp ꒀ҂|.+oLp`t/Ӂs)G r> U*(B.(Ffg(p-B"`_pJ/́n"E(rB8 8Vvz8 cp |krnp n-H`TUN^hQ "_//8 ! 1"#@XuQO O/ Bg?RaHwh /nc0/og׀>0i0Q0@O ! ȳNuXwU$t[΄W~QZW _/o//Q (xg @ PNl(tUQoF`""a,[`Bg/b?_/ _fPЄWD`pH` wuQajBpJN[U!oL`&(pB@6"v)p?/b..~tW"_ _~// PB͠]poR̠ DA Pgh(N20Bg=AU "B"_)IPp TJ(P0( UШBJgaJ̠[B`r" )6gD"x"ih"Q )p,"@Jg&"Q00 2)(i8VA-iL"_`&BB"_i )1@<:͠  hQLf "T0)2oZAHA-A&1|/L̠ӂ0&JG4_.`H~J7о@"J2@JBoSBBDJ3@^@-Hұi{&T@g Ү &0`RBDBn$1BL")ATHALL :r-|0/H8$W`&a`6S`x>gB"@(Cg4|z,p 20FlFE6<RDCoTO8.B2"!pvb _6(8(tF*Ѧl@ҹ&$gg @(hL{&L`-Lrc`HuAj@6J4x.JB@$G py^0 0À40LWx. t%a@\qJ_`hP"a`J(RQ@ 0ga a0IHЁ' 2aN^Ԡ2ܰW4 /Jf`Df08 f8 fp H@BPM V hPBɬqQ4" ]qCA@P|]JU j+2ѝoB(0 Pܱ"U3q""Q#_0JAj!X_02'@0i2`NqlTH(U&T.+,1Jdg:"l^ QP f!X@e !610l\el\/ ?,\`0`g///,lHljl0Ebdd1BB('G S"Zp@aOhB" P2As""?2JAk1"PJPgi]`/ P`ޮ5C0z2YJAjJ/j /@b(`"t`q"P20 "o448NSsaak 0:o ٠/ :BD` UCp41}|$8/`pH84/68/20DjD@2/4o0@AAo0R@H&o,(o(r2Ё im 1m n^(p$Pc 0/ ?ANA&SPA6/0Af 6666`lnCD<B?W?WS.2HA2< ҀJkl҇` LlҀ:YPAg 66:QHARF҇FfDgQP(p,8n _NNNVH|-O-M6 U-h~&P0Bm2+8p bp A:wgp/!`h-K".ACE t2-ABAp< ,r0`A:-Hd1[Z8 8B.t2 8*K$m$R&m&SLCoCDoDm6m4Hs`HnaHjHk`t2g*nJ.ga/.մPRT`V` R00r S g/-a?HGLCx-G* FgHLX`QѮlP hQn gRJ` R[JSp`&xSm3SJ`Rpra`g0a*LOXv\rnnnma}t:.nHIp"{>`pԥ=B\qNB0HS=DHR@hS@BQȈOAF`-xW|6Є6rqp Ѥ>҂(`pNЯnV\rVs30G..n(.`*.\<.`SFp@4."M Њt2,4PQ^~chmgFat2Trf|r>`r=|t?|vRFrSF̧`-Fjd=`vrN߶anA?i%x,Z,.jnKrvR pm.fPRLڣ.nL> ?p?2z0Pa_2|ВpvF̄Ƅ nhmg^~`~`Ag@"†F̔(SBgFg (i` ((UBngʃFƔ(`N&̃ʮ(6: `۹&6냽e&a~t ,FĀĄ]SA(g< p&ʂF&0Q}µU°&хǷ&FǷ(7n |`<Gu|HVH"I@!iP;`hRDpDp s;`M^B s;`(bxfeȁz^rpngJJg|hR@fiF6FΖA|C=*$HB(势DJjDGFEJGfFG:2,"{pA g \_4NN!"?Gـ/D2ՙ;;`vlP2$GՀ؂ؕ@vb٘[q^fpzԝ،"@6Nv9Br^v)DB4W 5,cpv^be*̓Žhӳ4ۓrN'ӳ tB4W.㋳6cv`bnnmC;00A*@$E mBEHE E lB>.A:D(="PˠjlQ0tAMBN(X$2 ؀0Jq0 B`evBJUf\@{ LЀЅTd x ,Ѳ稚  Ȁ<bE *!@`*n @&@LdΈ" ~ަA-OJmH?A >`A2!S굁ۂhXpd B eRX @dX 0m.X 2g:X :fgJaf,zpxWf@p DolX!mX /np-@W.   8&n-|D@-Od2X f$ xD-H<,0'`'Ba`X$dB7ƐfN mJ!m f ~Y g$1`jAR.8`C0YfQfR@@ @fPB`PBBF0(`*&0 pB@X lX g~`,g 0|!gPBAh-p"Z1Pg: xؑgHFz&1X $g:.n!fP 0xnph=@z4x&r R DDAx @=D|=A}xQR@SQ) Q2&gP`"$nNBc8PNcg8A@ t| jx2Sy`e(Q222=|$.>aNco .D(Q`pHF`` RG/G3 ` Q|G@ac@fH.nNu8.|,.JPgkςa2pvmP`Pn1G?qQ[`" h.r p5DTaۧ-MgagZSAosaNc'm'='ppp'psH G pX ]p_ ppC |p s:f&JCk"D8fFƿE-JPav FE`R`qzqwr$M"L K$kHBƐgIÿ*ȅFʒ$`Ԏ`4rb"qx"*((.쯎*Ι$*`i`Ѳb҂D؃&kÿHC($Q$xCDDKNC "$~j`i<:q؏ܤsYʙF $ဢhp`?(EHRR2Hd3t-aR@ql7qL4PLS (*svj g`ƹֵHpL*(ʣepƀvτɞpƸ2>qp``L*ʙ(Zʂj`*F̂(Ȓ,F`½ֵضhB nj`pNt\ٞ \`@6kл8qܣ Kx8HFCGT 0`XF;G` g`ֵLz:L*W3$`ƞܩțRqH^f`^ʂɒnسܪl^ʉ88I`ptBHfP tA 'g0 E 'C0Y렎H@6&܃؃N·`G K<$|oHArHA~dHAܿBAHB. ȇ΀*& ƅʀڇ*LAN`Ⱦ0<=4|B nDJkTMTFa6&N`aXMA`>8 G@:6 E@GCE:Nua6<`pn&x:~rev c06QN`A1v. H_C6.$A"80DD΁ *ʁBEeCc0,cBEЅcH@0H@HC*` K U" b26<Da L`~ZGߏOBEM D 0.:HW:t6ytn!Z?(p$A"<&Ƈ݃(Aس`2<lH2DV6ZGCb8iAGDq"~ pȞK d00x^ʁ. PU+d17d=%ClGY"btc}&RdֶBށBd33"i +,@~Q0TION/O`j(IA* Gb0bHGH@_S%@RԺ4Y#SEA`\OnO@UE00U" *xO@O0F2m_(Ui)&B_TQcYT<cTbo_qe____UR0R<_]CJ6Rb%Wrp6.CBg2w:sq҅HA:.iiWnQ0Rj؈N&`ptƅʀޅރ*TތZ|!r@loo& 3O1EM@EC:t #2`ƾ?E"0x&$Dހ+#*fgR0HAxDADA؃HD4D6K޸8LLvHGxHE@D@؃8 HE$EHG&;*T`$}F/"J cCJgreƁ$ˏłBDJHE MO&:tvHnJ( `Ӟ0*A&n*.`VҹSH2oH0Aܧv]T(f " €F$ظfˋ`r G(E*gggf8g`hgGj$* n`\$n`v~ `b0,B(FnDR(wȒ`辥Xn` Gm-F"!I=At0A"!'"@& 𰗉g("~ f `Y`NJk n,gd0nz4nx'v:O1 ag樰6W@gtNJ2D`G?g;G!g`aH:pNR`HŻHG``NVH. NBld "P @f2'_`d!4P4TJEg 8"Jhj1|Nu1|H" _?< o/ NHk NTWC:// p _`0+w8W:N"p`p _"_p` p`p / UL(h x׀gph/?0 T U"P$(~BmrDrc >rDri>ycPycbyi>ycPycby""|2v`>sdEuu[qumw|cJ+ ys؆+kL`0ZaUd0TMaďʁeЅa捾aicӈT`@~` 80`ZHpt`ܒp2 6ցHC0WH@LNuܒ`AH/$LF"Mrv4.XBJSB WrnJ.k @ g RNRTƚ Fߑ"jRgNuE(ELE^ASB^fX`~o KaGkl̳0ЯJ̳3`6HJDpvnpʿbXߺ3,0i |xtplhd`\XTPLH"D p)@@ fPФn>m&0*2+m(Hn@AoDC`S@nnDDDᩜp̀D0,@(TҵJH0-*U Jg0AHF<G=Fp*tx[JoL=AHҀzāgFS $ X0CJCjDE=nFn6nhf,? ,f$Jf 2AfJBo2A"x`4tdN @ e-n\@d0m(2g":ff$.\v"1@Wf{0gLHrg*|HF=FBFHF-F6.,SCFCBSBC=B*&B-I=G|=|* P=|Pt7t ~(,=B0 zv/r =Hj DDv B܃$A-E n:]@2SA$kh"SB0 ְ-C|n GlN@2'&@ @ r0 C"q-D&.`(` ֱg( NѮܝ̡@l3fNuRGG 4»Nu jh1`0p9`d 1 IД`! .|ӷp @ @ @ @@z @ A .G  F•*SBgȚ`+$+$UBng؟"DMh7f0> rRB 8/m. Bm(0 6 CFG$1f6K0CG@Af& Ag,6pR@R@ gpG "KWCkjCDAC K`\p6 DCCIAR@lrYBvBCAlv PDCG3 Jg&$KJgSB6KBDBE% `"J4gDBC# 2 IJg`SS 2NqN $*jP*~QjP$_WQN~S_UYnTvQ2HASAgHAjQ~SZS…-ACJf`6N" ߀ȿHLm",ePCn`lC2nm\\cPd`n"(k߁rg Zgfg.p:AomkdHZgfcJo"b$(leg`ZhGwb$u`Jg `B^#a(g.2aNegmswPd`*e[FgpyPd`kD2`p,3`yJww&c`&#a4p.{(nDq_*dgDZeZgD`$p6iEtXKSC…*"L tVg:Fǵ 뀆P@˞44tQ *^҅f$LހDĀ$ą*ڕހDЁހD|:AJ.ngD^0ƒaʃ`… †pMA"c?g8t5`̠@m6E0 6 CB"6 0R@H@Cx(pV6(F"AfRC F$@It0~oSRSCgpCD@A@~@," g t]LB0PQT́GW+X8K6SC(ޚ,t\PtpMHg r@ADAAEztC@P"`^KpC^ K0>HGp&O&&%>iG4&O" sPwQzQ#PѨ&OQN "QHGNu?…† vKCg~:A,́LT"$ÑȞHڐޚ~(J,m&̅6ƞ`-@0:v&SCXK~3Ā.4`zɃЁHBހ`p*@ ]^&,(XFG ?ȁ*HB`_SBFXǹsF`Ą?^f:ASB*(\:@\NֺgϢʖf"s g`H s b!0׳mbgMջ1 sJWjwJBn.®t8'g,9E68'G6[HC00ܗЗrfjk`-g ІߺP[eon c Ӫv||v` |(d`6HZ` V0Tvd}Gfx`U (z `,> cO j|B !N /p8] DBg6 :ʉHC\ kkWn&_6 .>ׂ`~(f`-@SBkaJ f*]radg , 9f1Y`f GjXM`P'Ɉ'`&Ɓ,́f&sB*Nu 9g /$XMNu`@'>`G G gNnV!8']"X'%uH5>` 䟮` s~pJk n,g`/t/ g 4RBg`>` F(c) Apple Computer Inc., 1983-09 s sH /"///NLNt:A`8``p@@hl0(0m0S@H@_Pl0021Nu0 oa _PO.a;0 2u37*O~7/x$:A s  x P"_2(&_h"2FR(LP$2 @ K>U hDQ"2A2""^] @ b2NUPBPNPZPUfPrP~PPՖPPP _H@H0<1 n EH>BxGH1mmtKntK^4l03mCH>b#lN4lAV5V8T_F. G _ `$a"`a` _2jDA ` Aa "_1VD````q"_ _"0F@N U0E*π mwFHhp/uț2&ta1tN_H0/8Ёpq\8.0:. h$AP$R$j$R"W&Hfh??( OB/B <1,PO&x$S<j "Ym YmYlX *&@fB! PYY& &@p?4`Jkj+sf2+Q"Sr IaJg*$JBg//.` kmfJW`JDVDDD Jg /8! GpN^`;@vl4Svp4SHѲ/WPOBgaa UBfNu 9o ~5THH o ?p n0Az0A|FꄘCSDKû`FQ4Uk1ko4+Bl2HH-Ap@vBrF .ꀔ@JBN@.€ƀ @JB`Ɓ ƚFƑ"&SBng4S?t<npG&n_xj 3`XFGg>:Aƚ< "&* 4gV` &g( g4&YNuXIfXI`"ƀ{&f"`E$RB Bm0HS@" +oQ>  oN" +`yAƁƆƚ v*gwNu &f,`6<%P"gSxC>&H/2DV P"u tn/?xѾI,0 kp. x~>G^`*gG".^yXIG`1`":b2fv1I Ǡ9)bgG&$8GRh r/&> %D.gx?$9t$gxO?D+FH abRƁ܇nt 'g6Ҫ@0 I 'K@0]IH@6&@؇0fP"gL0 x:.|~&H"ro,_!0 }D n񰪖BvJZBTO]en c ChR*nRtXnRODP"gE@2OOB\@X_O4T!<_N_UhSdoU_ehbQ_ehb__TV.d:bZFR@T_Ud0CTMAoodP"g(i;Qoobchj} *e/e:pHWƟXpRjV 2ЁB@H@q``?sryWrrw_`zP"0glmP''BZ&R qgAf a`%YgP"gE^2f.ZR hخP"gκY/g<8 |Jg" .΁€*&ƅʀ"X_XD\1_SB8YGDD~FGavqPHC6Pt(8. ΁ *ʁBEeCjpcBEЅcwH@HC"Fs.n|"<$&5(;HCP֒̕4rz* ʁ.GP`dlǚ2`($,* Ab0bHAH@@rNu2`nP|آI&AU6XfPfRCC Cf B4"0x& D(b*fgR$HAxDADA؃HD0D6KH8LPLvHGxHEN@D@؃8HE EHG&"e P(84ƅʀҟ҃"Ff*.Ҁg ,ׁgڸ40<=0|BJZg2 >A@:6E@ACE2TTIBg0SBDAAHATJk SBTJTKTIT@XjƁj޿DCC`$ *K~ "<P GOz:EM ޅ  0_H2@Ƹ\1T2< 6GC/85AGD=XϤց">ϲdNZζZ:^߾E`\κDjpҪ:EE E}$ZgvC>HgrHDV [msBDHHE M썐O&K2&j\1:ps!"2AI.EM@EC2@ bZg &Ag^ >7ghgt` ,l~=|tT(H0z,SCFC4.rBSBC=BtpBpLw HPB ,m4QB^$>fJ.ngITI$roXBI(tg O(x<>tA ^2^F^(t^z^<^] ,qP~~pxHલ0Q(JBg F߀ƄB1UBm "`ƒ F ‘s0FNuƒ (Lg$ &F  „ԐV">Д/g( @g "@iJ%"INIj P"Q . _PONSS"_ _pN Pr BXp 0HAN/0? T$#(~%QTHJhj ( P P") U1|J//NNVB?<2t o!_W v :v >v 1|/ $o Jjj|\ x > hj"Q0<2ذ0/ N$_."'#BB/Hj NDFFIX !:#">#PO/<[!!2 2%| Jfp.N%H P ra BX 0 #$,Nn . #f4n30 jVpJw gR@/( 0:4:0>4>J@k _JpQf ?/! 0 f4n6#Nth0U P~2!g01d"/_`0%0< @0 8 Rk 0nܐ;@! ? /x A1 0_ BN$@0" yuApvR00p"jPF00 C_`g p400%LpK* N"fvSr \`5|-K Lb#TA(d">Zd">Pt Wd"@< g>4p p/I20Qx@!A!B r  :>>> QؼOA2@@ `~2/ Hh%`A( =p:r:` p>r(`p r 5&B QgPA`>"yi!*"QHHpN.`$"0 AJ0P251! WTNupY2//><""rTAZCjs0 g&@"_SJQg$t?&P"SB瑭 ANZ"S3Yn $S$ $R&J/+*C^N7B߫'|P{ '@L mZfAPp@2.WAoh-Ox0TH40.h&.`(.\: ndCr@g VPf<UpkXg)P)XllAkZ|FJEf&S0+Z @g> g $xTN`TBYB"QB@8Hp@2"QS`(,´$ʱBҰL,xN\` 03!>j0 N -@xH/30"à-HdN-_d.l`z>$P"t :) *j*Uj` Ang+@5A/*l"L>*h 0 p `=Ur=mtvE "S0nf6f20+XZf*Z"`g $&l$X"S4ZB0?fp"0:H68lHB!80m ;@ SDDgj9B9C&K&S| zJUgb:) v`V$O6,4,>HǖG ކFk$`"C!DC#cXJCoֆ$O0S@H{&ڶ!Q|bH&aG0<0H("T0wk PBKf /bP"T& S>pQ=@BnRE 86"bb0S@N0h0jL`F$p$Rp S@kNBRxpÚm h`L4f@50S@ڸ TJN G`/|f #8"T$qSz8x' 7 fچQDQSWj.nLN^QáS" ELEAB0RX^RXB7 rD=DĿ S/B`ꊐ`ƎBg)\agW@B U/(~//P">RGnz(`&؆Dԗ" `RBkSA``$"jD_4pph2S@/< / z:]O#Ip/?0pxdgxH;w@Ch Dwdp@q h ff6JfJg0fpfo gLV YSHg024 O f  >q (f8f(]/pDf  "J|B$@82REe8SD65`|{<dX R6}1k60F00F 24BFA4BA?@0F "{$F‚/@GJ@40Q`fZ?wpF pF `4PZk !HBx nR_Dn`qOX?<?F"JET!p0N!Pv]&1|T10p0 QnpNB< C$S/*ڡN^$S%@[5|q`B%:B :B$z8~ttu3`N0 !_b tu/N0./ ;}$1C2Aܨ" BBp_"":ĔP"`!Ԓ$_ރ(U 1|JBRA@B]|*̂p90ڰu02@IBر.رXFlxq _"_"b@bbbb"zDzzzzzNx̂^C4?"p}}М t`P\"oFaL`0JBgD@DAYYNu @tĢ@t֠2/aL.6U ` U֠"`upN̦w~Q  >. 0 cDk .`q~PD`{~QF1@UFh"\hy .\HXXj g.аذ>`??Pɴa _âdh` `蒺_"U"Q/)`@PppNQBZ_"ZWD^p8 fp/_p c2p PRPj|{JPS@" W]f`!PXF"PSQ0HT@$jy3ˢJ\gB<.>G`n0<N?>j`(:С>BZ?z>T!)/Xѫ^*f \E _21/~P(L hd P_`!1(U(TJ,b(l\"T.)gV&Q0@HЇ#@ S0?o(T@ K$"TgBp BB`"Q"QP є;Lq\B',<"ƾ kH@` @gJN.0l0/?B枆n n f( Wf"0Aڡа3kPzr^JT`h x/g @$s=|!-P-_ f=|Bn `=@= ."-@-A@4H@HA@pH AHBH BBg$L@$g!=Bt"HA4BAL@=N}XP;PB!T`_B@#T`up#0v@ >"fJ#(U&TJ\0ޚ(ՐB(B\Bќ>#"((p<<Bk ! 8לB\Dlnn ntg("vBa\*R _(0PQpjkQ#Hg0pj B#|pNkNP,`fC`R0]&U&S.+,\xp* G P,(0ߠgw PF#9 D /h*RЇrD @`G#BR\LNu`h0H8 G`g\Ti@0J-lX:d6L2!roK*~ڮPҼQPP "KPJp529U-hBBN FFBBZ F8 _8VAb f"@x ?x c>B{X)0d)|"L>0ј#-kO-_O0<1!nPg 0O'c`P ц#@B"7 @ATHB@BOXB Ւ 26`U4:`:`̂k4 ` :>/ NQ_i?)RʱhfQ0j n`1PXk /.n`/+ ʖ0:6>z # C 69.ApbP0@p 6?ʱ12Џ U!nP!0W )n:!6 n2L.0V2jP\KNV-O$OPBGb > Gg Le0 +g 4Hjp@??*4Ns ` CP@ e<@h GH0;N *R 6~A@G0;pC〼BL\d:lT 6 QHRtJ@ BA0,P$UpÊ$X00` |` V|hPP+|hPJ*2l9ru _p//?g ^` aabPOE ^`:awaRt`^`>aa>`N & dLj`Popb`GDa BA"*>g A PXH2k`Wf0(6hPPF|` B`H`PJ`8PL8`*N '@00BA>ZhP>&TD`H`$D`H`(6+$80^ HCHDz`(~``a:7_C(HC`$z`U&~`"`d*~`U```*b}&(`0Ća"`(fHC6к ~g <N`Gfa7I`(`08`*2hg{g@; _0` `Epz`BA%@BPWqWj 6`BAlq@vpH@vpvp~pZ,Q&W``X,S 2P/P\O` `Z򀟀`an&*%33| 0 x@ZA䫁P@gՐP@n`P@n g j8658@g"_dU rt-rt `>Pt<HnnBd'0BA j*4g4.z@6z@? z@ />Vv7_002r ?Б$R*U$,P(VZj@P`V@ A"P)R@m\@m@P"j>"PJ@gQQ&HʐHU@ϖБ@f1ZN?B@g$hHQ.-no:<  Y)$~0Zh g\Jc0jV*2P!fp xgw<@@ 2\в$Ѹ/Bg /HAh Nj L#8wZCpP f1p!~(lH:mEHšb&o &LE0f,Cp:~1(x:AR$ L=f~bNC>8B??kѸWR (L@4.BBBԄHBFHBz(ZRj@( gH(@@*2:ՄCXJj//d?/dNO$ ׻||ժ|||=_n缁n=E=F #:QYHN$܃nN?JfіZ$`T4P$6 4 U"x$`pAr"Q``~Dt0t0`@wtCXEWwUOFTOEtOwtUTwtTD߼TGwEEmUJEUnEELwEz/ ԑv0`B'Ȁ fHڄHRi`LBA-R-j _, U (L%Ag2aNux2*wF~ P0DHp@?2ڎѠ*``2l~0l0gg \`d#`.n8@G@1o nC.NuB@~P0 'TgCKd01D &P]@,tpN Uf/ѨL"@ *0NRPHo _Jb&$D'(Ct$C _b&(t$霨,&_"_p/$"i"h\ PJf NfP@N&!BJ!AoN/ | F0 _R'pC hbfp'RI0P;p(84D(u R/?~2*(<؎+'H3gP0,Q@XQQ|D)NV >A(k\(T.␞mJgh@mm uHlB//, 0Kd0`u.@2@D`x.+4"p0/oAV C)G4>+8l8g2 lJ2g;pD@l@i`ۀ?o@ C9GS8u.@:2@12LKN^8 DuH3xR0 n*, P_fzQ 0./.`^"n "Q0 P0PfwBQ^  PQ`f`\Qg.2PJflVq$l*P@pSր`BL`2(TRQ"P%$f` SRQ%ffSOHf\Q S"TP!fF"(if<1"Q"Q'0[@P*RfP0Yff.` P|@BzP: m  /]a/4RB\P@~0\R  g 0 >Tt?/0(R@`P@ʁ匎>X05(*B0<.^`8`u F@*ta%>\*24Hcd$s*grz>`p ȃ WzЊ]Oax.pR?b/taOȱ"o0L2 Ёq(ЁB@LAp""FapwUUUUpU"U"2tt!R4\Op0""8:a(`"~0T!_.1|2JPLp1 aFas` s"h"QR2) ihNlBtQ)"H// )//  _S*8 dhD'/ ~0){$P P?]@@0@ R|pۀ^ * PA(?`R"ـ"Q?)?.f Bn:if"AJPg2 f0` <L@ / /g?2"}`"_=3_e*Ђ*$_(lG8-OP 8@|>* ".A:*?CFm@Fg @Ɛ0HlƐXK"zp0*"P6KSC(KRK<ԿXLQPp&\8~((RCV'?<^ En`BQӠž`H-K\?} 0p|Zhf<NSF`(p$(K0RL"6apB?-P*`(H`p" K g.p2_.Т8 p;0 ʟܑrl`J1ëwԦ2P`_@lL ttގ)HAJ\g k8Bm@ CC @ޮj P.<(h@tPlxg ptA,>zFt9Fx` h@z~g4 fx fpL`pDtAzFz~8 8fpd@Px d@$<+(D.?/"Oa.\Oh@ZgDp€zFZ`,h@dh\8zFdhd@Tj*".&ߧR:U^Br zFU^ZjnmNtAzFjnVg,@l[X HG@ mVVpP 9 C+2@RxP4Ρ4>p(UpeP3Qo-WV1X\ç@61C0HS@@H&}Ŧ . @w @xn`,𨌑 ħN)`6<W`ppަ KBSb` o/ /a",lId삿8ِjJaj5=`gT:0p@ m.︜2 .Qlp y/G`,@&o(o. p෯g<@pG@@SfPɮBd8~@RBB<F Ng:2468(`Al2Bo4(`Cl6?Do8J!0000/ AҔ2\LNu"_#NѶf_02 "Q4UBJSBYYnzNG8P f 鐰g2P(THl /

?@OY0jDH.GS>G@Og*`[2L|SG`8 8 T/0`XF"@ 8h@N^S86 CpQo|(KQ(Q@a"K$L Ќ@C @2S4`PQnm Pn`QRmـmn "$ s#a%pPQcijdPH(Jefp#:ANVJngx“ U(PJlbR2 p[2pg A:gp0@n,=AhAx jBnv=|rCE#-ABA0.,rX`-d*`[ZB."$l$R&l&S fHـHkH2fR4` fr _S gJa?wp׊҂`pWn.zphqg#0-L`\~6fTF"TprfprX`rj`tj`?v`pQvR@rS]@Hpj6"Fp@BȮe";` .&@8=D6.ȓJC SJ$n f$Ol1p n`p-RȂPBT$L2+pHA2<  241xjAi%x,GА`(._`*.\",FLxPЩ #@$i gd^$0Q$a"W f P0-I8Сmޟ R"#ܑ$ω`" ɠt-Q נ$Q%H"HԐ (jnrHpvџRD΁(lJflJChf.brprLDS.nTP+! va0 @ "(fr`fjpPHC`@HW}ܰ‚gPH@pH@Cܼ0@g@ff \`>0 43`!a_pt. 1JhBk6ؐߠ) P-G0Z8D@LpPR"J@J$H)v"Q0*4S (* "@H@HA@gk vRCHA z(*) gϮL*/?N P+N J* u#n0LIPb T0 5$4!600ƀRg0R/p NpПXp@G0! &) #!6 1 @03`B'$0$J`g~!/,lHljНh"]2Bg?<$n??2 Z294 5[-<2x`5"k)6oHkXojo|j<`/An onXaod(ok 0Bp&FyT{frQ`j gPD@=Š @h]g(p HhH@J@j3 ? md2Pװ …b2G0`0(G0^P\0.^2.0T A//pr-_1.dHZT<.`HFBF>7O0.Z-@PXnP UPVLTLL-F l@Z`%JdHrQnm nZ Wf` ~JnHZ Cl2`4ӀNrP_@nlj{h(nh=|hgBL(,4DDCl.HDDDBl$HAz"&DD*HuD.zbp"fvJ\n!l=Gnjm 0hm?0G#N_N00 0wD> 0bf`bpggZDnJ<0H4`jb=n0 .TLz0X~0T0@T)bpffj861f 00F 0>\0$2.wJ=0j l0P=AF4.0Hj o0L=BD33J32LB3@0+@Bl)BaUV0@0D8e2tP0Bf0`; F@@f 0JAa1@B}A.IA`pԖNuBm@RF8^D01a02`Da~Das`}AAa@bRԈ1T]TTLRG3mrzܸ23EJBjBBJAxPA@ok4&P2pP&Bi(pP"P$0B@ѩ"w&2Ġ*P&pA3@QpHЀSUĠ `?/HiQvQNuDP[m<[l80T[L` ʑօՄڇm` ʚnR@H倒H;`fHӮ H8JX }h4bW JɠZ<. A{< v TJfJ0b g8CddDAHAa/-"BD$x$RJjjUO"aJgRD-J6$@f Dn>"n6"i"Q{(g-D͸/sAg\0]j`q6Dq/taf g/8 ! @Pp P>`p2!d"" ":AHWv npt0 tڂoE=E8nHAH@A*B. "gP  xNl! UqT TVF \B\]wO/rdp!s[q/BgV g>fhP\O'_\D`u&Q8)Da0ioՀ~&i lP ԀoH痈ڀH^@O ꂿ :) ſpڀ dE3ErPi}n|JRWFl`PWbN BfTW a("> Pnf0;` g08 .a؜`R͐p.J nƐvʴ*P<`KOHzNHV?Ɛ>"4 by@Հ^X.ٹ8Лf ?a`nPTg @b gx`#&TJkt"A |-ke  "x p4f@i/= |.-*WP.f U.~BgלNu *`6-I. x "B,2F"B%H 8$^|"H`qP$HWưWtg.t 6"w}AoTBXBI JRt !Y*"HAXhMRXǶƿX qBg RDj(B]'tHhrT$vmTdp//  Rޡ8p$OBr J"AJPk ggNg"HA`>P/ ` 2ڐ`l"#XMq²AYܶƂl&8JR)` .q/80up* P-P&P"Tx 8`\bq."ǞpHG@aqqHG@AHGpѬ@2(n. @`!"g! ȪJgngWh"xQ`""h$n6mH@"n4m`&(m2n`0&&om`mn n` j\Hptfxgrb\aaa؀nfD^$BdD\8 zjnjbbHA8 x`hb`/Jgd. qW 8Z@"߻ &grF &] +Z,qJ g"4(?pV}ר g ?(g\`H`/jJ/R`"TO a q`!D'n"PTTU* `:$uP o opNupNu.`!`̼`~`H#8(WU&T@\,I?.fXV g0@K\"f 8۰Z1qtH@@ 2Lg:`V,~/`.j.aN`N^\02*Z@kh"x׬f / H td@@?P"$*4A/B "BA¡"f|/wHVP.^p|\/ ph Nې #2 _`$/5gMTΠҢ~` `,|-Gl~;!Ѥpd e`NV`` ."3$&=Bg/Jg.XP( g&@ DF(_f(epgf$+&+\ !ΦpdI e~`a`~ ] @b `X`P'QnUԁЧPd@YO&pݰpnTHVπ/px<$!8fJ0fqU*SESπm2@2.@=A$np644QQ2m| @22@FA,a2?Q0nAP`Q8"O"62fTHTITJHAP`$4YB`P ABAfRgP4bRTR"f_ UHUIbRhP anUxXPbRP"JPQ'~DYPUaxFjBSFZ W'zdHtT `Q/0< Bd!(QO`.pc,/!|` /bՁ `ȏډK0`HBP 90<0ug2!])`82:2XPU[0~dv20&.DNuDf#r#8~d @N`P"J`glHljflh@p`"p`p`p`p _"_// FBp/ /S Ub!D$H^BNuNsP-90`h0|BkB"HFC/Arq@ Api+?^) ) lr Դr#%b2akZ P f aU`Be.Tdpb4nd/qp@ʘ "jJ@f0 BBƅ6__#NƇ Tp!@`BgB?<9Wl)_l&X e <`gPBK&\0,j xm nfp1 nH=@&ll/?^/BFB/ ?PJH 9Kq:^..} g6lpQ0QgH `xк p վHd2`AQ r>@1@{ a"Pp /Ҩ27 #40o0)l @mBTpqƅr20 _ PTHXX0 gPfTHX84Qg.(&T> Gx"/ c00l0mBB`ZG &_aHwFag/  ?X0?PFB: S2` H@ !vz ?/HNuW#Ҽ"QHi0 N(`}܀"2ISAPf@gfS@fp@ _PON}Ќ p`gpޱ1:@&~B' HpGf cp`X t`N R"SGnHmICL|t?qFBr0Eg`JEf0Pf*Qf&/ <|`T@&1 m$K`8QD yN&_ #?Bg <HR Ĝr!/@4#@BC8m4l.90m(l"vFC`> Xm0 @gAnDC`{H8 OB "Qa6Y2>gP Q gF IC0.Q4rT:) x?<0 E0JVf@@o`R `L߳>r#|0 L0,HF&S4 BnG뒠xN0H°l4DH労o`{@O( *Ot><"L`2[mB$L"MM20;m22`Do@o2`RB`D Do @g*V `b"`R6 C$B,HFUK[nJ9r0Cg&`d@ 0 mn f 3T`3\ `p_@@.H "@8ֈfwg2 Tv(  g|K`t =Wк`|1n>PO<$S`9XQcvГb~=G@ ` `` BonH(؄\؄-D~ &HCr R@C@H@倣"f6-H&HC@ C@(n(Q>< p@@ $@Kx".䒇_l" k@q@1.vAѠ$fޒ8|"L*&_p&S0aT-G "tJg:|D XK VD:RDFN{uT@a&RDCTD`aaT@aSD`a RD`aVD`R@Nu@V@@@@a`@a@A:`ݺB:A`` ``````````````:FX@&~pJfJfPD`$ `0?@NQRQSEn g. g<ꐬCTa4RC8SQpnm,D3D<@(PjUU`0+ :TNuB## ʐ g\aanFA 8+ 24<6`"HXo2Xfhl4(DfHC6w8)`D8bg`A0< =@5vx~ 4$$ C `q<3@3A3B6 @"3|03 p# _BSAI` B#OD{lHDm~2ߒ@4`Am4PE` B Qccebt`:Hߟ84$0I<)>)`Z6 C"8`tRlRDB3R#J*PQ2(LAmx,xDBn< .,g4"@΀Dhzf 07g @<=E<: P|P^|Ќdl-nd=nhJvby[Z:0riV[.0 VJ4.hpĐfpB D܂!ڒA0`X832142Jnk J LVjۑ̑g@` r=Bhg!l g Cf  p J \^֒}Hn&ʠ_ =@,md0.,֑g_.r.̠AW(I**@` "$*@\`u8('=.b U"&$,\.^gj@`-nQ\Z"j@\@XAD@@ 4֑lJpXRA+`~`@nz=x~`dҡ-g Ρʡ`p ̣֩!g: H@U &*&J&fd H fZ@`T09">8$H@ҠѡU"2&8(8*Du&Ҡ( 1(,ȴ-VIA-G8`~.Ñf JTJ.gz/.TIπQH2,€-ADAzp@K2-$ -w@$ xhXe2*RHAj0SGSH@kr`R@䲀A4BߴnuO̰-@鴐@ *g$. B P$s`д@ΐ@fp lX=XbPg&?~`J@un\r`nJĐ@zZbLJGfH֒, n<-x\XJ@f jg n,P ֐fF`}>``:XA J` ȾU0@|J|TеtB.[=CHoPJzJKf4.\VrD$Ԃԁzh bHg=BT2`-wOPJk8zӻf0Vf*f$=nJ6G.HRFgmд[ q`f $ fCgHp*CgzN`TEzJDfM(J0kPE RE"ra`i*"0Q %g*/)*/'?*Jx ngXO` 2\Ht]H=hb$-}q&*d *onp4娎Cj\I-IpPEp(gR`gLTEP~"ЀЁˈy Ȋ;W`gl0HA PETؾ0"`I05:+:86~#,1> 2.V-~2N 0_t/lN `& I9oJ7+:$j!dP zFАf@nrrSsx\B-OPp@g"eAEOg*SbDB B]XF`zqmAғP.PA=@2HS߁Rif.HR3@*|Y㰀'..XPЙ /<`E4-GgH@c|fݤ0DUP@z,lX@`*f0ݘAY4! @04RT4<``d4W@ZUA``d0`<@D*Hzʁ-E0jВ?Ё-@΁D *=gA`oo8`n=PUQ|D-F 0}mbrp@oQHAJAfS@`HDG.v&n2pnol~ @ѮqR}Cn.@poޢqZRpppSAo~m`[o"qqpSq n-Ko4g< @~zXqRGSA*@pox8.*.<-$np(n@NF~IdKm7tpvz<~,qD n8" (&$.ăF$Q,.z1lF4A,(E8.: EfB:< &npN.Vm"n"*hb.A+PN0g$ @vDp(>\~((T?zW ǖJ`$('*m@m\XNa-Lp$($[n7Ѐ(.g*v>c0e8N ]pp!qm`?`n C0cSBk܇և`CXXX`BO.5L 8.n}4Lg @x!!< L>N^0,|jHD0LfB-x 昳 Q F fFx246+4 B)jRCJB8B_A46u ²ȷIӷ²&XIQNu x*f XTNu8žЊ0,6HFHF8LD BHEȱHE؂HD2I4 BV A6KJ IA8BA6ybÐÿJ&fNu@|H@HT`$X/(7d x?ĶJ@HF^p4IJ@ϖֱϾ„"K"J2 @XH"SGjNu68D/j< xp")#y#o)#CTftQ.Nu"G" K FnRgJJgpЯ$J$R6tFohC`FtHB`&JEgTHbf"JRDN,$uRG"JRnGg$VOv*2I ,"YhS:v^{YZ^lQœTa] DW0AH@" Nu,  Nu"aH`6$R"J9N*" jߜhہ.QA*` Fڀ,fJfJf vdaN ^` <`*0 XK"( P깃` D&/( PV;c&Bc<"w*FʄF”N <"¯F^< P튲„f܇g0<AC 0Y&)H@6&o և PĈ$ $T/зYe c *#r"x"~(x"6/ P`9T&/X* (/J!tP/-r#dDy%5(2!5(2С/%"`$@^/Q?d0TI*!?|R? P`:u?0c8=?48N=r^EBg0 8CAH@rhhWnD0.` =! 1gB&XKC Elz@@'P'z$1g!fA X`Wf@HE#z@ a> < |Jg"3`.΁€*&ƅʀځ"XXz@D "L|awv{ HC6 BP"8P8. P΁ *ʁBEeC0hPcBEЅcEPH@0C"$T`@C"<TXQ&ƇwP(P!W5ؘPCV@_RS* Pʁ.\QPgR0oPsRdyRPl_S6aP$ Q* Ab0b_HAH@Wc@V_`>`Bk@x SbxP[dbgk ,&A6XfPfRCC C/f ,&>`Xa"0x& DTPbXQ*fgRPHAxDADA؃HD0D6Kq8L wLvHGxHE p@D@؃8HE EHG&"$Tr`EFsUPQƅʀ҅o҃"$W`vӎ*STP QgvpD60<=0|BJZg2 P>A@:6E@ACE2TTur2UJgUK:RS SKLQ p< PGOz:EM ޅ P 0jUvSH2t_`Bq2@ PD8ށMdPSccfvN>`E.:2DNUVE0^`efvB*`lZ:~@C`HgrDq r/AtBDHHE MLqO&g2tfpfs!upAIqEM@EC2wudr.rZg qϺAgƦp|,| "%X0Q?AJ@oJANA4A:m;6Ұ??N AtJWfjA @g`Aj @@gVA @ gLv @gBA D @g8" @g.A @UUg$A @*gHÆ2f0A `VTONuj?p|AEX , @g` @4 @ Fp eL:>P NVN_p YTS0< I S@"XNu&.`A" ISA$*FʃĄ"BYB"Q`g80[`2 „"#ANuv tЀӁЃӁӁVIe& KSC$?HIXYJKZ[hixyjkz{LM\]NO^_lm|}no~$< + j2~`j㈡lH6DFt|~H rHcI(DԅGf Kd܅Gf"raLz Ʊز"d ԰̲`/0 T&rt`Cϰ*c 4wDΰ"p(n\t*,.F.Wf8 nXt D]L a^vE8CF9FCG9GCDlt %-L\`. a0Ũ8ư8CDBf-HXL(TllvCHܧCHD0.bJEZC^zJFZ F&_|/G4G8D@P@~HDp&nt38bdK &@HC_C@&n~v0ϱ0HD  _C.9C.@Rd ov;CC0HC&n~pKz _"$`z DUL& KABBK@AKCTZ¾B^3Y d>5AG8CDlz %fZ&,>]D"pfd®(ċXdvZ6F>@DJNRP\$Ǡd$|vv6 JJAIIyHH6Hz6H:Np6Pd˜Z,vn<N`d(Nh4//nd ,:t2Wv>A*`*g*Ep6HEx!3TYd̶8HzpA& &g *C>n%30ydw8:/?A?KJ"#\?&ƫ ;6 6?g6:CF/X/TH?6d²j:n 7?OO?6O4߀(H&I*n0p. $GB@g*wE@@}@@-nlh .hg" @ P-PhB'HoP hNJg /`>pH@/H6P& pO L8&{A4"P"Q"iEAfA(` E@tPxP$ LN L~NFO_ W&+Q*"!7P6!뀃 bc0~W09DG w&BPzFV%NMr`r* $x $R$j&K$E x*ʀVRDD Ӂ"f&&NGJ.[f8I$ SB& HH@" I{0+p"QtBmp&;`RΠH@UH@H$u%q:HE0:"`Nuo(ݬOA`bB@ R@RB_TuP Z Nu0P=P@+P6PNua>HGa>&BPF_NO)&2*Ea1a2ဃ!ta56ᎃ3pYx%d°f>`_=tT-P|Q=TL__~A:'?@n%@:>__ok!(f5Z2dR:o e^o6K66$EpHx?:@Eom4Nu( SDkf#gN v2I2i jHEter "¿"QtPNu:"4 2DVHhz*R2_6`|*p$(D**Xvn"윿 x1-O-@-A xN-@|jN\0.g @fB\:M Cg$p n*g"ra i*"0Q g*/)*/*?*HJx ngXO`6\Ht]H=!Pb-q*dp4(JCJij\I-IpTEp(gBag0Ӱp n PP&/. Hn?< mn "@"Q-i~nnW$P2.mHA{=ApA"S&Rݜpb/<됭 4Jg P@p@6.>$n$&n$.DkjnHzʁ-E,SRnЮЁ-@8.$.|́D-F̼=@m_@=|8:.,4.no 6Na2Co22D$nNp.nONu>bP-KDDR+SAo,. L$M"n&kKkC6KA4HC* $DFWVgYH`\ DАJf <f(bPn 2~ ގF|CKHCtRCSCkb THg4Fg2z@΄$2<QQSBk`, $bpVZx$F@BRFJ`^(n\z,.>nYHGF`ffP@Cn'@勤@A$a<0 g ĀF$YJV`aHNV`rHA lDZľD^DAHl@Zļ@DAVqT@@DA }Vp@D@P@3Hɠ 5 xDH@@5DxE8DF8DG8DH}A. |Nu.2f~ܮxGڊ!N L$M'&Y'41:3RHE:3B ʙ$V`Z_lQxR`ժVQR~/Gܴ T(_{N@UHABA܎&r`YCkm:Ygf4XH*i`aF`&m`ax 3$$RHSD`P~R8aXHg&g"HE 10$aHE$TH@c`$Şc,_@Uz%< g$(?3Tfp.oP$ę;tB`^|P`" %m>(D6a.$`a` gp~ g4(HFN3dNрMрL^QNuz+xV &t~:tgMEBlF Y OoXLQ f8D$3f*HB43DH$¬]شg D$pP҆gpk8HD8fQRpKt4w܂t^$@,>z ::G> R4``4zH܂܂T*pX4BB\"*Ι4a~nn>,#\UH#Q&&.C2,6[HCQD0Kʦʓڟ$k:g,HGmHGHDJDkh`DDhDDHD@B@E:MAHB6a'`0uA`צ2 gGA{g f`gYHpNu/`Iʼڜ"^:|BP\bp2JWt"[kN9BCN0$rT ng ҁҀVCa OXHN)3&/G4 CBDJ~cH.pg/Bgg0 S PRD&)BMHBa]0,_T44$`,1fF6`,1fք6$$L߳z#%I#*Dx|06BBjTEE 10Ѐ&0 UH`0@gHAgV&0` 0g&0"֍>4bHGX54><5N0ƄAfEAf;-BJn߈k#~^7M NA$<Q@&v@@z@L2 kg"z@ANA|@D>4&>4N0f{PC6`@kfh2n3~v;vIK&P16CKSEYCM `^ U&UU._@T fQKU T_bc"aa"d#b*da,a+a#@$1pvЀdf рeh`2,XKQ`_tЀej24>3v`T`Ph`60a`h`f-nad`بa'a\a>4$$Ö`bh`dh`S`$r08AAF2@j:2NmE0]b6HқPRb`jb ⧐eJpwdYcOelodRJpb'a`JpaQpdhpbahBbbJpaqJpf|z7Tofd"Jnb~bah`dh2kz1p v(v 06uPCy"Pr`r`Jpq%|~/0 TANV. ܥ8(n$+ S~>އ~ހ am 1m n`p~QcG2/ ?ӂ: Sα"0 P fTH"20"222"`A .">7 Gf PB4dڢoH +a g4 p J-h f "pa-i*JGf >(~=}G|God&2p\-_@ Jg$`'gh P:C$AfHBQlfBn?8 Z1 X ZYO/M`t2f0 ?""OCAoJXj1hTHP`UHlJ`j0Ub~ "Q"3L0<G7 `OZ p4#S@2C8<l:< mE<<nF 246> OpĚ!.ln/ Bא$"r "0Q 2 g8*?* Xl @C-oIJ-j.*AЄt024 AҀ/1~""g}gr*X$_"*=A" =|02 PjD@42 ?6 BBl0: > lB'0Al("!nf2.H w|P$_fB?-Hp-_88 nf Z/ $jа g( R$PUOHQ NJwg-@ # ?gV#"DJ`*2)$p?62DAPAoݨ`p /ҬoYq iXg$l2**0An0 ?!q gri$gB71A?A?0`@0H00H@;0`t% *g($@/ @)V/# J*J`R `܌ !o7FXH@P`grPr$"c0Hp@kNR`F$(g "B"Q4) @PdЂ@3Bb@!1/)?YOHc0 \O _ !r2ҁEHAL 0]!UEpTr*phȤt_HnAj"3p0_XO0He@H@ xA"2`BfT @k ЈÈo""@f.RbRPVRP" |#bH 0fJ8f$Ub‚RX}1ǀk6Ajn2j%aig2 fS@>`<0P b&dca1gPH>=܀` -BN f3=Q=|`CئA?J@fRǀ`kCRI&2"`66 56 %6 B$!  LLD`e1^0vf46RcR*&G g} fz&H@RAA0?u061k"`52e=Pe`tA=|Հ=Bcgq05r01" @gq*'&]p  \rY c s 4e 3{`ܣRwf6zxi`*y0R@P@*ȕ1& PBBQ 1Blq b!qp& &q$ 3"4%!?ta!f3XO`v|XKt0%@n{J_0g 0j`{ːtag2f3o e W҈1c02&r"gp8 }f4) #HаP!0 N)Un~^0e4 $g B P 0C$`N0B#UΚܟ QgPfthQ/f Jwfzf3#A m2#f{2FG"Ѡ)$P6{@r6T_O562쌢%*6f3dhdAt'?`STSS !0Xd7 2A@e02P=@LsD SUU#>P?0rV@P "gBjC214HB4"P3|BASA3A@m@ "D2RA"2d^Y g"PYOc"| g2C @fuа"P"2TI"2 а4<@ZoBWD@@-mRW@@m {j@?{*gDN 9Px kfo#(-$16j;?DIhNDS.X&]-bEgnlqw`|pҟ@ANފ7 Q&1<"GS`[m{5hwn $>[y[zEV|hT۴b%PQ$nLJ0[(n0,T@va@lj@>`@f JAoXh`TB??,BT??" // g0JGj @hfB0L&H|`4.(0.wapf=l`@nh VQ Pnh &&S$K"JTa<.:.a~avnmmDHpG[0fL@ngaJDl2,rR]Fmʀ0L>"m@ʓʳm ʺ0mCuTbhP? f&L$$RFgkf kfYKNu6W6BRx<`"S:_ T~ `` Fnmx-p-h``lq2P46SCm Al2`Bo4`&"B$ hzFM/ ?f%@"SSF<` Xg20(22Q22 S> S0 FGg L/ᦞ H8-OEAʰ&H~ʰ(HAfagpUW@g^ ٺQȴp xNH lh(`h02dgU^VPHRHs6 2t2Oc A6!Rs1;"4&N钀m|~}:.JOk gFbf?^AvcfUb .rf@r b>l$ rp xe d-L"r(u>f@ /8 $P$j$RF*$R/o! ȪHO>$b$!Bg]/ $I q>!$NgXp ` >tJx݁P6 A?8 `>D0fXŔ3>T _ g4<f!ʺpR> B(#`Ny8BB&RpfTpsjN>  _ "k\`*vCf"f ig@tPHPIPS=[ >< NT60 0, A@46.;&<"__fT2 @0u@-/%BL q103q` Qrb/a"`rr S&#yg[4"urqJYgj.N0f<1.@1g&/Jg/ Cx)"LBPzP& vp,frB-x ̞0XiNJ2Dq2!/ {@N#g(@q2"q탣  P6g8P8` (16 glP`"8NRTVC`XQ`rQ0 x !谛mdV1 n!b U PN0 "0 J@-J$RlYRdGBHS&RH-_Nx n _ n2+PB@`PPgp`6AgSAf@j:HPg=.J_@g"`RPf-@>0y!UU ؐg`> sXo gRq8$gF @iJ*0 T@H$Pz,. & kfRE5ׄRT$Ujx$]p`0Y J1fBؑ/rg!@P3BHhW$`TB*"(9PsमܔHP@IE"-@{30H@-X:@?S g0-$S:I8}9b`f4WPF6T`hѰDo4-P!F 1F??BgHpFa KD02<Z!60^8vH8(۳vjfܓbJ v@$R0uv8Q ,&S8k~C:1R@D@c:c:w"T0I8Av$;E8GF`]$ƀ@5`<.SFzŒ p4f(=*!4q1F] F1VPQpdђPv`*w&Z !6SX-`SPQԈ?"Zoq A!""3h0ȩ|h#(( 6SCEQ~YO&r6Rpt(_(T$! &S&@ *&SpABER7g BP!TlPLQ( co& uT`` Jg LNlPzL>]  NTQFP!q p[j`wR@ Qpfs46A5fz0|`z6 Ch  X00qQ@`@gf@ 9(`0Nxx<.g0c. "Q# ਑J`\p­8* 1%|A=/Qa$ 2Dqt&vh 0gEP @@? g(Pj"h#G8IQxN|h#Bj  A5@5 —AE0@   NRfv>Tl"Q@RC J R@@D0V/ ^ x"SP HA`4 @мPgAj ]j ,p xPlPʪ P>TF RP2 B24 R"S0S@B3mBPIbrf_#P# RAlP(rB %E8ОUT rЖbBp&bQA0BJ@k$_Za§dbب@ $>T o&A"S2@jAo R8C08 J4$߄ R4A0QA`B3Q0\/ a"S RA! kCP41g//,L? !)y$γ>s&Htдq@w$q8 J R"B g 8 `@Jgpqq" srq"g @N@f/ n?[?<%}&x ڳФ2[0<f`oJ+n J_j k khgf2jPb0PklJЍnPl8lRo(r|ToFVRs̐@"TfXa/.D̨NuH P g,Tg0S@&qgTP?t`Lf¥ oe fq3f D/@lv§Ҡ0QO$Pvx,РJ*nܠ ``_1AZTj"*@H@{HAc-A`fa":SEGQ sVg:"@HouJ_g `ogf'V`Vf >$j^ P^-C-DPPldwH8 @\JP">wSC6KPd@`BK$A$R4pr*$R8<?`UO/bppKPp<f9Hx8E2Gx`L43jB4g0/?s (p686(T(l$*(Tld96B42$kGb@Ժj@Lv ¯>CA8$Hw@2I"q8"Q"i<")*g"A"QBAw b6080BJCk"JDkjCSr6 PBpHݾ̀t0TR3C3D6j6fkЏ1pp28)jP:80k`<:xLYNu^ v(. RfA$P8Dg`b4 0HE9SDg  bxDfʑH8 $P4CdLA@KSC9 r(gbf"]Vr$P~! iP摚g,zPJpRf Ra:ːbPJd@JEgž b|!j:Hr$j@e˼@LvLVuTˢ*vTJ d/R`009@>aH _pN @bdNNHNN$ NPnDpN3Ne HVObH^H@N" _`0<1 nNl3~`8fBJB'  rfpl@pl" -Hw) ( @ &>.g8 G b}f~ f-P-]Pg} g(`F`T2w ( @0Mh5$PRk P]RQP va"pa>) Ap0pkDP PiAiJĐAP-nJȐnwH P R@Q Pƒ֛@xNJfpi`dgIx=U@p2 !"P"J@ #nF 3|nR HX"3m~=S R R "{pgp $"x D1"y#H*/` ,P*", Pp$ p*" PBix"":d $̎// PJnHQf&B@&` __Jfx(7&f,LF062NkD2&#V!~1/QB08 nd0:`^6.!fRp>2 P1 !n0`G @1s00"0&c!|Q0u:U/P&蠟: `M#`"C@ PBF /)&|ZBA/p &Q0pp@Gpᠠ@BAh HtTYc` `Й KBJBJBJB#..g Gt` af/oB G#`PQP9TAUzVq w J@@P$"Rבg x07/Jfib>`"U >a zZRUC P塟PTPX`B"hJf"x!ɬZNu>aZV~ Q^gf(J@塋B(g f! ///%SO(arXb]g//` C/PZH8-OB=LPW dc0ڠ bOg PaP c`:&y~~ v&t$ @\" *  `\ИP hVe4 F߼"P q2uJ2*bY`DF=-0p ,q֜q` f ` f H>.A4p hhf s<aZq@p PxWpfx2f v0+kҲ@fLPЯ@gLJ҇HpdAAgpcڠf/ < ڠ`]DA g"@an @r 1ʠ؂/+`<ր t*t*(f4f Q袀:-|ڠ=+`LPm5bfJ(bg2 tg28(Ñ#fJ Q!mĐ׀g0`-K_`J" Q'f5dT"_(I>ABCBp2Q"֩3hƐʠUʠڢ@k`~_4l"l`} "Q!i1 @xk@h2zĦʠgr/  "ag+^ sB'@z@ul~0>BpB`-W>1%H2X@/1adC@pcf\-QZs2kQ@m20]б0ducpRAC// 0~0`d7/ K&~0f1܊C10`{P`A@JB,Pd".?g> }0` "xJTri!Yk"_Ref Q B/` "")hTS6Q(`*"R#hk`gZRQP1 @0*U ^T.hNuhQo(`IhU/"fJhv&Q/#a(`i/h>- ,U`fT`DHeX6 tO3fk77`Qp[3Xe̪)/!gg .5 P Pg Q"7`"Af`ڲT+BQ2pf 34(5fw(`6`ҲT԰k_BJqPj (g.6TذkB`q pkqޮ QlpVpb>) Ap"lp=GʀiAitڐ-ptxHʀꈫHlpʀX gz0n ,#HQ3MpLpm"p gp=P$`B"P$Sijr\ @\ `p `@`D` =@D`I=ȰnPY^¨dNudNu?" #^!e#28r`0seNV/o (xV VV LN| @H8(`8.,V,,ZtR rFLGJenVyE2Rb~)GVH$H%@pVpr'AkȰQ7P7|'J K"_L!co"vT,>Px\q'@dve"X ~@H8$OB&j8 f*j&H p~%KRrVr%A4j8ذ P&1aP(PpdҀa]b.H ռtڀ`$U."-Z-[mD(.*.쭦F"F$ā"2ā._p @wzѿ.wᷭ`^ vo쨈 v쨊ߛֲv(t`HhF" .xӡRf6mg^ht4*Ԟ`(ѮT4༦j6mV`)d8&4G:6@w核eAQud8 €ϰ"%7lQcuߙ߽߫);M_q /9)`'X e)qm˵|Œ$4 D=Om7ܴ83)OM_q///%/7/ۡ0/)`WXPe)//m˵|”@T5Yd.?@?R?d?ˆ??׶?8???OO2ODOVOhOVOOOOOOO __N_@_rd_v__T\ _/@_PXe_J)om˘|->5toooo#oo?7B&n#B$k8-k@fB=|UHn R$?( p// r / <:g0`*./.$:HNYP.  _ @)b_('PUbinZ HЀ"<9AB=|PPG]TOY-_DkH f(/ .j"_"/ d"_p`}(f.-HFI"W.'@xD'IHx(7@LHhJP'PNA'H_A 8]HP PVZ H2<@gr/ @bTk"Wb"s(P,/#HhHlɐ?r/b"_pS@g"hLU@gYqQq,@~xpGW&Ptjr*㭜(Ŧp׃bp 08?z,<8ЀL䎆pbUpJ <$ ?Jf (}`',<1lT@R >l&fpѮ2`\.8(`p_(L`0_D!,R  UVI^-|D~tDѴn S0fBh:.PKPRT! bf&pFkVOAސAV&@B@z`pgzJgjpObVp&'r'P{Vf&"a` i`ap*^d `/ NwXO @I:aVBцA5(@F l`@V$hRT [ jR"Bawx(P-q&ܺPKX@*gx(w`@@., @,6&g0`J* (f9fBտJg ؐ[HHLHRHHЕ/,gQ5T@HRLRRRtIH8$M! g(` &Tt(KX=p%w@ g`J gRn :H L #TLGLJg/U'!n R'aTXOL'^?$.".g g&L`6&0n8(P0,"Hׂn&o$n (&S@` AC"+ l u(.*.zo0lsm檐0dHJ@f9TAC Dݑxq0p@.H,H.Vn' `8 r4AH´m$V"t҂6.ö\DWDg@^ė&lE}FЪ f FE L! aJHW*&pր(؀G$* ?B`.IӦFcWl `lGSJgLc,I rhB8f/p+" Gn>J@XOm=J@fAg|v//p/<(@`|ؐ8&}Pk$9"-`fp /1NXO}X(T*2/AN)PBA^re.FF\g2" ,XgN !XO!f@ǔT!4" •*x<$nGQ`A<"Xn>00.H(! H* ~-@ ^2&|`BBJ.`o9$`o`៮l`\g0,R1 ND%`B0.*?p8 7"2L#`0"*//$"8T'BҊ!.ߒI08S@/1ЊO%nJ, )f8(g 08{ LA L`ARBRox@@ #׎M4QdBЂM 2K1{P? H(QRS////Nq6oR=E90=D~l=Gv`FACP`Q aa&mQ(Q LFWg8PR$ tD\@^‘Qf"@G6ݰU8?0:ݰ<?0/H/H/H/NQ"_ϖ.+ !l> '@  @A E`f~d%GI89D9E9F`HJ*I Tl8ll*q3o.qlKo2r>q({R9p|! H @FL_-GJԆeX‘EGΗ| )SBPJfn(`cPpgJI.B`6f, SbJo r Ё @"L$$BE$ .N|wISgqf8rIS9p*J : k (P,+ ~` fpw` "bЂ^+h猐K10<J_f- E`Q-^P~rf =|ހ'pĿֱϗ7 ː(j ,* &T^fT So XK"S .S Y Ё倰b*-L/h" t@ $S` V(rrp&@`} p@€΂ T=|JogvH PԋQb( pb(H>@ހL)E<)[82J@POg&`O!LNBP^X`",w&2*;BfxbJfNh ve4||ґ$U> J_g q R&T'\ReHr"j!igV`#T/ X"_@qpC@6?Nj՞N,"L(g~1JJfr(`p(V"}p`ަBG SOfJ€> N>`~=GLbt &ĀsrbQ(`W j6 FY$CVrb.M$3gXOjJ"B-ltxnf x4\f !(p0\`/NbTog,uSF@=i0,J}g8,,".Jl D.`crK)[J  &2QG`P XV"zԁ$ *R5-n "r&@  fHImIq=Ip m[SKT`T$u*,P)(Ӧڴx%mlot"4F0x@4QV +?8\N*!8XO6XOt䒳/0 Tܵ@ P>FG&xH s|(P,00àq@[4ˠy/ T"P-Ĭ ".ְk>Hc4nֵ4tP^Hr pJ(g<g @ P40406 pȀp`-||BU 8 "8f 8J(@$U$RXf&-jYO%_V!(Ā!-WШzvh&Taz&`P./*&T  P<( HF<+H_* P.$_a :@ _?HFP Ā Ft,VN4a8L\&T@RC`p/L"Q?) ?/y%!,_` &b"^! u%ہSu _QNHF"K#8"&T/ "_Ę0@@жj# H@h ݤ$f z#Ў K )"h0$n6mf2"n4m0&h0(m2n`f406&f2&m`J3m5n 3n`.&"xU+Pc /&T"_&"LHNuf@P4 +@f2-k"k&qq&UOܼ&!JpNutg|rCgjJh?jd"T?>6D66,4$`464RA (fNuJBmAJd A@B~r2JAm A!cQIIpξ$0>*0A0;N |. RTp !#,#$p$ %LF۞Po?<?րV "/ f? XfH"#_BQ i2fp$g0<`*1|`#H BPABg/?b8a/g/ aPJ@oS@fBSP"_0a0` fAXOajf~odg*$9pBPpPJQge@qQWeldyq( g"p yS{ld~/&wg2iv6+pu6`gbSC!`%a*aQؑ&_J@NuldY~[0Јj@^Tgnb<(r}6@d/ p0qS@A5qgB р/N(&Q"_QBPBÑB%`Ԁ eSPBgQBgW` bP1QSld Jjf$~"`P |r %1Xn/<`~ePtV@zd/"TOeB(%"!Ad N-q"WUO.Ӑ/MIbW"W&0 9D*?g<`B ".$(TDJFP Bq*p!@x z<0`gH TZ{0`/ NL<y - TʲQ(b 1X~ 8BBB./B&slEg2s :@8+ C뮂~RNԚ#NP: E0XOf.* f vi%ŰJgfv<0nJeP*|xJTOgN,8XO"!g5.=00p'Q\0pjZw18@?CBEJfLF`>r6$GШ*.5:`(R+B8?57űrRFIJ; ftg}JEf^ű'0 Bf$ gD"P!f1`2 g0h} @ PdW \H~D!~vr0JfGп`f0.$8I/jJ BBA^UP@$p?<1BA/+ZЇ@`p`SN@>)&llH[/J*ZoZJ@B`/ JQ/@ dQ d5RD!:} |~P^v"й ^RdR8eV"RR Q1Ct!rp PJǠfcSZ"a$eΘ`*C$?MUf(T 8b*JfUUh&(.O|n$/v]@Z&R@+BUp*0H8p/@HkUBN!RR7a y@F< Ef6KVbC*,FJld\? J)&Rr 4 ,&Paf='0T{f rk^J`m rlӎC8(h@`djp~&T8fhnq0*u URRT*.z4BeQ0B|IXO`.`4=Gpv`I8c$CPa[o&)zStA1paJBVE,3Ra/(ʠCy^qg ,ư^,^` (PbrJxz" $H$9zt~f =|o6JS&Jf"& S PBPBDHĚ-pL_pYp2oYX>_ 20KJ,1p*>fXH//_N>`vH, L<d! QH$S$RƧE"Jꓜ-RP1 S>or0RDSmfLj "2xTnzB&@NH]8kDN'aHa  v@j|BPg`r-`mJP1“ԡQv>p*&_ x3زpfx<_0R )K`  9yP0<wn,p&BU$0> Z=0f22.;/ xbC XrP2ƭ2*JgU*-V 2 T|ߐC~(@$@N]>kGԀн  &PJpg~~q`tff@TJ`$<@k:*Sp L*;=_$Lvbh4VtTԚ$WALf@Ԁ<((-p|wg~-P pSD{a[Af""'JL'P -`g.Hb$;MvbآGnl0<; XpĖED*1X>]gy)"Ԁ,1/ refc/ G?.POfA XQ zf DJ^,g VgD.(XOH)ޙ^,HxЀ^0Fg6\d: D $lg`\TOR g8 "YP 1"(C cPI` $& 1x0g #0gҴ`0g NO<> ђbж[Jp A-;P2YPl$ 0CLVd ZZPf:-|"fpgZ5<&!n,2,f4@0N޿Jg&-L֠L011;U&A,R-|tsvcHQ|:y^XRF^H?Z3;0"~PO.`*Lal"6UBFXQ0$`>:?P8W`Efk`(XQ$"vDg SXO9G{9i@ Gf/< JgVfJho(g`mE Bjr&P7Gt"a0N &JSJg@B<. F;g 9Er@DCEGs "T$"PTpB0O@_aVCZYSNT_J_TOf]]P;TOD gQpV`FT8PdĺeڀjN ~JgxOJft9qDz`^$pZJaJ(s0z>FsZX{~Rg /+@'pJg\5b a\a$)$! RHḰYO.Mޱ)-_޲".ڀ/ t"f9|lxҘ`l`U> >vI)jVq]& $(``@BGV<f*ā$_ Ti,> TOj/ <0)4 a8<.BG&RJ+f5`mN $!f8IlD7g"V g@Pf >f&Rl n0⤵ѧ a!Y?p?|ElVA~EL퐠/ f T TDOCgǡ%7F(Y. b ! &(}TB(`H?p$R!аroEBG|X\* RL<'@,To? L $ഒ圾DЇgVЅa7```lЩ XONN.Ef:B>+RBPz$p'@k 40C $"&C 8k-TАĠ1 -Tk )4>S 14G S`!p*JoGf !g|`|Jg,1^DpIp*)_lp9p"~p*TO>҉#>*Vğ 0]@d3 >AH.G^[JBVp" @++hW?(ؑ*y.AX A".8 *8Jf40 G P<0!< S"װ3P` S0Jgz/ ?<5Jg!!1` $xs`BCFJ@anS$""S/ S_XX"_gdf`/ "_J.g/ 8qp%5Qq`%K`"_*"_`M<-0%2 a9F%ނRd1R1NM ADb%v`VRPRL~npf>n2!n0L2HK/> ^ QϘ)XOh(̀Bl %TOb3 , .?6*! !! Lr$1@4.(FH^QrGTObgpQR1#~Ю$(bb h2g "(H`*#h%"eaÜ_(@0〜p=.t6>r2B B<2T4/n,d>ipf`z{`\:AJf$qA2 4p[`SCf4x`elo*\>rp:NuNJ_p!R`MR%[̒#"Ѐ|0 S@gVpUqW@2z*uS/ ,fSsZzhhv5f0RޅA fw@*BNv$L R tsmrPd RphrT R rL>J@+g"J 0+J!k><,`J"K\p Q0BG`;5 @0H$2)+ 3yձ5*RrVqgMc<a*)-_`a!<`ģ>@C@M6Plp£ }A7j6JUIk,9}AL~`> Gg LDV؅Îw?hPnQ0<(*1(ҹ$(gB>/\Uĸ8,>n dzHƼ݇0hZQ՗NB(@XЗB+`@Bg:/4D@ 0HfL jp5S7Ƶ{5p$pp"&H `to S n S S1| WSI(`T^ •"˜ A.Hz@`??$ RA4 TSM Resource$P>RFQb !p*>B0ƈw)d`x`t(уC`ajƬV%n1,㌕9k L\C͔uI:Jޒj,U JU(kr$TkA07fDܺaQRw f :p 'k$TB*ZZP`1@if g.R /4`T ZNPO{$ 0a* fL86 Gwf@p,07d8 f~Jg,!l !Ƥ#B9*u*0!,e܊!6 F00u4f/  ؇/ .01 bp11Hhj,"i+0`cnx@ʀ΂(AFP.,0Jl D.J&D,o.| RJfz. Y0/J0/J П/I*g A/Klr8d}9@`8@I\  .mޅW0@`(( "lJg!p0ݐ(. ޅ(1D#/k?@D$$Z/l/// /7// /q+/gH`>::wH>,r* , .\Ph ]>o.8nPk <F!AN"$gā<``Jkgr TN'@`PO)S7Hi_П `.4q/ pg 0 `A8 N @Np)Q@V1XU>,@ Go 7G0G]1 `0<@@@^`|0quN{>_1^/rjo$*>C9G>"Σz^ph 7vACsX,s] s s ɠ( hQ(P*(#.#,* T"H-qX 0hXhpa.#!K35Qx16%*Jf*^ f)|'|W(.q ._D*W^ Ub"h"n"t"Uz ~ $!,D ^!#|qD`=|qlHsT&`.HsRsHs2IqKpu~ pf HqtR(` YsLưXBp(Fl w,$k+Lqa00 H"R R P3<(] (R$)P "$ $((p"Џa,$ "  A.(:L"# (K$Jg (XLSfYK&%3 "Y܍ $"$(Qz_LU&TaE`)]FF,h4P/ S0FwN.$/(}QN.`~a/ BNI P՟/7`R䟷 POfqe/Nwp~P! (xŪbP 0(hg,*Jl !o.0 \:9h(&T-~p`&~ ꂲBn`0.< rʰ$<`!Re`(ԱP0'AfHƼٰlml?-nķrհٰW}1`Բ<`@& 0:ԱTgܴgo nԱ"H 0 lxԱ;-_sؚ8@-pܚTp¾ľ*8@0!jľ. k `vƻϳ 8@0Jg $0ర*ж 0HH 0vL@*H'<Ŷp X00R@<_ff 抲ю(DД`8^ g"/M-_pѶӊ~ 2.h(9x>Pbl`B~Fѳp|fRlm0FB(Wґ@ .,0&KT`4"͠W 0|SdlJJgH@Q81Nj$gVK6 `4 ܯ$PO$ 2PO6 La(O.*`a(c>+:m.ϞB`!0>SGXK'|| gp*H,"I+(I(+ۛ,~+RL9RaHi> g*TC_1,0:"a Ncāu,*Tvނ,pg p2vIÏ-C` 0\ P"SG >4 JkrJJ8&4UBNXOfjEj8gg<a=D DaSDEbE*kC:D{DLDOgNbCD4JBl"Z0/0@Sl::lpgeR~,*,j*j. f`/0*Ne

F1H3}Z8$k$IX < ~")A1p+$Er$΀ Jf`2pf <&"<(`+p.2>澏h܇J*wg&,Vp`F pH{R4.@~Jv1SBJwBm*&` |ሌ_@H&Z^@*.p/|_H/"($RʰRhPpR\f ЯTu"Sv <ʱ1! *4`XKp"6^?P|-!lg.pARAPOgg/MhNl9 u@ Rpja@pRرHH`e<ijNqn 0aBPߟf9, bRbE.C0aS%@NƇ$VJJNbN`(d8n:Tw~g+^p3|ґP$e|<"B(.̟N0,$.$+<PgPSgbtV[ʶUޖ(@^Dgp`pI(@伇\μ]_W1VG vvJg[J0JZxˇfsf0z > І6 0X|(PO` Yo.(_`l'sȪ~.$VgJQgZjΠj`v3.~` @V0Af RهE>J[*Jn `SD?BlF@f ~J߇`dFAf Ѕ`LFebFЯH.(e]b$!, ІC`pe:JfP~`HF9YI` "!b20=.αG; hH~α/0 / s4}4͸lH C@NϲpKZnT ..7rVJm,Jl ql&.`"@!N.C Hu*`a~ѽAπ-HTx gP8a"Thp \MaP:R@WB :RBX:RV_ 0Jg l`.(rg(5rž_/2B0"k"t/2jC ԮTP Q&(Jmo.` _D&arRBVSrPpZ%Я(p w)E0)F4T¯g`,N^JuҖ~ J9/0.TwJ@TQ p*Qfʖ`,I _q xWrQұ/0, H:SP _U0v :r@vJvTvQxx,z9U q /a2uNTz(B2Ng "㱁@BX8*J@D/*_I_koα*(+l2a7a<` "2tMeP`b8si`fl,oh7n?B@uн. iG~_+A$p w/ 0Њ8 nbNNN"_QQj**7@r2Pל-pĐ`?&-" P" -f⨔S\'q-+αA蠑 .]PPB6ENU>(SGJwGmL.=NQ /.b&G>ДSGv`,R ` PLSGGo#p#nu҆N&@ POfMNXO`,ΐ#:BT" (F.(J*|P!Q$"H0)RiH&@GFؕ&#) Ҙ|.T(Jlg3x x]sN?3hj?,>ɄJlS: -@͑3$|@J(D!(Y|`h,XO0.H(po2`|..`D 1*0 po܇pm`Rl~΅f<~΅p/IHPRe@/o`mTKm@C:2,@q2*@r,B2@wߦ/rЁؐ P1nP$I P,H_zj/ PN`r&v@1Hz ̒١ =FI-CPPf S(p|` 4P>:Y P` nP`60 .^POnp^`L=EJ~yg0.=@H-t0=nj䰮l-nr tĀԁ-BjtЂvƀց*jԬr@Ёnf =|>`j3pԀ&*$r!ց*4.nf `ʦn=2.Doujn>P `ԀzBhrԁp7 j  :J( ,Jnm, S0(@H*4 jЅl,`,.S` SVp 2p m$=̢8H}H0_`"H)L]`Vp(.0@RDnoHļLnHľ mܘJfS!l !0)/"'Sk:.:lB ~Ұּ!H!2Z! 2v2!kׄ2~!2U2L2F22fE2TB2B]24702*V!D6B6Bȼ!HB,HBּ!eZB ZB2ZBU!""2간BʄBBުB؄B҄B̄Bj!""피!nBBBj2!"jBZ22xBr!2RRRBB2BBU""2E2BBBj!B)BЀzRUBBzR!ͻ2zRYB !BK2BBMB"RȚR%Rĸ2"ӚB]2|B"j22PpP0Q>PP&fUt$d@2,Hk(\,~>,r c` JXz:,ءb c0 J/ʁ TĠȣdHcn8B}-P$7/-hhfS20 ZASAJAm6Xz"@"&Q&au>rr *,,(j&RSG8m/N>(p̿&jb &Kڰ|bvJf\f ~dfvZpX,ΣʀԘhTlsHo,}p..gIF(Xɡ'9@RZphX l D.JD,]? E Ln؉u ,,y3g"p/N;㑔‹:g$: :p)@}&"Ҽet)A 3:.XL|qjg<M(YɡmQjpK{'_E^z\hrao*., r!m (~p`(pZp^sI,./}pJ@UXL048j+Uׄ8&gvI u'xqp *)$)0"҂0)H u b (,*Jl0.ޅXpF.`Xr Z։}prd,ptzt`q OgwfŸSmps`XO]h^! l&l|_A j 1ЀrH.B,U^Р^a~)@/q@VXOf, 6q (J:ga_`'|j f *glV@"H XOg )Df+`+ Z`gl8&}pp 倯$@̚xq )|Шh@ IAI*(r, /8(SJXOo րlퟍ`꠵lw:<8q`!E&"FJDXOm6A0"3p#H&!1D`0H(XLb`_(< 6@%#`8T#[#,.f$`>< J@%( _:&!,SEJEomYT!/(Qʀrr,LAE0*j$0H*Z] ">SG`Th&SGX_KJGlH5"T85d0Lh1ʀFNqs(hJVH9Cf)Sj)k`n0 r0$v0z9khrc"hNV`vp*5CAjJ*Vfz>G&*(*&!&PJgJfzSG*@&(>`4Jf4NJd8\DʢM&/p4 H XKN:n @-_K(NCF A@FD~\C*,s .𞡺ȱ&ͱ.V U(>`X<SFJFmGXKGXLQ/ HG\AoPOmK:2HaOHxCJ@dX*HD@*ECLDT@fv[C<(&hB2\B,`ʢ@DMED@` c>\B^3XK> XNArh4ņaHjNwbhLQ8 \x:2T؜ބ(ptq=G+0Jg (S>mٜ(0 &@`ۜdV΅3+6Z(3 0 +.?Z=@C³f^P1(R6(((*(߅<.LR.H(jP&"v Vn tr&t(v6.&R&EI&q"w~>Pb`Fsqp>q]AY19@!ȕdރ2Қ3`8[Ѿi$h 3G(&AI{q+w(B Њ&UBNBNU B NBNUBN BNu$B$N N(Jf BP0)S@$09#0"dQy  4<єM g    2$߬B(jh 2,pE'0(Rt4SBJBm(&QP0" SAJAm&BPQpg:gSg`,p/r// Nl&ЩQʢ ФV&РĚQRp\Swf>Lg8P/~pNPO`((.LB2Pd"֛$iI+ `8xЊ]'[,lpt u,'i2D`ʢР$@p/HnnP 7P,p "l \t 'ADZ#"0рt7A,n'lL.c gn vpXC$p QȻ00/ znR Pg 7Bv/ p*˳ʡ@Z4 :ЫZ/+HlN.phP<+fvp$X d Q%0(k|٣Blp *,ҡboJB#/)ҡ C:) /=. P(Rpl\ IA*)Hp@x?rD(pPu02 *,dnipB,$CZt}²T6.p Ղx&`R-T-l  $(=9k?p Ӡ_PO7#pS:;AE0H2+bHYH Y=! VrK!bU[xp~HH$S\À,c`ҡ\ҡPCVT,0 -F`  rV@(6:3X/An .ҡ&V``jr*H"Y +N)por ".ƿt ҂ҰU"W B(Ăpbrk1e!k"HCX"jJoad`E`ښQ(ҡҡ^P(.`qPҩ*'"JѠ`^JkP}V@BFrg (R@@J+Tf Hk0ҡPOԯr@ֻH+>1//"NZ)* Vf A (/_h.&0Q*$ `Z`F#HƐª#,2 T"Hx.0@7*BK0O0`"x#2<@Lh?.R TA|QR1E0@1X0@'P'ZP¾0'Rd|_l&"BE`VpZc10oREmJ+gJ?(R TELQ2A9@P$0 @ $PV@B@()nn@n@Znn@n@ n@$n@n@(9npd)hxГ~^I0LAG((@E^p=BlҸԈqh`POg~T~RpH*4Š},f$9l J+Pg $BPOHllDRp|Б^pgjp C" C^H^P^c^O`^LV{Q^>^^k0^GF|mT^^ pUGJGm 0R@86Q<_Ħ8/G JȞrb`HhnB,Ȳz,"` !$L`prgzSEJEmQb|``Jҕ܀` ќ`fI܏L@0T@вR P=n 䆜_Ъ@fq;B؞QE2.`* cmapgz gZMgpgVg*g(gDggg `:3A`4`.`(`"`»``ƻ` `CQ`I~ 8 kЌ`,Ss0hI >mHǀ0!WI RWN8``b.A"m@ G"`p"$@B# /r[/TQְ U^RPLRp28pf..0/~1N&@ !g `(HxHlNӐ*xE PAp,P8>.02[<0g0 r4MQ($@&JQ0|3/ /N0 @b*PpS[p:0 j PHn!PB..Sl{eXf Rj*,P868Vt7E  p A6'H @p/0$$@"J<*STf`fz ,\'@`PLJEfAҺ!$`R8P]<0gU@g(0(0 `( 0", h"" "A" 0~6 H @.z5PL+ BԞW8`<>*̾Fc>/p/t4// N(@ :@5T`5 b/ / jv2O`zSg*º5/2>gR X߀r20ҁ(؀6U2 60b5S`9/ \7@8130nl`h2feP3ЀAzFp㈴JCb bI`DF_E*6 JҜJpFWIdJ8%NV!0nnv`PZPܘWp*o64PPxQ&@=[PPjPPA``pmvJlg, vJWDH9C Qo"-K\ HЀP.`\ *6`n QXXXfQQf\pPP_aZ.jdr`2.pe `R:PJg PP`0$Ka@gH=@bK`%aaTb2<A~C p jpp0 upa @4<AogN0nVJxZJxbJxfHl XVNՀzp0~tt*`Nb@Jq(iJqnvPrv`s-DvzqPPvK/pqvQ٠B,TXO9EԌ֌Pc.k ؐQ(`B. :~T urL0:0vbXOba(`/gVW  q]POg#nwTK.`` Rn|of `-|h0gPP0PUO 268 ."7FLj ̕ʑHpQ?<@{0B/Hx 6  ` 2A: Lߦc /&af $8!"!  b%"&LPK:,& Ual0mq o H@m8f*V ʒl<T><0r3F8B\p`:ẕ̌1~Y?N^&1_va @] /:ИAC,B. Jc$vbhpJgfI  g*BG`0J+g z@x0RG @e`h ܪvaHn@ xzQe>|d۞dĹzQ&`AnpDn(`(mNHhnXO20.IPP"dt /ЃH$`XL4Hb\^ nچS &(V R:Hdԅnnz Ev$z4\~ Ѓ$5PIFFqhb@g1gXJl&-PJl  XSnl1ئ2NDDt-8v (@a-T>,|*Fd] **BOҼ& Bے 0QJxlGp &0Q"H (g+F3q!z!v(@v.0!x=G L2to^,,4 >" 06 vXH8"3-ISFJF`$Kzr22 Jg J`4Jg>P oSLbr gFSL`B8'$AZZd"8s!Њ`Ҁ$AJRg0R2`BY`BYQ~P" Z#V" _n@pX9,A40!BF:q d\>68H ? @PeP ߋ&@00b@0;NE@4vj^RF:."(KGǴTc&L`?r??????3[bw(1Ses!`.585AJf<D`ߡЋ`Ҁ&A<g'@028QTv4POVcXQfTO0qE&zGK㈄N#E !P$S8:"LJBm ax ,Fc08 \QUZ $!@O_x_'_9] JT貐]R*Q` "]`I-Cl DJPD*p"=A=Fp,8  $1aLajVL.ې"L.*,a&ar$.,!b`1`p῭܅RR()F gSF.` D}`~fcL2.R .(ǐ "Zl D(wnP l aD--|@ڑPw`, @*6^Ѧ4rCCL8;g2p.h|^AkǰN'QPѓm(ZD k@C p"~4~<\8k:mP<+:>Gg{H/$Fp&U(&]($`H 8:u@^E&J$&6$VpH/TB$&tAa,Zr­@Dgp )A`)ltAJ,kH4tAnDԾKd/+DtA5֑PJBDgb:2&`p?",xA~r-A`TCkǴIUQ涁5G 9G5l"PO`5k6Bj"2,Hl `&qQ%7[n!QP䳪r@GON0Kl<[ T0Cb2,```hʡp^2g7r>V9вP8&@ Hk>DB+XA #ITE ,"֐"@!)A=h"@!)A"@ 1)A"@1)AJ+Ug N *7XO/mD~X7 6* 4*"JfA"p 1Bt@I89j@@ҀHS20H(Z| f@$.W*Y"H"0|\)Ae \@SO{(_,/j++h$(.h@Vf/HkvlvjS*UD PQ)P=RZ "LP w C:PxP.r(RP*WP(.VZ P,p7'JfRC0<*TҁXL@*fE/X$Jg*.H:`+,ׁJ$`,TЀXL[* pzJdVWhpܢ37R<5KxPZ$ G =i@@ + 0@oBހHSA00 H,R݆(sЀR`"ҁPҀ Fp.pހVa"~cGbVhNo$@ Hj>q0FjGA B j\ IT"B֐CA (Q>B[A%PB\B"qn (:qf (h8(fX^f(llwX"(G (e`P((hX(X8T&n>s.`8TTSlހ.`(Xހp7%WvvĒzpb"/}  N<"_aP~=X"_֑4?&i8 h!`%[uԐԐp7v`XVzev6f[sN>pJ*XfTtIupTpsp :FpsU+0^&c ĒΒ^5 9@"Ң ҢҢҢҢҢҢӐh%[ lm e` @;n m P"K=Y-I5>pBqDၦK&IH.r4s.R-K8@׀x|"KDptB(w<J$`D/ "&a :(6>(4Em:'>,lo汾llmovqJf rJghq)Kc}`JCbҁ0%BTlc<²F(0:@`8HH,^pςȰH/ ~NUDq6fG@{&"H7uP7G$0{F 0 Ш&`z؎JgRT >22 fՀz`Y(SLk>5pmRXLQt"[0B/v$)h <?fU ,)g"!‚UdӦѯԌ :f3`r e `Plvf2YHg@H[QP,U | xbh TJg(X7 g0V?r€ UB!l> Go><.*<o~` Gl~H. r6!($HBn \K L# J` /?< X130&=T.g">@(PSGJGmJj JP`O$k I gJJӠJ\*/ U@Y|5(_A"pg- ; .g0p(@N"Jg/N(@p&XO` "(HY.&  ,"q(H&lrR"$H^ d$*6 $U> 0H"(>HW nP'@! \AӰѨP$.-l$wf -_0x/WA0f )/$B,)J/ fTN2 +g$2 (f!Ԏ1POf:P ZF(R/)8 f ]^< *f.H&t$}H&t&@POZ(W*`*H&X.'. *0 ,`.,I ~$ !f)H,# K&L2"2N̿ K $.}8 JglX?`Xr?`DN6/Tah1J5@&4.b%sPO3. *0``H8 | gp @#°`/n 6ŸNJr5C BOJe@*D,iH:eAB|qgX T$"RZ0./Q,?pn0;PPPp h"1q) H?(@(10("& !j```NYP`/ |F\q4`m`ж,a&PxYP(@DP@TPO<`4 ph&R(k#0@Jf-kTa B/p/r./˰@@PIAg&RVPP'1Thpq1z@k(R: jp gJfF`@NZ> @PO &aprc,`˰st!b (R( J!e8*@<.zT0@4`L0SpNR.2 P"Ҩ|/ HBf0Ҹq&6@spRopRiD3|0B2Bi6p#@8*6<6@hHo0@h(P loP-P*2`AW@X,0d|\pX,0h|&,0lptxVXK,0|R ! PA_J !\,{a g*p|sB))F`{pHq܀>dHxFܱRr8 .}Q!f9@pPy{\An"#H(Aof,,A,XF`\N.XOfp>hp\/FFJl(-`4JpДC@"JtRqraff&Rq Nꨚڶg˰``n0`2 )JBa*L;8" p4*0pH*S8* Bn(I&LJ8TKQp%a\&I(K n oDo&8H rЁ,0@Fl$SF4m&Q0RFH 刘pw5Q8 :,/<W<1!46F60<kT 8g$6BhF.n0C@?^ `H,Д-@jJxДŐeXJ|>Yr`&a(fq0َ5jxn7R~BF@CJk00k0",Ԟ`P 1gذB|9~%0JFf*2$f ,08_8<ԒR2A)Ыб"0)@`)#FA@04P A-@S@t@P-|? 8z0@P9hJ8׫0 19@ `p^ !CI&, 2p$,\6H)T?(HqN*)_L@C:!ԐӑXNo&*g@`@pm$n,0L|^A ,0X<8@pN"T`<`Vpz`<`,T`<` ,<.<( Ь@€)A(eDcІ 5Pg, 00`C)'80,0,0rU4 U $ $( P< D<8 8F`Nh?F`@\AF`PBF` tCqGT><m& a2 RR@8z"PETrTЁ6Dn0( &D(~R(ۺPp$/ 8tp҂ $"W"_vF uԐ|NBJA"_*^hTR>~l,^52~pކV*0ݱ p6$0(B)*hXpn0s(`$T8| Lp(JݪDPR>*PjR@F`/(PORBjs&//*vPO&Ϧ/< gNabBT4\?s&P>bWP-ВBRQ(P$HeL0 dFR@ ’ J`Olp'f f P 1~RBR<$T0".6"(d"m'G%^>PUpSⰺf$k( @":0"6"/+0p`d" f Ap P/ g0" 6"`V 0 :#*d" :3QGX]``1t:m`pa^ @Av00f<0+f2/bX&kd+wl+ 0w 0Dfv&XHg8`W(PVQ|vBG`P@> TJg8$ /"VJ9,*IH`@f'Tl lA7GkJ` Ff<PL0RGGnjBP,J4BpTP7D&9f,hKH GFJdiJ%B#N^`v{r 0hdZ30et|6| 8 &p:Jg6-S dph B*(D@@0 t K+IRb@S*P4=@"ni48)BfJ,fDp4iaJDf 6OfTs~c,g p:B`_"Q i.@I4a.a:`ޛ@j-F+L2lhN^U;L2llf1|p İȰw aVq|!gf^逾p ހ;/ $r/Z%q**tg0pJHd` Lq$REJ"J .BthPO :pN6 nHc:Ҙ rJ9|$r&r(r*v"J(f] f 0C7Y0,H/5p2M)_<,2:7,#rg`Lm ,<XD`LxkB~2k~p~D, /, 8lts`sAJ-I/%. 2ҀҁBp+4X2H If d;p P1G80H@0jtPY])\@@.@. Df ?J"'HDpw.`<0D@4q/Y.  _ @8'*B8(P)S[9BlSB_,1<7ʂ+́ڂ^ȡ\g˰`%Hnn@ڣX±2."pd@ـR)7`0㸨8b*-GL:xb18πq( j0JJa60%Bڄb z*1rct J0P(f80P:x</Vq.` Lb;JK`GVQL2 l|ܲQ1 P-hB̽`CjP1P԰P}f0CԱ1k4Ԛ)vԱp!gxձ֮.,„԰\Jhoff pzԸT*p"(=AB?D8_AT2<6:7E%*ހ`` ]d% +nFoR`o(J"H/0 2*/(@NP|" tܜ"JDlAH/QP .ܰ!]". !@@`N'h7p2BҿL7A7h\"H0( i{7ː0FdP\H!&⻰bs8z/ԡg[@,|UYя&P$H0P p(R/  .rﲀo^v@ r/$pԀ/@Q"_&@P(R)K"``/ h`Nt<.>.f5Jlg@ln:Tm6g0B+Hҁ6pHm6pH2HH"Hl <".ҋ A NpUꈜf0 j0l9GTo8T9m0\ 7T7vnvogJ0g2x0 G7 ^x0 To ff kln0BM Tpq PzPZ)Vr€0 o `*81Tʽn (b PO.rЁ0$l*2F $ԐgpHN^Qf:(RZHD&ւ/~F&@Q`n;xf\ .A gprJ2UThe1A"/QNެ|J֠)Gk>$F a@A`蠂cg,?Jf(/ ܳ΢-Xcfj(Tdpdy1簄+br p-@Pm(P:B g"H3h9 1{Д(_ "0H 28D(`1ːq8 0F:uT4\.b2QFJgmF%f 00n2`ϠN@64"0 fw22cBV⏰#Pq,paN؞X9/!8{=.# .$g1~Բuk8F6ŸE4J ~\&gP(Q N `Jg0fHƿH ,CDb6(PRJf1\H.E*Q$I0*1L)}:GoHL0,,ТxNWnr$j!,H&lD-KB3ap(,,B,0JHz"&/ 4p7` V,bPO|b~~ϠlyR`b&?y̎PJ`/f ʡæ|C샒"BTr<{T*yb|zoBub+z,  І @ FJk`A$<`HLA1XO/QbqѶ +蜒Vp"Jg t` <" ҆ /~*i0@f~Tr2~ts!it,:(`xͅ),:v0JAZ-QH,4+6`JTrD6jX>8/** $.PrQ;/l$x.Ѭ:.wgFTrJ01qq$nr62[@4@f R}t%/tò¤p$rʖ"Eң$*"T0$zJ7f@hj#¡"xV(P @.ҡ)%b2V "14/EҀf RB#gXO"R i|Ij"Q iwj-Gr` "tNY 8 BF T&y@* Sc`rpހ{P"T-_@:) 0r72BF:Mp8<@ S(Vy@ TLvvJgntr2Jg`t TJ TfT/ Hx0fJ@g2rA0> *ʴ TJgp$ . `,NSb e08 `08 @@k4HHR@A2ng(A*gA"40 `B@N'$AN/q7]//%/-/Q/c/u///./@///??,?>?P?/t??????T?OO(O?LO?pOOOO9F/OOO __-_?_Q_bOu____Pctv/0 ,0NNV0)a-HС0N^ _\NȄ4NH8:&P Jg~ԑ3H/2/ԑ N3!@ *2^Q @"nܮܫ"αYӽҴ®^@"C-װ pϰ@ *4D¿JfWDg p"`".pf-D/-Ejj|,2ա (3l*4l.` 0p/bbؾb//zo/43s芰N5J=g,ZBKвĿֿ 04 <`b,|g/`$f.rBNdO/gџ3/(V/ր<#`hXߘ8XﭰDJR+Km3媳p$ g nXOd-PTQRPfж0N"@2H^>i\.R@` fA2Hҁ$߁ B0R@=@`)fn=h`]0*R@2.Ү/ A0fTaJ @|JxRЀan.c񢪱N<&6POpLN^Nu"x ,"iNҋi"Hr2촓vHҀY A*N$"@(.p ؀r~:&HTK$ԂԮ(BUL<H$ԂNJE$Т0~JF$01&VSETKJpވf6n$~Հ ?` p$or Ёt઎bflm.r_΁xltSFTLޠ",/mu2 8&8p.j%o7 H!B ,##/"/4(rH**V/h/:"4$U //JEfJF0$` XJbx`ЀKSnJ@/ndU&+@+FJ0$k0 @$RJCm 0H(UJDm:&nlF<` KUKUSl0Ac0Q 8AЀ" 󒀘7B*U_JEm@(EL>UALUL\ITlބGctBQTJQUN4(@e&Rb-S-T\0:FV@L>\XL¡LLqRVNj\XK.PP*g,Jo X{1@;[EWi"߰ʒP҅줘šКR϶ZPXFRdIFܯ`Ku~և$S̡! rrʭYK(YdC a< lHZl~D3AFJn2SYɡm dކ`M ƢpqL,!lupzF>zҘ&ԋɎ@0s߁nP#5uլ~ؠJ@/RH"`؀Gqؤz%ˑКH/Z(sF?><`ّ" .:fv0F&>`@BBn ,c ,XA*Ͼ` d@]Ж r|^ Vϔ zdQn֞Ԍ0 (r@ xySND}b *ȶҸ޸Zp81fZV)BFX`wω¶ϲfx` 0ߜOOhOnAG$Pzrn&dQlE,5ڊ Z(yi#Os#DRfx`((A$P5(ZlfvZl`3cH8$n@ =j*S"p*,r(j &j(p"HZp0fp(p YE1`@Hr2_pSLҒ-A-n(pT*(pr\Q-P:•6@U @8TE1{H"W>T @>=D$n@bJ@g<FnGJg횢/@HR44HU=pNH/H// / N4FXpOHnx޲npo&/ nsv2 /Ntw `Dƀf̉pT$̉HS"S/N>0SCJ@fupns們RE{0oSّvpܺvt|( X&xv1~s\ / dl ҮƀoBnsހwH4C’|sJ` ,jƀΥfزĤj@nsHހH$S(e¥2QvHX^ `yNVH:. (n\p.rf.<@pH fP㏏`J|E.<ppo0@f* d, ,XLβYLL3}pGP` GmTLb׮AZP(@TL" &AUK`*R ` GnU9e Lb8.z Ҷ~n*l"Z/H ~/@N6ހTpl `Tn"?o H/YS'$з&l/&- njboL/ZJ 2&ﴢ rqpnaBV0rpބpڄpքpBn`@Ѱ p h.?00Hq&,Ia1E1&-Hʪ&^J`관g 0gpʮp֮pҺp:pޮppna\Q"{p"@._DI-Ctʸ,pp8(W*X, @.Wl0"@`(`o&/"@J`U.pʐE~B`JXJ&`GB`KXKT&I-LRL,@V`m6J`Y @"JYWJ"J`KYKS}LSL0lR[l^%f ``o1g o-F` l Ҿ G`u GQT~^z]gz`oހ;H<1qCpRC@r`&hmtp *AE1֪J`޴ިPJ` oo n $o <k(`& 1p"$"$"$@r܂""@ @܂H(\prЁtă 1B"~p!t@f "!h "oRt|$"$"$_p\q"x ,"ikNѢp,W@ n@Ҁp.@*qP @2&,@0JJ`DNT,126<4.JTЇ܀~& ` R䆶mp~p都(J`А op 0,5p KSQaVAhpQ\a3T,䆮AhpP hpJ`03T߁.J`R(⹑R*̀( /+/ rQPEJ@"O4BIPq <POf L#ޅ(KJF8P gn R$P Xb̀N-G XO`ptrzr!BGtW/-h"`,4`@ND*nB@p Tp!@ T`&HQ`n`B>A ffHzz|t?a9Qj>co>fF`$rPT/sf bJGf 8? @PA"`"Q j@(%S8 gRJfN& JrBp3$@,acr1&am` r΂kbPwa$H8BGN,gzf[&P`d S`S~P0eL> sdB΃p S` PO` Ta$|(J fp |POp f.(+l Hr}2HቂHF(Nn8$nJA F"b`"?4!P6 8(Q~I z:+J`|`|1I| JgXR$#nUp /r/q_(@ r(J,.p ހq"/sp pá(@J-P|Ѐ>a`"q1Dqȡp\JfqN.%Jg<1A d1ڨWKA` Fk.@q,a`PO@|蠚l@/ p}a%솈0 |?/fѠ;CsCu BvU(0l-" f Q&`!L` R@ QK z0Sl|P`J:pP rx 8PQ!K`:t*9|P'xVh%lpL`;rRHq:@2 }QR'` cp&p6aD$ D!SSJ'a64 p!a? @F`@B7`vXɈт\H:Z@rЁcReߙL p!A*PmP/(sb7f^BtD DrwFBtEJ`B?0& (l@/Hh/p"UO>,P|`T,ܨ o$6aE`! N:/7!T"H )Ш /^T" pZ'" d$T:|BG-Sv6sqڄb"Q, PO0d ΄NoN~|*(BA*q2 s ^@/ (sH  r+p4d O^4Cn0Gfvp:n&"s,\PXP$P) z:P}o. T*0,(V0nm1l3gwЄ[mJʖA\:aqq#ltJgH@`2 S!Eb/ .R /jl!P+&F :`滤peA}&&T  K$y@Ԁ-Bbd$E%:d>Opv, r߀fv pW->/ (=Hf@ @̀uF"u8b~P*B"o4lDd"Loj`oTG4b J, t6 a#Rj oT4 4f)cѠ$RidoTid%)@zNTvzFd*@z0T4 U"|J`0RG fGn[Gv 9_8:.Z!Jhf$U T?(44n>`XH r(LA f" $<0> F0&H &4 6r,  Tn jyR>0'nUBE|x S>(`,H_ S I,$ܬ]>, Jg G0ʄz`Z/ p/:|Pp2X8hr/ H/N:U>JWEf vlְ8ڑ0,B!t6aBGfY.v 6 `6( @-Ya$ T `<L& @m b Pgf  Q)b`~Ђ5*B4 fy `b L 2-1f o[x`pv1zMU?p?",<1 ::\V!P1P (:H R*>)) JnɈ, m8z/PSXГV_@|꼮hn4`ЀXRJƴDrИoR.оm48XO`Pv8ېf ZbQ0&y@H@&BeN 8*$T0 G *+-k<*:zY ?N/ ء/.t: Z 0>1HHb [@0 f~`JՔiJYZ-,H /1Ԋ@`J0N D4s0&T==k kI--FB. \PC$Ap? Q0.ҲH N+24n0}0q3 Lj*BFXb x$hhBF, R@ pC I<f8:hXO Tvt%!:Pg^ʰ0gB0c&3 g{,H&㎂P[^:& ,(mC┪DYMSv4|<`XT8J0FgB&JgGnap`Ҝf0Wff>* EȀ| 1G z<1<Ƃ TN` ܋p`>YGe7F7WEnVT5oGcN`Rn@dl@thnBo j`"n `&8BF~r6SXOf* T6SfY>Àp0n8PB.6qICp F TR{/6/u~:tX0jPs%a<+>Ktoi9yFP`}z1<~Q" 0"TyR^@~Tr=a BF"}~& TSv*6<6$i&<`!(@&$H/Q _ @=F>ݐ p 6=>fLp@ng~`@<"(H.-T?-nW&0 ;g# JZ ax^#0&T,9rH"x1Y"J>>y Sm J?Sfp?߱N0FX| t"aD03ItG`,HT@|@ THІ(@`"LT I"RA?H .P⣸ v"`-P D6!(Б @:V>!I2lP!J96RT`lqZGSnĺG1 :TE, q`Ѕ!Ax`$8m6$LT"J$Hr,>!6RPuz24BXy6Їd00 qfHnrfpXJ.qgr?SRv/pP&Jg>0n f4 rp,f ff .fvqR X.PsJRF8S>(@2XA4Bp}J[0g8^SyİTf҂PHS=l جڨ2R=@-l<@Dn:ARВX2\f (P=lJ* lsI(n9 |HH8/8!UO?</fCPA 6 @ax @f uQLLg ޠvBn{" Hu"}Us` `[@2! x JfD""QJ)6gP Hf20)0N a"H @JWH`/1 |tJg߰ad xJ(R FHYO/0<TJLf.NR PA@"RI"2"!!  _XON`1A 0)AD_A!@u-  ` xx g 8  "@TINu-aʰp.&I4ga 4a&B+I mBSJwj08Bhx `0: <(@(TtvQzQ~XE" A>"@r KC Q`6VfrP0x40BLHj TJ01`Yg(d  Bi J((T"T"Q0"`\I  rd rd Thi! `p4XLR,ePYLJ# i gpEJEj""ao :jJf:N`:kH8CIwP0 A2'hJ@f ``)dYEj"6@IJf_aJ("V"h\# @h(NB!0Jvf6"DPDP`0@HH@B@Dhl0TO Nu!(aخzPazP@azPa`d2"U 8$Jhj pag` fa_x Nup;/0#0B@ hf@4P, Fg.Lf$e mOa! Z2Sg`HfFFFvxBBYp"2> 5Qg8 @pH@v(2gf v`W@g`w`x`~/ ?z>0@+ U@R4W(,@nN?1 Z0!42Xm$fPg&8 Dm`l `Df*XJg`o Ep:U@ <3R 8e@0pg8Q$Ha RFf.`gd n2vgiaa*( dm@ P$X$f2Jg.&R4JBFf &HHaxV0 R.`JJ: B!i>J PzJ(jjp0 opj 1P[1PHG`ӽ Vʥ a|.U@` Q`8 Ρg p6 C0 `0aH P `t RܠN((T?,,(@<0waPTOV8JgІJVp@! ˨h P=H@`0Q Dh"(~.*$ @.(L`H > PE~$$/ jp"_1 @x! Lg.ߑ?+ (iYO?8 4ih/ha Ѩ(opw0gT1@1|!K1k .!L0"|Dtlx "_x #~ Dn"XK"B)"""DB(" Hf_ &DU@"LfB80p`@l@aZ Heaf(6|:Qg|F0h` gQX.?_W`0i,a1C,!C `az$3PJ 0`?0P(>S! R1P1 P":\<0< A@A` Ad@d4@B@AlHxJEg!_ `SD@$3y3PDFk`DFj 63`TOTOXO6psj aB3! Ts0;N"P67i`N 0Vnn2/t iAjh@Lp@f6/Nu C@e]O?/<( /< &Nuv`P1*%a3`=x Z1 Xa@g&Pr2A?00 0 OtRAp.R_H`l``^Bgv qsfnt? -@@k f!/ ` `n/.  3N^v#?U@"HNW.Tw */] ? %"Ar9TOTPqNFNTw gpJ1|.1_0J`D?O`?UԔT"!@.0qsFO/! r$U _D@W~#fvDsPJf/ RcSQ6ptP 9g$/!J _gJPfTH JAo ڒ8f` 4B`mr @Bgrrਵ0gp`gp`g p`g?L`D2oJPg6h. aPq] p T_LߜPK"mPA>1i#`JBf<*1*H?(STL2kTtx`|~/YO"l"Q?)p"Jf"wIpTP"4fPHC4HC0f Jf. ~`Bf( `Bf Ű@hJf( ^hgVv !"GTP"DTPBf@`%l wf,s!.`( Jf*!h !"F`T"E`PTLPLR<$ n Jg!0p (#10D`n $FHC6<C`"GL8JC0E"Q"h"Q NuD1!Hh1 )hog"@BAP|H"Pb(0 ar g $@$RRgpR$@JHG8>. GР>C&x P S` Za֐D? 0PfTP1p"6qN P01| O(@UO/ 0p` K* P&hhg" gd`"T>04<kXp8 FGFfz~Bd;pQEl8"HXH/a _JXg`+`XV<zQ @g(0jpif D<.JyFFͯ`"R&iXAA0gZ4kT{x\FF?1` `?Qg.F@QfzQ~ b(g, QJDk "F=Y(I*- P`~a``wz;500z` `1 r{I @ 7`7`.p"_$2a:{f d,ADa/BoB/D_BBNфP 0BDF @Nu"_40Wf48 f t8 o t 2BW/ 2H "_/v0) PTH0kPvRȫV 0 Q$h$R1A"*$RE6JRg\J`0*L?^@04@m xL`(d^rABB=A>N^gR/ _*NѦqq "//_0_ BafTafBQ` P`Q quJf0H20"_OJgL:JW* P >ÿajg&`/J` ޚIBN _ c!  LNV `UO( TO/ $o< V1"Q42uhVP0gg P$0 `$B`AHia8a6a4 _"a0$x ?gRRjѪ $_.p8 0/4Rʰx7 <?@ ~<GXAon40Hw@"S02A5 H@x2BAAg$j2DA$5`2Do2A4BDD/ 2SA S84lD0DHhx$ĀfRDRX|B\`2dpSB88y4 SD=`ReDUJFnBUE"@/0 ,Nu_!.jBNќ%$p"NVp B O!A2N^>"qB䵔 O>@^1n ?=@(p^"_\Oa o "~H@Jg>g<`<` Dæ<`< `@ _O b0BF@xd H"x."o@iܱQՀP!) ( !Q$Bh,.`' "'(h NI,W.DPı 6.(B0HPLPPy+PZPAh ̗/@t" @"Hgf S@*`oƺ"A̺.g @ q܀g/=n-n*B.pC Ip`>a0=G..t)2"È?$ˮѩ|2"B/@`r`NHBV<60*$4<`e,N`Mp _`B>@.XPPmP _?䳆1paaa1/WޝJu wưR}2 ѯ ~py 8 {g J*`@h 2 _pJVo1 "wB"Q\ޱ""A//+/=/ .MPP .ATP J/y////2`C @| Q$P g"Fߐ#`L0zrk `{Si@rA$BgNJf0T?< ݯ1 ?:F5XO;/c mnjJg 8`nmp`p`B@>@PLStrCmp֧g@W" SNuc2pstrWHpⳌ1fprnL@LZ `HA^,Cf HAP@ur!` AmemcUFG w/ m.$  e&ag0S$S پ,SSd Q;`"Qd$Bpy!L Rm:pH@ HB$ dSQ0UR%US4RA|&Nv~|CpN{*O&:6*$SB&&><~(:f ,W y_ SamBf* WLS_Cf Ȗ]0Ɗ,Wzh@ Ap & 9*=p(C "@p*!|!| 2-I`|ΐxv(NJf9&`Կ$W*Rpq+J.M+j+@*+I&+H")A$2 gg\`2A("O($6NNP< " (gwCpR $Q Ӫ. NXNu*ַRC2Pf,ENXR,(,fh4&F|8ט8&PP<J&J+@x|08rfQ|`R8xxP8>QR|`68 V|`$mP|`UpP` fNu@Nz0/0a&APRPPJPVf P@PzP8T0P|r0F#JAgSf`(JAf(qPњ|00qpn |01m#pLaSs* _ PpNxP8$#pj*RAJ`J*Ns L P j  hq r؀qu`Nzd/Gh$|"R*@|bZ"z ?0q C g(p]r|;JC|H@_|JDJpDk|rj|JE| E@|pJ*V]| s,҂taZ m"°&HʰL۴t/ Bt^|8*_ RBBIgBg?qP`"HAt*_aO>/ HmG/ G30GNB&_RVQ/ PTBd>NJHmRTFdJUX Ф˫TUԸܮU܈Ub΀P G<CC5Bz+Effml;AA+u42-HL!&m_H`PzPfPRP.HSa&L,V_`2+A8|A:<A*0TAXDH NLJR+Fg>:L!SAOatTˋdJAк?즎`BGtz4r*~JfUVJPpAf*t0<2< fPw\P ȐE```/ d*_Nmu$<iF24 B2// Ro N Sof -g "P a,q0*^p z~"P]`g"Pdz0B+0zzNmu0&W6/SCmHPD^L(' RAk4A2H0D RB:P pIR# hQ J.HXN{KfNu5`g"ػ&{0@&n`N0 &p@P"_+O O/ ;|/0{HPp"PΰCB!p0( @ $2(mf}@"" mgA `Дap;Tˤ, z0.F,T0.F,.f,"e +}d$-oF+ΎWNuT쉑|*_",9:2B`,Nu|V [T"[ p"@垕JP@5L:v7ʪ$`ΰ? PA%3=J6fb3± ㈁b3/ $7j8&"[/ x;^gֿ*_`*_b3&ID +gKNFF PE*IJ@-g PDONE Dql H|U/ &&H(I@v  K"LE Zd@Nޫ@$_N{FL>0 ZR poܰ`|.Ԑ Ր2I/l$x NbKN"5KN6@ f2fSf樐gNi$Q$j gbbڀMN Yr&SR AnDg,QMNr`r `r `r `r ` r `r`Wr6@DRJRtPPff RPAUl8P2U"'P I 8 4)U:\JV:Qv*!Vd{["f< &N{ gOB .@B2(d~x~ | \"HmܞaDQg[~QS PPRTR&$ JHG>HG/|WLSCvQrNf&g$@ZtsfCxr[ 2v(vwTRCHmXup|&(* E D"E6@ CbdVJ2~" SOAg(G,ф0zJ"W"QjZ b*<4NYrm#R`aP2U? / Vw*_H|L':Srvrv6@$CV2>2rC|`//qaҘ` f T,W,Nr2*2*+AgW@@Be,j pm ,-R/- 0 XM0D@Ap,g~NXNuNfB3 r;|1+O/ Nh/ mPpأ4P0O/(0( @vdSrPO@P""m&⁞(O P6n 6./ ? HT?G[/ HaNbA&_LX|A/{ 0PH/@AAN^UcQ / a~cPZ0䲀0up{B/Q. r`WJ["iH7|(s`*.P,_ (qZg,dng" ^W@Hmz`f`uR`.T|@>N^ 65P~np`,"rQ" _+_HZ+o0V,pR+h=^8p b,7wH pR$tn,rj*2rf8rr>rvDqpa.r $pvzr se` xEAϢE" agVgy1NU"O+R(j+Lpr+j 0"/ B pcD pc|W@rj`*ʒr* `@V, " *(6am2ԆL!/Pf` `@!SnkNuh(́*Z], UְNo4JoV" @,HB j@NAoo,Wog"VAnS1e,_`;YV@jcr`s`W2o0lpL`V@jd㮶NuD!8"&gA afm`Q2 i`g 1`v@;m 0+|^Ê} +I*p_EVB6rBFJΔNNFEL@I@BAFDG_@HDE|1j  uHp16/"[@/)V`oM/ i:0OXNsJ A?Hz@NDCNzHA OB8$W@V@ (B, JWDg ~+J`gPF@SݠF@0+J@p0t@BJ߫ g,VP/ k ` Sݬ4gDN@PORoP>?(A<\pZpA0/ 8OPOR <eVp{l"6+1D$M">,p 0VP, !a! hLQ0/B V@!()w)Jb" h"^ '0аPs/*` '~f~`~`Q0042:0 NB2^H4/142f:0^4`> *g Sg0*`,h4 Z  /IN.`~`~& "JG,` g(K.`B SJb(K`/!N(@PO )!=,n@ PgSf$~G`"n@k3M1 n@±9 11).I~ W@!HxlBJ1B0`v(@xZ ,AZ 0AZ |&($DH2; /$NX Y&݇,Jxx2< \ NfLP^uf8POZ֮^Mf$PT®^cfPT`xq 0_3Fw *ygN$L B d$< b&"Bc$*ނ

߹",WEg !Sn$C|NKpePp` p`p`p$N,KI*@04I7.f| ) ..wg B.``B.(=|/$Bn=|<=|s=|bU02 4]6u&.'B(|&&F =F(Wœ:<,v-|vQo*<<4JTfHB HB8' HDHD`lHE:yHECv\HESEfQ™8QÜčD(ïp!tEHE .ޜ0gf g [f )&N,JN\f \gN *pJ5[ԐX?EԐֿ8EX  8֡EE"< KBAfXրHB"(.f5HD>(܀HD H@5 \a@ eff"@0H@@4g@Pߊ0\ \JNрp`P@0  0@P`p 2DVhzh'(J)*(f&p("*_< v( R9.6N<X" +(Hsz X4'FJ@(Հ.h.~9T`߬X3gH:>>$876~r{ xEF )kӰ*0>>>>׽R0RaR>RF6`8\Tf  О P0*>`v  l@p bi1||A|`J dMi|I|:i!%I+R56 Iu;0qPF  M5b q)Sb AI5ղ ;0  => J    2 ȡɝɔ ݎT ʝ 5 2 33 R 34 U44X Y [9[ ["0R"0"0c \M] ] B0] U^ ^I0^^U^__ _ _f0f0 U`a FUP} VU  9.. / b4 ` _ P0.uH0@00mҪ0uU 0Ϡ~0P .@.@-@5@01@uT1@ u0U-@!@!@0߰T=@d pT@uuu0Uu-@0U1@u05@Uu 5@%@U0u=@Uu-@5@UU UU!@q0ߚ5@"B@-@5@=@`@U2P2P2P2P`4*`YZP=`&&`\&`*`kP`Zv`ՠ*`v`Hrcy;"``0>`ƺ`κ`@J`Aq``U P-`h$>~0TCB pd pEZG4ppIJghs,>pft%ptxv`xHRp65bpbp^bp&`&%'2!p'68'>5̎}(p0()*h>``8-pRpepˑ0B(P%5a)iI I0IԺ -0>I$ -1 ԉ0_5ޙ3ܦ2I0bM UEAE1A I R%D I UDU D!DiD%UDI֔0%@ةdSm ƀ ڡ  S e96HoAA0uu ;)bMџ3  $P &0t: T 0Rp ZM  {ïկ  /:_qv3ŰPư`ͿIBpTA "U#>U A  , P I M I U! ߵˡ`W 0AE}!d g}X10U=ha @ D3Ë́.>8O M5 *T5 (Ԟe DZ5 ̽M LjJKHM MIx2 })и%M I 4^І^ЖUaU q%U!qIe 5a VIT@(W !y059hEU UiU Mq )Ua I_I EUAE0ѵҭ f {8 m^ w)ЯVI J4d FЩU ) r}r0 -0)Ďu0Y 4Tt>I mUฦM ݹ321@ a-?һrY9aHIJ91Y p}&NB*rtd.|l퟽pjBtՠpYp)p LRB `ӟB0`BRep`|i[ Ű PZPߔ[!pdPPլPԖPޖPP``1=>KRIApip pp*$&"ǡ~9p""p"-p"p#*R#LVy`p^B̆9p~] $L@ ۙƚ @љPҡ`U``p4 0~ 0450h6³RpJpU "ұp$罶3j~M@[*..5M ./\8:_VP +|L``*6Pp@ & N p  !_<00n60vp,0qJstu jlc ed0ĶV50 B0*V 0>"50_hL`cp Wi:0**=0"$h |Ʉ~}`)H aAj k$@ sKurt \cclBBBBclutBBBkc6Cx) dro?vmX6E8Pd `|0tO ͿpM`6E:J dPJ@CURSTOffDl@CG1O_OHB_ eBOfDt ``rQ||CBC|~<~rQΚQPQPP12_HAe@eCT_fD|?S@@P``@@@UUgf_VIPfMS_Q10! 00G_ooP&@òQoodmo);jI7I!bh,z&Ru021#p@\z=+!@A3"` A RuP `H1t ~w|&l`ffR g<献 ?.;0L6c? D=c H81Fl R~xgZ3`v1xP.s +o:ZP@4hE1f{0 )@YEՐfE v?H8mMgو>xgj0%vZ;@a{~K#+:Y 3a3 f 3l0 $Yqԑ6IJ\'1oG ق͈xg,30&6<<0x8J 0@&,f3lp oI31QR61 q<93L ={3?`c{7k/<6o>/cA aFǰ 2yTr Yv`wv ~`rA#8NXzoaT4RudKK`gA!ukvյ6RdJ'u`QI%_pb[ "+ -p8=FNORUZ_afhmsv|x@ #)/5:@FLV\bhkpsx %+17<CIOU[agmsy  $+4=INRV^fls{n"')+?07=ΪFNv`     r zr#8##$s B<t#/`iM7ooC]iWU  ! U""  ~Qr . "  F!]/    /z   "   "> !?6<? !  ##0h6I3 41 00~6 ! ) 0^00Z0 239;'0 J62 280%4&0 @4   1 )21*KB0@XOjO) mIf@fFONT ToW .ZЌnb٤!; Q )14tOOsMO_TrkG_Y_p@cRxWx_>M< @RD$@LvppZh Tr߹%%w} b]yߌ`?B@vבM!tPi m*BCDr@>t?-#VIFG1Q1Dc c$,`#?#@BA:9dV!#6YRAՍPBEH3_p$bTB|PE  1f0D# "`U)E"۟/nn{1@R]ٙffMT;- >PRD/H%3E&@ TbQ9R|E t"McĊfe&SL*T) RՌf}qeRqANG #JD$J *I TcuP1f"E ~! *`c" $(b}&Se*TIE@|qcsT;,>,pH${Q ʐob'BpREDE"'Fa $ D &famr$(@crf"!sŊ`BJR%RBS I wb`B`9  9̠Gãt~ ]Eq D ?S,nx)@]spRffwwODPpuD&Io1ADК ))PZsٚ 6_.Uђ卜`㈙辟П⟓!$). 459>\EJ*TY^c8ikn ӱe`ϱ; DZ@3ɰe`A2;ƙ,qB=ßYӷ) *  > 3- б}5"e`5 &8Js*@ 0 p !0AQ@P@jШ߹ݩxp 0ԹqК1 Ao xң1 K" !r06FPӤC*=r| 0@0"  (*~Ⴄ 3PDCGt5ОAO `D$+t>@=XI[Rp2~} `]_(L` LSBiY`088SWO%Ј@q!@ DL`|GJTsN~aI ~w<z0/| 1_@Rcq(fRUE+ xtZ~zP@3$DYd"0H -@0'a1C0 0 f"c yKIQ& @*1B݈@a` AP H`2B< EQ}gywF1(RS .s9s+KQ!!%@!'O1w$HaQ"h@ }OCHO4BMIJDcS'38*1`1e,W c5P{R\̤@ "DTJq$钞P g/ %*(`ޟ8B 4 $D#SF#0F*DR@DK /{X (\"8QRЀ)$$DIxG b(agc-"@a E 64 DD}$; #S!rEJDDKR"%PЀ" o DDDHB2I$!b1S 2 D12B p e0.2$ E {GR"%O6{̀B )!!DDKB2* RaQ0h`A%C  411,PA$;"S&!LH 3W!!g9Q!Ih0$ h)$ #"@H <9DAz /@/x@|S#yqHꀃ (@ִv>xHfw\t& Q,_ Ra@_%ѭd愕 @S[_W@__Y_Q_ `"__hR+1oA3olo~oo #&,13*DFLR&_e0qw?Pz~BH\p#(-/69ACMRW`ejlvРԠ֠\p 2469<AFKPUZ_dinquz:\` )l56;CFLSY_fpmtzvx0=DK tpzz((v zkyD2 mnمŅŅ˱i&ᘂ'gg'y v Āp ŁeiuiN  ĀɃׁ̟ޟx] Ь  +.0^-   rq  ѧ B>&  0xݠ ޥm&}_ Ӳ k   yӢy帤Ap J0 ٜzy S37MRy]_`R0=lEW`B@2 s`2 y!3@-9@ 8_wycw1 yS ;tH%*M!RI yZ2 OvpHaxֲR xЀcA+@1#e 1bH*hh ǭ@zBD%*DI@$ @cK$ ?HRBP^c!i 1`H$@wgcX¿^JVF1gr_Od2+䙋He(UT@HHC_QAE_q>Q$@_ #c$cUDRAT#cYT" ?|OVHQ)DvfH2WHBB$R"#i0BHƤ"r@c#c$cRD< V Q@,rgd3)DhG*If\ V$$TDQ"oAeRbHj$r@#dUE F@s!Jzs N,l DDU3PHFP$H:M ßNqt\G1'|wHлm@ Q5hz - oD@}2b(xKb CfWVy⿰S'R^3MPh\D3SeŰbOCZ za.r5qy~8Vp}^pdr w %~p,1p;@EJOTp\vsx{~pp׷p¼ppqD r"(.YF*/FC{4!7"6!4#D#V)4!6!6'Z+r/t/B!P-6#D#-n+3%A//g$??P<%)D',?7>,z!88???Y[l[n11i2 L O9O OIEp'@lFQC2@Aw@AFA[aQAAzоCGK:' B v&C$@AAF !C1 P̰XYBAgr4P'AvPО a`oՠ+QmVVԞQQunf`XRLGB=97310//0136:>CHMSZ`gow}voha[UOIEA>:86$`8:=@DPX_flt|ƹ|umf`ZTNJFB?<;:::;>@CGLQV\bhpxxqjd^XRMJEB?>=<=>@BEIMRX]dlry|tmgaZUOKGDA@?>?@BDGKOTY~1`szk`Ÿ~wphc\VQMIECB@@@ABDHKPTZ`axrkd]XRNKGECAAABCEHLPU`m`ɽ{r~`YOTOLH` qF%r{_eb`8p˿ߓzsKaUPLIFDPpTpIL}P`ekrxh`ަ`c`s[U`sDFIa^djqx۝qõH`nga\VRNJ|prHKOSXppw~pĩ``ib\WwE`SX]csķbic]XS=OJNRWbap5Źxqkd_XSNKHEDBBNV[biov}f pyrke_YSOzrDGIM``agnt|fR'a @{^Plh@`_]P^>P0z@x{N@ {vrokQ_^]]\P_bdfilp0AR0AQeR\}\`_acfhtQz~BbcPQ@a}_1a\\^_aAnqu0`,@TifdPcb]_`bTIP}`_Ppcj1`[3`^h+ߤ`@|x2Agؑabbdmp`"0Pb|ytq#mjd``as0Q``'P}yAgdb`f8` g`~zЖ@Wu-t9aoA~zwurpnlkihgggfghiklnpruwz}p|yvtqomkjhgffefgqmoqtvy|{qp9wprfeeqqqsvx{~Q spp'pjlmtBo}zsihped[hilqf7𛠤r}wtrȄ%jpkwp~hfeddd(<Àptwy|p ߙt"`tgfgv >/~{xug#?psvy{~=>j ~|Iq^]4pp ~*%+=+/0BTfӤmOU['K NM#ߵäϷХԿ ƾDz '9K]ױѡկ  ߶gäηs믬8J\\or^~\080  ' ;,/ #5G AEIOUaeiou2`AEIOUaeiou`"AEIOUaeiou AEIOUYaeiouy- ANOanokcvKCHRXU.[S.ʻ+  !"#$%&'()*+,-./;789:Y?@ABCDEFGHIJKLMNOPQR| VkQ[a`abc$Àklmnopqrstuvz<=>6·KMAP#& 㰡/.9Y!@ p>"D/V$c/u///////ʵ10>"?V$ ?2?D?V?h?z??T?60>"?.V$92?? O'O9OKO]O=#DŽOV$?OOOOO __ #D_B<- *$p2`E52 U@b@b@b@bU@b@b@b@b@b@bB` !#b`"b bbbbJb b bAaᰜAa_!dAa@b&@b(@b%@b)@b'@b,+/b+b.b` b b/``bb9p:@b27(`s{@b|@b}@b~@bAPUbTbSbVbW@bX@bN@bEb\b[bYbGbQ@bK@bC@b1a0F<`3a$;Z<`7`arRu@0b.8n<`80b`1ig$׶apo5p|pQaLn|$/w e0KC@ o`蟰`/&d4q2bW8dz(c@bv@b+Ua@bb@bd@beȂUm@bg@bo@biȂuk@bqTt(>oPobotoooooooo(:rDstyw^u^~ȐBdp`qsks}qF@6`r|g:Ȑ*Rrğqp_pK>`p7^E`sLp<`3ZRp<`$`0b8<0t ѣ,_F*+pv(n?aHo0dC8o,>PbtΟ^ruq 6, Xq Gjz}k;␻r0zLpu7j,dT3a)f$FIn-9 n`%0dXP̏ޏ Ŀֿ 0BTfxϊϴ"4FXߐ|&8߲q:Ư/eA[qup R(k|nApI['._ naP!puGC)AO 5AMJ^+ y}tOŬ@<@)z2Q~5f-!4FXjr0u!2rOO*BBO_3_E_1i_۟_:DK!h//,/"Ҥѻ3бp@&_?t1c~rݡ+_K*nƄoކ@$nՁooooo /*p);M_Oq_ .SewCALُsb!у AZ9cEUZdg i@mCt,nI!ƒ̟ޒHxGC "AFܠ);M_]:_сAѣA&dZj|0į֯^QP @FfSkZԄS6*E:ѿ+h 2X;M_q 5 (YwAȴ; *imȄA4ц@`ϰaccl*S<Rq~ǐN|O;V"v'J"$bvJ"K! K i @&D3EWḇj`vV'SI1bJ_fV&z( L6P TఠPsI >\@200DVhz,^Gҩ/dPG&E2//(JI /@@5ѱ#ƾ<V {WL.R ?:b18ފh,0"ǐ h70V 6xV `T 00- DJ @ ؋'a@|3^_V 0n5`8' A]E8`K @ f @0 U(w1i`oJO j1J-`%U?ͰQ0f }p pJЁA/J8AO :}(0ʫ8Ͱ_UUH~@@}\@sA@p¢өӲT?`p{?ZR?cPǑO_aZng0P`ics#4_0QVV @S&QPV PBU"PR5a3aD`Ͱef(``jTXPОP4_d2 Yujzoij`bedememdw !vBtVHqHxY^֩րP8Ro¦0P01N:uHto\{suzppp&8JZpqq|qy!@88pǃŁq%Z }Qw"Kb">BZ?"2$aa%GFfR"_Gb"c%h"_x/_DDA$"LB!Q뒴"#bb2֓!T&8&Qb3fR&fCb]5fbLa4&f]4fxjDZMX-8 שװcicntٿ!dvŁ 0€ƀʀí 1CUgy]oӟ  ܾ(`ª<4[耢t鑡袝 -ۖۀNTtnȿ4FXjϬQcu'9Kߍ/A߷//+/=/O/a/`/q//7 P$o00>Pbt7d?v????7`1?@1o630A4@6155 &O`1/pPE`1T= PҞUBv 0U)3?O@7wwDrO_!Q/4R+_W9P$J_X_zYVR|W/|__@`O__n d_ oLoOffgwwAz}b@VgwxeEUf`cK%8 b"/m|s~kVTpF>vAAT~!1dV,$0q`:4?@+?@wr=5o cluto+ 0 ~uLɎqsstLqLLrqL͌mpwL&q =psJVLV,zsbp*`3 =ff6ac0:`쭂L sLɀmqLsLssLsL`L LL02H"D/l ܀li""'(P"P"7J!'@r1743r84 58$(QKiгi%}9 M=")/$/Z()$)4!U)45;158L?^?eJ6@~2(?$?Ұ8"54s3'3ww&0"s#7%1EFE6{EO%O "'DO$^OpI540!2 9VXQVJU6;UOO+ Q0~2&_$_pI#0D<3 l07A5A52 eGP O_V9 }3%_#__0ogb8YQ2ezWLo^o*u9@=C$od oo&F<32d5!e oud$ C#Dd^p6KW"?#x<" J%!" 3  ǰ m!E v"ǰp &$x!O (" N!(! M"( !L#-$#0## !u n6 0`XArrow1;</*""?""b#TS $" 1$" U$" 0&( 2& c%l"7r&4&#0' RJ$?!>$x 2$0'#A$"##0%G v@Pa=2%?73D>?P?b?*9r""3 J(]?V& $ " E38 6& l")=:' $GF(zQ%!K$/AJ%#A2>${'! #\OV'b=3OрL!X%`3 e8o0Qd^`]j?'#zevcpc^oooo' 0cXB?atteryobTd$X5p2sH`v08p H@tra}puqLvyru sq8Pkqo1@dX 0!\.@Z||||ŏ׏}kqmHUy@}Ce1 hd>Pj༲|6`>f>  o8pp`lp|7au  @G堤mH &f20hlN`zdx?Y~.ڐ>TÒpplp??hq pp`w U06pg3@ht^pđXU 80`x֐xp䰯 z8?`Ϯ' @Fh4Ph|n)אu?BgДӖu1Ԥ ܯ0#8;2V PVАi 5`h~ϐϪplp$>R#RG@0)qtppppsB `fࠞj6lp\ZO£XT.EED`jc(A`)H/.)>< 8 g @hd>( fRGM$x "*&ta pHGA "g& Af @$H#J%I 45zp _1@NugrpLflA<&N![8[!L!J!A!B!CU1[|URhR( H@&HN A"pa߶a0NupNu?~xHJfp"($g$)Lpͽm.Gx,( ~@h,VD  (ڐ M"@f~pJ+kPH@p:I, SWKpN&ztN؃b +6f$L L!D(٩` .(`t?.߅ۇ"Qgp`W.\},)"߇`(OVg*p`KS,NXk`f.`(`4S.P(`LDjvߞvDE:`$Hz2( k@fH@HrΑߚ$i|pNu f +g paypNu~ kJf"+Xp2SAcTAfFf>C Kn|`P*N|L$f IpJgp`r"Q b8 "4# gpcr&ЀуN gppJTo8(T + H@((@ɒ "LBYAp.Nu( k`0p"g*C (P.C_ B Ap @ cp !g02GA$g$&BkLf,,4`I14(jDB&g&Ckf4h0frrpNu"j  /8Hg1BNu/+0;N >npX <|"7Ag4ȡ6>193NukBSLJg"ːg D\aAHؔd'At'B0-3p @0+/f@+gF @vBQCOqבא אא 02 z(*PP ֐_Q٠`A``jQa_____^gpPDRVR0X|$Z b)VEa0clutSX5f~4Z)ؓ(ebUb.o@fYNbTo)`&g}/@AdkVF)naAT!1)dV,`q`:i`7rz@q!odF`bo0Z`a(eza&c˙&cfza33&cNpspss̴s̼sq@A[ss sssq@AfmfsffsffsfB&sq@A33s33s33s33s3zVsssss)qsqqqqqqssqăsqԃsssqă qԃs*qă:qԃJsZqăjqԃzsẵq܃)qsqqqqqqsssss  *:JZjz쓚"zc*s*q*q*s2s2s2s: ::*B:BJBZJjJzJĕ)ZsZ裲sZqZsbȓsbsbsjȓ jj*rȓ:rJrZzȓjzzz̕ <êMsyu$TDtԕ4dĥ$TDt4ղҕoMsMsۻMsMsfMswwMseDDMs""MsMuPbt@HP X`hgDxNePRbtMpTpMpUMpMvdddt>q$pRtSipms)Pp%`  "$%'(*,-/0134678:;<>?@BCDEGHIJKMNOPQRTUVWXYZ[\^_`abcdefghijklmnopqrstuvwxyz{|}~^w 0f`gamaXSt?dGammahIO`<^w!P!mitqr5 `YH瀀p0/gMpg@@0;A/HZ @@B`~.  , ^  p(  , N4Hl> &    N4<.pHFBF"n q&L&$E" ЀЁn qh~J@fRH@Nd.v.BA홿AUA$` H@(z8|`fAU@g ."1f!T@B0;NBx2<@*8HD`0z(gF3Dk B_`x0>X1f$Jgvj3jڈ2x<31b01D@l0PA Eb00*1j!Hg 02A?>000 2:BDHEHDHG`f@`Z@@`L@싑`>@ꋑ귌`0@苑o`"@拑`@P0fڊكd4ܑUR`$Fg D@'@Fg8̰rwg&f+s+0p%00A* dpdp?$& "F$D&E~|* LT. gLtڀن g w" L0ށ۷" gL ۆنJV, p0p`ltfx@0:0: !w( *+0p+0LI?&Fr,dS֊Նa$@a*( , ~VOLD4i .Lt&dSօՄdNu,~$p`ABo**$2$pߠ Rj|1pLS  nj"$ x!Ra:r@ JdbFTEŊC P0gDH?Ew(*Ox> 1ԂӁefeR>S@fNu&F" t$@ g ` oᩆ`,0d g"Fr`S, f"y *, 0\*60*F k~p0~+0Znmbeŷge1~`8~@2w$d* "Jgwd(.k`Dd-jddf]8p@0 @@dR@@8@&F&$ՂrDeASApZ,<@`Ԉ@d@`d,< 㖆ֆ%`RD.AfHo`<㊆\ &`ھ-~REX>kGeǪ@7td-j dbP n$Sj+0N Qhgᬾ@ ᭈPRS2A BP:A4wڮPanA`@|Jga` Vk0<@3u`@@ Ln`p>L` ~{}8|@>^ЇDz1`ccb 0`g``Nuއe`fqa sNuwPF~"~4bt0$WqgJ@g*aa` Q`g`^6 Cf6xz( nm:d׀DkNw` "">H o0/THH  @^0"jW6rHAD 0Lq"ҁg`gr`r`"fr`gS@ҁjJ@jr`A"gj`r`=@!0/D! f& fl Ѐg@g>PAf<gLf$`H XP  gAf g(g&N Dp`pt!QJ@{0z%p` Ѐf@g`/D 1 J _qR30Z;! L\9 z;P:5HZC!1J7GP B@К4 b7BxZ5H瀵20eVD313<<t"P@0e`At!@HF<<00F1 Jr Dz AqABgq/(T@/HF? x LN `uL (O6e1t:E8f< ~?5RTHRHl pE?JEf$ %l5lO @VHQHTAJg )l@pTA?<;@h"FG{캪AHRpC@gd g @0Rf` gR`4fb RВ`$RPdRPdRR Rb  RQB pT@2,0q AfF` P4FO@5R>e1 JG`BRJRHPS`fbP RjSSRPP TvPdPkJRg R pj4`PRpPqNV>.<G8 A=C?C`QVpBA-HB/ /?W\dJ3P-np`F$>0BQ\!g(*|`!f vPJfpI@8H`Dp0`,{@JX`Na (a@p霯r`0 9o^xkS@`j"2A?HAA ?;`bCN^L/e`P2lg( GmgoT @t``Be@Cs`&Nd> G"Vd>"BIG*gn IgZpNfZ,RSp lYa (zpa`S`b xa _H@ H+p0<`p0f8pJgX  a `4?*p&ϑjqqN5_&` bPn.L =g:'ek4`,p/ bba~Ag@o`o \ A tyq  P vx6``8TH0mwaap`a &I@O4$KF0fQRFHjza>GʓPG@aj SGj< GdGW0x$49{fR g"(/4j`Xf^k >"GFkHF?. a/` 8J@lBcRA,G@Nu @jv0FGaaaaa,?z"K2&&I>zJGo#yJx$`v&CUB[ʑ^J2`X` ~(K8<$ ކ8BGHGQg9RCQkoW` 2j2{zra*q _PN8oVgHzpG@?F68:<ذ~U(q`U04&^'BcG^Փ(ی$k2l0!^Փd(׌d7<`iQ" XA<RF郰zޅl Fx<}bmJEgb4JJE 86C03x@gRE`L8fgWR`.R8hB|pmRdgRbe`dCJwSf lSAtin`^`BE6(?LAo4RgzuhZgTJZfRuDx<<F@ ر4&'XvP:E0kSG8APj0NuGo7P8FfgSD` S`SFa^ K$iHB HBA|pm.g>6aXx2$D8@GJGfahRfUGaFRGCo4BGGBNuEpIpqGq(""$(NuSh"EmAqJdBX>gܲGSJa.`nD@ @Xe0<W2DA0` @e0x8D D @e8< @:E"ejp "_/ C-I]ddnPt40HB Bm*lrEn_BB#2Vp rz`roRGOPBVUU:`BaUU"Lذ<>#UIߑd IRe~}JQf@KNu6P"I'!>ARA:SEkB Y`UwJYL J<(}2e"H~Pq>P>";ߡ@94MI%Y`}q 5= 1-eJQHskAI#o.x-X`=Vuֹ1l O# !V PACKXMainkckcKurtO!%`k@pAְxEp6jl(X(T>Jj9T@ 4 * tp>CpgZ  D`( 2"" Dа4`:X*" oTL E`*(`t(P,* Eal2=01Wl E"LaL/HTBgN`Wl/HT@:0.0@`;א^3FF.$  : d Z ""2QNu/0`bpgS@(6f S@`JhEpJPj@"Nu"(42p`/1$0S@ԂӁkO!A!B$Jk`Pp`0 w!i@1i@@PQNPT@P81S@n&ANup` pp`p J:@`*PF`^P@P0A $`6&p(`u0P,&p`&Pe"6rPՐw&p``TqQ`@(B_BTQ` _9TPbqN^ngVP`bP_ ?m @ ~oVPd`lRa.`aH>ސHz h63UPf`g`pUbPQ\edq}fp//D2 fa`evwTr [gqq@P poo`ʮrnqlRsls Cpt8V$s9fa. .g Hz |{a`p4ia PafC``hqP0z (zerqD4gP&BeBjJj Jj_`rx0A @ba*x?X40(p0jBdeaNJBk"L`A`kCĐfffcH  y?\'/@ӺE@ q @HpKZ@ ua.ѿE'D'@U&E%k&@?f?'&%ڢ!h5?%@ N$9#3d?%@TXJ?ry?:,j?*_db?0jﱊ(DZ0@I y# @&c+PC@vfk QĪ@ĩ;jߖ@ǧe]k@n{R~צX@d~2r -@VXkE@IhRz'$ U BWb@ ᐿ vf3cכ(8?q>L͎$e}@6pK6?*]@yL@7ph@ͤY@ULVA&;l0@Y=:Ho@h8EE.E% B`@PACKXMainkckcKurt\P` BSojv/WTOH@rtvxz|CJnk0`(@-DЀQaaaaa0 HSLNuYaYJFj\P |0Nu0/CS@j>Hppr@g* +gbP-fvRޠrЀҀЁJgD%P>@k g D7PNuNNPr`rNVH?0Lp F"E|G=,"DE(0~9XQAzB$N005|11qъ gPgP gPeQjPRafP0e b|aV`P.gtJDjwP9c :b0@,`eDba.fPae`b mn RARR`RAJjg`m aNuR(`J<` |agXd:b2`(cSA`aaeTDb,SPE}gYaef>ab baQ0eDab|@ @ E e:< `ڢaSJfIaw*4N`$J@E 10 f SpagRE`BA3E"n2 n^pHDL N^OP6`|Sv6`dPNfVvAfNvN|d`F$N40400,հP(f.vPer p q@`P)faVXaPX4_` F6p(fvFa"f0pI|`fLalDa&J&6I2r@Nh&6I66PC B+*a `?0<Df8< 0< X{yh!Ixp6{QGrdA"6*iЀ*$<)4)@H4'H4&T@2<cH@2H@ AGoR@U@H&HH'aT@ `jr  `   ~ LNuGr$H*E}gE!p(rB*zPrH%.*L@Ha|!0JjX6UAnLg`N [FNu B>IKMv`vz,MXvY/ $VJ*}k )$)aXРraNr"_h*(X((6t i#BBa6pJgPpr@$FUL5 " L"A@FPWFp\FȰ XO`NRfNu(*f%X5X'HH|fP,8 gHgNuP}N` Q4`7FQ$5Āv<&f"Iԁ2UB00<@{c*,`@gj,&J'Lj|4/`>\w`4 r _x5PzBzDu{{6F%&'*Gir$aڲ$"J 6`0@[ >@ p`Ф[ 6`V"pf a0g4xxpf xN@oJ@kXNuFpl &xJ>,@"($!A(S&h a"@d`F`*QFLo `gwf g gpCPt`x*p g af"R@:*("af1fvp%IaT"j4`3 RBCft5B0a0^ja  `"JjR0a$j ba&#f &/j6iL}0BdCP7WgqL7ggH1sg!B@xpg!`(x:!( THg`gULGTHTIa`.A@/ 8c0&&A0`A($[0*y*zgf4{26gn6f`pg"Kjbl RA0rBfa!`>5A.24p@jd(BT*6BBpzM*CvpgރAA**0wfACg|Bp"KC|A$kX4<` `A$[P &s &S*gH瀀0| @H@0+/Jk0Z jPrepr@ $8jtg%7Bt*rR`l ^JkAr.BAbaEdG`(.`u2`6`0`.`2`,G` .`2`VR`(}H6 g 6f$K"h LN r`ar$R~pfa4~pf Sf48 礪`~pf NL" A/HH Op{8j JgjX( pFFpfxpC|`\Hz|6ƣFxJpNVBn=|p<=|=x{pAᰋ`2phqrqr=rrp X-H-IB/堚3B1C\ İî""hl#Hl^„("0mJ`g^FNEJfc"Rf"@ g8*_c 0!q%K5j ѕ Ncu"P4ɰB@ff0 !|ζ(ʿWgDp&"$@pʰAb 8` 5AAJ*Vg *h8BW*"yQ*6Pg*7PР/jЀACIrցր]Ѐ  fʣ0)u=@B@JgfbJ% r<0AA؀YtBCg4nB4 4G»!KPJٮ 䐺p} "H%Il"Q0XБG hx0.+azwL񠇸` |$,p42`8HVdqv{ʝR0R0R0R0*R0.R0ER0YR0uR0-0R0R0R0R0R0`)2B:F7A 34??163DriverServicesLibInterfaceANameReg_istryAP0ateJInstallBruptFunctionsGetrVAOnHA$UdSbPnGPCEn@ID%TkS|@chlT@%@/o*bInitf@perty8O@Jo%@Cre%@G!AAVdoRpP@$S@AuPfBall"8dN |ߔ!8H}dH8!@|0Us u|~x|#xHXBq|exxVqp!B}[p_pRd}\AXq~qpMЊpr9v"pq[a"am*!B%{OYV&̟ޟpqYƦ&  ub88@88?HBsa tFjq|}x;;}xdxpH T`>Hxp~r꠵T"p"|`0T>&4~%!xK|c44z!8z4T \2.2!K93`0/(#w(!MM¢`T0 340x" Tx#4a:8(1$@](UAe/.D?tAx"| @3AcG@E@Cx>0M!08a9V>1N ~09p),P81?} @"_@@FA^RP0HUQ 1/@@bP ~qUψr"ߟ( X'1 P_OVtT PYQ RP PRPE " U):tXh\$X0Z#KPT^OiT]pO B/ d0(@A |e P*Rd*_Tkt<`vm8c 23JRD18TFA~(C|=@AI2T?ʒTJp%rPT,Jp$T 5XUN-jM:|L"\$PSPJqN`znxqzq|+aM,@`#n"` |i48U }U'>U&2U tk`<8`@`k`܀8|(@U%"18|1R8|+T~8@T>n߰dj Pn݈k`ndپR00|xn΁ń֦v sM#ʀj (R0󀺂dTj!R0|`!Q$T5(0yubtp~KIB[H@U^0I2SQ?+,Afzxz;U@CmRZv J^CYW@!;04,vˠ+HBꢝ݃Q16P0 B J"~23ےpIIݢ{ڂQT<0IՓvL0}PI¿II. ڴUJϔڴqnڴ" @Q HϼA,"AQ|hH1bb Ɛ)^AM?:*g|Edxl!RBoHR/X4K+xJFf{GA\[(qRkBD&@>| qN1cN!1I~CFU"L&1RU@D&>dT 6|c8WPT~4RP <08c|@G ct +T~1Ў1T`|p*1T`*67|+x6 F,|FpDg|EU"^߬a&02T߾|`xk`9݈|^K߁D kЖ{&0s&`(FPN`c\SzD"0)BTwa!Pn!$v ~k`@|1"C |؀TUߎP"<QElC$Bd+xʀ!&01&0!!6P"1Ac+FhC;@8`a=]2!K_QCux.jqn8~ĶPʓWVz`yXez`f9u*Lnp=}JP(n&=daz`aP0n=Md4o8b=ib a6t@8 qub`qBJz`e@uH@2dqx<x@6s[s=t>s<2p`|5YҀ zPP|x DA4~<`8cS"n>>fbVH-&.AEcP>2@+x܋G֊1ƶ}b0|YX DπURWUn8}\@K5RTI}`/r3 b,>s3B0Ns23}d(p_r2EUp.p2rrAp2-p2b;q1XJ*~`3UrN\r1P1q~fπaaN_2#V1]22S1mBԯ6gdm"Np;y`s+FbAqO" 1Z`䠿 |+x8ߣ>W߻ 0Tœ1K0TO4& 0h;0 (t8[0?KTdL0|dPƱF74X`0!Fkʲuѽ5w`]I%Nl`A^bFWW>(P1Q׬8{|u;@8|dt@t|\R@կ*\@ʞBFb;Vɪ<@LH=&Q.KzE T|y1(@PWaz@ FCP@JA19@% A,@5XβkP{ZH)B@AraOIJA>A TLPzT5cX@d($|cPTP!R2P)T"dsH|Ճ@0D@0(P!| P|J`bbS`. #|ecUf/$}@+x@d^j0(ɂۃ$ ΁pخaƒ. |?u׊Ѯ`. E1%8 *x$ `N&Q8O-Gaf|3x|;xsj 0' W>|9Q 1WD.|#xcT|dx H,W]4TW4L`Lݷ-"t11(β 1ZHS&upp>I 8.U$`8PV`ThH` :j0%%nqZ>ZaT`p d<2w@ZQ|(deS'T.P$uTi8>T$Rp2SP2ob0H*nt//xkH# |~x j0K!TVP۲f o;d&ҥԻjTQ؀ ݖܞvRђ^إƸ j1jݪ j޲ VP߲ a*ƸMƸ"U9Ƹj0%j.ŒjױjjcIׅCǡaaשU}Ƽ ij 0mb^'%Ů$JsP`Zjsp$x!*,`?w}1Mr0QbqН`Z# " !t|#x`,"`( `y;?0vQ:X@~T~zx@myd Uj},Q>@@;Z0Q$P1Va(1|P:vaV6Vހ,>>Z2`>|Pnj h`~b0o\ӘgX@8T?M 8e<8""T~pp3`3>vP>]\.A0?`bI,Cpyo9\!r`-Ljڄdҟo"W!J@q`d`+0`4.2 Td' 262 "cs-F.G hH!b(01$u`vT@i8 <@88_8< D UH @ D L UP H L T X P TUDF};x|P@ XVb@]a|8P|:<LT~Uhv0J`0df@σ$fR>|`x|èp+xK.Os!R8d.<ހ`: vP@ @|40T_cD\@z0(UcU3?R`P|;N @>2E q S;^P?AT~Ka|w@@hCxO*@D$D,O>IrU,+P"|ua |`PT`|H݁`dARB_̌dp߾8 f40 C1Z~ ,nPP#ZE#FipËXQPK%֪Հ8ed1a.1Q|pP0+xC|@6aes` q" $ ]gP|b>_ apn͞Ų< {鍺rT`uqؾde_Q#>"(| 0q2(D}0A숝Ҷ}TGA?(|u^d@`diպ—sjApLs̑xa ӊs Ppcs (tat tAx5Up-Jpyʮptx֊Ų0ptٲ;@3˙ˁ!5Iʀ]"ʀ&q;Nvt,tIʹ×s]ĉʀNssʀr& c(! 5IA]"ʉ}(g@=]Rebt}orI,kEݻ_py 0FKݴ 3C~X0z\y~P;;{jB z ^QHW B&@) }P`<%48%1zr(@by$$1($U 83? \8`칢q(#H 麣8<`pg8csz8H JBҢrR|`@JBzP@6CZ@H܀2|8x|P|R uBaoB}2*{C$B"DMxa@JaDr @x;Z3Г0WaS`ѐb`޿Va8Ke;{ ;9_,RA8ST_~;qޡT5ޡ8!^' /xO@w}(<\}$x88 9$Z@S3pUpppZ@M-X|u恲 tu b!r@)jT*l2 FuhR bhH վ<8c@P`PWb\bPPXPUހTbPPPPUހLbPPHPEbPVʧy[lAHv[W04VpuRsҡ|+< A8"@JRу;@`YD68`Te>zx|@"yx{tڔ (F|@W>|O#xdA4b9:> 989 =NAq&{lJ0FVhrƓPBvB?H ]BZ?@Az 2!6^a=d}L@P$ WK NDY@)A5]&z062!w$|͐8K w@_3걣:Hzpf`<>~Ƣe&~AW.F`(4C, @@l|vsPJ@Al}`|xRcJߠ6&롿  @6jmvߠAevxܴX 07H"P F9Αbз?K荎 pQ#$('#)؟ $^cr]^߶vx`/l~8b n"$UN8bT>8ǀ@"n 8Ppf$| A`O|4T>ePp(|~e4 #%`8|4б|/*8c8"T>8J\n1۞~4 Z:8~tR~6]B("U2RdrcFOdP|,|^|c,^ j }{ ^8p`_=,|9^|E, PYLx %p<I(&l>LVn$8IPh/./F/ $^/4v/ /I////?$?6?DN?If?~????$?\?XOI|&O,>OxVO`nOtOH$O@OOI0OO_._F_T^_dv__ QQЪQ0XXPSXWH*hhW)e&hW(JhxВQaSWpQPWhWremaT)hhhaZqQh a0daa uXh a4S |:xmaed %aed OS mac {sЀR aS jTSPdSУQahSQQipcД sU\psQXsm`(cIajsmasqjsQSUxSts5TQUaLjtwratZ s"$pc#fs$`3f s(Tq s)pc+T-4jp s/Sk0pS2 е܆s2%`Dc4_,Њc6݀Kec8a 8aS9y`0S:Ms;pSDаS?aS@VpSDP٠FQEl3QHaaUlsHSIcJEqsK@RPxZRU`xecS`WPRVq4cYWрuW:wXiqu>tƓ+puuueSc&{cactcfdQ u YĬSAc TaĄSĘ ed:c ]rTRԑ  t8aĭ88dS76h ,SJiIlSSHQED1ԫ@\SSVQ@UDQM: l``.AIn:".`*I<.V(ex*N.AOut9.n@ iBt EB% t\x.` 1 7 Y<a\A t|UQ 2a? #/ z .`e/o*&/"D/$A/$chrp,es2%53compatible%0-aB1bnameAAPL,addressQ3interruptsdriver-istdevice_typeopen-pic|:kc qp0nsrdX SerialDMAck:Kourtv.`Joy!peffpwp0Wa2:#@SmGpmG& mRr` HL7р@T `^D`BaXA=aAU^CN!H *GATA/PbwC 7 UF N V ^ Uf o U Ɯ UԜ ߜ U   + U@ R [ c Un ~   U     -P W PP2PUJPQPYP`DRJ+B8/F SC@'@߀@ Ie1faceLibDp2Զ0|1sQNN0Regv0ryQStdCRewPtrSysClearDequeueHLockHiHUnl"`Enc`ErrorCallUnq1salProcGetSharedPraryUsPsFi@0Loa}dg`ourceRa?DCtlEnP`tachsfSetHandleSizeFindSymbolDispose `ShutDwnRemovePostEventg`PeMem`eInstB`Rasf `RoutineDe?script>` `deg`;cGeat7atemZoneCl`Conn?ectiona;r S`;surge`;cdcc{brvQHdrAbsoluteToDur<0MpUpTiO0UbIDdvCStr~bLookup}IniaSN`pertyS`T`amemcpysprd0fsPle<|A!|zx|#x|+x8`8HemAjyr|x(@Axnr@5ߦ(;0;Cӑi)r(@趄;ger,4`T:.~^X8!P|SNFAg.dg`id`SNVlhqfі8ڐ|.*H"@&_.CT.cLMb8b488K]bɔ= 8`뚙.L.iq.u2mWain՚,׃%$,2f0mM^V|}x;8aUF>U>U>8U_>Hd~5@5@L8cTc<ÀW۰0p&~ ?cordIPNદ~`#x;j HaErM8ƒ쁤|{fܖ]tܰSa~_(тĠ޶K`ࣶaƒ:T`cۑA|x脀= 0 88 ax֑ 1>;;`;y{@À;9ƀby~8bp|xơH>6r{.}"h .DRVRO0M|#x{$8ܐ{;>UTc&ThW?@_,"M8 e>.UxT|c|W@@hn _T>}@_h@}@U,(} Ƣ~a8ఃT`?ljw\0Pb"O U-۰(^|{J(>㘀x >Ѩ+n(A Prp֙<`sp8cos8`q|J8 S@s%P.Shoul`:cOnFailureL~|#x$π~ୀ/~;Ѐ02;C}Dxh, },KPVAZWެ|H_5||__rtbܓu@88,_E{S@3T 4-`"Z@ni8'A4|.|@ z'(`4xnz}nt8b`8zyL)"Tc~(44M kmiR#cY$@s8B0qbPք!\MB@Xj& @GS_T8cR T PEPX+SzXȕA12ш?YJ4@!fF4"/H=(=OϺP Statusb;H7Y&TF;`J„n`re?|x8"a*F@rZʦtX,on\.OnShutdownAlls" c/Wn`~ .sBQ Wc!(QvtMY yb/X2iqY%~ xo%o.ROMLourco},;HWb0a,ds;,iWç(tԳW5rrdlHVqc3=OFfAddUniqueTwbe#x<;`8|W6$<.IODonvFfװ|/3x;Vi򐭞ÿoo fInstarp;zU+U1'$Z/Wi HTjbр ks:̄upT}|׃|+x(@,f:Objectу( cR'T~^ T>$fSSizwer!}(78^*.pcpևЈPT }uQ}C|+xU`Phnlv@afTT8[ Pҿ0.bitmapOffsetFromBlockp|#8a@ }V8|^O00WvDTHB|08| Tc>| !Dvq@2@|PT| Ơ8M ~@8_|.8p@BƠM$<+c]åѴƠ`vD|04:…000|T| x|Pي0i|.Mark-ExtentDirty~ |m3UÄ͐bi~b||0|`9QR.Aqp | ynDց2@p|#x ,04|8|@0`1b.N֣غ9ԒWDD| T| PTb8Ln!|W"v((փ8oU "0@fЩb Hԁ$NI"1*b2@$=n| րUQ i"0* L9R:i8_@(|悀Ą֣П.XTW|P?H|#x:0H)_@ @@Azbߥ҃к*׀ .CountaT|~#U }iR.}*U`>(&}cx,, |8⤡#P v0}+Kx}%S.<#0/T:lU J.WS }CST8|K.Ud>8c.R}@Dx=J_0 `m"aF|@Ws.get!iguousMappedBands8T~T .b.BI||xat`2P+eaxߦ̃@o#~`Cax۠n$~aÃtKѻ`"@$` ;^@>ҐHJf)QHI2C EH!b}la Y a}H M aqVZK aV:8 ~@b8 p8Z8.@@j@ aAi@@s Ub0 @AD  aR@BJ 0A{"P~c 0ƕCJ2 !0:ǠQ>`Sessionw)?\G|an$h~aPfJAaTs Bs mBƕ6@iFH[C GHqb/^fReleaseX_/"!Z3x|;x8a8ʓɂD88$:`*rx@8ޞ@8H UBaXX,ׁxaHInB;1`cdT<`diT8?cmg|atT@ျ`aaH EB`a?x8!p/?p .OpenImageFile2ABzxҐhHGQ&LHFeɱ 6!Ѐb}@$PU(p@,pP0@4R b|k8zi2t@D8TCΐ%" yv,n?Ѐp "!,\ŒVKsbAP8T\~@@D:% T.8K|{j@<"8&ipνp8~0XE\j@yVBe>0Y8a a8MJDAu?;|jpD>`te NForm{atNaBW|yLP\3x; Q;8;Hz:ZAWxB4xWD~W4ۀn&|g\ TH,:Pr8WC|~T`<|.T`T|P~TH,fSށK|Pqxxtfx|AbAd4B4Z{xPEbV!ư$ u=p`Cp: 0 ReadLcԎ*P\ؤ$n~~xP'"TV>1΢~KN۰: x} WriteMb@25:B&:(ƷgIdl$rqVBߙ$ .afgp_i0m x^shut0=nm8b2a楷HT,&pBbHcA")bAB0I05`ձ:ꂉHӰӰH^b8v%@onp_1sEd:l-~0closseâs@|0\t`;x;b;D;‰Ho;N;as@-N"p~ s@N"~ N"xó ?}b4|wxr~~dx:^8$VBVYT`?AGd^@b1nBUsHXdT VKB82J@2@<`JD0Bi@>N2 (!<` cِ[@v _\;adPET>q&R<~x%ˡrϜ_xá1WQv!ޒ,:8a`>A&R{~ =:BD`|9P^@bHR&2JE# 208"*sh3vD3shA!?8!s: P logim25Ea@&0 PmBj<\RPoutKd7p2p`3=;HF1!@8ע6҅(Uz`F2pJ JPU z`N2pR JPUz`V2pZ JPUz`^2pbJP 2pfHEC ?Re*7+ `bAK0D^)rW>`>pI6_HVjp fwtƘpap8؋0&10iC &#HbBm:\fAKdp`v D;H#}TPPCt07PbHD b8KV%+w8c }~P?PZ,odTZRrѱp`}B ;b~x|R۠0|PR |IxEz(+*V8#]RDPۀ `V1B8H*2yS!J|PP~*P`dr_^wi•KprE|#x,v!bq~EgeteBsizl~c841(c0&7 ,Sx07Ppb>H Zt!O1AnUS s >6H}1@fu~ @)pleBtyp d8Lb{%;⊂vaR `D%n\v`H `L!8v`8㠅#`@<Ba `:8waT58ҐjDoH4 8u0W@h@`OzDZDsend $jMpdr8ff0w .aD:&ޔU#GǠ"3cOMDAaS$uf:|]0p‰tr~-S | k@Bv`Dvr`@31ې^ZꞾT4 2Ϊ;|ommancTRG0t@B^|Q~`p^p3k>B@⚸2/*!hutdwown](o`&TWƀrƀ PGp0 0|ƀ08@lT`@fPw8`6}V<100@z@f 8b2+Ն40dK("hްpa/cket̰fVpx11bB_ 061VpAA;Vb| 8(PrphNQR;5KE&5aVpN an5HB5A~ZG8Q*Fb*9 ("resolv@|fx0CT? & halP#_f`jh1bCC aH(vooP>aq*C8b`PjaB8H'Bq:pF,O .8|cVq`*mOh tmsec{` .t$:"O;}ftn|Tv0uenadd|jdѐ) F 1aQ<:aEz`&jg)i|4id|jde)FTc>> Ryielmʍ|``8|{x7K < .tcO$h0&0rC6񮠒#VhzxF_por2(T|J1u g`J6AGK2`w|QHnibRD(P3jD # 2zt0 xconnP,@n@"; $jfȈTc߿~f~а_  H!c>OW@> i|6[1@m`\Td44T|ld P|PڰttivAVi1qF'T/.0v0y8}>0@UncK|}03,NH$j#EDjy^q*!&T23|3cUEAb=P¾H|@ |1@xj(0Ln@T#0|ҵP$mH?Fx|?ºPMB~E1@-W?d014`(AX&J@JHdB4ULjD(<:Vq/K8P@)N&v1@jQLbPhfP`(B@|vrhY/PBCeb `cH@oGr_waiting1!Į&T|q0v LG1tZL21|@p ~ޭzP :k~PƲ(߁kC!:@rR/C߃ c4쪮cx2$w| }|! 13(|?  ;7AF~M8|E*&4":Nx(2:@jYQZQ`r4xop|qB>chPkUH~~~P(ֺ~ 2Z}"",lBҲ |Q!6d! |z2|L  .H /*lBSC !Z$9M2S(415O:%3Kͺ~#E@rR 0tbPfP D xƂ~xb"]xU_.Rt^QK{ҐP TZTO\`DoCLOSED2FRLISTEN}ݰDTފPȰe} b,jpV(Pb,P"@DQW@$X RW@(XP8RH yŸHI.'A0p`ʞPT]@@ݟ00d~" dD`YFg"dQj{d0T` ~aQbadj rh~lK#p8~:4pH .p~|#x8:H ºRr8@1 rhKB8@F2_ hPSYN_SENTR_dPuRC{VD˄ x@UP0xdJ(#;=@dm{!XqH2epAd& pxbaH :"p.i6]F ( `&(c@Q!& ~| a1o@|(} ;(:w|}|ppy!%(q À!|#M|+x&$Ҟ$ t(V0p |'+xJbԅ("߄,c! 0pFk;|LfGa ; ذ;!`]Rx,V| "& :것pl,|xY2Ε@b ^h;(>@^pP|k@"| P|8פ d|Q@||Qp|a1}ԅຍl lP a6@$y|@l~YP yf`@Wl=(*} ,61F؅(;X& |f,l#da9~³`|HȳQ4.`*ԣβ~ V mnܲC|EPR;~ D" mIJ&|Z pRy9( @\,[D00_0x>萘oD|̃|e܀{1cAH4 0$~ɱE}2""qyB(УЂҁс ` NޕKB&x,0J:` (@RTp@Tp@ 8j: w`xDj2p2y6pL:"dP~%:200Br1b  pBhp-828p_8:(pb!j!q"@艑~xj J2<kAJ~IɦDmpnz AQGhPESTABNkPHEDdP HU_WAITFIN_12t!cQ HTINGF:dP hPTIMEuLAST_ACKtO0g 08b0 `8ȐP|c_PP0}0eB0QeTD0P*RDV`GbK0q00U @pPx^}¢! ~@XiB"p@et@p|x8dp@N`ROA䐓fVATp_H8x31TCdd_optionhFi~`P@∰~0@PT`A|cpP|cTc`&|`xQ//`FlgastFA|(`_p`x|P 0.; Ѓx Ჰ| lQ۴UR{2|db0<bg1.`PP~ЄKd`Lt8HV`15$`E`<<>b<`h40p_xkP~30 8.Dsend9F6E>r`{醱T`?Va`"|͠nXZ1Adelaya0 F >t>t{>t9>s ,w 6F{OPz-rwisp3p61T|pJ |,\BT>T>|T>q|(T>LIPChecksumDÀ0T}p>p>Tw>T, 61|JUpBT>pUH:}P{TP:|PpUPp}#}xq}Cx8PwH|`rhyzzTC0B@#ଐq#Oh JPb_ P @Ahole_egntr52+z6N@Pd@Пf q N@ 6!N.1petyeܘ-&|#|3x<|>PcZ4|+xxi8|6]Q9OCszpapcopyto_!KnV +䔦0af`8az_עޯfrom|3x.9o@8_0@+xq |iP9|piH`퉟|cl QPp۠0)U<(p7ŎAbtA p9 @ p9R,bp`J,:b }1}9z|cR1fŠ P bFl9@|P9Va}J<0$b8*bRqE6žqp{cT@.:}ruTƄ>q}2z|h2, Th@.NTc>}} cbtf|ӛpcc2qD Lh7 Tt$|Ҕ&I>ҜV0nҘ Ҍ$8I҈҄.ҨF^d$v4IҤҀ@x$6LVXn$,4( PRѡA 0ΒK @|c)A@dΓ@D.$L Βl@F#( ͓ #!Γ$l# pF# #@"#0@F#,@Ȫ$@XΓA #@F# F#) ֝c $cܬ!"#\ .aW@F#!,c H#!Ut@"#"@1#) #% $Ch2h@͔%q!9$K%r'&y1-$&!uTΓ'm0lhΒk)r'*5 3k,@"#, ɡ- Z3.j!Ě#/ #0!D1&1"#1@"#2q!)43@Γ4` Z35y0c7!m#7'8H@Up"#81,#: ["#;< 430E1>!q?TAD!\Γ@Y %@b*'@ pΒA4A#Ae! cB1TZ#D $F#E!M4F!d^TA4F1ja!t"#HU `CLm1l"#L1DM}! "#Oby0%&qQ@"#kYP (#Zx |F#\M!#] \#^I1T_jFGb%1cbn0d2"488 t p D H 084$ $, x > 4 , @ j t d \ L !   ϗ ȗ0 4 < h!!" 0(!!!|!!d!X!l1`1T1"!@!t!!! $o,`!@!``*.LANDisk#"b"#!p %ym3G[%@  @&U_@@pFpp%?~~ +rp"@$?"p Dqq ppp~*"4?t Џ&8;?Network Serverq:Devices:d1-tree:chosen0AAPL,tInfo.%u]:%u" l& x 0w  ( (AFP2.2!! !!!!!! !!!!! `$?` !" !!!"6t566(6,6<t j6XlanLibhal_init 4shutdownT1^6p40  }ckc3Z[Ҡ5ާ Boot q:Pd0STR Ҡ Volume Name4 I@ Joy!peffpwpca*8c`E`H\Þ@H7eb`8c8`N |!|#x1 88`9 HA|`5@a8,A P`P@8!@@|E}&A@|~x8+PHRx,^0SxPtnPHrPQQ88KU-/P@D`Lx8nQ0PL2rPvUnSQ~TASSQJBP`FQcPJQ[P} MK?88@nQڢP.W ,+P8*`/acؘeB8@_>QA` TcO|dp0c|dTc>M|fx`H88"8<<8QRcx|c4B_o!D`;S`9 ΃஢P,@bH!FHRkPpQpQb8`88Q4s|}x)qR('Pptbp0nPP;xpaX;A`Hw6rnPXP8pa6r_FG`@]P2PTnPhzph~ppq;!Kpp6rpppڰPp0ppppRQwq)qy!RWrdcOaxQ.=Fp".@H5 2c}1@2H Q5 :cqq@W(Pt`FUy`EeNa|+xoT~>|3xK tPtp`d;X;`;@; ;@::::@:`":A@:&: ~ TQʆpQ`QAA9S`aB~p8CDE^F HxJi(MzLzKNAPzTzUﲡVrGaI!Xހ6z QPPBJf{r~wp9:T@.|cxP;P -rbtITw>TcD|*dQ`sc mRoE|#x|hxU)>U>KE;@`.Q_P9BFpV9FZ:Na^;~ =9@ߙ!>9J@C} RxAB}JxaAiv?9WE]rD9@CNbFbPHrLrM߱aNKsUjವ*`|4$~$|H=o}?KP"(2P9p`ށ@3 8tճdPpPe6r%1uqqظstդ 6H̡6r.s)W>6v`ހnPpN:ppbu (2DVh0}p#5%.sR.6}>̹J^pUDpܺKل:dQѬ6QnVqP-QJ$x%PÐBFY:p݀%NQFpm*P@ O|߄p|`U>.@mnPAjQr9*PA TAހ>TP<bbЁ (ƒdlpp&P'P.)nH~pP䕠ucpqJ %)tЩrZLR!W#Y.sb@P!9Q@en: MTpqR  >TPHR A5H[n pnQVQPZ?l:̢~?Y?G#, C2P$J02P,000r98>Q:P8cS DI DCE D Pe>_ 0^`8߄(PtT:|0.|LQ *` mCX.Ej`o`U:P<*`H,HHB9}cx[T4( |;xj@T:}@.} xD` |+x|l4T~T0Kݻ|i(q`c`K5BTqBTDzyBT8|+݀eBT(rTBT`A`B`W/z( (1}$4BTP}#,8a2 p17qGL|$TP|obtobIx2obJobbobzobpob$obobobIob b"b:bRb$jbbb)lbtV"!c X(!%mtej*bcscreen#  .BCS4vTs ndrvgenrc @lx0\0!\c"! device_typedisplayiic-address[΀ʏrU V}t[[Q[[T)0 U4=QUdkeuUUnJBFD{@ @DriverSersLibBlockZeroSubAbsoluteFromDeForIOCommandIsple ToDurationUpTim'dd3ToMath64U64 areNameRegistryrEnwIDDose}Search}te5eInit}Prop?ertyGeקwCreInfaceCallOSTrapUnڑsalcRoutineDe3iptNew4SystemZoneSetaaMemE;rrTheؓ;8DoؓIOG [Шxud@ưr}XBckߺKurtqN.NNu@|"x,A!, Opp.H!_,FJ g.Nz"i( xb@cpp IpNu1 J0l! L xHG<8 J:PE njG1 JHG`*pBxlHG><Ρ<: VD Jk*E<GI"F,NFCfD"Hh f f4f&f_"N`L*BChgjffge Jj **lN fz* G*``````` t`F`:`>`j `f`bRdLR`HRߩd@d:|RP @f,B)`&S S`Sjd J߀o)SP"HG4< GfÎHGG Be G`< ‡f%[B\fDB0tJAgt86fJCkt`HGgG@DP<Db2hWf "&_j@DellelE}@x~fXf,gfFߐ IBJ`Zfn B$|jN[w@&< >(<[@z z`E @@>fRD@N2Tf2jFFBBf8<"jFJf$""Ng G dHGG4GHG< *BBi2#X<<``n Gd>C6l.Jk 2 G< 2 `4;|"H[@?"Æ(8A0G Gd 0<\~/2QЉ v <^>  <6>JjDE?EK@\<Nq o(A?<FB?/// / ? x LNBFTDߖg0/H,HF|fA2C kd>2|? 3e f dcS?IZ " "\#! Z&?A a C ! ^ 0J!60<q!zoFf >| 5`Ԍ/F \B1g !6` r"NA zz00Z0jܞ0`a? !B2C n?/Ed`"@0Z"j 0|!a@0p,2\g011"o,JjM (^ 1f0&L!`Z\ 0 ClF /Bh!d6NuBhd *D0mA rAef hl/|CNu>/|}A7aA"HB \V!!0Oa R5r"A) !4 %S.3$2 xBBИ֯dP0ˀjAT2O@΍J7Pg0Y!$1`9L0}24:g*j|~e@ eJFg 1@D@g 6`A 1,yJuo> `g<APL#jBEP2A#3:/0`4#Qd@cQ{gA`޾2 ,<:0Tv*c|0,0024V/]`Cn g ҁ2BV@SPFP.0gTc@j\ f}ZfT)gRF"R"\f8ArbG@R;b1agXF @?f,h(Jf$ %t@ ``8bJgm0V?H6/" ~nr HGgqGHG1uHlgj"T0@,@J)j1 hXUio{c J{j2&qn(f*,p"0pag A16@KA`br\l @k"``w//,&pm_&> 8\a"D|p 8q 5 Ԅt &8 0np0&f(,p 0p!Aq:0LJkH&`UP@fb\g`*\ g(6@ CfhJf A`xjP@@rFj, #a d`w# !dxr?~$ B P@m o@>lXnrtqjQ!v^fJnKkT LB5Tpnr `Ho>psxR" QPA~ujZ|ޯC2E_DEz2~Ea~5K  F(5D24wr(4 GFqr`TF ERʏ܏r"0΂ !JpA@`|C,{REgVaa1lT\q!bhnfpt^QP CݺP@ f2AP!PY  @rTpjZ-j1R0! h(1r˶\q*ز.޲(t$^R @ʴ+1 R`y:C!"ʹU)"fgrcD#z\s`\Gv0_"$2j_ڀBmf CDE RF #&pnJf 0b@!jb6\aŦFxPͱ2xmb!;#" !0br(5I߄a5bFɱ0NT@# V$"n3ChQm_R P?m40p06<@@o(#f"L<AL|"00C`C3PQ!z>D` C_Q R`hg~@ `\`2&`!EJ{_`i?f?ryzsse?ڢ!h5`@@ N*>sFF;?2!MaܗDx9FWk:Fܚ@5 ^?>b y\'/`ӺEF q `HpKZF ua.@ظDZ0`I y# F&c+bPCvfk: QĪFĩβjߖǧe]kFn{Rb~צXd~2r: -@VXkIhRz`$ U: BWbϦᐓ vfb3cכ(8q>L:͎$e}F6pK6z:,H ?*߱_dbӿ*]yLسZ7phZͤYFULV`;lȿY=:HoFh8E>'D;JOPKr!mx#L##c /<0:j//#LN4Vx0:(@H@2@ Y"Q02AzAgj `f`pЈ@ @CE0<aP,E802A0IA6A/ / "$I%d0%&I8@4gI $Q&_&Nu_x%{|GARYXMainkckcKurt_,00ex{tn1lib1oasup70ocfrX1;*0$Joy!peffpwp> ap( }H>G 5H  0ޔ @OJ% O@$0 |6EnH1AEC``A',`& ( E ! 0 ? M W _ i t } ܧ :P :P:P':P2:P=:PN:PY:Pe:Pp:Px:P:P:P:P:P*:P:P:P:P P PP)*P:PAPLP P+gPoP~PPmPPP*PĊP͊PڊPP.BAPP PQPP\PfPuPP2._JDB @B `FS@Z@ A4oFoXo\`BInterfaceLibPrivaterjLMGetCurApNameNewPtrSysClear`HandleSizeBlockMo?veHUnagPBReadSyncaVInf?oTemp`cCallOSTrapUniversalProcbHLaa{PBHebUnholdMemoryUseResFi`LoadQpourcea1]vgDetach]vFSMakeFSSpecHDwDispose`]ql?veAliaSs`Gestaltab]vSrYqpClprQufDataCounvsHOpenDFh?RefNumaqessarmationaIn\wRe`OrLsErrorFindFDpeavaaatxd`sAddr4ްaEOFcZo}npystembTopMapH`qFPospplx`uyq`Qu`QuPBaaE:tGpebusΘ`ren/aDrvQHdrdEn`Mod^sFragCos`xtcExp`GpBeginUnрTrqExecutab`pEmuolatogi~ilushToܓ֑ғPrepareAccRsrc`Shd{`rarySymbolkOwnerOfPCTq{`sCFLHashSlote0[aonnec>aglbl`eQGp{`Gp#ryamgApplyUpd`Qm`NotifyqQpalAl`eYq~0RZpޢddra_CFM68Kqcr_risk֩t9rk9pC9Qqialah2UCS`ch@軄aS `TqĩgchV p?e,Cre`pur``.@  @@@0%U 32 #ژH W`z[Q*b  P$,YqRq Ģ ,$ Nϡ{{>UF^ KP0=P)0{ѫ  `PaPߺ0ze zz0;P1#AҁҭYA@ȶ^@elb@{0Uжҏ0pҩb@ Ҵ@Җ,ӕض0Ьz@%LBM(@ЪN7@LA@*LM0Ld0Kio0#LI0U㦺0s㸺0}ɺ0xQ lL@0(0#|!|}xbx;Q; ||@AA@HAWS?"*.|@@ xA@8`888HW|`5J<a8|!dKHݽ.(0"$@d(||t.A@,Z`^baf A@Vr8!|N 8`A|zx|#x|+x|3x|;x}CxVKw(SaLJ;D(.7@rLeA83j"`(s s e?@A@D89b08ExxvLgxxx97AHfrxpUx Cx}>Kx}_S%.\6H\N\:*^ (@7x(gz \zK=5;.<@"!Z0:$q% xȸ@H+Ah`0|m~#%.

q%@><088ĸ3b0r}r3(8!/@?l2;AE.>QBV?Z3>BTzaX &`f;@> R@Q&`b#b\WhøTff6Q)Vb@aqmB|cPaw"w EbY"zHJiHe}jWs`a&X$N$:eb3ij0H ]|egb18)&`rQJH98b |c,1|&qpQ P0?2j_a+J{DπL^1|I;_P0W:8c Hfb38{f\gx|xpǀ҈ 8@|.rށ8В>P4<ҁhI(e,4,A'p bPĜƒ@H%Űp(I"D 8P {88Td:&$8T.F|.^AVN"1vqV_ |.*0F50*,4G_<~ B,&B7QV}$eGpb0 W>&e0RI0nXҀtҀ,dҀ0X|xrƵV||.6~N|+r;dނsLƒdQ /F 0;D$pp2$r0\bTH5bO%E~< Pos H~ea йy6I ~Ƶ.AW@{;DলD5;@q:H|.NpQ{qQ9b|tx~`0 QN~Lw|.|`,S18e?$HMBו4b,;: :X`?Q,7k@7ЂPzWPt80zbdh{8""1H5QŁCPc V!a8DHrԘ|@>감D&3W{T#K|d,dF mTJ$X8 8 AyC@#u \ a`H$aJ`@.b 4.;lZ9~@6!6DvуTҰWJ\Ժd8P-P:1}pt;`|&R`BS9n\4|;x`{;x|ڰ|4*; VWH|dD8-<$Bp'@0q@2L|n^ BT?}2(@8 A(.DR4bRBgGA0 7xPƑ҃0ZI@)r}4kFP |r1|`ՠTPЄ"sP|`l "=قQƑFQ.O0|3D<l|0T12P8| .rDB`R\Qx||RPHxcT\dx̤,H*~Taj tN >"B84KR d©@ˡ `sҿ8T[|  |xݨs?*Kxlq~Qpz"!180(@233F,@~F8"GI PUbp|+x; jl0>tȏ XBb@Cn!0\8&#.(p^L;@p`!z\z TP90sw>@\z PdQP`^فh}j ;@1LA;@# ֢[zL #=Q&1`pγH2n|;384p#\SHrs*"J`-|i" 0)`o |C"6}: $+x#V 8 PNR,X /d9&4T@|0.bdQp|2P!*j3x}Cx|;x=( ўrnr*A^w|$p;xcxs|H He#`:>Qq*X/ pIj ZĐĠEA0^܌o FX07d `,,k⻹j̰ b*0@&!zw<0 HFy6a&1,j10b`A|b_<2#21!1T:b!.||}.VP$|J#ȿC0j(}CxW(4@D{A;@Mrʔ@Q $qFsIAiF@QvA.9nσ$P@ɻӆBX@w\@`!p|( ˓$d_ :@^\2APe4Xt0 d۴*T X2R@AWrPHd8^~ 8Pw21ŽA~+nVPᒰ?T:;`ΐDVp~=zH9n\00(fK1n >AR^Qf,TaMT T6Qʔ)Pހ$Wr47쑷 T88p+fՔrT>XHaQ|]!Ub|Pnza|`*}sdZRc"|uP` &!P>UQUQPʔT&-A `~ݱa㵩x ^Ҡ~x$:퐫ېbrd AX&9@*aR?(73xW#.W(4!FAʓT+J~0 \Ryk@ (Q NV8p# $HG+V%q 2B/sV=\DnPFa cuR"ǰX\@+$2дn `FaNې 1~wbip(3x|f\K^j ,x\B8:MusRbl 266h]|1X2`(|1L@XI1e(P1,(j΁~Z#ݓ@|eBӭ% B1rorrQj9ׇ O 8bR|qӃrbCMҬ02߼רҍE~׫y^EÄ2|dBI~4ݥX*T`BU|$&T0#΁_P>8(;pb_TB&@6B|Lc 6(eA8Wjc@&ąYĐ|| 4n^~(SC@ < Ipc<`??8c??^ N!~1B"b |><`Jo8cy!2`Ƒe 2`u ffNJ.qR0U2`2`b^{0  m1ǰ B  &$ ~(tHʴ>c48` .H2@~HQAK!NRӧͥyd00?0J46 R0 :0}2U&B-ނ'6IӥuނGpd#(Ґ> `2 У-"PW`jqbp :rp08aQ<j 0zFغt |v@V|؜@@};@\Sx _028a"7<2ـVb|ft Xt`.Pcf |3x?~ųx\wpP[8aa(pꐁ @yQR]AEB]p~7(T!a<`s}hP 8clb ,\<`MAP$8cCSv“H~ijѠ4'P?;TTZzoKa ӐNHݲE^`(~óxV',`0x99 *"ABz_ +SPdpe 8pJ꾦hfȠx̠h8Ҡ $E搡~j8!6O܃(rjuHS 2.؎V |j` 4 8X|:(Aܰ w|;Mhhc64 8 p&B7Rb z"‡|ѝȪ<|;x;AJb׃*ʰ?POTc>b@SH"ĸv\K+`)zzipLnǰX8`f$Ʊ&.7ަ/@PJP QbPbeA T{! CǠơP<Ρb'@W|0,JyT~P Π=o&I *⤵P J)0& Q2uh&PT,'~q,bo|+xCe083z"]"1HQrvzv0B;x `;A8HN24Aa\;A~Mp~r*9pΐu3֔@u>du(x"  !":pþV`?jP0SR@PH4"N*<4R:>Hap2$𯃡.M`BĐ6кTbju|t";ϓ`mwasu&t8.v8K|PxD 2#2g~c~Ƴxm9"{(`HrJ8L(LrHDnPcx۰f`FJ[vfA{^|z՛ݘ`;|qI8|xO1 Ҁ >2D18["(C`g`Hm)Q)`8 |ذ4H| 8K,8,G[ .>4ذP vFZ%vf@N6|#})!`:!&W>JTHQ a0&tP01|&TA"bPP!Ȗئpf3x0O;;>P7\"PeDҀ%`RS1@ ā_x(`90!sTs^!` 8L^88!$@+"Hc(}ɘ`3xP+H?~x  4AH 0|xzs0LPyTXJ0TX` _HMwTv>bx(b!|B4t:I ax&0Y[ ߌ;@CQj"d'd`5r!2x GJV_;Pehх~_*hW 1:dj!y.qjL12X*N %\ V|Dxz@\V " BH 5V 1.&(W ebg[ve}|x.d( `b(Pz@J70.?@0#xO.d$Pߌ@50v?:6fx5.d%&$(b fK٥,\G`6<PTr"~(tHb\K`TjVPRqA @&]0xx|eFCe RTPVPݡAAAyY0QUzwX T2W`(rD@a֑AUfKiTS>pbN04!J5f~`uS@X0b%pdtV`U"hP6\f@wcpcѯH4ut`0~dA_~xsP!7`6d!%W #g~íebL&PGVc$E|c.FVA~A8p|0.f<61@~abqH |!%$JK]&q )Ӓxp+@R^f@@D@{ KRUB~彻=XFL,K`^d!b%h^lp𽱥tr r!Kwڢ8S@`qVB'>`eu0}2 ց7|#x+8ݐ p8b0% JNH^ l|;AtKBзAΑ@u=Q!N8Ј|}rQ"ݨ> :.yB. Tw Bĩ9"B}J9"~"MτN;{;h|s0p":6[1bqjt>>"|`6pq|`xTB|.R0D8([0֐ b3rϐ7TH.L".)8=H-ݪݾXT|<@@@o&}Cx}=Kx}^Sx8b |`v!Q\<HJq%4pKgxxq9MuD?8` >O.DζO@F5F<~`,1Bȑ hop8Ts2sXFP,J698<IWXTJQ쾕,POj},%?=+xnj8նAw|D@(`/P}Qw8`iP$+^PK 2{q~c8(ġ|3x_0_Lnq08k|QS08}@c.WQغ,oQaq8K "`A|DK:*|4F0Y4dʑ8װ|;x|;qQ18ܠ48T ._ |.Jn@| ԺƊ`$.| F5Px~vd{8bF08 0Qn~a68r0R0P |x  PT:@x0$,$1$P0|0 ((,P4 "x,&a +xH6W|4jt$@pzj6~S%(8ֱW?Mr5b$qJ" "A#, PB0@2WPB0[B0L"AB"A>"B_ixdPɌW"`^`XfPa4fPd(fP4e!(1fP"jQ !u6"T>|A4Ajq>;4Q^D>Yr9BP|"APN0QN0PN0 P@"_Dn=Ot8\ 0.|*|1.LZdG~05|.(~a_|2~04W| 3xapRQ 6_$Tcxp.}.T_T` fUfh[>|L,MaWɄ>|PT>}dA9Jk `k@;5)BW 5bNb>{O1|a P>Mp, Bn.uE \@"_R|4^(T: , CN0|':[ r|_1t`(pL4O0Jt0=u0`p O18clx3p+: e|h@g0r:耼/[F2gB7H"M3 :V2V03g%CdosPr:ǬrF2"N1dxT?8cpdCPG`rLhvrIHR8~ K}C~0Cj  |-oWӰ(vH,^RHtH W cC tE})>ɮnaa10d|Q ꑮ0 Tv38PPO0zH98q2B.z/̴",vG,d|IX@wS\]Z<|p?K|g2|"k|aY|ceAb|L` j")q|Ң*t2q9hK0\ <}2}j[x}("8Y``8T~|0(ZAp;bT{0.i a9W{|T1|+xJ{J4b螰(M F:ỴjLώȚ,!}êI@Ϭ{R(}{["W{:l.aœ4^С3ܰUk}_}[xWҟ|~Rz|0.glqWz.\R>|2@H5JA@, T69F` =Tܰ@PR|}A|*AhT?}}Z &JZ^RA9UJ}J2RiRы9ᣈHpW}C1BW0DD"TAe0|h`w.W1Wf W{a mP|H@Alzh~`.9~@;W `NHD@)A0DA@A c$P 0 _vQQV`Hmm!R;L!D |) Z!%!;; |4PR&L$2 1>BJ\l"j0l!zd k0BT k@xIz jFpW0(Jo`a (y!(xT`1@xǔbTc<+Td0h2Xn1~01~z5r380Bq?˜:1n15T>LӡA+ڦ{@`D`O|3 [8{$_>WMxRcx88~v).p3^A|x.pDQd|bR ФxE0a^a۽@xZOx*Ap@ bɖ{~DDW@0.MAI|*N@@ 0b@$FFA0>7bFGRC\!P[*G:AZY@AaAZP>]S4bTt1rA:A|dSl"_|P8S~TZF4*GRz/@*APu2R8DӅ@S{*pPUA_T|a]MT~TQR*G__Upoo*lIo[Q|i0ǡ*Ñ3x(o | f9BoAx2zBqx*'pڦy0蠸@3x|;x;`lx;`& eіBA(Zhs8E0zAtpU""p$"p*"(~"8wː(|d$TE A#x]q8*R,!" " $ !%>*FN *ZՀ& Lp25tP2Z=I0N4(Uކ3f>| .1e`ߠ Z@T.*4;xpFή jgpc2’+0^р. `nb^Ӏ-1 qv삢#`*rVhp# J98|3xYs_p2@YBAj(8`2@A8 2"!|` 8|"@T"`a!A|x!!0Ю!z_#p+*v@ĉ,"HL|cu!: !JK\$8ĐvIx0H;0O5Z4dրe9[hT|(ĐW?pD4F`ÃTB>,R@<&,&PJ6D>NHFqZi|ej| .R6|0P|>H "Q84J}&(P( @D}DP B T0|>UqprP *S2Ё|@r}kJ]a|0TR]aV8lQ >: Q"PK<|cОpv"q(!(ߪp$`2HpT^"QTt jx 4J`"&D(J`$&D*J`*&DJ`(7Db48 aqR3x}Cx}&Kx}GS@ɶI"|s+pT<|(P>A|xQ.|p|xT|cvl 0|`$08|`x|8ΚJ@7Tb(b@(PP| PT6 | ߦ|.>@Bgfq8t~c|3xČqDgq*r,2?0!HOy|`62 |1& T1I5q~@Tp^|;xjv|@FN dM /c2/czjD a}"Q{.eNog ;x"b(F1|3x|4(^vv:øT|ÆpIP1 @&TF,@@v|[(M>M67R7)p<CV"A?9/; |T6( h 1"HM]re|wed8t.Q1g2/0@>?2I(?\@OmAnv#xސ;pT8W};T:(68&|.$|}|.¢۠jK-(۠"QޡjLW>NaαJA"Tj0ޠj$T`?H96@2wXW@D(8`!NJ8{0 ] y վn'pƢS @|p&х۴qT@{ .|!.Y:8p|#xaSP QaݿX\_fHN$`>00ѕ@MH<8>@`8a "c\SeהW⌢4Vt^-!dS 1XNP0^P֐DΤ8~ё( (.!p_Pr(<Ț.V~!䮴Z!6f|H;D36j <(rѴsQ@-y8`H(@H?D>0D$A`r@pKi2(ܦBI΢~n0lF2BQ:XGP`D.GN5֡6p,~H6p6p^(ѳ~N!xq1n֐6r۰c\bA|db8$/H6:|#y l&xPp>k0_||DHLCx}6PWSx(;pю:@(C[(}8(; y;A111e2(;pA0(2<(24"xpcp1:ev:@Dڐ?z8"8#S ܨ=X,KE \!v;Ѐp䀱ro,Ge$2E:9s,8:p\l t*Td'|P琾L]=X@dK5@BqЧjr0:p&X41,b Fb^H:GrH59@XvXzra@r h@lсӿ02sb 0|@p~x~x~x~hx x8XKfW(KO94$F:RT:_ |d. 0 Djk90ပ5,~:Rs0~j1487~(B^A}~(;;XP|Ax".^A9~ !vBKE&ȈP>?;x8@,|;x(4@n@28.@F19PXP |v|5A!}QR#U$8 T!y.!|.&)B20|+0i6= @|zL^OġFx" T`az@8nP9tKyEp"#u"PP|Q9rD氘Ox1fڀ)942|r1|4?2b5@$2PTIڀ9M!6KFDE$,;&<`pw"P8cpcH7LpArQ4Pڀ,8ɠ8jLqc,AP!B0ZB/38m@B ?}CxȤ0 o(8(`` |KjR8QN8zPk|ބdCMW;aƇ;&ĺR(㩡`fƲDe*FoXi0fpd{)48ƲƘg|0xe1| t| Pq^fGܦuD^ʀD2Hڀ 4N*0LT>(Yb6!az0PBH.~Q}<ƲFNqJ/_ NȯPƱS$!_ڐ@уWT .&t6`tOK^T삟ැK^U:b |xTB^Ʊu~R H!$)"^Td.%S(mJd<`na]e= _&\=OqVt|PT3xLvA;a#RP^fA*5Ѥjc`UP0ytI@`i "<||s 6"y ?KbsW@*`< bPB2'5*"pKߥ2nq bPt8{~pbPT;6!qܘ64=:`R'rC!&YB(h.0`Br"gVK;`/ޣ!urb75]ޠ K) rL4H%@DpϤî l&XT P! Բ(BD (ۓVޡFS -n@ù$Ԁ, ۠ ,J⚭.@HrZn\~Y(ߨYߘ,ߢr_:Őn܀" D |B ԲD88TQ'~Q|OxB@6 D65QH/L\+K*?0NPM n||mxGseP+!|WIJR `QTP(},e$&5@ձy ^QdL~^r̠hplpCxg}?K!,sqT[b  S%2n|^T|atr2aaW`oxe|p $D&!`1VA8B!|vA4x.)|+:`$; ./7~Wa캦ȠdsHrqf4lSaSSL|[L|MXdRBR8z!?"; N1Zm V;O!K=wE2!:ALD4<`pw8cpc[} 1$qxq0V@ Qp*:uH@tDl}0`+DB+.(ձ5]g$.8 ꐽҮ;K"A`z1S 6t0˗5b8!SN^' ;JQ0.S7Ks ;֘~@tc{8} .8~4K|qtʢpB0,?`*'`tKs{q|y"Dj2c@ajѐ|'@ Uʤм֡A P5qjPš f0Cf `a6 {|DDZġ1qQNƲJ.*hv`(z,p; |Sb}0$u؝΂>NPK)@͈q} 0KѶ"{61Pj*<¾x%8*:2 2@PϡCғF_$pC0|`x#sjH} Kx)q`I,'| (ª@q$piT>| P@*ت\P, 0W| 0̪|%p`VT&$ |?4}kt=QѐMЀ (LЈ}Ѐ>T@0|04|`F p*1(T!nb8:d>H}֕~1^p8b tF|_#x<8E~Jv>.>:~!.QGx:&0lŠv`za?҆!bTrr< 4,Q |qpW>r3\zKO|~ {@9-v0 zd8 z J,zQ^pTN2̠_;@D4|xZ= ~|+xex|x.0'x9@VTʱľq Q*. |2р נ*ÍQҀa @퓟0x G}4W>fu-&5|1r`xv`pzb ҆z|#xUZdN̠S ! m!;idR@0bP8r`8bP2ar 0pְA)r 52e0$dKžcBc61K^IbNaP.ѴnbO%|ߠpK=)!u`dXLƐEqNtA4IqVFb8UpPA0.Dp8`H I61Q;(? VP<`8c;83Ku"z>(H 62`6|Hp+E Rxʿ8"8X΀@8N B1G΀FK%ъ(0&іbma1 )61ʒhg-NT%P"2@ɚqpbbμAڹB 8cA!BXz8ՐpDQC/|(|cB$ lZ$KRd|R`u[ C=0Q9B3e$Q $FB !p2@mbkjx S`D.VQT>&P HRR@v[ `MO &T 11'+|DpDp0OKq"00| _p|.Hpe8ffz@up<@ ơ>`BS!QF ch ) F0Va ^rUȁx3*'@͡MR VO@&$M:/L/^$,v`֔T:F |.ҢSMWr(6t,e\eqTr*!6_j" &"@NAROpO@&2"@MB"4*03G1##x@@ _@!$@(c%..g1q 0,w,P8@!Of2A6$\4H@@Eɠ0&0C%"X$;0n1NA"71Ph02 x@W0|:B|`40BP>T> ڑ7"08uUyOcOz?9@A|0a p; tqJѲ,JP8}D_Sx}ISAn P6KTt6>YrَTPPRD{>TbQjPnXBdX( $ (RbPl PhÐ\*DaU:v{@DpHp3x|;}Bd,8 p~x ~dx`5ap:eFi*`@>x `oo&dM.ht:oLeVohiyvoĐ# @@L0?N q$r*$r$B$rpZ$rr$rI̊$r|$r8$r@$r<$r$$r$rt2$rIJ$rb$rz$r蒏$r$r0$$rLڏ$r$rIX $r"$r:$rdR$rj$rH$$rl$r$rIʟ$r$r$q#s*$r$$B$rxZ$rr$rI$r좯$r$r ү$r$r($$r$r2$rIJ$rhb$r`z$r$rD$r$¿$rڿ$$rI $rT"$r4:H$A#sPj$ H$ɟ#s,$r $r #s#s\$rI*$rB$rZ߃ ^r>p"q>><<"FragPrepare: need locator ~name.!regLibN toong.real FSSpec. 4Apply_Updatuing connection aldy in use.%RegisterMe]m: lAEWnot k^QoryCL*tainer.pI MPrary_MPIsFullyInitializedMPCteProcessMPTermiynDele3FindCextLLEntry: Wr vers1of CFM globals.=#5Can'tL public Gestalt fun/. I)rfaceResolveAliasWithMountFlagsFile/k0P/$x  ,#~"k Dd" ܆Q@" B( .4dk0YX"\LBx^A(@"hX8!kd0 !Z\.!""#t%A4x(մ`^*p"+e,M"-^.tV.l/)x02jM<2A|32^4Iȶ.5lBP88&9:X;= B8Z?@1G|LHhVNOYP#TVXTT$hQUkY@\HZ"\<"]J^027_ _|f`<*`8aB|cA^eLRg Qj.j}"kj f^p$r$7szt18Zx0`xek}i "Sp"1^0x.^8~1 A.M`z.%K0551\M0e%$@Zj Z~C}p.E `DY1E!*"t.!TQTDAZQJ#MkZ50$S`ZQQ`m0"PU"aU3A!)T1~C1T  V"EPkdYC\,"t!=CYCtTbAC51~C J#©Ö} 5Cš14J#JT.ȥ!$ȕ`\"e1l~C̚ A~Cx6~Cj51 a5!uU "QC5t" | ` p t d0 h x \ޜt08@HPXޢ y"S,0^G|`<__ spr$kkjjiiThg0gfeehdpdQcsU}uZ@ g@@@]  @ '@?U# :@DJ&J`@`?`J@(;OPrivIGetCurrOrepareAccRsrcReloadLMcMacJmpBlockMoveNumToStringDebu}gExithellSysErrorNewPDisposeENatSpecialCaseStackSpatchTblReturn0ulator;Simpl )ereASed68K xeEm0;*MMFlushWCaRangiveNotifisfvrgM_ixedMGV=ion_I)rapHandler_YGestalt_M68kToPowerPCEontryEnMveParamsrievR?Result-FromCallOSkUnrsalm cWgisKSC RoutineDescrip\F9b Prp (o0#!d>$Dh U#T-^,C#)!]\Y& R V"R lV"c `5R ~t! ~"U ~"b8~"%Pt!мV! N N UV"R xV"mR UHV"GR 0t" #iR ذ"=R *V"YR <~" U ? T~"M}":ұ!QR UV"R V"R V2 ~" ~"t Y3#":|< x<;}1 ]W[>@$ >( @U:="@]g|b@ H 8((A A$L4 | X0~XH>PL@WX>0|X}P}6pUߌ02} A|!an?9a07@Wk: }k.}iN MBBWL׾( 0A@|@t`ZOlBU@Pv@@H~@0@B@`@T0A|26yA GCAMAVHB]NIWLaE@$CB@HA[SQWL'_SD\YQ1YD'WL7A_S@\Q1Y@WLG}_S#$"4ro ooڋ1ooTbotoBBz>oPm UǨ"kQ'9P|RdϪ[DϜn[@ 2YHWLAKUHBInDDUn@ @n@@Un@#@n@'@Un@+@n@/@QvDuAAt@ A@@d@"@\@&@T@*@L@.@D~DڟLԟTԟ\ԟdԟlԟtԟ|ԟԟԟԟԟԟԟԟԟԟԟԟԟԟԟԟԟ^ 6>ڿLԿTԿ\ԿdԿlԿtԿ|ԿԿԿԿԿԿԿԿԿԿԿԿԿԿԿԿԿ61U<6 >pAf@]femfu}ޅxA@߀A^0^^^^x^yp^hW HB$I6Cl@nA0 0vAnR (?,_  ~,09!<9A@9WP d ^08_89RXBxr0?BXf888!)N?8> v?8>h ?8>@ ?8> ?- O(NȦ >O(N fO(NxR O(NP OJ(N( O(N Y_-ئ ._@^!V_@^ ~_@^` _@^8R _@^ _- o0nR Fo0n #noJ0np "o0nH o0n!'o- & ~Ю $6 ~ +^ ~R * ~X (J ~0 / ~ Y.- ,&J8 3N8 )2v8h 08@ 7Ə8 6,- 4(Ȟ ;>( :f(x 8(P@PlX> ړ0ړk8 ړ& ړz2/D# 0&/,!!ڑTkz}[xKSr1Kg M@ Eh8Tz~,¤ J oK8*9V8?<4ߌ}D!(cg ?$_(048~#0&9U2}P}|!an@9b(, 8`$^8! /  @ޓ|\@ֿ#(~!|dxl x t H |lO^  *H6Cđg{ړ!j }&Mg)JBI&#(@ nA 9cxo @{`A( }lUU|98]f|`0|f0!0A41C Ѐ(#A05)9J_@9jܡ}1 AD~,>̰L, $?$| Ӱq^ ,9kU$Ҽc }d[LuOЁStъ@hAhp(S(+&DnЌ |4,U:&@՜ DHL.}A(TT{TT"~̆>`T q|+x|3x|;x}Cx}'Kx}HSx]8<DH@*LDPeP>` &8JTsj|!p"L,*jJKf nf nNgnW|P4E&G<QM T|n8 >Pb^zX</`;,!"!:!|c |8T!< |x @L  $ |( x9ppW:X.MAT?kW"\9`*19n2824uKnV164|^8p^4Q1dn\164P8D4Q18*<`<n164M74uV0148d4uĂ0"A4*H*DuMBBT&.&A,2xJ4p4h2SC(ZOzdF 4TU@Db@61|g C .E^@.TDZANUHHAAUTNHHAA M} G} GbP@U@R^,dX,pX,AQR^LdXLpXLJAwQ.8JcX|oX`@gQLT<_ocWQT@.o@ocGUAܢTDfoxoc7UATHooc'UAlTLoocUA4TP a@ ep@OA TG HEp<|/4W!d96purBtaA|t4p4Baau qv7uav!GuavWueaEvgu-amvwuQvuu}Jăr}Aqً))!qJًrي|Ątq*EĄtqtvjĄta@ 0xhƏޟ 0&Tfxҏ,>Pbt34V3,*3$xl@Rj+AM_iϓϑ____)Y_k_M%_7_qO_OO@|^~tT2p?1 ̐IA*0 &A*00*11#0*0'>A*0+*0/0V3I1 i1 0UtV00lV0"0UdV0&0\V0*0 TV0AL3P#@ U<400,0 N!0 00$A0(fт0,CVintv߄UߌߜߤU߬ߴ߼%|U 4T-4nv @@Tc]aCAY1 @8 `0n06C(|`4 Ufp fp| $fpx (q fp ް`|} (}&ppa7OА`009:1!a8@9(,`8`, A`Lp в! `Dqp2 `X|R8(@Œ @ (0|d/xB*_0!@qcXpV/P ,T? |l8` J\ jav0 OЀpBqa q&r;0yqK8`8٪* زqqpH00`]H~}}" p}19U2:3;U4<5=6>7?9`p0p;Đ99 A9B9C;D8EF8 9@8xCFG}I@A!B#EudP+P ސ1AP T:} 80|iH8}'<0|80T4H0|f08|L0|00۰BȻסT~`z;;ްsq|8,T>(p @vT>| |e8| 0#`} 8i``~bX|dS~Pvqq`4,!8b@00c0`Ka80=50+K%;Ra,//Ap`8j_`0QUzaKBjN@>Zb쐡Z h~ڴIaB NFA$ -N?>u>T`t,0N0E񍊴XOLv&8B{0!Pqj' I ¤ϒ¨¬&H@d>(Tnce.|c[|itcdpВ-h5`1PXЍPaPH(yPd<8E 0M(U!I=1%ЙqZ|`dpc`6|xP`'8o@qTeT_вqfvХY^mn8f B πc<:~֢[T8ЀŐVy"QrJV]r VAZRsTV* rV Qr>2!rQrY * tr$EbS((>}* E* r4U+) r8= a.Tb`d#xڀ`,aT<|+ 8a:".\bd8"v.Da 6B"4.Pa@pS%ANƸrq|^qM }s`张|ps&afp?|o qz;,,s;q(pqnDqp!,0<0;T8|3qѐ] u  h, IOrR<x0 ~cA$'εn3B<2~,tҐ0$&,%  (1U'ļ>6?pĖR>Mixed Mode Fatal Error - Bad version in Routine Descript>0at ??4No selec"1f0?2E?4Default6Record1 must have 68k ISADH5CFM couldnt prepare pef1resource,YBerr #, yBGOYKrelo0oNGv54 Dlt0cLTҿ\p4X !TQ ސ@  L_@p_pIQ_AQPP4AL(XPLLXTPL c $8H`!co0dT!hDޭ*``\\XXTTPPAL:  "\"P" jQQo"P(DR%Q$ t`0d(&tQPP& }<d" `YDdP `LdU)``Td)`U`\d)`$`udd)`,c (P[ lS @ b!)`& Vc )`` dU)``(d)`U`0d)``8d! & @d" }b HS aP uPbt`ccs Q0 b}`& c `3p 7t`3p7t`ܪ3p7t`3p$7t`c ,QPpМQP ؐQS kQhpQIP QxpR!" & S "(kX!vnpSdPݤb&Qc(PDl%c^`co0Fr@\Q=Py%(r,%PbL|%c"c(P0b@%$L%b%=<%pb%ch` r4QPbH`"$DcLD\l|`c 4H\p!DQv L!cLx! c l"$;0 LpQDV]xL"7" "$"*Zo(0"p&$SҐ d.Uc o! Ґc x>?"l!!!,,,,_laP\8<|<x 8 8 L A?|z1AH9 UP" v2pv3@ncoedk BAckKurtz1 rbQJoy!o@fpwpa@F`z1v3UPwh 0"z1b!JD|0|#xH]B!|}] B!^B!b 08נ^B!~"z]JB!8 k &R!z=%b*"?9P#x~]P|~x?<uPbU*:N8`תX. =}8v 86:B(AdW:|(.|D3, 8_j$~`BDɁ/ dBl0k?}cxR!u{|#|(T!4/8!@F>Fi!N0F Fܑ̐!Aa !$A,a4<DLT\!dAlat|!Aa؁ء!Aaف١! A(a0ځ8ڡ@HPX!`Ahapہxۡ! | |&}9u0F\d* l. pt6 x@T[R0=| |H|mx|@8X89 TF>62* D. HL6 Pn@L| d!\b|a\dlptx-@|i},0U$X0a|^2`0m| U?jQ j00U @0000ȓ ȗ ț Ȫ ȣ ȧ ȫ Ȫ ɳ ɷ ɻ ɪ ɪ ʪ ʪ ˪ 00 0T00000܁7 ; ? G K O S W [ _ c g k o s w {  z !RVc  $2\<}R1`ƻBP|0DT2TGS06U1|30~.1p (0#8C@cHڃPX`hp#xCcۃۗȇP :A|| ɓPɪPʛPʟPʣPʪPʫPʯPʳPʪP˻P˿PP˪PPPP^T StF$CurrentProcessFragCoxt4ExceptionDispatcherInstall>yHandlsLowLeve{˰% YkQq{j0kU{@{P{0kН{X~u6ЎXaMgrSupport}<ĉ"atܺiP6rj~sTǠzs | 踰4v|uy FdT&tHk]kUvkЎkРkиkkkV ( 8 eE P u Uz    Ս tK@EEFD`J @`J`Jg`J Chm^MFMath Privateose}zFatCUniversalaOSTrapĻFlushEmula Ca>Range#/Regi6r+~$SharedvOrary#k@n#MemBCllnec~;unrmbolsF'indo#IyƌӃriHsq[sincosatan2]keExecutableTo:Comp(ntUP}PzAliasMinimalFromFullP_Resolve$InfoFileFol7lowwerÆUpdjAECrejmoe?rcePtryu|uplicr"pLylI7lЇPutu$NthuSizeOfпArrayDelekaram 8 |Y+ttribppqAppleEv^QendbetTimQESwuspTheZume$,oadAIe,UAElWithUsṄmov{ҙW?pecial <* ManaD3HM$HelpMenuHMShWowBoMs$ssm pc _sgHMI ss,FmZ,DogIDcsRcPi#ScanTempExtY;K4Wxow t u~UnrwNpj*37SeedO[nceErrundI:eDedVȰ>arg+%/7#Refcon~)# *C8+$$/ceS Rx~/&/ceA5/,10%sF%]?$gj<efaul !=Captur'Unc<.!ugitezlro1%DTit$1J"G%DKi'BsHid]EoPEra$Es:A1%DHil@%DbiEM'C%NValu:HB,Gu1m;GDHaxLS,G e]c:HEnϺ Atr`m m ai2CheckUʱpQ52鵋QDIinpϲMDNqOV8ÕcUnmedBlockbܱWgrA5World2IDByrWByMPl&2قشŷ׃solaDq)PPe$1pS"h)5UIs5e [ssot m3%AFer!d?le ! !1pY!HasReadWr@ԻMark>oToPo`ishPLasFX!`ndanqٖ301GIOۑubscribp}Exp OpbaPostHighLevelrZapPۑ`Sal`pPo0am184"apecificp%rWaiva{ilgouse cSt)q`UpPKeysPn1s<rPB !3 !g !N=3!@!N3gN3gNPV4lgl1ggR@:3:gd3dDFDFR(R%Ren=->!FpX"X(r%k(Lz'!7s)%k(0z'gAl %EO($363N(]'k(96P4 A AgPpm6Ej ffLK*aarcch35WDCWD54gHD5D@6AirTFWDpvCN(CL0pDJG)Qig(Cg!Rang VgZ7Xv*}BpwV5RY'%TY%T5T5T5<)df*4f88i,AX(rfLi|X,MakeFSe3ggX i"Mqu0DmZiHL%GvHT@ T"8+}Oy5MapI4usnx<{w <Vop}r5vnvpjwZenyYp[|gExchQOZ/OIDRef\7Ҁ\\N(i?gnPriv;8݈k(ݎTath-=-Ic*I(Lh_px(APPLP(볱͗((mx Ĝ6(a(PĘs__Prm-褂2^Riz0PBume2FSgFSIp #ARIVSVD\SX"Ar%|!A%="S:C8A/harM²0Vs÷ٴUGEntrtcin^(lderaF@/!<F.)py|'ÎMSwap<7ScaQis!MetricsIsOutlKr?Prefera|riserveGlyphk3"PloDdLuVJTohKEachLDoh°aLCeLo@FŦhoLabelP@q/rcRsՖxcToRg~clEData@&H#l3SWICNKCGLUL$LC+nzRoqel~䮀`ctLClicknxtCellL3LtDrawingModcroAwutoUpdP LAvvToClrPa aLaZoneKV{VCl0_tKR=@ hPtxttRMaxB9Q{Sta pacUEmptyY{H!H7SHPurgeHNo)TempV6wMem6FreLX7S6$=TopJaAppl@RRhm)JQQࡡJetGrowLimi;BHHi$Ժp bInua.8#KARBitHjMM ASќBasHJoryUnh!CuousT7SDUFp?buggeraer&xitP1@P*!F_aultFlp "Supisor$RaMenuj! $ԉ!en%!Int*"v!Baval$!t$a!#$x&%Item'*1!KeyHil>ъ 4*1T$T5^*1Enn5Check*191arkh444L3S;tyralcI2C M*1%!KFlash;6a?$|2md4@PopU5"hoice$Cie2C^RPE%SBOBoEL@#!*Int}l$MIDIV~0AS IFrAalisJqB MorCAHAnAUn \ TTiC/VGUD8dHook DlYDHYW`*@@6 XDUauqrGUXtarFVStopGU#!Rr1QorlduC2dDOff@X2kFViRftVeeBcj}iaTCmClRun1RJLnd$ѪDsNM > lNM6OLongSgndsadTocgg\ValidaI klQbHP2vxBeepDTdEnviron%OSTrapozaoolq{|tbox{Enqueu8?@rToXKKAstAUti@ad+b+Blla@*teA3@ A@AN|1BC7opy@Pm~orPmBA ni`e ýK0هօUs+!CTab2A2 2IndextwDev=@C#lu!vawK--epthHastPMgrD|%GrayFix2SmMFr2CMY2RGB:Ր2ѐHSLԕߐHSVVaPilBPixMaaprd ReP INPU=edv4Nk5elUpQZuSAOnIgnwmBffB2`PPS@ @PACDʣáf`ФۥRФRۥAccuФۥRejФ2ۥbФb*ad8adۥE1ni}ۥCl(ФIPCLisCۥBPmr)Pr/PrסPrin f8!Prr0!rStlDialogPrJob C!MeײDlgMaiסDAG`+ [FiOrErruGeneral8rqv䴎Ctl0΋DCEÅLa/unchi-¯Deskss ySr@?s.FhpťSSPoGbelIhbp?Ӏbc $dP#at@$dG4%c4owճJܵJLЎuqo?eenBufp8t4QDD2aeew632ktarafR @@TDv4TksAatOrigipCp4APs Ss HidehowOObscuPΠ &A.:&ACenv!&&NalToL;T!os񨆳iОPP> c} "ctn@O 0 "Arc<<<<ER@ؠbb.sapTCg%ib\b2cb!`Uyn%bDiffbXorIhEqGualgYACcr$ ᛁSul2aspy;Comm @L!KKK6zlylys2c lToGlobalw;StHex0bQtd A!$ <!!l td+tdU( !uP sסC~n"n"nTnᛂ#Џ'ѝ#]AM%Ր3CC! CUCn lyՐՐAUҖTUmJ48e dC3CC@0yނHilOނg l l6c58aPlo35db"C "OAax42/4 BinF4T\4At)pbuzMLr4<4gեԮ4߁'(2ނ,3ealNSub2!I2^PSeardB!pDD1A@AaDt-ervƒie0 S.PL-*TQDtŒDUp C%DooC2Uҕ2ryQ2UUToyUToUhJustifi)`easVz3T@ATXTQVisiLength|Y3OrderQiFbaGAxtQOSp`Ext#rahyQhS)p`iQyQWidth>cPbQPbTQY2`@ALa-b b`xQ*-ourRsrcZ2mesn-LSu@bHobCrepdecUfCtTypesb1r(q1tsLoa@`fsfsetSxSySxN9Rzz,qeRelPeb?DetachevpIDs1IDjsSA-P&sP@beOOk C aw"UuԦwvdY 'rղjsnr&seFPermRjxHhHjFS!phԀjfP eY&s FONDS0V5}tqVBLDoPTD7CrcrapOhp,qoApZernV o aLiptlKeyLaBy0QpIsCmdRrans1rarse2Token bnManfri! 2.Ut1y.k}QDB}Laacސ‘qƦqךbt$rtCp@p2SCSI"QtKALSp LАKxLBlinkn~yQle[AtnKMsgIOutExihe=hu7tDw}we ϲ@иγ8γSS‘xdLongS>cBQSF{tru p5\rRAM SV!TFHװSaq"rw¥arCkCaq/8/BigĂSDeclMgrSPrimar8SExXDataSTsNB$b7StepvFCSRTS[0PoAװ"A;riSPtP?/{a U/åak@ƚRT eZynAs:>!wѸҀvkѭoUa|IE di&>ndEDnD0<4Play@`QCx`S2a4PausenSto1pnusAysBVP<|\4Dou3B?erMACEQ3to1Exp1Wto3Q66Volu"Bfaultput85kïSPaB_ ToauSiD󿰠sexeely#s"  jr@MCr H MisndsTo‘CuTog 'PuqpkđAIFjIFV FY1PPt CPom5ಓ 0Video.0O7NTETE TEf$TE'P`aTE}Idlv_TEActivEDe۠TECu|b!TEPas0cwAlF!TEaTE`aBoxwcMlwlVilPinAuto#z0|ÀC޵lickwtylxAD!HAQ/D!M%TERepl`p$]%U%C"0Heigh~ntinuoq#`'Hoo@ NumC"sTEyF瀌0Flagk_SMDoc"nB@797 0E=vN3Menu_;SM3Fix 8AP(Da b3b8S}e9EFromi1@`İSMAwareApp= aQ3?KInBMetho!C=y5Fu#L`2W1owy@4PCbYJtarZI0lLS*ESuppP8 TinK)67I6T22K\1\_r1h94Il3H1Pat_DsIUWapSPvUTiXVLrYLXrQ2>cTorWToQm"WaMu>cVAwTMa=VIDXVblTSOrIU4j@A:d:b0beBksUprLwzcձBPpUpphhE dLinerbUForma4fRExt0e Te0TRunNbeTru@Sq$fcpfDiaTticw``:uQvB|ЋQXReQRmvRackBitsGUnpt7nP@q2!afPrql32!ic1?pe1Angq1rShieldl3bultFpiTWP@rF0PC<#rFWTita8PC^QPCSho2|^QHu_DBd|Ceh1{BJraw/GrowqMhv%PCZoomPCInvcgnVali>gnBegin4Esnd4&RefI%jRp%3Check4< pA}baveOlmaUAPaEOn{ 8EЪVis|пG2cMagGray󀫑Th1e䠗pox(/ColrAuxP@WskC3WY~A_Go0yPC1XPPASP~:fDCVrM:rrmsHAll:H@rwaAFPLocalZ`0q1MyPAtt3PHPsDeˤLAPFMCjMMPCM1~MAccepbMEQ[CM CMCrb{OadCM~uO9QC{"C[22 \m\f4ItemXCCnPGostqg"IntEpioshCM;To5Qd@·V|XnEnvi|@tChoFT2!Proc)!zrPaߐErrpR;IOPB@PBPBPBnewnt- # leg+ ,f@-#d#pr!TBUti3esqTB==00DITLCou0|r`RBqADBOppskacqc Ctlry1E $o~9IODrvr-" dialog ܐEparamt9E]- eSeGpH|"@{3FF}@F}Al @ti`ߑPkEj~c4agBuffodibadmdҀroE~EɥEҥ adER{ncell!M!GAralEM@i1 l_"AblTC0tTEvQHdQT2MaskTick9viNfs9Sfo!( un" eflush c>s`tefsdrffsren)"!lockr00FS1FFSEFadFS~#MxA:4VDG2U#I0F!I0C"FS1RFR"A21kRs3t42EO FOFxA1\#)NumxAS!2Ar"#CB!QFTFT#2FTl6FTPFTar0Z@`FT`]e1TEx`Tl&AFT2QFT/@!0 @ AoDpCoDoDoE2"oBE5/@E2h2oB)2 U2*ZWs_"wplyOQDivsdeSqu{ Ro okdeYdReRubsOQNeg0OQppfrRV[WF2XFix2XX2PPPR i`xRP_PQTSPPSRLongQR aPaQSq@ainQCosPRn2!num!5tEnabl!pAbcP/pd*tpdHF3HL3H䡝bDFbRFܛ2igHi3Diri3HaA2ag1H5H}3CatǁWDED%D~MladdtoE ll qsҀlcl` -p"pjwl9!pG@ulrP)!qsgL7Scr0sL|vys`vsemTopruufP#trrupr vShevTXaBEЃryPUFlagr&ALimivp>\cEv"s["QGueusxnUes]Enbs#BL}ƇS0psߐKeyTh"hr`|vl2DTr262A΃ICCRsXUWslys?atch20uPsRJBՐ"ꕙP@Օlh5LKbb`v wg0tllikz"𕩧>Misc2Ȥ݂mtߢpPs<}FSavs c+'Typ̓Bsu]}dI0sq}QuLeveyurPi-߶OM85*Pr ;GNEr&\cvB;vZt"Avȍm!S (rxs6;BusVG 1erQrm!ouY`ަw)-3׆}DmpO׿sTgF0umgFl,gBkpۨgՀ7/o3ByH8֩qiccm!*#ZoQHtHEpqNf1CBS'07΃<۳`Stor: BFSs2Len(@z}n?qai?nDevic̓X'^i/v;QDCO䃔Arsry-qidth|Hr;J?ournalPr Fgp(>+u T۳Ap3o۳ tA۳ i۳JTO` ۴OpPq qil30Mod̓*Rx]H}pS f_lj_"k_ j_L;LIDG%D,(ndow0|J)}UpbAs8i( YtWh30(qMgr&;OldIPuctu+#aY@%&>#rayRg &e$Vis592agHoo356!naeN0#O4 usQ5d7rnu|~7qBarVcs8{4)8s~2t34867p{47F14Pat,3J'sk"J?IBpM`G\caI|IyFHٵEERsLoaEC]Ecal6LictivZeS`8Z;D87YVEDoTexzrWoR%agDU;.)Z#hosI%0YCuProcEV;pЁb-f;eABeep-0g-b ingJhoR|pp g{Shicfk Wph;P6l@C1hFY vlgL&v>w;ёHḳXwqWCfg)ry[D0Ite8z;}2Bottos{` }/.SPra8y{4Ia@Ins;mpGZ`IntlSpeSxordRedraS?LFa8xgω5eigh4talgCz'RGSI󚺣oqg trgHLockHiInitkMaxZBPurgeSpachysi@WLimiApkZk#GZh!Nrm@ornewm0geta-mtwPappendh?hasel&hupStylPmPPEv OSòAvai!ȴFl7ushòsN7AddsNq5ϕ oSecondsDelayWr-`aim 5To(QV&oס MakaExecut1WUPĐV!B#Byus0-eteU@Id it=y'aultrt& S?*pQsMcMbwnr&pt2toanglegnaddptsubptequal8tuffhexstdpNlin%E@_mpty%%>$&$Un%PtSubcҜJAPWp%Pw2ToA*RomNQDMiscovrf5`mesfireeiL (5cn1+Tem=8BLԤхc&t鸡QRegBQ eRKillXPTSerpetB;ufHShx;rkClr`tOvSloѝSdVo!sfpputsfe7p=5ܔouܤZC2P P2C c2pp2cTMTVerTMNewTMpTMKeyTMl#TmM"TMUTMSTMC;kTMITM eamTM~1ClearhSLY h`ollaliu?pPreflEGEFilEq EXn_OonfigxToE*ishTMo&%Q;IDRef {ScRemov`CsoWEnvishoòuPrAmjVudj`YLctecElcTEmTE$ALooBХcTE1?uurre$^eK iucomy="(tonuma tP<'E+E&eriu:%E&t)E&l)lȲ'cҙU!Re8$IUCC 5 (To``$ 8m7C6O!shieldCdelsodebu h`ee"DNgTstgi]rgAndgO1Xo1No2hiif=@s0Pw1Mi-s'ÖwCkgoawayfPwRe3grow(3^ Fc3p2boxggray23A3Q8@RgnD|1ger68kRBZEW@]EBlM%xF{xFUn?cachedJJZeroFED(@%8+@9 C@F$P<Yhj@q w4@P@@@@0@@,@@P"P ,4(($2FP;FPFNPQ<[NPjRPtBP}RPRP0RPBPBPJP NPӾ~P~PNP$P<0& 2(:PDL,SP^4fPsP PPPPPPPԪPPPP(4`8)`7A,F*`Q`\ Pn`z`*`:`*``$:`@V`:`9P,4 (8$$20;Gn`N@Yn`iLt ~`~` ~`z`z```զ`r`<v`0` '(,`6$> G`J`S[`_<k`zp`PM```ȯHp``D8,&41 >$FONpT>p]dNpj0szJpBp(}PJpRpNprprpfp<BpNp,P4(ޞp5 `CޢpJ81`_pipqpxHppp}pp ppǪpͶpצpߦppD @#0)p=E,M8X2fq$yB6B2"ҪRRR H @ 0$ 8< AP Y^ f( lv 0 ` M` ƀ 88؀ aa  ee NN BB LL GF pq gf xy no qs rp64{y ڀ; ?< TP fb  73ws gc":>~Q  da {~ր vaf}z 07J "%  ={s  m  $-* 3: 8 OF OE bi od 1 #/ Ґ- #.obfk 49 "   f  AO^ F9 ;4=2 `o_P 3#i scDH  sb1 :j. o~ gun5 ~|raevߢ  ;/ T@  }hU@tzo B [ eAj|ryp  S}Eʠ jrbz IQ}ڠ JV  -5{ޅ p j kr7- +1_E:   J 9""> zo8$f 1-Ґ _zǾit>#  np e{>  <5 ߋ R~9@_ >QDp bhH Ͱ< 5 iHB kJ:= =&HR :7  . 8>8 - uVFP} b GcB.ЛMy]yhL-vS tQ @B ߴC]4 J>2 ! _x nI.~@ Jm n  $ T| w_.}ƐMI` U#>AF7>1p[M v] zVV =>7>H oC }ߞ iDGnC 1Cn  1" &wYB U}4<ߢ 4 *zi3}vЀ l\V!/V>+Fb, mqmrC  K%МB@ PZh<U}OwD}Y ~Mj*/"] /FGzb )k^ b( ߨ >gЭ"j}K dR i*bYQ`3  qF y3 } 95 4 VF '6u㊐,NB 25 9\6 zCR 40 _ ^j#"TUo(V# D `[n #  =4NrU 6Y>FNB pM ׽& \b3uv_Ib߭&" _5Bsruiu)&* ` ~ss2 8y aPy8`CW-oE 1UXr=~&]:\ U&2&RЕb^` kΊB␝ꀵ }Zzj 1\F1'b *~!d CI !g g!8~r4 o wy̋_[ jxB ΀'ilj>0(2+ V IJOBvjV ٖNh8ܡIh~0 q7fZ0 %(,v. z [ L ̖1F/ 9b2 y 2iƝ ?dB TZZ@e讠RFZ`OІ>i:НБ P r]B ݀RO_ c>zBœr,Ý 7i]l QT z@ }Шo0鰈}2ȗR0gt+ 50?i g cPM-} 燒~ѱ оn>EgQ(I p غ }i`ϬY ״PX=^@_B@ww sFR ç J!f |j`Хrz}VprcFVa@ jNE)zip5S ~ـyu2}Fe>X:5p?!{ Ɛ sY`9Q a%ˣPJ"0 wjpI rn>W0"p\vPpm ּzp y}[0 8Sֆ:}ud ݶ޵jP a|a #Oju /{qcvY`Xɰص.̐ 놦@{la M5~ .A &Ih:Њ]F̅͠`>Q/{0߱ e{ =MjP FH/:Е@ ]-ե+| 2,J͟M`z 9pG62)E4v Plrt mvi yz Ba`hz^Ajk ߉墢c P^)pƵ _ j`azrn.`9m(A0xq2GbDw `ɽ Apa훾mk pp9O u> >p~e ZpG pPYҥ P/m #xW   )Q.ـ4^' F? ߰*p ;A}^0U zNƠ0 S)O5aZ ny*IA:FJ}1^ >0fv W 9DBz^NnWgL X /Qom `902p} 6W ˴>`/ΰ㎀j0!!o—E:ffM`x_ Vuk [}P!jM &vJi%Ag1<_J "v0@M3 VPX kG R = cܟ^"E>p[J x51d |:5P ݌  }r@4Y@B@@^ (3材5pp2 AfI.b ٪=`o `꽐zmT}`F.p 0gki9}VXӆ]Ap_1mpЅ6p0; ap& 2 N `w 5n `1 b qЗ)0mCN u, , k^8 p`j 偾moyr0FLN.͐6 q@ ɠ?3_A*P|Z@I UPyxB`#k`: ُ= n a ] { ` } \?0i0   VUg2fr^ ٟM#2 lUz ٖ$ pѰM`K1\ {' +vu2  p aYp=5 30p[.p Y$o0}.4QqW 5 Le wZ hT@ _ 6dF``w1МVp BpNP}H @ OՆ`P-}"Q rP | } Z oJ֠ *>}Х`} +_[?:%U{"D s|ЉWɶcZ+ fi6h} 03 @݀^f5a<[ =O"{u0y  i`R%` n@yWY@ePojPP0ŪҀ`,  ? 9 ] hY)by@p[ JиJ0 )P * Uyb`$e~1`Cnr }_'Ґ2}zi_DPE 10-։qbA^p f*|M  oJqPU@ +k90 Le8@26`XR/opCڠU^ К.X> aY[7@?НѠ_o 9>LfprM  ~|2n`}x wp$@*d@p4@Ͱb7 VM IpL}pj oPqڐhC 8 ڠO!%ː!:W e-"7؝`oJ}zȺ`yPC eP}oGzv pog!JD +Pހ{ T \b֒pЬ:`PHƠݢR{zR~d h!CQ|2``Z손"@2R 5 q2R IZm|PW39`E90"pz! +⚐*`@P5 ڍ@'Cpfp*@D`#S8Z 1@lum|yg 4m`xu)z"@pЈ p`X@Ҡb $ЄT&p [%U00\gfpr; t` D` _x, * J 5`]aphچoKCƠQA aj JgU%禀>Z@R rd>@ |K +ab0ۄG"rej a}Dp{8` poiP!P$pq ad/ \1Pj /.^1;p u ! 3rڠ`b`p aBP >Pie:Pf+`pյS Mo >-ʚ0dBⰤz&`R zI`Pa~@!P1Z iAlWp`)PN H}qp!_ !,1`?J`0l@gZA- I@ra %ް  Ő5aP"&`ޢ y@rZ nd KLb`Y0@C Ő> Yt `A+x ز`p4Њ\ #Bƀ E%@'ߦ ˖ P i  NB =ZP5V GJ 6~ g(@sc puƀ@Xo)/_x TjA8 Pp(=@E--@  g v Ct:ZP@<" z62 ~r& AQ00y  I.t}vr yրf :@@?ߒ b ~UL AqК6 P U9eIfp1PP1N =J@,%M uP[ zP&}ڐP @oPՅ( P fZ[ q>0@aL&`6oM` `U`"y_ ƀr@(:m>p;}7! y(b * M0R5@oEefƀZ%ޡ]* P!p`6!V `Pd6,pA꒐%n~J7 ny -`dNfp5mpo Vֱ0&1`e.``V  " _pA9J p'  {p 3;J !l} GU# U  joJ`e q W.Ų@1Pt2,>Րk yF_4L=>VfF,kPTEl@2@i0i< ͐ AE@)o`*&~ Q0_'f:wpD' ʕ3ƀΐ6 h=_Yf`o 0XfF 5 [Pm$w  `>9 m1M Iipy `0//pm,6 {J? .A5@ i ^MZCkrlfam]<_[^Z\X[W~Z_UQ JOߍI,MFD>C=P?}9-%~(b !#wsn4qWkt.jZ#f3a8\ =8~&ٰ sgObZs[W`8/>l3@+t~.&$oh tT=7s`I#? D=ZYT~UOSLJ,C1: 4 `pp3in8g#iTc#X/S|PIV#H'AB_<60 5.LҰiXtk-pdc^RVm;525*oz_}L : 5gUUL)!HxQs_l{"e`]A7Ys12 E3.U.)},~$hofqzI"f[V/--% #j$xI"pjVmo~xOZ U1XR~"TNjO H: 4\i04I0-,"e*/(j ".P& {"`o%Kd->2nhaOe "_J`@Z:ic0_rlb0M^"0]0"'  -P E vgqPlUj7d#bU]N GpL@s|-Vr zx~)B`/@\BB@B@11G)U(R&LPm 0 0."w x ru2p@iRZVUG A}Fa@?2S0v0 0M2k@I"rMmqEznPh]EVRP@PlMsSW@LOLDE9<3R150)+i#}BjesIPBD>>*6M25}.m40A40M2 4. b0^N @RsELP2 m sp}`\I"]k P JR8022$wq>P/2l;_VP}KP#ZLut7uoqkjUԀ@k2ipc2?>)B4-0T0K.&I"iU; 2yMR[2P@JsL-FR?T>>@8s=c U8R93&27I0jRp_iG(50 502 P nhjRf`a7RVPRK7D-@p:;0651p.j7.&b)x $0!!Kpio7iX0S2A@;s@:7RAR!rm+0g7bU`^2^`ZTPbLqER^`2p4S`lo0U=@7i, $)BS, "( 0 I"S k2Uxrςr)m "Snr0e%@`)Bd?_-U!r0=p77:Tj#$ς"}yk25 0oC0RSmKSyMUEP?R71_*"OoMrt9p2qHUkZ@UV@UO#OH)BKDIGBςI$T@AGAB7711't%Lpg1}cU_}_3["SyPUMRGAREU?C=94 "/ݠ'MԶbiaLٰ7[X7`UROV PsU iO!#o6{"60I"- p%,P$F"\ch͒iX"VoPPR@7:">Vi=7")x AR#Rom i{"d0_RW;pQ5I0/R40{"(U`ِ@!\i #M2Hp/2rU`mf"Z02Zi"T_MQKFAMĔ@!sDU> 88ϐ2]"U{0bBq0=Ocِ,"'`k2@i` F)BZ 2IfaRvUq]"jeRePU`"[0WM2T NLEARHT@{"=mp7k29 M3M23R3 +2/P./T./2)a! MJp`@{0:R7' 1 3T}.s&R)mpU!&i`P R ϐbTE o irh{0h%@XłORGAsAϐ;j2701?r#,03B 5ς_0[k2\uZUU#N`H&3B r h cM2Q+KRLE3B?39"c@ _[dGZ)BPFUF' @6C@/%k@3p" p BJyt y+t?rWRQ㥰JRI+UBrE>R1h_MP 7JvϐpC]ςU\PXP JMU/@(".`&2U,Ep$r(i MU k@R  R5 YpBR5cYp^K_b?rS@@?_9U&P)B$PUpRUu0pUg`bido`{"SZ0(;p RU@ ?rɠBUj/d"U`ORUDEp>]"B/ /2:( RU Ry}`t]"rlPbHpi"jed_b`@\ѳ0TP]"QC@KrPI0UJi7cp0)B. &%0/ZL0RXΰB7 U0ς3,m/ pU'{")p!'M+Z xpsk2u@p"^e&2VP28P2 ς0T0K!``U25 hUcaU`][HPARE5 ?b@T@K;C@53 U,R0P(B.3U&$ C@RRwTl@bsmBbiM]KRZ^0B砵2fAZiUW+ RPlk2NsGbN]0Gi:5 4k2:Yp4_3r1L@B1@2*U"B  yBwqKhB]YjWsQFh>w3p-P$&ς+P0E]A8D fAtEpnb\WςA0;>8/;5JM8U2#),5rS+PARUt5onPhi5jCea=PقUTN[B<[UB'UB`?r9U3r,*߀$[}P âvR]_`Q\K`X}WQrK D;#"l f^`;UXZU}.U'ق. &Mp L" 0rjKUdKZUOUI4;p-4 U-2C0*u1U)5r't{Uorh cقdU`\X"9U3ق4i,iU [VWC0UQR+L'O? UILF}I@UB+4S-"KPKR łU `IU\7X`pRIpMC"F< m>ِM8Q7H(MU i'APKak]\#X32XT`R`pKPUJMr:!57-U%2%p#U [U+ "OMw"e@Ma"XΰUpOłJC/s3B-H@قBp="=! 86/Fg0Ws قUrlgCbMU^ِZsBQӠJi59P3"1v05)0!u'л3# ,ЅM2n5qk HꢠuU<`7â9P3-55.7UAP UpjigcmSZzKK0D7BU%M078c1x 2rlCr]YM9W3fm6,"5 E1j}pPipdâ[WjBL#F"GYRD7>MDu>m<Ԛ/r(S -B$mu4Sc 0Ux sSbnk0hmUmgQK"UJ C22+ +EU(_ &k0ҥo@ YлD1UrulfaBU^Z^Z5QJgKfPUI3@CrGAgEw---TpR,$nÞ0Bf0abӐ^}^3@ZX*90S5K DmU6-'Y` " " eower2pKTӃ-PK/"0w(U*"_&@/rUupRrPkUpj/rSɐMUI@CDP>RU< 61)U5 Bje7BUc_kc0^B5LEG5\_U%a"vMq7BUv qk90e3*APQQ0KYUK;6; U57B7 122U*-1%r'Sb#Z1j7Br`nk[sPW-z}vN"i@d^CZCrYo@T&2I6pCr.$RWG2 "Us1`nBnhrSfN/rOI"U8-P2*C#r'pk"0-B2xAPsBxsl@fmlfXRSo@R"WUQCrMFRLMECr$9~ETf-Bv3p"i)@Mdhh r^iPZ W}-W LUSuUL32SPLBCuU=2<6.pU&r,`$ uUprqkknMg"c-L2`PU\"YWT"TeNsBR@45p+32.U,$bU `blf U^ZZIUWrUX$S"N-GSDtk6p0"U/0k _P b3^ >ӪG@5R! B 6sB Tfa)@] U[WbGA{UA ;7c1/rU}P7P'U1yU q oIicXRNɐHI[6pF@B?p9R3@"-O%C"-P%R*{ " mt 07Bj3@eRf a2c_ra`]BWR2UNsTPN>8=2;qp5Bq@kMrUiOrKAPD=2B83`B-% 3J sːuUoRd_[``%\C3%U[EWMsF'UE5p?RDC>U@`:rékt$n3TZVrVЍP9m`.*%r-iP%3$3U R^`Z)5OPHFV;R8A@271(Q0/[1 )[+A@<ૡEUs/kpeP-UIMFr&5x rskUi͠d_7[9eXUSQ5+0#k%hU-- ;5}o"s`;Y i@QQIKROK_D?P29p34Q0- B30/'*ǰ"#BkПYOVNrT-E@>"))"w#ɐѢ"Td"iw  }pEosrld`j%RpL;PPjH)0BB9ij*""&NФesP7ǰ1So"s /swPm/XR"L$EKD/b %'W9pjѰ #] "3pn Ġ"U_[1XPSURy0L/M GOUMFCL`E_=/7/'M!/ T|`"rlѢhcy0O"852W%#wjWP/KJ"@`:#OP6?58S1o"6LP22$*ApOP 1 0mBsn\ǰXCPiJ#LSRCp=@;O@ :?̀98J`25.2/y0(3-%+#K2"yr`K2`qvTK2j ehc_r]Yr3,0i(1/ '(h`$os"sg`2rMlRd@_"aѠ]\X3Z`VZkU"W9Q}T݀NeAG<@@:>p8".|л)ж " E 2j}}@St.qA@kU(YP!ky0f BUXRR`LgH:D4g9G3+Mp OTiNRRK%KMpD=K7B5BP']gȠ@ [0 SRU,SR.`G2Lܢ9PS(GsTB iGUo"t0nh}b=rTۤCT8yr=݀7:4yr6/! xTv rv5hj"g{`ao"_YP[["\XJMWQѓy0E3E̺@y8R58@22%UYP R5pgw2& "eY5`TB@RUV30P2VDPYU@30:yr2*0 K2i@dPXpa"  BcP^/_UGTӤR9{36 0B@  My6r(?! B" 9bP yryotr`\28oJ`&pru`@xrBOGIROHub4nB01P(b/e'ub&upR  B  {/Br`lrPuIǓ됸@ち?rBzw8I2TEC}@BSw==rv@qbVpj]Y%5ZVH4`'U5.R5@.U4'P-S@Mׂ3CDhB ~(r5wYrrAdPe82rf1bU&p% CbU0SR/pqRU0r]`lUHWBGpA}U<6ubV U aG\UFwP?`5 y>Un3XRRM`LJ`C_Aj_"C=A@j=7;"PB};21agGpbRYTP`IGQpA!BAC;*r1/`);2 fPR1V@jdUgPb"]MYB\X#y WM}FA"0M)"QpCc?BvkqtnbR4 N0G`A"ue o[iepc[M=pG"=ep7r;55:9R&a Yfp Ba7]aop\T0N9SP`LIL09?SPU_"jeReY`a0\BNMH"GgP/M'?vҐ!Bu`p] YY"NpHMpFŢBe 8!B>)8B6x/*P"2Gpb`rb Bo0irkE@f_rk&r[c@VSQpMmF?;w5m+#)#x@s;tQprsvzrfa/]PYWK'Djr;#6r;f6W`/)bP_rp up`ېq`jIHPBDP>BېT8 a  5tTF!s3pmgi'd}cAr<`67̀1b"- j7r!p r{[pS@ {rljd&r[vZ RUZ9S3pMLPF DU3},eR2_*0(I(;!Y$K E!rrxlvpqf@Y0{J؀F@25 .C+T+#9*^W7 aBdKy7t!2y%tŢqk9pzŢ!@R2oh9:0"Q`9e!2@ Ţ f({2o1i)oqR`L:4!202(uPUSfa2e`GK;p5+#!K bImpgErlf3RyUNspHFe@Er9Up35P.b2}p+*`"Er'H b!`fL.z hsa 7WCRKSߠMMGb4[,"3ې+I1@)-#IR@Qqt Yo3poaBlmf[RE?)< T ) Q`3 U7 @ xc0Us}`@\"[)`VAU- OY0;m>!@8r1 *Yto)YuPTPbeRIB@]:A71I[RupjEroiYgz2OF"O@Hr@rD>@s<0r0ː(r-%&P%?"[r=`j }ϰs0mrPllf kedP_Q`Ka4 -}bp[jbFg@@jg2B<2_$52# A#=T50TR LAUO@IAE{?{2U6//'U$yB 7UsnBC@=I52}* bP-5 10rr@U:4"5rSj(Y 0Uxsnhrc_UWUQC=!28pM2(NrOUIr,#$`o3Rs`mrr0lak erc _B8; b0/)0 [RYPU2BO0{8j28}p287[1r5.Js,?$#prU O0-rslUmgrc_R3`rrN3RUC=r9@3bU5.Kt=`okPe^SJU T&P"@U:!7р1r4`U, '1!٠9vqrsm!2pjjke2KFpeR50/kB/@(j52"_ UipUU b c Qhpp`"b^"[pWb[PW"XU SUHpB)? 91S)fb"4^2 ٠Us`mf2pzBi`Bgbb@^jra10]"]"@[MV2U)OrMF"D>r;[5:5R71B4p-Tm,r @Uv psep`"U8I2kB+)#25$3Ax0"S0" ApUmggcb-U`\RX9SkBSIM%C0D˂>BF07CP 2ːrVOPCBUPNb@Ӱ:b4-"e` p52tpn"rplb_`[rXpSRT ˂OETJ]C2?O3R6PUap`U g2c3Rmc0MgBk/0rL EbB @b>2TF0eR#kPsb O 3RoLdl0reU HaрP˂B`=f528'66Z0r) !ײeKp`KbY?@TOHB E#p?bBO9"4Y,CB I˂sY mbn@h2keGP\PIRN`GG5/R2+52)!R R3`rxsm3gc^Er]pYj˂XSSC!SPLB=`m9[6sp0U3i1 d9㚣@^RZ3`TN}b2+0c)y`[RS " rmvPrgbYTNKbP' J"Fi@b*!`[R`R ru}3TRUOb怍R 3B S Pj[yti`bfApasc;_j]`Y7FBAc3S/[8(` U"`Y}p" P"Y vodX1SrR7pKrOpI3L#i` cup9^Yr[Vj˂WRGds@r"rU 3 5tOoghР˂UT[97E15Ae kUwrL EiU60#˂U 7jdUe` Bd__5B<}7U5/B1O *S n/@g3BUSM%53BȜS;1xus3B5OH%I BUC=R,$5%}7#Y 5^SOn;h"UZoPUSpMUF@@REk?U%#SŒUF3?1=73BUvpqJuDYê =s@A;B51$ްB ϠYUBVPTPNMG3(!W@O PxRvPpcoi kfL*@ECa=ݢ53+3BrײsmrTqk#RlUf X%TVm MP"OڠJoCݢ=P7;T4,k@$U/R/B yb&@sˀ/Q' p#piBjdh @2e`W}Q}V* PUO3B0H:4c5s`/4)! Bs` Ru4PRLFp@5.",$r} A#R57mgYbZUUcWQSPBHRM@B9)]U! "'s` 'cwr"sp0@yCK`dh/cgaY]"F`F#?& "=Tlӱ/_! BpE "SUbpcU^`oP\VO gW@IRE[P?D1>=7r%/KqojRW}`Q/m 'b)P"jB!pyBur4PX/UOrSL#&%SoB$fRh"@17`*_;p_- KR "b}^fXg"OuB:ϐ4/9#`33@,71)_.i&_o j uV4PBfaRbP]}a]oBT3PNrPPJg"C{=yBA'p;71B/P*A#JB$k@KSabSM 0 S @/Wk@RV23+r-s`%CޠyB "qpkUROwcA"*M"R"p U#q"xsrrlra0ZpU/YT0bYTbWUQrNGF@3BF`I;#R,A$1wrjto fvD@r_K`[F}@r2@*"0' )jb0#(f+D@yB_{0[^'pZS)PM2PJ#RDP>":4*cp"yB%/@oB pwwprrt`or1joBqkl"n] ".Dg",b*0"j"$ݠ)B2pS$8s`9|!H8ð 8?8HрAHa88e0!@}g:N .6HQVZ)jft$2|`49&l@)P.`R 0V1Zhd2DF.0f +|T/E;QpZl/,& 6)T/>0I!=N/ +T>$v.J8.R0/ +z ߰8!!3lB]rO +.PDG8n@К/lOHPK͢zY-PZP^_h1FO?m@O_[K_OOGG_ oO^ ">`A_ljo(oPbBoTov0D=4lAo^fuoo}L"9ZfGUmPFlA!j>TB)Vhin|Zj!֟ m!3IM&hHSC(h¿PO2DDGqO(ӯ忟'nmȞ|4Fn2,NG mYхյ*$qJ?|41 Gf3 ZnxLZz߂K[zKK[+KI;OGlAo_-'MYBFIJPV,FPVKi3 Tf\`T@PfPn^f5Ƭ/T0U@ JfGM/-ɐ4P J' !6H[<v)U>~ q3SB "fG ,n#R[  :ȰJ*O90 $@N ͏o0YPKU'/9/K#BR V/h/z/@.-R =//^AK#j88J\Q 6?l1|4J}.28} 2OPF=`QOpK|f@^P٩O_ i`o4OZ?l6 V`K?yog; V`m;o e V`!O+o4A q1 Ke)ۯo!}o;~bpAv~B:!fll:¨H|2AS >lol6[hr~B : l6Kڏ;*K< B8iT~Q8|J0^a ):G}, @^ ؊5:Cb"@ .Y@ɕ6mfB/@KYjP蕊fx:`Y Fo8`Uٿ>9a>b0<Ԑﰡ:@ @Z910[}cKy5X֙2 >VeHZFNRjɦ6@>ɞ0MR@bt!u@`]F@߾9栕/fxUZU0^p2]z>=KM0/߻p噖ߨvapѶߴᄂp paﶬՀ XfFi(~?%<$KER(7=BXb|!B]FB R:KI<B ⍯-=)F VC|4})Hs@89'}JPAP} pPW8g\PW00@0uI1D"!;|n0F Jc/xv,m/Pe-`n0F 9 r Tv'!/>X;];?`PNN<1?>;?PhtBv')Aev/h*Lv+IߝfJ@COdv'! )AVODNpL6Oh*VKMOl&e8JP8eh+_>\?__r\6__n$VKh=_l&r[ݹ_l kzOlv+u>o2>h8uA/tO n$lo>r9YW4B /$8 \ H& > L88zPKU5hT`bQV~Ձ[ B|`8: ^e՛px+!|42V61YR ^: ?0e=e q߃eӭԅa);ߚM Z>PT>Z7y}L <'奄Q"> F`-F*qk; |f `6Ѐ*fHZ*VdMV䯐D{8\8 ZЅF$N/J 9T>/uK0=f:0[/?#?u:0K?6r[: lel``KGԏ0̎KρVfz/N`F@۷(d>@D`pf.6rXF O 8rXP]fyZ`0{88HM^_T˂T܊PwP"PO|PxZS0?8Hɂ12a1;ގ|t_*Pt\yZ3`P_YNozbh{o 3 L| lq€zY& <&08"Pioho }qmo3E ~Eq)npzM/W*~_"uzz%1ɏ_w} qa6r]_p&N[e_>0IU)><!8Tw>|"\_@9C$g$%$ `1rPZ"@0K NZOH|``F0 b9Ο6%N[ɕ_ άVI9D_O,rG?F}@|0DrKȡR[ȡm_0[*2rGй˿=N[(d_prK5M.Z`z@BOG=A+ϊ;C` *q?=4|49s 8 'p9'p0}@Yx~3с8s@8hR 0rG}@"4fJZ0pC|ZrG*UQUX0@rK F:?fp&2@倿mOOC05OO^>z2A K9FO7Tf `8jA6P5 pPuQO_C_]11_>Y%A? FoXnK{o o# 倽Voo o0=;2<88)""R $] @FTuzB%|pq )0qOO?os;5P!=os; :?(Oas; :]/Y? :pKe!%BbΏ|*b@-?S?-127CtrqP80^#8 20')q<|>nJ񟻟s;KC9[#6Gͯ# 6'6 FοKM9KJf,vς|*J+[ϹbJf[@Ke[I[bСum5ϠbE* 7ߨY=K1f$ .} ?߂!.ſϡs;"@. Oasy#{C{Xn$n1q<ߊ%nL_L@]`r|CfA|t1ZPVB20{8e,20 uɢn( +< e9a&Fyj8p /)a-퐱P|/\j> B/8Gj*yCM6 _ %S//IAq/$/&/BH/?'?2?E?W?Я e=OOOy௱sOa/s/ o7OB= __&:P@A+(B/a_*:P _P_o,KeK/o TfTN'=).b`_%om0b`_Eo2K9q*R|njAol: 40pյ2eȯ"66ppK]o 8wM:J . AyO#g;je $8>aB%RА>df9P|`ul|`ޯb+WȺUbZFɯZТ= o&e?غʿ7|  * Ҫ<z`Pr0/08 ٽBSewÀ"08dd08"01ٹEWiЅm%r߄ߖ\ݢF1پ ` .ނQAVhzQ׈5`Š@[ 5]:L^5O <`Keo/A{`KISHP*`@Zl~ҕ-ϤT` /-!?C/)LZ/`~/// ]/۱/c0?(?:? ]1s?$?` KA???`1O"Jǀ^g0"/0`:0_(WOiO{NDO("O` @1/O@ _/O-Q}/C_,Z_` @/__g_P?_0_` `a?'o9o_]a?so4o` K?oooaEO A_A`QFXjލq@_BKι%m*<@_C&!v޽#ԏ@`͉ 2U=ZlD`K񦟸ʟ"푥H`Y>Pbޅ ``K֯"u"4@J`D)n޵#ݺ̿@`E*ϨMERdώb)j|P`2KٺY-a39 Zl~@(a4 BIJ\n0`5KO/`6Y:/L/^/ /$ ///p/`7K)///!5i *??9;1b0%f?,x-&0`pp0Kkf`_8r}vԆre0l`>@rƎ/88Fr6涍|08Kjvވd;qTedDB % j<] JmNnЂfeԮj raX?\`Pq@qjX?\Kie;[ TfpP8!b&SiUf`p8A@t>p|f4!<1!tFDpX<!p0[qh֤X~H8Pre1J]PhʤPhu֯`%Sh+11o|4?$70gIK=\44>C@g:ooT?x?0@gK OϿPg%ps!4 5r00 fJ?Jx1fe&,;Tpw00fϠ˺!Nbٚ0 e/Iߵ0!e(:J\A)b\>Ŋ3Ⱥ!Ɓ^fZd\4>APdfs:*`0J0R qO0ZZ1Sae2 wu0cM9 F_0 tZBJ`[60ͯJÿWbߠbMǽ{# $ F\RH@[[J--6 a\oM!_/5 N 5Lo/K`9oy/'j60:?L?^? p:60a???:60{???K_O "/D\_//}OC@OBOOCO\^_UE>@|4UP8U&R<>%qX&a8hxqU>*q:RPMPV?Sp(RP|ߠP: p]Q/o-o?k]Rodovo@f a N`᏷oo$N` od@e=pBaV Vp+g!שּׁP?TRp[Qok}om`Nf&|8 a,NYpPN 掿_ dZE2Oi adB6ƄEZq8*JRZ&ŸXڗ;RYRl|rg` ܔ?8iD\:0 a FY̟ޜ.]_!0%lt8h߯4X\R?2Lf \!jynTfx1XfVv\=\KWhϤޜ0WB y>`h0892KɮRdr092"KAƾϥ ţ:J\˧ r&KQ`! .եIU$Uxnht&8A^HK0a88 0 eUVh fÆߟEРRe@0)08$~0*:6J$^0I:!(0J:yX<8>qKQ&+r: >/P/-`( q: J0 /X/rQ=///: /??"aP/.b0Ms?Ű,=ol0:LUV08L @?O-O?FIAɳ*MDOODQO?pO,_JAUߏ O0@T __T_,?0KToD"o0-Tͯbo"0dT_|o0E:o;4Ep0 ps uB@qo0#dяw"$6?הnODB%K~ F/rݓ'{'~UR4f0+:~MVf r0gOgm)h:}___ 63}I}ir>a:;F|Wt´t.kjB3:{}JRf\0W:|e?' c3|T-p9,#n0\<^̀"|I8 d:btK{Я={ AꠕJ\nKz1F7<>1f%.ҲPs:z2_402!z__Zlv!zϩ;yHϲy9RIYʱgr"vFye:jw ٌd;4ƿ=Kx(u,*"-nRСia6#wxv` D=&Ze48]@<`n :1Lz; mr`8 ,%:#W% 4 Cw1TpD IAw1]I)i$6C/w>t2؞ KB/6BJ,`DmBW1 E0FUBo_I4z A(I9H A9߇1Ay/.MBAE/<0@0*_/zE! //6;@[/" @MFf??zY1$?z ?3?5 ;?/O56Lm(OXOrL1OO66K>4 >6_H^@(2PUe $>Q//TE0B> /_Q(Bq==#aX22"!X:`qo  6d,O 8;=_n<6K=Տe++,|Ȍ$#z*K<r_BО,bvψϚԚ!0bϸTf4V-6]?7ߙ 8Na6kؖ Zބ1I1n1Q 1) ,>R0I/?p:0ѡJ?\/0e//d 0y-?7xJ8dx08"0^K!b6"@|O0J_>@JO~ 0򢠏K/OO#DG`#T>t.<OD0K.iܟOO? @fPqj_TOg+`.zY3d$BjO0J9K`AO_aox6D:>`O{]Op2A2u0K-s[ pp-%oEx}moGK_o41&`@<b008"BpFNruTxe`xF`09_20FBp ?܇n.re^x0G.S66@`^iV=yFp^{ ^="4FX0^p]fg`*e2DVp*F|\Tcxl`jE)ƟbU16ToƋ:@?%8r\  @98,F0ĠQ/<gƈ anBP[]ߣR ]roc(^^}01(1mp:@$ `D|4b0+KG'o޴HP0)aOLeP!*nπPT>T M & xXȅBбbzq|4@Y$ `8j\QA/C\c&1`JvW|<dE%eߡhF%yfF$*zxV*iυ|+i9cz̀Bi)?᱈7#j|ʈVU~ P`#v8֑Zos 8 Z GK"E BQFX Bu~\03P&2mz 8 B:ίK!XF PN `Ec- N 0 N  "(fWr1/?8 K+ ю*hgcҾWPV08'4Tf>j<0 I^,O? v?OHP3OEOZ@oOOZ@/OOZ@OOOK_ aX21.2&|q ʅ0_XJPded!+}481s&Qu8 0QJPf<,>_(__RW] o(i' *\ F50Ya/ (7nG1?ooY@El$' Ti/@Fb=gl/.{1@FN΃02KN]:208E(:JNMN_l~1Nys(Fe<00 0$MY6ڏ! OY@!MOcuBM_ıWLM_۟ퟠE*LeBx?0"t0%od/Yty2gF"0KվЯ 2KA5^pDJE{ Ϳ߿ J[ /QIEN`r 4VCIϰτςĥϒCI@{K]oQ0߲tCH&}6HZ PH~d SGFSGo/Ae:d8@ He Q@jq0PX^@ Pf$Bn/ <(6/Yȝ)І/-f _00. Q2/D/gRa!0%. l4fT/*d*a!$9///a2a!#P/??a@E6.p/fz{q7K (#826H~:2:T";2Ϗ#"tV'0K JL?,z0:oGpjCρ tvBÐ8iЄPQאP60o0 M(vZ$~ 2>@X0BV^4&~Q@& PԲ_% ~QQ_'% JĝRd& JaϠ&y1MO% z0K2l"PEV%:?3jAV%T[>sv2>fx,F~ц0&:qOgy6[KI|$VK$ ,6/+:z?LuK Z,m a6! j J -@ 1/Gqe[`EȖ.a"CH`]QQR1s ev:/V,f/@V,]/@V,G~@`@-/D a?@(2s?L&4q?>X&4E?H}5?F\F&2=Oxh '>O$`bL_BOdbLٿ/ElGOD@pZS=OOtbKqO #Ox6COE0FQY__DPTh_EDSooD04b:o@&bKno@l_L6SoO_"bK9olmoKlo*|oWאR\5q _EbKAXV21BP^U+~ XV+ݥS[(σQPoˠ m@Q'YUB?cYUBYULەS[94ơ:Fm@ܟZTB[YUv֎09ӯ"B9.@:]`&0P6h6COlbK }\xKEpe|L4p{mRa\ʪܮxf|h<pm@hA|{B4椀Buzߌ )xSHW xm@-?x"(.@椘O{奜ITꠕx*Fϼedh,ެiYVfx%HbKݏLOPbKET6 y7X{yzLb@5pP9C0&9_H18ѿm@I})4!8}Ip<|4} 94&+|Ӻ.W$0E}JP$^9 ?P@\RQ9#Hj8EJH8'4VPZPiX&:m@ѪXRPVV |`4ZΰȺ0H P]/6C1h/{/|bK2?,F/t?ΰ06C C?4V<8B1??Ke?COVLfO| VL/O$VL/ ?({9oAamK_}hR_aP4RٿKoe2`6P Nd4(_,oFl6v_*{e~o Te>nn`>@R`/a#^T`>` A#+`9_oeEcm_ y*|KftDft| Vb8HiH#."(0鹿(eO/%ľ+_w a_ AԂ`ba< Pΰ^fXKIo&`%@6eCD= 9ϛ)_ ْ?4鉟_?7J=RЯL%H ])XooA,oU;1ZH6:81O ϩ!H,iCϩ<"̡@EϴϪD`|Ϫt*߀<ߪ\ҙO5 Oi _돵$X+UL>&\.Odbhb#A<@u|4:!}Dp.!9C# jb8n'?1@@Z/(G 2<6# :!&%&.%*J+Y4v~+%Jj =. qO. rؿF`UBl!pV;)8t#mX<Ex(w|"; fvJV;An!H<"uI/(/F3ن/B<$ /E3Q9v?q,B>ʈ60RXe(cT>?-@ߘ1T:0eB?]\ߍ2O\O@J-fOO(OO[q_%Զkޥ_ضh0a*?hc?mQ _N_J `]_kݑoolſS/0‚l1oT.!ȸHoF]o?tT0;8!YqooAto?T:oMa=]%8>8 x:VRd:&q2D><})D۠}^Sa ?fz8؊p2R6_d9Gɸ}4<V+800R[ | <ȚK5Z柶(B.@68q> <<8Oh&9D<K"2.2XPQHBJ<bƑk>Ԛ</02 DF&hZj^ǐH<02nAhKح V̧ PZjqXifj?z%}=dƒr=6!dv11F^@PSXѪfjΐհס~@p<Ȕ8+񃸷2U j z LPz2$*@K]v>^3E(Vԡ]T>^ZO̖|f0/0kհF6Vs-! &]?!U( ^p(mT-e,9 (&!o. U3d_. Q*!4Ri6{iR]ekf OA"Kӑ,2o o7A`FEN`dK='*n "F ұTPX :h?hVs]@پPJ$Z/l/ a +LS!&/.\=(/ /`Vsyo/ExХ/mp4M?^|.b@!?p<K"Oe}l.P@V@?pK? |yAO?$tHK0OBD0Kĵ~ߐBʠn]nPզ:n-q:=PʠnPE.p ="@% <łùZJ <!ְB1pϠ:PK=6{ְ8 -}8g,Sev+/0v: g;r|@J`0KPmj dְ"*`& u($f0#/ h $K/K-:PA{+?-:P>0n B=1eB?T?r0 8 1ڒ= ?=O OjF}0:ְmAn/ jO|OJ@MOFOTL:!C5+&ְ8J@NODPF<>öf :K>@ST>B#R_dYf PQ|P>]>"?Я0NP ƥ>vPF,+:!rKOL3oEoWc^`yboLP6,<I/[.soog$!/(+b=*ʠNVpZO`G~:j"VpQo\pqi /jF8ẖ9GL?#Ơ$0?KYvTj!/r;dy{л%Ə ZT AкPMJ?X9J K[mp~p֟ K'T: ?ZZ0yйE؏ʯ Z毜> K^? 3 ʰ. bʿ}qbз$9qAз="hrqm(g0_"0nM`*8 8XKiw IƢe 9(p'>EJ\T>E;ݯ3|݋ |4~;侯en`Bnyrπkv ;ږ0'8n1XL䢁P!<9&8|4vXU@>v@9G8lz8дO0< KX*DPFH6sfб3 TRѵkgܿހ;r9Iа'fplХ8uȠJ6jvH͛ r ФP0^ &сGЎ9ChB<2"8?r.@00UXzi( FX}qX $Тk#5(Rbt,R{0R!(/tѩ&\b J2 ap\\b%BDž]`!ݏ̖|p/=] +3?m Ž":/<7[??wBn<0>3ßт?1BUAZO^/ 3џ9OOU0ў//OHT>FC$78QDOO_DYO/_U___$&D1a'oց 0?а&զ1C8i#0x@3435q@vBR/E?58GPk_oo2|`4a|cf] LGQok!"acs`bK5&閡TJ2@*1V>}HaHbsp v+0I*rph}C'в@~D*h00"s^oRu`BxCBÁ KЪeRҀ]:E0}BV'BxR0D<|ư+Rq8eWС{*ѐH >2сAxK'FD2&r"*D||@`S&LhR0Hqjth`.z0}08KAϳֿ~&YВi:LV趁趄K 趃97m`0 K:pbH8tbЍhjyBh4bIUfp崣b<%ߴ,ؙѕEchە(jD땹Bg`nhdn!eL0`p>VK"ޥX۔gTzmlzFh\Pz%6`xaf4*<|NbxߒnL]](L0;m8/] F"|K*tv  Q8nbђ}1H:ܹQe>zL". @F@n!ܛ`b^2XKYO_"!(0V //T*PF# sS#a1ۑ%N s}(e[Q8!b0s5j|C /2Aྐ–!qΑ01/w?9}aА`%;4rQen01&O;T;<0~iA?=͠.?\BE`նmڑ.KWO ?! >P9OX_*j\ >Pe,cg;@@bjO£J} >P B_f|^">} KPY&__n\ V`_X,g>o: V`مa/s$ ]*PZH5PKXol/wP8*.p2z@xfL^F~.p-Ҙ23AVfS0JSqJF$4*>a2"Td\ƿK1{A@P6<@ U'>+4D:BP1C<0-pZHfJ¿`~.6:K1C9#04ƒүbbA<AѡЗ09nqk:60Ѐc<%eXj(<ծ 9B%Op&8J ^_0!BѐѰ@0AԱ߄ߘ$߼Xy^T>b6V  pҁ P$ BIa 5g7D.R R(W>!$6 g]1`B&pVTf x-p]/+/=/wZ O 6Ԇe<0@Z E21R ZhZF10  Kzߨ??*?<2B0S? |YeCBgаB0YIo#9Hf6Ʈ9'Pb38P&9' 4R9aQ!^vk8F6@Huv/\FfG&zn4c|46N0aP`?OOIU`~O_f2P&_P`V23FPJ_\_n__VX1_dk$ aKC}_ oo0j>oPobo0f :`oڼBn}4~8;}'b<}Gp~E@:P| P*"NS|AauDF>r1|4@)jH&R0P0k>p.BT P}*lpApjq.&E6)dhYr㧅|PSN0Wi@nq~?03tء=,fKt(03sU.:NVh4Nmc9ȾOjHQsʡ(e`3r2\fA~"o@ST\Kr&+`$0@n].$ 6ՏOjH@QqM\F q@qfrpґU)pp!8*ALTS>1H8z2g|000A5@qEFO%8E0q%XJr+Sp͂/NPN<^?4/b@dfKpa?N|NP&?P_n =Qb,lTp۰Q=Q_m!t_Um_аp)a.o`.Rr+mO{olYoJ`.l%o`.r+ l9*|mVBh&*|_m!` l`Q ln_4j$ k`.E{k}v_d*DFu*hee;|!k5J`.8)Od*mAj*$n 0 jbtn 4oE$r+jm!( iHRj$fi}KaXB "ZX:DVi8r4! V9(8𴇰N!70 h" *" gHmG!gV"&%//F(//#fIX//0;fߟUa-$fy2ԣh fׯYxfeAV(Rdi%60/T?A KO|c)4#^8-ᾡ#K6}.@88׶A)#*y)~;4} `aS{J0àK5P?V>8?KY2DN-RdJN~JKժJ(J}JQ.@J%ZlJKJ(JJe //J6/H/Jm(b/t/JA//Ƣ////J0#?Q /O?}5/{?c9??& ??8K1?OvO,O@@FOXO@"@]rOO>DOOƪUOOJ)O_R"_4_&cN_`_~z__Cy__1M__!_oFjC*o,p+z` SuioHpYcҨ5|4|,pA0CX0|  1~t`|@C} OϮ,وpgA.0о_ | 50L4^l1F9(q|41+|t@(B5鸰ptpΪ4,Я5Ah0!8#Í$/4} Ìg[0 L LbC&2PtԳpΨЀ8[|n$?Ȯp8`m8gpMT`\ 8e`=toq~v|uTp(!v|ÿ|! L8|( Lk!& "BT&Aa | ALN!2|+ @|+yAhA|c*|*M M}@$|p H?%p ܒb_p]HWYLap, #>4Cc $Ddap| |(}Pb$u  @"^&@ "@ L8c'8%2~%F-RB^aT}iwM`bd|! 8F|'B_|&a#CcB$Dؗdjh@4FX * jnp~'!$6(`"|#xp|tT apx! ~| .|] QT2 !rF Q\{h|2i0. !q ط 00r8|/ja`b+4*0%02=2` K4J0 N4]2J0N4m2J0N4}2J0R0/a4J00N42*0yD.428`JbT1|U"F4VN42\42*0`8`8jN4B"*0.4-B*0.4=B|`4T:πcbT:dTCJ0R0J0N4}BJ0R0t0ހPfq5t`%20%24B@4B4R*0.4R*0.4!R`:/T`=4@S`3PSNPRTaRNP VP NP RTRNP RTR.P]4S>PErFPEr>Pm2FP@m2NP}2VP}2NPRTR>P BTRNPBVPDB.Pb2Tb.Pf2TD!bNPRT1b>PBT Ab>P-DPcNPRTab.P2Tqb.Pd.P26P42Tb.PUB6PeD2TbJGsVKc8`}BKpKqOb߀Ҁ p,Rr6Pr.PdirNPDxs.P(R6PTtp\-4s`=2tg8` 37trpRpR"p"tp(tp4 pNt1pARtAp2tVxtiptypt_cpt#$c„т"„Ⴞ„`͞3B<ƀB`Rc "1it@%2ƀt`` tp` t~M48` RK }* K1B lvn6r` 83n4`~B d d%nhr5nBvB~lU~AbFId ru΢ sM|nrɢnv~ނ~~ ~~y(~` -2GFQRNQRF4h` Txv~vq~qF,JF4 8 4 8N ư@ʰ<ο@N<"BPJFTJ)"vXz9vZzI` ^3XvB~BVcZyF%F5N5FU"FpJFtJo8` x x@ KDuNuFJvinivqbnyd JMg VKdӠC` nFJo q=pOC1N1vYrnat yvBnB` R}4. ` /v zAvRne4 *a`y )Ā` 3eeҎ॒.B6͔ 6.26D2.2irqt UB/` c@>U"FU">}D`` qpn-4` 2İ8` w w M8 |4|5.2|4.ࠉpB р,E<8e<000KvAÜ"( 6d<000JUN |cbt"Ւ2uN @0a8X88KeXƐP *>yFVa5:.>v:F6R\u.<.Q/f$Mn//6 f$//6 > />/ 4 ??6 4}h>?: >r?a@V0<^Ѱ:6#>20?2BV0>jѐ7&7?ܴ2U?$>O?:4uWCB @4<6:76/OH%LOL6@ =Hq:)O>DE._TO6!>=fYTc>I?%77-MT__6Tmp o'9pep%o oooo~o@R.h8U=hƐ`N~\iq >5!yvVhrTvs0JJPF4BftHP I{dv% ,_DB4>ft HU(<b}4XjE vA+FڀD4@ftAD=PJPL4Hft@Fj2D@DbxeAU?$iq5e^> 9iqXQ)XTAּ6XxI]iq2P=1=Ϸ0u"FJ B>HEAsHj0u]nrLjH4FB >@!x0D%.@2-QA+njpnR@ԑʍ.DiqK!1+=FeQ Y'-B0m&jvQI'n!(9,=a%=B3Q1nHbx*nK-$iqe$bxm(jp埏iq $Zdv ]iq/7I0vR~1v%~ 5"27("3bx4suaT2|4!a<@}4}< ^48@(g@bBO@JAjAVApИ@H,@?EFA.*@| C,w0>@l0|50@X1T@p`h@40o@0,@߅0@u@(B&@5JB8CZaNq.Wd.X:Xh`|C2@8Bdfa9+qX@L$>h@4, h`'P,7@0g@*@0&RlB$Q1AQXBQp"RG@Na#@2#װB="U@1T@%DXLaBaVcx}Wj z.re4pt@00K`qF*e`1v^xx8mu "ofro`fTjPNdJ +s^N0‡`8`>p8jZXT PNpLRpHa:~fxv &autvvx aQxv a } Un6`88K+oҬ!`S!08""Lj"Xa0yl ``_|K]X&a? 08@!rZ"=r%Q"#89""S`q@}48.c4c` c@@Td:8` `|c .etQT`fJ; CjR@DjN*jP*I2v`S `"drxpؘD"^06,*R^a0T!8* ԁ&\m6Nھ *])!|J0Tbj!DC8P(]1v|0b:[et@=ƁeaK[4f4`9a`+d>FYJDT݀$&#DAHU?>%j"?0"ޜ`ǰ9?˰#^$i 5"v"˿ ˜#c Ô!Un"XzUj}щį<0a}y@W0a}i&0oߡ80^!2?D1aJ5ivm/d ;a"??6Վ@^1KU>N"ނ~P=RKWa.qva"Nґ*W9Z|ߢ3cU!ĺŲ!֡3dm4$`!dPJcT?*@ KVq @KUE?HT>BP*m6R*=f* *R}&/JMV//j}D CЩ?<"0*?|p*bPn0XVZʀT^6@r@ R@SQd56@b9A ϰf`j$eΐ8z181!@0媑BPYR1>V9zґ^UH ,O|~4֡0a8~'@aKGeZO,;|4ưT078QնM(s@@r)ⶁ OOG!"LbKO C&B/AP6GFOxOjCš_O Y\y$sAJT=RV_hWvQzQt,@tPW@8$R *XTeKc`r*X,2c`@Ў`ɶT~`mQbI:oLo^gjo|bAl–ob]kco__D$%[)g"oO Q@<(x 0%EpDFxr%9qBx>P,_M *_LbhT;;pˁ/W`6C;R0,36o8|R`;1Pba8Gd30bцRW 2fBa8*jq5aC3 z ʏN¾K뵢L!rfF[kvVhzB55 lȧ҄,@g,C8<T|8<sZ`808"0NKKym~`;tLTSW`J0Nf<g0M"0r ^g,B6P> 1"q!rD ::? @/kPD|P0EXPA\rdf"rQR `6ρϓϥςݾb.B4F0rJ⣰")qBNzhv*B!֐Rn ^զ"x2/X|5=#sYnϫ^sn8^~b^pɒN8BlPN6lFܵ s&5"21dvBTX\"wvH랱 uߵڢXtb01Ãu1&A TaRjb|bX|eAB.6Havvv@В,Pw~qT T^!x2RxY~Qf0dVfj1y /@#@N|fܰa`8^}(@(|;T<|_T(4 "0 B||9 #0r1(0 2A?N,ˏKٚ}67eB?T>bj?0,^8peLn00KCv4:2dL000KB="t??0"D O(&O:2DQ?(^h8g9Pe0Uh~`J̠:LEDuIOBDOS ^aV@A~ИZꢰ>@VRNJ!FA3BAcOO@ C_R@.>VIR@ vX=h"__D C _VD.BV>D$bP:vWoVB]%Rh^o_D Cղ_b<N dooDdmb>.<.WvWJTc>noZbx}КoDwMC(6o@tnD5WvWU8Rt_7SHDRtBDbP>fPQhႏ8RLRtJDbPFfPBjP>nP4VLHRtFDbPBfP>jPQ8RJFRtDD"bP@E? R8RMCݖ@C(OE0gj@VT`>1@8@D>}!} |HT| |@?T>| 0: A,4| o@08ڛ8|0}&>ё'., L80w@ T>/,X ; $l!8Ls9'!83* 9 L Tf>z8 T~| |2@; }8~@,=@@<`A.MAP}@@@| T~UK~AXTc~`@, 0|`@>}~@N }*H•}0 HA4/TfjЂ, U~<К~`@|`Th~ @A{9"8( @Tl }+H2@P } PA?<.Ѳ\ږ  @A`|#|}w)ҙ>A(w,0"r0|i >@80}ρ 8i,30c<І@1R2k8, ·0PBі|0@T:|(A0cx@@i<0Z^(T:Q0xU:PT:U%< P0e@T|81)0s0>",9%@ Q*"A"@T #:00QU#!{(AT aNt|81 И$|(T> |X ~0T>U TwTd:V0   r؎p| 0|8T>@|#h@ z ,( B.R^8G/0@4 {@_ 1+0.1u("0v2 @58` &!@)! kV.! "@8!8'>1*1000."!0A18|! 20r>0&'1 ? v1bBqв5!. 1| &0(T 1`|F0|0'1.`|00, 0 " |0| 05bBx|00v11.|xP|$0|#x#0G6821|81TT0/260|0k H(1T0 s! n"+A8 S0v4|NBTA+x1@ANAȶ280, OO0H<@18AC0",P`h`;soй.>бB@Hv@ԺcyzԱ!}dCRx~b$ Tіպ%>-zeժ*ع"`"4DaJ\߆qrӋi䡂ߔ߮1Ši傊*Rr1V< !z1Tcp"qƑB7‘,$`:2`npA2~WnTc<(a}8^(H 2<_PN2RY@Ґh֐\ڑvDz`BFЕz0ѢF6 iJz0ŚlZ<&K6B@>9(@V=}1 - 4`L1%- 2D$JD(bD,z !88x1v`8`áO޶K)19`5 Te>ɀ`PB@K 1u -J/^/p#8@;D@_8砡R00"K$|~4 Aeґ%p~r}  <c"*!A00"8K#:-);4` P<s8qoP8eV3%1m,%(/+.0A3 "Ŭ&J\NҐݰshz $n%rQ1NhZx[ $xbqj-Z0aN;_S:R|gJR+cU4PҐ1֐ڔ>OPObOtEdOOOOnL "OOZ`PP!r\K_A[`ҐCSڔ&zQ"y& S#TKtF5>QNQ"PTf_[K\XQd $0ZR_W"U;tS*@!Th>QTI^0@jeDJZQrHm $z:O\w`nAaTrGe0ދ0|>Q|o@4O0"aXtPTnBaR5debaqn$||@nqu}ooH o,[ TrGbY6Gjbo@!Bj\°dX!I.Oo1TabD4U b9֐|ڔx=e6Pډ1TJpuDX4X9ڑ1`T2Wn&tN1")|`4. h8G00KA*?$a;Z,L!@P?B|t0; 0G0#+8ݠlH=b;s2b b@JA$V)11rn%FX9|5>0,ώd`} / `8|2f":}BʡҨ(ޯp:j@KUuʤ:pxKε4z8Ҡat`x^O8$P$ŽN݆P*aʹ޲sj츂X!5 KQrα&ʂH >yuM[0x}T?&;E -K / Tdh=rŽ? 4Q"y 6 ! ].ΉnR!b1R0/0R0%02K㥆9.pL2tPNb ;r = `08"0888Kyp/   Hu R%FIN@4[0`Jq#f2?"KM%K?;/f2#0uT>| T`Tc:@ 0c0`8` sW1#ց2!<pw3pc!8+ 钒$M"% *04?18/"e.?2uM?7:? 3?:? |D!>U@@)@@J>1"9`bO$DP0ZOX?4O0zDROՔb7%0"!q^q>OB)OV!Tm_,_I3HKb7b_J<8 QPBJq@"X"8dPK"%2%΍.!t08R"!Q퀥"&!(o:gEe=Nk^opkFq`r"PbKe®d"&//As[n98dhwġ\N:bܐ"85`y1"/4,N#KO~$z}E&y}>ʏfʱB\!Kt qd"0RvUiVa:~a8. DI~d98Ţ̴?ޏ,|L(78ܐq22R %bRV|8їѳ_KzqS@"~qnoyq>.8[|f4O<\r Q"0/'K bb~8({ Pf[`<bP008"K rZcP{=ׯ1u ?!D Pf>+2 c %AR bCs]  0sЪRP8RP_<: if/QaQa∺N>aF>>I-hϐG!`6%깒Ph€ pK,>>N <X 0S@P A+h 2\d`.RS`g`t{"0 K ڿ. e"kA<+CpDhdd| H@ 8@H?qP~P9+ VJ-@ |PH8/%rR$lǀe!"Ca@om$ !|8x|HWl0i000 xm~P|H|Ij9@`| Wm0d1x| ` C |P|`pQ`\`dl ( |f0~?:855*58080r1`|c4OTc~V" 3p!||_5@V"0 9@4@ HE0&@j Ř1 h5|(|DV"{P|p/ |@A4^OpO:@H;|5J  OO~D=BFV"l @ |)@ C3||CJ@2U A A|p:F!#Q[Q 5Edo}HP}i}J4!}i4})Q|8|3|ƐR |7ЦQ|AĜk |0t90t@xP4@5:E,80І!|[!bQ|PPPRPP|„T>AThl>`T^<T0K|P0|a(z|P_| E Rn 8K1ўC|zBtF)r'Vڕr*K !(j|E%OK~|A8|4*j8 pz8s0NLP6$<&48B~wBJ\fx~ 1 ʟʤ ުT`?`0. `` Kϰ(Ϣ~paPpn`URyNxaiҰXr9 z9ߔ"j z@=JяKn Fz n :䱁B4f`b;B+AɒpT VyҺT|4|5T?. KѲ4`BiFķ^il0PKz`w/q!D8<@2m~'80k]~pU9ֆ0)h0!`Z|t< #U8gpcg[Vڢ(A15 o; |`b/q_P^@fDZH2M`y}I`ހ@DH95_xLa("qj- {'*\V`*f`0qh:"q>q"65XgUʶ,88e000I )*"'00/0> aB-QtR/d/v "z$/h/l*2z#B/\Ґjx8zpe xjpNF:"<%24u:9?,2&24Qa=?O3udpaB*1*ppFpq:>.0.``6`\ZV{Б!NϑAJ212hn?P?.023 ORB>.`U=2D:OLO*42DynOBB.`>2d1-17YAOB0X2LJ*4*F0B0>0e L0HF**4B0>0erJ0FD*44@(U=123u_-123=vo*4EnŚ?_X[ڟX E( &8 23-1Z&8!!0"hد*4#23* 0$U^pI@@*4'0aP¯WfU=(V4p0)23Q>1*z<6fqF |6$:+.(οoH,71ίT>-23*4..Z&o`/.hoH07Q&߄*45%2>c$bv` 7 8`?TE3XT 8]q,,}@ !6 8 vA8` *~|`4AFZ !Z6 TgNOKabG?0XTKbXo4퀄d*n&B%Km.Tci҈|u8}AL}|t0,T>0<|t0n!~= ^#T>Hc1}Th8g(q, Ph><@1<002` aU,>8A%|caٽ~T?!P1 T@| Tr@TgtS8hx; 8hL ?4FP@^j|P"2@]/ha8^֕.0V412V0$8CC4^|y4!rH)pU "@1%"6@qTsbeTi8j KPhQ/Cj( v/ʈ" =/8A 0b* / Q^!H7].':/+;9E H`\ dvj'5$8k*Ki//?j'զ?"b0 ?hF| "QJ 4?} 42i"2 DJ`u#b08spHD"Kh~\`9"TQ2K,=B.'Y2j?O@EHQ%OODY.'-(_0_@aFXR_d_DuFX}__DFX RT?Tϧ>K^,ǀz@|Cx0<0 <A `T>02KudL"?<{00T`SWf`Naj` oof@:dPbBdPJo\j@ߩ"OhNV;$!"n<Si0`R#Ky5"p@0|8|50h|8x\|px0c(p4@` (0"4rᥬptqf6q0(VVb4_@^$x~Bpa0#:hBTf ?'a0,c0|(@n0T9 1#t8eſ|H,pU8T>|A|(T$1|8}8^.B 0}(b,-+TW>zq+`|A.B`pT?v`6I"Vq&`L08ha-KG咵@LD}:ve>Xe4>ֽK;99J9oK4.'u K:PoTS|DE 0<@ADU?7>8uU&0<8ݠp9? ґ h `t K#,>t>?(?p?@@T@@A8B0BxBBC ChCCD0DhDDEE`EEF0FFG0GxGH HXHHI@IIJ,JtJJK@KKLLXLLM$MpMNNdNNO(OOPP\PPQ4Q|QRRdRS SXSST0TtTUUXUUV,VVW@WWXPXXY4YYYZ0>`>>??0@?@$@p@AA`AAB4BpBBC8CCDD`DEETEFFLFFFG@G|GGH@HHI IPIIJJ\JJKK0KlKKLHLLM8MMN(NxNOOhOPPXPPQHQQR8RRS(SxSTThTUoPUVHVVW0WWX XpXYY`PPZ[[d[[\\\\]@]]^^T^^_P_``P``a(axPbtbccLccd0d|de Pf f\ffgdghhphi,ilij(jjk k`kkl lLlllm0mdmmnn8?0!jr\#$$x$$%P%&&l&&&&' 'H''((L(t())@))*8(p~t  4 ` !!>P>>???@h"@iy^x AB BPBBCCPCCCD$DXDDEE0E`EEFF<FtFFGGTGGH(HXHHII@ItIIJ J@JpJJKK`KKLL@LtLLMM MNDNPN\NOOOPpPPQ Q|QRRLRS SSTT8TpTTU\UV$WW`WXYtYZZZZ[[$[\<\\\]] ]]0]`]]^ ^L^^_ ___``H`p`#e\eHe\\ \4\",!@%Pa8'!`}xM@`nlibX InterfaceLibkcgKurtaDJoy!peffpwp=cdˉe``Q6pMNľ>wk5x*`\qOzek`A1r5v}ba#d0e:6tb pr"xp"v "xr v0"v1q d,"xp"9`L`[`s````ň```RR&R;RMRbRyRRRRRRR!J6Ni5bpaEE`J`"MixedModeC΀FragmentMgrProcessހSupportiEmulated6o8KCo`xtorReturnFlushCacheRangЀallUniversal:OSTrap?Getgis`S:fցCre ցPrepareResolveSymbolleasrMemցAddSeagrchHmoNotify eՐpryInfo)Closure< One_ctionlGlobF1Rr8Is8v88ywap偡 ubPsɡ8⻰ͲPAutoePStycPRedAllHSsh AEnough_He?apSlop⇊khk_krZoneBottomExtend_laoimSp`IfMaxLoFreeByt)e=ei N#InkppytibilityFlag=M_MenuTitct.BARs_ďs_`BitrcardBqnOffsc nEnd BufffHtt1De)>ۡuxRequVolu%miuD6|emDtqestop8N͢PEn9VmgSerbeo?DebuggSr /adp5-FPUps-ySyonchIqTi3Ðnup)nD6 Cli}΀'MF*$HwLDlƲableSwiFEn3:_FtsV28?c7FakeKeyODown I`neAwSMRouteƲTooSWMTo.Hdleү5I5D f ts-?IsThisA<_urce.apM0OZ07AXertEHeEHypEEaH'rib0\сOWhalcColor†0bd KtCbMs$!s>"!3,_!4,y"!5,!6,!7,ǀdYe|ބP6888MsdrvtMMUc) s:.'onkPMscWRow wtkSJmpeaskRtp/c˜ollŒ(ɔޚVfP͓ Rad!4s;AmInOKc5?onyVar`J~WMValusd۔!ck閂۔閞+`˕ Ev'`f ˧`ͣCCncsse<aSWndhc !rnt^tBxBZTick`s!ya.``0rLaPPϳ!糎RepQvl1DT4sĻstaN0ʩWMvc QsPMMs`Ə`?JShellrxFbdNuK@TaslarmɏbOetGundVBLR DCE/ JI@s82dL:ӥ>SDHnd}äےrtAUs@ksNس1 n׳2/xpan@m->sCCAStQIE㋰NcsNysDmp1a?agDataca!sQpChx;AMDef^c`GZRootPr2jQPMAZUpakdDBc%xt;BxlushOnlbgRsrLckUnlrc0!s2wM:l0arMm`BlJ FSQHהHFSTr`XRgSvAreaMs `WDCBsn s olC _aefVRef0c:%SPW o rC aaramSTemp8ayQueueHoo` ')e&'(SwI0&C+bqstdg%aASއ&uDtrmVs&u(QDps)|'Spli:+"Cahй$(,s<#le A%65,_O<&_s6,yb!MGRHiFnSCdOneDee S3Q}BkiHeapMarsց8iEn&@`TЂ&vMVؐDցhutDown ewUnPt7ONDIDTl2rlQAErrFSupep QЯU=FWidth qGHFaeT VQacJmpY0 fwMAǖHtįb!GBBlWhiynt$b!ow-&lLine…G%փeeny`)0O!P°)I&>idTypEc&²#MP%#Pol'ցE{7)0;$0)999)W9)3;~0)4x;0VsBug]D87P$88R:0)5;@QMU@#G C&=FHx"a2Rbv$T`VbDBGUqarmpXցlopTFcedPrrE-hdVBLQfMcփnM`EcidTithowcer)kbGB:hSe>hA T@FiCx>ertRRȵ3xBLTFYVSsLUGYWnpLT&wLTDep$xt&tjil%zieldזyvw Ҙ@-I s|erhunkyw}rrsrEb𿐹uckeye'ϊQDےIA2dqInit&GVld™S7SCtrAdj\0TLAdu#eoƕOK%jPEndSRTEqDM\hϛjwMUuAdmBuqs |tTxGicVw+mgrPhK|rCPtФib|&Gniv&GIϪHįE練gre0rne߲|1ShF dVܱoColbcj:mT232?hys2Lo[C˷60alTo<緀ȴ:B&I3H389jQraw[Ͱr@_́SCIntrEXPxP040@ȤCَ2{\)|qockCXT8BjQBing^܀0rE؀ֵSPurgeSpaceBlBClearStrad`ҜAFlushToExecuteMakeӪPrLoadDriver    % ,$3>B HO(U$_hn:t ~>>0>> 8( &, 60>8JX$`irz, ࡲમඪྖƾ٪ަ$ " !()*3.;"E"L*S[a,eNp"{*"FJ"0"F"..JJ0 4% 2:@FG$LU[binrwQ{vÇڵ B=|zڷ 3h 2)P -kU sei  0! aG Ϛ}֨%6 > 5l%j7]>{ f vK;#gEe:>b f@VЭ$cLܷqU$d.rjө +bK̖ܶeMR/ @ppջlH b5~U / QzefPX" `R RqH) ʆ e1q =nd\ * <igި P \-y.p .JRuŜc_U=S13n { aˎo  = +  c l! ]u ibRy Ҿ ,  ۫5[  [Ɛ b )|Zf]W (ξ6 {fS(y~d 4Ё zʵɆ0Ư )0 b9P ;UV0[yQ=YMuxՆ. B @ ιR GksȽr/K!b el}20K g"x p0@b}0m@ 20k|JJqH& U nv w N@@ ?3 )y^ 0o_ź@UL@Lr &&00V4 6@0 "0@M@M9h}5@Wژ0r $@}N@N  w pP P VQ0dg@O@O Մ"0ur@P|F0B g 2T >0 H!R001=؃ 0RZ@9ߵ afqU no, )Ωj%0ni0 oM R `Pcpn P X` ц E`!r@X-@_0ΥP(.`l e z6r@Yr@M01}f`c 5@qm URن . 0<6@e.]К ߮ yIW .`rV`pUJ `tP_r@].`o;0.[w P0 ϙ e0x0 jlm0bq0<ƶ0Jjp@f `c&P,z xU/6z0UZzF0rk`609Z !5.ŶPq %@[ 8P3p7 ]U>@~06& % V&4"0-n봠p;* ? "0qp@@8׍0r E^ 9E'e@y@+K T0>R0:^+ &`a@ai_Y@y0V=j5v@N Wr E*B,* ͪ&@6p0&0H  Y@G0N UԢ``?pI">< c#0j  nI` yKB00\: t<i`/ v@c;n~M b8 C&4f*5. ig8a0>$fp 64 8Z0c ,?|b5} Y3fȒ%@W%@1p6]fA@p"0IN uC[K0bfQ cN M0n_c 5i >p啐T,iQ• aYp-U& (&P `ى0dW.,j.f` b;M 1 u!p:IYWL.0i`Y` 7V吞ٖ00n`N~ESpqs ẖ̽6%>V xPi` |jp3)%y.Q4@v`ޖ0`iC !y |ư@e>YP ڠ^ eP5ܙj,P0sA0Y ގ$4qp=n  {=?2[6]@McQ0gN`]j;MB&.`"B_p f<格VaxA{o٭6aW o-0@Y(.jf]pyP< 3|"u05)@U-@uPY`LF0:e'8 59epK]MzSQpqPniP GpzC]@*ХF04^PI1RA pp p09P-ES0P.0 2 Ex V`;N.`. }^%@qpn@^R=0`߸ݹ|>RAv I4X)@"aL' 0~+ ? 01'~%6]ֻ)7 %$T|/%&6p ݥ3(1&܊.[$#:xP l= L*@&\N%4pvȎ:lM D j|"&l$-c*♤ 0 TR% 9 3lE#`Uߤf=^M!4% dAԊ4M))`&(Fհ  ,"B1 =[;%."MEBBe{13(tjzĊ0XlZ$.PyCj  ,⇚Њ=4i3a(hzl'"0%E-,#eUdXH.N"? s ,V' l; jepv1'Kyf+" /%- d &!T!!"![ #-)"~!"f!"{"0 ,!0"j)]"!fj"VNH- "._$j,_"]")&U&2u\fleHhN3B]" Kj4_)2/>Xi8 "tf2+|j#1 ]" 2yj)B -Њh^%@" nlj/@I"f#ƽI"0430B }l3!0 B/mX)B'C=%y0+"0S0 q"@ !"B2v!"/%y/%"+[!(@y'v_*@ eS<,"@R'yM2NM R W{"RB1&'PYLK Bk@M oBդ3B`  aOdh1B3B1& "-#&+VcqmbU }O 3  xS.@$3*';5$0 \lUk; 13 omb1A'C) e" _:"jq" B)&U)1p K`)B  0B*U2's@ )0%p.(TU`S}))B2 3T]"Pq" 1@&+"%7U" iP#O/ bIcci4҆B4LUD=PU ' " 0M"1;pU'} =w U9' M2 iR MAc,`P&S.*2-p#U"?S I"[ s@O0&0c &_(s8[ 2%@'3B-$+G3B*P!#2e oBZeZ P' 2'Q+*0Kq`!N"}_@0}a'.$+V[*C@!}*Xⱐ ""ӠU!I"T)PiR`U U2q'mb0s&"0[Lu2.mb.p8KqGP!2*o!($P#yِjQ I"_I"b'[B/%*!"K* 0)Pe5jBU@ r pUA-@#"U,#*O !5*!"!3 B ;  2Yp(.$iR!*!oBKrP_[)7Q2 '#.@$P} 9JvO&7U "%i!0aӻ j@iB"/@ "Sw2I P !)P))B/{#sM  _.X{"!'!0{"pO]"4)$-#"`j PrRA yU' rm +"I" l QP "3O ((k@R&!!PyK 5" [PB ; r3(2ِ( 1ɠ'0 &q",P#(kO7` #I0 gr Pj"k@2#(Y/A%oBpyzW   ]r2m ']r+ViRX"`D@O sy Qk2'p[Bu}@)B*B3}U Ym = A`<jiR3P(0""-Hd e'& $Ȝ2#cqB}`\{0* 25k)WðSك7`rA5 iRa @“@M# "+V)B0Uq")a20U ]rm a2U2 BQ7T@r4P)2+ɠU"R0"{0Mrp (/!I0# &ðˑ_`"pQ!0'R-0#2-5#q"SBTR -U#$P$pU]rӠMp B` pUa2&Q#03("U "&`2%GPR#U2?0 Ѕ)BM@5`m1)Ʒr*2p!rB%MC@)B+?!gr( PB#ˀa2$ɠR!wՀB0*Rs sB.@$TQ BgPr R9@yC`oB R5C*Q#]""sBPӒE @}:/@%r(u@r#/B `ToQP)o R"D5r,G@"{r@[PgrRp#`w U) P3pU(E%!Ir!8{rT6 R[P }qMRpb@(b01&y)] j %wQP o'"5 D!r4)k3'?-p#jr(ð pZM:0`U&Ӓ,a"+r'r$}P xU2 UI{r2'',"P y۲6ME:,%M"rlQ+PCq"Dz$ )?Mjo2G@MАr f@gr@Ъ2 ')&!r"rpokuw k E`7B 9Հ @/%9Dzj۲W"9 P}5 J)4)#?S&ǸW&k$!Q (E&$ @۲# @ˑ9  T:w* !hΐg O*uR@TGQ ӒS 7By w5) (^C}Dz"IС10y6 :)LPI) U} עc`yW5J  !c3M('Piy cJJmG  aT") 1&U/5I#) C"U C"ڰ = , =D`9MU' ("2d0UMWc`1Y'X"'jC"7Be .$E+@"BM*6Q2U!}PMeUu o2 "U #2.s$%#zl0P }  `hPq))5*&0m2 _PS %Dz i j $-$G J2+Ͱ"CYWrU#AU`5w 5 EW"U!:ё1qpP7&0C"&G@ɂ%-P V 2) }P5UP] [Eo#TqSp +cU"@Wr+ЕÒ]pc#}$@M`0q U:.o$W",0U#b@@U r @ 3 p( cy'*10'/@1 &P# #7b`S1kU? R U&pMI.0[2#Yz`!ـM32 lch  02c(0&2- p#Jr#`#[USp gb5`)"U/1%5b- `$")[@W"PUzC"   R ѣ Us  ͱ@'R-#2,L >@)[-sfRO@$o2$- RAA fɂɂ2>B)A[j2 w`7BP R(LRU$'#}PKUE" 0e]pÒ rS"p"S{e@ * 2@ M`0ABp%jM+0!B'YP*Rh RS|pk"4E)7B5.[$S- PP\pc QfbKcS0jBPJr%33Y/5[2 @W"bcjMcTRנ&,"MU*q "O` S"3)@(2U,`"Wr` [2U @A/% RS"[OKS I!#B5 rx>@P`pABנU 32 /@U+iP"r*+ K'5If47IaRBrg A(c` R$H۰* Rre@UB`Kq U PABPSR &"/}PU%b(0BoUR@Òm # MHU?00&R/M0U%R/%G2"@WrAI0r oo20P[0b$89-|!H808?81AHa88 `0!@}g:N /% Ek* 6f3(// k/ ?j6` *ke:8d?8Ek)?;c0+L| N2πpj5@8 d g0"0\0O?BOTO0 knOOj7p9ТA!AbA<?^g0"0ꐃyOOOOTk%_$[&@*Ol]2f;P'0K:5Z5_ZPeZ__XKocTS>"o%QB`AFocbo,6QB`iod4b4<o#0QB`mJo5P>3 Kf_$\g4o% 0 >p;K8f;(oj1>p]P;z>p*?KB$[oP<` YJo}NRM Ђ ޏЂ "4FЂ^fxЂB^=ΟЂCЂ*2DVЂ*qPvЂ *-(̯ޯЂ Az ʈ :oSeσ :aЂ : q0$*8>60K5ϔ,> FJ0fcb>`4> =pmN$_2!F+!Bf;)90(KAvֹ9;br`ރ#9& ,@/0>ЙT,b?,;0.>݊?ofK1V_'*0&ӯ;?5n0X|4}48}'<}G41@(@@ⲥ~Ӏ|ƴЬ{ 8e0@TeUXDPFZߴ1,Ѐ*02KMR8E94J?00J_8Jퟏ!J!q1*8KJֿ<TZ~,02ZI$Z>PK^PԨc0VGtt f_ WfeVjKAS^aT`ms!//3QCU& a ./@aM?0?Ra[?m?bqo$2aX1P1^QXJ0)/,tt^! 0_E1KTN?tbptt6O WE1 V@- ? V@/ V@%7s@^/2 !=pO$ag/E1p}O׀tRU傀00K8 &JW2f 0Ġ<^gRU0TQ_;0`0MsO$dWXbdag.`2jdI eGhoozYroo+g-,>2zKAispWgzvNƠ^`1apbt0bpYoofpuj0rEv32@NlecgP@Ra`maA~KJHobnk`<+^g^`"zx O/T>ŸZՕ+WE"jd%[CĒ\8"ɺB>. 2_Y 2PR8^-+ O!谅۬Z!Ox7Kq_O udτ 0YvOI0zϢ́0:NDjh½001z\n>ukߣU@YF0 B@kz! ^f@9&>zBK ߄(C6G18!1P|4fT1P?0IX*@PDBv$}12Kl pq;M W~O*J*{ 0&.Oh0{1,KY%7I-V zf.7KPZ$1/KQߑ DN M\$1Q N K///RN %_K-/o9K&?/J?*Wj0=fL\`1Xj05/ܯ?YKc9UPe6@2]bD(&rOXFbDiOLn~ea08ROO ?K(-<1@*PiF(?H_ZXA*Pj_T _p~'*P=._Bdfd&/5QBUpݕo_^P!qO\nE _$G2`/?_oH2` oo IK"4F Jbpf` 1Kbp?;QLK9] EM6:?oQN6m6oHkz*D1S6|_| VK~(x6hR:Oc°A/|P/Kr/8` !v@0`6w} АL| |S :<ڐ@ bbAXEv_` 0^S*Kб%XPbٲ ? Iǰ404D20420 4D204204D204204DB0 4B0$4D!B0(41B0,4DAB004QB044DaB084qB0<4B|``:c@€`':dC0`4B"0d4B0h4B"0l4B0p4B 0–0Ž0x4R"0|4!RHL9S"GLYR0ܒ4qR"HLSGLR`2TPTR`4SPDSP!DcP1Dc`ABd`-"d1b`."dAbPaD PcPqBPyDPDP>TbPBTDbPFTbPTTDbPZTb`]"dDb`^"db`_"dDbPnTr`r"dr`s"d!r8`ܝ)tH#PTer"PTurPTrFWKsPTrPRPR`y "cs`Ssptr`3pt8`"2">OHINratY"j&jFsBzp~tut ̃t܃pt"s+vHq1AQpΈtaptq"6rtptŒ `rӔҐrڐr`&SҐADҐaDҐqD$ҐD4BBȑdTDe`%bsrGv"rHvrIv"JLŢ|T8``|UΔiڐiҐtҐrڐtvv֠wwαHAϓ!TXҐ9Rڐ9RetxҐut֠s+:OHB AA|0|ա||ݢ|媋0c(֖֠οmϓވ֔Ґ֔Ґ֔Ґ֔Ґ֔žW2GÀG`Ē3ČҞW̚K5MҀ`eycԞWK|bмfԕrY\bfr=Ӄ5`4С4б44$444D4TDdTt( 9C,IC0YC84c4@\iC@ 0bK~8`K)~X~PZ40,8AXA800c 0@, !- @40}>0 @@A(0`0,Ϝ:,D>^UD8@<f<@^:!aHB X02`00K㴕~|oLQ8 *8T~T~|(P8T(4|| |'8CB:)`<K~i~|cj/*L pdP  d(l8|H  X P 0 X  8 l 4xL(\ T0x8X0x 4`4xL$hD<XX 0 x!!!""<"""#@###$0$t$$%D%%&&'p''(,(p(())X))**L**+ +`++,0,p,--@--..x../d13,2=?d0 0@P@#1eC1@6?Ad?v528BOD5HC3o?+3=D_{4Jln.vo(AnP@n TnqnqnUinbneKn%`n%3Tn0nSP$nkא#` dp3/^h $Td@T`p"<`?L 0s,`0cp~p0|c~q&|cp>8`@MCnJ5 V Zfܧjnl㠀@`C0a:$>D8("2(@:V!8<@Z|@| |(@TV`9|@Ls@0`E:*8˱<T?T~@Ԃ|`}T?/@ΰ<>AK~y<DC ~"c<`ֱA*A̹ٲ@/T~^d|Ѡ>lcsH(.8JaXnpТ,@"P KB r$(wd8*Ր.d.ڡ?0*Tc:6y^NTc'>( "(Z|drAc,|e|iN `Dhdp$x$ȄȤ_:H} (:HRȾhТUئȤ(Dd$ o$(0: Y8>/^ @b UHf Pj Xn `r$h: p~/*xb f n r$: /* eb n r$% 360'(b ! dȤ:Ȅ31D1D '$(j0y } t2)@z?60H0 +Xj0`n0hr4 T?40x00Ej0n0 t2?6H00j0)0t210$O4_$ayEEJO`ơ:PZ2ނA|`$a 00:~G5EP2>0V_RdPT%zY|c__:o`HcBDu^Eyd~QrmV$j($*u`d>rOn( $TPr(| ~@A@ (8HrUM@>>b|BaP0$@|c(0we0P>'0em*`eV O|!8| |(|PP>|~qPÀMĠ# ~8j< u~7|:SAP@BX򑓠B >(O<='Y?;쿈3sl 9?X3@IA?9/L4~~ڠK8~DJ3 - ` 8IBM ?SL ͿGVg4VS3?\?Jy{ Q U x** ¢gڼ̻ahyB.P?x ^KsD?zДJ ?M?.m+m-?DC ސ?Qw?`ܺo?x}ӳ7WwڿOʭ5z?B&\ܿ~FЇt?a5?` qW?P9'_EQ Y0y?637c?XCš?p"J?t55c >?xJ RE[؟??Y|?i9o}0'-]%l:??_\Fe?P$?;O?`" VF!#^'?If̡ƅm?Ԏz-dkΗ?o?fп(sx?p?\-?IoV_X ?գt&i?* .ĿsK:a?Ά ?<cY,A ?+o!?`)[ֳ???%0¡CKGKK@!,j@p(T p h ?P"!@5'&nlibX InterfaceLibkcBKurtg~TJoy!peffpwpc@if[`@#?6)?G%斈ӿ>Ř?0?*Vg[t?P61= ?"yѕm;%?p6r?b̟Ag(?6?Cì`lH?u?>&Кr{Mq?6?ddG :?6?!O"3y#?&??m4:aGK?%Z[?SQΤDF(?(_'?:'0 W4? n߿t?9?B3 (?Q'\?ّˁ/`?i$1??`nߴf?Z?$8fE@c'?!)?"Xɨw ?y?u[ѲT^ me? g?]_nq!6ߴ?!/?FyXͿ֐<,X?9(?/\L˿<K?Q%Q?wXWƣ :?i*n,?* 0>??Nos|Ȩ?? 鯿{?!?C'F++Y? =?[ ðf 5?!?r[؊L?9&{?}8co‡Sa?Q ?h|sM%qZ?ic?S~}N$`Ut??>~Zo?$/?*"< զ?y;¿W|ܒ? R@? 1ȿ71TL?!Ԁ?챊 S(=-cscQ#~qtu'Ue(_ǾJ,`L a(v]{yo@3w.Ceu1`9X MHVn-B ^B PXRl^dY PeL65~~5QC$ p] &1JPMy̠U@i:v vq`è-P1Z-MC_`QMB 4ăS;*Q+_͔a<=Olr]ԊDo*@x 2f5 )V09awHЧQƠyч@Aҫ ;EZ*vLcpTFd ߐn Pwt Jv"wp`b-9ȴo755Ln ̟̌JP6BaɆ#Į!z^h%j 5 W(ІvY^w P*CξaEq1!RmA"5~~U χ)J#p;w4{mܦC'M1>5dNmX_OP"@Њsf>e =p$cdž!Hdvr^4Iȟ0,=tP gc:_\`P ׎Cӎ2ay灧 ӽN'S"ZrpoUaT(P"wu_P2P4NKJA2~=^ 8nxYJN`$u,Jԧ7=V@$ZsX1a< )g))pC -1EÙ9 (k_÷p`|pΖՍTXu#Ɇ:@պGzpW:3{ &@4r`&+|} TKŇ(1`$ )Ĵp&L!1W/AEGK$b>#,bMp`#?0Xwu!n؄fHy%p(-&دZ\_P'f0^*-n 4V!YWPf2ُP 凑]MϏCCIy3|ZوO$4jJP=ٳ׻$XP\t&xnPB@N;AG39u6?楩wD >?> .~?[n P*?ǻV1՟$U?#yՀ08?ލi+`t .?M?DuKD?y;" z?Q_? zB ??P;Vx?#>߿ԟ u?/&:Ԁ,q?:Mq_.?Fapw@w>|?R6E)TPO?]z?idל._w?ugӿ@?ӠL?猝xѵ?hDh`Uq?54Dܿ?N? wN # ?$˟ ,n{/?+5`ҿI]?0TҠ4??B[4ҀJ?){`*?v@wI?h Ƌ#? Ͽi R?'46ؿ  ?uȉgT?*G$)?7$i݊@tJv?Cr9?Pf;%K8f?]O?iŵŝ1?w?v}i}N~?;Dʿ̿/, v̀h?-??驝e\Bm?tq}X?Rv#ˀ D Q?7 ???%{_?k??-\&? Ub.M ?@??pVQ ۵/~?g ɿT~W?+0{ɀXP3?8HI]8?X?Ei4N?Rm;cȿ:?_y]׿Ȁ*@+?l4@ZT?z&+LxK?ihqb7?kAW)?+?.68?Qb1K?=ƿ?Bx-ƀ_'?uOV ?Xΰ?4!$˂?\{ſC`*? ŀ%{"? Zn?<)o?vN?(vF4ruC?6 u+K?Cpt_u C.t.!t>tAde'dǛ-'pdЀ4dk_dZ×IdM?@dDd@Oo~dBcWndG+4?^dQtXNd!`>d*r s.d3N1d<#&dEšTNhETX0TaDTaTjx\8Ts?5T|)YnT*>|Tr%,~T򘻉#nT ?ʧ2^T\ΊNT_T.Trrp~T !TDEIDESD(~Dݷ.DUD \D(;ޞD D&D1_~D/wBnD9tjRN^DCNDLC<>DVb) .D`gWDirDswN4}3K(74|4q0l4ծ\4ߜ2|\L4:(r<4L'c,4+L4j$ 4$`)!$%_ $/T$9vH$CV#$N] $XB!bp|8z$lpj$vrZ$hwJ$^c{:$9*$vv$E} $/l7]Z;!jO'J/ߌ `@ I5C`=,Ѡ᭳%C"+"?+ # A(?NWz\\`Uq)_(ѵ oӠL ӿ@Ƚ_wӤZu§-PObJS@w>||*_.wF,q {3 ԟ uS,nVx  ?+a_6g zA`0l?DuKDLڸ`t .X'z08cVx՟$Unm$P*yĞ1.~5NJI`; gFLe2*mr;?Q%?`> ֐De3.? s;V衳?>C?ۮ?z;bcH?>k?W:1?Bs7ը;k3]:S? >8?ݶ?e6@|;q^d?*@ )H?wT|?? ;tVV?J@? O?EA;xaRXw?j@?줳G?^T1w;|#vWw ?@15???3=;sY9?*@$ ?+]I?**܍;uT ?J@+?}l=:?q!K;4Pj@ ? 6@X?&2;2?@!N?pJ?=;fZt?*@`8?m~'?en;vSߐ{?J@!?M?# n;<?jQ8?NӾ?†tt|;Qc"?@&n?p?\!lF*;_p?*@p ? IG?̂or;_?J@k??@% ;>]k?jA;??VE;WkZ?QP??#v96?ג`.C;`;i?*@6?[l7?Bڲ;(2?J@ޞ?j` ?tV;m*oe?j@Ll?q< #w?ٝ㦳;K?@9>\?9 HuElv;=?*@>,?P k\;/^?J@>jF?ʸU-f+;\V7F?j@G~z?9wUn;p^Ϲŷ0`Kpڤ(`Ȃks;cyq?*@1?-f%\ͱ=ٛa;'˿f!?J@1R:??o;_?j@49?ɕS!1VYw4;-uq?@8?,M9t;x̑?*@3?iȾ=X;6cz?J@'bD?:[;Jlj;ʞ ?j@? WNf;"*,4pPKp6hP%$ǹ';XE?*A?kE]I ;=?J@,x?j@a ;; ,fOP:.?^"p^(+}4$B;+cU&?@8?4Vxu،ԟ;?dˆ?*@3? G Vth9;~'{ J@d?;4X );|<=a?p?J@76zNv?޶;y4V?@'?Stx~-;w/?Qx?n3JZLd;uLbuע?AoH_ 秿0;sURC?p ?#XJTڿ;,;qx"?@?>1Ӓ;n%s _?A0? \Gn;jD ۝?J@u?B| ;;e6Qr?pB??8WR.,;`Od9?@ "?s& Aci;\So?*@ h?Q"62$/n;SRf?<"|?0!$HI;G DLM?g?:F?Fy4Д?sA4?V >; pſĴ?rͣ;пD? yJ7;q?. ?ie-7): ,Ň?;Co. J?'a&ƻ p\?6-;,1wω?ػ3|VT?Pgo)u߄Hˉ?t>s?֊];4(y?h0)do*r?[ aŻZ?^)c;ԥgOPU;}`ڼd_?=j$텧;tyaGo?B:P;\{J6@b?";ῳh?\CS;R4|![MpDz?"䊀ETL4?jFpgo^?j|E2X ?:ae{t"?49?@U$M?58?`If1{ ~?3?Ē6;&?4?+W}=;/u*?4r~?Lq2ơ?5N?pt;N:?4u?k{x b?48{?!`Eͻ6T,,?4?jwA[q5?470;œP4&y?` ;j63?c?4J?L x^֑Eړ?ʯf?+ 施?5V?ꡒ;?4n"?9C;h|\vs?44O?U<>Q;N?4U?0!:;m?5m?5 ԯ+;.P?4L?? "9?lj$/?|ĬԣJ-|eW?r-?'4@??RY]U?fS~ԐZr&?Mg?#P`?ٍ?nC (|?Nq? r|QWS]:"f?>^D?D,? YH? 3^H?4?MJgӅn.⿾La[u?BN?ّ=h?3sa? ZQhϏdy/?)9^?չ^ϟ?$9d?ðx%?az,Jl <?z?h&?ּ?[[N?$2,E~jm)Հ?rf|7"?檱@?;WP/?}߿ }#wZE@I?iy 2?dbik?*{?ªB?Pv{m9ͿOW?a$X\==?.s ?€rȦ?POU?&ҿ9d0j,?X_B?_tgl?YLU?OB9)?Ly.ҩ#0 k?Ocљ?Sn@?ÀיO?Of?`뿿҇1א! ל?F/<=?Y?l?8*?6dFEo?jW7Й}/4?'-LbtJ?bt燔??~ ~?xkOg?兑8Skꭅgлjc?7.?Ӝ0Qb`?Ԁi?jHt2?( iOT&?pt.}2?A@?0e?@3$]|`?&>ŤaڣXS??B?榿b_jj&?ۄA+vUx?AA>?J(??FXAt<7*?:?_aݜϿ=F>B?Ҏ\FfXo`?zuȿ x ?6sҋ4z#z5pH$?A{?ԽTqDlʜ?Iw6[z0?ո=J?]c?)f4!%,?$óEنoјB?J4~?0=??I,e$>?$TP ѵ?#?fg?i׋)=??Ⱦq?z)/?բ9\пs?ȲVS!`FŠ,Û׿XS?hsn?M ? ^8-?Ȥr'p5kƿ Q-?W\?*c??K? A ?ȕSI|]%  ^D[?M`P?׀n ]eHby;?ke]U?2 Xs?օE?3!HIտң&P[:? cR?f ?CW?G?S/]wſҺ#>?A~j?ם_EK?S+RB?40*￾8!GvJ@?{K9tp?b @?@-] +?[aCxsad:IԶ?x? ע{`?&*%Ψ(?%+Bk $^?띬U?D!?ٿ)m迧 |?ǯCŸHZڞw?늣\X0{JS?]^p-Fտ>'^whP6?زOA5 ??a޿s* `?qQbH;#?dU(?&z0{W?QIҿǛiOX%P?Q ?ᆘ0eԿ5t"G?018 b'.?=MG?VjQCE?q迬 mݿ? bߦTiS7u%no?*Hb7?ٌ??f,t?`W&ӇX?T*?h?ۀ1*5#?aZ/Iٿβ$ӘxN?:a>?2bc@jaӿnh&?Ɵ]p 0mxFөxl??/# }@?jS%-xR?x,8?o/?0x c:?ŀ 5\:0-Bt?d_|V?ۤoap`}@9?S٣ ;?Pg(#?%;q> N+#S?&{nEfP*7DOa??6wqԑga?\\?EI5?S'x?ޝsYͫWԘx?Gr=#?wu0?@}}?«ϧ+j *Ԟ-J?2y>6?ުgB(9:?w"C7ڿc]Ͽԣ Y?3;?ܹ ?AgZ~qQKԩ2گ? خ? )¿ yv-*CԮV?:Ԥ1?nP!mr?,R3Բj?2?r?# ??dǿ7Z!?\2L]Զ8]?~v?ߤ\ ?`W߿J9m?o9HT+cIJԺ%q?ŝ?G(D@fւ\??b?:hT-ԽYSR? eUE?8{?[kN?*$ƚ:Y6&D{?KW3&WPNͿx)۬T?RaܿLi7Œ?x2?4?g ?=FQz|ĎwG9?c%?M%4J ? 2^ÿqmz?cJ~d]h, 9o?O4pt?e; '0 9?-ڧ0)v?hX?:83]?}@?@x6Vs6?hllIuC-E?%q g?6f?_:R?~OY!_5~? _L? e?mZQ^?߯?8JJW?ޫ?+xv :U D?ܸ3_?b |^m2?4?qҒp뿵'ƞ??𷃱?p CmV?O%?On?[.޿ASX? c?xcA{^?罇7N? x@?5/ſg?hN ?lTQRppųsHq?'?%^Z㼠? Ʃ,?=-?{A .?3\?< @$zG,v?FA?$pe r?9d?Tl~`Ts/{)?&HX6?Pc'xԿ)A?jxg?kX?_{]gb?U?.um癰_?U?[SRO݉NR?PpG?pYк w0?@)8?ᚤd`?88> -?$&?=nAO?,F!B?_FM;- (?{3D?,?? pf&?M?EOp-mvD?U1 ?t@YWcgE?Yx~?ӑ'ƿǤ?AEӈ?<@fF\:/d?*rxf?->H?n$ ~Sc ? ?CK?0X?@YX@? hߒJ p?vI?k])\fd@Pߔ?P4h&`??&rP?MHpv?#BÔd=W?IP_'{xtt?c f?m%GoEM+?ݼ[? ?01!B ? i ?a@t?o@k?-d)P?/ٸ1?xÿө*$?z2TP? 3ܿ?BbnP`B?1)ſӝ}?g eYI?-8J *?^WtɿG{џFnH?8? O.Iw.?x?)!;x*e?ʒ?L:b?@.ð8?TGJ?UR~..y?㸟WE \9?`of7@`f?iv?t߿!AD?wOm#?t=74-P֗e?ZrQ?]θ\ Po@? jpn?El]?sae?QXU?`*+$L濬b5?#U?r.؅?lO?H d %_?(UK"?#Pl2 uf?Y]?:H?wxP?}J?IYbXg?FxY#?Պiht?5o_&2~?xl9?mX)6?3@\|?ụ@??5n s?+`/i?]cVɳ[Sy?X`?_HտQ?%?GC Ҵ]y?Y???S4^_(خ$?~@?kE\ҦIiU[?q ?" TРʿ?TL@+^ҘQ;?QAd?4j ? N!?fI?_~՘ ҉P?? ?G\ Q-?z n?3w{|q` ?ý {~?ZS?#?ݠP?E,%?Kʜ#?Um`??#RX>2k?_&w|?Mӿ _?C0 y?E (?I"?{CA? <~(?1і=~͠? ;U?jj?Ǝ??b?`? m_D^? ^Vɞ?0De] V5}Cxw?ɬ ??`"?ޫH]1?D\`G ??$'AP_%߿?| =ڿѪV锱?Ƥ?Zfp("BX=g?v8$D?S(ћ"?%I?l#?x? @ז?f-\ыW) nBY3?}ЇQ?>ΗG)?%?Dyܿ|4|*E? ?llh`? pN? VW?G lRQJ?uV?7?@zPvM? ?v?ɓ]aN?oXNr?mA`.-G ?$C?M}#?]{?P@?'`Z,?5w7l_?㟿=  Q?Lu.S?'d ?2E?Q?Mi_.)U:?;>.}J?l~P4IĿĸ?bCj ?Wr?*6E??]Վwq?K?=o=?lZy9?Y?ֿ+m?{D?ZߐXo?xR?Ѓ`? Vs@nȕ?SXqΌ?Y?.?*c?ܱ( @?LY?웿IWz?L?;pl?`ހKج'?}w|?'_}[l6ރ?E)t?Lw? '?zsʳ?.kV[?+?]h؞ sL1?xvne?484Яm?9mF?n&P  DT\C?v:?:z<Пag?^&?~*?wGq࿞V.OZ?s=BŞ??QͿЏϩ*??l\Q?r8ɀ|?qJ\X D{3HM=?=}p^?>S">LT?m6?HHA.o걧y?ql3?nڽ??v䮾?ipl?KB0_/?a R=?N!`?_kSV,Yn?d4`L@?Ns\O7Қ ?P0s_?1̍.0fA]Z~?`>?Q:S??@08 zt? ]Ȓ~?X\h,?S ^/~Z?0G}S??8zv?PQV ?TQ| bg{? :?YqX0|6^),?@)"i?U=-?{s?{ ?6D!%U>|=k=H/?AU$?dx?*?!rX@QP_3^8BTh3TlogTab_leexpYRLWTLDE_UDtanazPtZQP ( ٨%&]$4P{0HR(SR3TkucYx3U>0PpnlibXMathLibGlobalsWKurtPP\Joy!peffpwpca!3Z*Z{Nf-X7P5,`|@`i3UnAb|}&H)p!>Ȟ0,-~@8:9*K:P8j z(* Y:g0*@ ,0p|̃#:BT 6|,T 63: (3:a|~0c#|cB@,I:dX)0YI:8y*.60>P^0*1:r 8 *9p8zء8`(x@pgtpP(tp*B@(**0*`C`pH*H(漀&`pA*x"yua H }``0@qp2@08p2 R :gP*98HX @} K0*qP]\ ew6p,1ꘀB(wJ8(D(*g0* KGQ*@r_00~ rpW"z~ zcbzV%C0"P:`Y:J؀bXP:rq .ZHa>P^ɿb̐: :%ܐ(8 eAH|* Ԑ'(h؀0*cB`(UitpD`p⼁n`* ٣(p|2,h@P0؀k `P0P_ƸԐV/@i`p)\pBԐ萐`H2@P.qPn`aa+paxˇp2q>uqvXqH_t@<r@_&u as͠dzDεں@q@@yqyjp0~986Vp|0ᤀĐ (P$^fx@H ]Oha|fp|aqo~0^~ R("ȭ08?"~8d*.a'9Fa)8z}%!8!ce؀`p1ÀiԐӁRρ)ۅ@`p`pa0(x۰ȟ&,wp K < Lc8~PtXpc ew|ꐼ P`J(@j`GKdDF*V P(z*a(&;*2* *q~xc*@ (((bn@smqxrdrXsApTcOp(4FX|ꄀ4*9:"_ HzסĀj|ς*'ἀAWfX(ΰJ :\pX(Vv7}I *eIЖɬ|NtpC-☀8{Pna  !&8J\=dhve~b/t#,1*E`pׁ %JI̐ŀԐ IBz)x*Ap‚eel G:"pbhJ\ppOV??Q2^1b4!:ݨ@8*zzh"xDH)|h((|@͠BeJؤH`ppߐ, иQ000P08P@8P?|`b r| ch( b|WF|ld$@]c@ |2d0l\pjtpK@m1-\pDB\B컱 ʰ0iڰr?ԐOCͱBִP޿R x~bϘHd"Ng z#!1CU`Ȕ_kpt%|$ % e aԐסX(BȠ'@ K|Tۡ;(Ԑa_e0x`4 b:j 60B]P:#!3PX|ΠH 2c:RB2ʸ`g>:"pa63G`p`0 ۠4_px!Aaځڡ!Aaہۡq rt8~p!؀ԀU<_<{1<O1</1<0`<|@N3e!aO!2 @^|@frvB2T|e.Hʠ@֨,Ҡ$<$( |D: ʠ0֡A@>8pZ2Ȉ(``2|hPH?z0H!_=/xEAyX6Q 0f0A02*İ7@*8ࢰ%(,޲0( %"z `x]0z0x,}4p(`4 ǯ z]l`Z 8*: ƨ00 0#C >~n9 HP`[XP A0ܰ@X)0k8()0 0 PG?PH Hs)10;|լ |A BAH8ʠ z8լfP*PPTnЕzQvђy>PPA8YzRP0T:|$.| h (Pr4@PT<|8T8}DzЬ`+:$* (eP$0"4F`]|x|1< H|  :Ir2"i*+4 | :^|8RȄ_0(0g2FA!z&Q90l1(!9:ڱ[: @ 9z C:(| ( [:|@"rk@(,Izj[:+CIzJ*:"2 8. bQc2" J*l5l@zɤ$XFh,K@@ (K*@?h(_PS%#; A*= 0w0 X* p$X Q0(¢ X MS(NQ# xV9adb r{zv jݎwH3taTU >@U(e~|y+֐XTe~U?TaD(|x<C0r`|x@P/ +@a@@,w@ , aJ@ A)P[<{@P@B&~&rvz8FOPQV+P&.RO,P $&d`d6``{[[qU0@(hޠ4r2%aa&@//00Pޠq8 &@V C-/2 ?,/Ӡ/7>@qޠ}Ġ??^ /' ؐ0 $][Ⱦ)1& U*}#wyL(*A,v5A 5KE1jAF1p2wBA%B?(.2OOz!,@#/,0_)nf!`#B9!0:@C(Mvx@ p//A.KpU ~<`||0T~ |@@ln p;;h<`CL`x8$<` bFmH8P(ؐ@ؐ;X2GC|`jLj!J᐀9f aaBoj`'B$BaHb**h]i B|h_Lz p ( H^ Hlh`P[>ac,B4qjʺPoLaB,yCl|$HL]!f!7nUۨ{Qtנ*0Bؐ"<0P!@zWpOE3Y\JvȻ0tJ,@(Y$}L~ȼc"`~|B0m @@nPҠ#㪌Cl t`cࠃH|0^G0?̤:z>а1bF"o 0ٲ*Eåiw"*NGP~n (/q℄9r)0::h 8>:CH98lɼ8&`ƘD3BdelP`'bWElcB*ʇ@gpɻ  A @P@PP!8j`J`8 B*8WC@(p*%8B`|q](&$chX\ 6(*LAܠ@v8n &@?"#ȕhhlHgנ ;h=[W`.|}ckfqTT\\,ʺ*y6԰90I𐦯~ʡ`ZIHee*^鰈zX4d)`f| 2Ƀȣtl2J(| D "8eZz"Hi0, }0yiR,1zf:0*`u-R||( JȠ AzIRðAz̀$!?%DHu`PR*x)'H8zɃ*Ƞ+d`K`F+uƈ`*lp% Ȑh!ȐXMH,hC@8p&F\Gq+ۑ*,%*A~0 @H&@`&n x@A ?`8IF`*`fȐ @$8h@@+0KP๑ +k11b "&YJpx!Aaʁʡ!AaˁˡRApg`$ FQ"@p$_setflmp!e* Mfb,Cn01 BRAf1zbnynDnm)0>PVyjLnznanim C ᐒCnxZ50f|N`%D e n}X<C08^m*|`4`lB<#j 8F(L &1jD|1XNPRK؂l@^n 8 | 萆4H]*^H_p ]4]$:! ae` Q*0@(p2H$w@P0* 1!R"c(}`'A c TRP = e`I y64L>1 `RPyXB9! <@0c TV| @&@~|ϥ#xc@P,8|r %"d~Z!ȤLaQP@azf@D0T < @0@ 6|,st/`@(j@XH2h|c($$c0(D`:n0!wa Jf! 2@a:?A:d P5w2#܀]R L\pb@APX@d $-؛@v@X0؁t@`@jPd@LANPh(G @A|+yF`$QB:AF0Dc@NPA5hBi_@^@psaQ4@@FAv@h!P(b@`cwrTpC@r@RT 6}@|Bch(LP# (°rct2*:c (A1xaPE H:s` PǑ1U:Ab@0fQb@8:Sba[ KQ ɤPXQp`P*q@s@VPhɄ@sdpB`0(LE3YJPAC~ЭPWb@@J,Ԁ-2:A2.BQPP8 m̑Ȁ (@@Iz Yz@s@A1 YC4"2U-c6b|C4pPX8`|+x,,c . <Ag4I}T2:@(&(JP_p"ł!bs@@@1Po1@bd<`~ /|@M@E!&0!0B4%7%ȣ$ @`0 (L@DL4x0hc# $fu210!K91<ND8A0  H!K}1Y18~8Pd~+xQ",1,֑Raggh#2a'D(00 1615F1$J7 V10&!ծ2(A=`0ã6" L0$<:Hh1|*~$>u 11||($<>Hg  ! H-n&@˃$歽 & &*%` 2V1. 8dcڀdp|@q!:1B4K׭[ ?`@@ q!kv p_(Ԙ, ??If?u *c0N PC@L^@  >=x=z=>$N -!&XN@ dׄ?r% U "Vq !!h?D;18Eɬ!1d?T`e>\.H2 T..L P Td0((NTd>0&!=!^DdՑxE01!08T>!dd?Te>0TȡP! :!',"T4!@u<"@. TH(#(.D.0@%.0d`21rPJ1T<\ЄT8|P_@0($rr"|z@‘6!nA!a|!< qꐘ" :BEx*>p(:Z!!(0zdP[ Ɂ@P:)(ziԀC8*)Xz(z ! Pe"!bSP-p%Av@` `ɥPh`z XHI0*Z!a7 XxPPP*#i`(hp(* ip܀(J0*%*!%"!`Pc@ Z!BPzj12cb: )1~2 8x!2h"`*ɮ` Y>B)!!825.0y!D!^!"!*v h!|g5@`[ 0e!H EAO7zҀp`0PÐ(EZ a(!#a( )E,(ׁF<$ED(PFU"b"E el Br^v//"SEW)c B<"H* aoc0N !RIbE"?1Kfe.0R:7%E4M7]%ꐈ1@xH* pB"B AB2ih(@J( kԀ `:2 :*-`L@!w@"&rF2# :& :=s023p1h@P0H@ArX (*6!`gРEH0(j?pKtpk4@윀M܀*@@*APLtp *keԀ!P2z&izl@sw`0p:Iv[j(@0x :::, 8:U 8@ Ktp%܀l`etcq`*{#C"zVG]5qO 1B1%9__!XI.R0xH[KaQQQbQQ!١C@~QQ_T_R!(TA( % e0$#`QE'QZ*o-o?iP"$Td#B2H>'#*0"E"!JjP!%7f}3F=21b`(r0%r0j@va` xpU1!z.p(gzEq1pJ@*^l_׼H*`^0*0Z#3T|"B% @2(n "ez&n0]mBz}HBa@xGn a@ƥ&$U%nڿ2~x ph"ΟVQ > ̢r7PF‘vPQйlƱP8sW|. PLJ< Y(*r @ӀTe>@ρ/TTV.PBn ( |K0 T>‹0(ʑ@ !.@f8(TĦ>OH2"!*!~.TĞJ8 B2B @TܠX`0cê00`08 ;|t-,# A;`0(z;s`p$,`;$3$NHKE|LBj8ڤHO6a ^8N%@@ ri6T)v:%`4EH53|3A$]ւ/FN]|аJǤCKC^Q,0|ufQA.N,/I- <+a8I8!80!@$0W<@ܞ68 !0 t@S,oV`@019B@L&!8gPd>T 60?0` e0c, 2 B̔=60e30 2e5.1Pd@,TQ8|^pd`0dW0667D&GPH fIaf; I!#z 1p@3o2,<`,40F` tPlFTpa@aL3<`>Z0<`IyDy242T0201(82U>U0 99 Q0c391/101\P1(7nY200@ŪD0tQ)B8`,dddcAVBOCY5W|ctHW&1tJxExB^E9!<;`Eo|P901W3[(1kV@,0 찃pThР(a0|PJPW}:\|`ļ`64N0% `įƄ>0ވ`P|8`U>p0`q@@LF0a8@$bb$| 0e0p|W 6|\@Tb00p| T<00N Hp`q1 `qsu| .T<|!.m@|~pT~44WBDmP|Ϳ#0Nx*0F0mjt`|h!4}0cB ,He8X`r4xA :Pa9‰/H0҉O` 8AvBA}06@N/I 0%&qAA1֡APЃ"(E@ҁB/EK&ɂ|-$a("`4v0&8J\Da:#t!%q ܾ$SC3Z\HGV,4( \vq!RFq8SHFzC;+qj~0?/`Pv]¡xetޠ?HUN0$ vQ:`~0IޠN 8p =@$>~011~P|@|x@/0AlP`c p1h|PG0߅X} ؠ91I1 }LP} @ 9BUJ 6aA,ϱ @1?}J`ٲE:ja`¤&8@ H{I3 D,p`@B<0wc0Z8~xPS`z}u0H@dl,0;H3Ř2li@}(A}Hx@|,;E.޼¡6p,2,bE=@x0rF9" .xypc 8$aTFHUNaX`TbjDٜjaIF>< fFA**~ : {Ը`; D~JoΟ@9}O 0L0P;0A/z>rDq|tC:pt0W}@~0Pf:P/'4oݸ:P,>C="ß^bC0 xn|E9|x3 3 <0Y"1‚DN>:p#]蕱,<_Bn* 0&@Ρ"j9BM^AX*"a0ڒg"`u*@<(~ Ҋ*C9"u -D 񚩺WNA"@:h :P|\HP20 :@:8ʂ;20 <801H:c$PA=1+3S|]|d2׈P7|e3_WWH0UĠv@T!A"Mw۫b:;||@ ?|0 w0.+ΐ-z0=;o`S 6a6e8?0.Kz0@ΐ.6_,|(>v14T~@!BS>WNf(ADs;rĠĠȅ?ez?nf 0T;X.z06e" 0t >@@k؍`3gL| >gA>>,_| T'.P!fAt 8|7|"Q 3{l`w0/QA!z0T,H0#D%*0^z04|#/3Z#Α2 $0$0P|/0%q|8"#zl0 t3> ;@$2`@f1|V!/Dqk0.0 ~ ~ ]X- A7 |8H=0yA|8Buj+_ @~t<`-u:!;r_-A`A8@ܐWu`tz@(RP#0^`T>v9V(0(a$hqJPqv0$ _B >.9 0Np,(1 `V1AV!!@ VG80|8Qo~GQ #Np_W|^Q2 z@.1 T^<_ ߀|u .P P{FQ39;IF,@d`PjdҚQ&Qjd7-zGMKx6@j05A@sI`0q@Q?n@MoN0n*ّ ΐi^;kX&Aΐa @h3opBxNΐnRtL3P;J@J@Tx(VpZp9Y48!$@PV@;8*`|p0Q| .)* F3@0 |QVE>|(V_R>BF_/ qr T8lTp֤NZn^S\PrTףFf * <VR((Qpq9BC t0>ʹ!8`MTe0@>@dLTX(P]Q8]~PX)80T<AP@A"P FT<,F%:BF;,'>01M|||p|$@MK rD`!$dhAHD!PälXpdt$xD|d˄Ȥd$DȄۡ`١hap!xAفaہءaڐ؁AH6(v>T``a8|a#hFJ@-¶0V!^D| Tc8T|a@Z,K`@:rn ̠~@⩁80!0BKN=@^=`x=r<nal2>`/<~<{<<`>1> }|>@23K32=@1*G3l=@W3>1U3=@25=@3f1j5;I3 =@ 2jYRL=@W=3x2===1J 1wҰP32Ұt3\oҰx3#<m8$r<LҰ|0S3u<#0`@<o pҰ0,T?< <02r02?wߎ39Ұ?ic3aҰ?=3!Ұ?7;3k4Ұ?38PҰ_X\U`dhlՄ?eҰ?)3Ұ?3Ұ3uҰ3Ұ? 3Ұ?uA?VҰ8H? M߸3Ұ8?3'?ې3 Ұ3 j3Z3CZ ?03"nZ?i; "3<ܒAa!?6rАZ?P3rZa@?3L};E9`$Z $(,0!4!U%0;$f"'R!b4eX%؎3? 3a9;}0:`°Dr |0;PcZ"@a(,;@WHFC,g40vצp 0pP9T- ZA6cA?DHww`p|c8\c@0h0{0~pp; ~g7{:@ 4{0j1.0@ 3p*a2BtpPP(T $(043@,7@AYH'`0tTXat\Ac0l;@r@k`@0T0P@@|8 `U>:`0'*a@@L*]TdCBnR$֡0t~Wf?rW 6hp|!N@1C~PdB0hT:@zhd1JT <@gB@0k%p 1 paqocu|.A|3.a#alTc~|cE4J0&qb+>} B*Tl\5ޢ540.BHw)APѿc`pua0cTcP{>Ơ8Ta dcqq=l"!Pn@?Ks"!$`` rW ڀނoP3`,>@KafH!Pud(n1NqJ fn-~BJaP_P}&;Yd@{ !PT;PX困@$U}#xP[ fP6Vz0W 5`Q8|0#a9 U'J e)#|cU)~c pv}ˠ ` A8`R @O0ڐIrPN ^NA4*}r{ @et(04:1;'H%B6" -T10A0(,MqB0A@ ->,@ Jn@^nvi#PJ HV"080F$e0ɐ cFhbP8ad`Jd~@frK^A\tntljʿܳ}]PȀӀ΂ֆd;[@~L T>Te>|c{+x&Pf> ۰kL: FA"9 0"Adjh$`pdp|cT~@Ūn޼ƌ +Ɠ~hfٟ량sw*vq6HN| V\-0*u01 8,v¢ȠVvݣf?"0d0(f9P~ BuZbtz!=Ў+!%FQpƹzXTIPFJl򴭰Ęt*HW΂ֆt0&//rT1P!@<ƣP4% }0 8("`m0$`!  `  | }W!WƒtPTP 0UX`@%p}tP$~r(04:3IN0AF0A0DЁrNpT׀@4pT>, T>T> / 0M&8@0p@b!@0( 0>0p ei *q2pց9%ؠm,k8i\>$Kj\H hT(&}8/ KI>B}u``aTe0>Td]~'pTX(P`]~pPXW(0@07`X(>p^0cp8*|`!#pb| M@ #r1UTY rP|'@wN07Lx0@V@*qZ!^!kP;p3_[",@V 3/33/oA"Z0{}4; 㗟c*@0~pW<3}#1D;\#;d3;{|!T>`$T>} 84|p/ R81k3{|H33x/U߄:@ <}+{3T>W>|`R8 ~p]Ď8U:}8J3ZThP >|`8wW 8C0NR_0W>^.W<.*r:t~0J½ՃpO;^10D}~<0*tУ2P/T\3@BqTţb~@? Hyb xAp3p?p.4zJp*TAT?Qq 0*s `Alp`Π])Sx*0lrhl`!`ĐX0}&3x!r UI~afl@\UF}),WPhP4})pDPIKxU&|&tPp*DP_JcxFRFtTJ|Wr@A~H},`P*@lh8<|$`2T|xʀ΀ҁ@*qa;;בߨ |8T>|!֠"|֠|)|)5"T>&|6|}dT0(| T0(q6ڰFT>jް|(򰡬8l`&3ce á@2P|p0R1|d߰:,J Pz.`ʀ@zA,AT: | W0(c@P|KƏp¡`@g|@M_q.x@6"|f%@D0ϰ4"p "p |h8r2+de`@cAP(0ѣβ|0qq4`W2Aq܏q|(8f`0<>נ`<``c B|`8a8T`ЪqfT%<`@ 8|9dT ` "ΰ<K|88J deCB!(վÀ@@#d'c"p(Ѷ녈&dcL7'dczAT<>|+BMA㐲Џp<`|8|88|x"!8|4xTd'T P"٪p"08fbӲT;N`;ўPy':|cxz p`~ 68j ˱2`рac @p<@>n@T`LK|`p|cxRzB' yp±|ur<|u|2P(Pg@ɣѠX`@3̦¡1@08{04n4b(~}*u&Q2!K0("ҁ (@ pckuOcb|uc!NwVt2PAV:!~cáW!FP"8`G}h#,к*/c 41pX\k`p_8T"pL!8\Aݱ0_ N084"!@` 148!@0X"Pܽ,w8a\8,@nP@c07 ʱz! 0W3\ATZ0`&1|!T1OT61^0[0%㨀@W10言@q4c8p1nQв" 548&2.1%^| @*`H)8<0X Z`jHQf|eE gFc@n1p\!/c"pP0e4k0dX8kAЈ48^[q,5-5̎B1I7 0@ @rA ~A0@!BT5E^A@ҚEw@Ap/pJP10AROFbQ2 I2,PBϱ{>P8bMp9;0w^|(0,`0Ѕ Q0缡|Qư|ʀAXd#`JЖaN>AQ|# )"NF0Ji"!LPT`e,0{'|c 9bL ~20`e#N޻prTce~0Ͳ1g bVB`!(vea𮀐!0bwPЀp8`| @<렀!(@B@@_tTťT6<=&?|*.U&VT#&z !AD8Tc&|(@C@z0LHȃg8*!<8Gz8*"p ::`* <#p zhnpNCyT< C`c0 220@? 208vѠկڐ`&qKl]m;m`͝h\^lH"`@|c\&Z` OD3@>,C>qȠ>cr B@`cP*) *ұaڱ!r* *C*!2p%$A xڐpҡJAwB~D0j//idD0LȰȄH>CZ!P*ȃ?>r0 ë»$+D $H: *2p!(~($ rKjzPoK=l(LA~^ F$8@Ȅ@ LŌLbʰ(ֱ<ȚzBJA>FRB1F$!$>CR>0߲>D| $`do#@ k`*JH*ɃD *H*e*$rI C$(pՅҠЅ4ZEl^75F rvnԠ *6>ˡԂN|ze` pP@OE3`@pʠ(~ K9X HP&EA~`A`SbQ|{(@>~|-+APP$qQJF*`D,<o0`:pde<`BXA^RE$DWf |P$pE("\ew A\`老|`"/Tf$;|G0.NILg.>ly슒[|yjP( d Mh@`$0$T:򔴠@\BР߂Mp@A ` #РLTw@B0AР@ #+(bС;!gC#vq" vp%01@&2sf;PZ$=:O"TyLp0 I'cfFouA~av<`?6`T}3@ToP^P|`raC@P`r`أPbd`gP b\C(Ex%2aB4[QxCF`%s`AyKb]fdjvP<`C0ںXۡ ~dsAAwD8W8`P2ßp;;P@LІ M?<{(R%0]P:2P`h#2 HP@;rPHY$<(p${Ȝ`H 0zoK|I baKNgPKu^aQapyss8^ql֐Uڐv*aq.;>2Ԡ.D2|xeqav,mx`@PFaH@p+ @u,ZQl^@ B~:R8vPX@rz TzArR`~Pb`pJ߲X 0`!0@:9:  zM1s`@;<аdH@3jKCtݒTׄ0R(~0 ʠ`%ڐ 0A : 0$ܐ$Ȥ<Q•Α(:6(|` TcҠ(hr!((2@$]$x"~ɤLzf`dl0r,JR,h z(zw!9xFq!Yp!~^"rH~_`@(Pf`Pp3:dhlz,LY(_!8:(pt*(lΊ܀D\zb`xRFղШ.((f`{ɵa4z: AP:I:z&:]DPPcu,1~Ksƒ5Rѓ# |N|⚢ z# TqN`vsvPu P?L@P<"P ? >P_D@| ~@a ?PnJLxp0cͺؠI@&p]$))zNp :_("(?Cc!z=X`!B-z؂T] :]::2``~ྦ0~PI` \#pܠ\@ @`<6ٰxg%@ R0r3a:.\?]Л@1f |`xՆa}( _o˾Ȓ}$r$K ^&a^` ~]%1;wPKۥ`LP`A*0kKr`88|<``` &a<` PP۝&a$&ؼKkրV^Q0HPeH@^STfPA|`ނ\`ovPPyhrZ#Qya,ߠ,4,/P~HP~K⥒2f@n].e͞>cT.Pl` ^``]؁@L PqjA9Ik8"!LAL@I#`u2HP@ m ؝$q$48~"P 9&SK"vDU=&tKi0NQ/,,?1/>Q`L.`0Pؐ @8`|`rT`P*||qA&p`@AFp8@ e8A|c-00TP`PWQ>'T0#0Ab2>s!1tV@Ks"?UKPRP:Q@$]L ! U`(#>Vց  v1Uqzб1@v0I VT XHb 2&o8opNo`ovb|om[uR0 4TA~_zMcwІpQA.z!NtzAD]qb}appppppp!RVpQł`\`VpMrMr%bʂb*1!P;@<9 @a*aaVTeQ/f0f`Ms'@P Ap~7 P $bȐ2Te~0,bp$ҁ.|~a(҉>NrJV^ѿP8&@f 0.pN0@(DʚHPb`iib**}5(*.H! fa 0ۡPQ3ݒdh^ ZN,[0K"~⟼MVтp<`:ٲ2<.8aPj@X|0P8[0lc[@{l㜢HzTce?~(ȏ`wlPlX^Te~(+TԎaBHf`pP(ɱ$lЈ"͐0"N0ZXB9xd bH R*&l [D` !j(P@(*efu𐦐X@80_?`U0*a*<0 e"1a@ 2ȟԐHH' >µ"*ʿ<<b6JTV|@!7%Yc?`A-0* *7GATu<w|w%( m#%  A0 "`(x7@H*eĢc(*R&|(q|P@^p 5Ã1wӠ#\G@OYXb|{Pd*# c ($5ݚw0HЅ (R# ahl5U,N`zߌߞ߰ߚ5 -?}cu{[ab8i"@Gb_xlqad@bd`d$Z`TTTW|3d_<zr)<2!|):`da(`$PDlDDd$>`O@2rZpEcy$&8wocdivdtc"pP zcx:eD|oe,cmuld!1᜾ TaL{>|xA8`ڑ,p|@BV@BAW8BPAT`:3pB-BBqfq&` ӀbYM !Z%TV<|40/T&߀!T>b=L|#xԉ(pU4L _ @_ P`(la@(UdPP+0mcɈgaFlУ>jPZb!?i쟦o>olqsubdAAA AA=b@DT~|+yvV|X1CF &1!8vPzA91fP!":D |N@ ɱhAPP@4` آ0V, F 馒T2`9Rdt݅x3y*V|AcAG 㴤r2xA@2}B"rf`)Jl@* ``!`n`d8*HYadp |p$Po0dgmcw8(*xCxc(`vY`@ 0P7yª@ Vs|دꪃ~4j -HwBd!tx#yTĄ<.mp|({@ڲzQAp``}wrͶZ!oH@)PT)}F .1/K9ra h1( (<0 h8: x${`~(Aߨ8(., ,<B!p0ߣ@88/ O Mp@X}|<@0ꀿ2MГAxFYЍȐr@)d!Ⱦ}󃁝`OOO@zѓ@i/0A0~j2.V%8}z T  (D` &8Ä "ɤ}dp2d@$9<@P`*+(D( pT<|g@$B`(vTc8ڰ(|%|e0_*" (} (0pVR`*% 8(oa`[z:|(*: :ܐ8*AH ܐH(E1:::;B@@p zP]zJ: 8B.g27:` W:

NHazT@zQ)AEE`v$~/'&($-g0+=@@ D/^0T`$i P m#'t$|#22!.U(#!%u0"@HrL|c c+#G$'+H9LP0A@'Ġ2ȡj2!H*@z B1P`Ȱ`I ܐ]J RZccfL`L`G`*ًч9B+PC)h3xK@*003lehL`OAL?ԓ0A@!3(3?/D?V?h?z???$_????5DP@HDX"O4OFOXOjO|OOOOOoOO __0_2"nժ DTd~|y@rATef<(%0@<v~0@pV@d vu`P@a(̒ȺK`N*0` P` *`c$`@@dВhz0PA@H"В/RL S!R8qdxt Pc|-M 9:@o`҂G1:⏐'.e"</B:TB& PVZ "Te~}~ ղZA0*TA(F*T<!rwrcrƐ| (* (@_p!0`2 *2,_T>)p8?T(4ȣ$| |F!(|'*P I2:]K< :#2 `(:>4` ((A *bzи*| :0ؠBܯ":bP* :c : 0:C: :)pl::,< r08|* & :l (E#C,X*?#hELV {*|!P(s,\\Xհ!z*,I:lJ,rXl(x): *`pLꔰD`[A`@%adXF fP`B/0(P`GUE pPe`a`0aЏpa`p 4d4pE*& L`p!P` 8(|b0kp_(CD. pf гP`( kpcD$ln*Ukpa`P` Dcp&ppqW6PaAE*@q(o* р&fQ "K _NQK)`bQ7 fP _p"0_PҀXPPZ T T>|f3x׀ Xjq\R!|c;yTP<_`@|l `KIOBP>QK?HR(c (L` hk((lX*b80K>@TV?<|(!p@trqTcVBRd @_l>TT@ ڵP})d̠сaLak`a4ކ!Hzkzsp>Q XvK= P@P`yIH˟@"ؐ`K_p.." m`a$~( !ีP x@VQ*ȹs˿a,}6޹>^n8!`PVz>a> Xc,P@ЗK`Pku$vHp0ru*z;ɿ`s`A@[8" `,r~ h١;*o`" 0n&&$r_?z;Drmh,`sA`Ȑ2/D/K:Fܵ)0] 0]>DCS4UE^1<|ўPbt A`XPK`,? TvvR@|Pzf@%#z99#u>.7bQfPU`}a8]q!rpvRPR=(J6aHdOx `*Є_ @$" (Rv!%*H*aH}b*%S BCL$<@Dp``CP(HP`kP`CЄ8\ӲV H8P`~>_,@ HV@$P!U2jqXqnrpT\pG QrQЈz\xpסhBt>K!R ~rʃ8C`АА@Hc4ʣcC# Dã`2ȡ`!x(.p@!(veL`S`eUj(e``nsgh`c@}a ac/|^a| [a |"re@%en|JE8jѴ@ CD2M̠R8#@uWp`g¥D2RѠ'8JLK r1H9 H0})0@hGh%D2z7GQm* @*h*$PPm(JlpBP*ɨp*J0*EpVGZbkgrnziwb8ph}JX(p`|0ůr@KL:%R":B,pg8ƑBO"z`V]8d0yq8*,П@ *%GQHsb<Q)P*S*\aȀ)ЈНJ%P1ސT@ЌpD`GQ|Gb8*jp$pp`T$`Tc8|f0cALD2 2g̠%O:΀2A(Ф(78!R@*|_pېx@*Bp8*h*b,p*@`` r0(M``l%j !ؠ@J`Uq,MHp,pPp`rg *Rh0^( F($po' `G8 J8d4`A2K<>Ȁ8>Hp(따)ጐ}L<,p!(W8?*0`V @`ȀHP]@8(`G.*0C@*z~p`(],F'p̨@ߞ pP_#`PK.VAQc@nAv@p<<`)3PpFp@xpAT~u t|yAT@PJ@Q@(@x |@1A<BAaPa<0P$1`0 `A@h`~|@PA NAP D `!NA>!K(d<)|y| @8<`BkRP.!T{`j286! PȾe%E%LY:zPXe\|@J"<5`pp!8(pZz_X"d`h`p\P/~bB?á2o!z̠:գ,pp)p`HG*#c|CHA@Ai`X٠ Pנb~BA+:!;8%p r A)I5,ptBy"Ȁ*V"W*s`ep`'۠!< HHȀA\:p*pT( lhn"J!Px WT b@fAD$ɫ k j>D|%3@Kz;xqէ@ p*cנr|Czpcz2!x`@,,p p& (kh(ڠr` <~٠@r+zcz`+x @s(f bdfX("PW(l 0`_jX`+P `"R0`pa*Dc%dS{!R!*Q4^d`od+`bpgUlh@ K( @ 09,k 0k (!2:} 2p>zc@ApzcP!rHICA j@ 'l#HC_tj1r1 Iz *:} $S!"I@pexpHP@c`BzvzRx*f0ihP8P| 8*\-(j8_qZ+hx<Ȱ*p8JHU`G2jkP hAMcL ! Lૠ 0* 4~#XpVAx="p`L@*:N00c`% :(f$(Ir62Tp&`!|Ȍ*N2ؠ'$'J!|<``(@F| 0@rE|`i<"='Tp)(N0w=8H(/@B<$H`CxbД`3_(2C`H̟ޑ2Ul%LP0LcN0LkѠ S *b?0w?PbpT0(t uK#t*L?`QQ /@$\ߜ@61 0ؠA"o|00JN10 a'|(?rJA$J@ >O|CQ<]<#:<Ƥ`Ɍ$@*4а!01@;? Eˑqӑ߁rN0CE`ܐ]`xd`=(c,@;3K*`Яư}&K ῡ>!8K0O;_ y,;.,,A ::<h~>!H ßp\6w.AL4,/A>wHALB_`P:<"ա%|Ђ `$H@D?K,n@\_DTFDB@kXø{` %ELdÙ)>FH@D04=rK&`PZ@DWDN046ӷʓߥ6.*ƒ,.WDFM0<|}@: gDN0N0t<`g!N0T@p`N0@_vN0cv̚`uhRsN0:w~0@Rd0D|`x<8%Rr : ɔvN0\A8t@YҾd N0R0Bw}KDڱ!}ت` DP<CM0Xa$# 8KA@Ar`+r@lprFɤX(d tD,zip,z ):1< (*{' ((-e?а TpUap"Tx0 c$|c #pk(ȃ#0*C(CĀ!::`( z(HPz~002<Av!28V@(\n@vH\"ߺ!>^">0r.>XȄV@NWd }p @(pq1P zcĀ):9I:@x$zv( $xxR!n2! (f::@_:r`zR!~!ڱޱ ^_ xQP`K"}ހK. < q>$K?$RZnKG<.)R d!0"hL"PXPPav`nޱK}N T#~!  pMH!0 " Yo=yD)J$U11x64hP`P!`#;~! )(???0B4pF%N3}Tp ;~!N Ծ1"'==PpPu߀nd["'տ/|?@h"(? r<>Ax@J"Px&",@AOWAj04\BA@!b]'QZa; P_1VAіAan X3FQ RQ@ibUA QNUZQ?@!2@=$TRS9BUAQZQT \$AR?ҹBrV@|_^D}RQJhJ=`A.8dA"EABTEasTdc[o_c$ Kb}BTcD@$%պXEuyqbx\w|ci#FT%aAYKJFݿa!@H;JÀarPH;%@3$$8`@z0@ۡH.K}rհR6}r[3$z(Tf:؀Ah|c0.|c8|iNo <` ]> o tP &p@xwhB"8o@BI։'v0# e@!H%4"8~8<,K62ҏKQbaS1AKO|u,P A;C;,$&pHNl#F,@;?$3HK"89cH5_ 3|FA Q0c0#;$Bw%;,K r6͠T 608 e0, ¥0g B6<@ 0צ $> Td@,T8|^pd(@֪`0TNP} J5u9@;#A04@|8U>03@@uLBZ\Cx,Ԅ$|a@V^`RW 66`p||} B1C\`07@T:&`0\1JT _<|0  %1  fRv|.Th..:@FdTc~|c40b4c`0BZdw|`"4RFQ 40KKaR^8eOn5 N_\|ct8J(NVKj2nE"2>u ўtaNPKe"ъo@A?K2on@= fv@"@T|@,(@0lF"nv@XBA`c¢X$b)FRW¡HBFIU}r| <0pZ 08<4KmN$.Ue.vAzH@₀N ]t`; | {0 ,O1r ҕIR^8^\KWk͞tv0Jb IRgKP).@>Dj!N!b%!t 8F\Qf^P3f#"#3"|.t^v@EsR!*KuaR$P&p")2P|T|U:T~,/pR>T~~v@T,`/P>@BT`LTĨTPd|x@F.@BnAo AD{)gBbpB*nFjp@@#P>MX?nN~"1TXT>| mLjAQp0pX.10F11p11p>8h:0+d`N``0h0d|&4AJ RANA.dTh:@hXaRMKr`FG| \k`FK^0BE.!*"7 ȴ0t@h?;[5֭PAHKTc:|`c|ARyN880,8@s;'0;`"ARИ2*Є0h?5k}|`q8`j,|`(U ~ e>mU~oR=ܾi}  baja@p} `cLpA8`8@`p b`Tg]Tcy:N a:A>NA4BZp|(Zu44pGpzѺ:;GKx.1,-A0A(,MqU1A@ -;qqaqpqv}~O0zRhR0R0:<`7s y:Nr?a Awqp,q?0c?~>n:AfQ:Q8<`5Q%Kw5pq@b(TMV2DwR 8P&ʁz*Pd>,v4vd*Xu@ssKr@ Al:wF|A `cPǐ#PUժnxtp}|S`!<C0a감(pf,p@<?|(@_@L#A|7yj@M ߎڐduR $)#0R$A*o(I֑**1 *2ALcҟ+8$ kM@-%<(FXLcBl0p:@tJ x|!Vl|atzjN*°8C*~|?| (.@(F(N`(vnVtfz2~a|>2Cr%rB 82EKW2 }~ˡ0:@ ՐJ KU^ B!#n"j !L4w>$ڰ~݄,}*B2$.sP~=$}۰~! (Ư|U9aR0\ x^ p6h$"&BJb .~#t!Z"_dAѶU4e ՐĔBеrb`Pf@`B2@>ԑ8@eBr.#*d$u,!$.wP*$?)?<6ؠBKE@; &Ֆ:-Z$A#2Q,`@X !@q  ?(_*ہ@_*ۡHfV "rn"۝ *,_?*{r<鶀K p|ѪP/e貀0 V04KYn"PSѪFdԊ0V%ȶi{|RцXKC Rr!V0Dr~ 5y6C,b>xQewK2 A!a:!>t! R^ ~' ur!@ <b Y"?*R0LFaKcoQPo]n'+ E 5vryPbAbߴx˟_pr$0* w*8 } *= Em`*0$*0* *N loMn"?*L6< R ne2 0B e Yz't! tA,Ă @0K p V08R(,}*%N$"bNp"z_Ђ# j@rN>^)"=(xNh`6XGabx  1$=z&?m=A/$#?#8qJG>;`K 052ђტ|?kȫP^*xjQ:<`QPciኀ0kAN0EҾ00SP`b@\Q!KrQZP:D/8T!RJARbǐrNа2le@pF" ndpRBΰi8{`Ұr80;8p`iNM0KvQ|KuZ"O"q*|p|T<|c 0d|c,H1Kd"bPK\J=y4Pm萲1v]F| hh"bPhQ25P=TP1vZ>cg)B gpKݵKfa{~bǀM(1ʘ@el҂/KFR-䡦fq[KFbPL#‡YӛY!BbL :dLfÈavBAd5 x=(ڐJ|~uIQavj2<,)"%rJ>2ⶲۤ¶}S>]򲣀{(C?2>@À%Ó2kؽŐ9"3+2 _>9JJ!Bqn0h0ȡЁ22CrP%rB (XT`Yq`"0X0\*0`.0d`9~IhM6KuK[v"Z@pPQ‘`\>`%.@P mTM"?<`QO KX%sZHu<`aKWT2ã`G* prF@``r“QQ`$N=$f(!Tp!?*_$UФ`pF"KsV_h_KY"NU0[XЯS WQPW _V9rdE `gV rd͂.o@arJkK_QZknj`;|`ogca@bloqh0}b 2@@:Q@DP 00"0@0D*0H*PLK 1(Q0Ph|`0d*0h*PlK13p|DAAW]3@p]H0xP\(=ơfe0qTޗW$ҖhΏ]2:0p@xB*n2nv` Qj0_t pa&"iTҲQu"᤮PE@*˜Ҿr$ԲU`]r԰="U`}➑—9r<<` e *~|6vz,KSoN`~`~d ap 0_Q@K9_X*`1S |Ҡh|̏ރ9?| JHp[8y҆҃U@\0P8R Òha1֓"\B蕬Z?$_$"U`[}YZ:U`srDB0J2@Pbh&֋eE4r2D1>D!8.f S P8(8b!z*PITr 64y⧠KKѦ^d@u܊JxI2@špX 1ap3KPV?0|p0t*0Ux*P|V->DpA"RqPi` aP]AOKOSrnA߫1N@q$1^L`xQi1 ]×PR)bҗAd"U`S b*dٵA>{a7 VfO]rylfȍ*ܡP0@ ߬ r𹂚1Hۆ}BfprB:PݓkP1y]r܈KMrժr1P`q¾}ҧ` `"be",y;ﭜMdI챵Քٵ&VsIM5/܀NSA*hP 2@آQwx*@PaQQ rJN`Prp|rۣr()pؐAr 1"P(Pp= G@r 08*1*0*PЁԆQ!K#619 XaPX]A`6`H`@px!(*Vr!0U`TQ.apq$ir?y$2]r(*#I( %& $(#)!rR/d/"K (> &r P]r7*"b *>([*g@r01T3b0HG 0? ?n%gڍNSa~EPPxQdAbc]’Q+ JԞPp^a3@)pYbF0pP0 (ȑ"@Ze*+9$qIPQ#w;267Sq(}$rF1)P4"8U`R 2}R#tB]ž# VA6@ *R2'!#>1j8BPjbT:|(.`T8|(T8p0ȥ0`p$4((0H(082z@e *Erz߂Bd r K_D pp'tA`r!r`(iA`8v@4a0c@d`qqڐD!>XqFt0t?@ț``wT% < A` _:E""V .@zFaPa:1a`L :Hb@(* D8!(`b`X2```h`pd2| Nq$pD(D8A [ @ ( (bH* k8cxpiAH"$"4$Ő.f@PjfxqxRn|Zapznp&r},p(.T8p0CqE,H(*|pB(]*"Ґ(֖"H`Hr`x|4ch:Gw0:%Ԑ!P `0Ͱ1tmp4@!,uq@jaR8UjakpA mp_|)k)|-~pAÿzA8KC`,K@/,^`2K-VgT| @TDB>]®!ˎDZ.CAfp ~ gRƻtg"`F#@|yT.l<`@|@~ @X'p`jdfr~`ja| @<A~ f 8$jabV<`8;pИ(`Voќp`8UH@yAY@;8P@0h@E%͡HtQeHqphvђa?2@_2?(P(rp(8*"~ $t?r@|p~ ,u@ЀW 8l@\㤀 Lr>?8*"t@:&H8UИd(_@H(9d& jvҷ ~0f@ &0=R"JA ꦴq$ȆH$e y ]J8 ~!<C0aTd~|@|h LxEp``7q@>ݐ*0!(jar<`o}w&0pa6|@z>ё0 &pA$~g( (+0䊐0ȡ %(T`>d?| 8_@:_TcOTc>qnvT`<|cgTc8p|f]a,ı(5P22~ v!| p@*& `'` 8*`2h:" P H:0*? :(Pt @(00*d p!z@*%xpfh `0#ּ`" t& 2 ɤ 2ez7!" " ):(:0(ixpl :+f t c *02jЀd:+80! 1 :Ԑp@B@W *" @& a_zء؞ (0cTc|0!`:ETc 6|D`8(cܐIc`P *2 G0|d#@,1 9!@z, (z@!12 d& LD3V& V:0@" 1rA)[1LExB011*0Q0cEg(A((ɧ2 1l(1`9|!0fu8LD0Ro%J}D0Bzxp8:+paXA81_*`0,@H^Q<TcW| d dE0>n_Z 0E z1X *wA`P`pwҟ̀bܺކ`;yKM桒p5?$ap"wKae@p9\u2ap_xLvhN`ˡ\pd y͠}X`P,a!\@ bR|c?aA s 8"r`dc 0<euPPTaPdpAPVBq0c0}Q|(Bfy2qr ra qVQzQPQTQ}~,8`@(| p8pA0pQ}] (Er6^apuUrQnqM MoqU6P<|z0]T*P|EqLGYp*,B,FH: 8RࠀOK[PHR@b>ѿ趢3a8<;`8|Y0XCNnK=M6¡D|ހMbrazaaяXvY-a` ț`dʥV"—찁`V@Ѫ\bƁLh|`b@ 4d `Vʁ?_LK].b}<?$zK`d0a8K5IbKC4"qZ.bFA*!tVNP(MVZyhZvbGPb`s* 8ǖ,9&p@БZa7`C,&b<` aK2%t.c Mİ@q@@ʀe݀3NS`>^*K+1!h(+X^8ʀ4vY}zɚ0JmJ*,vQ̍0-dN,.,<`@j኱* N3-b*(a> .M2JPd>5hvdXβP`0";`*7d^!2KU-N 7` й*^` PmѲV`|T}N|U:U#~--@|U#P>"B>T/P`FBt <` AhK/;gQB0P͡X\!XP |}!>| -p0cpDU$>| 84\<A(BF>F8TT<|h:bq0`& 26T,_>T<.jbr4t2,-:pU%1Cʀ0d`dp *b#`7J,r8-:8`:r8U*/zp-1#5}CxR*NNVq8ATB!T, bjF!^%0t0?`|4|@ 5TX(0<|3T`X(jdpTc]~|``r4s?!TD-<&3\v?443@|3!z2{13:kilhngoepdrcsat`v_w]y\z[{Z}X~WVUTRQPONMLKJHGFEDCBA@?>=<<;:98765433210/..-,+**)('&&%$##"!!   !"#$%&''()*+,--./012q@4567789:;]@=>?@@ABCDDEFGHHIJKKLMNNOPQRRSTUUVW~X~X}Y|Z{[z[y\y]x]w^v_v`u`tasbrcrcqdpeoeofngmhmhlikjj19C{?45=60?41*3F;43J4=45=9B_2Y16e11>fGe+?.B9Gt<Z^2=d1qe֘Ry4aa1qAwqpuqhsO442wbBA0qiB2CY34~=?_0mȃCXk.=ag+Z> ٿ*tcE^qa~pp '7>!5e~O(\>@{piUsUU633w1.ƥurbt5rtn @4aqaq=1va?f|9z4Οue=Fm ε.A21A箘®Ĉ}A`~2XbA@5Yco@cc^e>6D@:ae6,ۿ/eN`e>GE|8ߑ0 D*%A Sbvb@#9s]@9s@9s9s@v9sӪu.@vaҙfRtcjaY5?25ϘO}aZBxr/a2338sqaCuܾE )N?q<ܿI$?uu/gUo3455Cd34t8&aq?'԰ `l/y0֕FKya@ˤD1@DP ޭ.0 rdu7?9Svm??HufU}a;~8uF|&}F}֕u.@Rdv~<q37I@hu|up|sX"?"?ſAU"?%L?䗏7<:usE?׹US?pq[ӿ?%~?8p#kE>Z\?qb?ؕÌ.;x4[R?%C!L?Չ/8J?&?" _fǃ;|"/?%ډ~?mfҲ$5Mvu?Ɛuv\?淙 ;{S?%;ކӂ7@%f?b;tz 8@%p?Eじ4@%UekX?pq=s;ƀk@Fb%?4;T@%q~?d ;uo@B?WJir;;A/S@ -Q.? my;@2 @ 훊?-`m;kT߲@%?O-I@i|+?n J};sN\@%?j_;73I;O@7O?󪹋vz;rN@%O?yv"r(@{v?NO@6T?RIdq_{@ pB?-pU);#A@ 6'?[T,Q;֔{@ 6">?O|'PJ@ 6?^??;fؚ{@ 6?xid;e7H@6r}ռ?;F6 @6??@dexw@5pI@?6Ȼ^TĿQ@63?ooRG;;!rJ@6FW?P_N;Wf@6=m?o;`#&ʣ@62O?sK;c]f@6I?P;n @6?AMUf ;z@6 ?`;MG;I[@6ϔc?}sO};#Q@6˹?< ;( i@6Y?;r-"J@6tK? `TBsn*@ 6EmE(?$$;gVyB@"6CFm?\C|;FE@$6?. ;l2M@&6':?!;of-a@(ZbA?oq+;/۬ " /B@Drŀ&[C&B:Q<&^tH  yP 5H gP |6(&A&}&:x ұq x t0 ux p">@"*>Ff;Ͳ !AgPPA*?.B9? Pkilhnfoepdrbsat`v^w]y[zZ{Y}X~WVTSRPPOMLKJIHGFEDCBA@?>=<;:988655432100/.-,++*)(''&%%##"!!   t0!"#$%&`0()*+,--./012334567789:;<<=>?@@ABCDDEFGHHIJKKLMNNOPQRRSTUUVW~X}X}Y{Zz[y[y\x]w]w^v_u`t`tasbrcqcqdpeoeofngmhlhlikjj@ I>C@\wNM6]@wÈR@S]?ǐZ1"@74/@n~U@ wR@8yB;? >a@!,5P r)b&+0]נ(!#ok/9[>Wp<_Xa@/}f]lirtU좝'5m |޼? '`Q_aa?xeר0$% /xDE q< 9@TP?hU?>,9?B}}?c!G)PPBm@;A3,z7Q-A 2:ěTu~T@8w<@4@ȇQ޶xRU$ :@9Ms>Pf@s+ '@=E1GL@5:@إpͯ^'_Lk_?K7ѿC7]ւ?JsϿflk9?AU *?wa?gd@es wXkBSo]7BYG~*oog+mW=9gOF;8e? 6"?$9hUV"?a:i;T~MdO6[`"eAU#R?A*< |0*C  *QU5A>V;avdC$ZBRgV'l#9] UOkIxߌ>`:j/1` 3Ox$S)>!:Ğ8aW޽8Qn:F_J@CTP^Jiƞn3;n=CEg9rS=FHH:|<8jx9dP? %Nl?*YT?~[)5?e _ ?rJ;*? uwg 5?ex?𻝁SsCR|;i-?e'?״8L?"&<O_PM~?eC?1,^; ]?4 |qi?e?OϨ#a[?L.v;Ïa?ew?/)»ZMpkߞ!ؾ?e/6?Rޝ;N?W{߶?e x?N>\~?<óI;|1!?e4?͹_;U? 0,A;Uu?ea?Ϫհr8˂?Tq;PC d&?e ?Ui,?#t?e ?}dY;IJ6K?!OuA;)(-3?U?L̻pC-Ps?å;9.@?e?ӭVş ?s>S+-?e9?Ԡ FQE?JK c;t:? $?Ց̻AT? I;OcJN??9ᗻih<m?>UxvntlH?eP?qU~;JX?Ʒ뗶;ܣ%F-?el?^zmW;Pv_xA?/X!*e,?e@?Jk,;JK?e?=;J~?e^?4U; :U?1z _]ʛ?E\??_+;دXRZ?Jc;.۵] ?e\T?'n]ș?[$MFq?e?LF#ܻ[?Q;T膫? & ?ޮtmo;ҷߤ?(R m;&.? %FQ? h;YҺ?0ߢ;S(z?t?6)9H;ϯG?W ;؜ys?@F4?l;%'?U:@Ȼ s?t?Ļh;M0#?A_;S7?-?|_T;ch-4?̵&1|׸?ᱨ?428;ɠ|?Cr^U;ăSof?0?P~qW|?=}Nxn"?tn?IS;B4?hX2e7?? TVܶ_&?_;C ? %E?YtV_f;Ne+?Zg t;*P?d%; U`|? w5;P[v? I?Nqճd}M_?Z]͐һ??FeR;c5@?iqZ;@+?t4?cR;i?1o&X;֜8N.@?WV?q-;L^?~^*N?tF?G;f:\?i%h;Fͺ߽C?.H?,C;cpB?og@)?t" ?戊N,27O"?渘\sT?>?|*;AS?]Yۭ*u?Ej+߻X>>(BI;I$?X>mՎ;=L˸>W/:T[l>#l:O 쿆?"IzJw@qS<*aF"p ^v<|lc [v?B ݻ$>@%ERbт#x-?OɻsOF@"6v:u<2E !w?w7h%UN@I;;@u??uu;$@Ai܍<zI*Mp>?*;6 T@d-?;G؀ͣ+ $?8 *;9gX@ ]l:SG2?I\;>6@.ͧ7v(ۃ%{ר?]׻jPknM䨣f?t=ô6/@<E/!R˲%)x?Ώ:f@ū5$gPc!?WW;e!E@T2;⿗¨,5?iS @ g'<K_C:?}x* ;!oy@ 1Ҽh,nk?Ӕ3kr,@ &]J d#?ԭq^b»U:8@_?ʃ ca?ɠ];Κ<;=@:u1;6H~?exR)?ZP;yjBD@YH&6R; c? KFY܃@KO(T;u"ˋ2Ғ?1-EVE;v@Rۿ75BZ55x?Zp2?'O_ @muJ㣄R!w?; }?@t;Կmq?ܹ&;Ⱥnp@ ױiKΫU\+qt?I5&ƥݵ,@ uwXR-L[ҡF?)ڴ{oNM@nr];颈," ?4a=A.U=?D~­J&>?ր!;f Bt?hX D݃5ԃPr/?{O\1dC?I}߱h;Av?"Ő;<"#lE?:p ?͘\Ӡ:W,?:v茻8dP+^]?{f=;҃dl?Go|˝A7 <?,;f+?ado; \"?CӢ߻T(?v.jýI4i?t.h?,HJ29F?Ʋ8KI;I.g ?s/4Y;ݭׄ|?0lrg?t??F-;9u'?|-;ȿR~(%?j<})~?6:;i7hL?-;7-?I I.ӿ2?BaX;iy7?۾n;y~9ԏ ?ϣaI*=x?,劧;hV  ?Gv}?Eo<8N7IW?Q&o_?"CԿ( q$eZ?_1u.sv?FNUޯWgd:?f;@PO3?<e&?f!TD-@ "` `o?.B9B-+ܛ@f3Ώ~="CP!"_A! ddd!6 !"#$%&'()*+,-/0123456789:;<=>?@ABDEFGHIJKLMNOQRSTUVWXY[\]^_`abdefghiklmnoqrstuwxyz{}~!Dd!_c?" "ó#@iedAðj04d''(((X((((() )P)))** *T**xhÜŸ ʨʬ0x\@ӰԜDۀܨެ`D"i߶@ 689   ILLMRxSSYP88##"6jO$p$%%|&p')+ ./13p58X:<8<=d>>@4ADF\HJMDO!T߷h̘Hpؙ8LXp"Di5O_`_aaaabbbXcx4XHIpdVg0\pD0+8,$,6660`O-p02:>BEgpj#l#mpo0pP#hbphq q("q0"xbqPdr ps0s8s`sst"t8bt@udu(u0"u@uP5# "6u6udv["wx8@x(xѱy y8yPy(yy)Pzx`z{{,X,`{,#ñfUdpd'ΦdU!,7$dDF@_FJ@@;4FBA5ICZ8@MathLibGlobalsexpTabl_elogELDLtanatpi_FE_DFL_ENVasinlacosl2lhlhlhhlfrllderfclgammalremainderquolnextaft&fdimlfmax>reionlblscalblhypotltrunclfloorlceillrint/arbyuroundlfabspysigGutormodflnxp2mY1QQ10Q2plpowlsqrtlannuitynum2GdecfQs&t6rx-lx80dlLoi__fpcsifydcaddcsubcmulcdivx}ccsquareccar]grtccichhccepwrycxjieyc2chcconjcGomp fAzextfeget%raise:%s'tes& ."J$!nvfehP()_!update^!;?D___isnord!?finite"!nKf0fc %"##an< bitf]c''$&PS!0dr 'omx)ftycW&dosLdT͡( 0!@'(.@8@? A@D@F*@K@N0U0Y0]0a@e@j@l@s(y*@@ ,(@0  @0@ @i~@&  @p I@"@"B2Y B@( eN  @@@@@!L@D@?@L t@Pɂ@t Q l@!@ 9|2P9Q9@ފ@@2P j@z@%@ U@j@(2P@U@H@@x@߾ w@V @,@~ <&Pe@\@P@>)dR Q2P@TR@ S( R2P>P@@QPA+h@w ==2P=@>P@v@P@j@@D:b P ؊@6@| Nd t@dP|2P 6) @Z2P1҂@)@YPQW \8@@8@Ů@@+f`+@X@p@*@ab:PP@@@Nb %0@ @ڊ@dP4~@< @n*@O@@,@1``@ PT*`@p@Q.@>!2 _k.JrYPpͨJq[Op4Jr/JrxphJrPpVBp3L*rhFpJrxpgr-UFPrϖprUFprFpȐrFpgr1HrpqJ# @Ҡ@`?G`9Jjp FpH`B@4@`JIn!aceJFDisposePtrMemErrorSetVSizeGetNodeAddressmCurrentPro9cyInf!!P2CSWC2}PFSDel Rename}HnVolNnTrapu0ltMakeFSSpecsolveAliasFilePB}atSyncc2psWp2c!PBHOpenRF " $)$ClS)%Crez "FqHcX#"FCB &PBcEO(#NewH  VO$_!PosBlo?ckMove<"HFSRea dWr,0m"{#mDiD1ItemInsetReSct3 tL 1jFrR1"c85c&ort!#ShowWn0owbl J4Modal?4O?554*TextEqualing itOGraf2J3s2FontgDeGbugU&_&e1 1SysBJ k>TickC01condsToDj1cJ"AToDtm:lurcus]Rase/FHL "Ainum2declT fAg@2c@lsE_:Env__Sig@errno0ndAlone_iob_lastbuf_StdDevsMacOS]__C_phE@NoMore~5_exit_tus_BogusA__p_CTypeD_yd_DBL_EPSIwLONBMAX S?IN_FLTVQQ(RPLY8RQESP_ _ egoryR@_PublSic^AM@y@aNumericx{Q^A{Q_SA_VQcQID__ab80raise_fsFAcP<"P!P"PIoctl_coUcoScoRcoScoSsyWreIOEBySsmyRsySsySBabsasct_@Pssertp0'0oif`lbinhexbsearchcal cʮ!cC@r@Tbisalc@a@iscntrlisdigitisgh_islowPsabvPunT`ssp@_isuppaxdR`iitodbk`޹adiffUadivlpf`sclush_filAflsAx twr_tchk_@s \ 6qetv@f@orfeoffgetcTqRTqsfputsaqfqpndiopfo2 fd{rre{r pe5ifabfvteq=cpadfw!BpekBq]qtellUqUqharZqid.UpwgmUalO` aS0onvrUbbKadVm|bpeJ }amemccpyUpID3mk p$_@mblenmbtowcwctombmbs7sF=s Kr`Vssqqpfpwqsf80sr em ܃0rewK0sc/anffsTheR@p3Pa rsCp^`3 scfv col1r tok 1`1xfrmsys Uatmpؐq.unUqPLRPLatFhmrFmpFpyFT2FnKn[ncpbrkFRspm h(py HPX`hpy_#Q™_6olWdere@kGBjd_2PGZtIEtsOignap80_Nhr_&_PTol`ox@AvaipC@R@?{q rqriQDoPbaAl^`D`bP&b?_C__Up@#r_adAJO71___growTM_2Poc`3I0v1Ou dir v@IO)ppN0_RT1UpenvL @BBRT&b_ jmp@gӰ_uKrBlr`ldu`linkf`f_prnt_/cvtef /d__tr_C bAt3Ky(>0&$2R;FDRJNS,_Rjs>x:RF>R>: nR4FnnRBf i 0 ! 5J ֕ S 3   3H<@=i h: a* KA2 8^=2 NUv_UWf2GZ2D2Ђ F}7\T2tdW66*ӧCv[Ф(#r  PįЖ2ЯvЯ g X X : .p22 a2o nfo "<2,*v2mNЂВv.Z> &6 .vЋ2Ћ z]*ުМ) bFЌ njNм >@q#2N".` * 5g9?:;a?$j2W < i `ЊFm'Bd">vв ӥ %1|v11:Ѭ [8j <8 a_,2пN}3 o(E | o 9n 4Uxe4 DUDGRXl3 2e(4%:DrN3 U0x= 4= Ve$4:K"Dh f)NURXHRXVA" ~DUD8N0N< ŬU#J4"3DN#2} _RP! %Y0R|!H %A"Aޡ|c4H0!@?}N:< Aȣb _SA_DelP{tr֠͢MҠ;P ޣ`5Ab8XLP wHSetSizeҡΡ0a{8֡0:>},8:8J T@.|cs#xL GIDQ 砀{PL|1 ԱQ RI& JΫOʿR$__abortΡS ` ,(+&8@`(NA,|`p|!p@=|p) 0K+P|i9T:|kx| xJ|8.G@N|P@J3@ &>,@`f,|e8 ,pJQ>||=TІh>Rd@@@|9.xdZbbp{8`ֱ`rpsignal2<Ρ * $pâ`c(ы0",|,ԟ 9T:0.,]PߠY@|9|x8pKG9 & ޡ*6_ֺraiseͪ9<`נؿfÀS xϠҥ|cpū?E4@THIrwhT_dfIPfR zK)Pl[xkZ{PU`ҠaDp<֠@<֠xHE5@ᖱ!X AppNameΡB(;dto;w0po ;)pk}&ߑ,|t;,;9J4dc !;0&&8u`FHP05 ;ƐП1@"c09gnvp(0P|00| @@ @h{> (0O˄$W`@Ab p:3pxatexit<ҡTc>CAtg0ҡQ0B|8@@ 6P"t /P׀|@0Ad> __ RaTe: T(|@;0Ρ3|$/3D{,#KYޡtPUQ@&1.6P:Ba` t _DoE@ProqcM`&4f1ep$4ǛA+x ŀ^t/eJaAZa(+Arh@``fJaarQdz00crTX>b~e.lV2/a_1_,¿x4p.t |t@2HQ!~x^0d^`I 0>,w,|8BQ~Np|!.0cBd0&8WBWipeOutMACPGMINFO3a&s!sc!& iaLQ$`5`|1W$H$@o:Restore n$ˈ'uᣠDu8CGt}(Rtrcpy4ҏ˿A8<ΡN.808}K nfr ; |@!N0} HQfr <}(,Ab3~_3M~8!ѻ "C̠@c U?U>O}fr}m!>,ʾ]r 34ۑ4W|QfrD Pr'W_ P RedirectStdIO)b<|}`P|h@"8|+p@qBπ807p8@@:;ӰX. ^cH0H YHG1CQt`@?.R@28B6R+,;/ xpU8`A 0QAh(.n`4>@+_( bp`).nPW{t [<8d;8PH vnP({|<#{So^Rh8 (BQHEeOHAak0,shbZnPHdK51'p& r[$A&EofUclose\!lVp!F+D*/ @(*f0.11nP@!H@xJ% |1iZ)nPBQA"…DZ-%p VS }n Ku50p!HCՆ=b |c0?iSE0rea+J'^jo-\fn;J AtBp80eHGqH "8B<3858DкAfu:4S0\'Br@&RA0yCuA|@@$NHF2,x aIAt@.Akl@qrC`zAF`<2Z3yS8@8B@BLIr@F?SA\GEIBFXľ@z& bf&\0@0:XaRJ_qAb_@Rz_XE\Ԫ_@ŦEf8| $0W:1.txJpѺ#@ u Lazy̠O%///J0b ?"5b *1/UT:?8]PXpgHq -v%C@Ə؁0H>y}։ Cv$>Ib,6 :qʚ`|8f|?iv%G&Xa=ɒ)6 A%iooctl"4P2P9?|wu\1..@S0_O@.~2` _lib_CstrncpypЀ@IV<@ DF0gx@0f09@w@@1'w|H@9 }*K1)4@)  9 F1(w/ *3|8@3h3CA@|Kv"3{0"0{ ;@@^&bK,?0c 0 Z6q?L}}@}pHU |hHtB dDnaddt!B78<@|u0@vqL0!P^ؒ@B v"d/d,d_a8@(Rv`(8>,<`@0c60d06060 ec46042A!,U0U.aTd>dU@    _fsFAAH;ͤTA6E£NA"!~ ! <<0M@0ʠܐ\;@@4s%vޡґ{ }=Kaf<0_ Wƣ>| M8A60@r<@f߭H UrATf?DP" P kZ4:260r@ rA,W>V!. O@LB^,^V DB191!:1ATK8ڼ@PM2 pz0>f vd@)‚9Najޡ@ׂh<@UAP:jґ怘/3< Wj,6C ±18R $ !@\H+zQǬp/7}UY4}ޡ3;@-P@@P⠜| N|Z345| r421V3~s3}5AUHBr20c|T$4vMq8f16@,!r45$WF>dh [XbAva/ 2&v0v{пJDmRBఇ`PԩU,pېP8ߊ<tPEf D H.1v0)0QC@BvBUPPVQ8}TR1U@<TB&RZ[٪a"'بaVdC dҡ7p.ŀCp¡B0|5ZMrBaXqp7padܑE|`0 pÀT ~.,p~^0<a6A^a F``E>ed K]&obEnZ 8QTAX7Z%"sCloAs+fqp pF8cl`NPd\8^!LBBq*q|d*-p,JyKq/|ejp¯^zt&fRRe#aduѨc¡G|qf@4q&qH#2u!ty^0p v-q2u>rӐ^pw汆bWrit`2ϿB-?f/f=qqڠp @,f/fAȈWL&.aA1T V,a G^Р- j\ND&~,^N*GeF2.a,A,T瀯0~^0Tư8`PfHa2||0ЄB f^0hXKƗMjTLPRQ ^0 R֕^AEoÀVbIoctlSH' `L.NY ˣLүP(@Аa.T`D0 8~`0Ж ,xRb@~^G98Pn80THbl hS>pz>pvT@غTTTD.z2ɰ>|0T|] !(l +ж4#`Ұ0n񳱳"admemsetʤT䫊?@0'nuva0nQ}-f\__NumToolboxTrapsRaTq@@c`A-Rf __GetType,T~Au Ra|aa8hBCp<0`кw@4>"`T Availabl`ˣX$v\`>䮁dbÀ2TϞ>;Pp@z;P-'p JBh>V~<`!ɰ|Ð@p`Tp/7a tBN PA |:d>y0rpR|jvЌp`TLptNbc5-0/3!81|3aP3\01hv@$sA0 8u ذ|{0^0||Ū||1ˆxP nT@pLt:|80>^ 80(H `2;`MJQ8{p,  ^0\ P,Ð8` L@138a!$🐊*[`В^ b:/+A%*!RZ _èResolveFilet9s,0!ߐ<:;:| :*xPrͳ> -X9aU  prpt@-8m8p UP(P O 񎱚"@3A@!*a;a;oL@;p::A,2A2t03;}{H|X@:1@8[w90:Bpe(*021>0J43930A3$`@}}H8y|s90!r>[@,q E~;|@-;A=8<1A@ d}1(+U* 0 0?} @10;v100lBphdb@10y~13@U>~WAd"#w K4|h4U~!" !0!~@ @:4C} @:AWh@~XVA!0$@p@p@5p@V#b-p0;x-\3ިpp84lo@` ',; : AYW c$P(# Q!Z0%4=%olde rtesPP/tP;L.̀ ;SKNbz8pD"q >P|Ū| h|(pKP≲z@,HHP@\p!v\Pa,l| 8H~g5>a1;@<[!,Z>pv8W99?p@^pZ Ba8zүP@Make=$d?FSSpecPn$v ,a(048Q!@AD?p;.r02~gp8.^p)~a*!(9@Ta.!A3b:>"@xH%^`{8ې! |>s1)U:eteWc>,|0c(ЅLH~Rr78(A}~ѮsNܮq,(p vЄzrJ  oa]D _s2Path{|~ST>n$;:L ;u)LJR0H@gpKҔ5,5@,gp꺰 jpd3|33?1arr:|aU$(8ڴa3@֑,Hpaߪd d| Xvf^"@|(H_jH~0*;G0ƁFB֑*23@>fl1d1!e8tQdQL2x80ULD|%l| $p| p5t:x>|6^` N rr0 j;]0C|Nad IE=$x̯ޫ]rѲp i$6H Zle~_0Aup]Brqfx¿, ڹ2h,눤0{0l0e0'b@s00^{ @DZTpkhЦB(0@$sy󰒱|ќj |#@tPLstrcm@jP0er 8ׁh dT>0d^Ѷ` y|Pj0@ T>(&^"j|3 ~Q ememch| ( WaXP\P`8T@L8A##4pO&X~8a\80@Tp0ط0Ѷ`8/=\2TP80pTT<@80dP/cTpS {&`4cr`R4f쐅0780"⧆J@ـ6LpyJ@H8Xpm q~`H!~Q|e`` g0dP[`y\TcP`{ A0dpc0pP4p0ц"̆o `jVv0Tfnz/<_ѳ 00Zظmov5l:L6Iptx/|*/N/$r///I/?&?J?n?$???I?"OFOjOLP|4Phr<ڐ@P=f`@88P9bf`HPe`pPyGK8, D`h``BքHiliteDialogButtonކؾQ8sBPb ~8~P@UB~Up PPPU,@9T$T.T}@ Ɓ, r;40yKR;[ϑ`9`9 O9@K,_;@`/`a P{ aaeNb%NNbEa2b% %B`a҂da.` 2b>U:` z`$B`(bEQM~r_e-a0e.OK!6ϐ8p`(a}^`(xH@ϐHpa}a0h~K~rAEV\%ZX}*H|@9p41X})4} p}J0V|p}}EHp PpJpHpFDHD PPP9d` ` R,P`"PxB&Pp[P~pSDd`&l`w&t`x`&|`L`wF`vSFH?``&``Q,iv8H`f`w0faʕ`_ϑFnjG(nA`n`&,pXFV}HZ}4|01X|HxTpp|\pI@@p)hprpNzpLnvpJAтre!rHyɮqp-_{r@rС>@D@HWD P"u&|pQNPKY6P` }(1VR 0>d@ܘP㣍Sȫ6D DoReadW;nP8> PKIޱ7KrxPBT`?,dd<@0`^ƠXSLBʠP6_?U _coFAccessr׍`Closܺub pcJH)` nu"r .֠T|H8T|P# 8f86֠0`iKݢ~`d 3Br6T^sycu ľ/|, Ԁ@R / P/ "eR"+A6e@| ֠1¾:0"\bP^Qoұ,Bw;.! 1_,о_19(Љ|֠!(5/@ fҍ " 01U :}PU*,@)PT+@|0@:U)::Av 9P4|B}@ ⾠ܶɒ#8hG֠}H|P|p)P00A4})ݖjp}) A b0 9 G1(,@/AAPLW<@XA&E֠@T:0P0}8P<ff|@0fg|8|poT.P0vIr06^getIOPortƵ~%2ұ^1b,~ |#񾠁!A=E|` _inisQtab{le3;#|C70g0ѴVKm3lU@,ˀpг@}0aޡ `0aubG_Y_ `reIOY|`dp=(/P, T:ҁ` .|`|b0AX6֠֠֠x֠p֠h֠`J֠XbA֠P%Q0`Q0^1֠( $֠a֠A1r4e2.? _mapOSerr|5P$S*Pj|< upor8Mrd(creat1_8bl},Kydh} Ƒz``|yg*aKMcqޡ|h5f,pǐ8l⬒YƑK}}<| @@8{1H1 p}||P@}i֙斃Cu__growFOileTR(l zW<ұH200z=Pޱ@@@]`u0PPT__LibFunctionUnimplementedy@6bp`}BAkPoinT`@pNYf`p_BogusH1Jpa&@}XJ&hNlVG1A/ #/0A_(1x9|v@P4ZN}94N1x6|?@(}^pN@*0~4Sg/@1;G}2|x0|t,0/9A`A\|03F6.4WG8|8j:$|83G[N9N.}.b09.5L0l2h8``8>_ },*fၳ/ @q@2+nj1+=1YHZ Uhl ?r1| N`qјB~`80|4>5}<u0T:;w0(@/E}@;BAxT|@|\2sPv3L!}0H @PRa6˳? 4 ˦>! 萪8@L1!D1AH92 B;üH,L0;`3vbq 0@`;'|t/INAHA߆DiuZ0>!,$D/@0| |W8 P@ b!`V%HT9Rqu1e 8Da> )u@9'?LJ3@":a^=1A!1@.;340߈0\1-1 10D1JhLT3011)pn5<%{!p/ aRj@0jὰ@@ڢrq0<`4%AB0,ؐ'@p'@(~A4,iT>!N~8rq ~AJpA,@~TA!/Lh|_;R4@12VaA@}Xp1R@,bqA DO Q21 *b,1}3}&a})8}*H3_(1p-oAd-tP8n@ 0<`0I@0 A@0;P|HZqxpazP}3)AP,}=ЦU|h!OH!ڦ$R0@5P0X pP1iH81oM9?0&xwM}(p$Naf16RaZf0eP8@P/GAAמ`P=!#KLr3#n@zA!Hazq;C`!Н!*(Q)~%!|6%rq$F) 1 n!"9^!f!=fuj!Hfz!a~\7K |`3;10[P08||ƫ0t 0~$q;@u0t>jD,h1pb=:}1A&OKd-6.!,:!6!1 xbn11qH16ryrz////!',A(r1!G0VA0!Qq`3k0P;mH0Hp9a83{(#0$Ӎ?FAZD4lT lxAj @||pT}'/HU'hl8i1'08^Q2PgSPM@0,0+q-`ZL`E0qe!^"a2B(8В/K͒G0cT)3&zK508|X%T 6}}P|@@09 B.Ep!rj  8e}4,0}p060<|00,pPy$|ܓV10(;08˜lB!8ܴLtJ3Zp?3&66 Q\AH s|w39ra2"8bdh3(tH bcfu00𢁊Ԧ.4`300& 6򝂸ijb2!fb(q*1~Dd jaэ|4۬'*6.3Xj|͛63ϪɈ#@pѮ0 Ztȑ0 р#aX60p 3І኱fߤM|| 2ࠦ}6ެ}⼀a@ˡ80!P|xGG"C_doprnpx!Aaځڡ!AaہۡߐA^Lq,p|;!*0!P8`p| @k@;!KMһ8bz@nz\0όA@Q>QzX}_ ALfclosea;b<;񾘀j|(@r|`3@DH{P(&౱/CZP;p3{bF£A/Ro>Q?QP_k`P|w/p`]| (@0`@ǝ/P| @\n8P4k,"(|! OpP n1.XBzh? ,X6flush^jFr<<1|@v@0Kr0>R ` __cleanup]// ___all[?HA0@j roq~hŔ0Ky8pWR$| g@PߢL1 *To.1|X088fL00Ѷ`MS0?T>ZUA 01B*|Kϩ ^,*<8!1$AN~50q5<1%`A8~06D|(E.0 1.0V0I:1f0B`!`A0_findbuCpǁq!jp0T>rJ1ࠋHs A^1P B1Tk>B @1D |0@@0렂4p/Q`)A B@FB1B &B!1K} JңP;NV'@0eRT!0:AJ1AT<^(ATBBCB]@*dfilB;C0BĿR,B`/`r,vT}}>p`Z (@0ݤ&Ad8`꡻D%@-,`9꡺\0T0p4a8e%҃@/Qy$RSp{60*e0J`"`!Lb @,A.Dp~`q`XR60a"4J`C47qN`Bp60KeVLQcr*`*̀alsdD00{PpD/J` ~Qj r;ѳnQ*,Dž Q:18Ӏ|(m M_{88мܠl"{q|BYPY0ГP60,`Br8Фn8Vq|t"BӠ__~@xuJ"`zրrT4"i(Q*A`aJaa"p@Jb|@pc p+4z 6`YBq|e:80icA.,w_rtchk@L`l|(Q 6Ρ$C(@L,~@@syncdOv 8t0p:1@2ڕu8set@>$@.}&#ja;CF$ 0A PknBK7|`qMn<e~@p#xo|PCܣK֠$r dh} bEcKCO0vcjrHK#9r !@*$mem7cpy[Enhr[bPKށTB˻Ir(Oj(arahlpt )2NԓP7@DfQ|5@z0t~D@)60zl"p608h8$@!atW@cQՊj!ina Rpz 0;rp.sT{|`q%P r!Bуwdǀ6z|c,^0CtFG0ǐ0|`m|th8WK"|rhL`P?2J?`",L`|P0;|604lr!|ףp|e|c6z‘Kbg@ Bbp|FߌyUfread5NARMs @T&q'؀Wb@c[q8@0@RIV"p4FA,zH"Fr)rŁ!8wApDA | D!1\&5B;}@A/4p>$Wt?a F]ql(;h:`1呿t|kt1pPF;:@>@@`CT"X} Py8У|};t ;W@^ǐ|^0$йcԆ@߁8hp8}9|@88Kua'Lw?}HQJ#p,T@8Α99|H1b'A_ppvH}[(1)} C|h8CfwritP4#B"!><;da<91}nQ`0/N0?/Izn`@: a@9~bA8APϨZ89>9_i~: V |c70ЈW |t~P!|0VA?XN6"Ax:_cvt\8 pnQ9yI898\bp#ΰ:<e?#7.5\610`*bpuB?T>@fi2:X pL 9 :1`~0욡0PT(0g`}*u?&0PP8p0 @0(22(0$@AzxNNtrn0d?$;0hONlONpO;||o&T#`C `hp#xCcڃڣ#CcۃۣrŶZ|| +P/P3P;P?PʪCPGPKPOPʪSPWP[P_P˪cPgPkPoP˪sPwP{PȃPP|#yL簿"8~370&qK̂'b[p|u`0e~,ax0$eӻQ&sEIMӣ$}badPt<| @(젾1_ZЈΑ0cTd:0doTc`~!a,T:N|e0.f0]qt$rddp1.b`Fp0gZRڀU FpUڀ2 ~J8 ?ȵmalloc!;C,0dTbWY:>dj`U6^`UZN@0h*$,W4/0 NNqpRq{.q~p8, pZHr6Fr 3;028z\0Wo:|drџ#P;ރ0A8|{.&@02(Zq*0U,نe!E$@`BSN@Z>r.RpCO we| _rM?em|` b00@p`10eKxb`Q/`pdphpwjOxq~2`u0 9%(pҞ}Nq#zp .|!.6:0rep;"< j40#O3ѻԒ(rň~(/`pU1 /p0]O10 ,Β|0Kt|00Wo~e0<{ pKo&af|z!KqR!3a?|@@hpOIюtIּ~Z|08|.g1z!o:Pq,tB;< 8>a"z!^`0Kz(k0}p\/2PWē>qpDFNqW>|ׄt^p &0c 7a|@V 0z[@tFbinhex0O \`p|cxTfKvabsQ "Z0l&8T:V^||`p&@wLTư@jաZ&c.eNLϽv|asctiqm "r2aX.\n12`v1:0tuKqq8uH __asse?rtprin3V[tQk8!|ht8?`@  cW@}@@A,+/w-b @p`(nqVd` >n9AX^aP |d90о0T80s| 3 Sp|dx>A|`z&qatoi$6HZl~lA;z\ C|)ž@(u8|@60<8{aLT!8|8s]9gT|||!ߛ 84aoRG R8zBz`}@! 6/@bsearcSZ3b.W0B\BW00[0 0 ,BKRr!0.A# @~ߐfcn9`5r߳{$cpkAKT2+ |Fcler`=W2n1|X08`za7Ш`2|p|߄T0 D@1W$ BаVS` >"PT: |(.G8C&P#(P0pM8w*0qɂ/F pal /KTc>&|T~6/Fisalnum?1?9pha?0?7cntr Oz<"O7digi FMbpZOF1grapFOyO7lowea~OBWOGOy _7punc*_28B_7spac̮f_z_7uppOC0_4i{sxvD(p1sci0?Fto:enapz0 pJtoUnApZ0ryoooEF<C0aи`!p(!p (B"0diff|+|| =`;|EB*"y Ot fU orNtA_gufeqoZ)"40Կ" /BKܹr/X?ILfgetc2;hU&78`Ӡ~Dpo"Cjx*!pv| —*@03{ЯAH΀n$r<"Π0A0 :bž+JrKM&|uaJ6ftella^o7}&(07;# @o4,,K&o707n&~8l oȀ|h}|c@x8[ 8hi".?`|8N}@}(H(i |@4dh} <|8y6KE&'A6R1M|WCtsҿ!.:pv;N0[0c0@Yz$p[zzRKݭ(N; ylSE$pmR2~:@8~ٟ38h ;p 1@||8|W:6|8}f&(A\ΡnF+g B  à lppu^j;<űi"sb,<&3b0n-ls0q#ϐE>` gN;0*} H(DV:@ǀJ0TNXR8| @}A@ny&31HzјN1G $y*6;pؠv;38梸 :|+(D:20808y e$3>ٍFȃЀ^둛hhv$|0_7|?(^бO|0ў v7,~ձ`Α?Р'*pUz· t֌A([T[>f0p.I|@~0(6`FVw;0XmemccpС!֔>XqAt8O8/\!p8\dFhl.0K&X8p|!7 L8_2t^&Rp8x9Ҡ1|#p&8!v0Q#4uOTf>"a0'0p_3pjK%&8o8Pp \5T>cU~K;@`4p,| ^scp@|! ,@,KЃg;ʀ|20 |.;gDpc|/t<`8߄ 00|80)Dp0A/琶 nT<I F̠L8ߠ TƀPK^/Fb"!O.T/KIߠ/?0*0ǛANseekz@jKQ ,^sb1/rѧ:<*?nApqvB{zd+|l`sa8*AZg@ D~w~Xdgm0sDp`p|cxT|"_0dlabf`V_Xd localeconvV^rE Qvă1|Ī1@|Ū|0P|1*|Rb"Q3B|Qz3b|@8FTKɳ000|0KV1"A|c4,⦁QF /^a|~@ʀ|@/'p(T5(h @H9 )6`86}KU :}hXUk8a|kؐ~Zna8h'p(@|~/`|1 Ug>8|;T@.|H|XTp@@|x`@|0|7ab:|8T86q|ga漼7@и/!t IDst2ޡ^KY:b|t€XvjAr@~Cbpuaƀ|xt t0|pz @&tizz̚<"ARB vbJp t?mktemް81<??0W??<"q>dy5AK"AAj K`"A?pacces2̐ tP0|.`N 3>FߠQ0lҡ<|40> @ <*a 5B @ D A0F&`<|8|pTPP(0X4T<| T4p8 >,p,AP80ah Pj0cV@|p|a VBTW:&@VD&@VF&AVH nܢ Tc.P A``J[0fhd%ADUh\`:D\ JO Á?T^btBapZn'!z[ 8mblen,/a@ UqnG!Ddoxs` UH€btowc|4/fܪ@w{ U8wctomb(Й(wn830w@|A(8p1ht|5Vp{|e4mbs++[`X1qoP/2HhXd0`,|g  Ŗ!z=xR+#¢c} cyS4~_$perro02>Nzz,tKQ,|@א85D!Ny"A"m2_ 8qn|m3̰A~_|x@dˆQ{`; n|@|H8@ 8-;~۰~n3&;u!3d1nlB"8y̰ V!>8^ ؿ||(Ars e;8}(I;T hxp"W. D/qs150j050Of`0@00@ϐqs?exc0L4_n\0`0'`V2j10ؠ~DMqstĎ0܎~vsranduQ<AƀP0Nm|00{9ðT~? Bb8d78\ / ,remove8WRHK[ jO@BnameuqKM⏐r_BADpd|! T`2{T:n.Q0rewiJÃb\҂]`aXpTnXvtzd~}hl0=OxIT@caCnf͇U{Pn\]QQSն__5OLfRLnU|rb|jUz~Uvրxր@ր<JKQmցr`L!*:8|>9sRҁ}&s:# :W::1:j599}ṵu2T߄>%| 3( @Gt[prtxFנ8[pK Td>Fq:C̰|`Trp>q34k~qrpe>ws Ksq~qqVpuq188pHs uذ "} * נ2+*ptBq;* tZq9\n |qA p8o:} 0!,*;Xvp;0|wtVp; q0ul04נW&8| |0| |03&.qJA, qʀPw?t:@0w^(;@A ¢d.j|iD,,sf4`$61|Y!;`pwsR2;v{]Rrslj^VCdA`-w|aw@dcu@H,33x3[390p0r֑:4d0~quRƑVD~ jZ v _o@ ]uA @AaAxĿָeB4qt&d$BpuP`b!K!-MqF8f^N.q4Td]~`8g, <5KmfL],-|a0* /f&K.q3Aׂ`RN-AW$Z HgLg]b!8|8|cA>y.qf1fKn0a@V _@;fxy-^Ƒ,+ZTbڢHR͌xyƑrxʀiBppZ,_00yX"!;#d^;c -nXFxNAGVŀ^V`}Z |`! *Q:P &P0zr`7A&PW|c|o|ֲ|7? 30K1hFXzweƤxbp2p,}A/hb¢s^ p2P;S N P3L0W~Бf~q`Yь"N1,`80 u}~>Ƒw!8`f0$<0:H"ga:"!3l0R B8"!,A ~`<6"OVl¥I*'@~l`%d'Ж'@`LD$xr8Jނۀ£ `A}@,ʀn0p, V50āU~%NfKԉ6h-WnlRD@`sO`Pf#>nN8,(((%o`o,Km`A* ~* 960T|<`RW"C'@C?_doQYPm/W@RQP| |@z}00/@@0f10gaT40.KFhungetwpp 譐; 0L0 Ȭ{5DO,Kd!*f@ş"f@$(P#@)R@!@A%n@&@'Q@+;VRXMakeTheLocaleStringYPea;C0Vd;gKŠ 3P~6#NٟHOp,PUPRRP.(W/*NP:UbA^ШAt,/APDd,AH"`X`RXzV\U`P*a@.aPS{T`@PX0P XQXBPU_S2fE@ParsO|u,C12|~#|t;e(Convert@EaAEM:A :o|e5P8p00SRN:!`A``d @pRpa@ppN:a oi|f@IUPack?ageInfo iJaAN`t,g`8K5|~L2-:yb`P|:H61~PbAp0 Xb20ׄ W $ } /*U)*(***,*+*-*.c诓JA9-@1R@#U%p|1)?BJ!jr(1v9|e p0  $)(* ,+!b@-"a.#ģ0/FX0cha @Money|ss5Exsx5Dwv0 p3dpeq-Rdv4pߔ1016H00`Num/eric|rA|Ѕ#A+Dp^U0ڳQ2aa @ gVe|d` 2 b!@P&PhaPI`Y>u)bA:0 V4F5NZf9xhZ۠1p|ߐ~90^<Uf8}J`81k8w"*/|0VQ|p!?|(dpvRP0.QXBvZj1@RvQZ5f|e`Tim{rq0*no2^CTyp{t跤Collat{s;c>(iVT:pA|d(.|c0|iLCaKs1Ċ͔=K{QLUqlUa\yHEQQA50؊=}A Q1jf(f< setlBAd>O,N,MB,KA@@H=^!PHP@Qj7$stcrc7DJa0Pv08$dz P(0~00apNa>R|rY,A8`;>V0ϐ\IUtohz˰![/^~>0+&qWY= _gU( @E2"1ڒy0/Δ>'|i,Π0( ,0 0(7Kǐ0c 3Nx/K}ېR, 0g9Yp0h8`ǐN<4!,UP}P@0iY|1hoΓ='$ߠ, c, 3E1BV^7rzКƫ֯7Γezڑ lPpQus7Jj;´%ڑ/K,>Xj$ GetTheD:ꦒݴ,`9 x pǐ0 *SY0Kb^b0NlqPɀ"w0fhKrJNtqNHpY(ɢܪEQ"6S0)ɦRR0}ѐ~Rې` "cYbt~EScjzErv1t,* r &q U #>,%N(r0N|frШQ*B"4ώJ*BRZ8ob00RbtN&R@u @8b<2Rn0 00,/ ^p tokr8},u|X O_@_ƐqP8fTspn10B@z|`0e4~!A#Ȯ0e`fpbrA;E^ y.;P!/$۠;_;<}~;= ؤ_H0 |t!| 8{@ 8|A}膠-/+t9~!@ ~0/OD;@ Wd xXi pD3N0!px X)Td>| Tv!0A AKeBz|;| |0T; t Ȉ^~ vlЬ,S/```_Nvx2\ |(H$1)qS`{"n Wc(,:QBT$8@X 3Q@בBdZwhQZRҁ<;P3 `0*j†$}#-4b1)XjtﳳÞ1ŸԚ|Z`UD? )(8>8gPxW0Z^bJ즨vtk*P ߐaC jptZ8S8@܀j0 ЋAZ|@7` 4P v~z ^Ȱ.j?nlv 格kH`[Z`KКAx^TT0Fhn!p@  *oѣpGp|4j!vn.0Cd_8s"D00!6.`"sڔX?0!k A| 0p([PsP!@^(4dmem6|@0$+P|u6*V1vR(^8jpbw@`@Bْ>pr?^RtRh01)Bⰹ9s`DL2t|T0+Ȍu*lD0 茳2@/ BRqZt;K8Kbǡ@NKK`pXpLtPzsH _c2pƳRq^pZpHbHKSd]pH`@azS(StringIki_H0` z`~onn, cOuBC/LRqHs ev`Pz`m>v`T4V!.0 p?,wdbx֐T`,PQ8B10f%z`ۓ0`1qK }bP+`AM{yr6oHiR __initStdCLibbqqah qne20sc"rт,pKprKVuQ֐K탫soglqtGermuQ`a08|@:0eProcdev:nullrfreopen didƒreturn stdin esƒǑhave descrwipt0w@%+=1Lerr%q=2Warn`_! Wrigϑtheґsole} )appli~i is NOT supported! 1lert! Rea"?g from You may type below: 9 3IB5J PgSy0y0pܲݱ\Z׳ІBЇ1QOa 8@LB%?dK]oϣǫBad=LazypO()SUnimpleme}n funcE: %sBogwus!5-+P0123456789ABCDEFabcdef0x0XINFNAN(000W $<hp = p*=ݰa@S_r!py5Igrnalaޒab -- Corrupɐege:FreeList @ +^pǑemptyAttϑe an o?dd poi& uߐahcxbߐkreRSunMonTِWedThuFriSA@JanFebMar}ryyJWJulAugSepOctNovDec%.w3s %3d2d: %d rRFu; L ## AssFtYd.UdZ^sbnfr0jnurrwuar(ebr=zch}ileu{tb erorpp AM PM, QGHiJKLMNoPQRSTUVWXYZ@!%$_ghijkLmnopqPuvwxyzZknown orE 0 - NoPcissdenicsuch yfdirew?)resourc~zsys~rviQ/O)k|!A9 >}(H_QU%>~uz~|}U|`M0;8bxv!r!f! UK>*UJD k;wx8d[x8Mм!iH@X0}JL0/|TL x|TL x!aJA@|81QG9QJ0( |4|*x\ >}@| *x 0|$0 0.1iʇ $88LL`h||!g ZCddtt!6$s3`t!,@"`Gf=H aD]@FC^p23F.U64MaxSFin@Add@)@@Subtract@5E&Absolute@NegaQBMultiplyA`D@?Divide@uC2Ae`D`2B`uc rb{a H`( '`?( `! &`f`q`Ψ`pPV~pmhbvmTspeK@bmTpYK8bmUb?K(bLK%0bKcKc%mb#p?p 2Kc%K rQ1*mb)mrmbmbmroP[qT\pmb^mXbgm`b`YbsbmUbmbmX\p b KspcS[qj) 2[qSmbqK+@[qz[qmbmb|+mbKrKrkc PX MatIhP+k.ذ;t>ͳa8_|p+? |!|fx`l|+x8?A|`xT?|cp8!!|_qQц8őʐΟ48 őʐMP ʐ RdvHȒ2ɠ;|4<` Π}ү2DEΠ9"4F#yő+fx +ο +m϶Ȣ B+-2DVȢ jСrτϖȢ jЭ0ϼeh%:Lہ{ЀPLJNa: H!TД(lа4tzд"?@A`k0f$pr4?4 DAJF~PerfaceCallUniversalProcCursorDeviceMoveToFlushButtonsDow-nUpO@AcceleratioTimutsPerIncNextfwvDisp7osersrk0k0,c{#R)a6(R+F5 \p/(c2-fajcFAuv-p*1qReAurs{tua0R𮁰XNsƏ<\p|ޏ!v20J2<րCV^81Qcx|cDKֻ;x& H0  /-C0q>/P//(* 6$`y/////)&ؕ `??&= 9K?]?o? /?|?{3H.???|2@E?H`9%|uA}}lXlN@u@}lZ}c[x!9E, M`@8c|@u㘤GA99d@JGzEk`^BEOuDCn@(E@:n@CjuKB8{@8c5!8%kG{@^Bd@|ƨ@d@1n@8|P:Pt,:@9*|@R|@u}Rp9JBBQ|H|cJ:RDR}*@R@B{@@,n@ 9'9GgAda^OpOMOKLE?P`tNQ|0VP(QaP$b9fA"QT-R(YVP 8`ޒ%%9|Go?=)zѓ߼Sٻ`oװ|~`a#_xH*1z,Y6QVPd(pP?;8([v`~p| Aa$"p&p*t~ @RжR}U)>}#KxPm(SzmT`ppppp`r vo+eH(QzѺm%Л$#|3x$S,(DR|x P0H+]&uTrq>mp-$ | Mq4%IPDR(&|Q3x@-*BgL%}&a!@|t+xq|ix~abQx)P88K|}xAwph}`hKY%a; -(P@ ;Φ_xx :{;%alR^8l i#h8pKqha,[VPhl,{pa{},;Hthrp8t$$9APL; @R=:A8ޖ(f;8!%BǐeqсۀbӀ}w f$p|+xq|a|qp~a;HK|9l`PH'93(r'iz`ZlcA:&5ڥ,Ll^?s2Jb'p8\Ó=8aK%dF$zRJZÑ!f+/cF*`ӄeI`#x<A;>ab~e\"PF &zҟ`t Bq?r&t-,ϣ Ts|jgyӀnde|+x?VPF#p<|]8@ zсGp `@VQ3"R#pdiwnϔ+3P8<dP8,?$4i%,CVQ}9=_|@0>Ҧ+x̀`VӬSa*Qsn)@H>҅8@pFBMBat q@~86PUiߕթ""QQpbȈڄ`|8@'\a07 a/H!͌ Z_<ŖDpĜpx BA ,qH[}NAeRJnjp*!䠚9@DpA8~q};Kx}Cx|;!x"p2GiAaA[Ɉt4梏Exfp2Rj&1j `B6*ONr\OT<ŢrK|;\A?xA+"xP"ں@/мar2rHX^`fPvrSp-(p Hz~-.XK|hx};\@@A/h,71۳A j!1j :}?A`ړ,{"` a*|*yKEq&1|0;`W -?*& <>9pKtZjKBJѐC*Ahцh8c.9w: |N_ `RPHbr˃ 2n.}#K߃ϭ˯fϠ8:—Ϭ>ۿ+E`d6 DϬA-5v!=aTtZ&E2D^ 8zAx-▔Wt*ܮ#zr~0 8| " U#s>Z\FDOqOqCQrA|{AxX:2s gf8o}{d@` 8|Qƃa,D q"p :O sБ7p~q|8.Rd!j,~dppK7-_m /$-6/H/Z/sVt瀣D3$S0O@B{2!"wp|#x}=04Lp@~x: }b,l$~ÿx2tJ 6}:L,>(1vx4yjZp08T,pV6EZp0r4(,(3Zp5xTpqt@`Ap:H 1|zx/ @@::#-.,;pZ~x~ȟx~58Q~@rA,A-G@nbpҀp@|hU >*Pl4XR aAH;Dr`H^D0yzbt,tѰ TtDXc ղ$._@Z5$ЊbS xJD0̞a1Por |x;@!DZq~GFQ0Qx(-GH\@ ͂lp )R0:`bd=CKCڪl ƃ 92`bq`i@ aVbCY0c OpBKPqv~@|`52aBB[b~@|c5>TuJPts 2u$|t*t2t4nBp/hɐr ɲvr Q i x4@rPZrJ+r "!wА ~R4Hi0 Yr`k)c B1Fw RVtsGjw @s7ss@z$X>R&Nh &y*h}#4Tc?~Tc>N1R"ތy$,&Qs`x|>lTc?ZBfնaH2 @?(?W>;BEHZd@ N1ﴟ1W(Wn|^pfޫFq>4>xꐽH񊕶a|2 bd0bra2 A >E1yƏ褁`|9 ːHBΰ5L~{! )bt*E9@eRvP*vyP~H()Rr$0оiR"]!P})t .nCP.6Z%~킴9=H!vk0ZhB,pv|HтB}8 @ARb2; vlV,[Rj0!,r{C@-2q|TXB 6"*pr !.={Q;TM*!Zj(M6;B ArAZ,v}|qVwEv2`>~X8;N1j@iX1jd8`ec_start != nilfalsetmp_err =@oErr* Zn@device_typecomp@bleregideatapci,*T-tree/@c (08@HPX`hpx%machromvP vm verstv snd ser procramPtymmu lPpgszkbd hdwrfpu nBP)7:Ge@lt`W)PTPXS`[Sؓ` @jQ`%UD@3XVa%ekXT.B d```U`$`+`9`U@`Z`c`x`U````U```b(@QJBF$@ StdC@memswet@cmpaaaacpy__asPtpri]nblenana{Dr@rSer-QsaCStrCo`r`In@facACallUn qsalPPNewPtrKtCwleaQuSysYsDisposeOqGetOSTrapAddressxqTool~{SM;emPorEqEn@LookuMp~ToIGpp`yCreat~I@pxnt}nypSizCetErIDInimC28QrFpyn&xv rDeleՌ &Sl>ںrS[pchnToPathWx}} uRe&Q}DypMod[LruIDToD,RNodeID EfTovrhxOFWNR_}`$`0-@$`rP5WH@jKO$1 t y~2}֢2uJ7 6&if<,8P`ȊPPPЊPPUP`PƲUSP8ƲPPƲQP`aSQٲ`EP{UP?PG@,;@MbDZfXRI`{PƲU9P0ƲPh`xIa0`PpƲ\PP[U(P(`ƲUnP@cxUnlibXI|@Kurt_(@FgPJoy!peffpwpcQaUb\S@c`lYT`pa _ޡaD`9ѵlT)Sd dSwisAvaila>Pllg~ayForHP|GqGpbeSucpstheRootDOf T\Psg-rruptCountnullEHpvectorT;po`eQueueHeadoTgSIH_sbpa6condayFLeveolDef PedinC-pnqatcherUnAlignpAtomicNIncreme De*C BitO1rrkAnkXov䐄SwapNtgTimeaHfj?TNTGl;obPgUpGqgElapsedRgGqpopnQionChangedgMinAb?solute'tag| qnrpsNuagDenn^To| L@ܢ_( !ޠ$U$ H Z9AH#q YSQ ~D >% @E0^!yFJ#8PP`%ELQYa`Eh`MsR `3@]`@PAܣP%`P`@z!1`#`|BR`0kR`8Rp`C@P+@6Q`+@w`\R`;(` `P_`XTO@`ߖIX4`i`K@O!D3`P`H 0PҸQtabR G`0PX DSL?",x>RbXa{ 5 WYa'@0~ߚdn!!8a8;8H\Aw { b@f@l/ΰ @`H6}vHPH.vH@HuvH0b〃G ! ~@H{ vEA1` HvA8!PG@|}C@N ({C 8`A>AFD@ex`88ٰ.QU.}Fp`>Q8 `σ83~P |+xEBH|xH]PZAA@A1``zR `zP[]X, p@L| ya}(KxIt :pt$ ? Ar#pa;Q avAxIp^Pp7Q| `Px8HXbz@@ 5~ܚaKg .QHZzysqapx@4̶AsWŦ:p, ADI0e2͝Q^S}&FA'rst-w qAAЃ@rP} Cx" t N4P#w2xmB I:a@VVrw} qa09c|ou 8U99k0uE,&;6,P9ED/UJ>>D,R8?T>"vR_9dDX'Q>SNK:p计9|~] lBCo lތt9S Tc>Q@(, c8˔Α0tKԊ>UD>@& .Α9H0:p9*:2>P9d@|bP@ T>|b9$<[9iJTʣ>6:p&JP0T+fϤ}cx}j[xZr]}LS,jRΡQLzQtSΡ2蚲 αI|Z`@B!|Ṵ~,{ 8~Q8¿:p&:Td?k~?|ct"8砆C|#xo 389GN:qk( 0/~}iܠ9cRTc>GmJ|rT,|P}Am(F|jd8M0Res&1@ 4PSvR`:8C,5 }J;v?})WtU)ptp_8jt8İj>|@Tɘ@0q:pq&0q`@q䙑AbDڢʁAѺjZЉ,HQuSBm 2/p@UbtAXPP~_ѓຢh İ௠|8T 刷@NVC砎 c[RNNtT>nwJA@b@R ZAZHQecQ PmZD%zA1@Dq S;;$HO>bAp/S]wMJoa0_b!FDpa;2XRAbOA@;H;aP*;AXo< F@\;@bZAbAN@HpjBƠAS= N@`Phl@PXHNad8p"Fކ_MaX\" "qp-0A!~#p8XO bKqaz|{Ps |#x 8|;xTޜE+PODup 8/pcN09 0!&ߐ (c@8T S@8(AO8@O@ӀA1HMah "b$d<@RO(Ah@30Α0 `LZB Za5bQ10eB] .o0P3O1H-}P"HKiTc>/D'|e{480paKB_4oF圀Jh RGS%ɎxOÐgՏ N hR "0<|+3x hhd́  BSqa8AN%"_U|c2Aq摚B؀|q@q2JfYn0;İ+ 0@.p8ѡ.| 808oOHw4.iɻ#D@فN@|8#4UѡnAfr@&^#| +f |@qT(4}(Iѡ E|@(;xƑK9`ׄ|(ٴ1.p |#x*p$})?&i `&p8~` I*n@2 004$>HL1fuCFF&Co…Bހᐗ @B $ʂ tu:*pRϨ琑T(]4}ilK~dgj R>ညP90pO΢ (p g@Z>Rl㐌 Gk 9ՁB@*TAC(Cxj0;x|( H@|+x qU(Y 0\T(48|z`srCQ3$,;~(},.% BŢ@%BN| 0X6<|$f(0KxABaKvբ.1n1nV !|`qn| `#HY#}Iljă}e $ 0 (,yHh#.ԓ8o@ܲ1A|@KC%Jq^V$Qf, do8-q vÔ z Z౺JFTd: T:}*1COS*Pk Te: 0|(~1T:|(j:AK摓ݘ`OPing (T:2zq| 5,A``@f] 8~< H?fR/0C2VD`S>Rbl\~`` 0P Xix})4}#KFb,Be$[@8D@9E"",~qqM`0@+⟡| PA|@>2 P-o/^RT>p}0}F;^>&T:fqC+=rt4]z)% aB|`4T~T^WB$q0946@BeRrk0PjHg]1z Z4ers<9p4"Tf>~T>|("^g̰`p|d"8\<^gn <a="|cLpc4_LP˱P"P2&S-P2Tq%O8}&!!`Z&0/ `NPTkh /0@d 8p~:0F|+xCq|-0?A([]ΑaU͒a@2Bh|W&8xT&J!Ξ`D[sC8|W@Bp`{ L;E:r8`|rE"q@1l6u^^ |q `(<v|i˖||H}%Hҁ:aJ8cJ!T{&|rD^9A!t`b>i[`Ji&G9 M?p(ܟ&ph$!"k;TzT&(&(gDTg&98pSp49G |H| H@T]@΢9? 9圜5eАPrAׁ<&J 8QGH:bzP8@6nvuxzTiP }C"9 9JTUmFp0=r8i0|0@Tc@iKJ;#`|@[8P<6P|@b|3x!q+x_0"](s|;6ПTzb&;o0aٳd|pp䰛W> W?`&82Tr0 |08|8@<@1|{7&s ?p|p7+("pr"pI~p=,ΰSTc{ rߩxU#B^JtW-*}~6| 7_}2t~,$=U$rASHOb!8πPD H$bᐧLfqbrzzD|8@~|8(rz;(ր (,(fJ@zZ(J;6| LJ z*N@6nјP;_AhrrT>}9|(09BF@, em|bq*aJ#^W Sw`ր d4ށU ?ր0U%ޑcB;0WcWWϱ 颶W߿1`e2BW >rpL9RfTW8޼КT@@t-wp-.`vp^aA,P4CP$sL!ْD* nt"pavgJn|Ô*T?M0|zx;J!W`_ xc/2BkP)0b//]vqs/!`48;@c&DxrH.R;Qq0(`jH0C/i B08`dl* H,mq6U(~Ȟ11b`jln^Alr!@zAnvArA yeK๦@n@#-!J2'@p@B0 2b܀@ qNTUVn>_ž0Q֡2Q "Txwppp8݇<@8Pe$@ /J2S@QH+ xq@}#KAJ5bQb@À0!AOGN^`PSxRAa0H*20aZ22*zXM2eܦ@,`dn@A>,wiء`ox?ƀhrP|ݞ8+x;`bF@P@ Dx49>bk@xpKd;)ɢzX yXk-qX0E |cRB0_o|C`|8+db` F!bp!+5Tt[dU*XQP($@П0K8cl+U280fqQkpH(0RNo4(>1CB0|5S@8 <@;K BG Z`RrP:!B\0<@7X~XʏބIDSYk{펅xdv88傾Пz5E(6 |k|4ں|“ﰀ@8<@@{⾧غ0G8<4נA;'>e4Qn|xx,Ʞ #&Yrb>va^1\|9? ;CAh@@BX(Vth03%":!L.b@Pd. n2SAדxqLxP0Q|.8.%ޱ΢~s@x}Hexߖ#xD1%Qnp ;Z,`Qp*.n@7~i 'UN@ a,#%Bưm"^vñB#i 4|?|H֡;eRJ 1$Rn3#2D.HQA,#r310vaaQs&=Zrw"2D*йRSz~`2aưAĒ1ưZrS2D@j|i^18.P20aq |rPU>|;x|8, >:P8@@H"2TԀ\0e ư2 ?$|ix g,l@7;W xP0J!Tܲ#!#yS`fB0(@U&05@~;;@;_05~'@Z^khhabP#RrK\0Vw@@@ua@LP*TdD1 TP8PE0!>bd$D`""BZ4>SA|8+xdB)2(Q#9# 9Rq2B $ FQ:Њ2AwЃҳ4B0|Q0B08# Bpia̲#$KA}rBa:$ >v}(KѲ`D#XG@( h8HP2ҿutB & ˏĖ"r`εB"@2JE0N66eb|#!r^9*?<0ϰ6T0N0 fC""1J2&'T%J2#."bB#!"^?ؘ}ηD\0#$ //VW0"8`utbQ+&TƿT>@~/|0=0>,@:PU 8(JQ04JG@>B<;<)2(^:w0JAf$@`ϐFB8+@"@6AJf t`P;ALX?;`:@:h:`HR|:@:apQ.:APdbtzP|y}~prp pPsRS-(B8`a(c8ü P>oαޙ`#@ q`5ңPA&q::yb(Rltn`p5x0l08S pAl֒krSt<8&x%-Nt@`C֒[𖑶p~~~0ݒR]\?ASJeRRn`Z0b֒W"ޜQ`bdAbvU'P&1wKBTH_[0ƥҢ\($ &*d@raIv8QϤys0GYk}Y߻!dQ=ߘϾ(8narlsD5Gs鐢}&8禮afnVޒQbqPNxn`R|RЀtx"@ uaUPR.MQRa-Q04((#36bS00(H2ې(J\f 'MKb0fأ: 4 08~ґ9@~'Ё"I@Kاf%8`l}k3bcH"J4<њB@=ЁB}'C֑*=@0pN.7bc@ cR^oa Z L!"a"B@T*"n`f!Ap<0 | A@0LN!zPN |X#+ @|+yAAhA|c*|*!M M/}߈@ p H%p} :C$p}d"]HYn(LS0q R#?Cc0А  V$Dd.p| |(P0$  R W  V_ @ !z0 1@ 0@ L /|!(8c" 88%0b5r0v50%*0!r0!0m6033B133.T}ip`d|!! 8/'@0|'/+B_|&.D#Cc&E`$DdN@9?h@5/O*ORdz6rsE"s"dj|s>0dvy4@ |K|N`}L,B|%&cf䎅{  :}ˆ}Ђˆ}Ђ ˆ }Ђˆ}Ђˆ}Ђˆ}Ђˆ}Ђ ˆU Ђ$ˆ$}Ђ(ˆ(}Ђ,ˆ,}Ђ0ˆ0}Ђ4ˆ4}Ђ8ˆ8}Ђ<ˆ<}q}} =`a΁|y~bTtTubb?@&W>_xW02~8~x;W_8pW>S߶gd~$~$so;,āRk ƠIƠƠ ƠƠƠ"Ơ&΅ 2FZnકҕ}Cx|;x|P`.0}sLBK| (|b!-*a|+xBf|(8$fڳ⿤Txʈ*)82ʼ*1ϋA|((|a)-@`cb`2)-be 8TT:\0>} t}IQH>]8>b}#Kɲ|dpZZO84)߰*ܠRw8T!j9JUJUk}~]P>}8})+x})2xQ(Xq}TE>e2Ԩf3Ӕߴ9kQ(Dl7쐦~Tg|:T|c8c\>896rsã|8qH9Ĩ`d0c|0|`8E  0@ |0|ϧ),[6t`|^\f뱖 b,|v\*<`<`<`t:[?, $:eA}E@}$ IR0|c=xV!r!b   Z&Urll8X$l\lxIk|2lJqkzl$llHlIPtl /HY:/`R/hj/p/ /d/s0/?t($*?B?@Z? Lr???+ Ⱥ???s@s?ssJOaOsY?ssBTOOOt/A"QbjPx*@(x80HhX`xP%;iKQPe|KP<Xl$4s d `` 0  @  ` X`#@#P\ph|tLD|' )*$*,*4*+t,-.102p3\> >;<=\=CE|?4@BDFxGGlHHIpJJKpKMMQQQR,WhWWWXX0XXXX`YYHYXYhYYYZ<ZPZdZ[([\ !\3@|Nu@@AAFNu #`'? hKQ!stpKQ[uKQw# p$9qv3opuKQ3v xIR x rwp@KQ! pKP p.PJR*X|q% NuPRKPmp+^KP?f#' @xrҖ3bIQsAmp>{s '1;D\n~Țh:: :,:4:?:R:Y:`:k:v::::::::5BTizІpppE<pX,pppy+pZPZQZPUrJ`J:B*F|DInterfaceLibNewPtrSysClearLockMemoryBl;ove*1ErrorCallOSTrapUnivers?alProcalNSethAddressDelaysXTimeDispose.PrRoutineDescript_UnF?:Cont?iguous*ǯ^EDatatcExceptionHandlerGe t5tPhysicalRmv.ize>\Math;64'S64ooCompareUpubtracuDividMultiplyDSLGlobals'ub_eSuccgruptCountgסAlignIncrementAtomic۳AvailableSwis_SIHsAll Defհed>inNatnޫatch3gElapsedgForHdwruthƠotO=f$Treeϰ/vecՠT _BitOraxcondaryҶLevelgAbsolutToNansNuaաDe5nnUpunullҶHookCreated Deguoro+ChangedYT1oǘXo贶An8ap۴Decoc5QueueT絔NHeatMinlǿv5FlushoEmulCaNRpѵ_InitkIOm/Islete>nfoPBҏ2Ӷ|PBEnqLasPBDeFirwCStcpyPbN)ateaN;IToVmpmpp%n{LenCu0ntTaskIDaaardw2Soft ҶSe/evicbourceAcA "GIV e{ L.upuęPntN>bern{ O)AsY ҶsNҶFun?R?CY Pool$ResntCPre>fheckpoin>LogEPageX>LˠXs[ׁE>lrm@onRModkGAl>[sExecɠonb.2E/.ҶRhstCancel*Du+%ʫ'/Ѭ&ŗFrom!8/&3?I95I:@/75>BasEUncd:Zer3A5SynchronYIOEܟM騟ۺ88E81616E16M8AAPpBB16T7ю?S41DebugTVp0/("xP&,Ԁ0nP8/?PBPM$!`aenPiUx"fD?6P &#bg E h# g5W 0   u f dڊ@t V0 i0V !  @@ 1P6,A! A 2$ Cra Ep/p Cb`}`DS91LP*P]APoCMPMf`Ub` _ lV ^ m l;mf` g ~pm j > " 狀P >[ `=Xp[P- gZP8ՇpɎp@rqpXrqrq/Hrq 6rRrsqnp0|rU rʂrVɀІrrqnpr%npxVrq ޠpPrGnperr{nprUrzprfr qrrrnprpe(:r 7ep|ra puprƀ,rp`rrS pr %3p{r :pr g8rYnpR|rAnpru phr+p2rnprppspkpprJprѠpW;npQ Ƃp%ˀFRp Mr3nprmpqr3 p{r'p{r3p/#np pwpuptppȬpqriprl̠prnp Tpa/Sr̂pp(npMW__pQ3 *penpk5 r Opr3np ~p=Kp dp9dnp"pMpp7rdMكTpr `p&QnpIp3҂praprq-p B /<;Ղpsnp[gPf p[ pj%WnprpkckscxgQgQְnlibXSD`{!rso˰ʱKurtgQe#Joy!peffpwp}cgPaϵugQq6ϳYΰ@6J[ɠZ5ϵ^[P*|!|i4})HT>U%>|#x|A 8`HH`U)|oH.(_@,(-8`HVAS8!@|ޓN ̰|+x,A 6U:(6 :6 :$8*(Z ZZ88xx<889 CU|c4 Pߐ&HO#p|~xT>,;|W>;,@;W:HP}x(:Hx?xTғ,гХ<6HSѤnЁVxT7>T8 }&Ց*MgP}CxWɰ3x,|;x@ ȜxAH߀T 8+U(?:| .(:<8T A^A08}#HѰ|KdрGA.KI,ApRՁ} Zl|x;l8|+x|#v]T!ۀXSҿ\~ޏTd{0|!T>p|4|4<~[K![[Шd,hlT,`aB8L8H@8FVex5p(  lU$ T:;tZL(t4H2x2]B<$XsMa0)#@AkZDA|@^@]X0aT>"A;#&BkΙp`;x8ЧHK>0@TcKu5E0 @ې@iyJHJ [[z@,_8?@:jHZШ@E1HNb\zvR.|P:hQ>A8 B;^P]Ta ,$:^U P-ҷP8Y|PR0rQ;X@0D{($c]K fAK8!@D䠪1|+x)@#1P1^PbCGa@}1z@8#BO0@FfJ X0zPaHIARb,\r8`rgЂp11Mk@|a`1p"Н|W`5p@Fe1&AR.nRR|f @ːZCCibD|3xpp,}(Kx8|g89(`hu|;x}$Kx|1h$~u[p8}<|}`jp8 |P= {8,@f ZCBbEb`"Dh|#x}Cx)0X*(,00xb0by*3AX `/Pq@a`??|dp!K;9 0px-`]|es@g@Ub20j^PR/~óBc$jf=)F(U4T,z@(R 8Z%9#{fAQU#>vQ@zRd`ՓEV4N8K($,C}#K@ER a b`RIQ@zONLIȢAr`9l[,F 3Oԃd"Tc>T:.R*U0c8ꒃ<ƒP4` Up@|.a "ifc=UcOb=SOb<]Q;`QQNB|ᨃoT9pt-6CE_d>RA`1O A@Oq FT~Q5`l~T"P4` ɮԖp2}CxTP>RwRq"P݂V6RA"b`ކ@ĦA(^;:ద@<0;wWP@}Kb`dS(gs:=Z: "Py˃,P< ,T8(q _o_<@.Rdɢx;<80xprZx!7%`8r6>.dBF!PlRN1|aFc,ըPޢ!KY|}t( ~M@KuJ/ 8yրZRf_ R{b00ằtH:1Bz<|!_6:Iap3 PZa!RĬ:rDZ:H3tǥA@4(0?(.|)12z b`-fg7ր!Q2 6"PE225hFb`RRM!qۼA;AWn@@,S±8XП|(@;SqJ4ZvoA}Cx|(|\0pH2si\Cx}0D8In|*.|W+.֢ܠ8J $5}\@.}G5A12(PA$>NrKN1 =<0S~qvAȖA(}XSx}7Kx} Լ@zx;{ ,p;b:4) :`*;;:s#СZ}n9?(U:}?bX|  9=6 PaJ{ຎ}ր@I 0FఁI9=knd| XeќjMj=6DxFP!~i6D0Ҥx~ųP2Vm@Z; ~2t g2,&v^:^fynA|jaZ `jL(|4j}cx|kAh򼠎AHpH̐@G/`p.p;~J;_JD)d"ѐ <Vb"5v&p5B8>`I@dրPv8~j8j2@>8= Α8 YpuFAڴ!qÃ,j@,c1t኱6pҀ4x@D2 6pyҀԎݎL2<0OMxtpfS(9@pA܀,C#4x |9Vt2R`|8|R@pFp!6pQ*s>bKja֎C|^8 p@|ZD4r,zH S@";_|°%º#Zv?0fy!rPܔpH0b|y:Q,AH)㗰r4 )HRad@0%0a( roH*1Zg(u #ˉQPj/Tݐpp0u.,Uf_x_P%_U)W'@240g;x6A*QTpp94>Pr :q< @<"6p%@cbOQ1@VzZs8t. <8` 5ұ- &d`&"*4nf }>KxURP,P@+|xJ'BS$:$ETP?t $Qbo|]$y6oU%ݪW$yݑ5Kc47- !8;_rv}$PP,P@{4?ndAЗAa$I"n2k?!D4B#`❗8A a#qvƑ`0)dv)5f&J! vls)v `u&2rA~J(ITSҠYua,3Bvj!Jcz?8BA[@ A~KUEj/w $*hv zfFPբv@!/A"@"!"I)1$`2;!"b)r1F1`DFPsR%I#s JQDZoʄ>]2|3x;P$bj4 jqI'aN<|3jrCZ`yRjҠ96R}\@x( X|exjr'DR( ` 2: 0@# bZ`jqZ` ^opg(_6˰>2M3[0"^6^gKn8,z?+84Ҡ>; Ȳ2 A?Ͼ[ːY90<8w s };Kx{@}\Sx}Cx|:pYFx~ȳ q~ ޒH:+&R7p`B DF{#z; rv;en?9nd?dmLH9_aD}_4ta*I"p`#=u/pTz`N |q}N |@ƑԶ0D0H"EO1g0V&uh` aj#{9AT/Kmd(N"[ XV"m 2:L^ɈЂ$$Ђ$2sВ"K0K +!v t:4`q(+ D~AH|;I8@jP;?@&E;@?r@Hp?|9!K B8)0- LHѬ6R dLKź" y$,@Zx;F^qKAd4фq0DJ1Ҡ d /;n,Bӈp b`Q'(840"* $ #n1nZ }@/>A?(?~bB)?Kx}]Sx}Cx(T$Z18U(+P+) R2Dgp_%@`S\, dF@`hT0=pЈx08"eZu0uH$@G|beq|ƞ(l;$%AFb;$# $ $ 6R N>RNF_6 z@.>Ċ___^4\A$__oo*omBhNoBfo'|a;afh[X\ϐ.SoH_o.5Ԡ6L0K* }uhyxR1_(1(Vosztt'pSzn|&.ro|;x#bN}|K α,S{,t6Ppry|KӕrOHf- vP u*4 ?0.|1"a;- ͒Rj{6r0"KqαPⰃ,vo8 j 6K]P. |".|#.4 !";.KҕBku!8d=,n\ ;z *!;նq 2_\:2Έp|zxB!08/Ѧ?|̰3;SC8@vNvA0"KCJ&#,!Dư.Dѵ(nA2B%. j 6KU<ѲdTfDH>%A4p02B@rxǰ&QZ `6- дΨE$Z^;[6QޏD@ܢjC2DVT>T>87@Nv@ޔ+p°ƿضP8U8<g/`4;H6;Gv6XH]8js@XJ3!O4&"U\c٩:!ڨ%s\w8}ZSx@p;#x|{4K|vT,~óvh8(4 xAe@8}(Kx(?A0D U{QU93|t38@P 7)[06P69)P 0sA}#Kҵ2fP8ʑl6@AV c>P*"iX+P8i3`WH0iosZyT$:+?}(p((*Q%D0($Mbvq0|~hPːaT  s'` ]򱮂Pc`   H 1͐+(UPU.. ^P"K.9>5V|}4~1ID08ѨpG8T>;|Kj=QplT:RUw`#q|߼;z i+8J.jH ]ZS`ajU`Tc>a1X:P|p3x.nTlХx w|Ah@0pf$m i|3; h! {xh13p~4h-p;@܂q|x%@=/@ xqҐu @ Ґ>apA>R4&Pf1Bb0@p&5.$$.$a;ǚw`; c2J(zZ/UHH ^O#~Av@LNAESx@<}FDpGDpISd}[C eLX~A[P}@L KH0~Bc1K!d|3xE  0 6k@ u.$qtV%`0@ 5z_V齖]_ Lp|0@s,|99d~V l` Be`y!=Jo7|@ d "&C2"ۀ9ff|3x=pe|c`ferz"rȩL`Ls08} <9)U$8| T:|*F@( `(>`ܶM` |Zr!|K0`"40, g`(0U:U):9L}Jb0P;`$`>9?{ (x |"|8|2KeQ,І$9J, 4; ,j`Afc&p訫a#T`0T:}:H@, 8i(ҡrlCٰR dWV!}$d T@}%2;ZL`z`i `)$`ih>`" H `B>CRb8dZP8(@0yfc>1V|jxa&pQW0( ~@Ti~}C@C1QTkpTf~W<|3yzH U%80Q 2)e~\$80|+IARV:1,LKaT>9Ӡx3`>`.0yfc87.$:!N" |+x:᥊024H6x> |2^ag@8n8ʂBAT`0.|ȸS}?| @A躢}?K1Q|;p9?a6:Q_@;鞔p,|7Q9CІ@?|9$`\qւdлAA"H!2ܯ_We480Љz܁ς̐!CpL|T@`N 9*<`B%ZlY;(l$@BEFGH cI0p`TheDriverDescription DocIOcompatiblenamedb,AAPL,MacOS,PowerPCd-ddorh uptr(refdidMN NdOO(8@|Nu@@AAFNuba^pZboA``p"fcjxx7wdxRyq>app$pU;pRpfpzpUppˑpp_  U 0 9 E UV g t ~ Y p U Y^p^(^f8^!N^UY^d^o^{^U^^^^e^^^}^Zpi&/e@L%xqaJ@BF Ds@N`RegistryLibEnIDCopy Dispose PropertyCrea]t3Get4S]yDeleI[SizeInterfaceNewRoutineeor-\-kFragmentݑMemCl~1ConnecbFindSymbolCallUnasal=cSysErrP=BSync2\FCBInfo:CatGFSMakeFSSpe_pOpenDF FoldeܒZoneHandl~9sClear_co`PtrHLockHUnlɡp-XĕHtHHp}oryUnh Enqueu۠e$ResFi`7-Cur7U5p7Loadݑ7ourKceݑ1ldlʅRa5oDetachl7Gmf7FS`RefEOFԡFPosݑ\*tem-TempInsAROMMapEqualString?BСMDataP`HRurḏsɱScFo`viceFrom:RWbLookupcscGestaltIsOnq-leޑmpcyVeri fyA☂`߉e=攡;ᑺlcsHGigh`b0s`֏re:CTo=Gr`hScanԏidHs&qes;d{ ָƺGrm`oհac)sttNumbeJplcW'ithOt]ffq$$(v`C%puE81DsT4؁)m 5X HpBX\ZC|\L f 6wp_DpXk`x6`U*`*L` `*gPB`]Jp` a\pU*x`p@\p *`pR!a\`U3pP'pH\Up0\׏p(*U`*c`*`\[r]*p8*`\9*`lTp/` `p\qkcbc[\ nlibXacKurta9XwpJoy!peffpwpOaermx0Qnwqmyup1|!|fx`|#x|+x8?8 H/mP|cx|c48!@63 |hA ./@.!R )V/h/z/H&"H.//-T>8 E# //?0/1$ ]"?4?/ H&% f?x??H&&H-ժ??? H&'0?OOH&(0M2ODOF?6)0 vOOOX6*H,źOOVOH&+@O_"]8 @AB_T_f_ xR@___xRH+___xRPA_o!Z8- PEBoTg``44(@ 8`^Ze"da|#xe4H*Y~b}x(@P8`f~`fHtxxxH(~a q4p*I~a0|!T>H,ypA`apQ Ip``PRe`ZbdxTc>TB.T>|c+rZaTdF>Te.TgB|pi|;x}Kxbvqog|D `,q(1r8a8H})3x,b_Hxt 8_<8tUq qzta"dP |#x;px;?;H'2r H608L:HꊀLp%rH ٮb8L0Gc"Ntx rNt\6_K /02xp8ĬŪĴŸļ| ;/B,K@qp!  Z~vwbp4(WRp|@RpTΑ@qbpZa}csÔeZnix(Os|HݑcTNqOo!f`XH&"B|+x|D "hxp>8됣ü  ?$#$_(C(,c?P004488<<@@DDHHLLPZPq` Tltu(fn|`ard|q8K Rq qD<2 qVs p<ʄP0f؁$޻>T˃X:T `Z AVl\"u(I/ /2/dN/`/T>K(~///hFp1B(//#!a/?*? lFp2?D?f?x??pH?Ly*Jprye,cl>/6<m9+9 ae=/a׀NcA|EAs!`f}&A"a^;PDeI,`rA~;+;`vOEe-QHS`X΀T:P;AGCgwHx9`pap__H1C ǜ``ϰAvT|h:8|k q>pq9)9TP 0@NaNQT1Pho,h9S@9@\`>oP}(93P} TP|H Ph(0|@9A9 0@ 0aA@B}| 9{8@,@@@74~}C} I,2|2z|`2@"r@Z||h@ű,oAĄPҒZaݝx8d(ȀS@0_;^J³R6@WhCxɑʐ ʐ >P@X`̠/@Q}GJAwPfINTPCh@} Cx|mJ @j@kU$U'~|" 80|@xEkb~@@³y N(CA׀U%H#L* cX0|;xFԀԿ|{B9# j4 iO|iB$Tc? 8@T>րA`fardaa/ Pc, Z2@rd\b$ |i8=A8|;x}@<a0,|x|fۖ||0}%}I@/| ՁNy "`܉RW]p-2qa$< ^2^8SFx2=&Qְ p.|wJtN`^L*f=v`*1󵦄`ְ Hx\ʅ80*I8!pg;`+x@$ |:o"R~|!s|ȠrL20IA4,`Na<:}(Kx 撨#oxEM.a*@n nà/Db% ׾Ԑ|#xfSP߰s:@a8,lpn;0.Ttzo!"xe}@zN4|,@x׿xŠMU|^xQ;;9ܐoApfpeqQd$tA~K0(U(fĢi@8kRQ|fH.@b! c|H' |88ؠK^ıT~RJB#\b W$<0@ېЊA@ (s8#Z@evԠ|{f(躹¡ʡvZ8.r1LOcx: 1PJBp}H0[A7>͖vnr1zx@R,\f~|djZ`fQ9Bd9 j0;Pz 7ܠ߳w,CJKd  @+D EL L6k2hLӓ(m`Ҕ9 pnQn*d|MP898а(.hLRl }(Z|3m޴ng$9) ЈNzjTkp9|m24l`,@#|!|} }HH(W $Q2Ԓ;/ીLܐ  9`I*BZr I$2 JbI / !"!pZ"xc3p!xDxx!xCxTr r x ~ d~ ~ x0 p x lx{` |xy @x x  Hx> x8  x"x# )Lx*\x+ ,x-,?xnamebanditpciregbus-range  6 .PCCard&3GetSocketRef.6(1=1R8^0R4g1^8f3pS@p&R9pbR6R8;P5u2ID`3J!00U'0;0W0n0U000ȑ0_@@U@-@>@I@UT@b@j@u@@2w3JBF%N RegistryLibLEPropertyCreateWFEnQ@SearchnKIter~k@DisposmLIDComparNIn0XM40WNDelelMDhOF_k@S@In@faceTANewPt?rSysCl}@IWCallUniversal`@c41h@dT@raryFindS?ymbolDMPBl80MoveDatatPstalttQMQizeCl@ConnectionMemErrorStdCTAP@cmpExpMgrPfigReadByte]Word]LongYWrite]-b m-bgIO[fc gfc\i-ld|iWm>QruptAcknowledgK@jjob|hobgSpecia?lCycleWl/yBroadcastb0anSwap16Bitcw3}2opPCILL[~rAddBusrRemPupDevicexxEnumBu[|ax-fvQlSpCPAYlP?IODs@atorGlobals?FreejByL@wC@ttribuZaokupIDFromPhysicalpresiZetLargPo$0, JZP:EQ;DaT"Dn" z'X"AB ]Y3 v!/FZiL0~[hR0KYL Țy1fUL 0HSױ֒L xRְS>0U 0܆*0"0ߒ{L ؚ呻@*L 0pi1~W0(8L 0Pb֒L КL ֒L ׁUs08l0ZԀ0+0M0`0X?kckc1J"nlibX%0IT@k?cKurtǰw0w0Joy!peffpwp[a4R57B2]8^ޓ^8|z7`]9R50\J!b8pc8@~,j8z>@0c>U<%>07.K]Gxƹֱ>)/8!PՃOK\"/ ! t DriQSerqsTA vTpTNTlJPOHAPExBlueBo0^;11dL PCR8Q4 06JԐF<[u^UMBHALBL  qa01@XMotherBo)0*w0. B\9$50l+D0ap0`9ЀTi=`}b9@ Tc>l|4=J`J<}kB.8| `,9P}4T 6}i: 4ˠ>`L g  }4Ue ,, 48 (@$, 9)Uh>|`@ABL%k}igjW h  'lw @D} 8`', H":V>hυ(\hT>B>,B*@D 8(<|$0|KxhB <|40} +x$!CN|3xR0BR *BRBRYҾFKB*BBxЃ8|x<`8/<,U A@l~lK,9 =)i,8}à<0|Fp|(84 w  $$ ( 8ӑ!<@|iǦ9 x~ 9 U#<|.|B~z!B@B!PU#(48aW(4|*^}*Z=PgU1~Un< 5H mV# 9?P>x-,D%H=ސ9*$<`d0|+x$ u8}=5;9p8a}8f8fz0  9CԻNрž&(Mw 20|y11| _iN﨩z ,@Ёj o+(}  `п85~<ܫ11(C\B0!"D?8àװ| 0xۘP!9~ j$AUW#>> @A}>@@BaOJW(4}#J<IW0(x!c#W"_tg29#g?$C065 x30H$ zPM2UY FRCTU5AA:7@}&ж8`Ѓ$ưX}3.,^n0h;@|vx~{5OW@aln`Ra8l0l8b^iw`}tan0Sp8``ưZ`L``TiU)?>8*a6`| .9\T0`~C`|2.U\@`HΰpC].^,eOAPRaZ`I汦;a`aߢ8 9("`!W0`X".,D|W:T@`a|[~Y l6`p .aư|?#x|2!pْlp6`ԾrsqsRh@6`t;a;Ԧp^b~.2|.|+x|[+xc:|`|KcqNQ~xHDW``|c;c0`c pi^b{x(!&Dsy(v|pT}ր,0Pր08 4^س` 3r9^iMka\`@~o!kgĮf`aaZeH渔b`088FY 渹c1,nLaVVa8:>W:ΰ}8@.9~o0U7>U)`|0.}*8}X.89ljq|4}-cq(c/|Ct1 W 6Br6|"f (BqW ".|@T_hV`a.9,8[ExHpp|8.;{ |x@5.nA^b9Vp|+xZp@Dqy4V|A-q$y2sY@@aZ*s4 a|`bV2\6"ZJ2^6`v28Ċ`]V2b6Ȋ`1οd2d6̊`U"z82f6Њ`Hz H%VnDW("(4!'@h 4R,VAR0[i|>pBPFѺP}a܂`np8!np<|~xnp@n0HD|D#mx;%^b}`< x,NER||b`ULB`D%~bȈDlfp\n0L`Ȃ`82B`\ɰ.NQafp8{na\䆐euᴨ;`By.<*Z0`r@ͳȻ oЀ<|*8/8H_0`\fp W:_0UT}:}%TzWInUJ|PH|h.}wG.1&p0}|R}*9| "|(;{= |"IP|2|:}BoqQBWx0:Ҳ`p;Cr||"v~ѣ-/18^byD%f9r|ztZs{O#WcxQ r(@x,;۠<?xxxxKY&,<; ~;uԂ õWf:~e` B#q4`6|#x|+Bn1)8(zix6a` <8~q`^b}heLzTkj4n0X`VBZ\^$`M>ia2|}‹sq~bu NQ,0h(RH*#yB(qA)1C4B#qz2"5)z.O+xDXv ѣ<ڠjp8n0<0VH $8z*0Zv hsڠ1;PRs\r!fs{61n2ڠ 1r!Ղvr4ba9vB4#Lڠƒ АP8X@|H,0Ar }cxM0>iNh@r";@}r2ԋ8EI3SfC_QPdbDAq@)҂t$bDt-0t B@Pa"8b,Pְ=~qbiRR$^-X9RBr"V"!ʸ/|Lb{ $h'exq2]Fl`ca ; 3'q(8{RҐz( zУ8`|;yE}LIfؖ!<p΂+x9!LR <ְ2Ɂ1DR`@CP`vHzСjC)G@bшZѐqW3eJU28 ax!&"SPAD^Z[`%[W!M~1U#:#~cP|epf Kq^;ްRR̂Ja&ZaKij^pr#.6p?|pgShbA;p u~@5t,bB簪INuVb⽰l[A|vV;[|NU|px'x^q>p{U9q攠TtrSQ}V|6`8^Ѷ8B@mbip) Iv<z@QRvLfzPvDzMHPP QT8D).ڀ< TR}:'h '!dЇ2_z`ÁL Nx$l@ID2Jtb`zpX$\LITH /d"/|:/hR/P$j///I///G 9/?*?B?$Z?r?8? F`UXF`fF`yF`F`UF`F`F`F`RJ BF IbAfaceLibSysErrorCallUn%QsalProcNnPReg*PryaeEn`IDCo{pyfCStrb?Createf`pertmbDele}Ic@`DisposoGetModnSHa(hwroBuM}m|BuS@vsqDSLGlobalsaaFablkeDBTpD$RSerAbabChAbfA^pOptionsPoolAllocResidentOInst`F@Synchron@IOLookupParƀMembe`atA݀vourxreempi eDe`0pGpя0Ne?wWorld$AB_q`F`~jQP0x5nlibϿXkcKurt`Joy}!PfpwpcfQ/aZS^W>]XZhP0]Y4P{c4 |x⏯ ,\0Є0qdlw@~0@쑅~ 9"9}cx|wc4|#xT~>T>9 Jh\H,L@HeJҿHiNֿ}4Ѓ!}C#K0v#A倀H~9~,b5BN;NANԳ쓟"=O꡺82<2MJ£?khh~E8`eg8dOKJ9b>a<6%,@ð(^  N ͷ(# PJ 2iR ;\ .y^H FX&t0| Jc00&y$Zx)8o-4  |+xưi,s N<!K &x*/Kjymڵ}&;@Ϊ " 8l RN0@Tc>&KE4<6@<;0Td?: .^/ `A_d`BeCN0 U>)'@V!|#xJ99`5k}X.}Yu.~d"%9 0:ưujAD% T~ }h86TTaP~@?P6Xo6Q>P!v!*: ;o; 〳b0P|)ց1Ё!)۠`T\9mPh},06l} 0;p~"E }xX" @/A+aP` x=L8#AtPp@9 H9.Z| H1 j !)0U~(+GQPaPǠ8b|@@ B!l`P9)Pd| X@hP`}:T>d}"aQA8A1? T{IbdhP.@\A`|r`| @N0IbR+sl@0`9%x p'PT:|1.9B6pl±||z`e@jArB |JPs}IBZr0.0 d }bl pHPilstd`eq~PR0rU`hnl^hp3(d$^P@RAdp8ca׊a_~x~x~Fx@~Cp~}K09߁pUk\p `.|00|n , ~*xS~ 00}Gy;MPky1fiJrm0|o0(3GOF^@RS @92`8|xfpXbD0pT:}$(.}+x[}$x ᔀx;xցބ|Y`lQ9kd `@pX`\|2VPl}HJbPbApA[9@5=[g$ڶa3x|+xb@|@;x;@D1q(B@0"0"mc"0E$`*PTMxf^KEn<̐Ȑ󠫀LT !ɡ$ίࢴࢼI.ࢨFࢰ^v࢐$ࢌ̾Iֿࢠ࢔ϒ࢘࢜6$Nࢬf~Iϒࢤ࢈/l x||P 0||]8| 4M@|(t 'Devices:d-tree:optionsdriver-rCef::vҥ%ԘK0+p{pPB:ַӹѥ!$GgT=U1=H=`=t=U====_nnU/n7nFnNnUYnanpn~nV]nnnnnJBFVideoSerGlobalsgMasterListNameRegryLibPropertyCreateCStrE}nookup~IDInitGetModSKFPyISizeInfaceNewRoutineDescriptorDisposeCallUnsalcJZonePtrSys?ClearaDequeueShutD?wnInst&RemoveDCtlTic?kCount0ttemMemErrBlockM@Dat?aStdCcpylenINIT_KI;LL VSLruptLDoLPrepareCursorForHardw alayConfigura:0@EL{a6!!Unn0ejպk0E~_0C`)0~>0kcx)* nlibXkcKurt3@Joy!peffpwpcoѳaonѹ`qإդpйخ^-/P%F0Tؑ&d KWABXlsPĖ6*< !0>7`k\1~ m/ @ I":A`x8"8<2A84yBTc>?76BTe20`D141?OL3a 26OHOZOnG# zOOLD%O_A8EyOO_M3 O_OgC nG O\|gx;g0 TA|cx?o"o T%>oPk@`^F4j@ nGBpP`__j@ h__<dI&Xlahb8<Ʈ3ɶ?bt_tar_oA^LnGbt3"hBnG1B\obW0b92DV3(rL4hBnGuğ<q1^LnG6|HjeRj@.aHL=bbFX^LFnGᆿL ´>ؿ!´ePfo"´!ohTf,f#3يԜϢ"^L$nGXrV%M(0߲Ϥ& l~,f'3鄨ߺߪ0(1B)yR6HZ裸 *3z&Ϩ2A+勵gC,nG]ʿ̯|0[N `` K0L| \ @|% "k@/ h/,l4 td!~08~0]0~0@22ȷP>> N`zNN A05 ]0 e0  E I" !^/p6)!UD!,2.r/#10 $JF-In faceCallOSTrapUniversalProcPMSelectorCountPMFeatur etSleepTimeoutS#"HardDisk*CCPoweredSpinDownCIsrsdxGablq#CQInstRemovev"caBatyInfoAuto%Control"Modem1StateMaximumessorSpeedCurre*Ful'1+"CSIGAdds1Z/"Wakeu)r1(Is&CyclingEn#-"Voltag*!Dimm` *+$Is;ƍIsPMgr"Y7Upd SystemActivityDelay3Id=ltart'9"Last5"dMix !1;#Suspend@5< >$ }&@!2@( ZYVAhCNopguy<rR;{ߩ0XI5d /(En@:2@3}h =lϖ@[Z"B#~@jhQaZQ\( RQ R@*RR% R*R!X*RJRpRyRUMQR> R kQRîeRP`T RCQx R*RS: RO*RPRRן@骮R `*R& RӮ*REQR0R4ʮ*RRDb=QnAc)acuS9*R7 Qr2*R]KbM3S PkcceBC nlibX lZ0dcKurt Joy!peffpwpca 2  >wS2P!a~>p @"i,A 8U8PPa8¾pH^5pdq1888Lp9 ; 怽Pq8pP0xt`p:T~~;,;Ptq8,@ep89# |t5  `pU[RdvAAO8Ћ}&!:ёq|#x|~xe,CPz}W~]-W<;9-=| ƐrpW22i6WF>|l56)BEo΂g} ֆ:԰vT>~p :8cy97@t!W|ʪ ֕3Fp1]a<+aBPN_֏(>*Ƶqz91J\AjizxʟܓJq讘U$x||p}ЮPFoRd|vdЫБ#Ę`#C}gA0W~p}[` FJNfYq{@G"Wв W:xq .btf :W>|e#x|tT>U#PjMTЪ؞ȶ 9PI.F!z8@HА! >`8%P8L888l8K|P0r "@ "@  ! namedma-clerAAPL,af#m~1qTCQ w EU$@Th BF NRegistryEySearch Ix Gpose DInitper2 Cre Driv!rvi: SynchronizeIOSADMApe'6"ial-~7DataMaGhannelUsnmf3And%6!uBpn3Ext0edz-THۼt_IlUג _Ծ@RUQR!vU/UUzem\e:UUcPQiVz`Wb#X6`i" pU .(M|<#@`lQu& q |*W8n8zF8U Rіpze` ؀0Q|*䑇pSbN5Tc?Z?4n4v1aU0 ?2A2`$Tc0|d0>b8 !`CG0>1DFR)usrFATIMBRESD+torTermination@IsAllInOnc Ya Ea 1rXr5QRkJaggb@aAX@Util-sg> pg#c#$`-SGo*`RbB.ATAkwik۠N2{q/ *i/ /B@Jf0<`|fWN`l~Y"`\~Y)`LH"o$/ "i$hQN|"_ i QJ@n( f xNLxLXN~Yf _"_*_ { fp`J@g1BT/8|P``H`/N1HXLNuH"/ x` 08 JQQPaGNV~0`<FFY?N:zJvP` 0RGxmpLԀ^NuFindEmptyRefNumdk"."m`gP _ f agj(. *.>. p(@&a<(k2JGf,g(q`"JGg lWD`&qg `(l, f&k` f  La=Volucn&n(KpBln9np(B,)@pp*p,U/ 0NpcExecMgrb}/ (wppp p//`/ NO(nP`pOB8 w/-N6)n@UpvPOL`=|o`&qJ` r @=l""bA`Nfl&ᮡaE8lr>9xpk@*qƂ_b2< LƂxrVz.ހgExƀ*ue )GJwk,+,pk7^^gpȀ^r ` Lqؔa*g* 26>`pPO2b,POcՐP $*/.p %Ҁ,n$3p.a GmJ*$gg3r0H.zL#InitDoevic ”~-?'T"Y^(,p#pResgOODKrj&ᖒXE񐧐@Aiali)z^+ndf1"o6ms?k>@ϑ8XJÝ.AG0 Np=xReadD 8E(R` ?g Eۀcq POJ2flp6`@$FpLPON'|좒Remove}aV&_ g op]"pHgLrFindMountedY kw8^a&@" g"(j0  N"2&@ XOfZ`, |wOfnҥIB#|󀔱Q=@$vY,vUf,fvJP"|~`zښrv@0. PMppf/,.qJ:S@POK@0;N0 32Jp wiki~pxJ.+r+`| .FЮQJspg\p N)P9 <'-L_ <@ E` Rd&Jf"2+Ē@߀JZ `V 1?- *?(wHh8'ڐo2`"0g`*2?-p6A>tg$0<F-H02K~XO  5D?RVROpe0β1BJk0@[``8~C I4$` m/XJ?f/,)0& X0,;C'los20rp"VG$l ~` hЕ pHJ+"hH< `c+)m`< *w(Ъ@8UJ-]8DQrgm"ʞ7o`Lf"p1P!`6 CcHŮt jR;R-pUp "-`AIRE00k"o>JFag F GGf7G@AJGlJFfJf,JGf(ӭp Ѫ($)+@`gJGgFp%Lf'StgCDPO ,80 m~l l$ѨJ!N.=ڜteIOa_sI ~U#xg 1FJQ 3)j3*Ju7up>e^&/ C2m`H/NVA"_"@(i0>*f4*+.4B/ / 0QP"_>`0,Jmg&0-SJT>XNpc9Ax8.~!~`J`f j+.domple|15HQ-P_[n6qVAg-k_0`*,qH!2 q,06&h+2` $6q(8!Xp@6zQ(> *6p,qC0<d,g>A.L4p 6Xp"+A"̓!`!(; 0!,$',!" ~ Lf@~!a(`6 (Wd hb,Ff) x5?G`D0<Pʀ 6!7J(;@Hz⹺Q0.h̼.Prim`[o&_F``f9O1 `cgUpdQ6m`22(S`<`f."L\ In/ :5 f6n&v`Sj&` G,>tgc ;@KpQpRQN&pXD1P,.ՊQPExeDia^BsP!G`7`qhJ Xp..NqGetParto?nStatu=qP,.dJ0Qz:}E`8N&Ѐg@`͟A `hAdB:qbModifyO-2/ vqp"@t" g"Gf wRrR"iv? f &7NqoNexGIDz4rq}A < +h&T*r+A T"R B'l~]D(r A2qg")Ta F{0: GSGJEl]fwn0NqRWLonXC亚b8G?<.1ppvpopC6 IE"Jp`.pcJ,0rـXp GPO`E u#r_g r$pJF`i`?<`BCC?r2/AF`3p,N"¬*I,^<NކJFNbp0$|в/PowerEP0^Rqf"|p4CJsb(TSpinDownܺH/8BGF(ж A "eP2(Ag2dg|SAg}xptUAgpp]lpd gZ[ Xp\Y>F0`P0;Y& VtP/O/(Qʼnބ>H2Ĝ΀VހIs!PpAhfFv/ tB-HzPHmoNGfQpj k4Eՠ"Jt".Tl<H Y,0Hz,XZ hԡ"eP#HBG{PBhLSg `P1|1| N*F(q_<(J@~ꊰ<@/+t~Zݵ(*Ud-j@-x`ҳٱ\:2d.j_rn@,Xqr Ftf"NcN*("~^"!-P(k`Z܂"!'h*~k$ ް3ƀ`BGNpPF` n@/`8X i`".aJPu@"`~ށN $|xQKntrol)2.12^`(O@ 0, vinte/rnalz4aFҀQQAgFj#n K0=Y?N (_ L) T T1]ST1kP"VB.WA& Tp!@ TOh&"/F`P@Nm0`?RH1rOpennI&M`PaPf@2PQg,^`(0.&a@/A@tQ‬`QCheckUnexpectedRemovXLCBG0'@@gN`VNT`Cu2B(pg"pfG4b <T(T` .a XO$2UDoVBLTaskMY.~F@,.xQ9 L$DRIVERQASKz0f,9qA)H9n 0 )m0lPH)@H@3 InstallTxQ_#@,+q(@jPS@XO5z qb@0;Z"Xdtp~`lhJs``ʘ\p%Vez&,́0B zJFg|=G=F .L+$1BjG4aT aGJ(S@l9YBZc@Zk@(@R g00`RJL.c)G0vj `P @G6 07m 0B@A 8p@'Wa< 0~N-P`C IߊB-p _Ip#NqHReplaceC$-PbInSystemSleepGp5@<ZaGetSpindownTiicRD4aBG@pR><JfxP)@pJf8RfQ!f,Yu, ߬e  ,HǾo>,oF$4S;R~,i@p>R$g8 I4̲*Ƒ)_? Bmr;0HmN$jeUpdate~Dm2Ds (b}dg f(pgFm(N#PbtPMSTATEk}A(0,HSHUTD7OWNI/Ꭰi aF Ԡ`. \sHARDDISKQPROCETP*T +,~ Skh n`Ѐ0;c_8TX`0F>ĥ%I_.`( 6b pPT$QPNq GSQProcxvrpp3bx* @pB p`#m4l;|PMB+Eʀ܄j "Ȁpfn;|Ī|ZBʄ̶ܲpvO/&`%mv@`f,0o / @"@4q0W" SNuc2pst3A ZHIvp`2&M/ /abT Ht/ ?a4POrB/ H$pLNu _D@INIT$"Hv@$AfaD"g"`ABfa4$J(SfSf`Lhuncompress?_worldCVwjBg4g g a&aCNuNu ? get_rP["~ tg j&`N$jXd`$ahBӑSf`hrelocft _ "_g(2 gS"g"Sf@`œNЀ ZEROBUFFp{ P_0BF@xd H"xW.\x_ϠNNLb pm:tH@ HB$ dSP0U$S fSd~`QR |memse~ JfB?Sf+"H SlEp8 ZBAPPLE_UNIX_SVR2PATCHOESc_@RODOS ] SCR$FREE0RTITION_MAP "$HFS)43$o Uw w w w w w p` MACINTOSH'x'ሀ !Լ!! )xw!` ! / ??.?75!V"H !(q! T1,TT17??T1`<ۂ@p=M`@-nUHnN>.` SK~pHH, )|hC@HNnPZna-t`BH>XOfpJnx`hnarӴObaf&p~S"/4N Z(T^(*zvzcPZPNPz RPk2ag,pBg/.фQe&p>\qI`bbmDo6m&R rk0JဒobJSna/4^`:J@PddrOPCp"BiPB)#@ Bp]pU $(,އSk LOADf_0S@0>`b@0;;Pv{~֑:Vl.JV+TS)[T)ZdRljQ`@:V0.rmve89_P 6PO|sJgJ߬gVq lO/JX^9BPH\eD Jgp`计(H Q(Pp)@9| v  K()H~>,Z@` .Spkprzc:PǐZja:`x ~d LP^ PZ=kxpzP~|@FЀ-UL(pPigեg'LWp/ 'JpR0<މU~K__o o2lBoJ8HEB|ǀAhN` b갰J`|tv6}\6zlr0q_@g. _S%Srg~Jkf|tug8&DQcfDQ JSҊCSSODϢRBJgR 8CRDQt&rà`pg2._ϐɔtĊؓf /|LhCR~q΄ݜթV|t<\.D8bJB8|w\Og]2&|ÞhDB`-*VYIß/N8 ލL/)Eꈐ bxnЪ^XZRZؠr'(n>/s*'RCt`1(ҀPgp`pI Rbڏ0*.OPܱIp`/r/V&P-Ablt>af`lQg0<ۓHB z:Hl0`JD`? MacixP _ .vPI]Apple_Driver! (:SPIFI"f`]Xܰ Hh^Vd}6r㨘†.玮5pf 2-|< Bb8=| :j NA-H^A&<gH ڞ$=uhp  0.=@b8j "b{u [鈀 P SAtno'#%!b,4a u"o" Vr p('b%$ n PERg <ےp1p(f Z fy3`j 溠0 Hp10O0@`7&0I-K*7B3~/P3X;`tPM`f*,@B RcH?r:>X;H/ df7poo8ao.90f b$H 4`R-Jݠ0P3= J"nfp /,`/ JPtf JuR H*AxJ@fBt~Ced"O9RBOTF.F AT(?r< FgJFf_ ` B1R01nm"3L{NVf`GbB+| Bk ?'F'Gg: A]8pr<,3A!9|! `9| `)8"L< ?)A<) _4A`Pvo `*a'H.J9| L@`dbOU/ 0^@}Up&'s*`PPtd 8r&o8oJaPm`coucJ.*Yu-_ r_b`RjP" Sv:nܘ;ب3H036B-s~g84F$N0W TBB.D56bhN]\@.ޜdBB@3$L<(!b kPG*HPIġHPL3NU JB "e"AF NHEBV-xF.JHPái( .FϰJ^Q8ұg!F0F!wbT~nPBR;BWn܈\&~mxcDRVR1X.L KurtkJoy!peffpwpcd W /0b`Դ ck9ˆcȱk a? Ok%Cc5c`P)1CTcnyđ̑ԑ#6L_UqaaJBFDЀ BK@ &E;@ @ CIWPMWBHInterfaceLibStdCPateInsTimeCallUn<salProcGetSharedraryAOnIgnoreModemHoldMemo_FindSymbol"me:DebugStrNewRoutineDescriptorLMQysZonePLessInformationPsta?ltSetBOnmemcpzragResolveQuRegistryClosur)oxt,necSO"urren8VMUnWriteLtOullNubAPvePortVGnubEnablesCPUTypepMgrHandlerAdd}rParamBPBCSa}m6LLCFM?/backLRvintfvmIsOnStartup8figsy]sromOBnVEndlogicalRamSizFFngScanPosgExprLenҙMhesdcmdDrawLingT8<osi( QNi1( d߾ Qd` b  &" 7\P #  P {y. 5 h6!Р0B P@"H@"?B 0S t R\r",x 8@" Vr!?(6"lЕ6"4x@"#У t x Nr"& {"?$*"? r"x ] *t h dr"^ I#"?С Y?q"?,"I5#K6"Up@"Xr"v ? t H a3> T"?""w M0'|!p;|#x|xx|+xH)z, A8!0|޳0N 1x888<8@Hi?; 8( A8T:}@.} N28P0Q@RHCO;P,@08(|;x8xT@H}AHKІ@QAn@H@-RD8M0к@AMG@c @-DOFDDT2RDS0a@HfOxNSDN_COAv_MUTb@J_;_FTTXb@`__AAA@נA9pH+Tb@]:oLo^^i9@@A4Az`eC oFC9dHLo O?pA@((A\HJd0@6FRpd@bFRpCؒE}at8aT @=l9SCRBqxN_DoFCŮt8gXp5`8`NA A-Excep__6TLLFP15TargDPs34"}Cxv`|;x; , |4?T>|3@hL Ё[  Apx618AH]9@@@8XA xgx0_Hbk ~@<0_ H9i@8Zh,-0*tHa@;$HAC4ia@Fx9BP M-zBRepL9LȏD13̦sPcPUl1}&A1!b;B bd,Т\h@z8HZ$1r} :8V@H0J@L@P=;SHFXjax|ex |e|c4Tc~Tc>hS@c\cV@80HK|~x{,`,q_8!H @ @޿he.@>IqFxvſx0zaH}a}`z`HٶAAARTB8@KH3ơåBHsI@ 4HA~H?9}-`Ƶ@>,AQ!keFPMb~لMAnЭϫܛKhC1, ٢Main3a}4% 1U)>U&˃0{0?xW>~ $`b*HrAH/9b`8c1ř ;ؗ@@sЊP6S2FLL__FPUsPUcP1 241V@<8\"Hev0v}#KN0@@P@T`VH`6S1AT, >AwVAVb8Y AHQd,0O(xzW8><|EIЙMҮF6oryէvMR^cr4[X9!?\Hyzרy@PT>!8\C)@±j`BeH6HNf Search|n43Ɨ”!g%8|}lb"}g8<8}PHa֚&(ÕaSA!*BP8a<LT>" T8ę4aH"rTBe2w { o"H./J/\#rG)A%"/\#hFindEmbeddedSymbol"~\av #B s0! `R }Q.6R, >@ *@PU0cLU% aHIxj;0/Regs9ceDf[z*~\^*P5?L+&P<߁"AHHeUq?Ԗa 0G}1xƀPer O"IZҾZu;12_|`P3R>0 ±2,Af_ȟpB䟋 ,T2`"0x||lYl,@Љ}/d6a d:'=Dq `StateForthz)jV,:B0a`a:rNj5qb0cOH-"<"_b |^SwitchDebugg۫ψ% =IΡ!H, 8"d/ A: : 08 |&T|G4 =v@`B0H"Ҙ: ,b /ReportLLLoaderEvent{GP15TargeUsIDsS>OHI@*ҠȰ2"F@A*PtTeamBreaaрjGRHi0Bb!E"V@AnClearc5HQ߬ݍU /W9./@&J/\/;t"Ally&ݮ$/*%EBa/Az9y?F!?0?ʢOnDataAcHddP2J8>BLFPJN޿x>6PTr`1;erθOaSGtep0N$PI|BЅ^q~ψr urQrae=Pv?NT/ Ӊ/rHSBS)o{I%nΜFin9d^Fil΂ofLo݈oVHal|@8Avvޒ b ,?K@=rKt]R<M HzeHڏ썄~{Qژ +{ d@Wj0u{gHr{=,}ʛzrnP@LibNam`2x:|~0JN9&4T0~|lSMũ"P[ޥ0w8좆T0J"|H60EL6~B9,QMk7@Fia(9HIV~LA T6Mm.LJ?`j00TP|Q8J{DnContainer}02:000J9@ZH4:Uz06@DH#1ũB XܴԺܺfHGJ6qBDp`NCBU5s,kq}}6*kx}2D/tqSectionInfoTm56:*0F0JH RJ0z0016A𱲨Y%|ƨ HVuڨHP8r!T>0|868H V!0HB/I6js30@wjA! =&RH|"gl~Y^Hxl?4au9dOtqAddr|sSymbo1ln?i@rfg{O?H3E?9w)OOF&Ot:OLO/bCrCo@hDxOH>)O柎z&XAP*H(j" 0au)oB_DqsZTܽwExporteT@:DJF8HnX9!* 9@H-"\}Fzt;jH2X* Ų,vũ%Q`FD#H]rG6`C<po_OHiyo`Z,Q&HqUa_K%SetLoaderEventNotificajc;]\$Ū0:Hv:(uO%a:H=ذHrv`orop9JSystemXk:RLнuRπ!l),mA3>EHqBcl|ώn!lBP14?ExtensY?, "ӄLJ\n%v߈HLў߰Շ)cE v0aP23Rhޢaщ8~hc8 7>v,XbǷ8)@08`% P9AT!>NѺ4&j"Ӏ!jBQ8!Kp&`>,"1;l]Ni ƣi߼ҡ6*ŀa<LqٰMbP!x~"i͢1~Run|3x|+x|#xҡbh@B@ҕߡ RemoteVPrintf8`9&0@9B.|h99^9 8llB#8,>OcN=Z N>i B?|.ߡ>R},Q.JiQ=^jZu@ߠaInitBr_eakpo sHbx8StepSta{ck;H !RHƕ^K~]r9/D]rHQt/bX_ializep>r q8^A; :q}"08lH8Vz};|;@ȶaUninstallLLsB. ͢KR Uo HDeavatp. k9P "L}ipbt}); ,=;ߠ;@퐣fX`ZAU@8| T:}@A$U` #$ |+ :H }LSM}_l[xU 8* |ьvlр|"wxl@$XzN XXN]BpHU  8+*!@?}+Kx N"* xZp}?}(, zWPEHhD!!0Uc T} (D!H@}@&UJiJ}Rs )J1% LookupICF_pT>~8<|cN ,@ƁU (|`T IjdaH 0@:8@4}E0.}D1.ή,s0|X9)AЁbU 6T:,l&9F_ĀXWB@F@B@ TB]A Ɓ8j 0(JqĈI@0(ClearIS8 |{ |+x;/`;.p|dxj@F)b⸭$ŀǢƕn 2 !-^cxx@K=8;x,\{W:|T:9&N z |(@A89)} W.pv\|P|8, 2l@T(/p,1 (Q}:~11 U)`"N 4rV@nQ_0[˓XdgWPP/@|;ƨR(CP?pfa VJo4PP?q>, u `z0~QJ2`a9yV!`U=`dzrVDDPABo4W!p <| PX`ڠx0~` r^>PD8Mqyn/u8d db 8ixl`&TcyX_%U}/888bxs2DHandleLLMagicReturnkA5;B/|3x:l0qbfa `|U#PHR:~bA BQ TH!i޼Gd8{VҐ@T+k&1T+2l6ЈTs dт0Ľ(3@`|PWTZtHrzb<,Xz`~ @жzz|,,User3 `t:z <@/}K8.8h 0I!|)`}cU!@} :ȸPs z,| Xp$ J2s8 h+!J1|R9kv眑%#=|5Data?^0t|+yQ8-ж10Jp8U$ rc,\' br|P|?.|W1."qT`=mD>QaQ^-J _4dxD1x ReadRoegFn;=`Ppc?PPʿ }p8|CHersMfq|s`vt ; ؿIC@. \`dhlAt8 |c4O!{\0|(5q\HQ FQvH߀z0LDebug !iExҡ=#x"|f|lv|/@ʅЄxx RH)7>s@l΂yXPjd92pDƀ@pEK}!FQE/s@&Wy ?Pzc aAXs\ qAHRawUe4P dx n)bJ|`vqvJpHNy2v{X `!`}a*vvzHsM /aqKzvOHv PqN U$lahn:bQ:d$?!O+qzqn`@AU?2p}$ , M:AN` |qT_i>>bpbQER~gOta|*^"b f!ad"aB$|/HpG'a|ń`$pa) "a((/@{ 8zKyh~zAPΗSingleStep9S0/ \ptc1Xf3*!3ߠ( ulL. 8kp@0TExceptioaJΠp8PpT>|Ԣ}RbjKi(ai. Cx'(a ?Y#@b|8 \9Hh@| 8U880|$:a|@8Є 4}0.}1.@P܆AT}@(~x}&Á]I"sMLcO`^'PM(pm PDzSet֙?}&܆ёڢpBIbfRp;B.p=q`/NqޡHrx,Zdbh"4^p(>|$^7 M+0cou;>p^t$Q~8P@<p8,cB FT+'>,ԅRdp>HԤҟրJ*0OPjRPPYr|ŘQ@wR'IHV=QV >P V>Q"5ҏHe3fzC_Ait|3xNT>|dxiC<LLUtilsMemCpbackT?|OD8|;x}CxebmΊ:[,GRQ,eP}eDQ+0kPQVHy1ڷ㈡>rgV -f1⫿YLookup@mbeddedSym0p%@B4f&E;;T@@{xs`|+xVa;{Op| Ir|o$ 04|cx%U@͕f1: HZ:.<6@>XkfClearLLTeamWs e6dbt|48-|;x|4|PC;Ki/ |i4U)~@@UڥJe,.:0f8yЦHW}9i$i,FžaLa<00o8P&#E.(C8<|| -0" U>/M`LegalxbolChar;KL^|A2氰v:09)g@8]0ETxgW}C1,l9ʁUU_~90("J0m*U0(I |;A5GX ValidNam?cJxC|p|! GK$P(l`1)6L|@ !!"K6`!+ oP{sm<1NextModulefsr0恘e0~0ۼ00!}C!"Fӥ!H?~!1s68U~'6tKТB`8,!1,80c>Tc>|@P@}>B;Wx d>a,!8U#:|~Jrz|Ŭl|2ϛ޿ aI9^ʀ@.i`$8f C8gg>6$r".𚱢bTc(zw"~Ϡ¼"!\+{@bπϠ   *0n6 Geɓ+j`(1;B`{;kc'kA<8>H<%/F=!x;Od"|cs"Nl> ProcStar*b2d!A!|#x<@;8 bP c`;0|yx9 8x=)dh3lAvbE0G_w$w@xdxHı@ҀmCxD=bp"a>V|iQRpdfc ` c768K%f@!H(VA87 !b郿j<$__ct__12TDebugP0etFP12IOPrimitiv[esX$__ud v*b $H8<.!fxB jPSendh(d4jaW}>@|4VAַW,^!H,"(@./T3H*"/d+0Iz/ J#($ FE`?p#@ H%E>?Rece(//%%4VF7$ɶ88/\;-b?Rgein&Őze?.45>P("ResetDataPointer|4Ty-&_P0 SM_ P9>P|u9Z!ljt, {{R9kڂ }9kl֘cA ăKaR8le`2pMatchBracPFPcv1p `$fa|ݬP W EwRJ̰~`LdUldҀ~`DdYdd!P~`Qdqd Ѭ~`Eded Ҁ~`B b PdpB\f`zaP~`qq8~`9v0,e:|XT<|2;} pg&tap}KR)Ҁa{t}.0Buo`@ӑDܗ`>oDStructS9B``PUl撡 }_Jߣx;a(A884,Ap 7p\1FPExt edY_13?y6#р-R1q~}8a0"q9H/硞j!ɂ6I$""|ֈ٢$\+5TtocolpingL15W}&_!|{蠙ܠH?;I`N MR1aTtHvY!4`\vH6`t6&A<6`H) 6av6`Ր6 pB0aES&}0TAYȺ0qpXeh0yp,cpb ;Wc۱1zxrpb !wqN0qy[8a%Y,rqaqs%!5Q@8ޘ޾ @0`԰ r$Ͷ7}*@:8vaKْk\֢ ,tHQH+ Hiɢ9})P (qX"1pP-?_Wk`&B#e(@ ;@Q}28888pa8o>/n 1 徳%𹖥n$58u!8J-~~ұF0'y"C_x8!`f^j} r`tK(ư`f.@BCqJRArgsAuxfc8SKR1m/;R۠q'HQ2vP .@X2P u>][C^np΁"&򎂻=C(%UM+6ppWy!䖚U|pް3`;AӰƓ숚АԑmYaڔ pp($nUFH QA1P6(:\BZmPNV8f(В[|Ġ㨞ެ 9 =)NR\2L3W>b1|H8ڃW!42ɳo3r!Fx^0=L3;"c2]mn8P -4`?P?BhHX "EF#^0L3b1ưɢn3vL)DF!}j5@#Dc0[H`ON2G8D Fa"]Gӣ:*܌r@};_hq#vKԋJo2_Gz_)P!8pt8Tu\(aJn!Vj\*aSP C=X0\3+`rb3"n3-wA 0Ў9nHZ5J9b3)F*aBâ횖h\vE>7>E!<* ;`,H<|"0"рAH|J| gp|ZyqJ2'Ic:b3b+K r`u@@l-g [ā(K4A@wP@@p@sqA)&סw XO Bp;Z$`T_KưjuLǤ!p$4Tǰ8`+x|3gxWŜ0|^H8 ڡWż0'1HLongWordAtGsUl8`*(GenerateSequenceNumberGvĐ 0( __cIOPrimitivesFvZnd>sv8`$StartIO "StopѯN+@$BytePresen"WaitFor4?Us RecesPUS¿`F!̢?+Flush_W$HqbqƐ@ʕ֚,#DirerNq&Incom~C Buffer <׻reak<߿юa@n!|#x;Pr 0~#85\ Щ8 h9{i9=U#:90|BCƚ֚"3p0TNubvP14MRetryPara{msԓńBi’]IQ”ƃ֚"LKO|T>U&|2ᰃT>Cp\ʠACKUss;Ve\d]5fHubq, f!0*fd#1X~`0+fL ~`֩ f8#f,f !!f!q1~`9 A6 f>, 60T8$`(P0jPƚ{֑J 6R8~$`~ a@` j L,H|i@7pf}#Kpe(9qjśw88KGrRm#,:pKW,:&9*t<N:&|~afTU%:}*/| ` ^<<|(R:/x0Hbq@n/WDjR1svAkԠ;`CpoT]p >bqZ,w@6ti%тΒ ֑/7p01%=vI>R2Z1A?R5X#;_pp-*<:p4T|iI>8$`4fH~h|a ?V\[!H% ?Dk?5(oVAPV_5$`AlB_T_N#H|H8Lp@D`{Pussc""#b1(nH|Fp8|*T>9ICLcJ}C \$ъ;"!H!D| @|b9G,0 $9jK"b=|Z¿Th"ǁCvs" 5RLP&|pK߬T#x|Ɛ|4"V@ComputeCheckSumsUcv?JU$88pJ< 8"!6P,@ȨJ⥿8 "!Kw!exGPq2FԐg=fP B` _ H m*(D Z Nr.$$Duj$<H\*u@n,ߢ B6Tfzߌ՛߼  ߼ <PDiremc¸02z0}PBreaka(扆*irnz$𰫰9J9k;RԲP𘤬9(Ɋ(d,>˓XN`ov܀!d|~x~Dk0!H*(0a8. @Rv'Crr&d L R ~A*(Pr8Pz̨~HOV:47vXɬ0a<xPNbArBj/~. u e5, >@ U#`/f.vRecyeHeadqpn=`d|}p;H;@T2JҢPݲ|en_0*8$  x@@ENb|`0B XoY,;}\ПPn@@;}Tk)6P, ՟ #]r\32:r q?4d+x0NbhlП1ר^"! :(VOooǐ:aT>`H~4WaitForNUs:Բ!xǏ74:Hf_Pp_iG!e_xP(Pt.:ј `_xP15TProtocolString^Dvw~!HCvATi>018ih>U8xAU#>wt H>vAG`Բ!FromC9c,ogFPcD@pdW, ld@t`|`8|aCh0 `T>0(vc9C&ql 2qzJvlcox"aP ofUcjؐ'`ޑv8coNDo7eCkؐychN"9cLength'8 |KpTl>}cK(q Q^xU p|`G80p>|b,<|R&:'q!Pp6r'cKp$&uaCpRtfdCopyInrwKe87 <$(d2TReply'12IOPrimit@)b_1Y$tۛeȉf5nK n KҶ1  dP<4U^4~]abzĚRein>alizeɯ患 ,^(">|VPoint-1~V|8 ~,^,Set|PulȯſFtx|!߀Av '@PT>;tH6LYfŀ ^_Ѝ]VPNAQKؿ=k>>!BfIZݮqf<ܡ.D!T/ :'ndAC;5I>KE2cFXjz |R" ªΒ&(d4ܐquecstφtPBm\`VUdZh^lbpft2;\: Hľ!ЉontG R*0DЬ5(HFvB`4T~~P(d7LLNub96"4jrsRzg,`TVI^`e20Z8StartIOFE/,Stop-/F+PZ,!o/+"BytePr}Pn@$ Q,/*փ#0F /@#@T!?UB1"7T/>18. F?X?$Ds?~J_F%&a;_RHG1#T?0ZHz?6?|c4?;4T qFBO0ZD#dEslOD2G/G O/&("OA*a9#9T$~plush^_p___(XDiren_X.]*_,+RIncom$BufferO3oa%_o=8bDreako, e`Pʖ30T`Cli0P14`RwetrramBr/o$Hcy_a}?Kxa|;x|+x}]Sx} Cx|~x|߄4T48|3x<|#xa@xD8UMfHL"P*T80󡲊.Kڢ5p.pFzLTaskHalted`|s13ExceptionTypesUllPCpargetscessIDPFPsPvPc_sKqN5+6O=Vkqq6X.˄DiD~q^U)>N16PE>20LoaderE1v3ID߄w pݐaZ#%8a8H4?88,3p HJ.gxxN99!h[Qnrb#1r>NCY{1V~ntfMsg`| ҀcPc!UY]ae;t4 >H굝¿@dY3ubbvox둯22!§ίN/rD' ~r88J<|;A8n= 9@O KM͟l0Con}n`ToHos_~C16ŃSyst?emInfoL򂿇#x|+P6Vn1qϴP\surnUUlUlJ~ɐ8S6%W"Mb2BT$GenericNotifyw¢_\Ki4JbjXrq">_HR߻ˠBAV`ٽ8 `If}999P( 89 &PPF APPR %4̐}%Kx1 N[,L ʠ=SppMultipleIRepl sր16rato9r0rAD1U>8~\6z 3x|4K]vwIx(8#KxR0`/8v'ᆢwTIElb@GetnqueUs \s!D2=8}y 8HLQ)],bnc8-tv`#>DxealbRĎUs.r&]4p|xx}j8HLERK ]0b]lk9t!7 $xEy$lbh/r&9ŃtaiSpec/7/I/[*ݲn/.#//i"?/U/? ?ͅUlO?*TToHLi"򲀸^D>UDD@}D D@E⁗<@H!@:aqO&8Bz?P/AlAH`_oAD`hAQdA|`AĦ`PH `fP`ePtPt`gPPh`kPQiP`jRPPQmP\ dUlP,P0`nPUhP$`PTUPTpP`}PH PUPP dP `9aP\`PӪP(PPJ dP`aPU`P-P c,PȒ``.A`P>AP6ZPTS2ppS+0pP1p]E %q4paa3pY`]`5p`i`:Pc8*P@d7P`Q}9PLHPUɔFh>jlR>p>]Jx>9֟t>iHfJ|:B:f:R:a:=үJ:fS6>J6b6)6e6Aο64򿀆fπ2:π2ı^π2čπR2iπ2E 2Uωf߀.ٔ6߀.ԵZ߀R.ԑ~߀.mJ.I߀.)%߀.Mf2N)VNzNq@NMN)RR BHS.JRHBNv8J)uJQJ-J 4 f*FNPf=Info,P ReaodRegeri/Write8/R/d"z/Step/d"/Co?ntinue/?q*?Se}tBreakH?Z?l2;?!Clear?/e9)?"2All6/OՉ:OSusp=P??CO~ResumG>O5OKiVCO_0RF_L@%0LanguageException@/v_0R_L@4!Memory<__H_o1archop_>hZoLAFindEmbeddedSymbol"ooF`oL@"voOqa5eam?oWwr7oVx?MIuaOy*xrOnDataAc_cuYzZTpt1aSOMClassq2D0urrsR|΢e?ForFil _ןMe"d1CN`eH !|߯ LibNam@9V;6@d, @\= |H@`Hb 9h[?`9PPWRPk_o8h PpPQ|cP+P@j0aVPU8H/_APP P`|;P~`,z`@ 9`H|`}4b b P0/`L|kH8A|讘}LSx`|^f|c0ra(_aׂ̪`T7b,PM9yP0,@7 @$`"`tQa@g|8@@9J9k, 9PappPtP0`TqrACaa8|.a|08E`Xa*q`|dpP*qNpTab`h`t( hs`}c[xP/P$,(c`|^qB.a,(bj-l`'aP^q|kth3 p^q9R 9lP4`qQPQ;9 PhJircrm_itoa+r-~`;d3  "paj/|pp b `(PcPԅރ恆p|lxL`Jt}cxZp-8gpo|ta9 p0Zp9A(b` Uk 6aUc8Ue<}c*|jZPЪ`Hb`pZpaZpfNUc 6|9e`$b`TRZpAFNɍLK&, (b}k~` 8A{PqQ&攵̲_dRtolbk"aP>QrPRߔr0RlenAAD8}p~x@_+x|Pq.d`!`UgƂ4sP%@8!8`8P. ;k;y}'KxXA`NHPDޠ誑PxP-AH`PONPLԤPPt ;oF;xtrnP2!aMPPzM8ctouppe9r@@[|4 X8*,QP8sQ|40)`* }cx|kk1!`Smpʁ9[`~74 PDʁZID|w (@P<8P[|8*a*4p|j|vpmpw1c4"`4 N,9| }b8P 4dZT>ACDReg erRangeIOSizew=bhK`lKժ_J4<__m___N@ve^5_LowLevel_L@Main_cp__ct_CEl;Ѯ 8!ؐ# Pi @ /MS-|#xıWP(6#e6!^/ /l/@ld__6T"FUi$pp'c@[Aj:Tٯ>| {xQ|;x;$p`җ@<`0a|@@N<|14|ި0cx%˖O:c@H||;P1°@?1o0 BClearLLB?reakpobPDb:Pa; ad@>w`bw@,K}Ed@|PH}҈@K Bю"bpI P{A ConfigureSCC4n"Dr r_Roeset(azEb9VXHA` PQKܾ\@YEnabl QPowerbbE; HUBb@808ې"90@`bPYк aPI2cT!*JPƂV ``/`rp^Tuaߑ8`wr@P~i:@u<VX(8a"HQQTi?})4?U)~U)rBhG`&Da|||80<|>90@B0D}*0b,@*]-C[h@YOGpen4c*_n@~Q*  HA|B ""%$OlȒ|@@ONWaiqtR\gabEbT>P01 X% CQ{ `H1vћR?1%xeea2g`A+@ }Agж^yW&Pp2Fg`cA6W`μa |B0;`#PHK"@C[!~T~>.3.4zend\s=jHA0"(AAb@E@:2 ?Packet@ry}pUS0DrpH"MAas@^@^Ze} XC*s  @YFlushIncomingBuffersDbڏ*'HPLAP-j8 `$MAU$6ؙރA%HDq:DW<`|+ ~D9aA`ߗG Non"Tra*8q88KH:u:zpY8<ah0q@|4aHDCK5e.o3G?etCurrdPtext=T@$. ĄAM:P}bL9?laV؝,vP8W| vP<(xppp r PzbDn`,}Lb8;UQ@p| g݊QT08vPHB Lnhv`PrqűYh,p!P":`VyFindProcessj[i(w1HB]^L "TimFvPP8!{&A;{K;&P89 nlw P4 R8P,a 0`TargetInitialize5G !ePP!6G:r3e__#`.V`F0=_qDkQ B9s9Bs`8Ё"8,b9j} @2ĜppČpD lplr`F9* U 6|ZVq9ts:~` p B z߿LLkQCodeLoca@jP=Z37%/ .,kQ4"ExceptionHOandljno Deactivate.q㾁; |;x$|3x0+x|#x;ҙ!|{xMAR`ჯ: :* :'@pn/ @Tp9o Pt,|4iq`+@OHt^:: >|1 D8<|@t$ ,w@t3?t~W4 | &Arᚒ4!=}8(IN@` VtXq(:,^jz`1x82IN0s0muҁлu>B8|0l>Bs8`A ᪠ f$j!B᪠Ơơ1IVN swcxwpz 8LL!v:`Tϋ@(PဋD}`* ё :M0Elapsed<#Ixb MData !pAddr8/9B.p}5) H8{8`|^@KnU:|`T:}eR2`@ }cxq9`P9pLLStepckMatchMR v߈I@@?"@5}Cx|4) ^FA\F@L8 pf ~MA"|i9?>` `[^&v @&TdB) ( (TT@CB8|0:,9@D`Id#hihp88X62$+‰Њ(9 `}4@%bzd ReadLLRCeg!.@(FJxˊϜϮ'h8*O:F)_8sN84 WriXqѳ1[!`w" @``@8 $԰etSmpleֱM`q˾888 8T*5z5q"0]1H8,S^v0jU v; vw_+(Q (m@|:^`1 2bbHZ7f48in߼0seSSystemInfo9|c40:xTf0.|. oad QU ز̲UF rm@oyn6S`|+x&8'^`8 baZ2V` GH(9Y8O p    ^Uw` LL9!asklQsP!U    qCurrentProcesc`2KBC ;sP|x*A|+x"L|#x88z3x;H^A4]K8!&k  A6H8 O`,}Pl8d`CF0?Ki2Kv\ | MBHw^A|1A=1`cJ^/1ZD|;xJh9!xzp(\,k1 v!60'/#?d8|*Jr0l4/?!8P9)>8`ca poA ^c@DNbĐr;S7@&uRTz<T8ߔXZ}#Kx8T05R$@`P|[+Q!1ۀ!A&tx8;[/KYn pt}@["6x,114:?L?)f,LLLisC%e}&zqr q18p_A|~x~Fq9os;p(J11$JfP}P<"P} Gt"DF3Qn7@!0PF_gJ|#x|#xz~0HVH H J-gzDdJLF1r0Aj{@Q9BsP j,0-X14JRPTÐZRÓ8[QG_PF`ӰXs!X&Lb& 2QFRI LLGĈ#\Pʑ;PQKMR!}"P@&tSLibNamez!T!pLݪHpM6^20<8-20 pL">Kԍ>LZ,T d0'K]Jw |+x@"CA֠` AtzA20hF9|} 1+|e͢A W| t| *,?:,|JdJRWpzQp W|*5x~L4QlBJ/0Vb>j| `>d dp|fp|t|gFp|h5t03ֽ꿻0~9 &Qʾ,:P0Cn}Vy-bϠypZl:!ontainer\ixAX@` vdRsVf[|ژ a]`v1iy181|h`PH-x Hߧ܃@Q,WEM{pWFMn_`͢PKnd9'H]HtBHb*5h L0*J픂3HDA8!21A#0B ߬; AXߨzvp[IsInLoadM/Pb%Nr!v:!?@$< ;BC qQ 5猀 |0Y"U$I?؀`8`b`~ yH9R[ fWPS!,tB*)~g\S`&-}!5:)5 RPbDd:ܪp4`TT dd  aQ}0xR`} Bp-50-`p6w>аO:^b"l`[q1ff`$6>8}ʑKu zvPS[֚P~;_a1a HHXF͉!})@8n_K.BpefP`bT.NX[nectionID4@/I˰K%B1V'?ԀAd2@86HIRHu?4BVaZ/^ @Q!A^0bbQqfR>jS(4nforPHv0SNO O,AddrʃSymbolsԲPQR0nQ|3+xQ|zPڔQYsZb`aނKa.J`P`ABp@^bVsb x0롁X `xFJp(3xP(!,|@}$J9)8|3H@ az0SFW\r^&b `5bZ"Q L_V1P_^Z[֖pzT1?KPNvq>JF@bP T;;@x0*MP/0_pxaX82\Z`PvXHiJXq \/A/CO_"Y@ +D~- QPT?Oۣ}|oT_/롚DqZ`X*{c`A^0>( 0w&4d|@(`88!Poa>p|%1qrpqs|UaH ?0Up.1RP> >Cŕю/"(rUS7wJ<|+x|3pj8MQgCU5,pF8H#}MQ">3UL0#Exporte s5MD2"rqfg8 'xp_ixQ}NQaX`PŝK:b>Ł$:HLjJ<𔚱^PT:|0.|NH08,ѡȱC}#Kx2ݒhV(X0 6Un}l6Event sLxX$[f!8Q@HQQ:X;{%x*[AP;',*2qH>zJ`\`*0X@vzJ(ȣ Ʊ>~aUat !|@+;`v43zm>J0a<.4a1|*8ΐU悧;mBx'"ClearObsoleteBreakpoint? 8H/ZufyBsp-;r|+j@@b43{}*;aw?e"#y=/!Ҥb.`Ł|{ }?K=aAB;;HxMfN%ɘ4αpL70d^" ab4ZDp8VRbAx^f[wM̪PWvV^V ^ ok(`lwI`{cu!dxxp;&& 8z& t 恳|p:bF |i.U 6O}'~Ua}\~|0@Vbi |(D|g.|8}Cx`|c 0|`Tc>ڝ.9ÀB &/* AcceptCFM9s`Bp,HM* ovT$ax4*p΁+l@~8|j(0=1H9kUj*~Izj, 2R%8Uc 6|*Ԓ *   xpnB$ReIsseR5`|+x9aUjJ@ӫ+|d@ 2DT|H.V2@UaD.an88|A r@v@*r@v@r@ v@q9x.b_K|d쀇e j(AA|pB*!@XNtDbA .{@6@>א@%/ gLLS}erNotification,83CQqEVua!&g 0Ÿp  zQ7 !EgPDQ ҁ zqK恈 }lX{P STv$,Nub?ExtensEP_9B +V^#3x|tP;xRqQ K!xUؒT[dc"x`YOHjqV,Pq`"o Hedmpҗo0Run.iQ#&fـV^HiB8(p{P&zcp~2Hkcs:h$ 00Macsbug]ou|i2~t-Jq.`DepStrahlptx|^WAbPfg;h;¥ހKġB80K480GV8/Kd#p.ibc4r Rem_otePr\fL&3xT>HgR||`egBb 'y!,Q=9iQhT?A="~۔f` ReadLLMemQ#}9Kx}CxT|f"ogYd+ +(` +@X+{P}:*4@9)NJ|[  h|i|@a;. @f=a@xzcy 8 |;WC{Magao xAL$<҄0|{` cfkH)dr,bV-`蘉Pa۠dE/W@`X"(9>,ӌ (UAN`Mǖ0s 5"y,ƽ @ Wri{teT8}DY., ?qt1%0Init69)( S^R@>pIn?valida ]l0"qTd }TH.|P|J@| `@@Pl[x|jxRT8}CSxXFindFGree]b]z!|tP#xWk,*9U$ߤHT.|@8Q 1*@8/T 8aa|ixU 0 ..|T>}: !>8noEq hZQ-!Cx|;x|#x|xf```Qp> p.<ڀ@az"@,`92ް;/|$@(x pŬx'x9Cca83 Ρ:d1_ٺ'Vb>x8]e;Tl6( uD"  A Tl -!*$ D@U>RTIsBranchT'dB!b}B22U#>2N DRsSubroutine1#i`!!nTd< (0K/]/4IsTrap|;|W6Aǂ |-!DH`8ΰ%!r0tZ0lr0h!:۔L"p"fqQ4<"p#BfUȥ`8۔(k3W@W< ,"4@R(@"$@2A?4'C.C (Cpް8W<|0|092o |iBWf|"|0,G`4?׵OO^ݒW>@@N!\W#81W.@H e4OO=rA.q0d?L_W+^Z0ΰF ,^2CpZ0}`H@J1Z0Q,-!0T`P Z0p `rZ0q0gPj|`&TcTc"M^ oo/ea `@|c |c4Tc~Jo0ooo:oo ochc8oodoXoja0`.o`r(:LD_= ,0akenv$~)HZn/'$Syy CPUCaches;1~s,'< !K@C8sTOk`hĀ@?U){2 K 1=)#ȅ Ҁ9։2j\Configur lf~r8 8d蜀# 恉l9sUh} hց8UJ>}D }@&Ui{UJ?iJL>s 0 Udc9 ցN$tB$TX`{Tc90ds?VtrolKeyDown2<|tK󤽚'8+|t9(2 |h80S}) 18$ 8H^Ј htz?!8 X:Km"<!L 08> dcmdRunExtension"ȀbĩocXCbc𛠢 L'>|l4S|jG KR` SkipSpacie᡺AȸʱP0ҽ~00|#lR*c׵vMoreParameta22!:5|~A>|2"84tנ[ P-`|Jt|ڱH*24@| ذנ| d*%@WШy|HJP iP 06\EbMW!HvD$GetSymbolToQuote|+|dx0cHq[2J*0 DrawL e 0DStringR42|!J Bn.PositiS!b| ]$Zұkl@udfhctt 6@NCGhar_렩- (]vܔ8PeekA22~0YҠ Ҩ8-$?W|9PLdV ržK|BYk(ܚ ؠJ( ۠, "ґ'P͢K 0t.hq`,ҐX?8|4T>o|]@|Ps,rа!>Cݬ0s@"TǀC|X udCW`, 0,0 fx#KKD[@wx|#a#o#1@9B8;&@ .U䬰E J _ Vx|:g#DZ;[V"Q8||x}-0a "9ґAx8C!i/ Ҡ/DExpres谀8o@#x"ж1]z0j0z0j0 |e4z0Ai+9fheadPowerPCRegis%"U:@l8888~H"l9 @@@@b@ v1@2h5Y??Write>颰ΠNFX,OFai{ز᚞ܲ N : 䐊ؠ l ; P(jӠ2AӠGArQ{}kuB8`,, k#2#9ӰՑ@G}/Pd,9}l[xPXZPL1FUTd:T6HbTmU+ J`ۀf@:J`lS%|B`\"B`TnB`LB`D2B`>JB`4:P-B`+B`**B`:P~B`E@fd(R-fH   P )*FH rB` |l:PP\P*/HU ̩%H ~FR`6T&eހ *8@S@90 Lex1@,{0.STc*!3Z?xq2n1xz1v1~? ?7KB(p QM` `CH *:\BEval1tK (W쀟x0@uA0K%G@AM/"pMatch2D!?( ( » P@"Q!H I p)a8vqj8-v37xC?>AJ`( x@APAaTb Aj748Z0겈T @3 ս$By47>(B00`%?0:!DTerm11-"R1N00 Ќ:A!v1KoɁP B`P888_8l0T@@@@}@ |dx@ 8gAH>PKubDHJ`z/ 0 ,hl0@@mD92_DR ZqNX=D |cx|cb_DR }YCS_ KU_-hD0hOO |G}TIOOO_SR"Xxr pFTG-Dr PvT9BJddQr ,TidQr!KR10" Tc>_DR#zQTi>Z0q dd`}#Kx2DR$*sx1CSQTiQpVtdif_@A993AfBԻb`0^0P ""=$r рl0!읐}b||?@Y0 <q*|~x(Cӥ4: 1W@01*}^@pzpz"s89=JV0^0b0 "">$ro0K뵐~RU<ܶ0_@wO!s793a f{Y^*5zqKPA0Z `*TɕPœZ>0*@0 $U}=xG{zB% s6u{!zɔё=HEɥ.bȶ0 l*8ũ-دΠmP|@&W޿k~"I|*Ya`0JR@00FʓPɱj|@ts5ՏYe5N0=R9p4/W~@FX s4u`U}H|l0{!lpu׉Yö0RpV]-F ʓ -Pj!} p̸=8@ 23z}pib0vpap-E6ޜ޼VjI}~*!RDr!YɔPa|] Qs2ȹup|}a5pT0R)LɔP bs1%%B@lSa0, 1.]qbj?l9 roc2!a|e}RZ# 2o 2 &!Write&!$: k`̃"`0B `o2(ɔBK@0 R(1cۥ42 Bl0Au* Ezp"1"|Y|4| 0@6PLvStringjq#x8B`4T;>q1AMpndCharTos n.n;1|&:8\&<&>>K{eUxo8 xʑ? 8<9_:K7XoP,c(πAxeo:g`Qk1M|e,>1貏InitPerfTool__6TLLNubF%; p"4ƵbP&0EBqbft#Ge/Configurationʯܯ@K'J\>n%3*!¸γ.rd(r>.,qY4ϧ"LReportPaOcketd^`H MBbH!@4A__m___N_veDebugger_|氥s_hMain_cp__ct_ 1AAF3 QFXji-sldvaH*8doInruypm$SetS?ampleRdTimerFUlM9 8p8 $a9@ #C@0nrd r*!(`H)~xH(y~!n`o8bQ<<'ᒐ !9_  P;' ~PG$ZWjrEnablvI *? Dis&鉈]|}l$8l&ZlTStartTask b&8StopQIsInNQ*bӀڄ ш ,FaK& ; r\P6T_MInfoWaPG/8LC cL# .( .0m51"r0gIs c$.Is d ~0h0ubpȟ< WŸ12T)UtilityFPUlRUs?OBT2?'LW@OBʀżP{^O15T3rE O7@BOv]O;A_%:)bbQ$RіQ0bR?`$ꀊ/% ;_nR_dZ5rU~X`$ӓ__B!<_&cdVF#ofOoKTjo\#ᓇoooAohU"Ďl0.P7vT:(}I UJ 6}R  9`Uvڰ pv}G[|Q}d8U:( jl9kڰL})B}:A_}upNod4TASPFlU)B 9|hx,($9@H%ph(=p:0iU4B8BhN8}cx@0N9lcx }fY}@BZ| x}_PUpLcxi)|Z}@RЯ9J<(zPN8_/T^bNbbO, L }HZN9_}b|䠀( *@b顅8 |ЈLHT:}JhUDa.8~/0HUl.V 2xZO$!;AcAFun}1llRlRvсEU:|`UK:v|'pgZk/q40n,[j `9hb,M|АcvkdI8vpn@ +u`ĢJ~j!(pzP~V9`k| XU`Tp#:~ ^ё܇PCe 3PnT.&@|?S(&wcDQ>_216lCML0qO J2jXx K NextBuckrRRAΔݰbD恀0b?_֑/;@;$A$;`4T}t:Up_(}iЋh (A8hT|p|T<}0zP8<@*S|,r8J~<x8kz.@rᘚJ"*0# gj $H.Jl4K D,br@ N4/@daZGizCMP[࢚4WalkExecu΀ATre0Pa^אxct@3x4|+xq N ;**4Njpt)*}?HaDzP(08;4ZA82c8W}`X8_|#+t |c++ИОo0UpJ|B%t/" olveParentsOf%s!Δ|~x>$p}Cx|;x|3x|+x|#xzP$w(9_X^(~qp0*t0%1B@;o|axݐ;|FA:A}.%>DeI^U)~JAp#C%W:W,EBvJA|ExfxxxbK^`04Sp^`Cl)T[^cѿ(|XrRW;|;x( cPPM9'XT`PH ? }~Kp]v]}>K 0_+:H0 O&;P,m|AAx'P|0@`Wt(lβXTW;xp 8WP}i9}RR|*a|+x}%Kx}fRe_S8hp|B^4pReg= erHitIn.Ul"]f<W(Q7s H7%|}h琬 r|z,H0;,@gSp >@MAB~omIn`rupZ0s|#x,+x*15:pM00n}ؠ)@1@琓f_]t|<(a<ǟٔE^WB(JKLF l__sd__12TDebugPaEFUixbTڑ@^I[*`A`އIOPrimitivesnې֑8 KQrr\K]&%K&Њ>0TNub JQBBx|.pWcdŌLѳ>x9p d pM I 0|Db>uFѺwyhAn܇"bL:A49_P`~p 40P2B<43Ca fK2D8ai`Ѐ|brcq E{:*2Z@RcZcmه&bT/c JА. *drbsz1(%Eepإ08@%HEPeXم`٥hpx%Eeڅڥ%Eeۅۥ" țȟȪȧpȯȪȷɻɿɪɪʪʪ˪     1j0|| 0!ZRd| (EpT>8|)TTc '|cT`c rb|l||LX@1bFfoF0| Ѐ#pCc"x|ydh0g0Rwexrd=`e"zr0$$8!JXHHT!BRh|ptp 3p!|U`00dph"0N4<:J0N\1"!?`c|L00z< Av!4$b`fn|31 $8Tnr@fr@fr@f0f|l| l,0 r201-D@ЀBp!|d^Mr$r@u@Br@U @r@@F0QD\p$@0qΚ`|L0@| *,RfL`1@Qr0\"AA0`18c"D1| BB0Nqnpcl@:E0Q:XC"B$A@C|`XRc@zbcP1NL0PpP3b!ҨD@\p@d`8ZvBwQPS*SD0@TcTc4Tcz@4a}UTQ~#?B 9sIrrl2rlҟriꟼr 2Rpq`ch!: P     (    4  $ ( TX   ,d\`P !"Ђ 0X (@x " 0c@DBP!H)p0x2(0202222uuv2uuHuD v8"v3c8XPNHJ!L>pdl`\X!hxԨf/x`0   l0L<l $ !"#$&t')H*+-8.L/013 45679XpHT"WXe`k#f1ӳ.4DHlJTJJKPKKLLpN|OP!  ("c8@HPX`hpx!h`x"$`B$` ! 8T(T ,unknown exception type %d%P iLLNubMain:: ( Error from LLExit - {LLD}LWWXFgLW&LWLLT#WW&dL*}L{A?LAW.1WWFhC& -WLL Switched to Macsbug- Gsresumee+"WLaL{{WPw64}1D}T_L 7D}L1P 2LLcL}*C6AL3W8H8<P>2W!eKL$TTLL $HandleLLSingle_Step s} " D P  ."x prNNuB#}""3 ']2t!!rD0s!2#c  ,8DP!\c(dp|!b 0//0"0 &bad range:..Sym Invalid PEFg$%X7.%X" 'B%c *' %ld#~### De{gertensaborted! # %" C`Dװ!AEװA 0HELP%s Dx*WWXLWX?P!!c `G`0(0`8aPX``@`hp!l'&!!!"c ` > (!0cж`l>!l@H_P!Xc ;@!h* x> (@~!(H!Ⱦиc ~&!U ?P["! a)n%"8H3!10;`P !hcpx_(n#0Cj?E _!-DFLLf7"L#e0gD?"Tb1<)WTgH&b00123456789abcdef(HABCDEF';'B@g'!d! ,-2147483648A%AAD !!! 4GetEmulatorRegirl4SOBPrivateIn@faceLib0(//Nup##l#P@ncod2X NativeckZKurt @Joy!peffpwp`a%WIqaVP#;``U UXzPc VWE`coPD`VUX =S !ЮS%WD!% D! FSD DZC6ThFQQ9DCKRD ;c;9dKcpbcpycpcpcpcpcpcpװ` ``*`4`>`F`S*`\`g``m````Ī`ς`ق```%`1`:`U``u`````````^``"p"p("p/4"p`a"p`"p$JCStrHLookup(@netSize@ToolboxTrapAddsDeferUserFnMakeDataExecutableNewPtr<ClearVCBQHdr@LockMemoryBlov~ΈFSWri=LM@ROMBaT<OpensCallOSvUnqsal1cDO&esourceOnOk^DCtlH9?InsXTiOӀ meSCSIEBusρGestaltUn ContiguoĐPB߁I?nfoSynm{`ClS9M@)Map5Ac ̓@@I@ir<Zon/etFPouPhysical:(pl@ʕRmvetӁ4ryvЃDurPonToAbsolu=DelayForHardwar/nchronIONOr]pcmpfnjInitItt~TY8T0N |!HрAH8!@||}x|#xx}W?0OA򰄶q4 Ĉ]X°PƱӰװ۰|wx88; Tx w<Tc|@@ |#xjf~e(P%`;P(8^.(@ߔH%~.|@AjT0kH`TTW ?cxDx8| L H)>T0|`5+(`}\x;:6|}0AP4 ,((W 2HM|4 Σx3 U*H`u4 𡺿P|_x;` 0iR~8T&|P|~ƒxdź5@Og} a<8aWhv@8|txt8PP80ߐ2ߟ|tHѐ|{nvmr<`Pibibnzp}Uz]b{]}r^Eue-<`W8c!AW*^T`)>k@vzce iar3:J44 $IЏH5v°BKv!䪴|y谚#x|+xT?T ?\l;| d( ~4 Cb}3r mf$ ~PZ;(af/x"e(l"y-$hy!ҢE ()rh°` ʹfX5:I>V?h3HIV#qo3iz0"1Mʾ8m85v?;ct%`dP%`|+&L 6L.OXJMKeMn!CZET+p6EDOOTҮOXG@׋&ThL]&B$@cXT>TD.|xʽ|dxT>xT>Kɖ^`W&a|x|#:B/x6oHdVam:19ю@`UPD`e~G`c`peI ` qaEa.qDg'| :AB`<8 ؀z@8,|d.rgS^AhRq`TQ<:x`E~`u)qtqdp:Au`@ ў~ocbd? f@.\Fbb`cza&B{pIJ!€?j€Eʿܻﰏ@a^1ψQdHխ`0hN9pN:P;&1W>pǎ$b}8_r~F}& T{ hbZ} F\B6rTW }`lHyrbBZsњb}Alϔ:A֘Δ:AjFHbG,Sp ()'aZjPV> 4(§)bgr@RrΔr)/ΥFBo6qT>(|8nrBN1bўab2D˪e<`߀ 8pP4મpPpL@dT: p>p̀QzPdT(48.HĄT(}4p |.p͔Q TXp |4T<_X|.@&r|-Db5djJ!8}r|3xn|x©8b͙oWљ,_@`d<IrTW>T, n9^ ѺcgЗFFOLp ߾~p;QUR@p=1p}0V|(| fߨۦm:ЈR`Vn?ѥfh8RT(!8H1LFzLy7ӄ@W`>" d B"K6΍BT݀` pT<h`V0``QHa1JcK=c`ٟW`;h>Cp`xҌSOpReJR2B@Bg~_@cJrpR,fc5 W( ҩ.! ;6Va=% ѿ>nc`b;W Iy8&W`Kaib@Vc.U<8Ð$f.2OGjd#xan.ZqB߄Ā&Q&/ad|{x|#{^@(`DOq$1/cgp(:pw|@Ɓ.8*:=0,D"ATT:|c.|i, ,pp2@-ʒ(#qĻdNP|PM Z8?ʁ88tf0RgB"Bp\&@"@12DH>A"<8_0a0U0(1Ɓ4 1bAp 1#Գ Th^1W>P(yc@bAPH@DJH$pLG!`r ~`|#x$8M~0?|D2 ZXY7oT0({0p̬0aȹ̊Vp~1cB@T 'Qp4QEqT`SD( PP;`PȌ.BK`}DkếA&KQ&6 4080<0l\g*m 8`|Ȁ(6T_'n3D1DP|"RREV-m r |!rH s#I$9^!80cP/|b8:2o0D0|`b2Ӏ`s|d0ڰAr$'P-.O6 –`$009EB\ObDT)ZOTrA:0j|;i®&{);N&bt&"o4k>P@8I񝣘Ÿ$:>098:iaE ^=$Rzy΢;Y#9|uFPUEKm͏pBFiΡ֡:\f["nb RWZ>5K.!@TVZbk@J9TZJP@\=ބ-! :0$\RЏz6q:KJPADzi$a”:o 0׀lj@W@0v@zG)av@V B8R۰v@Ђv ~B|"PTc>'.Ku' 8پ|N1ψ`¡ሟ8|* ?O8:\R`~Yk}#,> @*6j: @Rۯ$@܌YR IB@LBBc@w?f`}xc%A8:Ȁ7`;#:ze`d T(V0`RJP.JP@ʑq'ڵzy @@8ddcp(Sp;*<<0|PN$ rA#=BN1*?_WBP::Cܐ:sVƟ0 *a€1>P!rNtc<N|^|}np!QTm`T2HIxe:cCFĔ{~a*s)aҦ@z`P"FKk%B9^6*qV BMrqT` 6r@4QT:~@(|Tc 6|`x411%Ĕ1F;;62Ѡpڔ `A0bb@@0@9vTS4@:80^`0LPR0:8J8@81@=JT5q4*D=M\1b&0@+0(`%D8A~@aT5fP6@7@ b0$@@8@TFXR_ |x//`,`>:юJqiqU,R~4}eJ`쀟@a8HA`W|c"W^eV4pTf^e^,p ̯E轠¢oy_,_Ĕ#x|+x?|3x(3R`(@qT7`>>T`琧%y̢`gT({8cRa0+=Oaxs;D "Ra0HWK1h6BCC6@(q15^; s5M2n]”|wpUpڴp8g{( ;x0Z9ಭ%oí:pڴas؈z ` #5c‘6@󠶾sڑ;";P(=a >{ ?W;‘AX;kP#,WaH?Vŀq_W>@~Xtn/zF8yp;;w|c@ |?ГW7ƕ8ow8"7`5~"/|@6@ |f^£P:誱D*|xW>z. Fp>`%bzJ`DxW>I8W6R "Td6m  TcD.|cxW? zx?xJ1 ϯᮀPЧ#CQgnL򠥵$Q x,*^qcW KdN\("b6~$j5{vどЎEWavi^p|yxp񺧐uapppFa6@Aa|+0s;txWsrVf7P^(`§'v;X;=qJ9x1r,c !KKź"|VDz!T`DҙA>|| ᅖ 𞟰˜8&W;OW`?ޑ*2x0"a; ub>F`޶0|yiP$JxFXfx εR/8oH!:ϖ-N`rτϖϨ a`!Jf aRRjW<6F@º =̅R,7 ^4<ԑ h0҂іѢђP"_ phpq&҄@.|x`T>`"|yxTp|xR"ya8><` aP8caDZJp`P$Po0QW5"Qo`0*Q8a!?ýt=\SPnِUT`|u}`p+xb"axOnO X_*^<_NWUZ_)rQPQPdp8̐t`pv`z` ~`pv`z`~`pv`z` ~`p$v`z`(p, ~`. 8. A *R4. ,v`Epz`av`dav4`Dp2`9p3:`;:0RvB?p&q8p1Bt2^qdD}|xx | PX8Db,p88dH`o`epBT.$ad$C퀷6i|c4Hr H8`@LN6p @` 8l <БyѲΓݔpH8z<ޮ8u@PPqzaKibv`zv`v`|Ȋxv`tꒀv`lv`h芀dNbzv``U""" """a\"X v`Tz$J(v`P",LJ0v`HR4J8D""yUNZPfnZ. nHMRJv`RJ` [c0FYdJYv` .6>`ShbLDu`.8рT|bF輀G  FcDz$Z( ," 04m8.A@~66`(Cvt|<`gc8cko|̀ H6e!:G‘}KLbtnZOfOB^Ph@`{p_ڨVQ݌P'〘| 'SP8H)"Ka<1e~62G1&A ZmLA0|xq`98T 2 A舏:(PAbp] BЭ|&TPH@@_t߶22 3P *e@/Kд. %1ЦߴXB9fS4`QQHy!10U0p0506BvPB1FT5UfB;0f1srDa5~bP^`9p}C]!!(U>8|(6||g)9U!1O@B:@{j. nmQA%13cF9>W D"Ү!!0 :4 դ3j6Drha40}P ;H6`v}`lHfcR`h0r`:@pG@T|8T?M|3m!TLT~8Рј߼P]Фnf_ fb @D0|wPP+x;UxP@Z0^3 YS<`sy8csa Їɪ%JP<"m2Fan0#%UB$Q0,`tH%P@I 8 O08qAv@T߀?pU @@@@} @$8@U9@:@;@@?@@WA@B@C@D@Er@|;x*FranG *IJPJ*KR!*LnMnNnO~SP*QnR*SnTnUVnW~X~Z\rvAzP+x|3x|;x}Cx,@P` <`8ƀ<`<<`p`_$r&,Qr`PPWRTPPW@PAPBMPW8}r 8cU P9PDXZjDRV tHv( ѐ<`Ap8cpl|| 4<`e ߔ8cCo <`m8cutB :F;:*0`DT!`סE;y0W|@8!`8«RfP҃G3X4:ɀ`d@FF0]Aj` "4 RpHDҀ,Vd`Fp`0H ``>PHDq"12?@P $ִ A{-!AA@N@ .APKdzFn|f+xT>TT`>s<[`D808Q|QzYe#~08 n@1z 2HgyB|08-vzh@qpzg#x<^f<;p8_"8Ơ\ xM~T`|8` 6~FlrsIq6q4氥v(P 9jnFp zd | $xc(KKF4`ODqda@]`f|w>&v! [wU9@`@|0}^T8 ̾|q|1׮9 @QJ!9q*|J88~q}.89)qp{uqqqj 9JcT , 4;?ೞ;0 ^ 8~e4A2ҀH0DtTw[(D@uHHcT@^Be@0@I$@$B`(Z`^E&qPaT ?7pea&{0{@xґ@Rb"cxF }݆4HKQAFnMB`( ,^T |#xxdx ?jH/"wxH.-RRp^ }dD@‚ ̓3ހP"`W;?`H\( R8|+R|Xidd?|L/m^KU^ϐ@" /&8;K{q$..EAcxk b%DhĦ`QB?0E@^TAQI.?-2AB#W1`y2LЯ򯐑-Bj2.@IdVq~,钷 R_29b0(0 81PH ; p`9 2R<`L^|P|͜GRZ4,atBP ShN05 InRT|*ABN0gR1*!&pgB@f N|0\ҠGRWHZ FR_Saa:n`Da Tc>|9@Eao|| r g,78a @oa"NqW; ԑxʐE,)B (A {;B@K]!V#S^%z$6YAm2Hk)u:D)tV@ VF8FfHean3ЂFfz;|-_@5â^ $0Baa^ cܔ`1`V`zՅ`|f4^TpK煖rp8ЀO@PJܮrzd,DC!RΑF@]ԍ``16VazPRP4rpRP82P0 4zP0^TZP84 Mu <|`zP`PTd@|+xQSQ` R^8 T:`0P _dzPR8ө "rt`dJFQ8b:`:`:`:`ZqnS^R<dP}`-bʿA=҃B@rp~=^AK JBrdT`?}udH" r^ BDF@.ӐbӒ EK5KI"h`C䱲~@Zq2pR5\b`aA:vP|!t%t 8L$ uA2pyp"+ B-8CerߐA`~2p\b.R f$n 4nx\zEKv(  TA$ H! Ȫ ؒ ढ Blo=ē88 x&u ਠB} nUnn p(t(!dp$}"vd-q"r|1#5` HcU2n)AT8b pT:|c.|iN Sn0Bߖ!}DP`<*~,rz~W>84 {P{#ʰ|ߛ,(Hb:bJv4($! 6đ 6}:Q`c `UM8rϾvDt WȰnC%{z{ xrU |VXј{P1Zĕf 0>Y.R. /8{p5:ƿؿp>6F`V*.P 6)A=qH ٢bcڲ|ʂe(6)t`ZĄ*.Pa6t'4P-Q>Ha:4#pN AFH:z:gARb̶fnRfv fŸ^шrһ{bӼg8dMޱ_I_5z^׼D 8۴P^ MV^L KB|1}Xꡂ(U(\$^V`ZT(4J@A.FH<|B6BTfx`AVW>|hxT8!Tf>TL@|2}.8p 8cv!>Y̢aE EA uV}  4V(~]'26F !VL[ Jp`6`b}ϼ|Mተxq<ՌE ! R6S&!*m:C*$b jS(Ė Vᥡ^>Ġ.P6F[]V8. ,T*A==AevZ"V2ЖP<nG~<5VQ4-!  2zBOTO .@pVAX D)RPRPqE gK(45p 6{6HXVBX%P񦱪ԖD"BX-TQ2 ޡT‱$Pz?XrĆP1 _^yKk)Vؖad=UX dͨ.#1r@<]@Z8aBpF Mr~`٠cz#5P_@H(d4e eB*<6,R;XsU`v :xVT@h 4M-+1Ѐ#x9; AF8J&@z*>I;JrUT^ |^Ib^JRX^8%О`JU(_`^Z`HPxHUV`e  %/-4`P"6oUydhy~؂2*ސh`摻K򙹓~x* ֐~搋~蒋TcK|?.$~䰞R0T5fHОL-~PT=6C@WHdD*.(~m@SՆz&>SS6آ6(ZeMއM͒񪢐H@–#xAT8B@D2*8HПLآfp(N:P Qp|:q TDD@õE@P$j|!rzRq6G!rk|П0REz* -T:FªurzQ  06ƒ((5Ps ހxlFLDHq!A]@.BA2"JUq " 22qހ@"{P"5 rހ1K96H 0YrNxZH^xPeP-2vPEŽπ!π,>PzO-2v(Ib&I}–fx2$Ur|#_x @La`7|30*y!8 m*K-ހ9Qf8<P|mA(K \/( &/8*F$qQ/#maj+z#Ђ+(,(x:RbF?JJ2ހҊ;`>`>`ߐ{>`$8R>`.Qj` ְ j`r`Tr#j`q(a|pzְd|VfVq<T(xb@}4 r`3 |``vdQrr`T1|d$ſ3x8fT5*{q$(؀wc4Fec"2pyq"bT{ưv^ lހ pR%!y`@d"yDp5ppr$İȱ|Ӳ΄u|+x Az$# EގTW~>;^NQyaP(|@<`xEx8z4qƈ`|՜ KRtfsrc(rM&+( r(`@x|+xR@!pcqiւ~qUꂱ݀po!f(:T`>`UfrW֎$RrHvebA !=q18<,8a8HDJH!*q~Hx!F!} ̖jC.*HŎc^by568 y jp;TpkOvdd}MdXdO>qWp~А.)P2AMr|׃.JBQTrX.pH p<`^8<@t3, P3h:ǰ~x~x;A8;;{PPL?|z.a8jJ!F`cKAF!:;|Am18b6KV;ZĘV;n`(L,#!-!spnTgTc~|:T߇|c :8@|c\>!| (|89L7|?;x|!-Bu//q%6|8y("*hBadhlptx!|Aa !Aa| |&P}0| _| c0g0Uk0o0s0w0U{0000U000 U0000U0000 @.@8^v,`( 0P|8P? X@((|ex8b<8@K&JA`{@s@NB`c@( 'NA,o |3e aH@h`wy.@^uaDHr@LF@P0T!?\A`b?t????&BB4FA}@P##d@\@OC __._@_R^42y2`2???O KMBMVBA\DQ{Q lPD@H@L`P0T PPo,o>oPobj\jypHs2ơ6`FpJr@(` ; _Xc L>8@pH-~@H1Jr*Ѷ\0 pơ~p0p>L'1zs,?=K&KyaZ,8DT q|.8T>2B K& &٣Asܞqbq< 8H3q"pw&(@q n2 &I'm⾁8?b 88Uq1^`< 8cEp0}JujՀ0AiZlnjvKjr @D_Ԯ ֞q|+xOܞqpخcKZfndpVǀ<xpetgl+x *RЀ@\0<<z,چΣU@ RЭi |#M.8`ABȰ||Н#xkD0@|=D H.~x}D;pRW`|.V;{Wc >*A!ڱc<;xW$0T`쳶PFx|!-q+tu8ܰo|.r|.Lp>pU > pU>pU>pU $ >$pU(,(>,pU040>4]8>8~ NgDFhnfp*6С{UF a۟n:LX8 x>0ː M݁ 7.|,q qpኡI qt8S-R-X*U) 5 AXW$(.^C^|x|).^188t2|}81|3.vBW yğH( 68d s4|i,T:A$|z-n8c 7j] %pL;gp1( (vlA[ ;_x687 ~U XA⣳ @(@AJ$~ r Ԏr 1Ȏ~ r 0|0!'t W6FZ!"$1~*'~ 6$"C(|&J7u֤=H#<"8'$(n^4RVء~hTrX֡1Q nPn((ӊe!tK񧙂rDo@4VP}`H";@4Ĵ6`5^opoې`j(8PApըpZ"c1Ss$SpTc2aps& j8OHK=&q>8a\OH 1R{{EqH!6Tmhp`_6`բl0om yoK=gyx@q0p |иSp2a& 5VD;݀@8T8;c c۲Q֒(,zp8PQ݂OPqQ2VD@pW8P_80|!.㨾k.*!߈ 0eA0֐$(ߐ)63x|3xrdPpD|8ܰSp.Q@T8.9#|$Fr"h} CxUE \ ,8$l9ǰBk9J|8|E $F v6.:Dsfq1E:8/`6?64e8 {?@-Fq.`\;Ӑ;@0ϛifn>CW>_| j1>yx<b 88&u S|wm1@՞C劂^ӐW>$upHҴ4A>E<f<#xah@"8Ơ8p *Ѵ~)u>gr"nptt@j1fq&Kџ5B21 @$!CϽFvဣepz QRKa 5K:^ps~" }sM~ rriRH]#y2"KoPb"MHA/9b("S/B,(= /)s 0(9$%#/)4s4$q#7?V?Pk7#?9?|zԀ#x|+x(9;H frUrt8Pr0)> dL䲐FCx8cp іa8< 1RAT>BPhQ@T>T>|`xTF>|x:QGfq88]p `WqExppƒS@brẍT0P >9K9qpL|4}eP0|H9ֱUEP}.p(|8jkcbe|Մ@@DB`d< .| Fp}(0} bTEtsbv#{.,@ց8bX<hl ß<F^fBFdK v!"c| c?vVEaу?a`4TȰ}.Hθ<2Ѝtа>L.bKUѨDPpx`8?HK5Pߞ(pwK2m W㾲P`hXX@D|hΰH P1QFd\ᶠT2Ba2D1H PF`FbcbH }FXRf2hk8T`bL pq.q6J$:.q`pb ݠ.qpXPLDA^Ebs@",M6nrA `4@/&僓B]`x~ܳ^+rx9hyPՀub KQֵHҪ(, FbD؃b W@a*:[SH`@ּ`-RCA~pϑbf ^EI yy"nᶩנίfAH(D:1riBB%^͠`bbN^Q~Dް5ֵ==BђᐌJ`Qbq"ԍ > y6LDaڦ|p褆:҃cAS%iX&ߔනUV^Hf%Ċ b2ArgBTSRd@Zf0>Pd3e⁓p[Z,8K)Œ֞A붽2~ ҅J{p+\ujFV咠}Hz} yBқѥKP%"2BTfxZaB=ɲn < Q 2 *@"FeZlSGQ|d@+x|3!j̦%TTJ=(Y8}ֵK"Ҁ.Զ(l}>ΰA αV:Dp bttgp=jt&z pX2r[SYPp Z/p8`A)upy\zR?`8bH*a⁐dyPaPe|dePDTRap`VO QP8|@"Q"`|7a,P`PfRKR` R` @p"`| @8bJќrOQe0;;oz`h8; q0eba9ڂ_'@?`aҀW4e4:0@dH"‚0.pN8`0aR.pZ@BpXNH8a<gaN]Lq,s^u<`?HP8cOE 5(gd00Ch pE ZII5ЮK@@QQ-Rp`xVUY[] pm^ _`-D_`}MI```2a`!F0b<`ccQcQdD$|`d @"Աe&fdZ p gp&i=xjMj$y%kImkQ (^mZoq#pZ$qH&rK ^sqtYL$9l$Zu! 0weax^zZ`#{`&-|&~~paZ&!M㕤%a$M1IUUx㚱!<㛍! 4p*`㟵mM0H#(V&xvA1&󛣈'&TauPyخj XU&ծ&U@(ڶ#5 Gd&9-u!tR4T!ij!# &% am0u4 LQ lVmUmTUuUM1mTƑU1AUmTUVULi!mT@hdI˥i1A4eU]QТuQZqD1@KH1ҡ1Ķ#e,#j #@I41$Uٱ4%e8^v"v$4, <$LDT,d\tl\d<Dl4tL T|   x X  8   8 xX8x x X 8 XxTb<\xH 8 p9(Joh0!" <d ܵpp\ $plH$lhdPX:H77h7T654414.,,*' \E Ch>;KUhU\abtt~X~|z{jjijhgfd~@Ǩ\x,ŔHİdܮԬx4d̬"x ?>Unknown interrupt source, can'tӀstall SCSIӈhandler"pL 1Got Modify Data PoԂ MessageApple Compu8/F`g`VV*VVVV`vvvBvJ>vd`FE֌vv"PaNu#x B#O.i]/Ho zRNO _$r2"P.i! B)Jg/_//* Nu@F|NuFNu x g x (g @N,"9 iJhFf(HfwB@ 10<F@H6B(A |" sN/ *9AJg* of"/ (m`lFg1(_*_ _TO>NzN0(oOHĺ*/ pJf,"E)|g "@JQfJf "ijg0Jf)g$"_ / zNP _n`"g/m$ ?L#Nu y*_NuLPI`A 6F!0<FC"~FAGFJPV@;GP B0,bI`/ ⾖!F`PAZ`P:Z `PbZ`P6Z``tP`VPZ`bPZR`PPRĢGA "0"A|S`HyfsQWNP/:`QDg P Disp ,HyIODn??)z}~)/(2QP @~a| _xJa HyDTQ-xdPJg z~dzTNHy-ؐ*zh2֑I+xX~yLPrP&zN/L q+x0BkM-/z ~/ z~ &zNc&_FFVA- f/VxpZ]bFLV]G{Z|bGtCtdZZ:bCrtBFV&Z঵FRd6m营ZbRd WrtߥWrHLAxh~`j~dBTJ@4bTA(2~ q5P?(fa$G JgjHzPP`&& G"!K &z.;hfs-{*HFSfž|&k@goB&S? ffxnh{bg zʫTSے1b,r"ZbÑ`}JC8߱a io&aaReturn ca`fin?d pb": run outallback slotsioDagTpno0Main DJoy!peffpwpc"aȴ2?.7 0{Q~A@)A}&!T?M 0|}xA8x888jn,`| ;-Z,@;jnRH~=مVH.yNܪUffJ8(8/H5=|:0W B@jATJ ~Ds578H*68;?dBDD>`;)n!}DRU 0,_0v$a%TO>obV񛣤(2v (J jnx8!`|} NQ " In98o r -nA!@,;TP:8( 8`!T>|+x|3x;; 0H9m2%HT,t$d;8h:y$,(\,8hRl;mf@{@;;@b in?tb "yb $b 0b nb nY`"*2b 64%964u9~n?H, t}#K9U$r$_(,b M"(R({#as:*2C ""9 9 %0@qF@:&mV!|T #-!*j'ܞ }}@3P6 @:&(d(4|_*8e"TM@QGv ;@5HCtUp@Hv\@T%Di7 "@T2!@Q$)2TTR@7H vc֒GVS7}WVSuQB~TQRN'pVF%"(fP`D`+x;ܵH4m/=8H8A/,,rvq%0Ag} r;ܜ/{ @<,`vHqqqnqgA$gP|ƃB|cn/@Srp3"c 2~`xt*9JuqZPW>WnT83IR,Cn2B,Rŀ1B@3A2rD dDq3U0B"24AlC1a.R*TrLNLf"P2n$J`vX;=oA'"42!fBxF};q`~rrEFa8`BɺKĖB(` !H}eoWPD!+m=!+2*)҄8*K8=W?}% ]88z$+#!* Ñ)F`6@YDY!aK!(`$d.0&6T**C)52r/z|e!A\?`AT?zQ*} b`⪠T)M2bEP)B/*/X R@V!U!@.!b'm/C!\0Fp)@(/CJ4!@\ dFp%"!3]!Ф3$0(i?D0.?@2JF< ^+eb~ZpUV 26P>Ln?l"(&ᒀ2'wOIJ1BH]rO\ttADA]O$ERK&JKV*vwG`Hf PWg(46P}PAcџ @ڐ[PTf1PfTjyn|(TxTUATi~9/U<|h8TkPc~ A | XA|h:P8lTl>, AU9B>b`R΁q|`p8@`DfU|kPGdS0p|Դ2r8p+P!`mZplְ@;`Ð{bU8||(`o<`>p;s"q8㐾TURغ|`|0S}U7hlpta)Ro(A|`C$kb f Rb z}_8 `$)҉p?l`U> ΀҄ ڄ >#7kShT#݊w6S<8\Uԍ 9j8"`Tc>|?T>&W~I*ǀˆ:8p9$"i.57<ƁW9F$;@Pވ"֔T>P^}Pc&xK |X"W\"n`1֔c&c}91ڔP!5֔ҡK T>|nޠ!׼> fW׾r~x|c`>"!eFt1ֺcpB}9hlvg|cH-BjtFqWdsˀf{pWps| |(pTFH<|@pqF4`@@pF|q8c| šW(nYW6RRjRbR> #ҚvR W>bU!|W6YhSWYT&頞48W$ rYqjNY}&ar^Q3jp}6Up`ܠhT[K岻D8WW "p9ֿW8Wz6|-Gq6xW:|0bW>}W>8 T>T)x/W>}?&n &Jza &m &y7nd^$,(n,WWK27&2_6`54 2J19.=IW}5.]~_xx;>%}/~óxg|51B!^ :A ?rc% Wg>_ F>|xWЌ>}W>< T_fT@;WgbWnnB~8T_62|YQ^8]si,:A7~>@aU>?W|. U#nWcTvՒdxl"Ftp.s>hxa"c!ڈs)pjqzu~u}pq`$-*5G}P*d yE "2~PhƁΏN "q7P!q*6za` R2&A,>`.2.9z(8zW8Α;`p%"0ǐ’C̕fƁޕ/yڟ{F$YB$W#kt~ӠWxU&%A- |$IRdctzԠ|ޠkQ ycI^Wc찚ۛ(((^+WtxPEPIWHP`x?@J0XI"9EQ]!>||Q<(0W{>T PҰ3/nP@5ҰNŢҰN9]T8WTҰT2birdq Q-xREt`L9x#/:L3X/~E*m0íPx}4 2`R~}>ppJn"s9a@tKp&tSri =Sscsme2W|dxЭpj{a슴g| |H :jBh8@;h_&U}(8`t|[F8` qN8/=qPVFp A芵Ƀo/H3HNk*Wreб :汀ϠT:Ĭ*$,;s@4>88h 68б2񶸳[~h qYiOeT!8T1^a!<*$$U%VJE0S`RJ"%+V$J(VLr,9$@{NNIAq|qWtgб W:sIz@( Y6;<@.428Wf*`~~x1R@|Zb !b  ; W?WfV‘nrސ8WFsO'@< A@ )U&,T>(.$2(U&;&a%ܐ|R޳rHb(݊QߗrHY:2ѲـH7L!XD;|A[WFB W(4;0;\;a`H8lbAa@ZD8L9P9!T9AXWK9`@B(DLBA\9@A8}_DSx}E(G(H(ISr8K~~XKڴu0\:W:VБ@MQv~|#՚W(4~\H|@y2 20d@͒W+U"0@@Rަш 4 c P=!~K:'Tf>20dBz 4|@Bpp-H0 ѾZ9lVa8S}:fY1>P_H bLb >KEZFOWF>)F|f"9ʁg}+,'u#,U#$U#C>L, Lb}?K: JbsPArQ9w}RU>> N`r`^hxKv҃9 ܞ/@H|#|c[/A@|} (Dp}#K-%֪ DC :} *//(bH %QtP4T~T>/JHP %TC!//Q<}*42?D?KJI9KL0R T. ЦiỲ<"@@DRsBD$(R,bDf0nD8ӀҁrR҂ځ(]pN}u,fp(҂Hڂ8A@gЏ08cD@|HO@}C 1|iF|g*9#i`th|=h|i| |2TȌ H0UJ **i( 0iH$8Ea@KQ҆VQ8T:d.9/BȾW䟁!L*p 0!I6ŒNϒ¸f¼~„$˜”I¬HߒHˆ&H°>Hœ$VHnH¤HIܞHԶH ߒHHH4H€. Ff"c0J@8!P-(GГL4o8=pP\"L%X(W)`+-.(/1$&mtejti1210 $  .TI ,pccdsock" !s!fAAPL,globals zoomed-video2*" "@2BZj*driver-istcaddressassgignvesR:@*E: @< .AVgu#:NeĮٮ/$iJBFDPCCardCSReportStatusChangeDServicesLibDurationToAbsolutePoolAllocateReszntDelayForHwareSynchronizeIOInstallInterruptFunc*sMetetSet8Deq@GettCreBB?kMoveDataNamDgry"PropegrtyEnIDCopy/mp[1/e{tSgPCI"ExpMgrConfigWriteLong{*ReadBy6-Wo-.".""face"CqU]nsalcOSTrapATheDescrip*hePluginDispatchTable%=Q5W0f0IWkckcx~p0ndrv_X pci104?c,ac1az15KurtϠF Joy!peffpwp7aꍒA[5Z[vWVȀt5BfbT?MG|}xA`YQHw;fbrA@Q…֐| ;-p,Bo@@)AZnK?Qrw{ʑH0)KB pP?\B p`vRܒS3`a%($dSNbz~@b98  `~@Bo{|hґ;G;H\Er格,ȂhR'nA&@F`8S:tC},(lfm,4=!BERΡpbDBVPppNcP;@@; @N[:@burUpnpr:꒒;rŒ2p:=:N?H,#v}#K-6QWnT4M›jq4r,-2&ː@aP)@IadD}{bTr:l2:T@LLy $(ݖހX;p21 AC(tހ4VPP1b;qdyšfciVvc?*b`PBDqP@KapHqGau0B@@;PH#!R@1"rL 1BCVAJH`:B}VSx:~`}5Kx}ؐ|{cxxxx'xVKB HW~8Dn/H&ղ*jr0; @o*z@W@8(`|H@A|@ހ(ۃT| 1!|M# U):,@H8;AIHQ]0/`J4X) Z<#,#/#&/EnKh/\/tbXc0e/W HҜN(pZX8m|(8XWïT~"`XVsa)c@c a$cT>nAZDU$nV@nIV=1ށa#p8U#4D,bB@jEjQH E7P(AbAv@sMQ @@AWDTU#ƲAcZX3vKS=2.a22.U1K`ppY-OTB#(dBr4dP"Ps6P`72x@OKq`iO iRx`r[`;ːH"!WLDV-A=h-=L @-j_"b@8AT =ja8=W?}% 8qz!,nh,MfaQ2y,a2VoB[ʺp@ D ]0$- a(72t1d22?:3/!X0,%M+o(r"a|e"1~\?`XAT?+G} T#+b8+RIo\1# "`@aTA&!@! wC-q\2/=ye*MCt!@\6pd~ Ƃq*q HLBtuN B0\1"A| {"`~`2b 挱ªlV2T*“LU)|RqR|R\t2tBF2~$>PYKY]*PVǡ{%HҼ,W(o4K2}(h  @6}QTf1nӘ\c>@QTjy F|(TxTTi~930U<|h8Tkc~ A@4 XA|h:{Q8lTl>, A9B>R|W8蠬|kPGdDϘ$ qܠH9 d.(@e 92S{U8||(uPC}C@=R8b@LcP;±S<`8㐝Da̒Đ|Y$o}4l p ex#(AɀDZx= sxU$hp*l?hՂa Ѐ!Td8:`| :lgrP~ px0 9A`cW:=}?`x|! PD.da&=.P>P7%. 2 e. F}8 C@Q%r>"`/UD. D Bda%7S4П!%}6S\UL݈SE9hA8ѓzPc>|T>Q;W?8``y.sO\`Ao $QP$WC$=|`i=@[c|}@PQ}L^6;` *T>P6#Q.P?c&xJpb@BTpE*r2.c}``U?9Ԑ##ezPz=r.NT>|T_%pjW׾r~x|c>>03"Q ĝR'V}8l p Lh|ͪ*pWZ&#-]W8sI| ߥ(՜"0~"@D,.An2H)";/Kђ,۰ֹ H! x,WF]@!.A 01u!=R>W%!!T=xW6}}hW>n,TFR8WÀ*!$4BuA,aA@ `ƣU}&eP.}6Hh7}0u `8PWhp"cb4W8Wz6|-0g;x8PW:|0bW>}W>8 T>[T\Ax0W>}?̄ 0ry 0iR 0m*"`d.P$,tB(@`,WWڰ2JRy70i_6PY`O(A4.D 6C[2>G.DRG ^D9n@-`u @W~гݫx@Bj= 1~ó!x!1PMv@ zA⁋G`Wrc:P 6UW$!Y:;>!|#p?@Wg>Wx2>W֦2}~< ;˨0fT>Wg5B]`ަQr0C58T62|2PzUBasi,V @+`BA*ar2cb=~2d U#n2a>M @x%Ar 0 } ;6Nk;mm^@rϲیϞV? ȱ`밊1| ڵ $*4qBBG>۸rDh?볭ܸrU7S4ОA*"=2>=-rAv -Z9&28:EWW\oBpj`nІ-8spߤ붼; pW9sIbB"*s~HP~6\aj8W!Ud2b*|@-/,ܢ8f1~U%.<0>2D=%R̉ y{$($oWn1@!zDA'WW_s?Àk|$-049A2P>|vuT2>|0W>T}bQV!|22QMdA^DqAH2@b@8nc2CE-v@,n1-A(+Wl-)-d!Y22m9 氓Wpp7:dqxrP 0QTPQh2 `PSu!B&d]aE6dria!5bv@&o8m Jo\oHC8``xAr2fSja쎦|dO06d+) }eqgh(8@9{pGp"U0(18`t|ft8` q~J8=T P:вfAkp|dx|c`H a p&xrpe@ lpT?: A!,` (4`88d+p87PHul7P*qdU\%KPTSpt8_P<p>;1߰!<.$U%p`!0=O`NbW%p$`(r,RLn(}$`@2J4 0|p{].;W pg W:sI<ġ7( ͨ1K;8<*4n8WZ'poWf'`*qxŸq}^@|^Մ,]@ ; W?Z(Wf!R*Ib}8WF. @8`>a)!U&,T>$(*$.(#%U&"%ac%(s]UH^U (~e-\/ dҖoElHa~7L!0< e&x8`a(D>D)L>\>A49@A8}DSx}Et@Gt@Ht@IS8#K1rB2a}dp;dr>b@rB2DhVlp=-.HH@8Lp| 0m2}r@m!tjD>ApK*E`/4:B2R*R:p5|rTi\F/,L`LyP{b0| 1%(PUBA8sAӘpZ@<,cC%y:؃bTp9|}3@W(4*̀ 2e "MZQ*q|#1&@1W0ڷ~X8|/H Vl @ VeWUT0@`mZa ހ- caQ ``6`qq*qK2#Tf>VFqԑ ~v 4|@f;x~E 8W b,@P >€P)BpaRr΁a+0u#ABU#b U#B.&L, d}>KCCysp>Q.WޡV9[R:U>&6HZH21&h{xK2"9 ܞ/@H|#p3|c/ߡ8|}/ (,X}#K-Q!6SDƄ!Ώ 6}}6=bt4T?~T>v?d&Q8 eTL1&՟DɁQe0,.C0s98uRbH? Y~ | ȩr<` MB!Ӑ}S2~羐Pb U(F<` /|i0ѲvKKU)?N<`rfA'<` m RB{~/íx./* 'PM0;0;gp;k@;¾}Pbĥ-2/2^T]iޢ`nВU2_WCx"" ""Kx5R<}&ЖSW!,>PdG {Ҋ؄RW@( UdԒ@r0]-D.> 2q 2l!6L5q@@]Pܾ NZ$NmVqS3 NܐT7N-V\0NeZŢBNVI2Ȇ"k%}c V$j԰Wp@,0 TАԒ@)U]D$(,b@DNpJD8@  Ub(N`-,B(HA`LJ V`Nqnx #h|+x@,4#5r||r|{b0@CZS1qv.|e(Px2r$_0`AGcOtl|+0 zҳ>~1Q6z@z܁!@`})(@@Y @w8c@,|H@}C~v|ij`|g*9#ip0th|aqh|i| |2TtH0UJt**i;( LB0i0$P8PBa@K^2^@8T:d.9BFOtςԐApL*L !/"I/"?"*?"B?"Z?"$r?"?"?"I̺?"?"?"O"O"$2O"JO"bO"IzO"O"ЪO"O"O"4O"| _ Q"Q!!!pf" cPRH@!X.w0JRpjP}jPvP@P"x& )*L,\.P/P13&mtejti1130JR # .TIX_X,pccdsock"(!SRk! 2SSQGlobalsAAPL,zoomed-video2*" "@2BZj*driver-istQcaddressassgign[`desUPUi`oJRpp`ǰpT\`VX hXp{ bBzdaUadU`.`A`V`Ug`u```ձ```Wp#p:pUNpepppկpĎpَpp$d=qJBFDPCCardCSReportStatusChangeDzbServicesLibDurationToAbsolutePoolAllocateRes_`ntDelayForHpwareSynchronizeIOInstallInterrup_tFunc s/weteVSetDeS"GetVCre$oB!kMoveDataNam&g`ryƅPropertyцEnˀIDCopymp=ҍюietSIPCIExpMgrConfigWriteLong]?ReadBytWoptojjfaceCvSUn{asalڀcOSTrapAdThesDescrip hePluginDispatchTable{ =Q58`8FI8`kckcxfÐfndrvCXTkcKurt'4Joy!peffpwp ?a[cξfeԾ(h>qP?f`iTq dc#ܒ 8SF;\T>c  Y k9#8`_<  ] yS * j*2*2*jާkb {b b|((`LjbтT/j| @AAfў<@D`4T~Tg 8\Tf 6#|28gH{S&x|,c0c4vRZ ,=pvȰ|#2W 6|68h%,ܖV 2|6!8f80H-P<|-ܑA,#xH*. j*xGL6"I[IfR*>e&017 "cxrՀ` ؒ?(T(UP@K;<;Ѐ`; "bC<8V!dA(Pbu|ip]~1|&#|"B|ccҸEbjnGA?0ƞHs2-BU0L%GH^ǭŲnCFy1Cᨺ^%vcu0|j 9}d`0|e _9B:$*vo}cxtƠVr¿M)S0 P9TT,$R600q!`]`]P8)0CaփD@PV0"`%(<;0~yf!L!e5VcCdp| j"~!ˈ<@PiQ-i a[گTBDev2"Bv`:a"|ʫpΆj@F1df;;`Lyrbqb9G!V H=@v9 >60|aTc@.|c`Tc>9qƯ HAQhm Eb !{!|cx$9(b`bi/{'H?Qb:u\B 2,I$$+,a^0*ィB.jѶpXZ^|`5x2W~urB?}BmЀ'`?*ZT"0X>1V`Fq2Vǫ)\&I9cj3\:>>=R[ ^z^Ǥ Ȟđޚl>*>~[iƖ_C R\:vebrc46y}&E-ơA VRR;@ 2e t A=Z4kajH=~6Ftↄ~ ~u2r;p $=~!EJ4;c YS(hB`jPA`Hב2;@\跊D0.i`%} Oa@r+І<ơARR<*Ј(<0@ZpQ y* 8*EoQ$jPP ;%>%(Ct~SoZR 9-*DnjPU&({0TjPeQƠ=没ߋ@%O8/C+л+К ʃ@2[「ђ8<@ }ئ(Tr"G7fႮ%b*"G6tBDH<^LD&Ubt$PD9 JRt57QºP8|՘e `ܒ""cs-+a;|#x,8*%|< N>)ܒ;܇XsaBp4NnH8]^$|!$| ":{,fC2%h.Qd^A<БAlTe>  eϘ"5."5̀?9^2d| 8G 5C8`r51M^2Q`aCQLPN>(.&0La$ L,V60a>V60q23 퀅5MŐZ&/M#xjB,GܞiZl lܒ#@r@}  |@ `B|(@@ :Pd9)$B–$EIhlptꁖ8;h|C;Q"160_ ,P<1zu0T >p|8 q2⺣Hbw!h@?0|К#1p,Bt8cd?؀KQvTH1;P@P R)g'Mz*x"o0cbb/ MopaniCJaFR@* Zq* ~A2AAQ|l8cP,a" z Q8[pcFQʀP΀ߐ pğ#x!KC%RO4dmFBxRU!5R8|ZP8|&(X8ҎN!H&ɲJ9>Pp8.VRO!&1J"W3܀(fnJp~Qp\!( FADD94)RT,A8~ VFBawNwbf`| ;|ư9voaP ")Mr>)^`b8*;UyT!$}~0c B!pcƨ`c3{8c~08Ju 6bFU9{sp"?dip|ɑ} sidjpɑ 8 otT,ap$SQq6  6wP>\J~&8w aDJ``>2J`K!T``0VdY"pf]>'J!"pN!~0iDbp8bBf%vdq$Lb{)!0:w_T9__X-WXq _[bhI"rk ƔTR;4v0OQ*`SZ{N@|+m#}J@89!>2x+0^H˜H( /܆f/abd⊰ A,܊2Ɣ R.V$V<NRRPYPgO ~v09,@,H2!(U)D.AWD.6})Sx`W})4!U&<|B8;P|B;.bBS<0AJ@ /9Av0j~i* 0L+0z]<v0_H4R0 @|_T>*̎`٠&|+ 0D%^lPRA"`qZ xxy AYơ;𩴰5PЀb`&% ⟠H# bi|#x"|g40+0|^ |;A<pݺ( h_9@_ 9+58+ |7| |i8PhP8M2A;h`8 <`a@1Rfx|3>6Tc?|3x|ԠplB1WF>Wڄ>W>` :"B_hB?yB6b,RP_41_xPA}6Kx:\}Cx|;x|3x!|Ԡ#x:!:0pR=<*A!DpH`LF@PJ@TrXv\0і`8 pux`@W a@ rx eWQzpx MAbs uxU t t}x KtQr5 qx pUՆt0Ѐ txpbs( qxp^(! xpiސlH#w0"nAT>_,t|̠Lt`0{b^iܠ P@R@} RbA/PnP )\,[`F,'G`.NHz`Pc<b8N )ł쐾ŒD^Tߔ>{JK PT` l8 HV4pk$PQ `bf0; H!8q8 !@8Ԍ50)Ҳ#ЛAJ!VWZ\WaXPZ`Ulbtx|_!2rb2KF8_\| HP'Gp†bv `S|8P QuPRЊQn ,N2 ϓfqvp||ap|j 4y;B8 qAL"9BTftlns vppZzxwx0LޏH!("p,p-024648 <@@ jw0jiP+Tv^rUXp\p\t Utxx*8AТ70tbxUntvpzxwŒx,E7ʏ܏FpyxU,t,p0p0U *7a&Hc7U"H0_s,Xtp3oGRHKu05B%2i_?r2o| \㐡N^DH @LfP@T@=9%j1h*TT@5a:Y0a*A\qU*nё#j1Ѝ*< 86o(XoNFt0lp 240na8 (a/ `|`,n&(ދK^$H0#aVJ8(@`s4n2ix8(1誠lpb$[0]t0a8jaD8ǠH5ԉ0 +t0@;1|pQL8Fc2A8pv|8@0xA8nl^ Pƻb0h2b%('|}xA2K,|bJa\0}vaz0*H0̚]ČUF~l> \dPnQ<|`s$*8>>0#F%(Z@)b H@fъ.}cx0pz0, 7b^8L'$,>DL^p^hDVS`#ЩT@X<:d0Đ ;x:U@ @DH@L@PRLTsl`~l`$8*LzѢpyݢPL~!\(:%;{;HiQC#̐bԮ@̴zqHZH-̄F3V!oС@{qߥ3R (F39*>:{2?2uXTU$@b@E16 {p˜0S(Ё,} _9'V8BL|@@@AXU8|H T88-Q"SR:,pqnjQ|@;״(~,SgАz(bLW8<q|pTW8P]Raop}lR> ,t;תߒ0;~óx|f@ZnP ?} pTVh|8 HYl5 |cQѼR $xdՈ!"Ⱥ@R/*D8|֥r .*Pt@z`%!:84 a@mWpHUb18g AL/>B;x?0K|}%Kx\2QA|+=b|84iȺ|iP0W8}>HU)|PBG5zi|i*Q!WÈP3P|2QT|PBŌ`@}<:c _P|Rpa|78cxaQefV ``P9̔ 9) 8bP,?Dے3?]op/0*`~P8h2QL@0Xq%қߌbI&8dMda쀾@N{AP;0S}r=1$5ު|P}R|;;H@;8Amb" sO2i8'PN9 ?$&4&5.&6_? & &N&&zNPNT,N7ݺweEF3L ލ>ٿpOF.8|D * }4;02QH6rJTR>(*UqX*MPd*JX* Ae0>^QP@*ViJ4Wp#<ذ:@<0U"~Y!Da88pj;A-TnD| ðh ڰְڰְ ڰ 8=P &PŬпtT*RWpHHV!/8IF5rbPfxϪ@όϺ~ &6@<@Tu `ƑܝJf| fUQd2TX>gF)TfQ,Hf]4i(0xfi$P<|2Q`*'.1p |D #x2 TD> DHfQl&PqT>6T>@h}j=ha}wFSxH*] ZpbDѠ٦V/001>!&N@fn@ : *@4E2TB *C2|vSNM*I2DKY+p:0S2 C) i@ /2} G,3| 0@j<}&KxF1ZQ D | KU^q"J#>%Dap{PT.1v# |l++E<"@8&`ra,;@ 2@GpJ1)!?8pQhc 47"?42:8M2:4A20~a?2Ap/A01] 00ň0E2tb At:0)(*=F F}A} @,Trr$K+`rrGpr r7 bpҠv܊Ϙ@U0x(b }AX@5Vo[;@LiJLHFp@; (y(:IrKbNH_1Gc^C+DZE LJ n?̈L`@96_N_bTnT`&v__\RLbTnT HxTGN4R0PdN5H,`pdoAHҡwCPb!`jnSR>@6Qq2Qj0^q /W< J>opB\b`)6nh]rFSb!ABl 2Yexp E)BWih$W{~r a(AA2Wg:|8.|FT,Ug'>6@``PXAfqLrt@PAt,Rrt]ufsmrU*f0PAPSdfFg2_LA_bQb.| A!U$:|H@}*v$0> b A8in5 Rfj@s€!dPh?3=1E6dQ@Bunq͆ZGE&A ACBbK0F$T<!v @b EAAJ8 bPAeq<P5@6@4:1| @A3H28;(((~ex~YufA:16Xv=A<2@YeD &` U,J6@q |FPO`  JАrڥ &!}LBJPN Hy @q (aJ`,Vd`46@0;@< @A!AЄ̹-ڷM1 6@"4A/Ȁr'l"eXi8$(9T}dPpTPp*F4gp| ?)8/n{+rAȈizC|T:8TPp"@4^pZLߘ Ԡ$LtJTx-\:آ&!Tcv8pj9 ,A0A @@0,lհ|+xl4޳8l(|fP8(dUcPpX*TPp24$|9k9( B l,?|8 Eaq H`ܥ!.A6b0 0zA"$bA1p,Kx&@6D,elSj@Ԡ!`B0#\+@U%@ܠ8#4Цq>@4b54,p$dЀd $!5@rv.`|\`T;  0)~ѳ0n+ܠ4"t!:|"8_Lt:ZXP"t\Z"ߐ Ԡ됁}>\FJ9Jt _̐ztK A&^4Q 8@$;#XFQ!%\!BQ.p\2X23Ԡ#Q&WP"R9H8\B=\*5630PH"N&QN63 Z1QFR_QA}2W9t ̐:`gxR`2ܠUw887`'PH ??FF`a@9`ӰF<}\Sx+}:PTXAE`dDFHLPҰT9!X9A\: SE,0&}hXTc&PDvt%Vhr$` 1Fd?&3Ev20hq؆x&s}(r+@(,&&(Wc(((^t@H}Xt}PthK]r,YhFE/_qvx'xHәxFphq,7/ ,?d*P$x~廕mlhph#ĈVP~xd x"Qh@AhUKkPUk 0}РhT \ Tb $$x0"Q`R|2fs>ɁRҰhנcgРOPĐ\(T'BI$Cac\Ѽ2DBvW 6|x@}CJ}jPP8!f``FE @ JlN)pw@ <`/w82&"&4t x0ž\FXI` Ct@xLt*D5I\ BDXJDtRDeaAQiAXnH\F@\~@XD\Dp-lfsRIK"%9% fqy)$\, TH 8_QTvJ0$jgQ?,H elđǿw|,p@!|+MI"+b $0|hKI@ |i@~Jbp8*p<>pU@pDFpH:YlP&TWqp>x8_Q<+А,"2X020 MD`r欃=|,ph\=}C;@,h0hSP–AJM(vD܅F܆ַ#xq(D0=Jpp pѿ@xx:@ŠUr&!9}m^P<@(@ +Õp+@<@49,R9,\!lyV!W木';A80cR}2Ց+08|}U=D9 DAF}AJAUa)kPb9fn`da#j`ҟW OQ D,H+1` $]zAZB};C?hlȔc|*Pp~Ho@|]A@w@"Q2:$M$Ɓ:$3OʱYc(0Â(0A.Eb<D\J*r%LNQj|S(`P^z֡d" Q`y8a 0bϐP 3PHiTK_ Ll$p$t$x$|$H/Ahn1fqP>QB`D61Gb<h܀SPr@Pj^px>,04 pEuJ,L'Q0@Exf܀5`LPUQi`s:La1Dsz&~vcB}dۡa!Xǀa0Uj^XP}04 p+9,(/cdPS`KUiU5' BtK|~x,N`+||ֿ|(\+,bAb`0QJ|+#xb4}2a!0~YJ5ĪEb0@֩||±2%s~31 >T@ y".:JN:sK[b0rd+QOPH7A ϱIقq+=@4|Nϻ%v:`2*{XYB%,-4'Q`4v_xVDM8'30`\ I/жɿI=\5`v!)BD-PDq,E Z a8@2*8F40@2!šX$cq{c,0g61a5ϓO%}@'A}$ߐ`1(JQbe茛Ɵؒ<ޟa¢ ,blu)Pܟ@T>@Ô0T>U ##GC*Q=>1o` )n\ I8'`(:R>1*j 2q?\!!&P d$ c$| eѠ^:Rnf7@~@/-̋耢;Ѐ弰G0A8( @p#&PP!` |>0| @$3/| B !* ,#00`6qKܕ8p8'0ߤ8 z1 ᐑP5p>1&ِ:3P@\{08`'<~a8GP H Lf@P 0T9AXKʹ>6 TT VpA6 @$t܁a\ `0>PE/&, @^TTc5 $Ofpr)X"`!R 8Q2Qn@>-,X2Q|+ex :>-0עo< @:,UUkV$"#x q;qs8p!bPKu%0? T8, :8)pCZV.{_9l8(AXT:}(H.}) 2PBbP>I2a `U ` `q܎ m $`U̎ 0` JLO_ "_4_F_X_Z@N+x}Cx+ʶ|zxR@P!:`!Cc"C;pmNmp,8,8|PRTe:|(.| S~֡Tc|AU#:|d8#@q`6i>!ArAVaa6!T(| BT&ᎁ |5a4|+xGqzxx: 6+F!^a~Pq,~~x:;@:0:xA< @ D 2.<, 8@e``Ґ@}(:=(A@_&.D@~PA ۰2(<@H{ݰJ't,"j(:4<;p(@ׁr90@;A;U(>(N|hH9#瀁G Up|g@8c}(瀑3(̀+s,0 $Xպ[p1H^u: ||x@(oK+p>!Zx; p;W@ ppp:`:@?@: prRQ@YQxqU&'>d W{8lh0t1_tvND:4r $$0eHQ՚HUtX \F ! >68j }):;8H`$v v$v@uq;.8| 8vNa<0Pܣ(0]2D=@048PE,0X:L\JLKIm8hj|LUXHLPHK=~2p8!Y4*Tt^u|,+0"08&a8$ <7PYT I<8B@W{8Wc`{T8c K"X9_`9@ @t~x~@U+PX9pU }l|`889+` D`@hi BF @|J}%S־hށ±@;|Pq0(0@PW߫:WfPX|0&| }b9 D` 9o+WL@ XX}8.}:}1.}2 B p |@.|9.I 0A. k}9X|+xހ |@n @Hopp:>ߔCp2T 6}'B6@ ҰdҰ ҴҰ@*8|B8|@Ap xvaF!|2BH`|F0 20Aa^*<|;<|q<|4 /006`H21F)jAة#!V "M"J.VFfw@"%^_`t\sH;`;?{p 0 CBxfmA36pv5r6]FHp66f6@ȠO?,a<D6@a<Dv6p4H8>*?C9d!> ?tZ0 !TBSc@8?* C5H(!*~0VAqfOsp|+:?rp\2U0NP8 C8C9IR?LPC")"? }.| ]U`P&T>.P>"ݕ|z_P`TcH,*&q_Tc0bCpPp$! ak.z@UFŀl}*t謰TxH:7*x0L`U|"t? v @c/kP,s;} FplbJt p|Jfb~AZhTj`2bCZh<|hh`Nl`I2ui hSZhH5"5&P`<`@D"Бp1 q9AxpH"`^p^bIqBp Fq6Bp Ԣ`,#ya p"r'puF qqB'p PlpZqrq pP`]_Xdb L s; |QpL}F*l| Z LPJ 0>ЅH|PFl*^>q}$Kx#p"8'pcCt NH}]P(p"Pn H}cRhTq}bd~XzlV~UI`\9\|0]%Qܐ`|8]$* Pơ# |t$뀣, J)0$ߠKy"!@of8\lfzې(r(&|t 1$Kf05PK #eYv `dp @` 5r"pdIpnH哹PSX| $%w0/ " +|cAtsIƒL+џ#q,Hp\boBV4Kᥲ6!T?`op d0,c0րe"a+ˈ f$~#JgzhWЊ ` d0|#xqе!LP9T9!X9GA\QE0@XT6!ʠܩo6"B@@J䀀pQc>p@j n [LKpJGы$SpUXRp\RpU`R pdR$p@ (> XUא 0@p\n `KIr9{DZxd.10wp8GKłVjd%@p`b dT*DŢph€"hƤ.\TRbQܞ6,у"'Ѥ+ L@P$p!Dv XatЄ =$@dKܡҨ q՟6>Rp(Vtl#HXlH_AҨH"m6mY 6#-r龕bs*d`Zc2€`60ΰ@|~"iFp>XF@#q à0ghZ޴@ fBD |o7|+x av 8,T<}:Kx}Cx|;x|@[Y;66J1,P&,,r ,<*4@H0bPqPH~(فPx{1}uATH~'pT8m \>p@_;w^~  $(@( %88P@ p0c$A"Pc0|߿3x}=KxR!}( , +x|#xN"T$K# =)c]8/H~( 1HV0y~(l8rLQځDө!APpL9!p ~(0T2)>.08LT.0P.0`.00xPPTBTa|+xU@.|Cx}L[x~HV6`_c<6`PTT`O`^$6`PTH`x`|cVa"(p0P|" `~za}#xoP `"L| l`(,{a} "A8WRpVt p7AЦ6CP2CP JlTc>8;7X@.1Bp;: 7{X@]_.\1B,y9VA$AN"pT_^"<*8eK@ : `9L}L4WnQ!/a|`/ xT~T1}}pfBq$8 7 4|X0ZR9wk2@Wh0;Ӱ.}k W:fq}k.|Q|?}`[A`ުAnaff4whc}D`UJ1u}l Ukk12@u9~pp}~4U_>nPA 9IpI A쑅\Ɖ2uҤ1s q2YU ~U ~U%1z0U}}lX|J2@}lZH>.11ʲ|o|X.TLbFp K,lc`s^Bg@^!`&[OKnQ|dS;g@Np;?>'8@?HRҠs`> bRjtP>Hfp_@P@ڠ,6`83 8L A`H(`Batf[(s 9 x5(|:`^ })(o})x9>(0 "88a*!9 i Tc~Nn@v:1ʠQ"HMΫ4AA8 8(p |"ac ^if}#Kx1^O}&BUAo|+x.,:,'1|;xTUD1pb2 $  T嘁dNpUlUc2Uk>|c{6pr}&p?z,U>8gFq>8+/p/--}+0@; 6}&ZI08rTY\2p|}dK@.kx0bWLUk|Z 4RХ0}wd~iA r܅ҎѢfN~A(AQo|`tr``b}'4@v&,}$0T?M'/s@|X@80 01-p/"!8jeT&a0l|`|ߣbekZT`LfDdDq}cp( UeDr r@$r@!a,fHh\DL ,(Z<А&8y D@Ja  "@8?BLpzA4W/zAT9O&T!T߿}&h`FiGfžN`|z+O@*NQ|$w}RzRWPwCD0`fvQ@ 4LQH3E8#p ]j`Xs¿pU(>pWPR4];$?pE1 y?'>R0Y?&0 4_9%0 ]xJt4];)l0? q2D>T0 0 0@"@pX韸0F@ @"@0 *0 0 n0юjA1fD "A}=02;_4@i1uBkBw0}.pT>zQ1:;@09B0B@{BB?пU);޸”|B0 p?K 3h*BPZ LUP=TXHF@BQj` $`(`8U`FH BP PU$P(j`P`Z_lR]qPNQj`V?8x|}08\>].P2VnؠȚR"aH 4}8.}9.9@16,/f1!h/=JpcRl>Rp:'At:NOAxp51|8$Be8$~Hz@ۀa%}>8a%y@QӀ΁m`%բttXt8bs@AnPұ(@#H`||*,A;'8(fAA4Ktf!;'43o!!p|*?˅Q":!P9H{(dJNAhd(hUJ:P}JB@`@+@9(hoH~2T{!px8޷0|4 A(%氡h;p88h@HQ(Y T>(ZT>([UF>(\?9)!(](dH@@P#@Fh|{ @@@܁P |Hw@|*+@A(d(h}jH}`|`@сhU :}(HU):q8&~s!aRҩ!&T8|* L[x㙇Cv9a%9;{w@|B|Y.RwhYpP@.L:A/EA6@κT!l(UgF,K} KxA(TUVWX@֠| l8;*p8L~0Hv-}\.9g6FT<^|}pD}ESx N @~Fx+j8lHwRn!8 h`ETHT:|e8.;HHxA!W:~=.;_ahBF9K䃯:s'Hsb|m4DP_l(A4^O(t>tF"NHuiZSN5~T:f=VPt2`x| A42`hjъ0FtV윦%>ѮhFU0#@~Vp8~ NBqKINF`tQ6Np_8!(u/a8I9@Kx}Cx|;x|+x|xxWY>^AKGIq V>MQ<ڠL@^D9A}*`0zDA$PtM@).> @WE~x~xFx^GH{({I>$PDBMD@M@xmBKuu5RQQ*AR1AD9BvAp`u@Or Q*BQN@`@lU1<ұvAKqO >DyFa"E|+=x|#xqƱUҰ(c0P܎J!l5c TՀoҰGi2w`qT(l0T8:8&r{~ҰX:`88`Rŀ`e` T@ka2ncnIbFa8 qX`ܾE;B\|yPk*8l*g<Ʊa>b>rb$xe`uRP*zvCkHqYncmPп&6Rp`M%pi^q9|@@@4|8|T:8d|(T8p`w uqO `+BiHpErX`_q;;(ZT$>UeinclD}V/pF"F#ZQ*A PT `VP8QP0,0邁haw nUaz_D!{`| c;W;kRxa.BS@8@9h9AlV3nᎢ}@:!l, h,?c ;u`i[FSn{|`iۑ`yl~xґ8lnaxPn8ptBٲdPDnpqpvChb*V8+,Jq@|Εnp^FAx^BIpUq}B^Djv(ڐUQgMb, cQpuRB@ڑƁZvʰT8!~V_F.DA fb`s,x*hx;`}g@;{uK0q:H$W`e`܇Z0 W1a|"/[~XKq n*hпBgBZ0(*(ِ@B}Wp{ӔZ|QwpmbEnvCY.P5mLfpN9QiщZ0=.PLHfr~ݡP\ Sl պPՂsfMGO;n~fA"Bh+Ad$BCdrvTp: lN{xAeݾ["0b`vRQVEPс< s1q>DT5__FZqz-[JdS >DP(p">D,)KU"ՂD@TpE/,!`,ea! J Bځ>an:vRBځAuprA 8x0Lxi.i  Mۀ2H_<}C݂|;x|?3xT>zC:-eHb-@lEz>DT.P@BP`V:P2P6,PҢf٢xxAo%D=#t Z0|.Gar>DdFGdb>DL.Qj}nAL T(7 $TBdx*xAnrC.G`:HDbFGgfPG :TFAHc#C$K}0} !9B1d2 !xjဢQґ cM>9:@21:@ :@ VblZm00abP 5 `P `08828} t^R 0Ue>xCF@00ę$=@j8 TpP;pd3?Q989!q8? H]Ճw9 b|aTco@.|c@>AP.H_="@TI`_)RPZQ^bQ|cxfTyn[^nd_0VU:P>\䞾PD"[^RQT[\b:P}RB؀a8bs;op;#&sބu؀}4d\ՃSܖѲp᪓20/U:?pkF(8„PGBҖr~K&`-ЊP aDKv'e" BbPT*ڔi>Q},;߃d0}d|o"8ctdR8aD|*-+قo!0ޡ`RҫB"pܖ6=gpv} \p`9bDAޠ\$Y-B U65`P҃YўRzbw|a+b21&-dp>pЮqƤa<ʂ/@pV~!q/@m!z޵pcc<8 m@ʰdε^ ,/@af 4IT劦3^ujp `2FѢq|i` X}#K!t$aN`MPᮠiDaH`L[fn7c@"P89P9!P8T6P![;Qc̴"?@mecYm9Pca>QaL|AAg?@blcYokzтЬ?@aijsH,FFF0prp|ltIPpl dvPD4`V#Јģ@~}AH]DaT@ХvT`E5" ːqnA8 8AT:|8.| 1 z5Tr`rHys|GFKٚ6PD IaRLR8B@FҋOPъ psJضZ*@|ׄ&p`T},0.|4fr(`7EzeIE| BpEdEXr T@ٰ 4n( zhDa! M@Bр00KGSOЬS_bP* Lr]ᒢUe?,pQ}20; |Ob @$?Ti>1| @@A83T=>|*:PRTJK;|BJN>ƤD|PHR=R@&_pB&QY-!!Q r =Q9z8|;x|3x|+x|E#QfJcqvoB1q=s8HOaspzq`b~ARX2DAXSteS!}M8 B0Bp`=Vv$fsp||tpcdf^/@B`ǡӠ`HIN9rXtoblt-1d9oN`e%\bl9k.goѪPfbl?a?kUPLL / A覤pj11h"i4 3ZG,L( FLB<V 4f1b>q2F3b>s{R %>0{IM%8`>BZf!BN afbszN rTv0u 1/x}°dT^X]"M9A>(ȠW:].IU$.EpU$>,P14pձA0vJ Հ&  _8dvmRТgrm%n0500|006CM2 JATVk0^XQBP-ML"Lf7Dgx`rJQ |t!AĂps3 .`zG*VwİK`a2&዁6tL}GKcȽ,wAL8|Vh&qT!%d0 X9L9UO4U(V`^neK$@`RDҺ^PnPо0|Q J[HBюҟ!fЀ31&0P&Tb*дpqBdEڰXkT v߶8BNZn(ߞBQb*xʀҏE\P^pAb|Ϝ~@mA;+Ztv*IDARb/ː|* AbA8Q|`T H<"0.$:N tjxڰ,rßx8~ư@>r`W>T@ `]tAAh|@.ڰޠ,ս`@aЁTc@.|xTc>K{iv`߸uڰ 9 @#@u@;J\@H?"D@(@@9|@Pu9!ڰW(,l :>#i#@CڰN.2_9)`/( 9 /|t0d@8`} T> /zTCb8aa8߿hW>#@$c݄ V*KX ʆ ~/ d!N8ʑQ|~dK`( $4K*:)8DLQ8g>Bֳ(ޡQ9 P| |0`PÀiP9Uk18} 4|k4bA>CtSP$ސU%䛂B`B^Q}&঱B3x}[Sx-}?Kx}Cx|;xT>TzxA,{-l$.kWa|P@ނWpCӲ6Ѷ l8G`Vd@DH,u(Hp@8PTLJ<*pUP2HJD2p:( AH,la|Y}#Эpo|h"`}txٱH| 9((9&;,⠈`Ps| ͑800X (i8ƾpx6sp'`vqFq9 ( 4>p6qTFbrhzvr|t#wQuڰ1̲{vqJ_8| ڰl~rwu(9 bqBshq0"FsL!"W}&KڄڃTPBP}烁 _N@|߿3xT>Tg>^!j'v$A3ix})+5R>Rt@H)Z|`<8~>`DP 82D`@ JHn7b^<`}Dִ0a= R|qO|` #K~V?$SsbP! }@@A<}`;x.Aj',/a V!^`)TcdHzbðH(B{d |aW<~?Px|@ᤓF:*^? Bb1!tXS֡ҡVگ/q@, *&.46>! `@+uVAJ 8!`p@\A.'p|@[|` G:𩡁%)m Hdd@'x,`A'j`<202,~@mR IAjdjjT }-fa!61-yQ~aNTf-\;WBT`T ;` XҎ DP\NX0?H%">`a`0;nH$Y;ֿ,d h^ @2W4.vh`\΁P6 %6k1>WT(iԩ6{ jԉ*9 kZY* lU) mԭ $s n@ab1 ojԀ* piJV qq96fӐЊbhx^&H*ŪFNAHv€KjHlL! *P)*"8*"*F%NZl!Iߜ!yfd@h hnfP0L@`И-* kJZi*Qjb\k(ƒ\lY$\ ,in`)(?o`YXop`q`ꎠhH9*1OA<'2.8@,cAV@$ 9)|BF|P@B|d2:#%`I:7j%}9@U=9BQx@9o`V1(Bq(@2e AXBd-P|d*9*c#9bA}}29,#1ggFBItE0@"eQ`$bgL;O68\dx8cM6B*]$!.;W@|C+xjZj^:k׀@"3HQX8@ ASfQ@g~ҡtH#Fdz\>@谺U#:|~\*T:`8}"8,80|#x9 4H5B)y!ea4| >ddQRGmYc}@fa,rbkܪ0~oi Ҵl>dPFoXdac`рkaaodwb&=β`hRaH3`P6;P,[3%a}l{հLV<$@|zx*r)v`P/F1Y<ʂG$RiGRZ0Ф|c#YV+ "0[DI̐S0@ꂬ|(09k@}R|8AljPZ, U[:k`d|0@fkRfA4`Z}Z8@@4|2U#ZA8AL Q=z`I_pa4|p@|;x|3x|C+Rƴ,ybdxaxuŅ Rc?H=VAvu2S&2>i",L4|pЛPbh32ƴYppЩz4 ƴqe k9`\0P.OrU%R`revIz(% ""q:pur&Ԓ @Jr020IJՀmɠ & "'P`)9$0\3p 1z-FpzQ8|tHJn0LPu0y6ft 5*>0h-&I>!F`^_`lbDz耓7t:V`^ tbj8:P Rnt|};܅>!R9.E~DzE Rd1ŗ@tmQJVHbszЮԪM)2/DZO(A0`m|5 bK@(`-/`HbkQ`,A@8<K.1BVA: Mr;`| bK@Ru9d~6IXƀH0 H! 9 QQRXVe!V3r1;ܐ~vOu*"a9@B-(?M&_LpV9@@Ap+xT>b}>Kx}Cx|lls zt2 ؀XDtC@Dx%˗xfШ(K`KW.<΁#p@>p___Y  oL o0oBoTn!foxon'j 2 ,mLK$Anb`;yq sqɢA$4*b`2_.; Q:Qa|#x|}4H &|x"=T ‘(@A08pc8< "i{qכE`z40|I$8neC K-4_'TQ>rn1DHLH 1zŰrj!$Pv쥘pҒTްPR_`d9!h9AlKK .ʫR@Ői"Ґ}@ 1r& E*т-BĐ#@8/|+x<&k"2j780a#@*|3-x!JV)a8T>̶i$l5x%K@.b_@p8p<f%| 4 f!)ӗ!B7.@R T>Hafl5 ~D7 Ym'B-\U tLXP !eE!J/\!b/t"z/ 9L/t"Ԫ/!$/\"/"/\"! ?\" ?s#:?!$R?" j?"t?\"X?"y/#i?s#?"?"$Ot"*Ot"BOt"dOc3,rO!Ot"Ot")O#/C$?#_"_\"I2_"Ri ) @ S ` w 0^^'^5^1T^^^=@^П^Ы^и^^^^^+!-1< M2[oЉгБY+ 0НWfl;JaB|FD0@@@@>> >>>>>=OgCSdQDurPonToAbsoluCStrCopyLookupIQruptMe\QsBkZeroPoolAltep`De@PH@PRPynchronizeIOInslF9tsatLenete桰mpDqeToP9Cre(MQxQN@EM@sryQPro!ctymEnlIDAosModTYoSeנhP"JInit۠@dFSI1]gCoryFragmኰdgDiskrTFpgCCan@sDetailed|losureNDWTGB]HiggCVxuAfaceQNewPtrSysCl51queuUnOpsen2En# EACUnHAsalcVShvraLMESA.tRectTboxTGrapPbHlexSymb;olXTi@O Pr )RoutinemE`@ Ge{"x" /#~ #SleepQSVOSEwe0.'% $ysk ~r)ystemZ.5nny uA3Rmv"j2!j2C#O#HL!#ހIQSpIDF7Physi%X3?WriteLo>HReadBLsWo@2FreRP2O3PCLGqJ?@'L B:BRTSUTExpMgPointdrY_YVfVU_gU1s]oRCstCSUpTargFsCSHCISCSElKd:iCSDg<)2Maskrbh?Notifycd`c!f B?fP s- hQ r2 y a}sNPQa0o`CSx=SsaEjl_~\WbysSsaISfCS&jy v遂gchFirstTuplxsNex01HogWǒvj,sjj$Q $iqqujRp΀@?2eS&ASGwapv@bqSIRO`PowerOffC9ETuD_EI)4_4Ann3VAEBfeOEEgiE0Q'$iesCE#r*1zSpE$J)>/ 4B<(UEDO:R:YZ`bh-:w̙ f"5%A D ?d Zm ɹd.d?!(JtGyG^.QzQ%AY6ABcAq*a?4*u%fZ%n z ڑPW*  b+Mڐ|~z(l( r)m'+ɕ&ʄ o[j ~u ϧNz[%/h 8= )x)i<!g?<!xx< =  hJ-FJwP`JJ[JnJpSm|vnxJ jFJ ;P p Pq UFPU<XP(Y FPFS U(F#PJeP|rxT]TnS P]YnYP HY.F UnФ|FJFP/ sPJI Fʌ0 nnJp YF !P@|nn % gn%Ynn8ʙ#P["n" { FQg Tnk   FM 7F98n fgxf >n HFfC@F ^P2#n9 PC3&n/y#C P% P{ FphYx3x] fPrq9 LhF3Rq  o0F2 n#{{3 PMcn}3x Fq P 6[" F"}2 Ɏn] 1M Fu݌[" #P;Cn3PI 0 \F ZF",nkcCx77 p@nlibCXkcKurt7 lnJoy!peffpwp0amX7PCVԅW% @XV7@7|!;`, 88@ 8`Γ8<8@HAQA|P>Q|x(@T`a<x@8D989!D8P})QD,qPDP8(pP8xPD888PPP%XPPK0QPQWHX HUP\!H<| @P` <|f4W8 i$P hP eR:aBbLR@8!jh0v`L8<~gEq8`a@/K+p>qnQvS9/ 0,P8knzpq}9<99cPL{P(B⑆PD>rFyN}?Kx}Cx,@|;xT>P,}@P)0, Dw0t9B`ީ, Pէ(, qԦQ0LjrnpPq ޑB}N|;x|3-+xT8rM\!pej(, qz"Cᒯ^p1̯߁䐧P +PL| qк̲ҿ̲$̲̲̲I2̲J̲bϒ̲z̲̲̒Ԫ̲[x@QDDTDD60Dp,DAUd!mtej5DefaultCEnabler6-?* pccdc@!H!` PXh7pA0pciclass,0c0310  DC-APPLE-ST1comp>VU R$A7qPB0RXEXgQXQPP-P>P_PuPPPPPPP/ rrIHr\rnr}rrrrQgS``J`` J```JBFD `f`````B`B`` `BJCCEFinalizeCNewTupleIteratorGetDeviceCountSocketAndFromRegEontryAd5PropertiesInitiCEPowerManageme%SReadABusConfigSpaceAInfoDispose TypSFirsstNamHandlEv~]surNexVdateCISLInruptKATDriverSersLibBl.MoveDat3a@isE<TyCren*TheDescriptionPlugi}natchT=#?=Qi0:Q@Fndrv:XK?жAG'Ȋ0$O0_W",^#pJ_0$pfZS?|~x P$*p~aXp5(`0? m@G PHN UR$xL(}!",~?+dcC0./@'hzpP8!p q2aaxTql8a.`|8E?:8~05&r|ex0HHGX5}os`"!*p ;!P09U.2a@MzFeP<1$aB0pbn?sݦQnE|dHRPnu\P<` B`7P1D@AOBqHQ8@8}H"P8@*P8`PL~<Vp{Qjp*q_4^߫?6' >+"@7@BPP8;!jPL!CPNPRU~Rw+x?P|+a1j0C"Rp`BBCz<#q\Xw]èt_\C^cK, tg8|pr:vb#x> b:=+9`MR|@x?+=kTI_t|g X@CŢhuz)!H{ڡJ:r,t8pe](a}#KufLv8^^H}BP_fTc&GHi?Ebp"!fp XpAB0 ۘ@ ztX|c4 > ݂vTՒpX$F@p *>rR0) @bBPb( XBPLT'cqHv*/;zQGP>>T9n! H =в䪿 KzR9@p/ &= p9`I9 "H8C JR:R6plr,j$90}8}$ DOd  4"Q$# )"& 3W3)D0 #b(@E~P:q"ށezC8D8ӐT:|8.|,A 8}`@LzPH&'>!OT u'U ^Z fgdX8Ț]DAJ@rP ,yMvzP:4\ұށֵ*ZI\ұ<|0xN+TұATw@<(2<@ށw@drذXw? :`+|cx Lցr K4^0*H }1Zϔ8CP2f` 'P{Ue9JUeF'EQ1 |+tVT^Q2PsUc>d\6TH`vP5UNPvP6TD@UcDR9QEqvP}:PF P9QK0bQP!Q@LE4 8DaFuT>T>β ;c8~x@I aaٺaܐ8|yA,URt:`B?Ұ ;KMpK6>9PGubf9ɇJ&6 Ҡ+> T}PR ? ‘zp~!@"$fp$|tTxPҐ2'>ҐQvd}/o4+x(@)A;'; va*iB.*Ib.** 2. ** *1B.p *q` y**i*0 Y**I* b.*)***x*@A("5 E*@WJpzP 22q'2CUƔEƔ5 Ɣ2 ƔjƔƓU&徔&վU&ž&U&&&va &u*rقJc- (!jK_ lcfU.VT. 2 ;D}cPd B#W)b0q2{3G rq͒R{`*q6 ?LUFP2P?,,NTeR|r8&t5SUE R, P 4dVjR f9j ~ubXR UERm ~EdVR m ~bX"R Qm ~UdVR qm~pdVRUEcZ~ĹpdVRfEQmʠhpWP0s e>t8peb>fcj#lTaHbNAbnO4t8`MRP48pe8tP>1d ?+A0AL:q_6Z$IL~*n-z< }&(x6 w+d j"oz"syԻH∸'0Z*|0=gP)|@!@cN8+Te8YqbYt0P@~QbT6 PZiNE*$B`p1)00xqF>5AAl),P+xDFZq/J@pp*1|`&TcTwP*s^萇1 @_L| d!I/"/"/"/" ?"$"?":?"R?"Ij?"?"?"?"?"$?"?"O"I*O"BO"ZO"rO"O"4O"O AA!!!cb"Ȉ!$t0ttPܯt8#PPttttt &tmtej  pccard-ataBTS# I_y_TX&QP-Dc"  xИ $iSNIKONAAPL,addressdriver-ist ~Q<pR7"CP_LBQPP.,XU\+RTVTYBh:l TS+:RlzdvYcU1d5`%5`65`UD5`^5`g5`v5`U~5`5`5`5`5`5`5`W`)`1`UJ`b`}``` ac AJBF DC'@ DRServicesLibDurationToAbsoluteDelayForHlPwareSynchronizeIOInstallInterruptFuncBqsCStrNCmpComp^pAndSwappLenGetwATAManagerqFamBusEvwentVpAIMt?IODoneopypface:qNewPtrSysClearoqXTim~OpisposepPr RoutineDesc?riptorq.Rmv MemErr=ameRegPry:qjqEnoTofuPropertypPCClPDierCliplPpƒfFromDe5q‡EjectThe,s5CqhePluginatchTableCc=Qc6PX_kckcxTUndrv+XhXJpKur{tCP,Joy!peffpwpcQa&Z4cg;K hN ie>@sb#}4BH'$Z(34H f}H y::ZgYz eh88-`>~U#d$`! ,+b0<HJjP8iH1j<"0*(V"3*"x*sK}2u?p   < $%b<&b(eVf'::l< lj(n :nJnv(ӣx{:(:&v!&H4)N *.z26:I"ҏHW/:Ρ&^Z( 0)L( |;x|#xAT:}@.}$(8 L:Fj' qv(Nz$Mv(h|+Tz$T$v(@j'Ev(((ev(9@j9 ﺢ}#Ku}$4!9K#s1Ρ&Ρ&͢ȣbU 齦HMjlU$<R231jL{D3QЅ234961Ρ^&1:4dN?$HC,BrjX9B3ޱ?̯gM;\"]AΡ!nH Ð "a>$`R!T>9ayT>?gB:gKn_|wx|К@$8iR!Ѕ~3mf,rCJTR#"RdbQr/0 ^@-ծjHXqP,d)XT5@jTPW XfRQ\P.ʎXr5R\\;>?;0`,B&`d.`F>{иg~H*΢kxn1b0d;o;1*!Ρ @JdĞab`@Nj;[B%T@fȾc+)ݮdRѳ0a`=@Ē@^H=VG*r2?8,`Fpg8`R $||ayR!T>T>?LgB:aKes=B_kz`$fR7P`HU㫀,TTȚb`k'ro'ek'!awNq:MuVG'eb6HZST>pu'zzpx(}'Ar2upx(y'm"pr(~óqru)|ebvаCeWc(@@p:bA9U:U89L|*FUL>}$B, Ѐ`b9d;pdp';@@ CDcdffjjnl<n7Z<.;.@>BƲ撄cޒdBV9T}>Kiz]%ܞԪ*)&%%r%bZ((i$%.&3%fbo<8cTc?(~%,B32%*O$;KreⓋJ*jP<8== 23af@&8&`@9.`*z`.bX|+x84|+a$b*ز?(!xfR5.KYf5T@LbB0d=zPqڲ'~3"0d|qPXTrдTIs0jrҍ¦ U$$:$ 8ne8 `x_҉PHA8c)A ئP\ήPPjjPnHr!q"ҟ_ќViJ€p7 $2ఐq4NFUϪei YƒFW[$C>;W8KuRb}Qcq QC`P,BH 218"<|LkP?|3x|@<@Y|`56.QxxkA$|cX$n^$ cw w /A9r 8~|@@pBp!NI"v4T:nP:8 9LЯP&@5dA"IRnD !@K#рnP0Ť|"B(Q/AT|>|#x P!r# Rb(РxW:[PI$ R`>n.!PnB32kPKWU,kCQ%Wpx""~A#0Z/C421XFQg@X ~ABt!9EPH@x`P>yrP=EYf Qf4^@fa;2uy O$˅!u>L\NA TBHL9pPf@L(΁jArD4 6P-p NSM2pa^Q&HDvFX*^@]“C%ҖRܸ4@ j Pߴ׿8`TT}͂6TWp|BH Bj):HMrA6X^r?"le*jg/H8!дTc4A9dؠOz=~!KA!^͂`5b,<b 1 -$jJQRڿB>Fd_&rP>j<DrDT+*IJP<8n rODH^1 @HyRL-J?W{6ށ#z>v7\g~*yt _U$96vT>A,a# ւnf|^=XHѴt-?efxU#4pB`ɦtPvBW%K0t : ͢H͞fwe~Hq=3b@ RqʡEaEa\aq@262D  F TN챈s:$61ƒ;:IB`2b<~Ц`J мư6A Q޿o^T:Vt8:Z0:(Ъ0}* 6HmݥrTA4ZrBB `p {BbAn6@Bbap)zW``cy6bkTi>H:R`@ՑSnΐBٮd`Ъ`e:H42 Mz0qS" NID`<y( c$Npd Tc>p9PZ0Tf:|0.|h38`lpmEh8`d 5]a1W8]mP2K1@-2߀0}zqpa^"~mr~4X"/ ebl @l\?i`B902 f#j, ьڑߑ>j r Jv$K9mP9@D9ATah?U Da21D$Kv򠃈=b/nߨkFQf( aư0nd^ib#(PiJ|@=a,D0֨9L@`|c)#H~m0!.B HD=B%@غ!j߮aIpׄB^BM^yp<V z|ix2ve,ZQpVu؂5j13 5}CR0!a=`Ȃ@^uR R !(E 5ba0UA2`DpԒH&8.@2@:JQ8H 2Vh@0UҦ&H.P~CDPVra, F@8ҐS`JP@@_8L0vUjغfFtbTؑc}lT\@¾]K"|p0_oc=hz|o( yeR^ez"`QVb{/|pa>EH Cp { 9yT+*1r>rQQ}&!Pc^>DhC&BdЁH&'jD2T9@(0 4AL;'8`( akL@jpӠќ\ !\{3T-|xƳ`ct օ~ڐnbi]>|| 84T>, ASFV^(f*18!導q7} ?0T>zK=z@r^P\|(@8~8alpVM@k WJ^&1j6PҊ6`NU5)Z"C?;YSchFQap {$+P, 2 9I ,2ʡ/aln>l tz^@8>j>j>jj.TLtHZql3U@jp bVt._a .9T>T}ȐAB|_+x;A|@!t@@'1 A2:н@B@\HYz8|!!e@ PvUBBVz_YuYT!;]T fTr]ֻ>vA5# RQf(кI HeB1⑞!1RQ@ű< DDq; P@ jnYB]  2Š Ϡ] Tݟu0 ш~K@P]6"u[ -WB=$r:ŴS?l &jbrpwR`)ӼςtpL 1c 9.$Fp^vId$x$//X6/I0N/f/l~//(/h$///ID?&?\>?H/n??4? <pr.:REPOEgX:rgLhbf>fJXOghD{`h:p I1R@r\ Afp_r..2<@fPGgR/(^p$"$_Bx SPJcSr20 /XO0LsN^l>w(bJg95r0<R6 Q7|!|#x|}x,8yAx0߀<,ep h!! X0x|(@@4<HL5P! x8;/q81 p/@`8xx0}q8!P} | N 8c P o| @ p>f1@8pZ10Z1!$0 88<8`88oHJq!," 1`t2a<0 Hq5 T1aP80A?+,80O40pJ0`N555ax1ya00;x3SJ!0L0?080?x0~A2^09 0!8, (z4 1KqO|x1 =Bt+00 @X13~D&?HS@JO1|~qB@ q,N,01@VR3@;( 1xxK VW!@2380S@&_}{&RE! 0@!1A0EHH%A-1,<(pA[0`AQP5VUAT&cq^@<"`$1!VB2R` NoB]A0J5P*U} 5%UWh0+080 Jb4\`8ߟ! (P Dub d,`d `a!`(a~Q:DM6`2V&@!H-!B HmGb||pqIfcG&hgHAivr@AA:dE21 A0FXM7Sp5>S!}0|dq#2AzPց080;VPQ%B{ h3d4:1 1H*u1H@qB;`;@(aBd@8aN0@Đa~}Ɔǀ0_ȓ̖`)N8`HDբuEƈ%B֌愜9IM8|?l A9ee9`lk9@xc9 pt; ? em>Fr>un>!ejrpEA08 <z~=~ z?~h ߿$(0z,4HC` Cn?P>Aq0C>AD6$>8WDyfd 1~`D=B;0, }#Kx8H 0 &mg"040X8Ј6vИ ĸ 7Ÿ ;FH{ lgteo 9CK&?L!@EC|tTD. `@^|b&;~@/u10p8 D<noQ뀜1A,cb D|yB.9 D2/=)no6bMJRZlƆQv>b|@ S|2l`4`@9Z!d_P0 82'1tz\[@~d ~Qi1`5ZjϪ|1'-N `A_==*Π < >QrQ .tE@2`D4AA"* 2'b풛g :100F$r8!N5p2V) KPHK?A(3@@RnsBBb}%H1RW2;0bQUfd%b60]F?X3<|P0a2r70fV2V!#5B00t_Hh`$\` ;xc?!e|6 H*=ق¯( $;@EC;ed;`pt?ZEX?us?{em:2DxDu>r PA1$dy((?Re|!T8`dynZBU80v$r(fq0>b!$A0s1H@_,|hPRD[>9~,fR>Ң@11H$18;@yYAA*a<"Zo d0+0 @-'0sYFy^ 9nQ?!i 1 *f;C7\^u8#8^yBFR=) nv(M8H2>B4J,V%B_߮%H"Ezd:2PHM4L*~nQ8 QM>N}dZlTnVR ! ;sy?BuKA!f|!Xf$:3K"0<D@HA4$aT$Nތ#0A;GaUR nq,P :PC*A 58ۑ6B(hk0ZцR,fPH/Zuz 4^` n]aB9g0:bqא;ڠAN1 D H L~ @PT1vbBUR>@S>@Q(BRP@cS$@UQ:Dtj>@P8c H9nh  ~@?GAdB$&|ctF U#4d&a#Q8`EC!€>pT/0f΂Dڈ>D@t |D蘤dd궐ۦܦ+ಀfaa} e{4, A&B2,lD$0$P|@@V|i`i:Z$(k (vЏH6*),Z@]³(P@>@i^@j Bē~LP5Z8 KD_P(&" <8 OH0*8<@=8&?MAHa!*6A!& Kke!@` V2 :bV~3,)n a`0`xw} r4~2߼~bP |#x)gP"N1;0QҷXѠ\DJYi0 `9qq5]*P(Pk0 ȲZEr{;"D@qD1#ŢءQQ>0 2H:(#4D@jc1r`둃@ @^?"Tc> 0(4^ fN$N`8e/x`dI!A4z.X yA @U6jP`"8j]&< 5cL TPĆ5 ]"VOD#O28,$DjQ=qh,k k ΀BK*%J1A Ia!(0KB @N`㐒)AJPq 0NO 1_ fU:^ f<^f>N C4L΀M"R(?Nj PJ^$fT".DACK?6|X 6kltcxXI fBjA1ற01 }>Kx:18#9r$\SN8@50xP+,ᄀ 49TAB?gA;9se;?L!u;9nQ9`ug9@TA? !i>DB>]A9ND>A_EH!1:㤃 C @8wHN@lL@,0¬  DnЕn1L }AԦ e1):8$^!(,>0@`?}djfbХh!>l>>>>H.!p.źC/<Ѕr|HgPsJ!~рaHVQ (3}`c".`xc-A@1(S!8P?P`pt,!8=JLOA@P{ap84pLHf2* /d$ED rQ.3BP<|4α$ zYb&[.qưHP2x[@b0Tc~odW-/`%@}LZ4h j(:"RрȀP2`&NMar>_PY^_p_\ ___,pg`C A6`0qT p0렿lpl"TA0Rf]愅Z`Ȇ[NW3R`:A€0P19@̀2R@C4`>`?ϱc<"_6|? #6FpC6oHoK18VRZ@H8\9X^2\/@p9Y`a`Ql`f~Hrs"P`f@tf@^@!|ڀHJ*ы{/" C<>mB("Q0+*;*A*.p]|#x,8lk1 <(`46 7}H ?<^ * :^ U[l hT> SpR|_@04<֒ (T>8.|Q2F pp ja JTA p01<`&a}`CNS5"e@u(0421 7Ļ!" (ް4/U*⤄ p6{ p79 p8Ur0DUA6p: TǿD.:2W T>}:`2 p<21 p=%1 2Uc! p>B(M U0.|2B- ̉ɝƀ|M}%4ʑ,2*2v.HFr00Ԃ6p8n< R@#]DC}D}89$CD $n8RT0.bODēv` "&&>@*~2? `&a;Dp07D_pH8)8qI:G@S{pJh;(0O ;~``KC"n4/%%1-o4Wr`❰@8}"d, *T "!&QSrAU0L8X8|d8p8/0~2܄:H !0"MAr0AT?@KZ\ZrrJ3 }"`c2!$NB#F=)B`7aQz ݟpdl*!8<8@HŪhaDKv:/;ee;P?޻FrQH8P8syQlC awAsm~BV ^ៀ xL2':>pHj1BP:ᦠ j|ώϠyd̵@ÁWD $L@ M(Rd $jd$dPdIdҬd8ߒdHd҈d`$*dhBdҤZdIXrdҼd,dd\dҘ$dҐd4dI|2dҀJdҌbdLzdt 9w0dxd$dddҜ dI"d@:dRd0jdҨd<$d҄dldIdҴdpdT*dҰB FZ^b0,"H@jH +,23,&3*Bdevice_typeataidepccard-AAPL,bus-idThePluginDispatchTableJ%D[0{c3!$,!8,,!Q/c.,!/@@qPypm؛ !ai~iߑ"q@A:+ h-?%?=!M/*?q%c -llll%@Nu>pi-diskl3m2cdromcTdt2!2:L\l|ؽ2!2driver-descripGtor/1ˀe4+4Pˀd0؂P11%Dg`C pc0= = *= 4= B= N= \= j= t= = = = = = = = @+@@@S@w@@j@@պ@u@@@(@P@X@g@z@@@@@@*@@@1{PJ*BF DK@ G@@D2SersLibCStrCopyPBDequeueFirsMt\PEnaR\PQbQCreattVInyijQxRDelePSynchronizeIO\WDecrementAtomicIn[xRSecondaryInterruptHanodlerkWLaiPCompareAndSwapSRLenCurrPExecutionLevelSSmpBlockMoveDBSLosadJ`QPSetBSClosureMemoryFindBSsForDGWexgHigherBSVu`'`NameRegistryPQePr?operty}TeEn`ID!os~lSearchlPPobdmRmV`n`oP}TRfacePRo`olNewPtrSysCl`UaToolTrapAddressCaollUnsbal`clbSymbpTickCounttpuRo%`nP6pptem_Zone_aepnec&aUa"`"ATARPrdEvPRnalGFamBusPx`AIMNat0GMgr]IOD#MediaBayOnlpffM~pagef YHj )׀m[< /0ނ(߁;0 ނ @8ނG0(ނU~00kcx%0b&X wanrk}c@KurtT@DJoy!peffpw;pc1aYDuA9Moށ7Mϐ96E/O#SĀΰ:$9|~x|+x2J5|dxI]nc4:ЀBN|xn |+x|#xW 6``8o;3;{K" `T1W@DaBZe8jBRLqB=<W@ER|9?p9HBRdHA-2AZś0,~l8D84(08'9@<_,0uL DL HPT XX"/A5 !!|;x88@]/S@ZB"#H$@B$/"}$ >=A ^|"% |2 }>BI_@0~RK)F?0n|~.^1}y,k4l bj8`P~BP ^0M !>MB{J8``{P>=nQ8ׁlPaA)Ԧ5֤ j dѐΠ(Qd)@ P@8pe80@H0Y <18&R5YZ2'B< P<R<=g@e#Nΰ\X]|pt\|pC^cKH0, Κt8Pѐ ੄pPwx:~İ|#x `bNj= >0m} Hx0, 0~LTcΰV`l8 H;BJR~fTcn^09zZ24 `MRN@U%<|߿*rΠ,:26f(.>N1iBSmyvq :p:,,p8pe<no|(@ΰat::jL9|p|l] l}&~ҧZa|{x*`HQ|w~P?LU#Αk( aRbDw-K>nPHU#⑮0W @H^A, PA"_<(Oxv;;z;Za@mޠ( P@jfU&P^`~f|6^xNˡHR\F]RH @)P }=Kx<0(x@Abh|0MCH_`v%6@pU#c#x-ҁʢ$аZ4LT|A`^|*K)ҁ?fc90fpxưmp޻喥U ȲηTv40,ϰLٲ".|||,h.㑿CʐQ cB1p `e1,ʱ p:]_`Bf5"nRTX*ٲ,䠆Nփl~c9C@XPmdwcm>x$6@zѴyf(0񑅦@jR(BK$Y&~Q)ҋjntn}`ۈ.Ӭj t 9Vj>@Pb.Rb_0q#(z.KEN6AN%ҁjPbvbp TpѠp6@be` 傖mBQjPX tR@A|N/ˑK6bdB< UDA@9Ҡ; 8it8u8Q06b` b!>N6Ei2ʔ J`pN51J91J`=bj58 Х*v$@`Xv!bQbX R1.5` 6p i`bPT`L;THMP!Q"`f~P#y2fW4F`XO|c4&?Ē69@} $P` I< d00`aj`9p p p k`JUkF>p UJ}kSxDUBT.}kCx}k3xUk'>jL8`` $c`~dp`ba*{ad=.!>TaZPLj ~P9)`8>B8sPt>|!^!9p8;`x8|Dˈz ,Ky`jHI 2z;Z;{OH+}8Ґ_; eA@;<࠘Pv Qb{Qvy!`_(N`@9`>8BPB' B+l g f ffKd|@<}C | nk( })tҐU%DH`_B6`}Jt;UJ 6}kRs Ā[À>T而  jd(jPHŠfp";&M⁛x̬` _2ƞ_@A:BjHϑSg ~cE`kJ}k}tU 6v|J^Pf0.@|O7ԐĀ@2'QU)< }^JrH $B.> `Z`0.PA^P|J 7;"^Ā 6}jB 6;> -ې@Ԑؠk|"Zp5aPf!PgT1QfPgZPmdcD9P!:>AS j ~$ A|-pX`|7t,P_H`@@LJ@bP&@*N51@bP'$"`(.Jr 'f00P^&@@AFK=2ѓ2YJȤĈ^mQdX?)q"1*m|/xГ0PH  օA8rX<|0xmQxf@, hDU Df@7"NgR tPPHvihT_~(2@_`) 8T_ p"UiJH&q_,X9B3=gwMx@@f@y2F% 8/:@8X[n!. ,A;D" 3Pd. )QfP04F8v<D#JFDPH1FPvYT^@#F yqF/`b8><&Xq&ْq~0Vo|;xN0p8 0mfo@ 0Mf |2z~0z¦PrP!1p#qFPJQ08s`lp&p"r p{2q~ <`8H%Ւq›a(. @">!d%Fu")qP. !J!&q 0T nl_ n/.p2FPTndFP$J k lUnrp d\O~pUScpH~`2 N&2 Q)@Uc"E~02 QF~ b K~b 1`_L}cxR08 !^T>T>r. ;^W;c`ҰEq8|]1,8~ܦrpP0Q2!Ұ`ߨ"‘rKaŖ!~RbK!:p|xAZ  pdQ2+`3,q$~8ڰ]D s~$zAt21N TF>TTB|3xTp`+Soxl F?&r0!P`&pR ݈! Ơ"0?$=@ր$ށUJ>_]P}!Qw'pF@].4H wF@%z"_W@.Tc>|`"Qؖ^5(q$!Hr[P@%ZP>aYnTEQpNOR\AiRJrPIvXTUrP)X._@_O`|߽+x(fA;~(p_T2h[Pb`uRjd1-jdEfhufh b`}fh b`jdb`Bjdp)jdb`=fhArjdb`Rjdzb` fhHe*jd2pfh2pBa@8 B`]Q(R`Vd^`q`Vt}Rbp11W`d`b_(o:oLf{pZaW`2p:Pk`2p b:t t "t 2IB:2:2t2t2t2*t2t2:2it2Yz 2S[wUfyssRpИ S !!P #dI0Dcd@\"AP`ZO ?Q 0l(w`Pzf|8]x&g@>!+A<6y⣛ R>($}`xN$f^A~ipOФ<&"@ @ {^U&" oUC?ʱl@kL0U#$bv a` 9 ꂠ00 U#DT" Eቡ@ E! PEP 5!  ` u!@pU#c^k!0!lk ð<%(Թ+Y`0xs|0#K~@Vsjњ,C8Hn8<:LT zj^(/8*ECn6ဢ_"AQLУ b(!Y0(80 T||fS:.'С2"8hΐ|c3""QTd1~@$}p8T>T>}9,O@}c[",`8 ~@ 8\_ "T><|#x99B@:9`ADaHPT!X\`vhlpatx,Kp8ڐ09A8n0qP|0T>Op~L?ڐ/o3$A՚2~ }W#Kxh~P9_@}|dH8?ۆ> ,~Ti< ↨0j } .> |J.| @|j$c|i5P0})ۀ L9)U#<|:.|@B48p4U$:| .|x@󓻀> |iw8cpi0ȾC40mT7!NT>굓E'Z2XQ}'!L8` 8[k1;W(VȊ2`<|(@PPQ0#e0j8Ҳ0%~|}sxZH R1; 0|@0F> D(0!P8H2Q`uR 1;`/xB`fON# (0#"4AIJOhp0ՠ8p<8TvЀ0j5|Ѳ(4a$Y W@B+;ъQ?;`pXT>r u0r\~  06?0hJb9$\"J 1?@,$ƐNVaH<~0# $0`?$0~|hx}Cx]G rא#T|+x;gR:1> V02; _A( x8i{1AU.0J\"J0&? P41$C3 AM1!$_21HWd42ڐB ^1;;`;??{¤.2fI @9)0_0!S ('@*}#@( (:AB2_2`y|^1U$8rEo|"~A;|@bCrFG0~E= }>Kx}xTdF>TeTgB|+xTc>|;x|i8T F>} Kx\t T BnP }[xT>}Sx|8;Z} b|tpa bj0|Pj0|uPj0mT42:Q(А02R,@nQұ|;0`vQu ܠq "t0,4b6 *|@9%dBpF0ЀH ̠q a9 =)l_t F>aU_JkcxULBUk.a||QkƐp`TF>aT`HaTP3xUKB} 8|[x}bJм(d(H xo8DX;DDH=H~Tr@'tVD/v`֐JT`3T`/U} LP+xUl`Kx?}@c)xndsEBf Ɛq` ֐NQ2 T`JTPCxPyѐ} [x ?Hw "j0"Mp ^bg}"Mԁ q>(ONL;TV;>~&D`~T~>|6߀ђ}p<p`Y9w@bTDPHPLPCxT.} Sx=k$J;xUJ| @0O <DPHPLPWPTP|X8}JCxuH|@xeDX|ĐUFj(p}jP8tJН\NpK`@TUpt ` tըLPĐ c5u)UD#:0jNѾ6U:0И*j2R Cr›e~P6j@]~j&p* 82^|/^ڨ$ h2Мs)~&Ku!@da<"%~֢s=V@f~f,gk@.hr KƊĀPpe}#c  *< hN lp8uyJ00?|+x|ONRAb@_gf"p6 0AZ!rbFwIgrңP*0xd@XtDʱ p]$@8;4p88xHO* aw8(HP=(8AЀx||(@@} Cxv8,| $p" 9)|(@P " |:1W) `D ," 4|0 ,ۉIP,7ϐ vA,s 9<'LHNIx]$|~ 3x{+x9 K:g}z " !;;({$(ТW 6;`c|HL.~࡮8T1"  pW|z  z !Bz/yHI<01 U$.P.!Q0`}&!! 8|+xf|x8a<|$KL9ZLHM8nOd}D;`!&ҶDnKU1b$=j$$r >v$? ߘ 8Yc ;HVL~!&Ť00j4A01^8qI z1+0"6s|#x>1|+xI3x}HHy(P w~KQ ; 2xrI8>1CIEB|c4yH}#Kx&$fH٪I2\~||t#xT~N0@PJ|K]2P̪V$@D Z_8U\-!AzHpTcA|Td7\@`vPd8T2dX:eFa8QHG.E:QO(A6|]zX` ;CBb ; @n`~QBHz 538;?,g5::::P:_L*GE0@Z80,<A2p-?Wn`5zDPJpRpAqz08^ qb!-\:H8h`L%HVHFy\FHwN0LD_aD`9tp8bdlhHEaEqbtP@pV$0tZd|pVU6HCb!F!Hb!-n}oQ>R:NH'b!.ư*ʴ0ưʴBưu2 ΰD2ưrΰ=P'eʴFưYʴHưAvd(P2CMv3'%*ղ*Ძ,q<$pSz ::p>pbhfr2`qp(Sp!d2@q=67J\N)Z>@vwT~Qd|z1~Q<|0x`~Q6T7`XTū>̀"cG5@R<6HCeZ=Xs@Xp`~\8@`h9lH?Hyߋ;25=ŒHBܱ?!Rs|;x8@`~i(R:BA N`er^y@;?XH461Ha"hCᚠ9`5.4#v$\JXd ]Ì`t\`C^c8K0, 58_ 80@ 0@O|#>5b RC{N= |9MR} Hx_|?TIH,Ib!|@C1yшyAPqb!ZJI~ALT19 OIA=)PI}(Kx!9 MA=)MDkT!OA@\A,B|tT T 2gЀ| @@$tU%$H)gбHa!b" 6 des%:9#L`8pe jHjU#}2Q_"x`@!AHa!A,<`<(x!n!;Z'0(0@пfU&κ@^`Ȑ[0|:`^r!0Hl0:\z74H @) }=K xwH 0!%pU#cBA#xQ!$@LLT"@^!|W*P^~3?fc9*:pf>x01KᲪ" 2GI~F#4,:O0LB-WHb1|p4~S24~x``w 2v: taT:T>}0U:}(I,, !W6PղJaV6P=Ŏ` ]u%.~]~r>Tq1K),pA8]T1Ss>$UeՒQ P. T&a ]WMA>AR`0O(0=QнL&{s& -{,`!g%u`ۈ&a!eab>fK_|dj0|j{:,8J_:8P* 8V0,2r2q`:!Fu^uXfeR0q%(E^d#{rsAR> Qk$0J<#~c_@|D`|ӝ#Pu>Hp;Ւ;:;[N(nDs|@o30Ը #$ң+NP`9T0AE¶ fDU=јpR>ULTP{ ~d`h1KsMWL^8&H9lNVfTc"QGc@@;;7(V!fb bbU00JA .ФVLv0(G3D~DЀ|e xJ|9\$F`U'"D(P;89%"8dc#:0@}B8b!!|3e@"@(4B*!q(>,(Py-q"OTd?> -q JA<`_| P-ql n! (B Tc~ 'Nb`0R&*X~е<i!0!/R&10"TvUACP9r~1V`&Emnð~VbV(%V0t&P~G9rGbҕ^!Q\$Q,~`ƝۈrR+'Eڅ",!{*=~|c4fd qwL_ H `_ (< D4 j?9@$_iА ^^^^ј~^љLn &oTBB9td|WK0lPߦ: (N T{:}#:У ;SљK , k X ih=>I8ѱK:Z 8‘Hfb ~iЇ~̔ xB^9BjӑcЁ0Љ,}w::<;'k.VHJa_  AdT$0.|N 8'@`c@@HZP&b`(R>$ZQVRB' IA'2>€ W`VPuƁ qrV RpLTHa8B'ZQKMqU|bO0?;r||xw8ەr@X")&Py,K.qz>9%΅*] "53T>.$XnR80z0 2hLSQ|qQT>3xTS>0z0 LR ŀC]4i1P?O3=Kx}Cx|;xT>P@::yPDD.Pt&7C LDT|)|x͐7B*>N'뭁R?5|ݿ3x|+x4P81}2JK@| U>OPF1RbOܰ/ >T0:`@}(UYpB?6|9u>|Р7|lx|48lT~Tw>9!@9Krc5~aQ6&?_18B(r1Ra )b 2f 3cmrooVA`>^&к9q&??H&5QBoL^;O?na8A%Q|@Zkp2q;<8ap;D;A&"7p$a&A(YQ2!8 _±T>*;~9np%r$"y= "~pS0* PR>LtM@x4sKp&ۘh!&rY f!n!fV!p!n"fj=Q$f9!n$|t;Tj=B)B'fj"aЃh` @.T>}*U>(/pA$ ;j Q2@29F NCA@9?+>JrNZĵr2z?σ|+x(`3yA;gp;7l p/prMB9D>imB5 }"B ZЍB ZНCZЭBQ>ZЍ>Z}*>Zm>Z]BBZM>Z=>Z-N@?8 5(*.6!pB>V:p~.Te>$a^G2Ѱgp~p~u}2Q" EQ %r%U%"^uª^՞^Ţ^R^BQs^=B2>5iZldtD.`AΑ֑T H p#@IDc@ +`j%J1f`ZyaKQR!iԱL @\@gАW,T&H UC?rlk ZU#$ !p  9   U# (@  f    f i " f9հ U#ch0 1lk$b G C (ffϤFcՊTd19`f`$}p8T0n 9fa, A}c[e?;|jxj|tؒp|#qQHx ,a~^aTi<@d2ߨ} ".` |WF Ơ(Af0|".|( 0,@9)U'<|.|@B>@8|4TThTjB|CxTl.}+Sx|+x}`cxǀT0>HQ[΃T/<'`7P}&Ԏa>|+xt$#x;_ayx (۠W}?W^-;>@?Z|}@^8|xT>ax;?X 1+۠@ IрrVaW>U&>jaVa1~0A;<`9@jX `pPqP} v_@D|T'0<8`UdxQ$Bd =r z&gD`p|#"8\<^g <Ɣٲ|?cx|ceQ !T|#xf|{x`+;b:i;;p%@y0x^Upp{8pOcw Rtg<4pk)W 01'|}au򲁬;<`a"A&a.^,ˀZIVja|فozfp4a`vQ5T`T>K`q<-!|3xa8Dpjpa,[@H@;(P9(#4Ss!vupu{ فԀy$=0e xVnogL0 TD88~@avx~08on>v v{~( pK`T@.|$$ffM=1}c;T|Qb,_`6PԱ!fjH=f8~ЃT~>|uڀ4}4g_ 8԰Đ(|hÒ {0]A ,aXEB^WZņўZ}p1!ґPE’~nub.<ߠo|(Ia|PqAzp!$p(#d}۩ьH)ff8ґ׾18oK,B8$08xpѿ&ĵAbcۉaWC0"q@T a#Ha€  TF> U_ |cxUlBUK.|[xkqP06Pyʖ<02!>0ޒ䐃]^(R4>0@#d0T!M<1~L*U|Tdp Y唯U0(bm >`dh?0;0Jaޠ R{<`|ӀڀtR\BȚnH6P@}7)&18cYA$3|i@?i^|"^R@>^>b!|' .08pe<no|0@Lxw)`!^a߰9Ñ9@MR8в=JTIq_Ie.GQ:i^b8`MR0 1f:fĽ!̾0t~X@Oy^*0z19ZЄ’|G39R \ _0K’$|0x|̩16*:000ZU(S'>@% ᓿ0S ", 7v0ur7 '@v0%2{k(0!F01zRq-ZS@.y|lpl" y/e`53R!3z0TU R%c/ T1Rqd?|QKp7`zLa,g UdrB`L=1Q57Qu<}&0b0v,Sȹ~Xm.@q:@jvfb!?'U#ϙ,@Rv'>adsqs׽bU#癁8*0&U#Ra,fP 2'G>Os^oО_Cqaqq[pZ@} xA'QE޼OˑUfD |,"że$>a'f ;8P$>ee&, z0.$0z(r)zJjzj&&|t!(}Hb"[PHxI"RߐaxN|VHjA|PeJ" @(hHJ%z9Q@cg508ߐ័9^8vv8|#5|J)08hx9`ꪬH|+xơvNJ,DΡBЉ6T(B-R.Dpg#Y:0>dW Ôg~^QHOz➸ Ef8¤@@~?x*8/4բFVJHGο໊ B|x&ƒS?̚-|zFߑ 05 OϬZN|e @e ¡ʡ | {1 L| J!U4Zl|rߒl҄lTld$ltlDlI,l҈lp2lxJlblҌ$zlҐlҠlI8l ll\ ll"l$$:l(Rl@jlI0lhlҜl`lҔlҀ$llL*lIPBlHZlҨrlXlҤlҰ$lҬl<l  bj7PB$.`(0HxXHP,0#$<@DDFG{HI{IJ5compatiblechrp,ideregAAPL,address/driver-istmtejB$  /Bata-!k@B!!08 ""L#~n!""!p"l&"XxB #! &  !hJ,Ҵ+x!! 9!O !^ ( h& !#B.0*?Bgc)!` 6Pn+@QBE*7P BB,E!u4B 4!UB 7P_4BVP#a4E %E U:E KE YE sE UE E E E }E @U@)@A@J@UT@m@z@@U@@@@M@d0J@J@U4J@HJ@\J@wJ@Z1@5@J@J@w0v@(P17PBJ(BF D D@ DServicesLibDuronToAbsolutePoolAllocateResntDelayForHardwareSynonizeIOInstallInterruptFuncAsMemEPhysic@yContiguousCreAndS7wapBDe@BB@kCopyGetOCre@ZVSetATAManagerQFamBussEv@@AIMT?IODone@@/faceALOPPoryC@OSTrapUnsalProcAXTim@rPRDisposeRoutineDescriptorUnNQTW$XNeIw_WPT@QAVPAtVQURmvRPErr`Nkam@gryA6|eEn`IDRR|eoCStrbToxal@@TmInitfPpertyWPo@mSoetS@oyi|QPCI~AExpMgr$PfigWriteLong^zReadBy@u}WordEndian9Q16B`u}p~krrTheCUAhePluginQ?atchTa#=Q>` A R kc&!6ndrv.X}Kurtq00 TJoy!peffpw{pc!aB :;io=8Pj@=9+%_l0CZ8:{8898a8HfdxRΣf]%c4͞j |#x_8`im8obW 6xx?GC>enZ|N{xxRqdapoh8H_5޸D(@_ֱ$x~x~KƳ_zl}:@8|8| H@ʐ;, Ad=@,фOWN;޿||nW:ѯ|d(.z(>C8ig_ *(>H |н ;` ~!VxK⮢}ʐ@8`oag8`Cdd~V£{ ;@"ޑKU_;тŸк.}&H1AKQy(1^Bt }6ហ0>no; /?Ca>ASp "@*@%,A;0B@!J@lGb^ )ґ\8trrms,1 2Zm#+!z%#L!z `/]][2H`cȠ|KPz8@|(x\Pu}@ald݃pYo P-Ve۩aa҆@) YMVD󀾠mP"%҆Do[P:[la#'X)SFeSƇXrֈu-XBݲ|+x:UP2ཱྀƁ摊ʃW E!VP5VWI1W^];46:R?g6W`ᓟ ! f} #T\@X]t_\ԠC^}clK, T8+ 01^¡HV@宪ց԰⠿b.щ G,  fPq} HxO_"0T?Rq8BfJƒBFn9Td1P!}p8T>T>}9 ~A}c[x֧>pf9A-@L9OIjT1f=PI>BљjU)_}Cd~|dH0| 90~ 0r8b|(@FѷZ0(!T}̀, Ngu땴`Re BҡW >ʃ+] :,2,@l8peA$,+@A;ag:im:ll:ff:?Tr>Ca>Nu>Bu<(#xR;V;Zp^A(+@ 0fU&^ƀ#|P^KHmSBNl| @)P߀ }=!?x*|e8Jp:'~B|tzT8T>}8U:}(I, C;!HTEZ0:В PV źFSv KfP]av #KR 3RTꂫKY",̓0=0XPU]1sZ0$%GHb4!!Fr&Rv@ Jv֠&QL BS]Tc)ICbxJQPNP RQJЌ6QZPMB>p"`(S0Eb,ΰ=5H0Qnߙ,fv9/`ۈb >RP1A~DAJT5:3*@:*BFְ0PQ$pBBpFAё>:7m5EFq#(ʪ@7R3sAQV!;.MBQ ?3>pT&ubU""=h|,X2p:0(@<|XTqPUH`w:0LTǠ`HLWP`oPhıLLg 8eY\Bis;@@AO&R%szJ0 ":Y"@]T`l2$$U%$jAdef`%E|b `@b UPL$ri41h',L/&(ٱYG3)yo`2 LRnpY d`dά p'!>0t,Jvt8PSZCeOOHFᦲdc;'pV!䢮&de$^R'Br@bvbX29 DHDIO8rtZAs1XP^DT*@ME8v,A@:!YE1 %uB'2r@X$>NLY /!"B*@B|ctTdУ/TE`dA`Ƌd ևCmfDJƋx TD'yXNv8ls8O1Z dD=ʲ~_X~Dv\HGt6HR) 0Z@E$2^1?0;HCʲJ梛nNJaՋ jCm"@M2v>U:98qR!dbЙB qۈ.qRlr8yniCAT>doH@}u)1j  B4F3HZͻ@MV;Z;{P?U&`R`T>08;bp6٢&aA@/8TAPtZf_A|_0$^ g@T:}:;",(ƈkR2.`h:*` H4@ q |d$P p+2 "_~4$T!~X*@ @ VjxaV`[:AG0QWNR8pՀ$ D<ƋExJ#\Zd1`ec^`IHaVhN2AV`ZdՠhfaZdEpX\V`a4U%$6`B!}F(0|09ZdPp(^`Fp Uc+ZdKppEa}^`L}cx6/H#46T>|8UQ4rGU8f[W4vQHG7p\b;cH6rl8|&@,8~лp~Pq!,̎t6rt_4t RqjJ!P5&q]Ҳ^1,l|xq@şec8RPCohB JR!8n]SC>}B!JR"8um`5QB"J_1ow"CL>%!LRݐi]|gt攥`4B_$|t>NuevT8٢ueFt4uޡz '8mdDd 4'NH3!zƒ|T@.T>|*Tw>2v6J!($Z!p ;P3@Rv] z)&}P2B4JT|+x|D\8D ^pR8I@h " Q1ӿ,4O]C1 &T_>; rO a6Œ6A 61 6!66J6/%UU$usU:J٤&/Ij|D. -(Sraza0 #IDc̘Ktǡ W?;J!bo?PH.!| @qAPQTc1@;p@ap@;D;V!2!OGFJBa!0 e& `d?PVaZvP Pl=RitcxW%MPE!,‹}Rp*_T?;im9 Rs>Q??Ca=)BsA }$Kx2/Yb;`>Q" 8Rf cWr W?id2 P.WDb$n18Q 0p2 0Ta= 04' Wb= 0D2 0a= 052 0a=Q 0u2 0aP1PQgA8נ SP1fAR`d?`oT>;娐~/f8fofOn 8tre0f`}b@_S`8dt<uѾ|},}|t;}$"|#x.SۆHp?KI΂'Ti<p".6 | 8|".|(P亀^p(@9)U$4`.|_B qW8} 8| /Х:*A{9 =ځpΈ}% 8=",=/+`@@ߚ , 48`ag8TloT8MTrae>qT8T>Wp|0lO}@/+P€U 0[0X:.Vf2Tvc`xTmH$VQ }y0`Nw#U$A U#zZ!TP8` 8T@iF>TjT.T.}+SxTjBTi.}kSx|FpTD.}FpUlkKxe|Sx}C}&|+x|;xp(|3x{Urx:[Pf|#xp0(=Wcpf8/}@::>8`;޻?A!jqT"pAy" ~x1?U&>Q>;#jqcAd::40@" r|@fK2Q.cy+2`y8DA<2MMe>ֿOuN LTc F(`f8RT">2!|躵*d 6 $]12r 7Er5@ ~8k < OHb=~1,@@iRf!2u7ar8MA~^StO(d p6~x>U"r`T"r`LxpMp0tr^D`uSptueqc@pA"BgP۠NF blV6DsH1Zfzy$ R`9r`RԵ&8)FP~Z!@"Tߔ࠳(o" ;`&In6plc8DeFsM-B6lsFms<gb""Zl0c0ԁ("ob8 "GɐҶ0"πb8%QB9Ohw0ʄa|3x|4nsЁIH Iz@ M;c:ns:ll;w;[?I6> I>{taJMH1`L*@IRbA([R:a <& h0ISNpC<8 i2`|S+" "> r`Dz;qt(QAOFkgɐ 1pj?ċlhl8q tKD^(à(R` 8XbA8DOwg6J|(mTɐ Etj@b~g`VDn($XI$ ,/./iF/0^/ b!v!*"Xc8@!c`@H(!XhP0 ,POP0RSD\h]`cH5atapi?-disk02hdevice_id;typeblockregAAPL,address driver-istnXE31&M3 **+c2 +X*,c1*&+XxJ13031 mWeUTDD321?.0hJ,Ҵ1S01(߈eDCB0(0h14$1!B,0Z<mtej  cmd646-02C# OBOH 1 G2"cpP!HE@O2 *d1 d I0!ENL HHpEU>LZDH @BIAA@U%@:@K@Y@Us@@@@U@@@   ' MPUZ e } U WPP6PUJPbP~PPզPPղP PAJ1J)BFD[@ DA2Ser1sLibDurationToAbsolutePoolAl(0ateResidentDelayForHardwareSynchronizeIOInstallInterruptFuncasMemDe_`.bPhysic_`yContiguousCStrCatCompI`AndSwapcmyp&bxgGetboCre0`fSetB(1MoveDAATAManageraFamBusEv8`A`AIMtIODoneaRecordrbnalZ`d`faceaNewPtrSysClearLaemoryC_`OSTrapUnB1salProcZaXTimeDispwosePpPrprUnbas\whMpRoutineDescriptor`]ataeRsmvru`ErrpNam2`gG0ryauzppertycaEn%,IDCopyToq7d`0`t7<`=e5Init`c0`1o֏0`aPCIaExpMgr`figReadBy$` Wri;teThecuahePluginqatchTableT=Q4 n kc3 @pndrvwX1HkcKuwrtR0\Joy!peffpwpc1a>IBGKlHmEKP{@HDN@uS&.V:889|~x|+x8a8HH|{dQxz]1~c4\S"A.Đ6 |+x|#xW 6v``8;w;HJҀxwa`W<|$_|@6"P6 b d"DT.8" 6,"0^ |`ؐQ,P@:3{  Cxdx8w@;@KPԐ"Qv@ưPVRSP8X0vxG~`5 ʱ00*W_<%$ tܠncۍGԁFВ9  4b갉Gan߀ _, ࠘|`Rp泠JS´8nvER$Z [,ԅ~!`8|۟#D $F% uF! 8010jULr")TFEfl6*rq `vcȮ@rѐϱоT=nPHB!T~$\ @,|9_9dnl| BJ񪥾ض||`;.⾡HC5HĀ_xYn,r8jҿc|m&; A~y D(Y $^<" =ܠDcc*J6m: Њ8(UvHDPyVY>߇d\:g:;Ð;{F_NDxKMa;;(?A,!P*B9r!zL" \H@*@L*snѶ=A ^A rT" H?<$@р $r|l?9PUrl" > qF/@ݼnlL(9!t 980IL488 00!<(,> /@U(L&0@0HUD0L0P T> $I26?@y$ &1f*1|;x8e8> v?@ SV23D4@4?034 22>r|"% |2 }>BI_T@~RK'%򶱀S@|~.rA},Dl v~8`rbHp߿d8 &0d4> $>uSi&X4T H+mB%15R> NT5TQ*Sdh:Q; ;;;A;?/;T+e2PUlvr> vLߠP`u>!Ҁ [ ` U  0b 6` R`V`=(vɬfU%<|*u,FJf(.7H er|d :b,8pepHw~iP?LU#i'0 ffrD-`HU#@kp@fFHvA,`A:_<(x;;ZuPm(`@fU&&0^`f|^x߱3H\ZfH @)` }=Kx<(x@Aobh|{MHsp%pU#cF#xK-޲$ۥunDLTA^|*_摃?fc9@fxpU 40g2B|P @4ĂNWrO}; v2B|tT|,|Cޠ sA@p-y®A, pNY]>s`z3rȂbTKAP*]/T1sMRA<8&qF@ ;L3ٽbX~c9CP1Vqdz^Be>>e"Ўᴛ z(0z&qW_"a摈,E|pa8~} 9ֱJz>>@`bq#(KsAJޯ@pP)^uP$:Ȫޤpޤd(AXU%(ߠLq6Tƒ&0q&H0rWȐH`p 蔑4nqBJSfFJVHҰ:j>;(az(vsz@|0C^"8pަs/ᤢa]Y(BQZ,rf|LޠhbL0 m!vpG㈏~&8.|4a8.PT:|8.|$ A摞ab@[;4!2x11?6)_$E"bJQN(M~`bIb %ᠮ"v,PH1>DX`PQZ" N!/ߡ]rbd*BP U DA@nIHeK Hi"JtHTo@Jbb1B>%N%6JU,ޤ L^pbL2b9A^pb.E8 ^)^$D-Xv1vYԡXbAp Jp H,r@`!T.LTH&`K`er.fB` !%2?fW4ZpɑX|c4?آJJ@| ۰$9+S@dT?@ֱc9` a< |` Ҁ p)UF>€ U)} Kx`BT.});x})3xU)'>(p` ^t^taIwqxplaE=B!R#𨾰aqL~ ~B`9)jp8RB8z`t>|!!9p8*;`x8;|Dz @K y9`H}b3 ;Z;{HS)i" *8;VH+%j-@ >>K<|T<}C k(K })t]U%X\_Bc}JtUJ 6}kRK 3nTux ~yΟ BBPH2f2a:|pW^f o _ABj +gH~JlkߐJ_}kb}tU 62|J"`*@P|TȬ@2'^aU)<0}^_J5\ޑˠ⑉`ZW`0~j`A"`|J ^ 6/}jB~ xˠޑOв ִ[@ۑk|"1ҒAvaJ`1! P!J`4AYaZ`pd{ZTBj`:>Af^c*j0~4 A|=p`!|7t,`/H`@qL!P&`&nEԞ1P&`'a$8@(R"r0'*@ŀP^.XQ@KPAnܲVKRBvbԤVvц؈r^an?ёA|xГC@nPՇH IQm8rX<|0xPg ,vT ZT B}B&?bWPbBF5/(<8(Zn1m(Q;%"Ttfj`,^0F4v8k\OUc#JH``NqaD`@UcE`0"UF` K`L}cxb0熰8 0>T>T>J ;/;c`H j"l8|U"8~E~`z`!/, z$e; ij`# ~JK<2:K!2Ȁ|xFQ+"`#k1/$',A0s& u TF>TTB|3xTđ0Cx}+Sx7l0Mj ʘ&JO p׽`p* `! "0?$=@$UJ>]oP}.aO'pB(pϋPQ@W@.Tc>|`1n%(py$B!j@@@I"C*D&Ϥ?LBJN@*H6DEN@VD??/p|߽+x(tA;~߽Q1.a@@N@)BTbiTX X VPiT VPXVP2TVeXVPXXVP2TUVPqXVPaXUVPQXVPAj@@8 @A(P TP%P d1B`B!J!pd`YR^OOOV/`Q PV`R3PPPV``d}dUdmd d]dQ d"`d=dUd-dddd dc*dFtdFtm"`FtͮdFt^ FtCgUicc2:oS`HrYZolC0 #I0Dc@T P8`B??ߔ7 ~_D:;+^V`ib631~p?p'!&T/U&8 UC?jl40kpP RU#$ - R 9"Ȑku00R U#% @R n% 0P"R n% `R n)%0pRU#{ckd #%l(`۠6Ѡ۠Kn(nmwI xļ0 Ka^۝s^¿nRy%H"(<_LTjq nꡨ(8*m3q87!${6:b(n0 bT||f:.~Eɡ8*ȀS`c3U1Td120~$}p8T>T>}9n, d}c[U2A}4P8820 9 9;@7T>"|#xw<>AaH;b PT a9@b!\򰐪"DVX*ذ` hFlNptױA!VOA,P~8z}r 9A8~" A@|0T>` F0"?,w/ d,@а|##!H}$|;x/!$A }#KxhP9#@|dH8?N݆ ,5^Ti<†\ j } . |J.|s D(|jc|i5@0})4Q L9)U#<|:.|@Br4ц8(4U$:| .|x@ ~:|i8c(Wi: prT76T>5'ZXF9'L8` 88A>[S!(F`F<|;(@Pܢ݁o0# (b~: % |}xBѺH=rB!;}|@ D(s @8ڠAuPl];ޔ_xp`r47.# (>#G)r"Tp&Ÿ_d8 8`M<8ŀ: %('$$}Y @hpx;6r>A;`pГOT>Z iRfu2"PցJ9$D ր|!|8t@xw?p>0,L}$Ȁl6ɘltQH*ry< տ Wx? 阂l l|hx}CE0o:ĨT|'+x;ށ;w息? > | -,0xm|8i|! p ppր2 p&t [T!оl$0+#!5!"8F#1H 1Td"zΤ F!;;`;} ?{Nա @9) G Ц (0~}#@( t1("1*"G"UP|F!U$8^5|"j1;Ĥ o3^6/ j5= }>Kx}txTdF>TeTgB|+xTc>|;x|i8T } Kx\\ Fw>}Sx|8;Z}V j|LQ x|@R t|u@tR T"&A(D #аo@ZA^|;0`bAV IjjP r\ ,JѪ7Љ|@9%dF w vس6 o`P U9 `=) _ D\F>QUJDkcxULBUk.Q|[i@ktz``PxPvTF>QTPHQ@@3xUKB} 8|[x}Rְd_`8}PT;0`a/5$ PPjbnd.o,j`@ րT̸PTPpU 8@+xUlPKx?}@cxVTzc-2hJNhQPhar h:A TPJ@@CxP8} [x ?Hw jfpeq ` jP RT^6L;T>q;>f6Ķ~Pi8~T~>|~ŠpF|8`<pPY9c0JT0@4@8@CxT.} Sx=k`J;xUJ| @0O <i0@4@8@C@Tl@O|X8}JCxuH|@Йtf)Dhpa|F|;x}HRL9UH@.UGF>UFBr`}jP8FNZְdʠ\6`LP  CT`\P dX8@ 5c!e)NUD6Ѣ(z/Q B iJ /ᚬ60]u i`8^|_^$h zcU ʠKI^>ؒda< >zc@򡘟X ,OW0yb"Ka y8peeCr3P*X0eWP}ceV jaKε"YU#>J,F085m |+xv‡[P(N0 \2zdAhc(q4֐2cHAfxdUpXzd8Dp pG]0yr֐CBֱޱơ ZtSޑшmT\ڑd+!\e$!%bBcJ|năsM">4,ԟ0LnĂe:<}&(x'b(ǝ^ʶ A 0)LATI/</2/0J/\b/D$z///IL/,//4 ?l"?$:?R?|j?I? ?T??(?P$?XO$*OIBOZO8rOdOO`$O@OOIp_H_t2_J_hb_xz_ ~QQ!̀ +P08(x0` T d$XP%&4ABCE F\5atapi-disk`"bhdevice_id Mtypeblockdbdmamac-ioAAPL,addressmoWdel'b4'b3Vcinterrupt-vectorsf uls5pio-timingdriver-istmtej- keywest-`$  iRom&n(aD#` p?Hp L4rx"#(#Dr|#"݈DrD4#SYpXx"=p%aqB!&!F{E%r/aqhJ,x"lq'q@0  (phq vrxZ<# P &'xZ)g s(qpVpdl hXhEUh ?e CUE%E6EDEU^EEEEշEEEWրր,րU7րAրYրkրUtրրրրUրրրրS[p!8PdYŀ0OJ'BF D@@ DbSer6asLibDurationToAbsoluteDelayForHardwareSynchronizeIOInstallI|eFunczsMemDeocatePhysicyContiguousCStrCatAȟژompAndSwapmpGetBEaMoveDaATAManagerFFamBusEventAIMQIODone}`facerNewPtrSysClearL;emoryCOSTrapUnasalProcXTimispo;sePrԠөRoutineDescrip`Un:٘^#ToolA]dG`alt"RmvӢErrNameRegƲ`ryrype?rtyCreFEnS chI}`ؤeIDInit#ǿӶ::SThed{hePluginءatchTabl=QWCpqcwrQ ndrv:XikcKurt; #pdJoy!peffpwpcqa걔jZq $.P=puT{ЗS@6eȣЀ?iBpDMqpFE{fiE"E3EMEcEwEEEEFPB'F@ duNanܠconds~IO mandIs #ܿCopy honDo"㥐'\ 1EF|XO|dOTYPTK,88a8`@@DDHIz]|T}9c1bT-0L,KbHv~x;TK(|}xA$V8+ZHZ~($|K 8(r; xW>-5 N bl {2 @ޖ `@HcnxV{WL| cZ0Irr 6rNrfr $~rr`pqqqa*w0tTѤ&Y1Z4rU+Δht%ЮTbb bxeJI6bص)F<[:RґDJ_Z`8Q8b#]ÜP nW`HAZ&&"&Fa@,&@.T :@:y&v#&Re*pv$&`Hv#9&be M&e@D{|,pb4[TdcK2o|bt,*!Z*"`u f\.I @ck18l7JFfxfw j !&_G^a,/>(;;LO;Ð;: x2qAQP[Ahj CW0 }!V8 c0XL HXzPP?6Af2m&a8eh!KEOLI@PAثB @@@ @.T`/A@@0@ @@ `,GDJ 8@ @AJ  x@ l`u SCbJ 4"0 TN ֙@I&4/ 8dlQi$/He&* 3}&?>4`N?b(U@N$ @dJQ@@D@,Ц1!@)a,#T@h,DV@82 2&L 3%]s<`880"8N|HG: :EaX\d9v89"苐iPܐhi<h ` < ` ` <``6``YT>8ذV8 @<`!8Pv aj`8p`ݧ` j`8Ep`j`Pg -RXPPא} $E2|?x5jP8`8(Q=%o(H)eF HEad> 6]/_H&2aH >6"4w~x;[`HT`?^lB@[s|t8ZPA}@b@T/1 < d> bdc@pM~J !bPpu/8C q|.XjXZ Y#\B]!]Q Z oA*Ձ$v҄RӃP`o΀Ҁ?88c"Ҁ )x&p-Jt>A8`pR BqjE|^,pb[KTcX`9=5Z(₿Θ43(qJtePbtA"st~p򚔡(12^9&v&pJs *e!\|Ҡ|OҨީv'.|}~pHA5=dH'>aP“ْp>~0P*$k B!8H᪤h0s⁀3(8A!za1(^<%,V`sje`@KQ&$fB=REɾ^4 qO:! c ZQb |#AtBm!Z 1j JqBjm1H;%B&%Y^>U~rRa:va(:TW>HiVH JY;|`x`unW㌐ &Q!0)2"E28FA|gZPjZP^p`Y|+xj88 6іm̀l:P6~kЈ=0Mԑ8V=R`N24ZP.4PfA mU$y pZv>f-T) T8mrLbf8Br9b! 87HX2Йj$(U 8n( 2u6IQBV *& -6Yv_ a=R`ZjE#E5x"ZP.lQ#$Dq *:!^`0%ʂ`vɒߘĞS#x&]Q“YLa񈾸. -R>V>N|@|@|68XFBVП88A86#-UaQvϸ^H4mH5jXz M>GIcߠ؟#9^#3m(MPIbj n5E5@5]>az!)YR)j4lm~!01$}@ .)R`U10R@튨!dU04-R~3/D/p$2 Z5bb IŽ7SGÀ'4IrpXZT|xR`Xf4BFDYʞHb Ū m"6!%u432J3.}0hCtu.H2BrpDYt3 t8Db1rHҾ 5mٔr'2D0.12`@P/0P“ݾPTc |`P"_ I6TQ8 "aH[ dT&Y< j?|2U"y25*d52/?ؖ ^#/'pNDp\ 9"4F1^RJTT^_pR, DjB!%TJl*“m",6la!}^H }S!|`pR4zD5`ڕ`RpbPK^p1jA:z``HD2nP[r~hc ּL`c΄Qi` @΄`΁r@N~@*3>&s.`:;\"0``cHg;ϛ^6>Ώ`H.iB“nӒ.}bzꑐ~x r_ ʐ ҐUʐҐz^]2EA\lrhru1G a8 1 !A("-` 92Voس{ffx|#;pzN2xH-ٲH=-hiB=.]T{-|@.ifDj͢|}H-)BPڤ%m-ؙi6E6,bbA,x6,i92nO+ָP&Gy&Zbq‘lfEt}j6¡bhf`j|!D`F\}Gd(Pp?|"e" cOKqz*ﴌ|l+vrD ~0$hmѯT¡6`\(3tm6`@t#rNp`r$K%QAbR)ڟT`P/0TcvLb|SJPT0&,\ d)Ar"wz Y2%!R^4ӿa{l |+x|3x|;=E0_|~x"`(P`TW?{^SW<6z!t&!4XWhR_ƠZ RQ&BnB&~2,\"q,5A`p,5ALp,t,5AD6`h, 5APp,|5AP,@5A@*!b&&&&&&N&b1` ;QQbkJ!iDUGGdb?|c*q2!䞦ҞNp|Np;KSW<.1W`|@|A| #@A~0apy*@zn|T> p|T<|vr2g恻;@0[vSE|8 q5]B 0 W>6H Wc!||?|`P81>I|PFQV{ 0_|6N v]rɻC2Dܫ|+x;PH P3 :0”Kߥ}&, wR%}!AzaH#]);HCIqAfѤ4H(/F;<`8cp(KK RQ(  Z`xxrH'P @ D@(?"C<-BH"2E>@e2@RE`S$JAqTKV@`4JA"(b?t??7\|5Ȱq6rM`g`K-6``u`T<|+xrpu;0"|Œ҇q[b>FS0ePjTYqr_]Vt(_^M$OOqM#)TqT=X_8KjSUr#;TQs` `IF:o?2`}d]d>T:1)X c |#!qnN|\ `e#0O=rOu@Gh|t`Pac|etNp8c*Q|e1dҾad{ pKjS+m::aiS IWP@j0hij8~d8s#%ūb@28otZosrⰐt@}p`vCss`KjSUR8|w >`и nTO@8cx^_B@4Ċ1-*P@9rD9f9F9&h> 80ؑbԑBБ"̑ȲĐbupvh8l99"fnJI6JjҰ1ZnQ6yjҰ| YY0]ҰU YH6-+Ұ )̹ЫҰ ͊Ұt̸Ұș̈mҰi =Ұx9( Ұ 4H8b0>eܱ231zV3n6Xn|6T&8n6F*8n6qf8═n6Q8pLnE18Pn%680nY0#8ံ%? n؈@TΤ-%O';Y0Bb̈| 1A( )sn0A&@ H?!H3{:CeHB$?baTR0V3?Y]2Mi W]4R;P 'r3A)$Qxڐ)Y0ڐ R ڐArPob#n!;AXB@AnB:xA"x &0a0ϱV wћ xj00QڐA̲Rkf r08&0]:Y;^)@ q`ր80D7 :C AQQ%> hQ:C‡8z^@8 5az8KP@ :"lAumHo#0I"fQܚ &-.6@f c6`90uROZ@:# Rj"v AblfYP :CF"wb2&V0A5zje#΢$"%BoazeVPдҡA`Ԁ0jR!H 54Uv=|exe}Tcz`Oa92`ր:@F ?;JBO*IBA^` QVOҠz2@8"|xEj IkfiMB/*J@`܂::Pր;T:P݁<=Сf$` ЩJf>pjT:8p?PҊTmRj} ` ( }?ofjqSY2>p0@"TD:P9QڐTMAbTJe*hiPzp?rƁQ"XB*J,3/2@; a*2@<.2@=.A>.1A?@K"|ctKAa:P2EvR `{P8TH,|"TH,8U!dq2R@ UҀ _`ZKS5҈ heQ.gy~poPpcpb~d~d~d~g0ujp}T`V^tEJ [!*?rDBA^A25Ҁ|#x|#Uf(]OsB֦D@t,@1B4@,CQJR`TSPRP=RP>~Aw%{)j/ F0_JXJ\~V\U(Ђ(~X\d} A\dT:|_c.|iA=!nE4>ប%a nv:dŸnޘU:duAŝQnޘ%:d"!nv:d`VRnn:di0Zn0rBRqn $z^^8ưEМ*º:c,@Ґ Ub>>4Xt0E"AXĿfMrDv21V8!" HVJ:d4vNŞ 2!ĥvfr 8% e"#%1rև * Ն:c_jU(  p_Tc0|od>U6<$60)pzV (J!3Q3&0>x8p0&bdr0&81|xp 1R!{T>v"Ȉ֜$Js T^{|(P"8[`@2!|t,K 1L$!l80>4~5 9!AF"´`0_SPg`  = s5PW Pb0@f0D:@H8ܺP] 4 N Lb5, vm/GYr|P8c08.04Mog`*N R V$R 9 <{!D|x+x|3x|;x}Cx}>KA}* Ex@1!U0:*zg`exxx!r^`:) &&x| +/$o h`ѻ NgPx3xg>g`|#0 ]r aV{Px [3xAc 2R 0XpS3}g`8M!滿0 Rd`n=`9bᯋ%AU?;J>|T\Ty#|B<W:ZqCxRQT٢ 4ZPP fBPP $(x\,]TXP0T߄>T@@ TWjPAv|j -G@6 @䪚D0bpƢcl!yQbF@R<8T9aT>} )Te\}Q9b8:eUwzUf WPAWd P|@f!|`->||Pni^Tjpn`8n e PiAN ~vᒅv/d#!#iWEcsNE^P¢ nM%xܒ@c~9BTf>(`h"_|009<|+x.| AayjcB;bA>@|$#NrǐW 0L0.NLI&l>\VnP$tXIdί .|$FT^hvIx0ֿD$$6I@Npf8~ϒH $`I4<&>ߒV(n,$  ъP@cPP(P$"LP  P<"\YhP"YBpD|fPmL"@hlPPDjP PM4" dPռ" " PP P @ȪP5p**"PPd@f>ˑڎm"jN:% :Y:M<PP Aԙ!X!|"pj@!$:$% @&5,@d:'S(Q($U*,0/!Y09Z:2E$:3ep"3I@4 5>P?xA$AAEB!U0JTBCeZIC!D&DE]EH0FAT"G#HIhC$."'LT\dlt| $,4<D@d(p08Tp0"?>d=<<=H<(@H":`$mtej$fdc!!@'.Sony=*ndrvblok_@[x? EP2 H' X$2#04-2&0/0H<:̿::E1;T;;;.;$AAPL,address*driver-istkqct50" 00`!XPCFloppyKurtmtJoy!peffpwpaC)%0"P580 =]08C%= "eU@Q,nAUJE@8Q|eA~Rpuaa Q P (|4T~T>ifPg8ʑCa"qND V@Px,8`䶐C`V@=8@KyB@RT<,Q2|܀a8T>H=i"qQBA}pѮT~O\dMѕ"qrYeˇnA>@ʑ;XB^H@ QH}JH@o@?ېP"q9 lM !8 P2$FtZ~_`s@bA|#E@zyzM}&U;}(@@ 8X`5ZcY"xڠ'ClـE|~x(PB-Y@~=n x,~؁ !:r :Čq Yv`e}BR@@(sMRU;`"E9 c,p>@eA8~| h}CxEyiRbDaf@KUI@.98ŊfR9|dcxdTe%6|2}0.|ܰpnAto@Q`侂/"9iীB|hxJ`Tk 6|P.qf@(89@4+{ @@po@A@(|/ |Q.r`8@4f&@L .Os@P=i ,*P2qU>U 6`|f.|f`fTdz?x;qQ; ;o@@|QA0|.W@RHt^x&& ~.;TpA`frTc~B|6nTd T8|'e2rPq.Q]PQ('Sq0|ixU|)D,}#KxSr&a(cК@G)QP9RbTeг@T8}8:| QAq9V|#ea+cAߚ( s`RR9BnYa||P.}lR0s|$||HT0T8Rh>xB`WP,gAKPHsT>JaTf<|2?',i@U#icvc"c4$i_%Ѓ䦿}0>|}4pp>PqTe<}Cx|T`T|.|kb})v;Ϡ`a6GUK XT 6A.}Bz`#VO~R3Р@XTf> iP `QH0A@:.|~%mQQaOc Ϡ](@Ia,rBOTazFb@0Q|#x; Rj:怰)`a&Q;4VȎjWPrl2vxrfAX@jD}DSbKUR$>";RlibhoP|jR1U@?<}CS eU0@KzYP|pLZut䡳qF/9kxưBU?vѾ;n}CxW>|;MT3>:AW>.gxDx H(W(U'.Ʊ*9c=g2u|@`ǟ.ak_sx'up "Hh^PބT^!1z|ɸ 698`1|{.9?Xv @$ZFoqd>4#ƱZ1c, X7*2g0U$p50.Bc`r0oKCCC>ځnpRrb`&vGYtZ C;=jwWp?/  `L+HAT "Je!80&pr(#qT(4Th80|2}'BU,>)}{&rWpp 4p#|(i@ЅZp"-۠b'0Fe"ApІjm cb`b0~ĭjcbrd@@( # `$P%P @hpabrc>UyG~} 6!>$`t!%-`rbC=:|8x|3x|+x8895}D@.}GA.@6pa89:k@@iUbSTQLR `8|l`8ac9!9! `9"|#x*}xF!B|!y(JPق8!9fʰPdX Ha!"z_a8x:|P+xP|3x;Dbf¡BF}bHzEah!9h: J 0P>Y:/L P"V.h l&v//a""a"0Y//b//?f!6h!` `Vn!^ J>gH_#:?L?b L"a# ’0?P_NKKق(;䪶?cB`NAB@ApD@"EK(uF@P}?~s,u@2> ]0?pV_2@uH|]xp,R I:f@ ځАpVY:PaprQ_AvV@yOBd,T>@?ePe2O8QJO dSWp(tJA9@n@@@s@>@?_@~@ 4u, R_(, > fb;@ H\qWixn _T>@@(`A"FHQW]J@fqR[PR@r0e`*_|pKP?9EQ(@bAp,QHRARR6F@BQFBpNFXBQ֊S jN|BRAfxjF@C`U@?@>`^@@~ D@F2HbU,@Fkv0B_]^<\ o@iC&QU>RXBjwv|B|bR`t@@sqAT>H0R\x->@WT>T>T>H$4%"0(ۡs^j| : zN`탷UlPl@t`x`H#q4.@"M_q"T>?0}&>p|+x"aJ`@$(,` 6ACxU>, aU#߿J^p01&&a em^v2*@YR-+v4rve4SYUz6{Y]>z@}%Kx̾RӒ"A(b$U'@.WN}:n~|2 YA:& :^K~:V;Kur^q@3mX |ePeӐ~aڅa` ?~j ]8N,6@њP@0OT&08^ Y4]YA U%pJ TnN L⡒@"`1`ad~ÔpFTct@T>wjTݩvajl~B Z 68P[pBx6`8H&Rv8(𨅲J`(&$", ʛ8قBˈ4`$6D(>b籆#x0+HQfqF`P3rJ䴀"Pep+@+H%YF">&U F SVk|+x>ґB8p!b(fBCV롂 LP߉Ͱ$%:L]R2nF,R= =//lOY:/ ɲ^/p-"r,Қ/dQ //FE/̱P/ ?? uBR?d?RN)R? J䄊/29^OH? O0O>OPObOtNelOOLF * A?UN_0_fͰ!̱N}b_t__ _O_KiO1O> \Mmroo&c5J_̱M2ooί࣎|;x|3x|+qٵ A\#,`BA8BlBḆ8i fgP ZеʺPf Zбv*`v!H="8yfDip{࣋Аl ꁀ $(Of~fΏu&|8c8pceKs}lQKUQ&Ə ,ρ !iؒ-¯V@DH! Y"2obJjr8(ZLHJx$v\h41Rﶏֱ"^x;bI¯ԯHk 1h8Ix]$((Nr ^ѓ,"(P\ҡ~oI18֔I ڐ { 0,!ʙ.& ! ГQ u8ڲ uc_x|c4-xK9+M )(ؐ'MßpfM*pTi:|(.(|.΂.r|eE3wߦA&h#x"q>;@ܓ~#s89 L9)(A\|i@.s|iW:x0)zD.REU\.^N|!.eS+F|}xW:}?.;6qb<0{kHCٖx0~z#D Q.Ζ\HFņZ5|.|o!.`!`>L7 Qx9;jr@|W:ࠪ;`H;@ ; |CMQ|.8a8a>A_@H2dT!CH9!9Ҷ6aT ᾦHB.Y%7..Ўq^ŵࠞ."Ț;;?pϓnX;5tڿ `=B ȀЅ,%S0.fd&;7`F CUV(@&@#D"D9~>Tc,#0eBZT>6T>T>Bn |tФ+x|Ŗ$;C&k>,P.( u'ĠT>*pU>\0>}y[x}XSx2A@A6C?r}.Cx,dxN2AxKBqb`0?0/) /'5<&1B- ??h;/(/AOlz>A}4})@J4"1`.r-6V0@^M}Cx}(Kx}Il0ʤ1AvIf,&8.|4|4։P^E8H@F[ ^r#>]ؖK7Tg,'@Z|4BO&1V!>PbvOOIOJ OM@O]FUU)d0OM0oM?6o׾AȎpP}_Sx}>Kx}CWx| P Pߙ4Txи.Il|dx:$paH:AHK=#x]PA`r___"T[A>!L[=m]ƁM/,N^f^8ct,aJ 9Sh/f|+x@ݚeH.(hh|N|:Bю|eI.49J| 0@9n(V~8^~<>şH;Q>8K  }&>5F1&|#)AL,~D0WfW>~W>K,8xFq%x~:W/z>Ao!"8<|(8,@@!6@4Jᰏ2ᾕ2ƒ{|[ -9i935} >A|#x,lg(!1&"D"HHx 7A8!h`0/ 8* K_|# ?@8TL0LTd0&KxF$f= naKV*DШ>D$TL0HPN0PKR߬|#xT>WT @{MxR;gņ5§W_W ?(|2Wj`&88}gRn}lcxc?x N0T080*Kݤ,~(b,/x:+Х0Tc1&2᪡26Rp&4`Á_ naѪIP왲s45b%4 `Ps"Qϐ8c0x0'䁐ٮ5 Vs3:T >t.(PW$08(^Z@U?~ƒqZ ,x喜0ul F 9U>Aff5vPLH{2]BSux0XƑNHN^AL^6?PH,XL?KiR<*2v1p 60#4 q,f1BT|#5!;;vJ;l_T˜6124/$Z ^f7j0z|1IZ`/8T&HJ ?K둾$.8r0T2&➯(v0hz0~=q~d .r0Eb 8*:Ph^JP\Lu &$2>||Q!qF htWR/AUl(H=!~aNT_"!)j,b50DŽ%j46 @0]Rx@rƗ Zqe(4HHGyE䦣0J“0,qb1VQ0AH.>օ"cB5Frȍ5&Z"!K)ðbD""8K{2!8&TiKL.2~0[~a8 "T>ɞO8F!1Ȧ8̐(@;ʐ-6KWYHҰ D|V@"p<;`DF ARð0.`2`M H(j8NE4$q(pq.P("p!.Ur`w\m"p@D<|H@6|i|c8cZ}#Kx|r IꈰV@d,U2$pJ§,N0H8H-=FaArF\r b"{oB+ƀAO ؁$Da{>9:޾!|#xN;캐([p|@AA/L%+NxPTFaƑp1F-Z!2Jp-1>p&l @x*w)!|,g`}n(@n@$;OKJ%K“8P^(bY&=(V@a`=8"`@H*1.a1bʡ6eKIub%jʠfdip5~p{ʚiXCp d`H;@`H"`P;XH(J`PӐ`]EJŸ0`X{08;` 8pmJs`j1"p pq.ր;0FQH)q-Nu^5j1|e1lސ-qHrސ톯ސ}JbpH@Ern,TfA(>qF >qސU2q MD!HI'aBp Va$ Qna`U(q*Mvub0\LB^Ds~'T4a`Ń*FQFs'eƧMNx$d"*ȅ@bq/@s&%|isKDZa^X0fp,b.?@8R!R УQU.QZ"#!RBUTmT-2^TDt`df}R-`XrѪ!^H%Ij>`iP! Z!n ?`7`~_π ңRP.۷]>tRַK)ZfH`Ip &5Š,BPM%]Rf_oNHN#&q2vCpH'$uƯئ:2 ϸvps$"b5D|3x: p_ؠO+x("Q"Tdj1 !K*b$|N!j( 0H"" 1K2Zj* [An߰Va`!@OPbt߰K{aKRT!~qQATc>T>TB.|c+IBTTdF>Te.TgB|Xi|;x}K~RPVQE9P‘U] Fa>ƒT`(ƅ<T|+x,|#e>afxKmaփEF Qp]R`1 ~#^\|cx9 9@B9|< @辬PEfl1#5`2}(T8 3="dPbQ|#xN&20T >18 k0*4KB2A(AG Pz"}bR?%*e]>\RP>RP}^IԲA$8UZ. 2@=NX.DN>adOHᒲp$^R2@BRTp.D*T>QKѪNX@.DQ`4.DE`(8 ;HA~.DA?P/QjdQR15c'|cS" P1Q AQYޠ.H99nj1f ~wxEeC`F䀾x@xް@2@NA`D-Ve|ja@y||x۠A*PT2|0=(d-rd5NBh!FQZt T2VlyDV``K`V8?^WA* $*ЁB܀ |@ ql~AŚb5qA| (yru<J-Q j (|*2@B~?2d?$L^W .DhFٮqs)}`k92@ ?,v8װ| @W`R@€0F0€|8=%w@*q@<@q:_.XtabxN;KYpz, 4 },R (<|A}Cu #*P ȂpJe ApP@P/PO PPBj΁H>pT>T>TA_ |p`<,!a\`?:"|@H4 $E ,_(<?eH)"Z ALr ` p7Г_pƠ>,?*;4 (ˈP@B=ΐ᣸ V(`#xϋs9 2pQ8ԚQƔ(PTQA)8]ˆ8C^€| U=> xנ*Mᩱ*`^r ʮAנ, 4!Win0?( Mѹ$*L_^WZxF)F6@4A_!*"xb%B/bᐡ.e)1ρ!8iEЅ":6ᚣK0")8\-T^3*R`#e숷t*LB`"mA B`f V1R1;R;L^Hbn1"1@4O_$quCdn X`kEtCN2{8n6>A A8ANaPb@ RҀDfF.QP I]F_ GZaB5@(Uv07 lA:pj|| P(}%r^!P$j! 0:B-!iVvXN$4$bD(p^R#x0H-T-XzCN,@q`4(A.QD*!n!sFP8zC~/0 @T>P0Q $"QA" N>aН>U>(`6"y'tq,p62KG9"v7ӃxAva6P80N_F`DDj pD Հ80|)q&Ap16!@ܺP48>|@`80@T>QJ|TTuҁ8Ӂp`QqRPSTQ,x|&eBK z$;Ilp 8@~pz(PDZfqH :sibfеjqpl]~ϔ/jw!2:9~xx/0"4?;Ц3 i8N3^2'0=Hd MB:CnI:!G@+ t-@@\FNZ yӀK]2q:񞠜8`5|}6A T(?FriҚFb$DӀFR*(N4~  @2ɁUjp2tEɮ(tiv):`Ff^P_5ٞRHз|(}`;0.;`H  `Ơ2р0OgiRנU b0Xzگ,dO#q&(+S'%~Jd~ހyH8:f!r|ؒހ!nі np31X"p ^uLW:D)$~sހn12r΁VE"і2ҟ4<0`K2o ǡ*x2RKi6,pE$"Ѷ@V78a8e@2!(m灮(rRQ#&!4Tg PIPEG΀TC\jr7 " 屍 Mj?-V6,AAKMFA>qrvQB5\8ĩEү䠽H2b"q*<f'*ÎO2-6Eu:mLJee2&0(zbᎲ8 ,P`N6΀!Qn ;`Àr$ƀR<_ҘQ^0Ad̷ ǂyJ`8]`>JRl~ڃ?N)` >IPz2NB1H>̝ϸ53 6-*׌!(1Zޏ/0"!(P*URː@ܺ:5n6m~x16+cҋ֥V|fFp@ρ!僉 R*(a<{K[I;bp:Eѵ*@@W<;,@%zVP;@K| A/,FpA&`_| @tڐ@PA@Pj  $~2 (> ᮨ0;`@B!⡰ G J%VAFP X! ȐL N O9Ȫ/"`/%!l/"|/"x ?"p"?! :?"hR?"/#(@?"i?#9?#t?"?"?"$O"*OL2BOL2!ZO"AO#O"!O"YO#O"$OK3_"_"\2_!J_"a_#z_"P_"@_"O[S?#_"d o Q"a!!!KBpP@0(PX@048<  HHP`X @ <(0 8 @H X   0  0o"c໨!c(h!A 4P p \ ppdl3p;pp;p %Op& p&6p')*,X-.p#0<e51`23566P6778X8949n<䴀E(FFFKL|NdUPlQTXY\<\]]4]P]p_a ehdlmnhorstwwwxy{t|&|lpHJa  'USL =- failed to initialise hub queue:Error setting address:&:Xs@orceqy ti}mGoutvy iˀ c#Y#:Delete unddLterface:New device:":InvRd ref passG:.؈ busy wheqn v: A==*7no ?longerFY$؋v Ze power:(:em- Bad'ram block versioneޕsmallԟbcompSon funcF4flags՞Wh_at??9IIdispoUnot耆  Dri@Jb¯ԯ .@ %:sendv͒expert):low speGƔlxJ10msaUSBBulkRe:Remov69rE, FD<-:openvrupt pipe with!:control EDPeB-SransaNTh޾seemo =bVarml~doÀ@statusoMissRgnGPBCpaKck1ݓ*2<:63T!RlCv[?RuYG s_criptX9u1HYnamunu+caUi}nWhandlȰ0בcouldlatׇcleagn QatlkiQ ment~tynity gonuegatCifi$G\fUmry[Ua ij$jHjljk k@kdl(d,gfuf,>known⑘ParU~cacheXja1,urD濹3FN_extAsi%dDZ9kWNenough̓. Avabl~ned:{+ttem{ЀJUHbrcurrvslF*Ref,ŕGeDޓ2sg/y&Q˂/Ja!Q/>QQ`k>BBWB/"  % 1 @ N Z o } ֪ > V00/V0>V0IV0a"JaJBSFSD@S sLibDToAbsoluteCancelTrPBDe\First0Q]Cre%5INPogolA!idv4ჶ7SysDebugSt1E n\La0[5:llSedaryyH2Dec+UfByID8PL ToBu$Q51QVX#fUMakeBMR1stTypQDC)ExSPB\VF@ll6VInll]@\1S of_T忡R|~x)8H"H[M`޸HrY]> 9 , ~^4~8D|*.8{+.4|(.|).@8 H;\K{nnn)_42P6幻A;;Ob?x;5"# (#0$|ſxH"@AbԓC8}ē>Z9@-c89 9B |cT:88}08U<|4}(}JH|cc}K|w+xJ, k|k4(9va8|8|4A88d>P;]|{x;};8;A@;!H"}x!"9m[lP}yw й,{b߀a@8?P8@:`8H;"zx, & 8C#8;|ztp,׃'f@pZa"#WVM([ 8 0 P:n9@J|n n"}`K`]!();;-@V) m9# @p( OT||@!<Єt, ^|8|^ V9);B|8> "]N"=Ɇk|ex|⢉$4q" }o#0# !#:1cxoDA2;` "ن}l8 96>p6F8><"8"Z84<6.Fn26"Th>I|3x|+x|PM99 }CH9KHIR@}CJ.}H_K.5)e@Hi@ II|! $8K!""!5;@6~8:<8_T@ϐLbq@#d[~H#3YOR(@Z &.1S:>0<6R@蠗@fT A *Lz$;.UAP"B!`D,r6 .10!?(~\({T8N 8NPe`P0c58l<7VV8`dn8;23@*<. #.RzL10TQ6.=AH8Nu^02 Jp}RzAZtp ;cݤR,]M~,z ~1HRiN|t:RQ5HQ;_X;<^";TNtBz,fu8a p<3R@]qXs"~LQ||3x`m6K |@~xjC|}Hq2}=KxyR@^ |;@A?@HqQЎ@]_ Hr;? ^D;怅㏁`AZq<68Ɣ|K""cx.`|a|󖢃xJRi9䫐;10@ 4@0.|1I^K!"P"aĠK-RbqF]R}5~$Rn?|#YZqKٔlQ58`b_ af6&yCϲL].rcT*)"$@%XR@Й xQSVظPPS~_@}#K%yWToLQ8e0z`8`ް"~0jRa A].Nd _d8] ԁ &@؋IEAַ""a6bSUÄ2Nd=0}&AJ@@쑿!A͑T>|4@8@#x::::@:bcP|rx(08` ځ~pH-gjЙγA#π.b/##M&@JPD0H8H9?p9AtR@-\=Q.H!}tdlinRQʢйv'~ɁYkY#W/*dԀt~x, 9tA<~1x8|RW`$x=!ဦZfTЈs" فĀg$(;0Aaj,*\>(x8cP@101X-T)1@5^'Fx!cPHް2X ]q(@R ;{,p ,' @,2|&6+i.8ߴ9Q۰;;@@}RB,oKv~"ޣ^"@0HʾA^!AA@gTGPPQG@9MQRCV.p\kTƴø;щˌ`ϒB\F-yrlD@IH@8K.jPnRĸxQz(:j y!8 n@}F@ 8|+x}GAn@}FB.|ۜ#}`C.Z5`@.~`ɒb,Kخ98LٮK.L_.7{``ɒ>r,u80p~$nq.`=%.9 Ն91/\H-}CiL sH),gxXHDq$a Tl<, |*2 d9 K{V ( 6ؽB[<26ؑ$*UlOQ$܀ <`!*2ֱ}B!(rwf" !;촞Ix& yrwURz}RZ4ڳzE"cuJ8|T|>`, Aa8C4tW:|t_|;0. /~cQuBBSurEK"IT4|;:a=2Hx͢r6cxi"s|Btr|ux+80BAR;!|e4~rO@}z4 Yx8\ Ox(O`\2!~8b)0y:CyPwMI:#yPX+u rdD@w3Q~ah|#x;h@Op@}@ppw Ba¡ 6cs)"oZ3⡐q +`Q¡F,a)q%"w!ԓnZ~^eH>r}gP2F}hQr}gR.||`hS.!5J`gP.2`x6 Ȯ;A`ɮ6 ..79` y`bdJb {z,px s@u.DD.q>K1fC`FrG?`!@MsqҶsu!r{qMt(|gP es?~s@ 3_0BpBV Bfxlr r֏(0BT`P`}GH%b: 0`HI`}GJ.|ݸ@`HK.f5)NGH.ՕT0~K8~L鮪0~K.~L.7QUb"Xޑ}x:8}}z.}r9R㠑wDM"2CpKYm|t$!kBQVjf9pUx䈠猫V Ѧ@b61=K%.c¥ͤ\֢ݧˠ"DZ ]Q&F>B-OWTX\`:zh4"8x"?.ݎD}֐!򂾬U/8j}l]mڳmVx֐aϢ ͢NJ&o泥JĴS␡rr˛ilɶ\e•In=´lׅ ‰ T(6bE" ш{Ѳ!@~ϸ"*,.h>BJQ;]¨^j9nhkjРkB"Z0c`3n",4FfbtwP`R|(NR|)R|*.|+.4()b88;#}\>16B|p+٠/ 8PAԷ|{- p4PF8+#0H }# |8 NQ;bB6T@00t8T@~|0@8c|7iaA !9)} hLP _B$ \J!±K9}ξE P hBs P8!tUPdU_ h;Cp,I0D@wJ!^mfƒ6pᾑR܅?2d<r"fz|f!ZJ#Ӎiz҃s6~ r:}viJ#ҽ P8qHCe%R:%S#2hFX-f-(7D~5DIrв2 Q$jeN1 ;f1f!n$Z'L:H_P` 8c 0`Tc>O(pp°,>;Hab!~Գp\FQ8c,eR/:(~{[A|T;HVC|UPaT|BqOpか@À1k%|!vUZal(9:A{B09Bp|T>.|pwT>?xpk3_z@8( J_ &+@<0,Mp@`9AWjMgW<``cWNg<Wf>8 >W>@(at@ۈP0a\@_!| (L@|b"tjQ Zơ@;Kwɥβ`H@=DH<Hv8@9 9Pl #x?: wcw10 :g_:H:S:vr:`:@ H`B0?124 """H[QJP9{N&4>]UQhj&ȥ"cȀo,$l;'`Z%b!?$T:=HZ-4jM~q2xl1^1⎵ࠃNmzf_$".qTlɴj&͆;䭪ߴ䪢pp̣A_Y _4?|@^\1Yu6]RF0V ͮV[8Zb"m;XF-ҷm]3x/O 0 Fzu^6W48Ĝ@D 2Ј5^T6i<汦yfzC^͆JPVEKrc9B}8|5}LSx (80`p|cklN9Г'p}CSx2T?>V"18`|+咩i戀=Hn4<EQx07|Vam/rR[- zmF^tjr2ΐ284xJ>xVu&p}$|[xP=$ |Zf tn@8zJ砐ax|+xT>:I|UMATb!6xK"gA ;L&P@d!< P `jQGLiT`@`@!x [Iӟ6A3} [ᚅNT `z| P%@(l ^䵨JZAWKED汆!^ >ja1A䰯HJ@!r!V4Izb[W0ge-@Sfˀu0 8tn!8?```a8#f `bIRz1^@8~U 6|  KS텢ZbV]&T>RZlNKa6fP>ǿ )K7=0ʏ$pp5 wA;;02p*KP^J6.`A!:SPřoƈ_0P W K&H&H1%İߢ&&VvVz 8x6w`"927>?;%J1";JAN1;~s;@}F@|(|)F@|*.|+.4()c;88q!~q8%ț0@LM68K"]0 MAPrC͸҈wK@ H'^@|0 }68 (^;;A8!pICErbbPKg| %D>T0g"`k$ЀkQ` `lTc?:|c"z"5UjPHr8|94p#`P|~ P88iL5f|"8esP?!b v!@k646b*N1z0y2HGvGuF,'8ƐKbWWo t~s(qaN0N0(k3ݲ5l{4|vnK"yMy >a@i*-z0Fo8I2{\wx~xA-ijR0t8lְmရ=Q#xdz01JI "$z0%v`-#65,XcHF.HzgH 3R/EePz0j(T"$Ț |etT>jPX~LAKeU~`$H)Fٲ*(S# .DJT@̰K@@_UF@n|&F;V &B>jb3FL3&1B:1b|xB4;$LAF]2wtDD!F$"UP@b.~A܈\`71An͠"HJn p`t4҂\fY|ЁpbaKTfdЍp0XRVd9L߰;а)pF0 Ю.I.*rFҦpO0Kv(y0H"pUj nXVp,J#5J#4t.Ro!Ġ0J!Z9|;xBJC19.K JC4mxFANH=YRf!|f 9Ġ̰K 9!8}C*y0AW!:@8Z0KDb5>#A&!j4hRP2#Ⴀ?HBEb0iB&!1xn`V>Hz$'`J4yPCV4]b41n8-z:020P4qz$LgB-!@QS N`Kazz$ 5HC%,%DqD &DbHA(J%@'D)L&/>#E1J#E%Z!J#2AN&0'H: |d00_3x|;11H!X "J#?Q6-$~2B?2#8@R<@;7%4&4UPiz$?1e 2#b3?j;+?<%4&Da)BڢFY"Cf:'8:'h30@dUDɾ;>5@RJ4 Q2`6d1:2H6m^.L~>p`R"0 QW0( xW0GH Q>#0)BR~$5d2#ZN(>#7:'Av>#=)5HbUrPEdeA0J5c tB9v .dg5E = 2"w=.0FrNrHEZ{.2nr62#˫u{6>#@wH)qNep ê^c;"|Ҁ*r G8p#hÊ28ׂ#d"a9B~ȡd~zјz‚#f.| `~c 9 vѾUOpXѶ X8uPM4Tl>,G `šX вƩѿr!:`;S;@^0;c7bՐ?"5i4Ib(<0-:O@"A:D;ᶲ`bd~4|yp6q~#x7r}@(* > `xFӍ`s.A1Aar 8WLD}9(.v088pb>"д~`Q(Q, x 8Fx!*D|@.~óx8:|xV|>@v~x@@78a8fp@aj8uW80|e2P!7"q6\uu5BDj9C2`dq&T~x:RF|@A(`Hګb/e!6':} B,U}80] |Rp/rH?.R?d1.En:|=.E2%T$邪2s?2H*Z=60T>U>8pзT r@E bhya&a!Avbj8adnparAt{xΑ| ΀Ѽ"@>p8BvVTA0{. 8 3x??_H% 2n^"83#s&H$bxSKe1HS.$5Bv_Nq(Пr 92QTd8|90T:|2'r@b̞}cxNqbJ@ |i9Bѕl$BNuaS}`Ж#xU=UйGx>rq :ja|shPkx~Ƴx'xHxixz=!~WW0gA#1.>pBv VaV|+xT||pېa{!$!"?pL< @r$`8p U},Kx>E Нncۡ *h>z0偋P⁌(( 〬CAO`8';B4xڑ*"|tp 5 B s 0=86A~P|fp[PQKv$^ gP^Fv@rPFbC'qRGX0.ZPy2KI:X~dX .&?S}YKT "8!8(88aib(8 (v@BP8 PrC#p?0KpDpx;;uAbtr2bU"ro,BUPuSEJ 8/"a$oeSv؀ߠTb H<,^'# |3FAeRt Zti4el*.Gqa lސgb S2Uj\ 3]2"zqJzƯ}ꀔyBXz(!R(z&ŞebdG'8¯4x:B$`HP=(|+x3,a5(NÐ}$w3AeFA"a*T9)}?H0|e 8rW>|*p"z2и}Cx:;a;9A8=05k~X.}YiҰRrIbcHjD81a00@HABjZR`bh:Xئ`Zzhb՚e)!lb[l0RL|`=ci"?l(4o0)vK%!jն mᢦjнvqu"HjBBc j`~7uA$52ndYuȓK[pl^բp 20iBntнe~rOr!RZҨ,*JNVMbt ɝ>Ar)RT"JN Vbxqda.tztI("4Z ^/p"!YZ /p"_jHZ /p"w bZ /p" 9%tZ ?p" iKDZ N?p" 8C@KU\NZh+A805DH.}FIIZbƱ)Z_^ -e՚cEj1Ekj pdjHJq>p\p҅#Qp:@UnI)L_p:@IZFUIh`F*M xftNtn$HLzNP>OܠA d]hI"&o ni3`&2BNhɒnol =c3?Ͷ>0N"p:[%p)(oWip;m4)䰧H,l(b0cQ$8i|0H $RbhsЁ0>*K1( c x 1rʱb@㣰kp|,<rppqupKdi*:@UJkw%*84S8Z<1;pp-`Pq°6:rP yuVbZđ (Ċʟ$ LJ6\Tco>H r|0@˰7A0jS"DZej n]"%,V f2qb }bY>9b,@Nb V[ B"4r!> Da" )2*! yʯ20 L ɟ32 !22e0 t$12 -`r2v"⮅Yɂs,OKI2€b_w߉y"Qlߴ߮nu8#@\G2"@2"p B2mP"I1 BXh6r 4,; y"p)"pG 1 (TLރ|3gj2 )2H"m )Tr~~@1"vL/ r R~ QڅKU4c1Tc>T>RT>VA0z~h>zPpz~\z~`p >p B@F@ptYt1P K,D]U!U)19>N1"6p(C@L` 83pi9Б }pH20@5̀\Srᐳr;0 A“ߌ|(0q5}&ʵ+x);cT>?_q(+pP@PC乵F@AE @",fxvp>pKqV%O@q^Ձ/ f} 60 wpB"AF@,ZXb@}Tcvɐ 0 1`c#1BE 3<4x(3`O1 >Kyaцn!b;Aɚ@@9r1AG F@T>!F"!P"4 <ғ |5r#0rKp=%1@K{AK"W@ 0"010"R8 %0A3oq"p` 0L2L"@D|{Ipю xcx;HAbLV!|Z1 " 41M RA @L ʨAOA$OB_R&_BI>_RV_R0n_BȆ_R_Rd$_B_B_R$_SHoRT.oR$_C^oRvoR oRoBoSIoBoR RhR6Ruo"@9fRx~R!LRU_SB R\B=_SI&R(>RVRnrDr`rtrS@BS_S8.rFr ^xr] CoC _SBI֟rrlHrS$6rNrfr~rxrprOSޯr4růSP&B>BCMHSSr,r|οBmCCC}CFr}SvrXPlsssO!ki2le system not av"p8: Did2"e Im!cq1N ***<01;Vp8ToGlobalL"t9h!Ptr > PWtQ5\f!f1''  D?escripmOF6Un!4'OB' stC_?|8name O ^{! p8/_OJp_)Pymbol_.\'s 'p4@c' ry is nil _fvn%!HWo+o=o`k%\ono؀oOo\ane- next bestNooodPoo L&BP>5d `#a: Acpointz tOrack}uXady@!~1)5]BC@;D'2getrag1$+x.~( Cxćrv>ue: Q2F#Cٝaՙ?3UnknowntredTgerm`c cаYӝa)sl^0V*[2bp)ՙsuc sfy47|(5cOۣ7qCW?eb HooՙBDPF8ՙ"rOOOOC_OOO IDɰgr[P#?#regY`c1_O oo/oAg"Qoci_/Q";3#IdleTask-( M'Õ0 _0j0v000 Y0 00i0 0b0b0b0,b0%0Cb0Kb0\b0 Uqb0b0b0b0U0b0b0 U0!060V0c0yJSBCFD8A'ersClCopyBmkZeroPoolAlmResid Absolut?eDeltapg3atUpTi1Len2DelPnPlTo13M`DStdUC1sfrRzAl@@LeQr1LDCureM`ryGFodDaoPesHighV7R`d1UvYqyCuU1E?a"\5RID@]2AZSearc|BZ#pP_`@e>_C@]Init^^_#p:_VoDT@boxTrapAddaA@FReceTextNewPtrSysCrAHv@leHUZ{ckgNMRa9@gUnZsalv @F[otach @BpTickP TempUROMMapBIT`Af`Rou"@}>CtInfoAfresgQdnew@#7f @bpAFol@adbU`temZon9@aԋtv{etrFSpO<erPB0@kqSyncCure`Toa8ucsHLaManBQer}b^9Ab|PipeByedd^quekstlTo5ӎDostsWo_keB`ǂ`dd@cՌQPI`TCas] @RgGlobINIT_}BdCheck4@ERM|A`@tRmQBuf}QS }V Jk~ \!Q` ʚ<Ԛ=p2W6< Joy!peffpwpc^am!  d`1> p*> 3|!FTߥ>TdKTT>}+SxTUkH,|x:}`cxVB9Ơ88a89XO!yA,@:8!`}W|S_N 88!ұNVa:8PB|+xo9XLם#x|~x,$xxPHɪ(@;_x°ƵY}"4EB ZJpZV^Bk8 O! °PƵfRB8fKàlHžE J\q$ `1h ` T>^hUҞJQ ݨ (` 8JO"щFXn8Chzѷ2B|ӰL| (  !`!P_4XxX߸ d`"3~!fe!Gl#4JBF 8?]KnetN`KmٓZwKfD DvIDSsٟ0҃&(24}2PPntF&.  P͔=0ynmn 7R. <8"B2"C. PB. 8B. 0<XRBj6"C. @B(ɠan T"X _à&ίZ % LoI4Z, mTF긠F^8j^<~D^@8D;HWx0 *~H < i$U~L @ Q""ޱDHLB80| @ | @A׀ 2 Ȱx9) | @B/ ?9nbɾVp;H`|#xi|}x,;!T;@2; ;~}_: mOW:FХV"A z!DaH0LTذa\`d0`F0A2S}8 ch r B$D_A OD@kЀ,c4@!Ƶ0ұ(8 ޵܀&,( TB@(1(@|k@Q1@K91|2B )+~@@(K!f;xz6rŃb;0:@TWѾW~|~~ֿ;;VLP5vAU٦vA|x8c|VP o:B:oo|dL89||@x||ux@!o,0x}8n@|/8P1@,!|;x|hx 9 *0 60x|(U$(4}$:|8wDQadPc|AnzQ,'@0PW/ܰXZU$P0P(P0*00bxU$: a} Uo 6}(`:eE"`&d 0b6gUAaFfPb4PWx/ܰXln@~d@*051M d02bg"`Q&d 0b6gAb~óʺPf}&V:ҙ#x!0԰К10;@ 11HT|`IHW2R0('@;t!4E#xrpua_@` pup3Ԛqp%|LwQƒ"A|$v7: Qu-`"P@p(Q@T_L9:1ID TV@ @.@|6aP|@J,CK|c;?-"AV@!^MB'@C!9 v@Pi6p^p} ~*<1@q!!t Pځޱ88ޱzn~S0 !p P" E1R2~T X\9`^l逿;x*^DN@XR\T`#@!X?(d_@0jh{ư`ϐ lԱH`8l8(M@Ҍ8ޟ|\8`@Oas~@{Q0f}(~@Oe}C蠟v:X;H`|tq$; x;À*Q]vQ|yx̫(QA߆#P  J{|l.;LP{?/;ZB`1p rÀ0p|}#8P |(@ }A}J |;x}?Kx=.U 6|0d~;HNy >|. vXNafԙBO=Q8`bz1;M!K$5pE|(|XM]~/(}XҭFel!YF(K65F V" f 8n߀Φl0A(0(A!.SQڥ|{Q0z$HLy+zH@{ 0{XLBxbo_Gav% f<;Ē1|qHKrpA򁝤pLzB`W€(0( 0$@fɂʔm7EI v$!BqHJ3ߠ@L>B,U,SC,U%I D͑@rrzԆtp;”À3r2J C͔CI";-kqK"gq>"pKglXIy8lT8`ܛ|dQ%Aq8ÐK}!td ԀV@4 Ir"A3r Jq00@@'$@l C@H&8d T.ސB29M @P9pT9ap  0@!A?`ad phv GbppR龲Ñl@`!HE6$ K <`rA!"}PʐR@Chb Af,TK" K)$ﳬ8`.#x=īd߀iX??;pqڠX;`֠d쬠 G.bA E1"PIGYC'bA FE_<"@@ @$@(@,@0AAv10 N@4 |U4@8@)@B)'K24 F4b 607T>T|>UK80}CxT>}=KxT>[xTX(T8P |cxU,h$|[xWx |c]f%c!E,[`< 5fНEqT"@2"@F-\9X)] JXD2"& 4q0>'T> T>T>||  ,ߠҁ1v`aҲq0 _;Ϡ|4H`80|c4'$|w4`IPX(|H@|?3xCxFD aTc|@0$Vxa~$| %t L'o=|`=x~80` |z48|+xxv`p@-q4tT`~|-qLY'q谉qDs@82dx ꡒr8dOF‘D辁`b}_`K4}<4TX` 8|+x|#x|vx}46,}Cx~óx~xx&xx }7bHp,XnA |lC1ّ,䵺 = 2= :rP(|`fWW%o|lKAFA9J, ](0Ó ?0fPv@HlFX.<`\dhH@R* AiFIl|co8caAQ^D * D@}"Nrݬ DW>![u@ubn?fm|+xBaVtJaT?Va`ła"p3xyI7 c5ooFRa(,8_N5ÁfkΡFQЀ+xʡV+STvV8<҅0@0Rww0wH|:k:H?T`~W}| |BD(k~[ M +PA<@ 8;|p A>H|| 9OQ,g}8}(A9)7A( 07\b28N\LV^>tb h.|~l.p7=źoq@0D;h)(X9r@4/~TRs(DfWx:8|;Ai H~>Jрv>EFܿ(|x.1F< 0|| .|8|fY>2|@@G|"8e=1"R \|@A0;{|"|2}88h,ҵr2(W:^Խ|@ ?˵x;[6R ]И(0hї| qA>TqҘˀ!ޏ*8f, 7@߰[x|ĞWd7|(.8g<?(,<`d0=<ܔ(-_~'t9W.>QR ` }#p|cTc<|H8j :U8h` 80@ &  6 }#. (4!أaJTjD`+| P]nryUHT`r4P4PW`}\S rćv`;i$S,dTz`B]z|pۃ"VÔ:с!xU) 6} .Dpxx xcowbAcabѐ``'!S!5>aa;GH`80aax;Z$bp^pCx;`b|{.|[E㔰0+(q0s8M&srt~H(s@,- 9@ 0ł0}ESr:{pR(coK(Vodc7d{Q7dVQ~`hxA6zQ7Sg b7 #`җ7]ޖUPp>`lBc ƃVt fmV`?"^b\d{o9tBb BS`1zOKrqK|sz)@zpĀa<8<;@ H3%FQTu>6:T!<;9t@;@~ 92B{;30@0_}@ΰ@q(8}&8|H8}7|o|0ٲ} ,G@[;F+ˀlẈ\DP $2ࠡdthlrΰ1?([8t_^0~x^8}8.i@8>8|*g08|8nY!(xW<9t|@|}9@.~X8jH8~dx~b K5fds~"8Wx}:;9>0 ƑV`&W3x}^J|xo 3;8~T>* tRf|@}l8}*8BЩ0,p4,hrqآrWpΰ`}K8|@ |xm HP0L.H0eA0P!0Z qcW:9!t}HH.9p>4kP8}xaK" ~,:YHj4j4I| |  ,P{[hE^80됿8Reۨ]rqV04 `7A:ѾĪpnѾKb?XB/cHcH!.2TcM21 ~Ձ,( d@Ё(lPXAG |9p}D*!B+@}CSxFHEѢR0(3pT;2XS-2`R|y8V=b|`8QS|C0VБZh}n}S8le-r|}~Zvo@0$ѝ*$j 0,|@i< ;0<>0DoڟcdTG~0(x@J8x@F4NHayb6AH*R^T61Q|X 2&!(RP`U(jP,fRP+GJAY2|6|+x:zN `~k1.<m!ydj40*52}oxW(.]4|A4J4Q.[JAm`IbiY@~_dRqB0}~ '`&0BrQbp1`1Kj @ HW)8&ED26@@DFHARR&H0@Q|s0D 0PۂHл0BrHtD(p^qd1%DDe0'C2|BUaK!f0uVB]B$mu6;e@Td>,Z0i&yơ`&1߀9P0Ь0З f0m"kDV@  j_AՃú8@|#%1RN@ jbAF|1H$RDP8a}\B`ņ5zy2}#Kx%" ,( |Xy%b5z( `α2`#;dNc~}{x1 >a$aơ6(ajaw-q@D)V6Qbܒ~`ӃĨG2"T`F\^T`")  \Х!6"*1r!4_$| @M|#rJ2mh!5b5"$DP!r"#rg} $|4at:7N!4?j?O'/"TbC yR2As i (U" PB7 Qm.k./#q䨰H`R~{8W7A(6A>F WFE$6p8g&ER\ .oO*q&pQZ&Ev{ <3-FE%q|l+pR9jaPŒz`^t@8?W`jt*DrQHDHiq¶%r(Aba6ePT|>(X&1^Pe:_cTP [PwPp zAޡʴ/?d$c>T>TB.|c+ҐY fШd327A(S:rj ||xV,Tt>С[Q d_xxrSղa5xJo9BD$BB&@HT:8|RF^ab$M/( ԇ2ė:} P. <8 O8cn`܋ЂàUh~| @@>} CxU<, |X|P.9gX}9k99`klLB:|+x(b 2!b. >j U89P:&aBA$\Չ8{@؆8ɄU 8}j:9}FpˠhL9EUJ>C|sH|H|j8.H@5:|gxg|P# Pq.BfFp~!T>/ bGTe>, TXpXve}_Cx}$K!uZv+Un404(a: 0;/|cpTT$ >Rn0r0=|c4Tc~Tcy8Aa#Ax;440420;4]BnD4d`18QH{>8`D8}D`Ex|c"|8@s{Fun*i| iOK#8Rv>P!j`A(vj`^P!j`quj`,nvj`jTj`0nviaHi0PT>jnT_rc_|X_\T9o@TAR\$Tr\!?3?M秈`|+x;GQ|#qfp6Q^Xzpr)0c`` B>t r0Pd?ITc>߈o}0bccapm"RGH u╠0-DppEb0p8p5t8@4(pJq&qU11`0c_h>yGr&h| h銘 cr. !0^/L:thN>q^|] #xt*Luf0]f[`|м@B bYy0jֿeH`^+A];˜Bz#Xى#ǰ}(KxU@L(H4TȌ@.} h!m% 1|`!FIО@8`rA TVԄd p:=PRKR*`XdrЪ)80(UE* ,"^P b`#2`"|z!beVbLDUFNN,N|}xl;`;@$Y# %.";0,pA߀(q3&8\agTfo6俦R3x> f0t,=)1p22qra@<"|@PFH00|R |{xP8  {(,M!F#8H7'?eb0`xg0VHHm~qVLTQY~ys1T0"T` TlTkTj^P4}0k0J<@i?T~U݀BU`BU@BV0:%R8Ť0f-&}fK@BOTC1j@2r@u"zOOVOAPj@rOOR”0[`|| #xT8(*iTHT`paА OV81;\1@7iV MT`QT F>T .T B}[xT}Sx})p5U{_ HErRQ@T!b!bRb$`6Ok;'Pr?&`p8`; PH|`xH<}DP!o`H%"`c%#`6Ig8a-fWOtO1,Pg0W:a hm_!`7s%"BTf(z6t=Ў$~6sP$~&.`@R${tM~hI(DDDDDHpHHII4I|IxI8IILLL0P4;, \DX 8!$|/1T2 647O PS&mtejpciclass,0c0310 $  OHCIUIMʕ&usb (p Ea 3vendor-iddevicersionmigned-addressesfAAPL,1POTimedrivest!4 (4084H@`pxX$P,Kc _0#d 8BdGrphbj# %cႃl")@u%Vjpeg0applc. Photo - JPEG 9JFIFe ` AeMark !6#!!B/2'6NERQMELJVa|iV\u]JLlmuTh|!!?##?YLYxq6ж7  w}!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzw!1AQaq"2B #3Rbr $4%.yzBTfxc" J?p{ V呪"vTf8PMY37< j;hHF{QaB#70DBXj](+xH? ˊאdsȪr: j"()$"5]sczBSiXE5 J%sS3g>I6ӷU.~4 ӳ(d«7ujQ"WESԃ@"F2;j8,vtUSH"O6⡐nCLhGy9\"v)NIʐ+Djz.,<۱Lәg U'5uv(5ɓKBw1b7Y$iY>9 vax 7Ol ä/F$LjDvoKQ&%p9#233NX`9ϭ9'"5Y䓐CW2 =i$֕M;Nq;y_s SDɉ/ݦ:S3V' F#;{ԣil2(8=wCJ@N1n?\z9ƝP[j`*TvƁR3Lj}GSē0ӟ%4 ,E3KK)h /d ?~4|? @xd &Dp_@AE@IAPK?PC'g@cDSC(nyEc  @JDၑ@DB@;C,C@ CD)wAf00@000@ 0  8 |= DT  u)Qd4S|>RD`*P8|9p)?#`as_,>Pboo9o;^p#5GY%E ;NE]'?xQe+u;eO296>`MkzgC|OˍcN!c=KnPؓB*5kbU{H$joށVp#[I/p0ZZZސŒa\\(d/ρۚ vI"!Ba]wEZ5rff+z p|l00}+~5`bp#H :ԓCt֣q/uJ`{w>3NdtT]ÃXxX9& = Gi%+ 0Cڵ1\\z}kn  =Y6rjy`UjIe?Is:K!}Jԣ1&?ky$$aXĈ7#n>CKM/7;INzcܸ &?:q1F9桞=+֥QJE736l0æ*ae=֥7}i Ae%3e$=Y7wU<D` Fsӌlrv&«U9V: 6Gz DD)#&K\ԡ#9bA&9CøRel0Qn)tNP8?X5x3KrDU;t4~;bjeTYX19v# *NN????? OO0OBOTOfOxOOOOOOOO__,_>_P_&cSSa'|___>___S_ oo.o@oRodovo&8oomIoo)M&7I[YPsNf'b^&;8)\5AUmq"z'tKuNanA\PE OzT0i[t%a[pVd)VY=mت13kn0sl9)*;-Zgۑ]ЅCɻ4KQ89%5$REvS'; rdtUo%62, u4S,mXm\<rtMo$ip `Gz,+lm-PTZ4aUHDl'۵X  i5ۢ!#ӑeUIsTMuңL|e Yq֮ʑF$$dD-{NlS '- AIt]03_Er>Ua*RdVuI;Qb|$㈏8?31ғ pA8*;X@<$)*a$tW2(pɸ8gyk>jr^h8re{dRx"ؕ9vI*̓Bz{[FF@=*yPI"2I$A ;SBBkm=A4[_̱f8?w8ps֔{_K6QMDtNcqEqNX;3VfƮE}OcuϿ);M_qσϕϧ`/<)z_+߄=߰WZl~Rߩ߻ ooK]l"4FXj|ooom i 3;g{spAowr[KI> Rzk6{A8Mo"2)Յot+^ z+KDb y15ʢ< 'NL9}yKqǞp03Ms33qYK8n{wbJ'o0'Ќv>T[8DnqYi)Pxu}hĬx+B=+>t8ty{R*&|t&`^0|IvcnQB9+y&<)L0 gXם}8;6 Yܤu<ӮDI#*] fA նC8.£(ZmX]=*SǥWe z@ N:6` "Pf"&?7oz,Ze,erALy=i3OJFd#0(A֙"TDyxa U  xV1!k^I&Ny 4ȹBF7SYW6B0)WP]!b+"2ϙI 1NX9=CzVD\gaTqGjizbW?i?{???????? OO/OAOSOeOwOOOOOO)#, mR__$_6U?_Q_c_|________7I0oBoTm5eowooooso+=Oa߅  Ӣ*I -qF*>"S裐{|6GUtRҎd>S2}=EY[Y~cgrv4}=Q$RQH F@!1,g4CSk{d) xyAIE3a 7U[֓wY8I;> ϷÜ\GaJʃZ.>֫TC:))2=h$Zk @yXт:bd<._tUIC&'pqY66B#9VH"D;NQqtg .XJ{J=dct#3iŶIU%?nMXcTҵf&UY;0k4[k%#q,,s+9+ji v|ΐ=Mdܗ%*ޚ-?caFz0"jHä?-Qsi3;ZZ2h#M8֭, YځRJqWT^&5w}Y `'NO|xYKf5a@>SH&t szaZq˯ݯ%7I[mǿٿH[AM',>P6Uk}ϏϡϺ@&߆OO\nTmCߵߟ3EWi{:_@]_o_ sqZ-1Pw뎃` N>9eZvWN;|e{KUO:E!NInb_3r0iz؊%²JclȐDֲt+1Rʸ"ZMK}VI>LWEp+AHT${"+OcYwLxVb*n+O Lz]1MILv,`uw(NK)ϩY<V3OSR6]hb62=j3MQ!Y%EROpL.2}M:BFp}j2sꦐ2FVNO6ϽkOXwL͌gچ ]q1#jhԜ+=ٙG@x X.8f]$zֽ29Vt }rIk^UEhD\ʃ}qPsT# ////A/S/e/w////////??+?=?O?0< @r%φ? ?[ ???r? OO-O?OQOcOuOOO܉OO__(__L_o%o______πo6oHoZo)M*L K1 ̟YHHrjNg+>vr5SUvTLUص2pAV$A\vjv:#|JqVŝ:ji*#'u ڴn"osײOoJ8F?Z@ 8e)ƀ`sґnOO)2=i-NGz$  lǦ+RPJfODK g9-RHyT&N`ֱbަdg&b4-f0,z]K6޴ }+'GggP U!X28`ocZPbtφLߪq߃(:PO^sOOߦ߸lcAdQU!V@>&+..|{UmP\E|71i)˭0;}XuG^WUtYv"ȿee;;un=]cܩiak6Y cؚ;rboU#^#g $#?,!SK,b0U׿F7M6Lۍ Xus=*r~ .ݶmj6$k6vÌ6;wN 00H$iHv:NzSͺ# 5 GUQHSV< ȷwWr#qrjWߏlrcayyZpOVKsfc5[)4dY0i1EfHW$B> ZvGvˌv'6NOZE=O6O[&`]q5nv2qZ;/M1qO;j(7_W8P>I#T+uRM1 T_V"o1@p]UiKp+: ʧ$k+/^Sh%f)ƢaKdVEr k^M#+r)ew)-JU/yW7LZ$}MLMjUqOsL(I<67i^d'Sч]/:xN{|{ {Pbt//(/:/L/^/-ª  D .0` 3 @)̠cE!c F(8P`p!c G 0@X`xnH 8P5h<2 Computer Inc.USB Root Hub Simulation2ϡConfigurآ ϡInfaceBarry TwycrossThe USL  Toom ClB0+ Expert3Guillermo Ga=gosIMCraig Keithly=Mouse andayboard Software  Harold WeGlchi{dDave "Ferg" uson1GenerEy mfulKathy Christian4Project Management  Nia Molina, Best AA2Also Sting... 0SteSchwqer Docuآ Rich Kubota2D?lo3 Support?  Jai֠ni Evangelism: MikAhebagnekDA1et/MBruce Me-ttADBimO GregBroe>ISomహFalkenburg6ϴ CFM Nastyness -3r#=U >B>O>o>U~>>>>>>U>EM?RBFD"&H@ @LibBlockMoveDahNameRegryEn~IDCopy Init 3yGe1CSizeDriverServicesDToAbsolZeroPrepMemoryForIOPoolAlatsidDelaInstEruptFunc١sQueueSeco'ndaHq>DeEPhOysicԱtCheckpoint AndSwapCurr_Execu١Lo]CLog>PZsPCI1MgrWeLongEsndY16B0޳ Read 32 WordM64U64AddSetUU32(_DescripuhePluginDispatchTableO=QPU@.0ipkcxF""ndrvXpciclass,0c0310Kurto[ @Joy!peffpwpc!a%FӞ@%u@@0@.W O|!$, @,nA8}%KxH>EA8`50r!0ׄz -~#8!@5|N N)H! 09l"11m!}~@}cx!b<8|0~A|Z9 ] @@}@8c @-8@cx9#n0|b0iBz=9BD+8@ɤ@9Mʐ0)A@|˿P.|Y.r1|߃Y.9kKR%|hx;ƛ unP8hL;0@fxn0M84|3x8נn0ynPz9[PR_;1р{;y~!̐4T~n H|QP8F0=~!?^ m!(?p m0y ;~!/PQ2`n0_#}&oR!!`"@88bPH;D@H4|(.|).@􈜑ЂP,` A >3}(5b (!`aL8a_8TP &bp; y` `@`b ;-}; l@ @n loa:QD(Q;Ѐ|̐ !Hb0qQГAp{ p| (|08Pcb{@p`8`v00$ P|0b/L})@x09$j1n <1iĺa@yA @vy T/cAP`a2B,a9Q7/p=rdVt1z0!c`ZB[`}&a5~`Rupn Qj!A$rsaHk8Rr߰q rrH7ubP ΀ѐ(4Pc ``!r)zb `$` d,})`@ R`$rQpc8"j``q8`Wn ^ n ^ n A+$`0p|v1A4rQRP;P0;?26&bp06a124  80Cހŀ6}QK,pª`r6aPKWɆ ̞@d`m$Q47Y>v2uh”cʓ5Ҕ5 ڔL1 q $(8䩯0Ra6~"SI_V'9StžaŔpl"5dIq`rz,b t?{Q|(@0l@1}I80 } @Q9Q9QZ2Qv0dhL #x|dxf`\.1.Z!i (jb XQQv 鎐0HG4Rr6ab,8ԑ9̢q2Qvf x咞Ke:¿4MQπ;PtPπ`c`0r$*P442su5ůWQ!KR$jPTĄ>8(ApT:|`v#b!<`n0̠@m0ڔ$38JrW,I4__$?b ,:rT@zԾ(P༝ 8w <`tNĐZжŀ0ғ-ړhPA_}*(+}+TphA?pnf j$ 9 r12??r"1K|46a`6/9}B@JH_ā2=ғqړZ`.w~c,p̖wYv00`,zL dD『q8]x,RPq@ i40>$qj!Fञab q~@ql`_H/2v><ӀF6au߸_ ހ“ʓ.K9ڔtz]Z \V*`&ˀ`/ ~"Byf`"OZ fr1!`VFүhy1aK݆EprGb `bK5ړ-6H“%ʓ-]ғyE `4ZIehjJQ0hZPvf V 2e:b uڔ؞/J@zFݜ`Z0 ,Z%b!j/p ‘ʓ,Eғњڔ46c%   ٜAb F&h:ߐ^q&u,0ߨ,KﱒҼ:O2*<,DE\^+ar,OLQ*a*(::B)-rKARdOnLr@&U;1(p;} A21a@,_bW(1kā+K}For.@RefTnIFGF(R*5'=Tyڔ?Jbf6pHHH]x(| @΀$)يԡ:01/"/M6/H-a'2^/p/'&uғ/0//c8Z߰+Wrm''!j ?&&?8:F?X5&b?t?4t?%$$?;};?ĄՊ0^;| @";Bbh;;tv:hgbdBPa߱S0_rNR|ԒaR>-ipr|dxޱ>R H$JVs ;3Z4q$ qvQЈ~$ai$a2>1ΰQq;;:W z3:}>1|e#TY"J`__hp? I#iRڿ5n.8@n0~#u³"ݒ DbQYZa##=j]EAလԐà@5VݐnvefrоZVHJM!"aRJs'(39 vI!N]Pj8fϐ!lϾ!MJ*"M%" Ū¤DA`T,@0.|4Cq4@P4 GR1eCWy!aP"l8;Ip&†΅RDf@`:dRxX0:H ݒpV𭓇&ϩ† ΄ƒ(Q@:@Ҧ .+5>Pf "Y" BɄ>rqȪQEYЫE. 1&H&RHa2J!R``4a90Tp3 )d#A#D,b~Ci8ŦίqVJ!T p-*,&QaB"&cm.aA3k>d^puntt?00 #3? GH=Ra|i !1*q1^2z^pnq@B@<$5($}#K݂^-d`|j҃`ZJ?HBo[^{0 psGKD /0/0=R 0.`dD! "0Rm`G$RV  ,`m1|+x0 Nq"b!ܨΆb؄Dvtz S*QZ}3Wp09?`tV,f ms6c-ĭ?Q*И3y; AFT>Q |T>`9?DRab`0 |@8(`B|}$8-qAlbA*|Q6p|8Q9&T@.}H29J_(2ȒQ&T>*T :|`VT_:`U^ـTvZ2d EsaKݑ$pZ_߭!XO|?N`Qq_?:Tsmj`ioލm3;VQ|x0T>"1T:8}8U:}?BLFP! r瀲AW0r(S Ҿݹ#a΄zbL::į`&:(- N$hnQf2(!o0j ,򀝁]C?(v12 ;? 1) mA q^AKۥ` *H st1uԑ :2C"W@B 83w29p^B_,$ʐV Vfځvp!ľD"{:Bl63dBFNPUCU 7AqA::0sLH[4| .|!.@8zLKع:І(|} /C X}qd >Hvl0|SX@@B[Z!g``m⧀~ f[1׽RT֟*Ȉ|.@09P Q稈ذT3; Mq4i1mN0ZU2vߜϮj%dHIP%0PRYIR"39 ;zKՙ4bֽP3Œ7N|hrnpPrrxw@RIfA!&1evA s{BW%}&A@p]f^bj2:Um:>oBxF|Aʐ=N hQ\pfq|jp A ,Tbp`p#y`  O)rw@sBe{d 0=! ,qz \b7jpq}ҢP@qB*08 ka`?Qa$~1(1Ŕ)RS(xMH,P40wHg|#y^рJYbw"fb# n zJeRS1aөlT1ONp0&Ts&!TLh}&UiÂ>V/,t P0!cp)HC` |n[ /0i  3ѭRSar ZqB!5 9+ X8(Ȭ#)y )Pf>`'Pk^;=H =r$Pp` ;`3o>DQ )JSеRS??H@퐷9%0`})p})9)`H}})`9S|U A} }fJ}F}9 9,I{PPWU`b=DX (9zA,|R AT@D828}} 89P؊E5\B~P (6z~73uP ⓐOa`g^ > Ҏ9}a9 jp1&!P @ucЪ9|`(0@Z5}p.}mqѲa}//QqQ4К؈}|pX[bP n1, H@~@$^QPbSg0 SH$Ῠ3~x B(2ے\҃?A+aO@UpN*x~r)ҰpT}д3&!`W /A DPYn1RpSrdxvrppP4yTyUtmd;BWz| l$'$ҁp`aA};"A(KFp.l80z2[ђДAeU "qQ@@@K|_ ;`lƑ`"A2QMҀ|@hzy?˕:@0pKl8$y[UV`0}r|7"@, bj!pL\Pe2|c28@X8,K A@O8fdPҠƹֽ|}ixi,|7PK5}#Kx}Ca)0>-A覔?|#x`У@;B,70;ʑrzdppXb`aBޠl@ @}_@9&8l@Ŧ@ffAA9)ඁA|VA|%8J|@A @x|2iHP"|i4U)~U)>zrr|qBЅJ>Pb|ϐHAh&:`?d0(_@xa9$ߞ*с@`(*}_J;ʦPof;`bbL<CL, g}goH|BƵj|H;A| |pbj.vJp5bж*ػ2X"L>0jH di'9`āI` oj9i@ o nk~n8 P{T{ L *0ϐ 9d00oK}Ź䐿 00L3@NL2DJDbDzD$ԪI ":D$Rj؂IȚD D D4/*/ .!B!h!Hhpx408Ph"c`Ȭ! 0j!D` DD< D DD#`e ! x"h%)"-lDusbdj"@4- USBHub0Apples@!#0P/@X A`Q0 Driver - Not a h{0devicez:Hardware validated!! "jj!H@9/@/ @ $ $00lx #$#T#$d$%4)D**++,<,-../(/001123@5LN*tC DEVICE IS{@AD tD* z1d5Failed to get framez:Powering off ?port#OBnB again4Bead}5Erro1Unus@case in^0tach5)JProcessAAb@@- Ex[it@3Js@oaddrCP fB?, turnE48z8 UPAn0finish@qPeutWQ,PtryXQy;CallAN0Delay`_configuBendpoint zeroCR pipebuT5zJo0run A`PrPA30scriptor:Q_ CouldRMa 8 bytes@To befo0jX-io SS thZaWbeIH URiOo{j-b8Poaaft0i6]R change pdlerAz:kN0RqClearFea~Pe (cqA'Bsusp `' ]fs)2z:DVc/foun{PcWQ0AddsZ0.RCe|s`vVBB)_qnP5`@oR~oood]Q&|fu6pN;]Bpy;R4p4$z:WaVRAD4.osz1kStpstG񟮥tGet%(As&~VCs)/Fz:Lo+C$Cs6#Pec0N4Vu '1lps4O0Curre`Indica7z:EwBwithP 'z:LTfѬ?a!c|+dQPCpo6plooApm1\|F.FdisPnj ʻQifiConiϛ"J-penabPB>\(Sߓe@x1 Rԉ|0,AnPRe'movƑ3:i7erecD (\)3F`j b%^g*|yC7firs08Ors&)Et樂$ҦBvi@DseP3pB<3v(FhQcpIfa0|LA numb0Gb:0SJPPb`AaptbOc|8̣wh@2wa>ausy*\7[SJYu<\MQ, kiXR (M)$ ؕ`C@棛o,/)2ѨBt@Y_zB)oXtz:UERA`ata:փ?cogniz.`hHmfp 1V."$LMb Insufi棩@UA ة%S[h92/ IllegUd*,P"_(E* 9%Q?QNewRefϹDWUn) ÁAlbt"#X;ry s{ !O H)eMeGPX.`{WaR!is neMQrlAf壴PD!DH ]Qnee1dr$$z!av+` uLDIɜ"ForCapt N gTiC !!Y = sattach@alf/BG,supply good_^G0exPpn3E dPE\_.o@noXAj_/$jqܡu|Ki+@Lwroa@ref!4c>d: bvpBߓ1cwPtransav(st(qout\ |De\Et@ #ˣw:,#requestE1t impl+imd|Cgq3@ssaY!VqK+9kNyBe`@JxԎFREEh0t$teBQNJBBBBB XbBBqiii7iLi`i|iiiiiii )FRɐuꐓꐞꐹpBJB6FDBo@@Se}rsLibFN`PdZeroXExperLevelhE#݄݃E#*hAddE#XtMemh̠rX壞VF, lbX1 ߧ`7lYBToHostWorMakeB M$Tyf"@7XN?Immedi@XźX=`ispos1*MCompareAndSwapTher5kClass*Plugin6atchT)RBAS!@!o8g0kcxB#Qusbd'X r0KurtBZJoy!peffpwpcnaφ䄓^?y@]@@](W`8B|!$, @,A8}%KxH=MA8`H^в0=58!gГ|N H<926^,8FUF9F}cxb?<8||Z9 KФ8c :8cx9#K|b0i9BD+ф |0I@P.|Y.|Y.9k|hx;MЎ8hL;PfxM84|3x8y/{r;~h;yѠ|4Tٓ~,oH8H9鞾с?С(?Ѐ;рQ?}&ё`"@88bH;DH4|(.|).@Q΢,]A{ f}s(8aL8a8T Fp+?;Kys+ ;-fЊػ; @lL:Ѧ(;M!kHѓAp{KЁp| (gЌc"& `8`Yo$ }gbL})y9$ Qii:)AnT/AA86R,6/9žы/# =2`.၃z{} a4 |7АЪ004$2K0r"! 20H7!" 0 T6%:ђ01% 6A0$&)A}*,})2_@ 2$0>8-&!8 U М5AA$ 0 |r@;;vg6F 0>124*A 80gC006џK, 1>1:KU̾d:$ۘTE7Y^C(MЪDHOODcD1R@ DL_1A!$(80Ոr@26s0v?9$¾P2UI!13,}t?|(01}I80 }@QY9zAR0ܺQhː#xQ|dxPGH5=2U\58Nazdщi(AXa@@H%3B0>@a鳻P0,08PA92c@1!Ra1` 2TR1KegYZr63uу0_;10pC` @D@0$@p.L0>H$JATE43Y0_!KԠ52QTĄ>8(ApT:|v4㠟`< 0̠KD$00 2aHu8j00XQppRC>< @Hj|@2T 0>r@,:9@1[wB3)d0H10 2}4!:,!!|#xq;.A; hZP^Q,piR.p4_$/?,Z"Ꚅ0(H04$ޢ8: <ѥ80nr@z0K-ChP爟a_}*(}+tb h&P?Q n>d 9 bҠ2??6ҠB1okP|T3@>`VO`9B`JHm_12=CqC[zNb;aC1,2߆wQSY`, 4L*DB@!w8P,r@R*iTE0^D!1f$Ќ!֑!@ݓl_H#/░^Q<0fQ>@@_ 0CC/^K9Dt_k]\vJ-FRA/q"ΒbyDozP*ab’!`v/_2K6a"gLИȒ5KM5C:\AC-BZ_l_0%zC.K.._ 4zDiAZAhCjp0hzfd!0H,RuDؖjp2q걚BACAݨ@zC,!~ѾѲ@3 rЅAC[-CD4V%3 އ QA= FhZ~U+q0ȏڏ,^2K6RZ0>Jf\,e\~*,ҕښL():L0m:b*CAr-dLضȯڥ@FUⰓ1(< [} Aϰ2VAa3@,_b(1k1+!K}Z.f`N,`reTiAlbf(*A$1bpU 0ujym"azq|G&`(39 pi"n].P6灊8{e!g"%jTJ0sw"*ur C>A`TL0.|TTP7Tf g`r("@wb` 9fѴ"΄I`1FA65r5pT>A0@Zbd0ExZ^B v0ΠFBY64ڡBZHe@V3*<N+Z]^pޥҧq?6GɄ>AR!D0qyEҤNТV2s1ҤFJhHjA4F93`0T 3Q"KTDΟ0, 71_6`X#@jT$ DpDCJ,(aF2@a BҶFN"^~ @$t?0@p0 #3 GH͚|iPU >J!:~Er!@ǂ $1v06, mĩ1Q|+x0 n!B2!X06b4Dbm Ct` Jzw 9X4v0,C 3yV-tQbJhi&f@T>r|T>9?Dr10 |@8(B^ |}$8M!AlJV |8 9&T@.}H29J_HȼFAT>JET :|`vT:`ubT0z@2#քE E31KݱpzX nq2ZV3iTލ0,#er|$?1T>BT:8"A}8U:}?BGL9D `@qA00`(Y [y?0Ӿa46`¡bLZq:_Ă``MGAIZZ؄C nhP2,@ܽ1}?(2 w?+1) z@aBKۥt-`>/JH1S$QuA :RW` 8w Ya ~_,< \0"0qM9E\`p|p|6A"$`rDzC S5lO T!jr82A`:||9*X};?"!DPg)IưQiQQx6DH}ZQW<,@ ;{|~U@H*83PWPjK10"J`$NAQBaB:@݆n@K}af^`$@v ڕp?066!"¡:BlV2S1«db0f0nU:uW@!QAq{:0P:slrH[4| .|!.@8zLKع:ҰH|} =QKC @xXqQ >H-"p_aP|ԮQPX@b zEB-0 f4׵rOJ|(p09r 2`T ;Dՙֽn/" P2"ޘ'ƧraPFᾀel@i s;bfw`.}&。}p܆bW~0``}R0:mZ0^0ob0xf1_@n7O h| !| A ,T X0Ģ CPΐ  )Sr#e{Q eZQC ,q(‘耸|EuWP !>R/Ԣ!b@J8> 7<1RT!(6n@=b>1 ?0Q9$~1((D)r(xMH,40H|#&W0jYD+ .Dczjd҅rY=өl0T1O0N&TsFTL@h}&UiP2>V/ p/,t` PRAcԃ0)H"c*{_ O YKerѶ9zR1b@IYەwXXB(@CP)Ġ<󰪑 )P3>"PGp~0;=HS -"ҖD# ; 3>jеr6HO0װ9%P})p})9y)2PH})(_9 |u0*P :} }fJ}F}9 9,I޾UU`(R`&Dxp (9'P.1,|r1*kT`pds88}_} 89ت5|PP*(V0~3 2@SAP!;^>a `Y!0YA QQɐ@ʱH ʱ9|`(0jʔ 5}p.}ۼqbQ/O&;Bwa| ڌ$$1 };B`PHPKf 1N`6l82[?8Kuȹ"pP2+Vr8PC>Rkp| ;ހrlABQRM&r0O|@"Q6h;y?˵1:` kAYXpD2oKUv_ u`."|rW0:QBQ,]Rr!pʦ@֥DL|eR|c2X@x@X,KS Ơ@ʥ`<֥e8ʲEfRZ5BPim|ii,|y pWK5}#Kx}CZI^x-&AD|#x|;B,WC;AzRV9t pc0 @}_@9&89)1A|v"|ܠ%8J|@1 S~ x|2cǥH22|i4U)~U)>24"|%1!bn^'|ϐH.u|r&H=sd0(x 91"q2ű$(g*&`_(*6}_J;*ƠPʥp;`bp&L<<@/L`Lg2g2H|B񵊑QQ|H;A*p|ʲԂ|q a5хJBuJkRxLq^10ڀ즠G9`āI oj9i@ @ k~8 t{ LƢ JQ0ϐ 9dPK}z}Ԑ߱ PL@SN "L:Rdjddd$ʿI*ϒBZd$r̊آIȺd ϒd d42J Nb@h!Hhpx408Ph"cȬ! 0ЊD`DpD$D#@e | Xt"H%("-LDusbd`- USBHub1Apple !%HPOX A`q Driver - Not a hdeviceHardware validated!!P"j0j!H`O/  LX"|##4#$D$% )$)*t*+`,,,-.//0001|23 5,N* DEVICEw ISAD * dFailed to get framePowering off port#n agaiwn4eadErroUnuscase intach)ProcessAb- Exit3saddrb f~, turnR8+Pn?finishetv,try;]0=?E,fuU Om/;?2 / iR6$WauC.O/X֙St s$G\_$GetDT(sESD s)/LoJ0CUCl#BecNS_/% 'lRpаR#/OCurre/IndicaA]7with)o;a'kbsoa__\B^c/d n[J5d2`poU loopO _{T,\disnPd(c kif9aionlCp"4{?(Cse4Pi?==,0KsDH{ROemovv:jVrďec_ ({Cr)8qp bD0Ձ31tI,CVfirspn"#EY)EHoVvPAi2eD؟seR Д<OR&(e8 I!qfa numbf:Oio.`pt>Bn ¢:whw}aPusy*/<q{CV~zi6 5%&{Pl, ki ( )CEcp{KN)QZX$xf~*a&)粓SU̢is nel`p"lfcA̐!3V|necedԙavJ?LForCaptP!BϼNІVн@ = #attachlf/B,dsupply goodXfexo ne3E?M_;`~/ԉQVQ%RvK񰈲J1kbwrorefߡi!vc]d:Ϻ叁&ѧC'ovtransaGstG!out{P,Dep{4@.{''4:vKBrequestdt impWlim qd,C!Rssax@}`u2QjJBX=kNq ySBeÂ-4ib?>tFREECtO$Ct0aIn@jOaBa@a@a@a@XHaIaGJATB@@@7@UL@`@|@@U@@@щ@}@ P) PF PR P@Uu P P P P P PBaAJB6FDBo@@Ser1sLib*FN>PxpQZeroxQExperLevelTd4W38dITAdddӠ]xQ4MemT$Pr0xQcSu2WFKl"xY1jT@1WSW`l]xdToHostWorRMakeBMDdTyS(exQ -dڢN~ImmedixQ$jxQbbisposImYCompareAndSwapThea>"ppClassIPluginVqatchTHa@`AS!@!@p8@0kcsxaE## us?bdX T>"1tqKurtrJoy!peffpwpcAaײaJC~G^}H ` p }IE!XPaBd9a@(8488༂29 $,$?N ,A @9H|pU>|a!|x8',L8䩀HiA:@ǁ F>;03BJAN8`pB8dT8c(ATe:|(.|N :x; ;;;`oK}8m8}|#xJuvj0x124 $8PG`lqQN|fxҐ,l^fH=MHPҐQ֑9B_ak[&e2^; No캘 ;#K֟}N|a&2|^oHyN` fP;=NYAίX-2^HN9@9`Krn,<9{Ccހ&1@e: `μmƦY<:]P_5 j j4;]ԟ:)&92μHNFN5V_;NmKrߑd?x8ްa, %&@^0ya$^8!P}|n.]n%&2Y'ԙ?2ADU&>8hT:}@.} GZTVHV H L.}@J`@9 h1Ӏ:;@B}DSx:|#xB : :B :8:@{관h_P{h{h *LP22K{r _Wk0Z1(9b446H ]4P,@27c0b |:Tc^P;  ~/#R70/ 9 KI:0A=@IB\>Е(\I!M"TC'Q([@򱈉}E`0|(9Ue<88T>8T>, A?̉P P<|_JD@ RYF_PбP9 MvQD01,D0|#-1Hi*Pd V`Za.O KH*Oxc@qRe`;C@|#x{ҁ;#1(ސ|;ˀ|#NTPҸRޑ`a~{Α|a| R8iPiPP~f؈|/'~ Ao0`>e0>P2P%"xT?; a?9h0}БQ}p}$@9/ 8c(pD@$@8|82H"WP88|*Q8}{vqT}>@py|4~T<+vp& &Q]`}t`.}I|i sP|5 @ȀǠ.u&b,R$,r?q}$2 PpQ,4$<Wć8}2Ԅs7{Hcd``fJpNt$ q3ZqppirР`ROHRr|pT>}U8} |p|`0}k}C_X}PQ `ad}D`x|}{S%U#>֒7e>0Ma}&оёׁ$`?Mϡ0|+x@ U%>)x^qp PzQ=8tzᲛ``O!`bTL,Tk|;x} Kx}]xW>T~庲W*pt~HWDnW>|cx|[Ѿ`g`T>TI|  WD.W ](x`OepWqpWD.~DWW-쐠-c1]X:LRaW㜰搠}p3xd|QҢՁ[} /8T>@`4>z !K=F!>?W>/P+zU*r@@T>|0`KF!ᚁD(b+)`*^qFQF!`ȥN? @1LG%aaWPà|]eP> F!C|d0ni3rR|_PLtOx$ߘ҈ߘpߘIlߘtߘ҄ߒҌҔ.Ґ$FҀ^ҜvIҰҘҬҠҤ юѾG FJ"X!@8T` T X @ P , ` dИt  <0|0d t *1USBHIDKeyboardModule: transDepth < 0 (initiations)> 1 y8kSetLEDs - immed e e?rror;GYConfigureInterfacem4YProtocolxDo a ^Idle on non-Appks, as some 3rd party# don't send reports$Ul?ease7YRequestWFindP;ipr:YReadrupIt{Bcg?r feat_the i RpoF 5/2!AF8$//} T{ac  com ted wibaTfcvalue$/2)3?!E{ during\1/;?M?2p??ƅ6??,??X/Oe0;OMOq)Ioccurred, buOtvis unknown@O!abY T0unabtoUcove5 romyAOF@open aS@llA1"Z1IR...q%"_@notUentusbd!Pe_le1.2.1P! WOC via ;IlizeD_!Notific A at driQremo AAPdZ0`Q/"Wa [0fT0set i$ P%`{oc-o!AAZ1F'p6Ao!b l#^uaUwhBP$Abusy'2:` 0ePQd(o{Diss O"0#`Papressed: dd: "&(%.-#  $5301!*)'2+/,9zxcv`abdemgoikqrstuwy|{}~GKCNELSTUVWXY[\RAOnQf LÏՏ<;8:7@G! +F_Y_ЕP_GpF +! TrIII7IUSIcIyIIUIIII_ƐƐU$Ɛ.Ɛ:ƐGP KBF @@BpServic?esLibpNexkCpbB/yRefPn @piGS@us+?ExpertA ?De5c2!f=llGYFaJPQ2ToHostWordMakeBMTyLPoLQsDoneQue p Bloc{kMPTic0uV PEvP~:Resour @tP"lvHLThey3bDescrip1MCla3bPluginppatchTQMp3xtS!@rMPdH~kcxF$ձ@QXlekckcKurtF.Joy!peffpwpcNa!H=>= 9hΰ>^I ߓd9_Б(8488CО29E $,$?,A ~ 9Hư>U>.6԰|x8,P@P8䩀H/р@ &00"*Щ.шM8`oP"8tT8c(AXTe:?|(.|,xK`9Bx_kakkn.|fѻ,`І$>`; .ѓO; ;}8M8^|#x*M.0ћ1n2= `LJQ1i>ܚH u.H[vм F҄̀T;f .ԝc *8oH ͊Ț9@9`ҺEѲ,љ<9#cހ ]Q@2 hn )Dڒ;.2Tdx8.ϓ,P ]>*H 9_|Ѷм n$4;whl.2uB-@>Z)^L 8!P|| 8=tO 9ץR}Z?AU&>8pT:}@.}Q '\PKD8,>rځOU>  9o?H -ҁ8 OV})8a) 8U$>(,|e0F:* ҟԎ,0b"j%O;r % ]~!LdT, `X}#Kx8ہ- i/8(`<j(* UVQ^U$Ԋ0!ܒo<3}& 8s9(THP.}IIjѲ_`* ,r4br4U<|~02UjмT*0Q}^ 8|0}(P* 1u1H-9 .40#Z=KR0|3xPV̲PN TK==Ѡ`,n$~0b8wg< | IB<`dl!<`QN 1mNCTSZOlC8tj!HP@U]a]8jFC .ᘟMj#t7Hy"T81dQzv`ŦzdT,@@hv`Y2"^2Tc^jћLT;xZ?`jFY;Ҟv`5.(0Qўrv` .~_HRZpjA&ŗ,M0:n|#x|3x|+xcШdrv`2~0Td~XP ?*xT?"WrAu}\i?oAޒL,aT8W`ο|$j#Sn.ܒD .nYp"^Dj!2nЭ4Jj̶A'q K_nЅ"8o| 8YpjAQĒ% AQ@bpşןֿҾbpRm0oD|#x:bKP%~4^Er ȐfxsJJXex"$ct`>a8E}JtA:|t 1P8_ kConfigureInterface - immedVe error1 kSetProtocoli Do a Idle on non-Appmice, as some 3rd party( don't send reportsbut=tup4Request]FindP;ipr?clear featthe }irupt Mpo2F7 Read (IE)>B TCacXTed wiJbWrefcvaluye?(com%PX| , s duringc/-~3I[)z[-#YUZAZoccurred,[ stis unknown0nh!notPenBtusbd0&>1.2.1!p #5&? E USsPerInchThewq%BD?escripClassPluginatchT!يkS!@r`kc0x$+$, 1X^1Kurt]`Joy!peffpwpcNaaҲfjHb=h ஗Ӏ0>g|' `=iBecd9@԰9БD8H9а4W$ $(*2,Z \ꠝ 9VU>ZQ,0L­|x?@9), AL @.8ߩH  N8`T┞JơJ`.Lx9#K#4xa8%|fxK ;,Ġ40/Hi;  8|dx|exV޶01p 2`&!X2:FsHMZ 6UyƸ@Fu$F;YU8!|8|{fx!~|u~>;;ࠛ F~Po@H岀Ģph84;o„O?Ń8;,|8` #RU$!AT8o<}& -86,et^ (%`~pR,̛NV9 h8ff Mƒp;O0 DһЀD|8@AҠ8W|#x8N!³0M;J!EܿH>j;s(hx;t;;#_xp88Ha:Oa8xX;t|H@;{ ; A>4Nᰞ6fk@񐸠 T:|">6U(:}HHUJ<}~Rt,8tJ(U$:8*WfR"LA2un> |(8<88̠c(oN4zሞ0R5r!`zƛBvBv~FjŢF J!`}Q($;DI4|@0XX CPT|Ѥ}L;/8mmҠ(?1R x09}h @U%:;?|a^ݭT8lK 7x( .K9ã,x&e\d𫡢Ry^%Yc;o*Lp¤@;;W⏀p" ("nvPz{9H"šIRVѝV Z_P9_R: QVmΠL8`dpjP"Z R Z R Z zR DZ <8>&pKi yv~6@-v)-f톱/|+x|#.ox|<n40@=ta1|})"| (m8`#0BL| J!1̪?2?2?2?2$ O2"O2:O2IRO2jO2܂OҼ2O2ԲO 7!!P~БL@LLP 4Lu-armite: Illegal TransacRDepthB_: 5sFullduS(#1) - immediOate `p0=_: kdsm_6_P5mv+p_@ȳ_P*YiuQd with bad refc3Pvalue._P"_4U$-o: Qle1Rs\oPToo many`triesmaxPowP= oR,rHub suppli`pu2?ansufficient>tfor dH9<_]crceanNC}z91.2.1!%hpwXx`0}7}o: Wa`ngprmt+Xtov>فose/DeallocvQ,=9PZ_sZocot`gp!t!Finalizeoޕs ss@(KՐGB.>^l}ꡐѡߡ0 ʐAJ BFDw/`SerwqsLib`ExpertRemovSStatus^ptcПBaMemwqRequestoonDescriptPFa|cetsrToHostWordMakeBM'Type\SBekCopyTheRF|2PClassSPluginYatchTablessS!@:82Q6xkcFxG$IPVqXޏFKurtsJoy!peffpwpcMa640p N 9^N)ϺHEϰX|  N5!65R5GHG-RA5UZ5w555U5555U555ݚFAnage!rЯPPvP/S`ne0RIDsNoticprM͐sTimeCcUnQsalProcdSymbol"mezADBRitSystemZoneRmvzҖP2LM2KeyMa=pShim(W5 )(8, BH;qbH!%$>.<9%.1`|-.P.fD#T`#6^dS0<4c`8Vx8.HIQ2 o"O8FX!HzY.T>_/T0 A$`.1n-;-;;@n(88Bu)x\=0Cp0cX4,n;8PT<8|.T>|. J;]cxWD> !8w4|?f$8t M` 0"+镓 #0&5T?;d`u@W>}<<8c8!K``bjfe01fT{D.!0T>R>; ^04zv|!,K#:@xT*4R0R0" 0[" ܶ" 20T~Tc8|`xT,00 >0R$WE.T&|x|OT."!$Ⱦ($R$UWBU.( ^0i!L tl \( ݱtݰTc/0v 0 V Lj4vj4V Wy8XP?CG"8ĮT>(аg00@8;W>W0x88IT`?LW!Apko`P' bg`d8|Bn?; 8d|+u|4`P-|8ƐP pV|+3up8x $ R\P6zVBݰeqDfpF$aJ;PTLJqX` 8008b() 8$|"{;p,pq^c?H _ྺpra/8ra"xpq )rpsa:tppq4pqM F0PpHFFaJ|{x;;`;dQ0PB<~QP(?d8{V,Lan\PDn`@8r|`YP,끥PC*(jqdJuQ$"@>jP(vtngvjq8uBPᰔ0P,},BP8bBP((RdJ,K Ab~ x!)1@a@ !F (ȪFb4HeSSIfa*h`*`.m媁Za 4 yO(|0ZPE;ބw1T`.,8`8p#xZa,Bj#B| S, 0 ;P D| p(4`>T>nKw;B8P"t e!hh~ ` Tjr0g 8@OPZP 8h(Z:Tp0`pa/oJv~ Dpbd ,;K ;W>@o3FA꧰ pL.FNQ VhI(nhhߒh0h$h$h hhI.hFh^ bvF^fѻ4ỰL<({0@h4{Hֲ pt[ tx{m`|7!t`,(0$dD" 4 x8" .:869 705${ ~ "&(%.-#  $5301!**)'2+/,9zxcv`abdemgoikqrstuwy<;=>GKCNELSTUVWXY[\RA nQ{L_^]hf+<=L 68:7^L !!!!#~ $o2 # ":TheHIDModuleDispatchTablekcxަ$[`usbsXUSBShimKeyboardKurt`K Joy!peffpwpcOaȻ{`0WP;7poE oRXL/ȶkpB㢦 Q-QFQcQmQwQQQQQQQ^ ^ JBFManagerLibDriverServices!Interfasce!Get#ConnectionID!InstallDe!Notifica!BlockZero#MoveNewPtrSysClearC OSTrapUn!salProc2;FindSymboloseRoutineDescrip'tor!@?N 1Address temZoneSet}2 }2MemErrO0(#.^ 02a`||1PH JpL0`rTD~x2@;T<0PxۀrGé0 PVR4^f7|?#x|+`۪nS}Fxxx8?P@ 8MQ F,/48 5B?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pϔϦϸ$6HZl~ߐߴ 2DVhz .@Rdv*<N`r&8J\n/"/4/F/X/j/|//////// ??0?B?T?f?x????????OO,O>OPObOtOOOOOOOO__(_:_L_^_p________oo$o6oHoZolo~oooooooo 2DVhz .@RdvЏ*Pbt߆ߘߪ߼(:L^p$6HZl~ 2DVhz .@Rdv//*/oPobotoooooooo(:L^p$6HZl~Ə؏ 2DVhzŸԟ .@RdvЯ*Pbt(:L^p$6HZl~/ /2/D/V/h/z//////// ??.?@?R?d?v????????OO*OPbtΏ(:L^pʟܟ$6HZl~Ưد 2DVhz¿Կ .@RdvψϚϬϾ*Pbt//(/:/L/^/p////////??$?6?H?Z?l?~????????O O2ODOVOhOzOOOOOOOO __._@_R_d_v________oo*oPbtί(:L^pʿܿ$6HZl~ϐϴ 2DVhzߌߞ߰ .@Rdv*?P?b?t????????OO(O:OLO^OpOOOOOOOO__$_6_H_Z_l_~________o o2oDoVohozoooooooo .@Rdv*PbtφϘϪϼ(:L^pߔߦ߸$6HZl~ 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*Pbt(:L^p$6HZl~ 2DVhz //./@/R/d/v////////??*?Pbt(:L^pʏ܏$6HZl~Ɵ؟ 2DVhz¯ԯ .@Rdvп*Pbt(:L^p//$/6/H/Z/l/~////////? ?2?D?V?h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾* *XZ+|2C|3B|RBTB:|".|H|(|2B|RSBB?N!'9K]^ȸHP|]1 &;/ @.|;0.|(!  " .@(#2"oB/T/f/x////// 2/w 12/C?U?g?y??????/%2?w2?COUOgOyOOOOO(O?2OwQ2OC_U_g_y__@____O2 _wa2_CoUogoyoooooo_J2owq2oCUgy@o!4w 2CUgyӏ$2 w$2CUgyӟ(2 w(2CUgyӯ,2 w,2CUgyӿE02 wI 1BTfxϊϜϮ(42 w42CUgyߋ@߯82 w82CUgy8 K) +=Oas|R" u|A8 |)" @@8| pw#l|{h |6`!T!>|"Ldpa@|S`c@K2Tb>dB@|[xl 6$L_,K\jAq 4|0BJ`R:>K 4Z |l|p`&\cCA<;  < t+OPaInz2x0pBA_h! 3|B-p/L 'CN1B?T?f?x??????/J/P ?'SPA2?COUOgOyOOOOPOO?T O'cTQ2OC_U_g_y______OX _'sXa2_CoUogoyoooooo_\ o'\q2oCUgyo` 'J1BTfxҏ%d 'd2CUgy(ӟh 'h2CUgy@ӯl ' 1BTfxҿJp 'p2CUgyϋϝϯPt 't2CUgy߀ߝ߯.x 7'3x2CUgy| 7'3 1BTfx 7 '32CUgy 72CUgyވ 7"'3!2C/U/g/y//////ތ G#/'C12/C?U?g?y??????/% W$?'SA2?COUOgOyOOOOO(O?ޔ g%O'cQ2OC_U_g_y__@____Oޘ w &_'sa2_CoUogoyoooooo_Jޜ 'o'q2oCUgyPoޠ ('2CUgyӏޤ )'2CUgyӟި *'2CUgyӯެ +'ì2CUgyӿ% ,'Ӱ2CUgyϋϝϯ(޴ -'2CUgyߋ@߯θ 7 .'2CUgyJμ 7/'2CUgy8#(#4Dc|}x]=MVaFCH)H9 =EXaCP&H*=2 aNK&xxxfx!V?h?z???7 ?6 5rO%O7OIO[OmOOOOOOOOO_!_3_E_W_i_{________ oo/oAoSoeowoooooooo+=Oas'9K]oɏۏ#5GYk}şן 1CUgyӯ -?QcuϿ);M_qσϧϹ%7I[mߑߣ!3EWi{ /ASew+=Oas'9K]o/#/5/G/Y/k/}//////// ??1?C?U?g?y???????? OO-O?OQOcOuOOOOOOOO__)_;_M___q________oo%o7oIo[omooooooooo!3EWi{ /ASewя+=Oas͟ߟ'9K]oɯۯ#5GYk}ſ׿ 1CUgyϋϝϯ -?Qcu߇ߙ߽߫);M_q%7I[m!3EWi{ /ASew//+/=/O/a/s////////??'?9?K?]?o?????????O#O5OGOYOkO}OOOOOOOO __1_C_U_g_y________ oo-o?oQocouoooooooo);M_q%7I[mǏُ!3EWi{ß՟ /ASewѯ+=OasͿ߿'9K]oρϓϷ#5GYk}ߏߡ߳ 1CUgy -?Qcu);M_q%7I[m/!/3/E/W/i/{//////// ??/?A?S?e?w????????OO+O=OOOaOsOOOOOOOO__'_9_K_]_o_________o#o5oGoYoko}oooooooo 1CUgy -?QcuϏ);M_q˟ݟ%7I[mǯٯ!3EWi{ÿտ /ASewωϛϭϿ+=Oasߗߩ߻'9K]o#5GYk} 1CUgy -?Qcu//)/;/M/_/q////////??%?7?I?[?m?????????O!O3OEOWOiO{OOOOOOOO __/_A_S_e_w________oo+o=oOoaosoooooooo'9K]o#5GYk}ŏ׏ 1CUgyӟ -?Qcuϯ);M_q˿ݿ%7I[mϑϣ!3EWi{ߍߟ߱ /ASew+=Oas'9K]o#5GYk} //1/C/U/g/y//////// ??-???Q?c?u????????OO)O;OMO_OqOOOOOOOO__%_7_I_[_m_________o!o3oEoWoio{oooooooo /ASew+=Oas͏ߏ'9K]oɟ۟#5GYk}ůׯ 1CUgyӿ -?QcuχϙϫϽ);M_q߃ߧ߹%7I[m!3EWi{ /ASew+=Oas//'/9/K/]/o/////////?#?5?G?Y?k?}???????? OO1OCOUOgOyOOOOOOOO __-_?_Q_c_u________oo)o;oMo_oqoooooooo%7I[m!3EWi{ÏՏ /ASewџ+=Oasͯ߯'9K]oɿۿ#5GYk}Ϗϡϳ 1CUgyߋߝ߯ -?Qcu);M_q%7I[m!3EWi{ ////A/S/e/w////////??+?=?O?a?s????????OO'O9OKO]OoOOOOOOOOO_#_5_G_Y_k_}________ oo1oCoUogoyoooooooo -?Qcu);M_qˏݏ%7I[mǟٟ!3EWi{ïկ /ASewѿ+=Oasϗϩϻ'9K]o߁ߓ߷#5GYk} 1CUgy -?Qcu);M_q//%/7/I/[/m/////////?!?3?E?W?i?{???????? OO/OAOSOeOwOOOOOOOO__+_=_O_a_s________oo'o9oKo]ooooooooooo#5GYk} 1CUgyӏ -?Qcuϟ);M_q˯ݯ%7I[mǿٿ!3EWi{ύϟϱ /ASew߉ߛ߭߿+=Oas'9K]o#5GYk} 1CUgy //-/?/Q/c/u////////??)?;?M?_?q????????OO%O7OIO[OmOOOOOOOOO_!_3_E_W_i_{________ oo/oAoSoeowoooooooo+=Oas'9K]oɏۏ#5GYk}şן 1CUgyӯ -?QcuϿ);M_qσϧϹ%7I[mߑߣ!3EWi{ /ASew!Km}WA4QҭM#zS?0@4NewWorld v_1.0p77pO@ _huhOh}1hO(v8t&HXP`le.0H/1`x~1)|m/#/=Oas2S"2//?!?(3:3A0:1+$D!"h?z???????? OO.O@OROdOvOOOOOOOO__*_<_N_`_r________oo&o8oJo\onooooooooo"4FXj| 0BTfxҏ,>PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞϰ .@Rdv߈ߚ߬߾\*$  0&8JeG L q#)#s㓀`33 7  K((( *) ) ))0A) Yx)q3 7q| g $Ԁ%7I[m!3EWi{ ////A/S/e/w////////??+?=?O?a?s????????OO'O9OKO]OoOOOOOOOOO_#_5_G_Y_k_}________ oo1oCoUogoyoooooooo -?Qcu);M_qˏݏ%7I[mǟٟ!3EWi{ïկ /ASewѿ+=Oasυϩϻ'9K]o߁ߓߥ#5GYk} 1CUgy -?Qcu);M_q//%/7/I/[/m/////////?!?3?E?W?i?{???????? OO/OAOSOeOwOOOOOOOO__+_=_O_a_s________oo'o9oKo]ooooooooooo#5GYk} 1CUgyӏ -?Qcuϟ);M_q˯ݯ%7I[mǿٿ!3EWi{ύϟϱ /ASew߉ߛ߭߿+=Oas'9K]o8L,||UU U }BU@ ||H|PPH,|C|dPPPPPPP`9E,j, A}lXP}kp}Xxjj}kbe9}4=}d0aU~=@U}r9 o9EZ}mpx}hP| `@A| X@A}z}`PQ̄>}U8+a|0d X=`B }mP9k}xP95K`P+@| a.@=RTaAS|`B, 8 9a 9@5JP.}Q.^ ``9a 9W@@ k`a09 ,948"S<& @\& Dc}Z%!H^}9& L9& P: > xB$T}D"X& \: & p: & x: & t: |}|^2!9|& : }& 9 : ݸ }l> 99 ] 99W U  Y -   ` 91  $W9 1$$_9 U @ 444> !d}An: h: l0: p0 :$}b.f"kB0b!05: 0G 0\A@9 5)| Iq> 1}+n})KyA0}I.+Ka =HnafoB@A 0: `U>aX Ap9 $, 9k A>@9k$F@>@ND>@ND>@ND>@ND>@ ND>@ F@>@ ND>@ ND>@`zND2Bk 4Hl~VVւ^>@@}9A ,P| X@@}+Kx| x@@Lcx}o[xB9m}l`8!}xPU*9` a8@`o9@uQ2|9J}uPA|^P~^P^P^P=}u9k=UQL~1UII_|Jdr2B-A~xQ ȅ0l||PQ t: :@w:`P^:1|P~N!@9ˑ!t 1At~QxY~1TY~2P}b!tAV1<`VS~9~srT|`QU~~nPXU< ~}kx9OQ`pX&a=?|t`h dQ>@@oQoo|oBd}sxQ^.A}x.` xn` n` =`9`uENak ^p|TPS~S9` `u{}a_AT1W _[}P| R} P#~x=@pJ ,`L| hk+`grEXx__\x dE`xo(o:l.EK?FNUJ`xN`VbS`}9u`P9z`9},p.6}Lq. @| p ws9@/Ka;YFrvS?xVR<^m ronVR~9 A},q.NޕwH}T9Rwsjp}v`Ցk PX׮}$P(kP~mP}}| @cxU}`PJ_L  ^P v }(P &}7>P/}(bn@Rd  MUݳ p ڳk*@@% > 2UgBǔ:ϸϦϤڿ1}gH.AX E|9`}C=}@}e`0H}q@aa29B8p8s8ఁl h}]0|0BA|&Ѐ|B7T@ |sоw|҈|җ| ҐѾД|Ҙ|Ҝ|Ҡ|Ҥ|Ҩ|Ѭ|Ұ|]Ҵ|ҸrѼ|hw|h|hw|h|hw|h|hw|h| hw| h| hw| h| hw|h|h`=r!Aa ء(08@!HAPaX`١hpx!Aaڡ!Aaۡr{| <ﰄ0ByFR|D|e'|!DA`caqrk8!k|lAѼAhlPPTaP_{z\X!\*XB,;Wal|2B|#|1BCd֫@xj`$sX}q1P@Z{Bo}&a8pSyfrY w4SY#O ~RSQ66SyrSy5Y dWw;z*.:6L ~Ј66j`0 Wa$N@2P$ r~SWuWqSy$"*`2:N /#L8dAq ~vzp///////? ?2?D?V?h?z??????1KV1Oj` 3BW3*R3v8:s~hQnR)ak AtVe~,RR~~x\>@jVXPPfrV>~0R~j`8V:1jaDR@R>KQV<{._LBscM@MzB~A.6~4vA&R.r 9J\`{0@} {!R`&~4~0rR>:VRVW7 @7@~/@3@I*A6v@{V7z>1 A?P,|: R:s@WRaFaA'Af`jev`~tS8B`:~v9VsU8`f`j`n`#:P6Y>P-v`\| -~&VRv`HV29[Qv`8nH:V֮A~r:hR%r~ְR @r6?@@Pu?S瑴(A"uSq(*sv7|2}R1*ގ@FqvAV6N~0@Vw6{tV7qqrySq7H*q:rttlr7sm@s0V67~ts:R߽KhJeV7zZ` A\cJyALfk(6HN`Rq6r;~V>VF>~Z`D@V0,VVLV<ځ~ֺR~~AcR~`@_R@BBBZ^D.@R_F>R@AlZhi~v@mƭuA PdCpړD.ZR P1@]mriFay?KZaZ P5\ 6@ymK>b:btZ~bhVF>[VAiByV^6(@.ڠ~ ƫD.@ŒBْҡ@pҡBVB £ARÀڠ)A0<0QM`[cPnIx4$w0nsQQlw; @ yրC8/CAWQ$;TA0;yZ\?W:>~QsnAS xb`Y^lnH dw=Vq; qݟ@(ցr!-@V!Hr!ր *AnA s naP,Z@Db`N@<8:>8L r!|d l @nQ q H %@.EPXjD0.R$`.RA0,Unߜr/REA0)UAӮъ&Ѯ& &"B"Nֲ/)$`/7A/%`,ApTB$/rB! ")/qB%UVbb.ȎB,C$ .R .R! ,U ,U.RP.Q,U%/$.vD.! UA0)! U$ //))//)U!)$//)ldZTRHFDB@><:|xtpPLHD~zvxtplVxlNp}JB:z VNd\"8~0RRQXqr`ZvUrZhʚ hH uh@UaG~ϐϾ,}[SAq @R+ !BA7SSxF%_(BtF A p uh@ M Ap -plW|>x.W|>@P@A"W@AdAW`&&W|ҲW1x8y/ @X!^@L"$* @.(4:((!;4"b"Wb!A4,Ѐ~VcSrWfS8pgU44"Q,ZZRP |Ab cP>!SH& "rÐЌ2%WA0\W:W:nsS&(+"0SSrk@S`lM K-c||1 ;@ZZv`PM ;@;@LBB!kx`DAOZтS2;q@xa"S]2!u r yW&|!\A;-pWk& @!WA@Wr&@WSܱxS*W2xAZ.>PFs, ؃ZWP0_/< ;з@@8D8swRP u%;0@PHPPPX@WZT1nBWx0sk|S@SS'8!JPB:?$ ?yj E;\Rp$;ЃWҜPԜP֜P؜PڜPܜPރS>xWvPPS^ҽ[SP PSK~[SPP/S[SPPSVSP$P S=gSP,P(S=gSP4^P0S=gS P| \JVUÐǐt|0B|Ģꁐ<"&LFTf\dl}Z}&`}!ځA$ڀX9`}^CA}bjU$(,4ƐRKosV_}:r} !|J%Uðǰ˰ϰUӰװ۰߰U㰂簃밃Up0@A}Z{ 㠁码렁נrDߠǠ?!L 4A$T=)|K!Rr|Y dRy<`SZBR9&6A d>2~B7JSYqK?!ڑ¡aa((^ak `8K}`\E3;|2B|(|1BUhq:U}8 !}\J&FfȆ Ȧ(08@&HFPfXɆ`ɦhpx&Ffʆʦ&Ffˆ˦?!從Ukدتطػؿت٪٪ڪ ۪#'+/!Kh!`AXaPȁHȡ@80( mGʶOW_mgowۈGxvOpPwH@w80w( n/7۰?GڶOW_mg/x7p?hG`OX:gPf~_BVR>,`pL|:E@~X~S~x~Qx~Y$y S 1x~Z$z ([${ &qb_~_$H- ~\$|$]$} (^$~H->Xb>&bal~w4~s0|:y@(:,VUVbUAAl}gu F}`=CWF@ʑ/9)&@OKoo tOOO@!qN00"a,OOO@2o#gPDo(EUTUP 'l 'DODS Q((B]@ 0&R~.K߼@~A.@XA~UyN@~K"0~T~KQ1PpQs4|~PA~PP~aS.QTQP|PQPtSQh~a`@ QR,AW~pPx,P(q,~~~aP~`b~A@VW:~TyKAA,\L!@~s # Rߐ|@`~u Rx~s0^R>0aVw>~~~WPVRS>WVw>d`~R~;H`ooo {~T߬0!~``@L9WZagZAД`vpwUVWy~JPP ~{Jа~qAA @a/AN DAL`TpQaPp` pU$ppQbp(@@J<@} ~J,@~B~TB|@@Aa~~:$|@~֜0~@:ߐ0~pث~$p֘>;bP@x~W>lB~H>XB܂BWs߾(T@D= ] } h@Rq:qK@~B݁~݁~` ~`~`~ݼx~x~ݾx~xWw+LFӂ@~~䴐y@-tt~A|@֑@z~!}.`\~1y_ @0p$$p0H@6"]B!"B_,x~(8B})8@ Hmm!H&\@68>I8Kw~89(~9w ~:~;w~<~=~>~?@HWr?Wu<, :R'4~Y:` :`P`X$"&(* ,.""QVsAl@~>~1!<.`H2P@`NB@4@ĂsP:60~˸9fHNP~v wx~y@rQ~.@dzUKX~^4>AP51@ؾ0P~51P>1$:`qP~s6~1h`0^?PVJ1@Ͱ`@WtQWuPPV4kp~`K^>^1>~1@̱T<@KHA_@ \!\KRHPNդXNxF20Q}Cx;~ U>N`( } Cxxr$;{~N`;}xVm>`W0Q(|0D4DZA?\PW)XTTWЪHHPT@a0J@V%HLЙDY0LaZBKf\F1lhGa(rm! l(V>`}k(xV0<}kCxKHA00LA~!: 9`:@6~.@9!`}3C*Ѫ:!: : fO:Cu_:.@ t $9D00:=5<<:E44*:CH9::*"N->iiE :% ]-_l"CHV~>(r} WV: 0@&H&P&X}UUb:) AKQ:}):ᩰ.r , V~~.≰.~`ԁ}BP7&Ī a4ȪRw9:9|~b9:׀V|}N`~:hȂL /: J1REJi0AUJX :ax+W+AN`~uAJ8<;:a H;RrRk RoR8N6 A8x(@@:pA0;92д~PU:|@@::v$sP*c$a $VJ (Vs>aZ ;(VP>c /> H`?;K⹃a{K$ $ K6ZARឰZ0C}Z}{ FTf\dlN1}3B )D@ V1^11N!Aa *0=! &0L*0$V0(&0\*0dR0,V00&0lR04nK5$/0B/0|Ѱ2fA0'0+0* 00 02}Z}&}HByjA}BAP@+a@,} hH9k@}H cx}{P޴20 &A}g \} a(}$p, HCmK0*!@< B(9)@o@}9J+LAAAUh:9]G>K\JATE@H???;9J;80OO*JQ J fPUJfP:?8!|:̎ 9! !ypL@ v`}lTbQ|}WI-JA00L}?BU)?>- .P (Pg<FD!}:~A.1zT@M/@FFFJJIOTNMNIFbI0FrFpFnFlJLINNJN*K0Oj8` Ё#`'`1AQJ @Dz0" |@Q̐k 8h8K@?q ,`@U:8aP:T| Ƶrƥr-DVx}n.u-ƅq#,5qyVQT*QueH H_ A,P`ׄ08qT>|8@<0|p)ya`p@|rq| @Al8T沾T>}2`|Hq L|rp@T>H B߰}/Kxq|2q^p}/HPU)>rA| 0paT`& (T:apbq}9qT:8T^p,`a0!~1聟`T}:p qrq=b qS,dsb`a9)9 a( fc`5 =/#Ҁ aafa<U#?z}'Kx}'HQqUU` =gq`aKQPqaPFHH)@,A(@$A @AA M}{x|+x~xaH@A@A@N~R`T&VP 80&HQ|H.}H.|I.}I_KfroU#@fߕ~xQ#?&@6YpΑ֑fmAVz|f]VpfQVh]clp`6%6iLU);#p}JU$88q ,Vѐ,@}:pa})(x}pPR5~0xKHVtbp @A@(A@!VU)0Pb,a}T>bpA@ p, pHpߥ q`vq|*|"xpLt<0 TT`&`"ɐu @ma)@f H~ҧ@@ (&8BFf"qT`&|5&T8(T02}88PLBBe|xn@@@}<@@~0 |AtAl?AdX0/ϪALNDR0~A. @AA%P`&Ơ-?KTpr`8`@na`c@VA8` |#Ymp~2xaRz|c89@\p~:=%v@z mDR -R 0R E0A $@ j"i)KAW ~e/@|3xT@a@|#x@}$p`&8RZyZbHPD09o@>/៚ TwT`&}΂`rx>'>H@TALH`Tx}H.T>o}~@A}@{*F`r }+xvq@o@IUP>a s@q8PP*T`& $(rq"iq9 qa]Ksv"T, B&P|8@M P/@.v/Pn:΀.A9xfqa/ (;@ U0ʔ`<p!K.A~pfd@4vn:VVxV &Le0@p/p}8@(*aK!욁^T@$(,08<B~H/q0 // zq@p*!U/:NB hU)BU0&NU)Q0rQ0f Q0Q08Q0zV.BQ~U)vT3JdPX!lQ.q&*%:%=/p|vQ.A8Vf9

R rv@Bpb|pPPH&!gxxxxxNx|T`@|;x}Cx}>Kx|\x}saq|7L9'qP薺|S`T@T}(8.J 2" U+ |h_9A4p(.AA.@A@.@ B@LFԓf䓦dt;U|B4TzzTcTc<8c]!,PP,p;hx@di})L0Q(e^ }@d@t=}( ZQa}$Q`q@ QC pZ}6G+{@w@sA[@U_@c@g@k@o@naKfPp< |6_ZOlCp }0PP^}0 PCԃAsZB}9Q~}9W! PFf$Pt|&Ff&̑qh qC U&Ff؆ ئ(08@&HFPfXن`٦hpx&Ffچڦ&Ffۆۦ}!&})bA Ta XQPd}-BP\},b`} GB`p.QPh} al}9rp}8a}9,r}:,r};,r }<,r}=,r}>,r}?,r}0,r }1,r$}2,r(}3,r,}4,r0}5,r4}6,r8{}7,r<}0Ba3@}+PPD}#PPH}3rL  !Hav=)=L)Ky}I>QQ9p@0Pr)@n a)%@ X }CyS pP\Yr }(0W}Pqz= &B8^n}@Av&npP+``})`΀}!Ԁ``PPPPPPP`` ``````#`'`J_\S.oC˯G`K`ȪO`S`W`[`_`c`g`k`o`s`ɪw`{``Ƀ`ʪ`ʏ`ʓ`ʗ`ʪ`ʟ`ʣ`ʧ`˪`˯`˳`˷`*`˿```pdBq}=Cnp`}<h}wPpl} $p}9@}0D}1H}2L{}3}8w}9T}:Tw };T}Tw}?T }0Tw$}1T(}2Tw,}3T0}4Tw4}5T8}6T<}7bS }(rt! x9۠8'@q L_aa)rsQu вQA QQQJ֡9)< `!JJ&E:L^pʿܻY,A0p! "ڿ 2DVhzόϞϰ&A|ͤ> .~jS| XdQb&$(,f4F<8}`+`2`} `F2@ }`āP YR4F_ oi_lC@Ef|{x;AS&Ѫ@0^h.i}(.S&}(."# "| e! AqwU||0 p|p\W>#aQ|M|G@}Cxqh Jʁ+Цր}ԀkЁg} @ϱDꁑ4"4bSͽҁN Th>(A8 q ATTi:@_Th@f5jp~~xQ~Ӯ(*$fPܮ~RvZ:@9@t#VL@j"XWyQp }KmzQq@p~Hm= QLjPD~VDրI4"@V~~ٴS Pfbd?c|c+p QKˬ$ ^a >@@f$U\V V) ~x!>@beb#`jѣ!99(4@!(ڞ tVssU<}~~}L0 0((}J}(nBg5p{wdTUD!g@oR=9%WV&k.#`RHH  Hۈ 0|xЈUb.|bD޾p|AA aB |@`@0||$0V?dc@dxP00A|&Ba|TBA`BCRx0|HFn N0t|x| a UN08 ^001=?:/;<@P|```?*5.7A`8?J2aLPCcR1Z4f? ~?? ?OAA"1B'0|؂|0|A*|@@*57@07DQP{U|xBF/A@PAC1BD3fIb?OO;$OM@GAdA "6CD8P,TB:A<`P(|f,:AP$|fbTh`@8}wxh,|$cPfB|8*5>>@BQ R1tb0@b_Pb~`tb_Pbi*~`z`~`|xZ1j_|__74 /_G_X<`<4`Vx6ntp80vPDv`d_oo%o7oIo[omj>PbRrzaQ`B/pbpc0WceJ@ValOtbaJ VRaDav0NVdVa<`ppcP``A30ooon,>_B|sv0P%R1Tb~leTbcz~`tb`}dTbw$6n0Zfx`1Z}!6|$0QetUpe̐pؓ<|| ٛ@0PSjeLl8`h<_`"1}+4| 8}9.:A,!!=0a[T,>}:}D,U'>BM&>`g! "24,T>|H@Y9 `}"BMvl8?π| !!AT{~| z juq40|#x8: |9najbK1G1N!!ah3ra>PNCMhX`9  /m ``rV &8 @>|#xrn|@VDj $2uzj!)'})G@x  x&tC (1F*?_(U:BN_U8B^_}%V^nnnnn_8nޖ$|cJ1%K^9^U%@pרU%P`Uu%`P}EpU@x,d($-Rv1ES8UE@{]>^(UEP{]N^UE`{]^^}e]nnnZnn^8nڭZ1e[9]Ue@pUeP`Ue`P}p@x,d($-b1cn8U@\>#o](UP\N#o]U`\^#o]}\n$Un$n$n$n#K]8n$$j1{k9\U@"]p$UP"`$טU`"P$}Up"@$x$,$Ud$($$$$-r1s!8U@[>3\(UP[N3\U`[^3\}[n4n4jn4n4n3\8n4i4z1{9[U@2p4UP2`4U`2P4~[@4x4,4d4(J44$4-1~18V?Z>C[(VOZnNC[V_Z^C[~oZnDnDnDnDnC[8nDD1C%݋9ZVZpDVZ`DmVZPD~Z@DxD,Dd*D(DD$D-m1CEA8V?Y>SZ(VOYNSZV_Yn^SZ~oYnTUnTnTnTnSKZ8nTT1Ce9YVYmpTVY`TۘVYPT~VY@TxT,TUdT(TT$T-1CQ8Vv?"X>cY(VO"XNcYV_"X^cY~o"XndndndndncY8nddv1C9XV"XpdV"X`dV"XPd~"X@dxd,ddd(dd$d-1Cųa8V?2W>sX(VvO2WNsXV_2W^sX|oWUntntntnt-nsX8ntt 1|% 9WmTWptTW`tTWPt|~?x:rpOytuQtu9|p"~"1`^r#x :1xwr@)s9IqT1XjCx:Rx)P9IrTR؏jcx:sxwr)s9IsTӐZl/x:x)9ItT؟jx :xwr@)s9IuTXjóx:x)P9IvTد~j|# x8!Ovru9Ia"|!X^xTS}xpPF>|L HĴ}EƘ |,> XU4$6J|dTnD-#жImڑd֭ã"6{d-S Im!ã6{Rd!-#IHmã6{dd-x m8N ǿ  -MmǾǐ o3-*M2!$&m*!$&)T!$%*$ /!&-/*M/!&m/*/!)&/)/!$%D450.P8ͼ5gtcb@|gHI?`J4TJ O006OIANO6 ûMFBO@ЖOIA4ODFBO@pOI@H_ 6D VBT@_@V_iQtn_H` úmVB_*P_iQ_6TVBoPP oI@GFT-fB`oHvo aqB#dBCjɹ5BB@`>AFCF굖n? dqBzC0dB:wAFJvn øMBC|tB:wQF8Jvn tB:StUR:whQEJvn t RSDEFCCMBBʘHubRDВ(޿JP? M#(B:AC RdBBi5zDˣhJ #R:QBRrBi!DEﳨ^п Ϳ#(u>hQA?&P0:T ҳϐϥ #(5R@ѯĆPiuĝOR?M#(B'b@Pi5a] #ڵb?PQF`iDX$#:ub>?Hˁ{0}06 *B_BBU~6HU"]>6bch^n1\>hHVRx26A Bb)* v @ bb$&T!$4F T]fUm3v c Dsc DTFS!D4F T] fTm3 vc' s,"c' d(*fR!/d4/F ET]0fSm30v/*c7 sKi)x$Q}$Z }JxD֑}D`}kjxd}d-}x}xQ }Rx`}xуP>H}# e}iƘRPA$?7$-XPDwD҅PdⷠmdPAܮ,-WP?7ܮmPwܮאPⷰa}"yH4;s 9e#y Ȍ)x)Rd> LJ8J$~ Zk3kɳ3 3$nj-I=ǭUǭʒmθ}ʕTʭ22 2g6r@9HBCBB*H-UKJp*QPmSDR0jXѭ[ZA*`Acb)hAkdUjipᒁsrIx{z@|U>Pc+~p9M VPa^H0H&) hO*RF4J (^H/ftk % H- ]Om4θ H.t e#x|pH1(p$ݑ|q!0q&`F$@|rH"r& $|sH"hs%$S|tH" +t&4-+&|u!/JM+u&`F4m+&@|vH2+v& t4+&|aH2+a%4 AaU adhf?cHVt{@Rb,UJ`{C!~ad(fcV@Ra-Uk`B/acfcV@RbU`B/adgc-g;PRNblU`;Sa>q@d]g?smg{PRb',U`{S!~qdgsgPRa,gU`R.qbcgsd3ӀPAP`L q*Qr-v-&Pl:*=`$mvFU>K R})8$IMtF)OJ8DQM4FJ\Ok8dYLFkOҌ&8aMGOM8iMQG_8qMGδ\_8yLG_"#9|; $*A*FC"/#|Vj"/"|Vj"/"|V`j2/"|V@jC2/"|V j2"y|V b*F2o"Y|UilA#"WeHe}fC""Ug| Xf3c:gQ>\?PV4Z%>*A@&}U_fÄ }5HU$<$U$% ‰$j$ĉ$$*47($BTVQ$`ĉhn:%Uкy&юӃ`}$oDUD%|#UD(J Š#DE(*ƛ7±0TěQD`Ċh$DnH$UY#}DUd$|0Ud$h ‹} J( | @ 2! 9|:yf$Z&$ -$!&$"}*&$Kx})8 U&<"B&$L $P!sV"'l|h!? h@}!0||%}%fD"4&D DJ"@&Dќ" *&_DSx}J8 Fn\ [+y<:rznr,>mPrķ/%v=xK$!84p!!8&PD.L >0PB.&P@T61z!ZT@>z @v4v4zm(^ T0NR Wf|8P´6dN51RPTƀ3R@>7|:42$1E4Z|$2 ltѲ0. 0F-|4AC0IE<*5 015 06Fn-AFEkADf&9r3P$TF>(Az!DR F)1vA50 0&WaNZ 0aNUZ<6TOZQAz!H 2_D_V_h_z_ kJ 0dSFOZSDK|41LCBB*D 0QSaj4RgRo4BTAjb@L'8G 0ki"YjIr3bWRZ!~i"_ˀ_:VjWc#^_lf~] zPRZ!Gh Rdv,z6Gf g ^opeLC~c>6sahoo|eoch`g!Z|'A0|!|5~@P(@ZKPMP|#yAJ<@|@C8@jJ@|#|<@VJ'2E QI:'fRLn 0<6W~ڕ 0`iѝ0@:!GfH^ By$Iaj2Ia%jڒGdByAe~5 0:#aeAzWGڒQbAC1 060bP0|1_@AȺbBq cWPv|hA8@|%* @m!<|cXP&v|iuė/< BQBͪԹ պ0Bqr/xg3A*Ū`<!2|},'|<0PL ZzPc;xɪA88p0@ž/(@|@W|/,;Ӝ @p|4|:0\>o|0~Tpe3|1|ߦ(PT$@w>T@>|1|J- |8Aߤ߶|0| A0ALݘA28 ]U58008v0QY1vf1%3u0Up1T2L0&o ZUz!N~aXu9z9:ynyy nڹ %2:> 6w`i"R |C5b<8،~N~ R:'_خ__XTT詄8:*G_r0oT ^rp|00I8crB0zAgZ@ !^C^|*+9-iT>HE^<614cAM 8c !|c8TЏID]$, )TWx!%$u,)SDmBPP~\=>%TЖhG.1~AP{x`>9|5N8]nSFt3|"x\>|0\0"xTX# T`RB56w\?LTe$ݲ2{\lO$,L4POA,ZO,L>D.[Yၪ.PDn ?₆pz[OOT ]h_0SD#ޞR1p C~[$R%ݲr~ZNsm~40b/L_BTV?z䮞TPnQᲁ>a|\(>bQacdڒ`h a\0`A2cRno(>aAkYByNi^i:aNo`oog@@l` Wg| A\8q"Ar[b61'YrT~pq|p||c*pqT~q|0@,$(0AKuX%.nc:btsAScvQqAr40|0Xrf.BR8Q|``|wfniBiVsv~}cWPv>{!y|m8qq5|\01L<|ఃNW c Lc,0|u"tyq8VAǚu2q00q|81 8o\(?Ʊ@o#xMT"xv Ƿv{u2t0~n A48Đk0<(8g+xFM*x|81V(8Ƙ#x8Đ<=0|(0 Ƅƌ̟UܪSqdwpBA|s0_rqzsngps\>>1pU$ux򡌺q{hqB'т?(TU01 .*oA(nhӥ$ذ<<Ӱnհ0xױ߰T@.+xnޡa,{cŬ&v|;0fcXP6xS~M7 TTqolx"Qc]<oP|xxdSжdSc.!Q.;ʐ(%ϢPt#;#NP6҉QTȄP~aD| >!KhQQz0Š!/@xz0`voAR"x@Q"RՂ&Quѡ 30RdP(7TO@p$(.l0V0|APF6|! OBAOZx ɂdOӱAقOfO`PO4@z~ObA[N|yN颲 @TN@<NA/NtA>/N\jV/NlO/SM/$@ 5)"  5t ) 5i"=) 54@!U) 5b} 4LA5$n/)5/`/LOLlcDž|W|&T| .P.\7aARL08PYZ0 v4OPZOlK+M;bKqf O[avArxsBQ2_D_SxsgKYPgPAPPUUPPPPPfPfgfg`a~8pH~:tJ8qR~#V8rR~CnV8sR~T8tR~Vt8uR~V`8vRu~nVL8aRa| g8/8|# x@GA(A,v0A4A8A`6Z[GC8cAӄ&@pwp@Iqqrrrq<@ J/k rzw&;0/ #>R`2>r#z, LG>4(d > L=:/l*r Z&&  D=є/$Q;$|/QPJ$H1b1rA|Pr@TIn<:I^s0P>Vp4ET‚_0C<]:> rĞQ0NQV12‚4n1|05"Y1EVp E1^"4gPP;cK@c~KĩfQ`R@@~fɑA AM ^:1?_]\T$XS S` af a``"`&h_3U a5!}?A`>%h9Nd:TS?QU mNQBxpoHjv"p@&| kx|8@TP8.8aT=| |"Ta2Pt18]cm``a _z` P$a(T΀# `^+8 "V3U|x8+ L`pafaR1ppppp`$|#"48KȠ/UgT~|c+`/ }0uP0C@X2 7w/@$Aa90ꄸ}ISx9@9}$4})Rx]) >}@}J 0ꄌU)~}$Sy@atm$@e)@Ta }#11XrBܠ;݋+, @r{d@09k/u@906}kx9ka }jx]}$dX},ΔUrZ eˌ͕$nڑTN>v}@o9k?5;}Urf8AӨ|bx}`PrA擿 0!d@ʤ2y|$bx|2x}h}a9`@>A'֕fF`=@UK }h[xQ*}c0}k15,nXq`}`UnBߜU=QD/T@@/ eI49Ja(1)e)}1aU䯿栰qB ``U>ҁ}d4U0A :.UJ(U$|@/= @*"Bt|8.ܺ8IUß8Qz\1e,"|;x9 9@l.*XF9G9 *D.`48@~8(f`}*T'5?BhʁAT-*`DI'H48C @_|(E栤evҲ0µֱʁ1۴})@t굒r~zB0ʁA@KP @hrTZ_̄5QSD fÀ߀2/U8C|}D<0}&(0|3x8%,+x}&<0^ 8 |14h͂Td@,8hU&|8QFQ$>QzMLAB}M?P},IbR.0zv|0!Jؠ);iంL߼At ؠJi^t`}JP~]IQ_Q "JH(U䀷+1H^ e ,0}F0}J#)J#xT` P߄N |O|h++!*Ar0<}F>#0UD|| |xPa۰]$d @`FS_x}*,0LT~PB|cPdTDM O< D<ky|#x}$Kx|#x0P}*x6]&>29$6?|R U&~nLk|<@}@OBBA0A]$~k @@K@8 iJeǐ6 Ⱦ=/ 6TU{0}Z h}2qA |Q9|P|i|(|h}Gkx|)T~| Ia})`vѲ!J}J!|c;xvߕPτ"RotANZWR^KUׄ=*a|`!!"!J U$7"˰!0v|i#hr !F(%10v 0`)@|0UmG !A0. #D!N㳂@ NQ?]*@^JV#|P_U0v$x|IU|3x|#x5>|gA)>Po| Tj~PTAa  `@|i+M怀|U>|HP|!TƀQF@ @|0PTcp|c0|B|(0`V@^@}Ci}#h!|1AZ|8c}-P|18F`ru`BBT| XQVRXT|8P|:|.p.TA~A*}2@8B7˜)7>Qn\fzA*P}]D<&apmb|mxU=+}pA@@D5 `iATd|c"ip}" ѰMD]Pfb@?H}#Sy*$B &p4@*q*vp,H)p9 ( 8-40}GdpJ40|SxAU&>U)@I@}$H||1UJP}P`|pDLP}$I`x.iڑnALq @QUJ ?p<z|JUnAU~|JU1,|@Tu@Ĩ@~ѷ}#: >(NPI;x|0Q/| 6|M&V|gi1U|1a|#yr)hV/WJ^`0@AApTbU~Fa@|p:T@q:1`T@Paa~1@'p6 Ns%P@ ڠޠ4^TV'::18}`9|hPfxΰuzִ$|?쎥| Z)3 ; 2U6:*26:*@ |PG(4)4&bf8 !t#|@8K”C p€JBlѮHUTK@JU,PS̀*XUԮ[eZe%j`}cebeτh}4!eje)߄p}RAser pi+x{eize֠ffp\f$H<0&Pd*|3ܮѓj$4!I$);ABPUdi{⿁Ґ῕ῩT{6AU|4 "AhF>“KUqخ &KP1j FP=l:KNX f<P,z^ 6|P^q P%^1#Z-Pl:!KN#mKUPAڀ N!FpU7| F~ Fpx"1PF!"Jc䠂TTc~!Q>\?PM 1Fp4?}i@}U0~&1` KDU$(^!U$"("u!!U$$A"i"1!"0?40Q$ 4(1D.6?)@'U0~10i0UD(|20UD!Uh"2<"D$!)"[A!!p?4[@QD 4(1.6O@U@ Y̦AZ@i0Ud(!pUd!"!U|"d$!h"Q!!O4PQd 4(1a.6[_@=U_P~0fQD PAU(!UU!#!#"!'Q!!?5Q 4hR-7oI4}U`@&a`Pi0DU(!UR3*!3$R7a!R?5`Q 4(17o D'U`@a`i0Uĺ(|b0U!RICbUC$!QiG[q!!O5[pQ 4(18GDUpPYqZpi0U(!pU! S!*S$!)W!!A_5Q 4(1mW[T'=U_~`ft q}(KxH}HS}h[ }{c$}k<}sT}{l}I}IiȁЂw }؂$}w<}j}}Ё}؁}}݋}(}0}(}0}X}0}X}X~0}x~P~py ~{D~|~г|0 ~Q~qx~~L~Ѹ|1~rВ{~x~w$~Ҹ\|2w~~w~Ӹ<|3t~Ը$|4\~ո|5L|6D~w|~(ސw~Hw~hВ$~\~@~ȸxw|(~ pw<~)xt~I~iw~~@T~|)x~ pv~*x4~Jl~jȢ{~w~@w~ʠL|*w~ ~+v~K,~kȢd~~ްw~ˠ |+D~ |~,8~Lv~lȢ$~\~X~̸ww|,~ w<~-8t~M~mv~~XT~|-w~pu~.84~Nl~nȲ{~v~Xw~ΠL|.w~~/u~O,~oȲd~œ~ްv~Ϡ |/D~!!|#x@Fnʉ| x|EnM|x)xƠxƀ&x`~F~pp#pCpc܌pЃЌzpУČpø[|#nz׫Զؼ:KX014L0R4@Ӻ0s4404(04048!6rӪ9ѐҐϩӐҩԐҩФ<ҩĤ֐ҷ֩VU輆!}4nʄXU.}C|h}@U)p#ް|i|(UJpC|j|Ukpcq|k|UzpȁY|lUpЁA|mUp؁)|nUp|oW8P,++@\@ATg>O|9T6 T6|0PT; |8Pv! E,Ptf|*PBN WEJ8PV|d_ſF6|:v!P'>~pfv¯F4T{P>A |P{6~P>!ޖT>%.~|!PvBB8wpv|p|d8qP|qXP8rPu|rX<8sPa|sX(8tPM|tX8uP9|uX8vP%|v~|8aa.:A`BFN`rT!@ V%4 Q $dN b'Pr%~#2's-V!~ hW$D.|sSD>O@n0^01Ln0z1NvRdxcpcWSe~Sg6Se81e+pef%|hP;@Ō[M qDhia` :Aaa1A|0.Na^0[;Pv FX\FHTdPLG_N\?Z%0ٔqrmx{p@ };u,A(t |r aM!Tp~r1.~L' xMxu"@)1f;xNcȽbpvp1@'^0$f1Va H<1Pׇ>F 1|m`3M3vv*ݝ.!CAPQ0!eɥzMҁv8*An!haq\f1|c:%Հ cWP6A8A~`XA|8A1Rf18T; .`\1KB0jHpaRwj@u;K! 0~/A$@8p}JQߨ@݄t@AHS$D2c{}0W{"v}.>+@,$p'(@&A^0 `uQf1MBNUW?vXB&HULBFH@BfHU4BH(BHUBHBH AroNCyJ}&KšY}F9Sše}f[šq}cš}}kš}sš}{šO|5vvƒ:Rq4`|t|F`XF e`qF8n]AbaP66r NVa(@J |0|0 @A08@0N|<* >0*N|,|(@8 8BW>8@^0OB:Z:b1W'W99q UacDž|`P|&T| .P.\߄7+c\NA<T{F6V|! ĴW48`dc\c>|cP:@0Wk0|&1P'8P{/zP1N.B3Z:&? DN1!10^0N|V0cXAPvVaf1Ƴ&v2VaT( $| PP VxFDl݀Ӏ畄 $NgAׂ, (| @@䰠-@K8f1 xİSeSg `;x|+`LW̰c;xg:$pPy7vv.7q@7<L`Į"||04{pA|*K| TTP>S{>Se>J$@P>>FXSdз`cpdv|bՂ2rT`5^0:VT=q`v!V3^0SMy>M!VaAʐN˂A ApL A8`lc9M@PK8 @|0x//n ΐk1/aNT֡ϳPE1MSQl^b1:$lڑfEW&p0 L'@8P| .hR|!.b1OۂP~?PW94?L`.qW$>| A=]iA@pȀa+wўܰKX|?Pt` 288 2&0ϰaJq> 8`0l:0ct*0Pq~Jq| `~o`@Ptk6`8W# L``{&!S300@"Αc@0b!`T0@ p$0|0h00l`0d00t`08Vpq`|?0;1*00|i=8.1aD61*0H1&0J0*0V0 J0*0 @$V0J0*0Tc V0(Pcfr|DcNB1PF0Pz&0`cN1Jqb@*0y &0,J0*04V0hVqd(>n 1Jq}S/&P<@DAh;&qF HN!c9kZBpN PM!:%T:8.B!Gc/a;Lt`Fa_T20FS4:hn~x~%xΠ~1!,z~@aK~ B} B|B@>K|pB,dcTc4@lV4|PT~" T?(5AHՐ|: |5=l>>&ޮ˜4L9L1L!d`!   Ơ$Ơ(Ơ,<"̌DhDɘLpDlƘ\<\\ƨЬphh >ȿܰ4``טDL``ʿT \ݷ0ه ,@0Y`0cr rrcr8` r@r@`b"rݨ@&~$r@}GS} @H LPBg*0* 8 `v0(A0ց~ 8>Q&ߠ//|q@r@\A8@DAf ~bVrAUnЈVP^hpA6O>j 8.qK8`dch~Lr1Mx:B :!J: : : .qK\T<.. d\0T|88\&>} 0f }&X|@A|&04p0~@A|"e~~0@nҒpBtw.~ Ќ8$ 4\~|0|dⅿ n#{a(|0A TcHP.W{~@@|$ |.;|c$0rZẦv0pJA.088`gf @B8cf ,Q|&TG>‸΀|0<@%E_e w_ %$E(e,04`# ^u@ϊgցW+/3U7w_ЁCYG6KOUSW[_)cv@0fMJC.qK8>1* l@]2OOޓBT=1S#.B@9a8!Py.|` ց"MJMBB; OP~MgJK`F{V!1Ku8!2`ldg@]A鐻P``ց8|ïŬ‰`\<}` D^2C BPP>/ /. |j:FT,/0Lf (48dh/~6І3xa!jsUԶPLR(K*P/P@xxQ.a{Aa! K ;w|QLH#T@@K}t pFa LaP ‚q[6/p$Wt#0\@]P 4P8P5>1"1T6`t@W +0/03070K|c?WSev"Q4-T3 02"1*9#T6B9c 8V5Ш`U`И`U`Ј`Е`x`pUp`h`V X`UP`H`U@`8`U0`(`ЪA`* 0 0н` Q0 0@ 0@ 0@ 0@ 0Mp* 0$@ 0(@ Ր 0 04@ @ 8@`@Ha8qBbcN 8"QO|cBX|Xl|xX\CQxIUHb3S!|?;x@QU,PuXPebݘ 1|#xva8@,~aKaqc$@c68KzP,<,`P0e(`,L*ltd>`c^b[i_`,U?0_48<U@DHLU?P_TX\u`d?PbtΟ(:L^pʯܯ$6HZl~ƿؿ 2DVhzόϞ .@Rdv߈ߚ߬߾*/P/b/t////////??(?:?L?^?p????????OO$O6OHOZOlO~OOOOOOOO_ _2_D_V_h_z________ oo.o@oRodovoooooooo*<N`r&8J\nȏڏ"4FXj|ğ֟ 0BTfxү,>Pbtο(:L^pςϔϦϸ$6HZl~ߢߴ 2DVhz .@Rdv;   (*:  ,8 hH,~*Ah//x@X @(xWc8 |c .` |h:N 8` *N`;c04~.\|wx}Tj| xTz|c3{xK*Ϡ2.@`ƃ| > $A@ BlN&9s/ A$ gu|dPTcdcHd8,(|"8` A0@|8ZxP2T*Pd*|c+x?2A@ԃ ;fB} O|PZ|c:bJfL |Y|c"djfY2}|` A AuQf5;ބ@|l||8c!L,;H{, 6/L !L!txHuT/Z!Wc>.WcAOX8 @Wd~.AЯ.z HZ%/;8A8 v!B| ~"A 88WcSc~!H\ȶ! /}-(K;# M/ ?&*0_Wc~r n!Ar AA4 Ar AA 8CKj#x 4AD;)0@;3Ă!!,*0H f'>oWd>2.8" *}*;\AA< HZ%`A ;$!@-3t(Z/XOOYQ"A A;BdA1C!+ )K6 @A !;+DA ;1O @:|_x;b\@pZO _b+tD l@P;7p@0;<8O qK9nK ~@̾@;E|CF՜J_ @H oAxCx@V@'L_ @:O9pECAAAߴWdBP4A;ɨ^P!@2'/RW@P }balBd^P`@߄At3P8}KWd?:"f? =K";,f;:9P1_<8m `df;8@!;Ha(;A ~@,AP5B`0Bf@` b8sA!@"Z+i02x>p|x./fWLlDCAr`8$f>p~Pr ;Tc~A|r ^` 3|.*/0*@_\@Xf.0 >pdWc2/B/D A,@;-S48*')0`pqHC!x>p`X"8x"@' KWe8.I@xq&bFĮCy8nA~eALdC?@a;8Z`0JmD!Wcta!v"Fl ``r @@;Yp8U}qFH&*<$JH@@AV`u"pr`zva2f؟We~.' X^q:&CX}N`p:@.Nu/Na` ^`q΀mAN;ax~sWWcq! A^`YAP`pY @@Av!:r 9ꅊ,!^`#!|.VLl2^qfqq:1@^Ad;]_@\2TsN*!@?@qBdvp0v!@`*6KlnK;;A`AFPU@<`ؾ0`mВ$30?2ݺ"`Z Bqqq0ez0`tX^qn!azq !rqJ;_p`0#z1B|ڭ*T>/@/xnT~|c$0Ad@` |x˰>P#ڰ ޸۱۱8 lWe|*. x.0B0>hA rrq|* hٜ"3d J¿U&Ƞ2Đ:@Vݠ,{th&\2Prq h~>.B+V㨰@7n0V㼰8@4d̰WK$hdʻT ;AU`n`5A26D &9KnЉ tc`LlN=OZUPzФ`dp~ 8raOSdva8ۋ+zp`]reKVC"`$2!C.` ;-=@ a*!I*;39@19ZNoOXʡ`7p!'A0aGyHhCI\ D=HBA jz2p We:;?=D*)`#DfN@4}P15!MK%<F8cy*ǀA* 2@AA3ՠei`1{+8t0BFq@ցFp|A6L0P&.&< N.U<wJ\.  a2wJ\n 7/ //./N/r)n-///-g`T{^|c"|c2~N &0Yd229&&0P>T5B&0|JE5VCLpTj&0@(&0P >rD2*fIT%C rNeM[pX)rRlLK@PِUd^tlftPlbpU4PpbpD^tftUPpfd|bpĂeoRon@lbpȆsP0_PXb`8w|eiaL:cp6]PF`88"ia1*Qrmb|Psv0hyF}\UP__`V otPaU0]0 eedaolжnooPda42ePNop)aհ *QĢpPȢp!a PKS5BPjؖnAUl^P JR6VB6bnMTbԐpL\*,P<21 kNU0`]u$rЅ`T tk$N`0Je8fh4c@fd2+QNaQ¿20\P$0,8T(N<^(,6H8pu:: J< 0  쪲倏PPPo2: !{0*0{00g1PՐPPP| .2!.UPPP2_00000R01PPPݨ2"2#.QPPPQ`A31#@U0#@0APPP33dP`3p}4T>U>|||@}@`Q Wd|.|:|N 8{ D^P8-8 DWdvSdǑ<@A8DBI@A@A@A@A|(.H gReT>nP/4q+x>y| ]QB :RiFf@|*S`V~6*T@.AT`dIc@0<0P1_We~+Wf~+@p@<`bp}PWc~g@A P4AP>`HWdbP@PT2dA݀P>aS3`KWd>/AWf<@` )}4p`!EaX@Tq4K̺-WfbSwf΂be`d@Pn`~We~M ~(8L aPgnchL2ab bgLb\`BP`d>phʵ`~|(~lp}}|`0P|cGa__X`cg@ٜfcٔgWdSd;^` q<{bghWcp`~ap躐AWp.łaP8pA*4`Banhz`~eJUx@.KءupF@+gAoc@ bq(aea<a։dc`}4Q>P(hC4qQVX`heg֒7Wf*pz`vn-@y"ZbɶZb^qJR |~0PPe:0HLyZ-RK/`Qq:1 .A@|h0gtdt/k@|! WGeb^Z5*5@Y|Se܀lKU`x~9}GvqW5d`a~&Ů$2aP(BcYH ,ƥnb?`4qT`,x@} ԺpPFfgVΗ262IZu`aYYһWcam`"` .2܀(Zu.2ņ.Sc|&WC>|P'8P/zPTe؄TzȄPeTcD| |aU>Pp$A#8aQ&͒&a\&0r`6`4`&T| F@HL@@0PaB*4)\>`F@6Őd҄anJ|`0^qz@u5tҵC&x1`2eYrl!@Zp&̶:Z@<8c\p#0c#4p?rq:1#À10#80kjsh37;CG8p078!30031J84q*PZqֱaQ`UՓL &VU.aP4K!~^ie@!д Sd+\h@IJA8}a+b!j^kϙ!8b"W/gxt}!~@j HNc!1Fa1@5`K, .P$`I Q !} `WemaJxZVO9Âa`A|bKA?!!65ë `t32. p.0"2w*28APy!67-`!;We\`eb~m!67ͰH_ LH5aq00PP@q8A8!P+O@a`cc\:QBܺ0X#!أWc԰;P@J0<&!W@6H]436@X($RLDK}D ~B|!B~ @} up|h@@A|c,90!0QSAO}ELBAkp}aG|c-;E.!m&Wd"2i& `gBP"t>TFS;^"1s;^8.0 &XX^! s g&="Ns&櫶x/'&& X@BPTT#BPq.kBPԨ򋰤"1P$` &J pEKʶ@_&bTPZud .8.Q"2T!PM,2BP[P5Ŧ`Tty'MBPĢԀ4aBPB^qYַ`c_ԹX,lJZdf}ᦤM!&567ɰe u&&5Jp>wb?t3~7A `QALsbҼeQ̖8v0A4&Ѐ&WEPl>쐧&1F~܂Q@P0E䂀螉~솉~ AEfG&1D' REL&G'2K'lBFG'RK'bD- jC' rH,~OD G|c@hBcUAPh>}4|#4ETc>?T8hl@Uh;ZSH>U>TZh•SE SC S,|FΑs}aPꑾ⑰_1X->_PRE0*Z[*0XvS*[YQַ࠮*6*f[voaqoV! >Q*E nRaR&hobXd02{ }|twKŜF'f`|a(Nyεx>buL X$Úº9oWdn{9n0!3GqRPT@.fMȀ**р8*$qB+E@$](E[+2K+ N+=TI+u+rH&xGØ޽UʓFSESC"F>sӌp0CGHg\#g-l`8QP؂]a@±-=m -܀aj-%`f`f`6o'-),¡0-ضDF'-ռ>0VSLKP^#-JQj $u j -H HВ#-e9^0 \/da')#%\",P?$:|w21KQI0-N;^0pt?P0,RP(1:i.@\c*?cb*8@}D~P|(P~!P}wD@~#P|`C- ,|emrvS1F_1P\_n[1EZS<[1,e"Z>1 ]K1:1!"Z& ''1P.k+`*TJo\o,noi=*Y#?eK`@Yb~$-Ԗbhd8s/|iqB#ن 5h$2wa*M"*B$t!Ny,Zupyp!0ŬXhf0K+wKE> MR0WA͡$J0Nr4Vh112Æ1@P|h&@@P˜Α` +^ߵ&b4pvS4fί4ZG_4$P4bS4}pY3 V/an/a!KPf_*ȂP:ȩc?K/bdd4s}it%B#Y .dM2w9PrPB$x*a%nXYXĶSQ0ń]XI؜V̵?ݥ?=ݥ`HϰݙAfIO׬C@@FB L|(PPG.E6E Uw -XE!6|ґ}x8R|xR||A$||5| P(@PŀM |cyA<`@|aА#xN :.Te(@A@|ڙš0||0ޟF p HLXKWcֹ?g9(< Wff4b.|c2T(4@A5AM@9,綄0g쀿Ġ9Nj9]2|"T~8@vFq$Wee4b/xޱ*8,|eP8c8Aئ9:“@K=4U>EAY@߱Ԁ=P=ЗWd1VA΂2>ԒT#(4Az4; R `rMz~>ܖRz 2 6"0ZEF?ar*ǧ?? ^PpW:@KFAVr`q Td>|" 8Tc~|;q 8*`2@hOۂNOO8BFPD $.`~ OA$  0c ~(~ A AOBO?OO|`& O9BO*jm`l@ߝgAH~laR8Pl ߄A^X L~SD^@FP I P$}"0 5 T0" XbYqQ \~A`e\E 0MHWAhAVL0>?P=Щb7ݶ0d@ lz8pbeFPAt4x%1 @H`kKp~ӦhRa.<Pj=3qv6ePHd"S H2P*}ByP}PB}P*]Ͱ gIH5SI)04_^WfI@tljȉrwITnkȩФsIXRp`Bbh`iIfSJ<йJ@޿6 q6 ϸǝ"τy-aEWϬir>nnX,PǝPK`]Q5@KԆн0,3YAr+цh@{K|tK K0VAYe1ƭU,ЀtDt^|cArR5uHb>jPWc~ V06p`NQ1xRQ.1T~@@gLT\(|de2Lb8\(>P>^Kf%0Lsŵ"<2w`@\|8 P\(Sc0L/b>` 8fScք`^rzsU|` ae`L_BTe>0|! `cXBę|HgN35r|eC00 zDS|0PWe|a*w\DgSs+"Pv4ĎEaP1B_0z0.RdPz0B`DH}Riy1̒_<_0 ABz0\< _ZJm4U0zRk|AAU>U>Ux`Ph`P`cF>UUUc`c|Hਪ8f42Īv?7@\.We^A{|1gWD1.WHSkPPOYqqLjQbuWPNpT8T\(rQx%W\W`rUNp@5@K@pQ:A2x>xNpp1&1VttNWSCpNp|Et rjNpp{NpdphlsKlmO4u>xDNp(BaNpWB6zQWDWWz@K5 !W&}1IVWEYq^q1pCp|wNpvWU1WZ"VtȊ1Ep@@WЮpX.tFܺWΜޜ4Npp.}D|hU=}pTz gZ@b߀|cdTdP>|txU` PF>|}apPhTz脆ܡ>TzpTcTܡF0aWd~/{ NkX@VـXDf:c@$.a6`U?.Fҫ.fߵ@֝XV㕩XЩ}{u}5ҰuWcwWfb@:Wczĵ鷀gYĕ`vDa!Y|P>Wde IYv{YT>惔qRF@ǞzΚgYBgYfvgZ}Šx>~8!|C|!p0~hWdx{Wdֺ8[| .v|߉T*p flB m|K'eyZeֿ|`c}aA=@8`Ѫ|`OB@|3զ`cѼ 0׻A'i@ ɂZpZlZtZwZx8Z@}|@ZX@@ZhZL"B p(|A (@@T:@kA8G@h|@4|(.L!;(!!P\!A JђAaA (M H pf1в$* J_A ;8ly|ZZ| 0~ZDH0j0 2pp!P4p|< |.T |"|[Up@# 'p etB#:| 8ߧ^@Ч_0|(.T>|iLЕP"U4vZ@$"fl P :Adc-2T~bKg^Dw^H~ P#xZ'x"P_|3xX" V$.r@w@bs/ M`@xtTF62A@A@vɂg0^l^^p^`( ^|0 0 0  ^H @^B&H0 T0 L0 P0 X0 \4/f&_$g``".A:ў8a8A  0Q0 # jQ6`[|fPPd-` b[x30.pKY` "*a~ 0P87:0 b9KUx=p;9о2g1Ӕɂ@`#````p@`}x@a@ax@ a  `Ba@:ga/8zAa9P>~(gcL8e|(PP00qCKaPwS0@@&D ʰ4Tc:|c<KFT}t:DMau@@BAS9cD8NDcL>LBѤ00aG p 8bZKU p Pؒ o*ڱ_|#xPTUTPP 1Q cD >~Rdc\CKx9 d?k`pAt11$/Aux  pc (`Ac MPT|fP8cPd 30aQ6bC0a@_X| PJpJbC0*xox}?`c#prox'p`5ƬgƼ`|2v//d0Pddhzp @*eP@g`mBe$ai|G4aQ.btPH&1TA``>22p&QxS}x x ,SM|# M*! S$4` ,JZ ZZRP~R0< hv|`1a|lڰ|L,N vᨸ// G0$~A M @gtưmPDuR<ʁ`l`/䀅AM M#++3@W0OT`|zAZ|GMq|u8`d|;x j`p`r8p(P|*A(A@`^r|' S܆`t`/ +tT(48@0L~|fxar/ԯ r|rprt`rlPtp|&T|[p`x*|4A T 6|: &+0GǑ? z@ @Aфk {ƑT4a@,ObМ&,8P+ԣ) jd>ư\8 <|<0O 0(|(x|1-@5|L([Pܐ|񐀏`ϥ|/sְ|4dHVn a0704<װGR<׌LB“ʁA׈N_Zx~lґw^//+f\n`TaׄH求 `e|}PdH a 'k.8w0 0΁K ,`0 4ґҐ6` @ tx~Pz`"@vW:<W|,0|.|3x|.&D`8`<|1 @VK@~&l.+*pAdA\@\ ~ @*o@a~0@*TTfAA|*opAHTf:|0nTe(0*/TB@fD0rT4~(@A(V.^|*t2p~0(>(|縠|~<0|x|xTXĠ&Pe$4Tc;~ Thp*@䠠 ~LpbJ1~$r~ 8P"P  t8l2q`Pbl"x 0r#xAMݑ" L~DPNPT"|P  ~|;xrLKР]Xa@:Tn0`Tc8됂<l+x8 ," "`yd = B `~ F B `B P!8d8 d c@d`!2qDynamic Recompilation by Er Traut, tuned!Bob Abeles``!#///?#?5?G?Y?k?}???????? OO1OCOUOgOyOOOOOOOO __-_?_Q_c_u________oo)o;oMo_oqoooooooo%7I[m!3EWi{ÏՏ /ASewџ+=Oasͯ߯'9K]oɿۿ#5GYk}Ϗϡϳ 1CUgyߋߝ߯ -?Qcu);M_q%7I[m!3EWi{ ////A/S/e/w////////??+?=?O?a?s????????OO'O9OKO]OoOOOOOOOOO_#_5_G_Y_k_}________ oo1oCoUogoyoooooooo -?Qcu);M_qˏݏ%7I[mǟٟ!3EWi{ïկ /ASewѿ+=Oasυϗϻ'9K]o߁ߓߥ߷#5GYk} 1CUgy -?Qcu);M_q//%/7/I/[/m/////////?!?3?E?W?i?{???????? OO/OAOSOeOwOOOOOOOO__+_=_O_a_s________oo'o9oKo]ooooooooooo#5GYk} 1CUgyӏ -?Qcuϟ);M_q˯ݯ%7I[mǿٿ!3EWi{ύϟϱ /ASewߛ߭߿+=Oas'9K]o#5GYk} 1CUgy //-/?/Q/c/u////////??)?;?M?_?q????????OO%O7OIO[OmOOOOOOOOO_!_3_E_W_i_{________ oo/oAoSoeowoooooooo+=Oas'9K]oɏۏ#5GYk}şן 1CUgyӯ -?QcuϿ);M_qσϕϧ%7I[mߑߣߵ!3EWi{ /ASew+=Oas'9K]o/#/5/G/Y/k/}//////// ??1?C?U?g?y???????? OO-O?OQOcOuOOOOOOOO__)_;_M___q________oo%o7oIo[omooooooooo!3EWi{ /ASewя+=Oas͟ߟ'9K]oɯۯ#5GYk}ſ׿ 1CUgyϋϝϯ -?Qcu߇߽߫);M_q%7I[m!3EWi{ /ASew//+/=/O/a/s////////??'?9?K?]?o?????????O#O5OGOYOkO}OOOOOOOO __1_C_U_g_y________ oo-o?oQocouoooooooo);M_q%7I[mǏُ!3EWi{ß՟ /ASewѯ+=OasͿ߿'9K]oρϓϥϷ#5GYk}ߏߡ߳ 1CUgy -?Qcu);M_q%7I[m/!/3/E/W/i/{//////// ??/?A?S?e?w????????OO+O=OOOaOsOOOOOOOO__'_9_K_]_o_________o#o5oGoYoko}oooooooo 1CUgy -?QcuϏ);M_q˟ݟ%7I[mǯٯ!3EWi{ÿտ /ASewϛϭϿ+=Oas߅ߗ߻'9K]o#5GYk} 1CUgy -?Qcu//)/;/M/_/q////////??%?7?I?[?m?????????O!O3OEOWOiO{OOOOOOOO __/_A_S_e_w________oo+o=oOoaosoooooooo'9K]o#5GYk}ŏ׏ 1CUgyӟ -?Qcuϯ);M_q˿ݿ%7I[mϑϣϵ!3EWi{ߍߟ߱ /ASew+=Oas}xK }$ wt}D}d d}}T}}DKl.d.\J.T.L.-<.4~n<~{#q4~Cq,~cq$~q~q~óq |# qcnKk<,  :K_|:1RUs8!nmvm~mmmm|mtmlmdKWXnhnnYpnZ xxKln\X.ܾԬ(ľ(m(P((()06)h&)5U=EMUU-emmuUm}mmmUmmmok\$Ԯ#L$Į#"!")#R$s*$$$(&Ul5l=lElMUlUl]lelm-oqV$n4|n4!RqW!14n3+X44kp1Z.ԀK4ҴV1($4\443)D<DtRD45=EUMU-eml64>4F4xN4pV4h^4`f4XcqKi}0BClDC!B A!BCRDs*DDDC&lBnkvk~kkkkkk>0q KTpRpRnSUDTȆTAqPVAQ8`1kuTX.ЖԾT̾TfдT-DФTV4ДTTT|TtT5=ЪEMU-e41軨pb਒pbػpbШpbȻpbpbkpb.ddTTϪT-DϪTϽ4 ddd%dtnv ~mÝ0tKRu0pr}0pr pqASr0rmtT0ʠrSpqV8ÕtV.TδUKtmssssss h 0*8P8}088P0+u0`\obwbbbbb|btb@ (K CЂ}$w (|ݮ|0|ݒ0|0|ݔ0|0|]0|0PppQԥxоR(n1`T`|0P̭@.̴̾|hqm@80( cşK' 0(8P8}088P0)u0`\nmv~؎ЖȶtKŁ́Ձ݁ѡ#|pڱ@,|q0$|r0|s0|t0 |u0|v0#|a`@NpX pOOmڈޣPlmcޣRH.UTTUxph`XPHU>K%.&,6d6Ĝ6.'e VDV-(v ~𮀬K!Ł́Ձ݁ݡ#d6\>TFmLNDV<^k4fLuq}qѽM!MѝqNR@pPUTTmUU@1#50$=8E8M8U0%]XeX-hv`~mXPH@80KŁ́BՁ݁ݡl#6>FNV|^tfKJuq}lqKKqLTu0pNTUT8}$wt}D}dd}}T}}U]5$=$UE$M$U$-e$m$]6]>]F]N]mV]^]f}] nK!#>]\vT~LD<4,u0nKHnhnnI@u}pJʠx3\pLXz4Ԭ1S44wPwp0h&5DĪ=DEDMDUDĪ]DeDmD\u\}\\\\J\\!}"1"$ "!" 3U1$R$s$$$(&\5\=\E\M\U\]\e\moqF m5Mp2!qG!1mP2pp1Hp2R[p1JdTԀKӱp4TT´VC 4D4|4Z53$D\D d5d=dEdªMdUd]dedªm%Pv$H~$@$8*$0$($ $upKMBmAmBаA!BpA!B S1DRDsDDDC&Rn[|v[t~[l[md[\[T[L[PpKDpRpR]pQEmTETAqPFAQsZnSHUSdddUddddUdt tt5t%ttT5U=EMUU-em5tU=tEtMtUtմ]tetd좮ddeʹtttTTT4-Ddd%dtn@v8~0d(*d ddd-ˠKAPpqBTvtpqCur}HrpqDrd5pqF48sTt=մݔoU#tms s s s s s * 508mP8}088]0m`\Qppppp|;ptpm!(K BЂఁ$ }􌁾(|Hw|0|0w|0|0w|0|0װ|0@@pp-pAjxnB(Q`nD`|0Pd@ݴ崼|i@80 m(   mpqp@0p8mP8}0 88P0m`m\nv~؎жȞ ɠŁ́!Ձ݁ѡడp#,6$>mFN V[^f@>up}p??0"p@РppUBԺԺԺպԺԺVxph`XPHUm$h.,6d6Ĝ6. VDV-(vm ~&Ł́Ձ݁ݡ#d6\>TFLNmDV<^4f ѭ@p@KU$H50=8E8M8U0`]XeX-hv`~XPH@M80Ł́Ձ݁!ݡ#6m>FNV|^tf:uq}lq;;񝱹<Tep>TնTΓΓ4ljΓLd5$=$E$M$U$]$e$m$E6E>E FENDmVD^Df}D@eKuPU!}Pp#>Dv#Dm~#D#DU|tVP8nhnn9@}-p:x3C0pFU }Ph06ep2Mp2$@p1724p1844upp1U:dTTTղTT D04h44&CDHDDT5d=dEdMdUd]dedm%ܪv~̆Ď$ʖ$$$j`KMBmAmBаA!B0A!BS1DRDsDDTPS&BnD\vDT~DULDDDFN Vn^fP. p}p//Јbp0Рpp2ԪԪԪԪԪԪxph`XPHUDP.,6d6Ĝ6. VDV-3(v ~mŁ́Ձ݁Bݡ`#d6\>TFLNDV<^54f,uq}qѽ--ѝ.ѭp0.UDh5h=8E8M8UP]XeXmmhv`~XPH@680!Ł́Ձ݁ݡ#6>FmNV|^Ktf󭁹*uq}q+!+񝱹,ѡRmPp.UU,dS ]5$=$UE$M$U$-e$m$4|vC4t~C4lC4dC4m\C4TC4LC4Peq UBm0ڍ#>4 v~C3mC3C3C[3C3ܦC30e@K(nh nn)u}p*x33q,X444444lj$L$d5D=DEDMDUD]DeDmv~|tl|g KՕp"0!ֵ"!@"p!" 31$R$s$J$$(&,v$U$~$$$ $^fPg`K&mPp2Mp2!q0'!14Pp1(Dmp2!q0*dUTTTTTC D ZD %D 43+ (D`D45dU=dEdMdUdU]dedm55TU5=T5ET5MT5UT5]T5eT5mPiKMBPAmBаA!B A!BS1TRDsDDDPC&Rn$v$~$U$$$$%$@$pRpR]pQ%RȆTA&AQ8m`A4HnS(SUddddUddddUt tttM%ttT5tUEMU-e4T,T$TTT TVcddddŴʹtttTTT4 dd-$%d-d5tEMU-emdud}dddddddddŴʹմzݔ唞Ucktssssss r 088@}08U8]0@`\꤈ݑppݓppݕp|pt)pm#р еUѐЂఁՠ{$w }(|H|0|0|0|0|0|0|0 pp-p!ԥxn"(np`n$`|0P̮@ݴ崜|k(@80m( f@ 088}0 8 8P0@`m\nv~؎жȞ ѠŁ́!Ձ݁ѡЍ#,6$>mFN V[^f@up@pЈbp РnU"ԚԚԚ՚ԚԚVxph`XPHUdP.,6d6Ĝ6.e VDVm(v ~MŁ́Ձ݁!ݡ#d6m\>TFLNDV<^4fuq}lqѽѝѭT@p U[U7UdP50=8E8M8U8]XeXmmhv`~XPH@680!Ł́Ձ݁ݡ#䤶6>FmNV|^Ktf䭁uѰq}q!񝱹PR@pUWrmR5$=$E$UM$U$]$e$4n5|v5t~5l5ds@{@@\@cvq  ȵ !݀4444444&4Īn$v$~$$*$ܖ$Ԟ$̦$_PKnhnnu}-pxT}0pX824@444|m{(<4,$ 媝d5D=DEDMDUD]DeDmD353=3E3M3U3]3e3K!B ! !!="#n$v$~$ چ$C2C2֞C2C2@vpKuq1}q1q011q0Y1x2Vp1X3TTUTTT[|tlUd\$T$L$]D5d=dEdJMdUd-Eedm$2<624>2,VF2$N4V4^4 f4uvKA@!AB@A!@!`A//?#>161>1F1N1V1#1f1cwKupR}pRpQuR}R-pQR40nS4dddjddڼU54$t5t=tEtMtUt]tetm$05T0=T0ET0MT0UT0]T0eT0mQ@K!bababa=bOO_#>/ܶ6/>/F/mN/V/#/f/a0KuQqq}QqqQqp@QqQqQqpQq4/Mpq4Ŵʹմݔ唎U(tsssss5sޅh*508E8M88]0`\nۤvۜ~۔یۄ|nt$рЂⰁ$ &|Hw|0|0w|0|0w|0|0װ|0@pp-pjxn(p`n`|0Pd@ݴ崌|l(@80m( cŽq5088p88]0鴵`\nvm~؎ЖȞ&ٸ頽Ł́頾Ձ݁頿ѡడoo#,6$>FNm V^f@p}lppРUnԊԊUԊԊԊ[ԀxpUh`XPHUh.U,6d6Ĝ6. VDVm(v ~mŁ́Ձ݁Bݡ`#d6\>TFLNDV<^54f uq}qѽ ѝѭm0pӸ.Uh5h=8E8M8UP]XeXmmhv`~XPH@680!Ł́Ձ݁ݡ#դ6՜>ՔFmNՄV|^Ktfխ uq}q ! 񝱹 Rep4U4-߆}ѐ{}$t}D}dd}}T}]}]U5$=$E$M$U$-e$m$m|6t>lFdN\VTV#LfEoq!`U ` @=#>5tU=tEtMtUt]tetP@u0p}pppp u p-p pR4P 44oԬ1sؾj44P؈0Mh&٠5D=DUEDMDUD-DUeDmDu}UUEpq}"5!"!@"U!")#R$s$J$$(&[5tU=tEtMtUtU]tetpPep2pp2!P!1mP2n34J4S!3TԀOKq4TTop344l44ܖ3DLD-d5d=dEdMdUd]dedmdU64>4F4N4հV4^4f4c?qTKpBmAmBаA!B5A!BTCRDsDDDC&Bncmvc~cccܖc֞c̦cq`K`pR`pR]pQERTAqPAQ8`pYAqPStUtttt+TTT4ˀTT-D|RTtT5=EUMU-emmwT6swL>swDFsw`KbUabada=b#vvvx~vpvhvm`vXvPvH`KFnsTvtpqu r}raqpaqedvpq4sU~Ŵ~ʹ~մ~ݔ~~U(ȵtssmsssksΝz508E8P 8 8]0e`\̤ppppp|ptpm%逯 B Ђఁ$ }q􌁾(|Hw|0|0w|0|0w|0|0װ|0@pppjxn((A`n`|0Pd@|ݴ|||m(@80m( [F 0@08P8P 8 8P0u0`m\nv~؎жȞ ѠŁ́!Ձ݁ѡoo#,6$>mFN V[^fɽ@up}pЈHpɅpUzzzzԵzzĀUxph`uXPHUP[.,6d6ĵ6. VDlVm(v ~ Ł́!Ձ݁ݡ#d6\>mTFLNDV[<^4fAuq}qѽ!ѝqѲ@xxxxxxøUP5P=8E8M8U8]XeXmhv`~mXPHc@0BŁ́Ձ݁ݡ#m6Ɯ>ƔFƌNƄV|^tfƭuq}q񝱉񭴩u0vvTvTvvvߴUpU$UDU]dU.UUTTv5$v=$vE$UvM$vU$v]$ve$v4nhv`~XPH@8c  B` ``&n#mv#~#|#t#l#d#\#|qcKWnhnnu}pxSpCX82tq4tTit4tzpw,U$$UDwUdU]UKU "5Dt=DUtEDtMDtUDt]DteDt4oݨwݨݨx}d,K!@"@!p"@!"!"((" """"('nCvCm~CCCCC*C`d)@p2Pp2!)@2Z4n344SY!)@!T1-$rTrTrTr}C11<}{$K114}DS11,}d[11$}c11}k11}s11 }{R1145dr=drEdUrMdrUdr]dredwr4owwww}1@KCpB}1AmA"A!@"AԄ(PfFfNfVf^fffXKpqmxrpq@uraqaqprdf@pqU4snŴnͱr`5nݔnnUtsmsss[ss#h 0ʍ8E8@88]0e`\nv~|tV &р  uP!Ђ$ &{|H|0w|0|0w|0|0w|0|0pp-RxЮ(p``|0Pnd@lݴll|n(@8m0( ۻ$f@ 0ȍ8P8@88P0iu0`\nûvۻ~ûûضûЖûȞûMû頝Ł́頞Ձ݁!ѡ}Pࢰ#޻,6ӻm$>ӻFӻNۻ Vӻ^ӺfӺ@pp@pЈ"𠲭ԺpUjjjjjj픴VxphU`XPHi.,6dj6Ĝ6. VDVm(v ~mqЛŁ́BqМՁ݁qНݡqОl#d6\>۹TFLNDV<^4fuq}qѽB핱ѝѭ hhhhhh픲UP5P=8E8M8U8]XeXmĸhv`~mXPH[@8&Ł́Ձ݁ݡ#۷6>FNV-|^tfAuq}q!땱q쥱Ru0ftUfʹfffUf-fTfTfdUf dfdfdf%dUf-df5$f=$fE$UfM$fU$f]$fe$mfmdW6W>WFWNWVW^WfWcWL^rDc <^4c ,^$c `r2rVV 8a!V.3V63V>3VmF3VN3VV3V^3Vf3VcYncZH|~tc[lhdȾ\c\(TL3^]$dtUdʹd4d4d4UdTdTdTddUd dddddd%dUd-dd5Dd=DdEDdMDdUDdeDdVmdV6>FmN3UV3U^3kUf3U m !$!!!u !} !UpUhU`UXUPUMHU@!8ncULvcUD~cUsX4FsX,NsX$VsX^sXfsXqKMbmambBaqa5aJbcRdUsdddc&bnpvh~`XPH@8p)nsTvtpquraȉqpqaqdgxrt4s^Ŵ^ͱr5^zݔ^^Uktss۪ssss*508E8@M88]0`\ݑppݓppݕp|pt)pm'透`Į𰁑Ђఁ{$w }(|H|0|0|0|0|0|0|0npn- jxЮ(p``|0Pd@\ݴ\\|o(@80m( [f`2508E8M 88]0`m\nìvì~۬ì؎ìжìȞìì ƐѠŁ́!Ձ݁ѡడ#ެ,6Ӭ$>ӬmFӬNӬ V[^ӫfӫ`up}pBߕЈФԫpZZZZZZ픤xph`XPHUh.ö,6d6ĜZ6.÷ VDVĶm(v ~m۫ƐŁ́š݁ݡ#۪d6\>TFLNDV<^4fܠuq}qѽѝޥѭ`XXXXXX픢.Uh5h=8E8M8UP]XeXmĩmhv`~X۩PH@680Ɛq!́qš݁qݡq#6>FmNV|^KtfuPq}qەܥ񭴨Te޽VVVVVVUrU$UDUdU;UUU5$V=$VE$VM$VU$Ve$V4nvx~mph`ۋXPH/K借 KU,턋mۊض&.m6>FۊNV^f@up}p-ٍ ڥܽWShi$T4T4T45T4TT DTDTDT%DUT-DT5DT=DTEDUTMDTUDT]DTeDTtT,$ 3SU$$$$4S4S4S4S4S4S4S4SDS DSDSDS%DS-DS5DS=DSEDSMDSUDS]DSeDStSu$S}$S$S$S$S$R$R$R$R$RTRTRTRTRTR}}$1}D2}d2}2}2}Ď2}255dR=dREdRMdRUdRj]dRedRmܼvU}HcŅ`BABUAŠBbAB FNV-^fаauQqq}QqqQ`@QqQqQ`ԥQqcֽ]tWd%$NݔNN4(3 3CmCCC&Ct5N=NENMNUNj]NeNmvCۑ~CCCC|CtClncMрAaaBAсaal$CCۑS SSS&m.S6S>SېFSNSVS^SfSauQq}qyqэqqqҥqT`vTP̟pAULݴLL4ې33|CtClCdC\&CML*5L=LEL-UL]LeLmvC~CCmCCCئCqK!}AA~aaaѡaaCCxSpSmhS`SX&ۏP.SD6S<>S4FS,NSm$VS^SfS uqq}qqqύqqQХqTҽTUͤtJԵJJ4L3mD3<C4Cێ,C$C&C$J5J=JEJMJUJ]JeJmvC~CCCmCCC{pLK{AA|ša!}aa~aHC@Cm8S0S(Sۍ S&.S6S>SmFSNSVSی^SfSuqq}qqхq͍qѕqѝqHqѭTmQнTStt=HHH43m3CCCCԸ&&C԰5HEUHMHUH]HemHmdvC\~CTCLCDC`bKy@ℽ@zŠ{{ݠ|CCԶSSSmSӴ&SӬ.SӠ6SӘ>SӐFSӈNSӀVSmx^SpfShupp}pp@ppp̥pРTqνTt.FFFU|U$rUDtUdlUdU\UNTUUF5$UF=$FE$FM$F-j]$Fe$FmD|vC{~C{C{趎C{C{؞C{ЦC{/K@ K w@x`!yݠzD{C{xC{mpS{hS{`S{XS{P&S{H.S{<6S{4>S{m,FS{$NS{VS{^S{ fS{upp}pppɍpppXpTz̽TzSiqϪ$D$D$D$DJ$D$D 4D4UD4D%4D-4D54UD=4DE4DM4DU4UD]4De4Dm4Du4UD}4D4D4D4UD4C4C4C4UC4C4C4C4UC4C4CCUCմCTC $C$UC$CtC-$C5DUC=DCEDCMDCUDUC]DCeDCm$C-dUC}$C$C-C$UC$B$B$B$UB$B$B$B-DBTBTBTĶSScmccc&c$B5dB=dBEdBMdBUdBj]dBedBmd@vc̴~c0c(c cccpK!sA@tšAa@uaAݡ@vAc4cssmss&sۅ.s|6st>slFsdNsm\VsT^sLfs DCuqqQ}qqQq@ōqQqQqb@ƥqQtCȽtT̛qpaՔ@t@t@t$ssm [&$U@5@=@E@MU@U@]@e@mۄv~xpm$Kqba!rŠbasbݠatb Dmۃ&.ܶ6>FmNV^+fdupr}prаaÍЈrЈrаaĥРrU\cƽdʹUe>ݔ>>UԂԂ U%-U>5>=>E>->U>]>umu}䂅䂍*䂝䂥KoLvѱpš(qqݡQrU U%-5=UEMU]%emuq}qѱщшѱ¥ѡʍĽ̟Uq<ݴS}FS}NS}VS}^S}fS}ü@uqq}qqхqq ѕqѝqqҭT}mPT}4Tt}}$88m8443,3$CCC C&CĪ$858=8E8M8-8]8e8mDİvcĨ~CmCĘCĐCĈCpBĕc4Ki!jklD0(C SmSSS&S.S6S>SFSmNSVS^S+üfSup}pọ䉻ἥTl㾽Tõpt-666{UmU$lUDrUdUUUSU$65$6=$6E$6M$6]$6e$6mDlvclx~ClpClhClm`ClXClPClHc K!ghŠ͠iՠݠjDlkCkSkSkmSkSk&Sk.Sk6Sk>SkFSkNSkmVSk^SkfS kup}PpTkTSjq$4$4$4$4J$4$4 444U444%44-4454U4=44E44M44U4U4]44e44m44u4U4}4444444U44343434U34343434U343433U33T3 $3-DU3$3%$3-$35DU3=D3ED3MD3UDU3]D3eD3m$3u$U33$3-3$U3$2-2$2-dU2$2$2-2-2T2T2TwSw|Swtcwmlcwdcw\cwT&cwUD25d2*=d2Ed2Md2-E]d2ed2mdwvcvm~ccvcvcv؞cvzcvqKcA@dšA͡@!eաAݡ@fAdvvxcm,svhsv`svXsvP&svH.sv<6sv4>svm,Fsv$NsvVsv^sv fsvCuqQ}qqQD@QQ@QtuCtu]T̛rpaՔ0t0t0tususuumuuu&u050=0E0M0U0j]0t0mu`vuX~uPuHu@u8u0uKaa`bša͡B`cաaݡ`datt؈Ttttt&tm.t6t>tFtNt|Vtt^tlftdcuqq}qq`qq`UdtdSt tʹs-.ݔ..ssmsssssx&spt5.=.E.M.U.].e.ms$vs~ss smrr{rưK_J~`͡Baաсݡblrrrrrr|rt&rml.r`6rX>rPFrHNr@Vr8^r0fruq}qmqஃzq̟rU,ݴ,,Urrqq Uqqq%q-U,5,մ,E,MU,U,],e,mUquq}qqUqqqq]^_Т`qqpp ppp%p-p5p=pEpMpUpJ]pepmаu p}p𰡯ЈаР)pаpиp***4o3o3omCoCoC[oCo&Co $U*5*=*E*MU*U*]*e*mDoHvCo@~co8Co0Co(Com CoCoK[AA!\AA]AA^ADnȶCnnSnmSnSnSn&Sn.Sn6Sn|>SntFSnmlNSndVSn\^S+nTfSnĬuQq}QqѭAQѕQѝQQѭTn4mQTmtUm$(((U(((( $U($($(%$(-$U(5(=(E(MU((](e(m$U(u$(}$($($U($($'$'$U'$'$'$'$U'-'''U'''' $U'$'$'%$'-$U'5'='E'MU'']'e'm$U'u$'}$'$'$U'$'$&$&$U&$&$&$&$&-&&&{U]U$|UDtUdrUdUݤ\UTUU&5$&=$&JE$&M$&-]$&e$&mD]uD\}D\C\D\D\D\D\@WBX͠YݠZD\ZD\D\pS\ TU\T\T\%T\-TU\5T\=T\ET\MTU\UT\]T\eT\mPup}p@PT[PT[\PSkq$U$$$$$$$$$$$ 4$4$4$%4$-4$54$=4$E4$M4$U4$]4$e4$m4$u4$}4$4$4$4$4#4#4#4#4#4#4#4#4#4##-d##T#-###%#-#5D#=D#ED#MD#-D#]D#eD#m#u#մ####"t"""""-""jT"T"ThDShsfFsfNsfܶVsf^sffsfDuqQ}qQ@QQ@XQtf|CtfŀR̛spaՔ t t tfmsfsffff|Vft&f5 -e= E M U j] e mf vf~fffeeeưK!Qa`Rša͡`Sաaݡ`Taeee Temexep&eh.e\6eT>eLFeDNemcFcNcmVb^bf bauq}qbbb̟sݴbbbb bbb%b-5=EMU]embub}bbbbbb MAA!NAAOaѡDAPAaUaaa aUaa%a-a5Ua=aEaMaUUa]aeauQ q}qqQПQqqРQ)am`и`4`3`3`m|C`tC`lC[`dC`\&C`MU5=E-ŪU]emD`mvC`~C_c_C_C_֞C_ئC_qKCKALA͡MaANAD_C_mC_x_pS_hS_`_X&S_P.S_D6S_m<>S_4FS_,NS_$VS_^S_fS_ ÜuQq}qqхQQѕqѢĞQѭT^ĠT^Ġt^T U%-5=UEMU]Uemu}UUUUU $$$U%$-$5=UEM-]Uem$u$}$U$$$$U$$$$U$$$UNU$MUDUdUrU;UU5$=$E$M$U$]$e$mDMmvCMx~CMpcMhCM`CMXCMPCMHcKG@BH@͠I`@J@DMmCLCLLSLSLضSL&SL.SLm6SL>SLFSLNSLVSL^SLfSL@uPp}ppPP ppTTLWSlq$$U$$$$ 444%4-454=4E4M4U4]4e4m4u4}44444444444444T-%-5D=DEDMDUD]DeDmu}-DմTTTYSXSXcXcXmcXcX&cX5-d=dEdMdUd]dedmdXuX}XXVcXXXCBBADŠB͠AE`BAFBdXWWW UsWW%W-UW5W=WEWMUWUW]WeWmAupR}ppRARpRpARtWDtW^D̛tpaՔtttWdsW\sWTWmLWDW<W4&Wu5=EMUj]emVvV~VІVȶVVVV@dK!AAaA`BAaA`CAaA`DAaV`VXvVPVHmTV8V0&V(.V6V>V FVNUmVU^Uf UcuQqq}QqqQ`QqQqQb`QqUcMUtʹU%ݔU(U UUmUUT&Tt5=EMUj]emTvT~TTTT|TtTl@(K!?aA@A-\AABAT$TmTT TSS&S.S6Sm>SFSNSVS^SfSauQq}QqQQQĝQQS`ڮSP̟Ut ݴ U SSSUS SSS%USM 5 = Eĩ -U ] e mSuS}RRRRRRQ=aa>AA?aѡA@aRRRR RRR%R-R5R=RERMRURJ]ReRmаuQ q}QqQQQQQQͤQ 4QmL3QD3Q<CQ4CQ,CQ$VCQ&CQ 5U = E M U ] e mPȶvCP~CPCPmcPCPCPCP@LKC;aaaDPHCPm@CP8SP0P(SP P&SP.SP6SOm>SOFSONSOVSO^SOfSO̮ÌuQq}QqхQQѕQDQQѭTOmQTOttO= %-R5EMUU]emuU}UUUU $$U$%$-$5U=EMUU]em$u$U}$$$$U$$$$U$$$-U>U$|UDtUdlU}dUrwUTUU5$=$E$RM$-]$e$mD>vC=~C=C=c=C=؞C=ЦC=K7``8@9@b:`D=C=xC=pS=h=`S=XS=mP&S=H.S=<6S=4>S=,FS=$NS=VS=^S=- fS=uPp}PpPĝPPT<ڮT<SUmq$$$U$$$ 444%4-454=4E4M4U4]4e4m4u4}44444444444444մT t-5D=DEDMDUD]DeDm-d}--DTTTISISImcIcIc[IcI&cIU5d=dEdMdUUd]dedmdI@vcI8~cI0cI(cI cmcIcI@K3aAa@!4QAű@5aAa@6aAdHcHcHsHmHssH&sH.sH|6sHt>sHlFsHmdNsH\VsHT^s[HLfsHDCuq qQ}qQ@qQQq@qQtkGCtGTW̛upaՔtttH$sHmsHH HGG&G5=EMU]emGvG~GGGmGxGpGhc$K!1ba2bŰa3ba4bG GGGGkTF&F.F6FԶ>FFFNFmVF^FfFdupr}prarrarFՀaFdʹFemݓEEEضEEEmE&Et5=Em-U]umEdvEm\~ETELEDEDFDNDVDx^DpfD`uq}qщѱQQDD̟uVttUDDDD UDDD%D-ë5=EMU]tmCuC}CCCCCC -aa!.aa/aѡDa0aCUCCC CUCC%C-C5UB=BEBMBUԕB]BeBmа~@uqq}qqqq qqЀqRBаBTB=ttm4B 3B3ACACACACA&CA5յEMU]tmDAvCA~CAmxCApCAhcA`CAXCAP` K+aaB,aa-aa.aDAmCAC@S@S@@S@&S@.S@m6S@>S@FS@NS@VS@^S@fS@|@uqq}qqхq}q ѕqѝq~qҭT@mPT@4t@}ttՔ %-5=EMU]tmuՅ-m-ttՔ %-5=EMU]tmu--zttU/U$.UDUdU݄UUwrUT5=EMUU]tmD.vC.x~C.pC.hC.`c.XC.PC.Hc?K'@@(@@)@@*`D.C-C-S-S--mS-&S-.S-6S->S-FS-NS-VS--^S-fS-xupp}Pppy@pPpzPT-|TWSnqՔtUtԩ %-5=EMU]tmu--ttՔ %-5=EMU]tmu--ttT:S:|S:tc:lc:mdc:\c:T&cU:U5=EM-E]tmd:vc9~c9mc9c9c[9؞c|c9qK#aAa@!$šAa@%աAa@&Ad9c9xc9ps9mhs9`9Xs| &s9H.s9<6s94>s9,Fs9m$Ns9Vs9^s[9 fs9CtuqqQ}qqQDuqQqQq@vqQt8Cxt8T̫vpa{Քttt8s8ܶs888m88&U85=EUMU]tmm8`v8X~8P8H8@88808qK!aB`"ša`#աa`$a7m77777z%T7.7m67>7F7N7|V7t^7lf7dcr@uqq}qqѱ`sѠqщqѱ`tdtj7dv7 tʹ6ݔ666m6666x&6pTt5=EMUU]em6$v6~66 65m55K! š!աсդx"5555m55|5t&5l.5`65X>5PF5mHN5@V58^K50f5ѱpu q}qqѱqщPщѱrmr4ஃt4tW̟vwݴU55U44 44U4%4-5մUEMU]Uem4u4}U4444U44`!Т ࢪ4433 333%3-353=3E3M3U3]3e3mаnup}poЈаp3аr3и3j423232C2C2C2C2U&C2 5=UEMU]emD2HvC2m@~C28C20C2(C2 c2C2KaAAABAAAlD1C1C1S1S1S11&S1m.S16S1|>S1tFS1lNS1dVS1\^S1TfS1luQq}qqѭAmQѕQѝQnHqѭT1mQpTS0t0UU U%-5=UEMU]Uemu}UUUUU $$$U%$-$5=UEMU]Uem$u$}$U$$$$U$$$$U$$-UwU$|UDwtUdlUwdU\UTUr$5$=$E$M$U$]$e$mDuD}DDDZDDЦCBP`@@@Q@DDDUT TTTP&S-T5T=TETMTUTJ]TeTmPhuPp}ppiPPjpTPlTP̫Soqo$$$$$$T 444%4U-454=4E4UM4U4]4e4Um4u4}44U4444U4444U4444U-dTU-%U-5D=DEDUMD-D]DeDUmuմUtUU-TTmT+DS+s)Fs)Ns)Vs)V^s)fs)Ddu qQ}qQ@eQQ@fQtk)|Cht)lTW̛apakՔttt)s)ms))))|)tJ&)5-e=EUMU]emm) v)~)))(((=讠Ka`ša͡`աaݡ`a((((((]x(p'j-T(\6(T>(LF(DN(&mF&N&V[%^%f%a`uq}qabX%d%̟a(gݴ%%%% %%%%%-ܪ5=EMܪU]em%u%}%%%%%%B AAAAAѡAQA$$U$$ $$U$%$-$5$=U$E$M$U$]$e$^uQq}QqQ_QqDq`Q$mb#и#4#m3#3#|C#tC#lC#dVC#\&C#M5=E-Uj]emD#vC#~C"C"C"C"C"ئc"qK A A͡B AݡAlD"C"C"xS"pS"hS"`"X&"mP.S"D6S"<>S"4FS",NS"$VS"^S"fS" \uQq}qхQ]Qѕqѭ^QѭT!`T!`t!*U %U-5=EUMU]eUmu}؅U؍ؕ؝ץU׭׵׽UUU $$-%$U-$5=EUMU]eUm$u$}$ׅ$U׍$ו$ם$֥$U֭$ֵ$ֽ$$U$$ִ}} x} p} h} `} X}P}H}@}8}0}(} }}}oB wB B B B B |B tb P (KmPŰڰ   \pAD$ݒ ݔ .P.6P1=Q1EQ1MQ1UQ1]Q1eQX1XDnnBY@ݠ[ZTR \P1],Wx@$$Դ}Cx}0Kx}PSp}p[h}c`}kX}sP}{{HS}D~08~P0~p(~ ~~г|0 pA^pA]x"x"x"x"؂x"Ђ]n#]/c2 "P"Ű!P"!\#D]"x"p"h"`"X"P"H~0]<~024~02,~02$~02~02;~02 ~02$AVup2}p2$W@ 2ݠ2!X2pA\#Z~0\![,3.CT5| $|݉2|2|݋2 |2| |B|B-B|B|B|B|B|B|B|ZBn\v~Uxphc$KABPBŰAPBAk\D\@UU&.6U>FNVE^fݠATupR}pRDURmT UAVRDXTY`RUdjtt43 3 C C C C m&C .C 6C >C FC NC VC ^C mfC n v x~ p h ` X }P Hc/ K ͠a@bŰa!@ba@bkԀZD      & m. 6 > F N V ^ f cRupr}prdSrݠraTraV aWuUݔΪ4 4 4 D D D D %D -D 5D =D ED MD UD ]D ZeD mD v }DU D D D D D hnXc @@Ű@ЂX@D  DU T T TTU%T-T5T=TUETMTUT]T%eTݠPup}p̈́QmQDRTUՠȒUUݴu(tU tC &.6>FN*V^fnuU }     (Ka(aaa    Z%-6>UFNV^fޣNuqq}q qͣOqqDqPq`ޣRPޣSqɱU4L3D3<Cm4C,C$C&C.C 6C>CFCmNCVC^CfC`ȶv~mpLKaaaaDHm@80( &.s6sm>sFsNsVs^s6fs̮Luqq}qqMѕѝqqNqѭmqqPtQͱUȶ4T3T3TmCTCTCTxCTp&CTh.CT`6CTX>CTmPFCTHNCT@VCT8^CT0fCT(nTvT~Tm TS[SSSbK@ ⅰ DSSSSmS|StSl&Sd.sSX6sSP>sSHFsSm@NsS8VsS0^sS(fsS J`up}pK 򕰈pL0֭tRnNRȢnOͰTƴ}(P})x}*p}+h},`}-X}.P}/H}0@}18}20}3(}4 }5}6}!n$vB~BB BBBB{K@ \!pa}dBBRRR;|Rt&R.r6r#>r+GqdNr\VrT^rLfru0Hm}0pI0bpJ0sLSM,x344Ĵ}C N}1Kx}QSp}q[h}c`}{kX}sP}{H~@S}<~Q0~q(~ ~{~ѳ|1 0paN1paM2x"3x"軂4x"5x"[6x"ЂM2@Kv$B#"1 "!\#|D{0AM1"wx2"p3"wh4"`5"wX6"P!"H~0H1M<~1024~202,~302$~402~502~602 ~!02 Fup2} p2#G22p1HР2;paLn3J~80Ln3K,83ST5dTLD<4&,.s6{>FNV`^fnvL~ІV>mdKABBQ@BAQA탷`L8PH@80&(.6> FNV^fCD`upR}pRCEQ QRpQFРRd}THCIͰTRttt4U44D DD8F0N(VC ^CmfCnvU~쎄䖄ܞԦmшK ѡ텄|tld\T&L.@68>0F(N V^f>uq}qͣ?@щщq@TnBnQCɱԺԺm4SScccC|&cmt.cl6cd>c\FcTNcLVcD^csTFsLNsDVs<^s4fsѬKqѭt@VnAmAոSEREREbDbDbDBD&bD.bD6bD>bGawDNbDVbwD^bDfbDnbDD݄~bD|bDtbDlbDdbD\brcOKm0 ŀ⅐Հ cD CDbprCrCrCrC&rC.rC6rC>rCFrCNrCVrC^rCfrC:u0p}0 p;򕐈򴝐p<sC8n?͐T}H@}Ix}Jp}Kh}L`}MX}NP}OH}P@}Q8}R0}S(}T }U}Vk}Ancvc~c씆c쌶c섖c|ctcՀ (K m0ŀ \Ap!mcm$cs sss&s.s6s>s,GrmNsVs^sfsĮ8`u0p}0p9 p:t}2Kx}RSp}{r[h}c`}kX}ҽsP}{H~@~28S}4~{r(~ ~~ҽ|2 {P!>Q!=Rx"Sx"Tx"Unx"؂Vx"Ђ{=0K!~$Ű"1 aՀ"а!\#lDP1=Q"xR"pS"hT"`U"XV"PA"H~PH1=<~Q024~R02,~S02$~T02~U02~V02 c~A02 6u0p2}p2#722p182ۂ[1LFDNtFmlNdV\^TfLn@v8~0m( /$KjKaaѹ`!aѹ`avm:T&툶.|6t>mlFdN\V[T^LfuK2mu}qqc3qщqqpQ4ѡqt6ns7qՔݔ售44D DDD%D-D5D=DEDMDUD]DeDmDuD}CDꪕDDD@@ő@~8p@@Ђm@@DC TTT%T-T5T=TETMT*UT]TeTmP0upq̓1PPp2HPPp4譠p5PȒմݴ崬utt&.6>FNV^xfpndv\~TLD<4'Kݵ޽ѱѡѢܪ&.6>FNVxj^pfh.u0q}qͣ/щщq0ѡk n2nQ3pӪԪmT SScccc&c-6c>cmFcNcVc^cfc蔶ncvc~cmxcpchc`cXcPc K۵ܽ@…!@µа@¶dcmssss&sж.s6s>smFsNsVs^sfs,up}p-PҕPҝp.Pҭtu0tE4n1PԬԤԜԔԌԄ|tldJ\TDU<4,$U *ܞԞ̞UԧԧU U%-5=UEM]Uemu}U䧍䧕䧝U䦭䦵䦽U}h0w}ix}jwp}kh}lw`}mX}nwP}oH}pw@}q8}rw0}s(}tw }u}v}anc$vc~ccm ccccp K׵m0݀o\ap!]cܤcܜܔs܌s܄s-|st&s-@0qE5t=t,GrMtUUt]tetu(m}p)PP0p*Pt۝,t-,x344}C .}{3Kx}SSp}s[h}c`}kX}sP}{H~@~{38~S0S},~ ~~ӳ|3 p!.q!-rx"sx"tx"ໂux"؂vx"-0KIյ!m1!|$#@"݀!ؽ\#\Dp1-wq"xr"wps"ht"w`u"Xv"wPa"H~pH1-<~q024~r02,~s02$~t02~u02~v02 ~a02#&@up2}p2p1'P 2P2p1(P2{1,n3*~x01,n3+,x3STl5TSSccĶcܼcܴ&cܴ-26cܜ>cmFc܌Nc܄Vc4_b<gblncm`vcX~cPb,c@80(PK ӵAԽBBQ@B݀ABdcvr,(ss۸s۰&sۨ.sۜ6sm>sیFsۄNs|Vst^sl6fsdB$upR}pRC%RRpQ&R`*pQ( nS)͐Rtttm$ &.m6>FNV޼^޴fެnmvޘ~ސވހx֞pm$'Kmѱ`ҽaaѱ`ab`a Kޅ!* T&.6m>FNݼVݴ^ݬzfݕ$K"0qq}qqc#щqmt#qp$ѡqc&ݍt'qՔݔ唞44Dڪ DDD%Dڪ-D5D=DEDڪMDUD]DeDڪmDuD}DڅCHڕDڝD*Dڭ@@ϵ@)н|C(m!Ђ@@DDSTT٪%T-T5T=T٪ETMTUT]T2eTmP uPp}Ppp!p"ٔPp$Pp%PȒմݴ崜H@m80( &.6>FNV^تfnv~mHKͭ@aѱѡmD<4,$& .U6>FNV^f q}qͣщщq ѡn"pn#qɱԚԚbԚTd2dS\cTcLcDc<&cm4.c,6c$>cFcNc Vc^cfcmncvc~c؆cЎcȶccظc=lKmѱ̽aaѱaaadhc`cXPsHsm@8&s0.s$6s>sFs NsVs-^sfsq}qqqmqѝqqqѭtו tEn!qUUU U%-5=EM]emu}ԗԗԗ 䗪%-5=䗪EMT]䗪emu}䗪䗍䗕䗝䖪䖭䖵䖽䖪}Q }1 x}1 p}a h}a `}A {X}A P}'A H}/a @}7a 8}?a 0}Ga (}Oa }Wa {}_a }ga ncͤvcm~c͔c͌c̈́c|ct|c(Kǵ@Ƚ`ɭ@\naMc$cc ssSe&s-`0q6sc>s,GrNsVs^s6fsĮuPp}PpPp0tpṱ,x@344}C }4Kx}TSp}t[h}c`}{kX}sP}{H~@~48~T0~t(S}$~{~Գo|4 oawaaB{肏aa؂aUm3q`ŵ@B!ƽ"`"$e#@!\#LDAAxApRhQ`QXQP'Q{H~/q<~7qO4~?q~Gq$~Oq~Wq~_q ~gq#uPp2}Pp2p1@2P2p1v2Qn3w~Qn3O,3ST5TTT d dd4<',B5dT?b\GbTdObUd]dedUmdud}d̅d]̍cc̝dU̥ḓ``õAĽB`BA!BABjdddr s˪t%t-t5t˪=tEtMtUt]tet˕P@`upR}pRC$RmTpQРRZtCtˍTQpRtttmτ|tld\T&mL.D6<>4F,N$V^fm nv~莣ඖ؞ЦΞmK`@aaѱ`a`ĵqamxph2TXP&H.m<64>,F$NV^ fKuqq}qqc@щqщqqpѤq͵0pqD0pqͱqՔݔU唎44UD DDDU%D-D5D=DUEDMDUD]DUeDmDuD}DuʅDʍCʀUʝDʥD̀@ @@-C`QµPDDuT SUT%T-T5TU=TETMTUT]TeTɕup}pPpHPmPpдɢPȒմݴ崌uttjˀx&p.h6`>XFmPNHV@^8f0n$v~˭ PFHNm@V8^0f(uq} qͣщщDqѡnnɱԊԊTDRLRTb\bdbɤcɜ&cɔ.cɌ6cɄ>cm|FctNclVcd^c\fcTncHvc@~cm8c0c(c ccKa@aaѱաadmccȸsȰȨsȠȘ&sȐ.sm6s|>stFslNsdVs\^sTfsȍK uqq}qq m щѝqqqѭtptǢͱU䈪䈪 %-5=JEM]eUmu}UUUUԇԇԇU %U-5=EUMT]eUmu}䇅U䇕䇝䆥U䆵䆽U}}ݩx}p}ݫh}`}ݭX}P}ݯH}@}ݱ8}0}ݳ(} }ݵ}}Uncu}UU@ \p!=c j%-|6sct>s,GrdNs۽\VsT^sL2fsuPm} p PDPp t t ,Wx34}4}C }5Kx}{USp}u[h}c`}kX}sP}{H~@~58~{U0~u(~ S}~ճw|5 !! ݲx"x"ݴx"x"؂x"Ђ `3O@K!m1`!@"1 l$혮#\#cmFc NcVcۼ^cfcncvc~cІcȎca ccPdKA@BBQ@ՠBAQAdm`cXcPsۼH@r m0&s(.sۼ6s>s FsNsVs^sfsCupR}pRC@QQRpQRt}TtpQQ ͰRtttm픿ۿ/*K9&.m6>FۿNV|^tflnm`vX~PۿH@8֞0mK`ѹaša`K;c`a۾Ж@! T&.m6>F۾N|Vt^lfdbuqq}qqqp@щqщqqpѬqnsE nsͱqՔ~ݔU~~픻44UD DDDU%D-D5D=DUEDMDUD]DUeDmDuD}DպDDCUD@@ Pl@lCXQĺDDպT TSU8%T-T5TU=TETMTUTŹ]TeT`upPp̓ő PpP}QͰȒմ|ݴ|m|tUU&.6>ոFNVû^ûfûnûmvû|~ûtۻlûdû\֞ûTû'KP@ТbĻUU&.6ո>FNӺVӺ^ӺfӺupPpͤPPԺ@Ժ0͐ȲzzzT,S$S4b<bDBLBT'B\/bld7b>cFc۹NcVcĶ^cfcncmvc~cc۹cccxcp,'Kš͡աݡbD(c۹ csssm&s.s6s۸>sFs̶NsVs^s%fs0uq}qѕDѭtmpְtͱUxxxxxxx xxx%x-x5x=xExRMx]xexmUxux}xxUxxwwUwwwwUwwwwUwwww Uwww%w-Uw5w=wEwMUwTw]wewmUwuw}wwUwwvvUvvvvvvvv{}}wx}p}wh}`}wX}P}wH}@}w8}0}w(} }w}}mncvc~cۮccc|ctc>@(KPm0@m\p!.c$cmcs sۮs&s.s6s>s,GrNsmVs^sfs ĮuPpPpPPQPtt,x@3t4t4tߴ}Cxr}{6Kx}VSp}v[h}c`}kX}sP}{H~@~{68~V0~v(~ ~S}|6 papax"x"x"ໂx"؂x"݂ KP!m1!@H"1 @"$}",Da"x"p"h"`"X"P"H~0q<~024~02,~02$~02~02~02 ~02$ uPp2Pp2$P2P2P!P2ۂpa#~01mа!,Sذ3SrTr5TSSmcccۭ|t&cl.cd6c\>cmTFcLNcDVcۭ<^c4fc,nc vc~cmccc۬ccPKQ@@BBQ@BmQ@Bmccs۬sxs&sh.sm\6sT>sLFs۬DNsۯFNV^fmnv~ۯVDmODK` aaѱ`աa`a@80( Z%T.5U=EMU]ema uqq}qqdщqщqѱ`ѡqDĢ`aͱTqՔnݔnnU44D DUDD%D-DU5D=DEDMDUUD]DeDmDUuD}DDDDD𦣪J@@ő@ @Ђ䞣PDDT TZTTp&-TU5T=TETMTUUT]TeTmPupq̈́@PDPPȒմlݴll,P`XìPìmHì@ì8&۬0.ì(6ì >ìFìNìVì^fnv~ԆڎĖëëzëmhKѱ!ѡaᡶīdë\ëmTӫLӫD۫<ӫ4&ӫ,.ӫ 6ӫ>ӫmFӫNӫVE^fuq}qͤщшѱѡԪԪɱjjjTSSm|ctclcdc4'Bs4Fs,Ns$Vsm^sfs Auqq}qqq ѕqѝqѡҭtmqtqUhhhhhhh hhh%h-h5h=hJEhMh]heUhmhuh}hUhhhgUggggUggggUggggUg ggg%Ug-g5g=gEUgMgTg]geUgmgug}gUgggfUffffUfffff}Q}x}p}h}`}X}P}H}@}8}0}(} }}}nc$vcm~cc c۟cccK@±@\ہ!$cccsmss|˞t&s-@01|6st>s,GrdNs\VsT^s%LfsuPm}PpPPPtt,xU3d4d4d}C }!Kx}ASp}a[h}{c`}kX}sP}{H~@~!8~A0~a(~{ ~~S} 0pa{1pa2x"w3x"4x"w5x"؀6x"Ѐ!x" K@!m1!ŀ"1 "@!\$0aw1"x2"wp3"h4"w`5"X6"wP!"H|0H1<|1024|202,|302$|402|502|6N02 |!02$uPp2}Pp2$P2PȈ2!P2;pa켮#|801쭠!,)83SbTb5T۝SSԶcccmc&c.c۝6c>cFcNcVcm|^ctfclnc۝`vcX~cPcHc@c8c0c`OKA BŀBQ@BA\/NuoKdccۜcsȶss&s-t6sm>sFsNsۜ|Vst^slfsdCupR}pRDRRbARtC%tmаA͐Rt`t`t`픠tt %-5=EMU]emu}*m 递aa逓aѐa턟 p'-T5=EMUJ]emauqq}qqdщqшqѐѡqa潴ŐaͱqՔ^ݔ^^픛44D DDD%D-D5D=DEDMDUD]DeDmDuD}DDDDDDI(ΐ@@ @@Ђl\HUDDT T՚TT%T.5T=TETMTUT]TeTd/KD堰}ẍ́ PrńmаPȒմ\ݴ\\ȶÜmÜÜۜ&Ü.Ü6Ü>ÜxFÜmpNÜhVÜ`^ۜXfÜPnÜDvÜ<~Ü4Üm,Ü$ÜQK ѱѡěÛÛӛӛmӛӛ&lL/қ6ӛx>ۛpFӛhNӛ`VӛX^ӛPfӛHuq}qͤߍщщѱXѡԛ⽕EɱZԵZZTSmSccۚcc&c.c6c>c4GbKQHwQhQQQQRvRRwRRRRP7obwbبbШbȨbbbbc dKCՀuJԮĮ<`XPH@80(|ڮ|0|0 |0{|0|Pw|P|PPpnpC4@ڔr}P|PSVߠ3T4T4T}4r}0x}Pp}ph}`}X}P}H~@~8~0~#(m~# ~#~#|papax"x"x"x"تx"Ъx"n#/c2q`!!u"!"!"݀"x"p"h"`"X"P"- 0<~024~02,~02$~02~02~02 ~02@!@Pp2}p2p!׍Ј2@2$$۪ؔpaܼ#ڤ~0ܬ4pxzSRTRTR}{}$}D2w}d2}2w}2}2}2~2~3~3~C~C~C~C|3nUvx~ph`XPmKՀBA!uBABA B@mۊ&.6>FUNV^f}APpRmUpAAՍRRDD֭DؽuTppaPtPtP444D DDD%D-D5D=DEDMDUD]DZeDmDv}DUDDDDՐDm@lS}xK Baubaba bDDT TTT%T-T5T=TETMTUT]TeT}0au0prmupaӍ0rraԪdԭdֽutBNݔNN4TTd DDD%D-D5D=DEDMDUD]deDmDud}DDDDڝDDHn؀cP Ђ b UDT TTUT%T-T5TU=TETMTUT]TeT}0 u0pm0э0(ҭ!긁ԽuUpLݴLL.K5\33Cm CCCی&C.C6C>CFCmNCVC^CیfCnv~m|t@(K#}q~aaaѡaa$ U&.U6>FNۋV^fuqqmqqqύqqЭ`fPt@JJJ4H4@48D0D(D D&D.D6D>CFCNCVC^CmfCnvۊ~혦`LK!{q|aa}aa~XaHD@DU8T0T(T T&T.T6s>sFsNsmVs^fs ̮uqqmqqq͍qѕqѽUέ}нStt=HHH43m3԰CԨCԠCԘCԐ&CԈ.CԀ6Cmx>CpFChNC`VCX^CPfCԭ@v8~0(m cbK!y@z { | ӸӰӨmӘsӐ&sӈ.s|6st>slFsdNsm\VsT^sLfs Du0p}0p0ˍ0̭ftFFFQ ~`U$rwQIPQiwHQ@Qw8Q0Q(R R)mRRRRRP7n|`vC|X~C|PC|mHC|@C|8C|0C|(KCw@mx  yՀ z{C{mC{S{S{S{s{&s{.s{6s{m>s{Fs{Ns{|Vs{t^s{lfs{du0p}0p0ɍ0jʭT{m̽T{ STD4D4D{}!΀}1wx}Qp}qwh}`}wX}P}H~@~8~0~#(~# m~#~#|0pa1pa2x"3x"4x"5x"ت6x"Ъ!x" @Kulv$#v"B!wՀ"!x1!0À1"x2"p3"h4"`5"X6"P!"H~00Q<~1024~202,~302$~402~502~602 +~!02#up2p2а!ǍЈ2P2!$Ȕ;pa̼#ʤ~80Q̬4qxrМSBTBTB|@|8|0|(|m ||&|.|6{>{F{N{mV{^{f{n{v̸~{{{m{{{{PDKsBQ@tBA!uՀBAvQAd80( &.sz6sz>szmFszNszVs[z^szfszDQqQpRаAŠЈRRDDVz|CȽzDqpaՔ@jt@t@`ہXPÁH@8Ám0&Á(. 6ہ>FNV^〵fÀmvÀm~ÀІÀȎۀÀÀÀS}0dKqc$0ar`saD`taĀuDPӀHӀ@Ӏ8m0&(.6ۀ> FNV^fauqqqqdÍщqщqmtdĭcjt|֓U>ݔ>>z4Uz4zDz DzDUzDz%Dz-Dz5DUy=DyEDyMDyUDUy]DyeDymDyuDUy}DyDyDyDUyDyDy@@[olvxpq@ЂQryDyDUyTy TyTyTUy%Ty-Tx5Tx=TUxETxMTxUTx]TxeTx݄őqpаЈTP­xPʰĽxUq<ݴ<<.K%\}|}t}ml}d}\}T&}L.}D6}<>}4F}m,N}$V}^}f} n}v~ʖܞԦmшKCmѱnoѡp||m||t|l|d|\|T&|L.|@6|m8>|0F|(N| V|^|f|డuqqѱщщR{:Ե::{{mS{c{{{c{x&c{p.{h6D`>DXFDPNDHVD@^D8fD0nD(vc{U ~DDDDmczczKkѱ!lšamaandzzczszmszszs[zx&szp.Td6TU\>TTFTLNTDVTE<^T4fTuqmqѵaqѕqѽľľUyyi88T SSccccm&c.c6c>cFcȶNcVcĸ^cmfcĨncĠvcĘ~cĐcĈcĀcxcpchcc$KiPjŀ̀k@mbld cssssm&s.s6s>sFsĶNsüVsô^s-fsäup}p򅐰ọ0T伭tվtt<666Q Q*UDrQjQQxQpQhR`RXRJPRHR@R8R0UP(ncludl}dUldldldld}ldlc `!gŐPhŀ̀i@mjإdl`lXcltl tltltl%tl-tl5tl=tlEtlMtkUtk"]tketup}p0TtkptkST44444}Q}2x}Rp}rh}`}X}P}H~@~8m~0~#(~# ~#~#|PpaQpaRx"Sx"Tx"໪Ux"تVx"Ax"0KeŐ"~$Ű!f̀!g@"m!hܥ1!PaQ"xR"pS"hT"`U"XV"PA"H~P0qw<~Q024~R02w,~S02$~T02w~U02~V02W ~A02#u p2}p2!2ЕЈ2P!$۪[pa#~X0q`2[r۱`S2T2T2TlSlmxSlpclhcl`clXclP&clH.cl@6clm8>cl0Fcl(Ncl Vcl^clflnvck~ckckඖck؞ckЦck> KcQAQ@dŀB̀AeBmQ@fQAd[kkxckhsk`skXskP&skH.skm<6sk4>sk,Fsk$NV^ fm0AupR}pRARЈRDDtj0Artj`RrpaUՔ0t0t0qqqqqqmq&q.q6qx>qpFqhNq`VqmX^qPfqHnq@vq8~q0q(q qqqS}0교Kaѹ`baB`ca`d,app}qmpppp&p.p|6pt>pmlFpdNp\VpT^pLfpDcuqq}qqѹ`AщqщqddocoYtʹo֓.ݔU..j4j4UjDj DjDjDUj%Dj-Dj5Dj=DUjEDjMDjUDj]DUjeDjmDjuDi}DiiDiDiDiDi @_ő~p`@aЂm@biDiDiUpi TiTiTUi%Ti-Ti5Ti=TUiETiMTiUTi]T%ieTim0uPp}PpPPШ儲h0hPrմ,ݴ,,.Km\mmmmmm&m.mm6m>mFmNmVm|^mtfmlnmmdvm\~mTmLmDm<֞m4muKC]ѱ^ѱ_ѡQ`UU&.6>FNlVl-x^lpflడ}qѱщщ夰֭l ll***54kmkckckck&ckж.ck6ck>ckmFckNckVck^ckfknckvD~ckxDpDhD`DXDPc K![@\@„@]@^PEDjmsjsjsjsj&sjж.sj6sj>sjmFsjNsjVs[j^sjfsjuPp}Pp҅PQPmԭĮđUmpU԰Vtj$((+(ԬԤ4(ԌԄ|tld\*TLDK(4, '*tK'Ԟ̞'U''''4U' '''%U'-'5'='EU'M'U']'U'm'u''U'''&U&&&&tU&&&&&Q zQ+QKUdQQQQRRvRRkۈRRxRpPhnc]`vc]X~c]Pc]mHc]@c]8c]0c](KCW@X@ Y@@Zd\c\m\s\s\s\s\&s\.s\6s\m>s\Fs\Ns\|Vs\t^s\lfs\duPp}PpPPjt\mt\ SGկT$4$4${}Q}3wx}Sp}swh}`}wX}P}H~@~8~0~#(~# m~#~#|ppaqpaRsx"tx"ux"تvx"Ъax"2KU@"1 V\$B#W@"@!X1!paq"xϒps"ht"`u"Xv"Pa"H~p0q<~q024~r02,~s02$~t02~u02~v02 #~a02m!uPp2}Pp2P!P22$${paP!~x0qP2s۪`"T"T"T\T\T\d\ d\d\d\%d\-d\5d\=d\Ed\Md\Ud\]d\ed\md\ud\}d\dUc\d\d\d\P`SBQB`TBAUBAVQAd[d[[sU(s[t[t[%tU[-t[5t[=t[EtU[Mt[Ut[]t[et [mpAupR}pRARRDDtZpAtZpR"Ք t t bm bbbbaa&a.am6a>aFaNaVa^afanamva~aaaax֞apam$KQaѱ`Ra`Sab`Taa aa Ta``m&`.`6`>`F`ĶN`V`^`-f`cuqq}qqѱ`щqTqdd`dU`dʹ`eUݔZ4UZ4ZDZ DZDUZDZ%DZ-DZ5DUZ=DZEDZMDZUDUZ]DZeDZmDZuDZ}DZDZ(ZDZDZDZ@@O@P\`QЂRYDYZDYTYYTUYTY%TY-TY5TUY=TYETYMTYUTY]TYeTYmP@up}pPP儢)XPXP2ݴ.Km\^<^4^,^$^^&^ .^m6]>]F]N]V]ܶ^]f]nĪv~ʖHKCMѱNOѡP]D]m<]4],]$]]&] .]6>FNV"^f uq}qѱщU夠ep\`U5h4U`4XDPDHDU@D8&D0.D(6DU >DFDNDVDm^c[fc[nc[vc[~c[ضc[Ўc[Ȗc[mc[c[lKKaѱ!LaaMaDaNEhD`DX[PTHT@T8&T0.T$6T>TFT NT6VsZ^sZfsQuqq}qqхqAщѕqѽĞQUmqUԪtZJ %-U5=EMUU]emUu}UUUU4 U%-U5=EMUU]tmUu}UU{Q k Q,wQLQlUrQ0jQQRjRjRjнRjRmRRP7mdMvcM~cMmІcMȎcMc[McMcM dKG@BH@@I@@JdMm`cMXcMPMHsM@sM8sM0&sM(.sMm6sM>sM FsMNsLVsLV^sLfsLuP p}PpPPtLUtL@T44}Q}4x}Tp}th}`}X}P}H~@~8m~0~#(~# ~#~#|vobwbwbbw誏bગbwتbЪbm3q`E@"R!F@"Ԏ$#G@!HP"BBxbphR`RXRP'RH~/r<~7r4~?r,~Gr$~Or~Wr~n_r ~gr#uPp2}Pp2!P2P2$$۔R#~R4tSxrTTmTMSLSLcLcLcLcL&cLm.cL6cL>cLFcLNcLVcL^cLfcLmncLvcLx~cLpcLhccLXcLPcLHcKCBADBBAEBAFPlBdLcKcKKs sKsK&sKm.sK6sK>sKFsKNsKVsK^sKfsK}AupRmUAARRDDUtKDtKuTtpaՔjttRRxRpRhR`RXRmP&RH.R@6R8>R0FR(NR VR^RmfRnRvQ~QQ趎QQ؞QЦQmKAaѱ`Ba͡B`Caݡ`DlaQQxKQpQ@(qTQXQP&QH.Q<6Q4>Qm,FQ$NQV[Q^Q fQm0auqq}qq`AщqщqddP0aP0rʹPݔK4J4JDJ DJDJDJ%DJ-DJ5DJ=DJEDJMDJUDJ]DJeDJmDJuDJ}DJZDJDJ`JDUJDJ@@?H@ԎK`ABTJDIDITI TIITI%TI-TI5TI=TIETIMTIUTI]TIeTI}upmPU儒I儔Iut𡗪 ݴ .K\NNNNmN|Nt&Nl.Nd6N\>NTFNLNNmDVN<^N4fN,nN$vN~NN NmѨK=ѱ>a?ѡ@|t&l.`6Xj>PFHNM@VM8^M0fM(uq}qѱAщщUணжVL ԭ TL44DDDD&D.D6D>DxFDpNDhVD`^DXfDPnDHvD@~D8ZD0cL(D DDK;aѱѬdKDDZTKTTU&T.T6T|>TUtFTlNTdVT\^T TfTČuqq}qqqqѕqѽEĎUmqtSJtJUU U%-5=UEMU]Uemu}UUUUU4 U%-5=UEMU]Uemu}UUUQ [w`Q-XQMwPQmHQ@UQn0Q(R RRRvRRwZRZPZnc>`vc>X~c>Pc>Hc>m@c>8c>0c}>mK7@8 `!9@ :d=c=c=ms==s=S=&s=.s=6s=>s=mFs=Ns=|Vs=t^s=lfs=dPp}PpPAPt=t= STz44}Q}5x}Up}uh}`}X}nP}H~@~8~0~#(~# ~#~#|papax"x"軪x"વx";x"Ъx"`3@K5@"1± 6"`!7Lʖ$#81!a"x"p"h"`"X"P"H{~0q<~02w4~02,~02w$~02~02w~02 ~02а!Pp2}Pp2P!P2P2$^$pap^!~0qp>2uxrtTTT=@S=8S=0c=m(c= c=c=&c=.c=6c<>cs;Fs;Ns;mVs;^s;fs;DQqQ}pRARRDZDt;|Ct\RupaՔttBBBBmBBB&B.B6B>BFBmNBVBx^[BpfBhnBuUB}BBBBBBm1aщ2aԗS}0щ3T4d4AAAA AUTA%A-UA5A=AEAMUAUA]AeAmauqq}qqщAщqщqddAaAhrʹ@ݓ[;4U;4;D; D;DU;D;%D;-D;5DU:=D:ED:MD:UDU:]D:eD:mD:uDU:}D:D:D:DU:D:D:@@!/@0l@1LXQ2:D:DU:T: T:T:TU:%T:-T95T9=TU9ET9MT9UT9]T9eTőq}p*儂9P9uZtt.K\>>>m>>>&>.>Ķ6>>>F>mN>V>^[>f>nvU|~tld\TKC-.(@//0P>ܪ&.6>FNV"^f@~up}pT夀@e0= sUtt5(4U 4DDD c<&cD@RL@7C>DFDNDȪVD^DfDnDvD~DDDVcTFT*NTVT^TfT0|uq}qхA}ѕѽ~Q~UmpUTZt;]ttm %m-5=EMfUemu}tmtt %-5=EMUemu}tzttQKQ.QNQnQQxUĻrQhmR`RXRPRHR@Rn8R0Pm(nc.vc.~c[.Іc.Ȏc.ppc.c.cdK'Ő(ŀ@!)ՠm*Pd.`c.Xc.mPs.Hs.@.8S.0&s.(.s.6s.>s.m Fs.Ns-Vs-^s-fsxuPp}PpyPPzzVt-|t-W|SՔtt}Q~w}6x}Vwp}vh}w`}X}P}H~@m~8~0~#(~# ~#~v#|pa~pa}x"x"x"x"ت]x"Ъx" K%Ő"1 !&ŀ"@!'ՠ"Ğ$#(a}"x"p"h"`"X"P"H~0q}<~024~02,~02$~02~02~02 ~02#vuPp2}Pp2!AwP2P2$xPn2pa|#/z~0q|mи2v`|jttT-S-xS-pc-hc-`c-Xc-mP&c-H.c-@6c-8>c-0Fc-(Nc- Vc-^c-mfc-nc-vc,~c,c,趎c,c,؞c|, K#QAQ@$ŀBBA%ՠBmQ@&QlAd,c,xc,ps,hs,`,X|%,H.s,<6s,4>s,m,Fs,$Ns,Vs[,^s, fs,m0AtupR}pRAAuRRDvDvt+0Axt+\mиRvpa{ՔUtt3tU3t33 3U33%3-35U2=2E2M2UU2]2e2m2uU2}222222m!a"šaB#աaݡ$Ta222u2 22Uz%2-151=U1E1M1U1]1e1druqq}qqsщqщq*dtdt1aUv1dvʹ1EUݔ+4U+4+D+ D+DU+D+%D+-D+5DU+=D+ED+MD+UDU+]D+eD+mD+uDU*}D*D*D*D*D*Ц* B@ő@ @H!ՠЂĞxP"*D*D*T* T*T*VT*P&*-T*5TU*=T*ET*MT*UT*]T*eT*m0p@up}pPqr))0t)mиWvwݴ.K\/\/T/L/D/m</4&/,./$6/>/F/ N/V.m^.f.nUv~Ԇ̎ĖmhKѱѡ d\TLD<4&,. 6j>FN.VU^f讣nu q}qѱoщщpp®r -544xDpDhD`DX&DP.DH6D@>D8FD0ND(VD ^DfDnDvct@CDD袖Dc@CЌKaѱaaaaEDDxTpThT`P'SP.TD6T<>T4FT,NT$VT*^TfT luqq}qqхqmqѕqѽnnUpRUt+Uժ %-5=EMU]emu}誅窥4 %-5=tMU]emu}窅檥Q;Q/QOлQoQQQUzRmRRRۈRRxRpPhnc`vcX~cPcmHc@c8c0c(KC@@@Հ@dcmcsss&s.s6sm>sFsNs|Vst^slfsdhup}0pPijjjteltmиSoT44{}Qn}!wx}Ap}awh}`}wX}P}H~@~8~0~#(~# m~#~#|0pan1pam2x"3x"4x"5x"ب6x"Ш!x"3K@"1 @"@°!Հ"@!<$0am1"x2"p3"h4"`5"X6"P!"H|00qm<|1024|202,|302$|402|502|602 #|!02m!fup2}p2P!g2P2$h2;pal!j|80qlŐ2a۩xrTTTSSmcccc&c.c6cx>cmpFchNc`VcX^cPfcHnc@vc8~cm0c(c cppBcl`KBQ@!BAՀBAQAdccsmssk&sl-t|6st>slFsdNs\VsT^s-LfsDCdupR}pRAeRԈRDfDftڮChtTUapakՔttm######x#p&#mh.#`6#X>#PF#HN#@V#8^#0f#m(n# v#~###"""mKaB`a͡`a`a"m"""""x"p'j-T"m\6"T>"LF"DN"mtFlNdV\^cTfLnDv<~4,*$mK ѱ!ѡDUU&.6Ux>pFhN`VUX^PfH^u q}qѱ_щщ``bU5U44DDUDD&D.DU6D>DFDNDUVD^DxfDpnDUhvD`~DXDPDHD@D8c0K aB aa aѱEDDTTjTT&.TU6T>TFTNTVT|^TtfT\@uqq}qqхq]qPѕqѽ^^timq`tԪtتت %ت-5=EتMU]eتmu}؅تؕ؝ץת׵׽תת4ת %ת-5=EתMU]eתmu}ׅתוֵֽ֥֪֪UK6wU$LUDwUdUU7,UNdU45U=EMU]e4~}0fl~#qd~Cq\~cqT~qL~qD~óq<|# qPfOKP)uP 售 :K|:1Rs8'1|pP|q0|r0|s0|t0|u0|v0x|a0pXm0pŀpYFYd0Znlc1e(\HԪ44K: U$wDUD|UdwUU;$U"\UT" 5=EUMU]eUmv~|Utld\TciKŀ"@!@"݀!"!"P)#R$s$H#(&6U>FNVU^f#Vup2$V$W220!X2m!ZҪTTPCq >$}$K1\}DS1}d[1}cq ?}kA<}sAt}{AҪ5=EMҪU]emg vg~*ܦ@kK|DCBPA!B(D!BCURDsDDDaC&B.fH6f@>f8Ff0Nf(Vf ^f-ffCTupRDTAURRAVRȪCXttдc hKlPPdc Q\PQTcQL`QDcQ<`Qm5=ЪEMU]emv~mܞԦc z`z`z`c ayо`ac ay`ac a`a``cc a` a$`a`a`aۈ8ϒ.P6H>@Fm8N0V(^ fcYabqnpPlqZHz`~pz`c[ez`pPp~ɰc\(p`^1تsjݔ433C¸C°C¨CM&C˜t5=UEMU]e4oP݀wH@݀80݀( cgKu @@mЂиԄ@ЄȻ}Qw||ݑ0|0||ݓ0t|0l|ݕ0d|0\|0 PDnn̈́Q@RmRT|0U ȒUݴ̪̪ ̪%-5=JEMՕ]eUmu}̅U̍̕˥U˭˵˽UݴUU %U-5=EUMU]eUmu}˅Uˍ˕ʥUʭʵʽUԹpT}7¾L}?¾D}G¾<}O¾4}W¾{,}_¾$}𲪅5=EʪMU]eʻ4oԨw̨Ĩ}XKՁ݁B ´ѽTLD<٬1+`,ݖ$|`ѽ|0|0|`Ѽw|H|Hw|H|HMخL͑qфnnMҵѽ{NNpoP|HҀndpUU U%-5U=EMU]e4S}q R~0xQ~PaQ~pވQ~Q{~Q~РoQ|0QUǵǽUU-D--$%t{~0qQ<~0w4~0,~0w$~0~0w~0 ~0 u2`Jm}pPpKPPpLlpPpP~V0qPnN5ƴU1PU)UJUkUU;UUT=$E$M$U$]$e$4|tld\TLD|k \c $  <} OwwܜwԜ̜(qO|1Oܻ|0|0̻|0|0|0|0S|0    dԘpOQ5$44*444 N %T=DEDMDUDu]DeD4owN|wNtwNlNdwN\NTNLN@j$$H$$P${(qM"w""w"ܴ"Դ"̴'M -1M502=02E02M02U02]02He02$" $Ux$$($$$0MOUX3TTTTT´}ްL} 2x}@2p}`2h}޷L`}2X}2P}2Tª5d=dEdMdUd]ded4oL|wLtLlLdL\LTLLLeEDLDTD{KBwBBwBܔBwԔB̔B-1K51Q=1QE1QM1QU1Q]1Qe1Q$*D|DD,D[D4KUM-Dtttttc `%` `4c Q,PQ$cQ`QcQ `QU5=EMU]e4~q~#x~C{~c~~ᶸ~àᶰ|#cdK倰babBaba͐b:!|:1dRdsdadc8!c|pHq|q0r|r0r |s0r{|thq|uPrw|vPr|aPr݀`Buprc BcCrrpqDrlcR}pqF-DŤUͤդݔCq}$Kq}DSq}d[q}cq}kq}{sq}{q5=EMՔ]e4o²\w²T²L²D²<²4²,²=$ΐKѱu|с{܄wԄ̄wĄw|H|0|0|0|0x|0p|0h|:0`@DnLq̓AlőqBT{nD|0EnEuɑUݤU夼U U%-5=EMՕ]emu}Ŵʹմݴ崻ԻԻԻ 仪%-5Ļ=ĻEĻMĻUĻ]ĻeĻmu}-Ļ-d亽亪ԺԺp`}$X}DP}dH}@}8}0}R(5=EUMU]ew4owwبШwȨw`ʱ`ՁB``퍑`ѭ`XPH}q@w80(|Hѭ|0|0 |0|hѬ|ݕP|P|Pҽ<͑qфnn=4Եzm>>y}qp@|P@dUU -=EMUz]e4~paBS}A{~QaA~qaA~aA~aA~ѠaA|1aA㷪픷- %t~00qA<~104~20,~30$~40~50;~60 ~!0up2`K:m`p`p;ppprp5-UK,U$dUDUdU UDU|U픶=$E$M$U$]$e$mdEvcE~cEcEcEmcEcEcEcfDK!```ꔍp`dRsl&{D6sD>sDFsDNsDܶVsD^sDfsD `8upp}pp699pDpp:ptDŀp<-D444-$4 U$4UDlUdUUwU"LU"5D=DEDMDUD]DeDTmudE}dEdEdtdEdE`hB`}p"`!`"`!"`!"oo#~E5tE =tEEtEMt4W]t0Dgmp 6upp26#6#7p2p2pp18p2Tpp1:-DTTTTT})2}J2}k2}݌2}2}2}25d=dt3Md3]d3mdFvcFmx~cFpcFhcF`cFXcFPcFHckKCŀB̀AՀBmpA!B`A!JB $CRD!sD3CC&pTB.464>4F4mNsEVsE^sEfsE}а@4uppRC4`pQ5@pRpRppQ6pRtE`pQ8tttttt>KwU$RUDRwUdR|URwtURlURdUREd5R=-eMU]ݰe4oݠw ݠݠ젟͘K!Հbmq`}qaa㍐bab¦¦¦Ҧ|ҦtҦlҦdf'Ҧ\.1P6В1qH>1q@F1q8$N1q0V1q(^1qa f1q`2͐0pr}prc3Јrصrc4c4[ns6Ѷ1tWbU.ݔ售}Cq}$Kq}DSq}d[q}cq}kq}sq}{qu5U=EMՔu]e4owhw¢`wX¢PwH¢@·8¢0ΐ'KѱuP@aЂѱaԄ軄ۄЄQwȄw|H|0|0|0|0|0||0t|0Ճ0aDnq̓1hn2T۬ҡ$n4#|0Pp5uɑUݤ夬 Rլ-5U=EMՕ]emu}Ŵʹմݴ崫ԫԫԫ 䫪ԫ-5ī=īEīMīUī]īeīmu}䪪ԪԪpl}$d}D\}dT}L}D}p1Fp1$Np1Vp1^pӜfpa,@͑qmPpҭ`p-pщѽ..r p0tqaјdQӨ䨪 %-=EMU]e4~pA2~2x1S}y{~r1~A1~1~Ҡ1|21U㧵UU-U -$%t~P0Q1<~Q04~R0,~S0$~T0~U0~V0 ~A0uP2K* m}PpPp+PPPp,Pl{rQ0Xpao0~X0Q0nU.5p@}$Hx}DP}dXh}` }hX}p}x߽=$E$M$U$]$e$mD>vC>~C>C>C>mC>C>C_>coץpP +ڍP 1Rs*&;=6S=>S=FS=NS=VS=-^S=fS=`(uPp}Pp ))PPp*PT=@p,4444j44TĶ4Ul&5D=DUEDMDUD]DUeDmD=u=}U====U==p}P"@!@"`!@"!"@* 31$R$s$qS#(&<5<=;LF;DN;FۍNV^fcëY`np`cZH`~p`c[`ph`p`c\(`lc^1qx|x0r\pqhTaUݔ唞}Cq}$Kq}DSq}d[q}cq}kq}sq}{qu5U=EMu]e,o’tw’l’d’\’T’L’D’ϕ@uP@ѵсԄ컄䄓}QԄw̄Ą|H|0|0|0|0|0|0|0x Dn n̓!mn"T{0n$|0E n%uɑUݤU夜U U%-5=EMՕ]emu}Ŵʹմݴ崛ԛԛԛ 䛪%-5ě=ěEěMěUě]ěeě-ěu}䚽䚪ԚԚx}$p}Dh}d`}X}P}H}R@5=EUMU]ew4oww訇wਏبwШȨ~tp|KՁѱ@!͍m0Υэxph`1XݕPH݁@|Hэ4|0,|0$|0|0|0 |0|ь|K͑qфnԵPpa4Եѽ/Ppя |hҕd 䘪R%U-=EUMU]e4~p"~3x!~S!S}y~ސ!~!{~Ӡ!|3!㗵픗-$ -D%t~/!<~7!4~?!,~G!$~O!~W!~_! ~*g!uP2`m}PpPpP0pPlsް xp ԭ~r n5PP|U$UDUdU݄UUU'QwA0a0{̖'䖡0w!7!n#v#~###m|#t#l#}P K P +ʍ 1Rs*&;ہ63>3ȶF3N3V3m^3f3uPp}Ppm0bpP4XnU444444U?мU)UJUkUU;UU-DU5D=DEDMDՔUD]DeD4.6>mFNV[^fU44U444U Փ-D%t.S5T=TETMTUT]TeT mPaqPuPp2}Pp2Pp12P2p1P2lG64Hs̶45DTT,tOK1T111L04Al&A|3=d3Md蜀3]ded48pGT8qpBL8rpBD8spB<8tpB48upB,;8vpB$8apBUTTՑTTT@A$AA AI,A8AD&APnCFvCFm~CFCFCFCFCF|CFtcŋKpQxRpQu0R}0R0pQ9Rd8`0R͐pQmŤͤդtt}w5r})Rw}JR}kRw}R}Rw}R}R5=EMt]eLmAB`v@qaX~@qaP@qaH@qa@$@qa8@qa0@qaU(sŤUͤդttIA>A?AaQa QaQaQaDcd8`dncAvcA~cAmcAcAcAcAcAcňKBpqxrpqu0 r}0r0pqrTQ1q8nsmŤUͤդݔ-Cq}$Kq}DSq}d[q}cq}kq}{sq}{q5=EMՔ]e4o‚w‚x‚p‚h‚`‚X‚P‚HcK$аu0|BЂа}0Ԅۄrໄ؄鄏"DH|ݑ0|0|ݓ0|0|ݕ0|0|q0}аDnn̓`mp|qyp|0upŕUݤ夌TՌ%U-5=EMՕ]emu}Ŵʹմݴ崋ԋԋԋ䋪ԋ%䋪-5ċ=ċEċMċUċ]ċeċTu}D䊽䊪ԊԊL1 ~0|0t@l@d$@\@T&@UĊ5=EM-]e4ݨo~w}ݨ}}ݨ}䨗}]}Ԩ}0ʈKՀR}0ԮýĮþ}|tlR}d\TL{|H}@|0w8|00|0w(|0 |0w|0|0  pmp n 4Եҽ{{|n|0ѻ|d|UӈQuzpQQa aaa%aѪ=$E$M$U$]$e$4~p~4x~T~tS}y~~Ԡ|4$$$$$$4 44-$%4t~H<~04~0,~0$~0~0~0 ~0u03 m}0p0p 0rp 0ltp~01Pp5$UU$UDUdUU;UU-$=$E$M$U$]$e$4owma@K!1P앐<4,$ی 'L.161>1 F1N1IVQ^QfQ݀npZnn xmn (}p `QWdR.#$$ %ۄV|VtVlV#dV#\mV#TV#LTmDnv~=0DKՀ"m }1!!! !@80m( &. 66>F,0OV ^ mf " q1q1p1Ј21##֭ 3 >4{rDD|2|2x|2p|2h|2`|2X|2P|2H|252=2E2MЀ2U2]2e2n v ~ m [ $ 3uBŀB̀/) @ m8 0 (   & -00T@7\@?d@G,PO U00 ]0XRe0XRm4upRصqQC#Qupp2p2 4 4 u4 Udddc[W1`zPPYxPzpP0PYhPqz`PPPUXP`PPPpPHT5=EMU]e4{~pz~#xz~Cz ~}cz~qy~y~ày|#y>݀РKba͐babcpb:|:1dRdsdadc8!`|p0yX|q0rP|r0rH|s0r@|t0r8|u0r0;|v0r(|a0r`uprprccrrpqrlcѫxns-d~Ť~ͤ~դ~ݔ~~Cqs }$K^q}DSqrн[}c}k}s}{u5~=~E~M,~]~e~4nCrvCr~Cr|CrmtCrlCrdCr\CrK аu@Ђ`Dr CrCqSqSqmSqSq&Sq.Sq6Sq>SqFSqNSqmVSq^SqfSq0uPp}P p̓PPpTqHnTq8nuȒU|ݤ|||||| |||%|-|5|=|E|RM|Օ]|e|mU|u|}||U||{{U{{{Ŵ{ʹU{մ{ݴ{{U{{{{ U{{-{%{-U{5{={E{MU{-{]{e{mU{u{}{{U{{zzUzzzzUzzzzpn}$}D}dx}݄p}h}]`}X5z=zEzMzjUz]zez4n#nv#n~#n#m#m#m#m#mpKՀѱ!@ P $m#m#m3mmx3mp3mh3m`&3mX.3mL63mD>3muPkKPp!Pxpp`d8`p u48xPdt4t4tt s s m  [ | t& 5dt-%=dtEdtMdtTt]dtedtm m$vC ~C C C C ClK !@"@"P!Հ"`!@"D C C S S mS |S t&S lnc }ЊKpq!xrPpqur}rpqPrQH1qpq ͐Tr=nդnݔnmnccccbbb&bIt5nuEnMUnՔn]nenmbvb~bbbxbmpbhb`ΐOKаu Ђĝа}bbbbmaa{a&a|Ha|0|0|0|0|0|0|0mpm̈́`uP|q=a|0uQuȒUlݤl天llll lll%l-l5l=lElRMlՕ]lelmUlul}llUllkkUkkkŴkʹUkմkݴkkUkkkk Ukkk%k-Uk5k=kEkMUkUk]kekmUkuk}kkUkkjjUjjjjUjjjj^}$}D}d}݄|}t}l}=jR5j-EjMjUuj]jej4ow^w^w^ ^w]]]쨧]0H ­Ĝ}Ԯ)ĮÞ]”Œ„|tld|H]X|ݑ0P|0H|ݓ0@|08|ݕ00|0(|0 ͐pPpmP4Ե Һ\خ|0\ȶd\hhhhhhh hhh%h-Dhh=hEhMhUh]heh4~}0~68~V@~vH~}P~XS}yԻ|6hgggŤgͤgggg4g4g4gDg DgDgDg%Dgt~}H<~0w4~0,~0w$~0~0w~0 ~0 P30mPpPpPd0plvpK~0Pp5UfTfff4Uf4f4fDf DUfDfDf%Df-Df=$fE$fM$fU$f]$fe$fmfuf}ffffeeeeeŤeͤeTeee4e4e4eDe DeDeDe%De-De-$e=$eE$eM$eU$e]$ee$emeue}eeeedddddŤdͤdTd4d4d8KZxUphU`XUPHU@8U0(U Uݼwr000,r0p <3 |_KYP bbpV-A|Tr05DbTbTbTUbTbDbDbTUbDbTbTb%Tb-db5TbEdbMdbUdb]dbedbm`28! 8! |8! t8! l8! d8! \8a2MdaaaŤaͤaTaTaTaTaTaTada dadazda%dat|p0|q0R|r0R|s0R|t0R|u0R|v0R|a0R/盁`~KCPxRPxQP RRxQRl8{pHxJRxQ5dU`t`t`t`U`d`d`t` tU`t`t`%t`-`Ut`E`M`U`d`e`4;p`;pbX;pbP;pbH;pb@;pb8;pb0;2(c___Ť_ͤ_t_t_t_____ ___%_t0Q0r0r0r0r0rx0rp0rhc|Kpprpprppq /!Ktpqrl{;p rxKQns r^դ^ݔ^^C!$}{$K!}DS!}d[! }c!}kR}s}I{^u=^EU^M^Ք^]^ew^4oRwwRRwRRwR|Rt=RՁ(Kаup|а}P{R$ww oQ!Q|HQ|0|0л|0|0|0|0+|0őqIn̈́mT{Q`|0EPuȒU\ݤU\\\\U\\ \\U\%\-\5\=\E\M\Օ]\e\m\u\}\\\\[[[[[Ŵ[ʹ[մ[ݴ[[[[[[ [[[%[-[5[-[E[M[U[][e[m[u[}[[[[ZZZZZZZZZZpN}$}D}d}}}x}Rp5Z=ZEUZMZUZ]ZewZ4oN(wwN NwNNwNMMy0ՀRy0}PԮÍĮÎM ˜ˆ€xp{|HMd|0w\|0T|0wL|0D|0w<|04|0T͐mՄnܮC4ԵҽޔLzSLdKLXXUXXXX UXXX%X-UXX=XEXMXUX]XeX4~ ~! ~A0~a0~0~0~ 0S}yWWWWWTWWWUWWW WWW%Wt|0H<|104|20,|30$|40|50|60 |!0up3pm}PpPp@PPPpܥPla{8!|80n5VVzVV<k014l2U5V=VEVMV-]VeV4{~p~#x~C~c~~~ޠ|#(0ceKuPP͐VP:K|:1Rs8q!.R<6Rw4>R,FRw$NRVRܣp^R fR~upeKnpnq xچn(cqp`TDTDT4T4T4TKU<t$T${:@:10"w8:R0"0:s0"w(:0" :0"w:0"8!0"n v~tcgK}P"а!"!"P!")#RB$s$#(&\6T>LFDN4F4N4V4^4|f4jHKu pR}pRAqPAQRpQ֥RAqPSPdPdPdPdP~dPaa)RxaJRpakRhaR`aRXaRPaRHxr@.d8.d0.d(*.d .d.d.dm$Uu}U0bpa͐babab#>U5=EMUU]emBamu@prdd!ӕraԥrltHOBKEtTu.NݔNNrr r r q % TN5N=NEUNMNՔN]NemNmݠv#ݘ~#ݐ#݈#݀xp#hcf$K0 ͐BЂ`oo#>63>3F3ĶN3ܼV3ܴ^3%f3́ѐup}ppэpҥT@pԽLŤLͤLդLLU,d D|r05 0= 0E 0M 0U 0] 0e T0m$uD}D݅DݍDtDݥD @h@}@а~Т ā//?#5T=TETMT4W ]TDg͡qPq}ppύЈЈpա4TPpJJUJJJJ4U44D DUDD%D-@05=EԪMU]eԶm$`v#X~#mP#H#@[80#ޥjK{QQ|AAAġOO_#^ݜ63ݔ>3݌F3݄N3|V3ݭt^3lf3ݕjKuQq}QqQq͍QѕQѝQ"qΥQѭTpUнTHHHHHHU.U)xUJpUkhU݌`UXUPUH|K..0>h>>.^HwxxwxxwؘxИx⪭dydydzdzd{d{d|d|рxph`XP(H|ٮ<|04|0,|0$|0|0|N0 |0utm}tʽdˍt˕tzt̥tlpНt-dа.`^rS}qн4UFFFp1k !4l"TUF5F=FEFMF-]FeFmv#~#mІ#Ȏ#cԸ԰#ԨdKw0 Bx``y``zpl#>63>3 F3N3V3^3f3>ehKup}p`pɍpʥT}Pp̽D4D4UD4D4D4DKpp@ H"%".@5A1!=A1!EA1!MA1!UA@1!]A1!eA1!mud}dԅdԍdtdԥdԭ`g`u@"!vP"mP!"!"P#5t=tEtMt4W<_Dg}upgK! q1}p21q0Ǎ22p1!1Tqp1ʽBTBTUBTBTBTB111 1A%A-5$=$̪E$M$U$]$Re$m%u}ՅUՍՕ՝եխjsQAQtA逴!B!B#U5=EMUU]eԕQuqQ}qQAAQmTŝѹHѡQȽU@Ŕ@͔@Ք@tU@t@6 566P`}6$c7Q`7Qp7ap7 aup0qp0@2`02`.`$2``11a19a`1Aa1Ianu$}$$$$$$qqrrs*stttT#54=4E4UM4U4]4e4umu}½êÕõĥlƽ44cDžUp.>ݔ> >rr@ r r q H% t5>=U>E>M>->]>e>m̀vmx~ph`XP&Ho pmqЂఁroo#̼6̴>̬F̤NmV̔^̌f}f)up}ppDp¥̵)Ľ<Ŵ<ʹ<մ<ݴ<<U,d&# D|51=1E1M1U1]1eT1muD}DͅD͍DtDͥD @h@m n@m@Тā//?#5T=TETMT4WP]TDghP q}0p0p00pա4̵P::::::444D DDD%DT-@5=EUMU]emm$@vC8~C0C(C CCC=PKkAAlAAAġOO_#^|6St>SmlFSdNS\VS[T^SLfSuQKm}QqѽAqнAmQѝQqQQѭT̝TU8888U88TTTUd dddU%d-d5d=dUEdMdUd]dUedmdu$}$U$$$$U$dididUjdjdkdkdll#>54=4E4M4U4]4e4utTm}tddtUtttUt,t,t,tU666p1k4lTU656=6E6M6-]6e6mvC~CmІCȎCCĸCİCĨBg Ph``i``j`#>m6S>S FSNSVS^SfSÝ0@up}p`p pRU`p44U44444444=4Kpp !"%".@5A1!=A1!EA1!MA1!UA1!]A1!eA1!mUud}dądčd(tdĥdĭ`!!e}p"@!f@"͠!"P!"#5t=tEtMt4WR<_RDgRup1!q1}p2p12e`2mp1!1qp1U2T2T2T2T2T2111 1A%A-5$=$E$M$U$]$e$Tm%u}ŅōUŕŝťŭBAcA@dA@!B!B#5Ī=EMU*]eĕTmqQ}qQPQmTѹPѡQTA0Ŕ0͔U0Ք0t0t0U U%-U5=EMUU]emUu}ޅލUޕޝޥޭUaabbUccdtd#5=ުEMU]Jeumu}UtUݵ$U$$.ݔ. .rr@ r r q H% t5.=U.E.M.-.].e.mvýmx~ýpýh۽`ýXýPýHƃ_B`ఁaЂఁbool#6Ӽ>ۼFӼNӼVӼ^ӼfӼ}up}pppq,Ŵ,ʹ,մ,jݴ,,,d&# D|"51=1E1M1U1]1e1mUuD}DDD(tDD@ȡ!] ^ Таāࢠ//?#5T=TETMT4W]TDgq}0p0p0empա4P4******444D DDJD%D-@05U=EMUմ]em$@vC8~C0Cm(C CC[C[AQ\AAAġOOl_#^|6St>S۽lFSdNS\VST^SLfSuQЬm}QqхQAQmQѵԮQTѭT԰T(U((((U(TTTdU ddd%dU-d5d=dEdUMdUd]dedUmdu$}$օ$U֍$֕$֝$֥dU֭dYdYdZdUZd[d[d\\#>5t֪=tEtMtU4*]4etutm}tUdttUttյttUttt&&&1Z4l5UU&5&=&E&M&-]&e&mmvC~CІC۴ȎCCCCWPX``BY``Zp`#>6S۴>S FSNSVS^S%fS0up}p`ppTU`p$4$4U$4$4$4$Kpp@ H"%".@5A1!=A1!EA1!MA1!UA@1!]A1!eA1!mĵud}dddtJdd`!U}p"@!VP"͠!"P!"#5t=tEtMt4WR<_RDgRup1!q1mp2p1P2e`2mp1A!1qp1U"T"T"T"T%"T"111 1A%A-5$=$E$M$*U$]$e$m%uU}ASAQ@TA@!B!BϨ#޴5=EMU] eTmqQ}qQDAPAQmT"PѡQԴAU Ŕ ͔ ՔU t t U %@y.d.czU,>dd>d>d.c{ ^dDnuΪ}΅΍ΕΪΥέQQRRSS TtT#U5=EMUU]eumu}䣍tHOBKtu.jݔ~rr r r Bq % t5=EM-]emmvíx~ípۭhí`íXíPíH΃OиPBQЂกR`oo#6۬>ӬFӬNӬVӬ^Ӭ%fӬ}up}pppTqŴʹUմݴ,dV&# D|r051=1E1M1U1]1e1mĭuD}DBDDtDD @СM N@ Тā//?#5T=TETMT4W ]TDgq}0p0pЈempա4TP4U4U44D DUDD%D-@05=EMU]emD@vC8~Cm0C(C CۮCCBKAALAAAġ`OO_#^|6Sۭt>SlFSdNS\VST^S%LfSuQМm}QqѽAНAmQѢԞQѭTԠTTTǪTd ddd%dApq..r,>d>>.s ^mdud}$ƪ$ƍ$ƕ$Ɲ$ƪdƭdIdIdJdJdKdKdLBL#>5tU=tE4MtUtU]4etutm}tdttttŵt>pK pp.Zp4lܦU5*=EM-]emvCm~CІCȎCۤCCCGPPBH``I``Jpl#>6S>Sۤ FSNSVS^SfS0up}p`pp}Pp444J44푹vpp Bw"%".@5A1!=A1!EA1!MA1!UA1!]A1!eA1!mDud}ddPdtdd`B!E}p"@!F@"͠!"P!@"#5t=tEtMt4WR<_R$DgRup1!q1mp2p1P22mp1!1qp1TT*TTTz111 1{A%AT-5$=$E$UM$U$]$e$m%u}ACAQ@DA@!B@!B#ޤ5U=EMUU]eTm qQ}qQAPAQmTѹPѡQԩAŔ͔ՔttԿԿԿ俪 %jup0pp0@2`V02`.`2``11a19a`1TAa1IanÿuU}侅侍侕U侥侭AUABBCCDtD#5=EMU]eRumu}䓍UtHxKԾpp̯cDžp.*ݔnrr r r (!o % t5U=EM-]emvÝx~ÝpÝmhÝ`ÝX[PÝH΃?и@ก!AЂกBoo#6Ӝm>ӜFӜNۜVӜ^ӜfӜ}up}ppDpq Ŵ ʹ մ ݴ rU,d&#s D|B51=1E1M1U1]1eT1mĝuD}DDDtDD@С= > Тиā//?#5T =TETMT4W]TDg࠱q}0p0Ј0Dmա4P4 4v4v4vDv Dv*DwDw%Dw-@0U5=EMUU]emD۞@vC8~C0C(C CmCC!;AASlFSdNS۝\VST^SLfSuQЌm}QqAqЍAmQѵQQѭTԐTUUTTTUd dddU%d-d5d=dUEdMdUd]dUedmdu$}$Ud$$$Udd9d9dU:d:d;d;d<<#>5t=tE4M4U4]tetutTm}tdttUttt펽ss|K .p)4lU5=JEM-]emmvC~C۔ІCȎCCCC7PP8``9``:p#>۔6S>S FSNSVS-^SfS0up}p`p@pU`p4444z4Kfpp Bg"%".@5A1!=A1!EA1!MA1!UA1!]A1!eA1!mDud}ddPdtdd`B!5}p"@!6@"͠!"P!@"#5t=tEtMt4WR<_R$DgRup1!q1mp2p1P2e`2mp1!1qp1TT*TTTj111 1kA%AT-5$=$E$UM$U$]$e$m%u}A3AQ@4A@!B@!B#ޔ5U=EMUU]eTu qQ}qQAPQmTѹPѡQԩAŔ͔Քttԯԯԯ䯪 %o@)Y.d.cZ,>dd>dZ>d.c[ ^dDnUu}䮅䮍U䮝䮥䮭U1122U334t4#5=EMU]Jeumu}UtHOBKtlu.ݓ ^rr@ r r _ % t5=EMm-]emvÍx~ÍpÍhÍm`ÍXÍP H/и!0ก1Ђก2oo#6ӌ>ӌmFӌNӌV[^ӌfӌ}up}pppHqųճjttb,d&#c D|r051=1E1M1U1]1e1mUuD}DDD(tDD@С!- . Тиāࢠ//?#5T=TETMT4W]TDgั~q}0p0Јemա4PV3Ŕ͔ՔUtt4f4Uf4fDf DfDgDg%Dg-@05=EMU]emDm@vC8~C0Cێ(C CCC+AA,AAAġOO_#^|6St>SlFSdNSm\VST^SLfS uQ|m}QqѽAq}QmQѵ~QѭTԀSUŔ͔ՔtUtTTTUd ddd}%dAkQ..R,>d>>.S T^mdud}d$U$d$dUd)d)d*dU*d+d+d,,#>5t=tEtM4U4*]4etutzm}tUzd{t{t{U|t|tt~pKppTsttU4lSU5=EM-]emvCض~CІCȎCmCCC 'PP!(``)``*p#>6S>Sm FSNSVS[^SfS0xup}p`pypzH}Pp|UŔ͔ՔttKVpp W"%".@~5A1!=A1!EA1!MA1!UA1!]A1!eAT1!mDud}dddtdd`!%}p"@!&P"͠!"P!"#5t =tEtMt4WR<H_RDgRup1v! q1mp2p1wP22mp1x!1Tqp1zŔ͔UՔttZ111 1[A%A-|5$|=$|E$|M$|U$|]$|Re$|m%u}U A#AQ@$A@!B!B#ބ5=EMU]eTt@mqQ}qQAPuA$QmTuѹPvѡQRԄAxŔU͔ՔttUԟԟԟU %՟up0pp0@2`02`.`$2``11a19a`1Aa1Ianßu}䞅䞍䞪䞝䞥䞭!!""#*#$t$T#5=EUMU]eurmu}rssstttvHxKԾpocDžI`.UݔNrr r r BO % t5=EM-]em}mv}x~}p}h}`}X}P}H΃и B!Ђก"`oo#|6|>|F|N|V|^|%f|}pup}ppqpr|TqtŴʹUմݴR,dV&#S D|r051=1E1M1U1]1e1m}uD}}D}BD}DtD}D }@С @ Тā//?#5T|=T|ET|MT4W ]TDg࠱nq}0p0oЈ0mpա4|TPr4U4UV4V4VDV DUVDWDW%DW-@0t5t=tEtMtUt]tetmD~@vC~8~C~m0C~(C~ C~C~C~BAAAAAġ`OO_#^}|6S}t>S}lFS}dNS}\VS}T^S}%LfS}uQlm}QqѽAqmAmQѢnQѭT|pTTTTd ddd%d-d5d=dEdMdUd]dedmdu$}$dd$$ddddddd d#>U5t=tE4MtUUt]4etutjm}tjdktktkltlttntttܪt14l©U5=JEM-]emmtvCt~CtІCtȎCtCtCtCtPP````p#>t6St>St FStNSsVSs-^SsfSs0hup}p`pi@pjsU`pl4444z4KFpp BG"%".@n5A1!=A1!EA1!MA1!UA1!]A1!eA1!mDuudt}dtdtPdtdtdt`B!}p"@!@"͠!"P!@"#5tt=ttEttMt4WR<_R$DgRtup1f!q1mp2p1gP2e`2mp1h!1qp1jTT*TTTJ111 1KA%AT-l5$l=$lE$UlM$lU$l]$le$lm%uu}uuuuuuAAQ@A@!B@!B#t5Ut=tEtMtUUt]tetTdu qQ}qQAPeAQmTeѹPfѡQԩtAhŔ͔Քttԏԏԏ䏪 %䏪-5=E䎪MU]e䎪mu}䎅䎪䎕䎝䎥䎪tP#5=UEMU]eubmu}bccctddfԪݔ >rr@ r r ? H% t5=UEM-]emmvmmx~mpmhm`mXmPmH΃BกЂกool#l6l>lFlNlVl^lfl}`up}ppapblqdŴʹմjݴB,d&#C D|r051=1E1M1U1]1e1mDUmuDm}DmDmD(tDmDm@!  衴ТСāࢠ//?#5Tl=TlETlMT4W]TDg^q}0p0p_Јemp`ա4lPb4ڪ4F4F4FDF DFDGJDG%DG-@0d5Ud=dEdMdUd]dedmDn@vCn8~Cn0Cnm(Cn CnC[nCn AA AAAġOOl_#^m|6Smt>SmlFSmdNSm\VSmT^SmLfSmuQ\m}QqѽAqA]AmQѵ^QTѭTl`TUUTTTdU ddd%dU-d5d=dEdUMdUd]dedUmdu$}$$U$dddUd d d dU d d d #>5t=tE4M4U4*]tetutZm}tUZd[t[t[U\t\tt^tUtttִxK|`8xoKs~s~*pppq~| `p l Pp \ @pL0p< p,p1P~p KpK}pоppp J!"# @}%$&%'-JP}5)=*E+M,U-$].e/mI0u1}234567K%89I:;<=>?(9`|AIBC DEF%G$-H5I=IJEKMLUM]NeO$mPuQ}IRSTUVWKXK{Y Z [$ \ ] I^ _ ` a b c( P{e If %g -h 5i =j Ek$ Ml Um ]In eo mp uq }r s$ t u yv wKJq@zy0z0{0|0!}$0~005A`z0300 5pz030%0-3050=30E0M30U0]30e0m30u0}3003000K}Ky3@@3@@ 3@@@1@1$@1@A@ AJ`yA@A@%A@-A@5A$@=A@EA@MAI@UA@]A@eA@mA@uA$@}A@A@AI@A@A@AAKxAAPA$APAAPA1px11²PA( AxAAƲP%A-Aqx5A=AʲPEA$MA̲PUA]AIβPeAmAвPuA}AҲPA$AԲPAAֲPAײAKKwAٲAڲ`A۲Aܲ`A$A޲`A߲1I`11`A A wA$A`%A-AI`5A=A`EAMA`UA(]AweAmAI`uA}A`AA`A$A`AAOKvA1|AIpAApAAp̀1t|BaPuU"u $"t4"!!tD"qt!9T"AtId"QtYt"ati"Bqty"t%"1t5"!tE"tU"te"tu"t2Bt2t $2s42!!s)D2s!9T2AsId2QsYt2asi2Bqsy2s%2s52!sE2sU2se2su1sABsA!s $A!r 4A !!r) DA0!r!9 TA@!rI dAP!rY tA`!ri ABp!ry A!r% A!r5 A!!rE A!rU A!re A!ru A!r QB!r Q1r 0$Q1q04Q 1!q)0DQ01q!90TQ@1qI0dQP1qY0tQ`1qi0QBp1qy0Q1q%0Q1q50Q1!qE0Q1qU0Q1qe0Q1qu0Q1q0bBAqq0b@qq @$bpA@4b!@!pA)@Db1@pA9@TbA@pAI@dbQ@p1Y@tba@pqi@bBq@pqy@b@p%A@b@p5A@b@!pEq@b@pUA@b@peA@b@puq@b@pq@rB@pq@rPpq P$roAP4r!P!oA)PDr1PoA9PTrAPoAIPdrQPo1YPtraPoqiPrBqPoqyPrPo%APrPo5APrP!oEqPrPoUqP$rPoeAPvAPIouqPv1PoqPvqoqPv$q`oq `v%A`InA`v5A!`nA)`vEq1`nA9`v$UqA`nAI`veAQ`In1Y`vuqa`nqi`vqq`nqy`v$q`n%A`vq`In5A`uA`nEq`uA`nUq`u$A`neA`uA`Inuq`u1`nq`uq`nq`u$qpnq pu%ApImApu5q!pmA)puEq1pmA9pq@qmAIpueAQpm$1YpuuqmqipIuqqpmqypuqBpm%Apqm5qpqmEqp$q!mUqp4qmeApDqmuqpTqm=,sn@pt`sDtPTt@d(ct0.t8t >HtNXt1^hsnxs~ሁsᘁsᨁcsḁsȁs΃؁s1ރ$sp4BsDs Ts!d(!s-1t8s=AHsMQXs]ahrmqBxr}rHrmmrm}r$mɐrѐIlِrlrl!r$ĺ r Il݁r!l큒)r-1lq9r$=Al IrMQIlYr]al-iqmql=yq$}lMqIl]qlmql}q$lɠqѠIk٠qkqkq$ḱ q Ik݁q!k큒)q-1kq9q$=Ak IqMQIkYq]ak-ipmqk=yp$}kMpIk]pkmpk}p$kɰpѰIjٰpjpjAp$jA p IjAp jq)p-0jq9p$=@j IpMPIj5qYp]`jEqiompjUqyo$}jMoIjuqojqojqo$jqoIio0io1io$1i o AIioA!iq)o-A1iq9o$=AAi IoMAQIi5qYo]ApiEqinmAqiUqyn$}AiMnAIiuqnAiqnAiqn$AiqnAIhnAhn1hn$1h n AIhnA!hq)n-A1hq9n$=AAh InMAQIh5qYn]AahEqimmAqhUqym$}AhMmAIhuqmAhqmAhqm$AhqmAIgmAgm1gm$1g m AIgmA!g)m-A1g9m$=AAg ImMAQIgYm]Aag-ilmAqg=yl$}AgMlAIg]lAgmlAg}l$AglAflAfkQlRfm l f}Jlf)l-)f9l=fIlMfYl]fikmf1ykR}fkfJkf k)fkf-kf=kfMkf]kRem k e}Jke)k-)e9k=eIkMeYk]eijme1yjR}ejeJje j)eje-je=jeMje]jRdm j $d}J j$d) j-$)d9 j=$dI jM$dY j]$di im$d1y iR}$d i$dJ i$d  i$)d i$d- i$d= i$dM i$d] iR$cm 0i 4c}J0i4c)0i-4)c90i=4cI0iM4cY0i]4ci0hm4c1y0hR}4c0h4cJ0h4c 0h4)c0h4c-0h4c=0h4cM0h4c]A0hR4bmA @h Db}AJ@hDbA)@h-D)bA9@h=DbAI@hMDbAY@h]DbAi@gmDbAy@gR}Db1@gDb1J@gDb A@gD)bA@gDb-A@gDb=A@gDbMA@gDb]A@gRDamA Pg Ta}AJPgTaA)Pg-T)aA9Pg=TaAIPgMTaAYPg]TaAiPpQaAyPBQaaP$Qa1P4Qa APDQ!aAPTQa-APdQa=APtQaMAPQa]APBa`mA `a`}A` a`A)`ā0a!`A9`ԁ@a`AI`Pa`AY``a`Ai`pa`Ay`Ba`a`$a`1`4a` A`Da!`A`Ta`-A`da`=A`ta`MA`a`]A`Bq_mA pq_}Ap q_A)pđ0q!_A9pԑ@q_AIpPq_AYp`q_Aippq_AypBq_ap$q_1p4q_ ApDq!_ApTq_-Apdq_=Aptq_ scDstqBp^ p^!^)Ģ1!^9ԢA^IQ^1Ya^iq^qyB^ $^4^-D!^=T^Mɀdр^]ـt]m逄]}B] ]!])IJ1!]9ԲA]́IQ]1Y`]ip]qyB] $]4]-D!]=T]MɐdБ]]ِt\m鐄\}B\ \ \)0!\9@\́IP\1Y`\ip\qyB\ $ѐ\4Ѡ\-DѰ!\=T\MɠdС\]٠[m頄[}B[ [ [)0![9@[́IP[1Y`[ip[qyB[ $ᐱ[4ᠱ[-Dᰱ![=T[Mɰdб[]ٰtZm鰄Z}ABZA ZA!ZA)1!ZA9AZAIQZAYaZaiqZyBZ $Z4Z-D!Z=TZMdZ]tYmY}BY ФYд!Y)1!Y9AYIХ_MYY_]Yai^mYy^B}Y YY-$!Y=4YMЄDY]TXmdX}tBX X X)0!X9@XIPXY`XaipXyBX XX-$!X=4XMDX]TWmdW}tBW W W)0!W9@WIPWY`WipWyBW !W!W-$!!W=4!WMD!W]T!V [Qt"V"V"!V&"1cV6"AVF"QVV"aV1f"qVv"ƁVt2Vd2VT$2cVD42V4D2V$T2V1d2Vt2BU 2U2!U%)21!U592AUEI2QUUY2aUei2qUuy1BUAUAU$A!U4AUŁDAUՁTAUdAUtAB!T A!T A !T%) A0!!T59 A@!TEI AP!TUY A`!Tei Ap!Tuy AB!T Q!T r T $Q!!T 4Q!TŁ DQ!TՁ TQ!T dQ!T tQB1S 0Q1S0Q 1S%)0Q01!S590Q@1SEI0QP1SUY0Q`1Sei0Qp1Suy0QB1S0a1S0a1S0$a1!S04a1SŁ0Da1SՁ0Ta1S0db0S1tbB@RAb@RAb!@R%(Ab1@!R58AbA@REHAbQ@RUXAba@RehAbq@RuxAbB@RAr@RAr@RA$r@!RA4r@RŀADr@RՀATr@RAdr@R@trBPQ PrPQPr!PQ%)Pr1P!Q59PrAPQEIPrQPQUYPraPQeiPVmTQuyPVR}TQPVTQJPVTQPVT)QPVTQPVTQPVTQPVTQPVRTP `V dPJ`VdP%)`V-d)P59`V=dPEI`VMdPUY`V]dPei`UmdPuy`UR}dP`UdPJ`UdP`Ud)P`UdP`UdP`UdP`UdP`URdO pU tOJpUtO%)pU-t)O59pU=tOEIpUMtOUYpU]tOeipTmtOuypTR}tOpTtOJpTtOpTt)OpTtOpTtOpTtO-sSHsQpTtO,T OTO &T-N6T=NZFTMNVT]kNfSmNvS}NSNSNS֭N|SNlZƃS̈́N\փS݄kNLSNJB>%)B-)>59B=>EIBM>UYB]>eiAm>uyAR}>A>JA>A)>A>ɠAͤ>٠Aݤ>A>AR> A =JA=%)A-)=59A==EIAM=UYA]=ei@m=uy@R}=@=J@=@)=@=ɰ@ʹ=ٰ@ݴ=@=A@R=%A @ <5AJ@m;uAy>R};A>;AJ>;A>);q>;Х>;A>;A>;1>R;A > :AJ>:%A)>-):5A9>=:EAI>M:UAY>]:eAi=m:uAy=R}:A=:AJ=:A=):q=:=:A=:A=:1=R:A = 9AJ=9%A)=-)95A9==9EAI=M9UAY=]9eAi?@$ABIC DEF%G-H$5I=JEIKMLUM]NeOmP$uQ}RISTUVWXKݵY Z$ [ \ I] ^ _ ` a b$ c d Ie f %g -h 5i =j$ Ek Ml UIm ]n eo mp uq }r$ s t Iu v w ^xKܵy0z0{0|$0}0~01033 3 %(3-0583=@EH3MPUX3]`eh3mpux3}܅3܍ܕ3ܝܥ3ܭ۵3۽33K1@1@1@A@ A$@A@A@%AI@-A@5A@=A@EA@MA$@UA@]A@eAI@mA@uA@}A@A@A$@A@A@Ay@AKڵAIPAPAPAPAPA$PAP1P1IP1²PAòP AIJPAŲPA$P%ADzP-AȲP5AIɲP=AʲPEA˲PMA̲PUQͲP]A$PeAϲPmAвPuAIѲP}AҲPAӲPAԲPAղPAPAײPAK%ٵAٲ`Aڲ`AI۲`Aܲ`Aݲ`A޲`A߲`1$`1`1`AI` A`A`A`%A`-A$`5A`=A`EAI`MA`UQ`]A`eA`mA$`uA`}A`AI`A`A`A`A`AKصApA$pApApAIpApApĀKNUttttUtt|tttUltdt\tTtULtDt?@AB$C DIEF%G-H5I=J$EKMLUIM]NeOmPuQ}R$STIUVW^XK͵Y Z [ \$ ] ^ I_ ` a b c d$ e f %Ig -h 5i =j E!k M!l$ U!m ]!n eIo mp uq }r s t$ u v yw xK̵Iy0z0{0|0}0~d000f00f0 0f00f%0-00f500=00fE 0M 0fU 0] 0fe0m0fu0}0f00f000K˵@@@@@@@1$@1@1@AI@ A@A@A@%A@-A$@5A@=A@EAI@MA@UA@]A@eA@mA$@uA@}A@AI@A@A@A@A@AKʵAPA$PAPAPAIPAPAP1PAPA$PQòP AIJPAIŲPAƲP%ADzP-AȲP5AɲP=A$PEA˲PMA̲PUAIͲP]AβPeAϲPmAвPuAѲP}A$PAӲPAԲPAIղPAֲPAײP^AKɵAٲ`Aڲ`A۲`A$`Qݲ`Q޲`AI߲`Q`A`A`Q` A$`A`A`%AI`-A`5A`=A`EA`MA$`UA`]A`eAI`mA`uA`}A`A`A$`A`A`Ay`AKȵAIpapapapQpQpAp݄>>>> >>>%>->5>=>E>M>U>]>e>m>u>}>>>>=====Ŕ=͔=Ք=ݔ====== ===%=-=5===E=M=U=]=e=m=u=}====<<<<<Ť<ͤ<դ<ݤ<<<<<< <<<%<-<5<=?@ABC$ DEIF%G-H5I=JEK$MLUM]INeOmPuQ}RS$TUVWXKKY Z [ \ ]$ ^ _ I` a b c d e$ f %g -Ih 5i =j E!k M!l U!m$ ]!n eo mIp uq }r s t u$ v w /xKy0Iz0{0|0}0~0̲00̲00̲0 0̲00%̲0-0050̲0=00E ̲0M 0U ̲0] 0e̲0m0u̲0}0̲00̲00|0K3@@3@@3@@0@1@1$@1@A@ AI@A@A@%A@-A@5A$@=A@EA@MAI@UA@]A@eA@mA@uA$@}A@A@AI@A@A@A@AKAPAPA$PAPAPAIPAP1P1PA²PQ$P AIJPAŲPAIƲP%ADzP-AȲP5AɲP=AʲPEA$PMA̲PUAͲP]AIβPeAϲPmAвPuAѲP}AҲPA$PAԲPAղPAֲPAײPAKKAٲ`Aڲ`A۲`Aܲ`Q$`Q޲`Q߲`QI`1`A`Q` A`A$`A`%A`-AI`5A`=A`EA`MA`UA$`]A`eA`mAI`uA`}A`A`A`A$`A`A`A/KApaIpapapQpQpQTp݄...U. ...%U.-.5.=.EU.M.U.].eU.m.u.}.U...-U----ŔU-͔-Ք-ݔ-U----U- ---%U---5-=-EU-M-U-]-eU-m-u-}-U---,U,,,,ŤU,ͤ,դ,ݤ,U,,,,U, ,,,%U,-,5,=,EU,M,U,],eU,m,u,},U,,,+U++++ŴU+ʹ+մ+ݴ+U++++U+ +++%U+-+5+=+EU+M+U+]+eU+m+u+}+U+++*U****U****U****U* ***%U*-*5*=*EU*M*U*]*eU*m*u*}*U***)U))))U))))U))))U) )))%U)-)5)=)EU)M)U)])eU)m)u)})U)))(U((((U((((U((((U( (((%U(-(5(=(EU(M(U(](eU(m(u(}(U((('U''''U''''U''t't'U' '''%U'-'5'='EU'M'U']'eU'm'u'}'U'''&U&&&&ńU&̈́&Մ&t&&}`5`| t l d \ TLD<4,$R KWUUU !"$# $I%&%'-(5)=*$E+M,UI-].e/m0u1}2$34I567^8K9:;<$=>I?@ABC D$EF%IG-H5I=JEKML$UM]NeIOmPuQ}RST$UVyWXKIY Z [ \ ] ^$ _ ` Ia b c d e f$ %g -h 5Ii =j E!k M!l U!m ]!n$ eo mp uIq }r s t u v w xK%y0z0I{0|0}0~000000 000%0-00500=00E 0M 0U 0] 0e0m0u0}000000oK@f@@f@@f@@1@1@1$@A@ A@AI@A@%A@-A@5A@=A$@EA@MA@UAI@]A@eA@mA@uA@}A$@A@A@AI@A@A@^AKAPAPAPA$PAPAPAIP1P1PA²PAòP A$PAŲPAƲP%AIDzP-AȲP5AɲP=AʲPEA˲PMA$PUAͲP]AβPeAIϲPmAвPuAѲP}AҲPAӲPA$PAղPAֲPAyײPAKAIٲ`Aڲ`A۲`Aܲ`Qݲ`Q$`Q߲`Q`1I`A`A` A`A`A$`%A`-A`5AI`=A`EA`MA`UA`]A$`eA`mA`uAI`}A`A`A`A`A`A`AK%ApapaIpapQpQpQp݄ %-5=EMU]emu}Ŕ͔Քݔ %-5=EMU]emu}Ťͤդݤ %-5=EMU]emu}Ŵʹմݴ %-5=EMU]emu} %-5=EMU]emu} %-5=EMU]emu} %-5=EMU]emu}tt %-5=EMU]emu}ń̈́Մt}5UUUU|U t lU d \U TLUD?I@ABC DE$F%G-IH5I=JEKMLUM$]NeOmIPuQ}RSTU$VW/XKY IZ [ \ ] ^ _$ ` a Ib c d e f %g$ -h 5i =Ij E!k M!l U!m ]!n eo$ mp uq }Ir s t u v w xKy$0z0{0I|0}0~020030030 0300%30-005030=00E 30M 0U 30] 0e30m0u30}03003000K͛@̲@@̲@@L@@1@1@1@A$@ A@A@AI@%A@-A@5A@=A@EA$@MA@UA@]AI@eA@mA@uA@}A@A$@A@A@Aɶ@A@AKKAPAPAPAPA$PAPAP1IPAPA²PAòP AIJPA$PAƲP%ADzP-AIȲP5AɲP=AʲPEA˲PMA̲PUA$P]AβPeAϲPmAIвPuAѲP}AҲPAӲPAԲPA$PAֲPAײPA/KAٲ`AIڲ`A۲`Aܲ`Qݲ`Q޲`Q$`Q`A`AI`A` A`A`A`%A$`-A`5A`=AI`EA`MA`UA`]A`eA$`mA`uA`}AI`A`A`A`A`A`AKA$papapaIpQpQpRQp݄U U%-5=UEMU]Uemu}UU U Ŕ ͔ Ք ݔU U   U % - 5 =U E M U ]U e m u }U U U Ť ͤ դ ݤU U   U % - 5 =U E M U ]U e m u }U U U Ŵ ʹ մ ݴU U   U % - 5 =U E M U ]U e m u }U U U U U   U % - 5 =U E M U ]U e m u }U U U U U   U % - 5 =U E M U ]U e m u }U UUUU U%-5=UEMU]Uemu}UUUUttU U%-5=UEMU]Uemu}UUUń̈́Մt}}5| t l d \ TLD<4,$JU _KUUUU !"# $$%&%I'-(5)=*E+M,$U-].eI/m0u1}234$56y78KI9:;<=>$?@IABC DEF$%G-H5II=JEKMLUM]N$eOmPuIQ}RSTUVWXK%Y Z I[ \ ] ^ _ `$ a b Ic d e f %g -h$ 5i =j E!Ik M!l U!m ]!n eo mp$ uq }r Is t u v w xKy0z$0{0|0I}0~00f00f00f 00f0%0f-00500f=00E 0fM 0U 0f] 0e0fm0u0f}00f00f00K@@@@@@I@1@1@1@A@ A$@A@A@%AI@-A@5A@=A@EA@MA$@UA@]A@eAI@mA@uA@}A@A@A$@A@A@Ay@AKAIPAPAPAPAPA$PAP1PAIPA²PQòP AIJPAŲPA$P%ADzP-AȲP5AIɲP=AʲPEA˲PMA̲PUAͲP]A$PeAϲPmAвPuAIѲP}AҲPAӲPAԲPAղPAPAײPAK%Aٲ`Aڲ`AI۲`Aܲ`Qݲ`Q޲`Q߲`Q$`A`A`QI` A`A`A`%A`-A$`5A`=A`EAI`MA`UA`]A`eA`mA$`uA`}A`AI`A`A`A`A`AKApa$papapQIpQpQp݃m %-5=mEMU]emu}mmœ͓Փkt퓫tt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մttt %-5=EMU]emu}ń̈́Մt}5WUUUU| t Ul d U\ TULDU<4U,$ K J!"# $%$&%'-I(5)=*E+M,U-$].e/mI0u1}2345$67/8K~9I:;<=>?$@AIBC DEF%G$-H5I=IJEKMLUM]NeO$mPuQ}IRSTUVWXK}Y$ Z [ I\ ] ^ _ ` a$ b c Id e f %g -h 5i$ =j E!k M!Il U!m ]!n eo mp uq$ }r s It u v w xK|y0z0{$0|0}0~00̲00̲00 ̲00̲0%0-0̲0500=0̲0E 0M ̲0U 0] ̲0e0m̲0u0}̲00̲00̲007K{@3@@3@@3@@1I@1@1@A@ A@A$@A@%A@-AI@5A@=A@EA@MA@UA$@]A@eA@mAI@uA@}A@A@A@A$@A@A@A/KzAPAIPAPAPAPAPA$P1PAPAI²PQòP AIJPAŲPAƲP%A$P-AȲP5AɲP=AIʲPEA˲PMA̲PUAͲP]AβPeA$PmAвPuAѲP}AIҲPAӲPAԲPAղPAֲPA׼PAKyA$`Aڲ`A۲`AIܲ`Qݲ`Q޲`Q߲`Q`A$`A`Q` AI`A`A`%A`-A`5A$`=A`EA`MAI`UA`]A`eA`mA`uA$`}A`A`AI`A`A`A`AKxApapa$papQpQIpQp݄U U%-5U=EMUU]emuU}UUŔ͔ՔUݔU U%-5U=EMUU]emuU}텤퍤핤U흤쥤쭤쵤U콤ŤͤդUݤU U%-5U=EMUU]emuU}셴썴앴U이르뭴뵴U뽴ŴʹմUݴU U%-5U=EMUU]emuU}UUUU U%-5U=EMUU]emuU}UUUU U%-5U=EMUU]emuU}UUUU U%-5U=EMUU]emuU}UUUtUt U%-5U=EMUU]emuU}煄獄畄U睄楄歄浄U潄ń̈́Մt}p5| t l d \ TLD<4,*$U }KoUUUU I!"# $%&$%'-(5I)=*E+M,U-].$e/m0uI1}2345678K%n9:I;<=>?@$ABIC DEF%G-H$5I=JEIKMLUM]NeOmP$uQ}RISTUVWXKmY Z$ [ \ I] ^ _ ` a b$ c d Ie f %g -h 5i =j$ E!k M!l U!Im ]!n eo mp uq }r$ s t Iu v w ^xKly0z0{0|$0}0~000000 000%0-0050=00E 0M 0U 0] 0e0m0u0}000000Kkf@@f@@f@@&@1@1I@1@A@ A@A@A$@%A@-A@5AI@=A@EA@MA@UA@]A$@eA@mA@uAI@}A@A@A@A@A@A@AK%jAPAPAIPAPAPAPAP1$PAPA²PQIòP AIJPAŲPAƲP%ADzP-A$P5AɲP=AʲPEAI˲PMA̲PUAͲP]AβPeAϲPmA$PuAѲP}AҲPAIӲPAԲPAղPAֲPAײPAؗKiAٲ`A$`A۲`Aܲ`QIݲ`Q޲`Q߲`Q`A`A$`Q` A`AI`A`%A`-A`5A`=A$`EA`MA`UAI`]A`eA`mA`uA`}A$`A`A`AI`A`A`^AKhApapApa$pQpQpQp݄ު ު%-5=ުEMU]ުemu}ުލޕޝݪݭݵݽݪŔ͔Քݔݪݪ ݪ%-5=ݪEMU]ݪemu}ݪݍݕݝܪܭܵܽܪŤͤդݤܪܪ ܪ%-5=ܪEMU]ܪemu}ܪ܍ܕܝ۪ۭ۵۽۪Ŵʹմݴ۪۪ ۪%-5=۪EMU]۪emu}۪ۍە۝ڪڭڵڽڪڪڪ ڪ%-5=ڪEMU]ڪemu}ڪڍڕڝ٪٭ٵٽ٪٪٪ ٪%-5=٪EMU]٪emu}٪ٍٕٝتحصؽتتت ت%-5=تEMU]تemu}ت؍ؕ؝ת׭׵׽תתttת ת%-5=תEMU]תemu}ת׍וםֵֽ֪֪֭ń̈́Մt־ִUi`}K0 }{S}[}c}k}sЗ}{Ȟ5֪=EMU]e4p'pxݒppphݔp`pXݖpPpHc(KLĮ< , {q'q&茔،Ќq&|aP&w|0|0w|0|0w|0|0׌|0XjnpnȮY xЮZ(눛p&\`|0\}۪0 tԾK^(m( ('''&'5=ԪEMU]ne4owۄ|tld\Tc*Kl$#\$Ԯ#"!"q' ݑ"(ݓ((ݕ(䬖(ܬ'|1|ݑ02|02|ݓ02|02|ݕ02|02|02#Vp2mZp2ܮ#W444:$X$X$/Z|02D4 V&8st儿Ҵ|}Ky}S1}[1}c1}k1}s1}S{15=UEMU]e4o#w###m###|#tc,0gK0AD|DC!B A!BԄq',B$BBB Bq&W R.. $61Q>1QF1QIN1QV1Q^R1Qf1QCT0pRm0pRDURʈRCV RhCX1QXCY,]t>KAU$Q@UDRUdRURUR;URURՄU5=EMUUe4o"@w"@|"@t"@l"@d"@\"@T"@GB b a (b adab"@ݤ"?"?ݤ2?2?ݤ2?ܤ2?-'?.3?50r=0rE0rM0rU0r@]0re0rmaRprmu0aS0r0TrdTdT4?dV4?utVd?݄zPU$rwxUDrpUdrwhUr`UrwXUrPUrmH۹ &~T~{#qL~CqD~cq<~q4~q,~óq$|# |qK ބ:W|:1Rs8!`|pK|q0|r0|s0x|t0p|u0h|v0`|a0PP@p pQQdRlcTH֓Ťͤդ*ݤTpp %Hccc smsss &sm ТÂࢤ)RBs1( &8J\ޣN@pNݤO倈PURUttUt U%-5U=EMUմ]em!v!~!!m|!t!l!d! .KC@@ ½ ġJR!sQ&l. 6 > F N V ^ f L@pҭ LpM倈ҕĝpNҭ PnPȴ}4K8}$7}D}d}}}S}-5=UEMU]em$7v#7mx~#7p#7h#7`#7X#7P#7FK Bl$7#6#636363636&36T-0165t6=t6EtU6Mt6Ut6]t6et6mJpmppK00[LL46UN46uNt6ƴ}$Cxp}}$ p}$ h}$ `}$ X}}$ P}$( 5$=$ƪE$M$U$]$e$4o"w"""""""DK  BP.@68>0F(Nm V^f3.PQ06P1I>P1FP1NP1VP1^P1̸fP1HnpZnnI xmnJ(2@L`P1 }$0.#44?\U$wLDw<4w,&$5D=DEDMDĪUD]DeDmmv~֞݀*PK"1 @"!"m!"LD<4m,$&c.s,07r >sFs4Or<WrD_rLgr1PKAFp2mpp2m4Gp2p2#H#Ht#Jtv}4Jx.CTT´})C @L|rx})S1}{)[1})c1})k1})s1}){1T45d=dEdMdUdTed4mow܀Ԁ̀6Ā,pKpAuBBQ@!Bp0A!BԄQlBdnB\BTv BDB1QF1QN1QV1QL^PfaQBDDnTnTCER̀RnSFTTnSHaQmpQI,-Dtt1D1<1m41,1$11&1 TT5=EMU]e4ݠo0Ġw0ݠ00ݠ00]00qBbq}babmaiqa.0D60<>04F0,N0$V0^0-f0 ./50r=0rE0rM0rU0r`]0re0rcBq qq}prpqCrcCcDcD/pqF/VcF/Eݔ唾mçۧxçpçh&ç`.é06ém(>é FéN۩Vé^éVfènuĔ}UĔĔĔUĔ}P!Ђ0 1RsO&5ԓ=ԓEԓMԓ*Uԓ]ԓeԓmаc@up@AAЈ"pBԓpUDŴʹմUݴ崼Tpp %`cm0c(c sۧsss&sm`mТāࢤ 1RBsO(`&8J\>ulp>ݣ? Јp@TpBԺԺUԺԺԺtUtt U%-U5=EMUU]emv~Ķ}P.XK…P0`Hġ 1ąRsQְ&.6m>FNV^6fخҭn@-Ŕ͔Ք}( }$}D}d}}'}}5=EMU]em$'v#'~#'#'#'m#'x#'p#{'h$K}`!m$' #'#'m3'3'3&3&&3&.s&6s&>s&mFs&Ns&Vs[&^s&f3&P:q}pp0p;0@<4&>t&e}D}DK~UDr}D }}D }D }D w}D( 5$=$E$M$jU$]$4o"wwbbw"舏bwb؈bЈbKC m0u0PiՀ.6x>pFhN`VX^PfH.P10<$6P14>P1,FP1I$NP1VP1^P1 fP1u8npn9 jxn:(ˀ2p<`P10}D0.#44?UDrw|wtl&+=D5D-%EDUMDUD]DeDmm v~춖ܦ!K"1 }"$"͠!"m|tld\&T.s,07rL>sDFs4Or<WrD_rLgrՀ 6p21q1pp17`p2@2#8#k8t#:t#:ո.CTT}JC @<}J}K1|rp}J[1}Jc1}Jk1}Js1}J{T1T5d=dEdUMdUd]ded4o,w#$݀b݀b b̀QKpAuBpBD!BA!BԄQBBfB BwB|Bt.IPh61Q`$>1QXF1QPN1QIHV1Q@^1Q8f:1Q0B4DnT pRC5RRmnS6TTMnS81PmОpQ9,tUt!!m|!t!l!d!\!T&!Ud5=JtM-e]ew4o!ww  w 젏 䠗w ܠ Ԡ pqaqB}baHbmqqa. 6 |> tF lN dV m\^ Tf L. 50r=0rE0rM0rU0r]0re0ru`2pr}prpq3rrc-4c4pq6rݔ售mۗ×××&×x.ÙmD6Ù<>Ù4Fۙ,NÙ$VÙ^ÙfÙ nuĄ}ĄĄĄĄĄĄBHm0ЂI⍑၄ 1RsOT&5Ԅ=ԄEUMԃUԃ]ԃemа0mpp`lp11Јp2РԃTp4ŴʹUմݴ崬Tpp %xcDc.K@P@@ ġ 1RsQ&.P6H>@Fm8N0V(^ fu,mpp,p-@倈ҕҝp.ҭp0Ŕ͔Ք}@}$8}D0}d(} }}K}5=UEMU]m$v#m~######DK@ڵB`ܥl$@#8#03(3 33&3m.s6s>sFsNsܶVs^sfs*p}0pp+0@-,,t@p.t.tE}}d݀}dx}dSpUdr}d `}d X}d P[}d( ݽ5$-$M$U$]$e$4oa@wa8a0a{(a aa݈aKC׍P`إ0u0̀m0.6>FNV^f.P|$6P1t>P1lFP1IdNP1\VP1T^P1LfP1uP(mppnn) bxp*(qPp,`P1}Vqt44m?Ud &5D=DEDMDUD]DeDmLvD~<4,$}*K@"1 `"1 "1 ";&.r+17q>rFr3Oq;WqC_qKgqS"&p2}pp2p1'p2@2#(#(sm#*smpZ2.CT}T}kC @,}kK10S1|rh}kc1}kk1}ks1}Kk{145d=dUEdMd-d]dݢed4olwd\TmLD<p,K ӕ0AmpBBQ@!B0A!BԄPݑB䄒B܄͓BԄ BĄBB.. 61Q$>1QF1QN1QIV1Q^1Qxf1Q}@$mpR pRC% R̀RlpQ&TT3 pQ(1QmpQ),2.cjttM&T5=UEMU]ݠe4oDݠw<4ݠ,$ݠUGѵ bqba! bmaԥqam.6>FNV^f.50r=0rE0rM0rU0r]0re0rm`"pr}prpq#r0rc$c$pq&rUŔݔ唞ۇÇÇÇmÇ&Ç.ۉX6ÉP>ÉHFÉ@NÉ8VÉm0^É(fÉ nUuuu}utUttttՠАPЂҍ၄ 1 RsO&t5t=tEtMtUt]t2etmа upp!!Јp"Рԩsp$Ŵʹմݴ崜Tpp %mcXcPcۇHs@s8s0s(&sPm} m Тࢤ 1Rs(&8J\cupݣЈp Рp"ԚԚԚԚԚԚttt %-5=EMU]emTvL~D<4,$}.K@@̵ p@ ġ*1RsQ&.6>FxNpVh^`fX1@ppсҕҝp0ҭn -t͔Քz}`}$X}D%H}@}8}0K}(5=UMU]uem#v"w~"І"wȎ""w""dK} B m̥#`"X"P2H2@2820&2m(.s6s>s FsNsVs^sfsŀp}0p򭠂p@0mt}Ppjtt|.}}}!}[Ur{}!} !o}(!5$=$E$M$U$]$e$4o"耈w"x"p"h"`"X"P"Hc?)K  ȵɐŀPՀ.6>FNV^fL.P106P1>P1FP1NP1$VP1^P1fP1 }0PpmPx-n xxP2`P1o}1.#Ք44 Urm&5D=DEDMDUD]DeDmv~|tld\P+Kŵ`"p!}"`!"!" &.r+17q>rFr3Oq;WqC_qKgqS"ŀp2mp2p1`@2@2##s#suP28.CTT}C@}K10S1}}[1|}k1}s^1}{145d=dEdMdUd]ded4owmۄ|tc?-0KÕ0AuBBA!BpA!BԄQ,B$ݒBB B^A R.&IP61Q>1QIF1QN1QV1Q^1Qf1QB0pRm0pRCRRppQY0RhnS1QmpQ,S]dttm&Ք5=EMUUe4ݠow|ݠtlݠd\]THbpaP}baídýҰaĵb.6>FmNV^[f.50r=0rE0rM0rU0r]0re0rm`Aŀprmupq0r0rccUtutUݔmwwwwwww&wm.yl6yd>y\FyTNyLVyD^y}/K@P ġ 1RsQ&.6>FNݰV^ݠfᘮ upҭ p @ҕҝp\ҭPnUŔ͔-d}}$x}Dp}dh}`}X}ĎP}ҽ5=EMUj]em$v#~##趎##؞#Ц#FK!@ỵإ$#x#p3h3m`3X3P&3H.3<634>3,F3$N3mV3^3 f3u ppmppp 0 44p4sW.}}x}!p}!h}}c`Ur} !P}(!5$=$E$M$U$]$e$4o"w"ظ"ذ"ب"ؠ"ؘ"ؐ"؈DKP BP.@68>0F(N V^f3.P106P1I>P1FP1NP1VP1^P1̸fP1npXnp xmn (2@p `P1}1j44\TLD~F4O<WD_Lgׅ1PK pp2}pp2m4p2ص@2##Z׭# }4[ x.CT}T}C @ }K10S1}[1}c1|rX}s1}K{145d=dUEdMdUdT݂ed4o쀶w܀m̀Ā󼀧-pK pAuBBQ@!BA!BԄQlBdB\fBT BwDB1QF1QN1QV1Q^PtfaQBDnTnTC RڈRnSTTnSaQmОpQ ,-DttD<4,$N& T5=UEMU]݀e4oݠwݠ񬠏ݠ񜠟%qbq ba bmaqa.D6<>4F,N$V^f .50r=0rE0rM0rU0r]0re0rcqqq}prbpqrcc[cjpqcUE~ݔ~~ggggggmg&g.i6ix>ipFihNi`VimX^iPfiHnmUuU}UUUUUU B𰂅uЂ0I 1RsOִ&T5T=mTETMTUT]TeTmаmpmЈpРTTp|Ŵ|ʹU|մ|ݴ||Sepp %bgbgxbgprghrg`rgXrgP&rgPm m Таāࢤ 1Rs(&8J\Qmpݤ`ЈШzzzzzztctctcc ccc%c-e5e=eEeMeUe]eeemv~ĆҼҴҬnҤ}P/XK@@@ ġ1 RsQ&.6>FNV^.fخmp@倈ҕҝҭ[ѐ-xŔUx͔xՔxxx}}$Ҙ}DҐ}d҈}wx}p}ҩh5x=xExMxUx]xexm$ v#~#m#####K@B mᬥ$m##333x3p&3h.sm\6sT>sLFsDNsP1I,FP1$NP1VP1^P1 fP1uЖnpn xЮ(rǝ`P10Ǭ}1.#t4t4tɜɔ%Ʉ|tUĀTr%=Dt5Dt-%EDtMDtUDt]DteDtm v~mܦ=!K@"1 @"$"`!"ȌȄ|tldȍ\&T.s,07r L>sDFs4Or< WrD_rLgrՀ!p21q1p!p2@2$$tǭ$t$Ǹ.CrTr~Tr}CyrO}K10S1}[1}νc1}k1|rP}Ω{1Tr5dr=drEdrMdrUdr]drnedr4o,w#$bbɻb bɛA'K0AuиBpBD!B0A!BԄQȬݑBB͓B BB|2Bt.IPh61QI`>1QXF1QPN1QHV1Q@^1Q84f1Q0CDnTpRDR̀R6CTT&A1PmаAO,tpUtp|tld\T&UUdp5p=ptpMp-e]pep4ow젏䠗ܠԠ Hqaq! babmqqa.6|>tFlNdV\^TfL.50r=0rE0rM0rU0r]0re0ruаapr}prar0rddRarnݔnnXXXWWmWW&W.Y6Y>YFY|NYmtVYl^YdfkY\nEuE}EEEEEEBPm0JЂ၄* 1RsO&E5mE=EEDMDUD]D&eDmаup( pЈD򥰠DЪlŴlʹlմlݴllSVpp U %bWbW݌bWrW|rWtrWlrWd&rWPm} Тࢤ 1Rs(&8J\Qupݤ 𥐠TjjUjjjjtUTtTtTS USSS%S-UU5U=UEUMUUUU]UeUmwv ~ww잢䦂µ/K@…P 0µ0Hġ1ԅRsQp&.P6wH>@Fw8N0Vw(^ fu@p 퍐ҕĝҭThŔh͔hՔhhh{}}$w}DҰ}dw}Ҡ}w}Ґ}ҩ5h=hEhMhUh]hehm$@v#8~#m0#(# ###K B 0ᛵᜥ$m#׸#װ3ר3נ3ט3א&3׈.sm|6st>slFsdNs\VsT^sLfsuP@p}0p0P0ti֝PttŔfff}}x}!p{}!h}!`}!X}sPUTr-Df5$f-$fE$UfM$fU$f]$fe$wf4ob@wbw8b0bw(b bwbb)P0Bpu0HPm0.w6>wFNwV^7f-H50=0E0M0U0]0e0uPRmppnȮ xа-(rP`P10̫}1td4d4dԲ Ur-Dd5Dd=DdEDdMDdUDdj]DdeDdmLv۹D~<4,$㹥+K!@"1 @"1 "1 "m۸&.s,07r>sFs4Or<WrD_rL gr$p2}pp2!p2@2$U$t$ti@2.CbTbTb}}C @}K1z0S1}[1}c1}k1}s1O|rнb5dUb=dbEdbMdb-dub]dbedb4olwd\TLD̀<p-'K0A0BBQ@!BA!BԄQ컄B䄒BܛBԄ ݕBĄBeB.IP61Q>1QF1Q$N1QV1Q^1Q!xf1Q}AmpRpRD RRlATT3 A1QmаA,2.c`t`t`ҼҴҬҤҜҔN&ҌT5`=U`E`M`U`]`e`4oDݠw<4ݠ,$ݠUҍH bqm0ba! baqaݴ.6ݼ>ѴFݬNѤVݜ^єfU.5=EUMU]e mapr}prar0rddеa梽rŔ^jݔ^^H(H HHHHGm&G.I6I>IFINIVI^IxfIpn6um6}65555V5ЏА)Ђၩ1RsO&555=5Em5M5U5]ӛ5e5mа0pm0pЈаР4а佴\Ŵ\ʹ\մ\ݴ\\SFpp Et% bGbwGbGrwGrGrwGrGx&rCGm!} ТࢤT 1Rs(&8JD\0pݤ߭`ЈаPРZUZZZZUZtDtDtDUD DDC%mC-F6F>FFFNFVF|^FtfFlnTvL~D<4,$>/K@P @ ġ1RsQ&.ݐ6>݀FxNpVh^]`fX0$pݭ`ҝ޵0ҭW-DXUX͔XՔXXX}}$}D}d}}ݤҸ}Ұ}Ҩ5X=XEXMXUX]XeXm$`v#X~#P#H#m@#8#0#}ȵPFK m0 ! ጥ$##m333Ǹ3ǰ&3Ǩ.sǜ6sǔ>smFsDŽNs|Vs[t^slfsǕp}0p0Aۭ@0ܭt޽tX`t.V}VVU1PU$KUDUdUUUUTՔV5$V=$VE$UVM$VU$V]$Ve$wV4obwbwxbpbwhb`bwXbPbHc6K!  0u0PtՀ.6w>FwNVw^fg.P106P1>P1FP1$NP1VP1^P1!fP1}0PpmPpȮ xȆڵPr`P1[s.#T4T4Tr$UDUdU UݤUU "V "MV\!!<v!!V"V"!!T7#n㹨v㹠~m㹐㹈[xmP<,K@"@!m0"!"`͠!"(۹ m&.s6s۸>sFs6NsVs^s,Pgr#ŀp2}pp2!׭@2@2*$$حt1EڽtP2t]DRTRTR9~pA} D} 2} 2} 2} 2}2}2}2|}2t}2l}2d}2\}2T}2L}2D݀obwbx݀bpbh݀b`bX]bPb%BpAuBBPA!BA!BԄQ{QBBB؄BЄB-IP51Q=1QE1QM1QU1Q]1Qe1Q}pAImppRnTD R̀RpA0RˬrpA1QŀA,V1P.cPtPtmP&û~~Sm~S~c~cۤ~c~c|SnÄv|~tlmd\T}JKba}ba%d͠apbm&̶.6¸>mF¨N V˜^fˆcŀpr}praAӍrrddԭ@cֽ}0t~PrUNݔNNmۭ&.565>5mF5N5|V5t^5lf5dnëvë~ëmë|ët[lëdë}4K𰂅BupPJЂ* 1RsO&ж6Ӫ>ӪFӪmNӪVӪ^[fӪuTpнmаҥРԪUPԽLŴLʹULմLݴLLm###۱#&#ؽ44444{4o4g4nUu}U}E:}~``ТāRࢤ 1R!s(&U5=EMUU]emν@pݤ@mаХФԮҽJJJJJJC(}{$K }DS}d[}c}k}s}{!CCmCSSSS̶&Snvm~۳xphc@$KC{@@|ġR 1R!sO&l.6>۲FNV^fDP̽@pmҝQΥҭнUHŔH͔H-HHH~qw~ x~ wp~ h~ w`~ X~wP~H~w@~8~w0~(~w ~~~nCvC|~CtCmlCdC\CTCdytz@@@@a{d{t|d|DCCSmSSSK&S-p0Q5p0=p0Ep0Mp0Up@0]p0ep0mtuPPp}Ppd˕PPḁPT*tνTtUFFFtDU)1Psm4,$ۦ& ld\TL4F<4݈obwb݈bb݈bb]bbmp6DKw``BxyHPzՀ.w@68>w0F(Nw V^wf.P&I6P1>P1IFP1NP1VP1^P1fP1n pȮ xЮ(r@̡`P1@3ED4D4D픪Il \۪TLDv<&4V,Vg"$VmV#V# V#VTmncvc~c۩؆cЎcȶccc= lKu@"1 v`"!"`!"dhc`cXsmPsHs@s۩8&s0.s$6s>sFsm NsVs^s[fs#up p2mPp2p!Ǎp2@2$$ȭtP!ʽt݀2VSBTBTB}(L @м{9 p!}*2w}+2},2w}-2}.2w}/2}02w|}12t}22wl}32d}42w\}52T}62L}!2Dnv㭸~㭰m㭠㭘㫭mpBs0AtuиBBQ!BA!Bۭ@80( -&-IP51Q=1QE1QM1QU1Q]1Qe1Q`AupR}pRD@`RmЈRAƥTRDȽDs@t@rt@a$}7bw}?b}Gbw }Ob}Wb}_b}vb~R~gbw~R~bw~b~c[~c|7cn#۳v#~####|#t#(GKqeq`raasamPatqa$$#m#3 3۳33&3.363m>3F3N3۲V3^3f3cu0pr}0pr0aÍ0rqjddĭ4`cƽ4r~;Ȝ>ݔ>z>XU$rmPH@۞80(v& %w%%w%%w%%x&%pnvm~Ćۛ}4XKo0pu0mBqЂ0rR၄ 1R!s&ۛ6>FNVm^fخAupp!Ј¥VĽ<ŴU<ʹ<մ<ݴ<<PU7"H@#8#m0#(# &#!$Ȥ!$!${1$1$1$1$g$Unu}U}:m}nmPТHࢤ1Rs1T&5=EUMU]emupݤЈЈª::::::PCqh}$K`}DSX}d[P}cH}k@}s8}k{0m&nvۣ~Іȶmp@dK!kl0 ġ© 1Rs&Ҷ.6>m FNV[^fđupļ@ҕҝҭ}8Ŕ8͔8Ք888~(q€~)x~*p~+h~,`~-X~.P~/H~0@~18~20~3(~4 ~5~6k~!nCvC۫~CCCC|CUtCditju`kdkjtldlD$C۫CS SSS%&S-pH5p0=p0Ep0Mp0Up0 ]p0ep0mtuPp(}Ppd0DPaPTtTtUe6j66tsߖ|UJ1P̶ld\T&U6eld6T-D4obwbb"舏bb؈bЈbK!gPmh0iu00jtՀ.6wx>pFwhN`VwX^PfgH.PI<6P14>P1,FP1$$NP1VP1^P1a fP1unYpn xmЮ(r`P1U3t44444픚I ۚ|n&tVlVdV\V#TmV#LV#DV#ksmTFsLNsDVs[<^s4fs堂!m5}pp2p!p2@2$$t$t$T25T2}HT @}I29@p!̻}K2}L2}M2}N2}O2}P2|}Q2t}R2l}S2d}T2\}U2T}V2Lk}A2Dnv۝~趎؞UЦ㝭Bc0AduBQAQ!BmаA!Bmxp۝h`XP&-IP51Q=1QE1QM1QU1Q]1Qe1QD upRpRDRRAR)AAs0t0rt0aD}7bw<}?b4}Gbw,}Ob$}Wb}_b}R ~S~gb~R~b~b~b~b|7c̶n#v#~#m###[##qHKaaq`!baaca adqa$D#<#43m,3$33c&3D/263ۢ>3F3N3V3^3%f3apr}0pr0a0rdճdd4ʮc4}r~[и.ݔ..kUDrێxphv&`www&|nvm ~ۋ잣Ë04K_ՠ`RaЂbR၄1R!s&ۋP6ӋH>Ӌ@FӋ8NӋ0VӋ-(^Ӌ fӋuAup}p!RԊ,ŴU,ʹ,մ,ݴ,,U?"#x#mp#h#`&#X!Ԥ!̤!{Ĥ111gUnu}U0:]}^ ТHࢤ1RsOT&5=EUMU]eumpݤԎ******PC }$K}DS}d[}c}k}sx}k{p۱ m&n v۔~𦣓ФK![\ mѱ0ġ©1RsO&¶.\6T>mLFDNwFNwV^wf.P&I|6P1t>P1IlFP1dNP1\VP1T^P1LfP1uPmppp@ x-(rP`P1̪3Ŕ$4$4$픊I! ۊ&mVVVVV#mV#V#|Tmtnchvc`~cۊXcPcHc@c8c=00KU@"1 V}"1 "͠!"dccsmsssۉ&s.s6s>sFsmNsVs|^s+tfs$ŀp2}pp2!p2@T2$$tmJ!t2S"T"T"}h\ @}i2}j29`p!}l2}m2}n2}o2}p2|}q2t}r2l}s2d}t2\}u2T}v2Lk}a2Dn@vێ8~0( U㎭BS0ATmQABQ!BA!Bm㍸㍰ۍ󍘖&-IP51Q=1QE1QM1QU1Q]1Qe1QmA!mU}pRDŠRRARTAVs t t ad}7b\}?bT}GbL}ObD}Wb{<}_b4}R,~S$~S~S~c ~c~b~bm|Rn#v#ۓ~#Ԇ#̶#Ė###phK!Qaq`RaaSa͠aTإqa$d#\#T3L3mD3<34&3ld/2 63>3ۓF3N3V3^3f3aŀpr}0pra0rqdZd4c4{t~{Ыݔ~~~Udr~~~&~m %n|Tv|L~|D|<|m4|,|$=|ՁKOՠPQQR၄T1Rs&{6{>{F{mxN{pV{h^[{`f{XuPp}p儡ЈаР{UŴʹUմݴۂmUG"##ۂ#&#!!ؤ!Ф1Ȥq{11ognUu}U:M}NТRࢤ1R!sq&U5=EMUU]emupݤ@ЈЈаФPC }{$K}DS}d[}c}k}s}{ m&۠n`vX~PHm@80}@KK…Lm00@ ġ*1Rs&.m6>FۃN|Vt^lfѱHupĜ$mԝ0RU͔Ք~hq~ix~jp~kh~l`~mX~nP~oH~p@~q8~r0~s(~t ~u~v~anCvCm~CԆC̎CۋĖCC*CdItJuP@pKdKtLdLDdCm\CTSLSۋDS<S4&S-pH5p0=p0Ep0Mp0Up ]pXepXmtmp(}PpdDaPTt՞TtT|.twmsvsvvU1Pvv&vVՔld\UTLD<4obvwbvxbvpbvhbv`bvXbvPbvHc7KG  HpBIŀ̀JՀ.v6u>uFuNuVu^uf3u.PIu6P1I>P1FP1NP1VP1^P1fP1}0npZnȮ xeЮru`P13u344{,{$6{{) iz&wzVzVg"wzVzVwzVzVzV#T7#nczvcz~czmczczc[zczxcz}=,KEm0"0!F`"!"`͠!"dz(cz czszszszsym&sy.sy6sy>syFsy̶NsyVsy^sy%fsy`!ŀp2mp2p!p2@T2$$tyJ!tyP2y]TT}d@}2}2}29p!}ݍ2}2}ݏ2}2|}ݑ2t}2l}ݓ2d}2\}ݕ2T}2L}2Dn~v~mx~~p~h~`~X~P*~CC0ADuBBPA!BA!B~}}}m}}K}&}-IP}51Q=1QE1QM1QU1Q]1Qe1QmA upR}pRDŠR̀RPAR)}pA}ŀA{Pstrta}7bw|}?bt}Gbwl}Obd}Wb\}_bT}RL~SD~S3m0F3(N3 V3ۃ^3f3cŀprmpr0aA0rqdd4c4t~ИUݔooooU(nnn&nm&mnlvl~ll|ltllldl>5K?P@PAЂBT1Rs&kж6k>kFkmNkVk^[kfkuTp儑kUP Ŵ ʹU մ ݴ sssn#rUO"r#r#r&#rݤ""ݤ"ܤ2ݤ2̤2ݤ2'npup}pppppp;=>Тāࢤ1RBs1&o5o=oEoMoUo]oeoDmupݤHoU PC w(}$K }DS^}d[lP}k}sqv}{!,$m &ېntvt~tttmtxtpthcA$K!;< 0 ġ© 1Rs&¶.s6s>smFsNsV[s^sfs"upČҕҝҭsĐŔ͔-~q~x~p~h~`~X~P~H~@~8~0~(~ ~~k~nC|vC{~C{C{춎C{C{ܞC{UԦC{d9t:u@`;d;jtf0Ff(Nf Vfm^fff.P&Ie6P1>P1IFP1NP1VP1^P1fP1n pȮ xЮ(re@`P1 3eE44kmlkdk\kTkL1 t<&k4V,V$VV#V# VkVjTjmncjvcj~cj؆cjЎcjȶcjcjcj>p=lK5"1 6@"!"͠!"djhcj`cjXsjmPsjHsj@sj8&sj0.sj$6sj>sjFsjm NsjVsi^s[ifsi#P p2mPp2p!p2@2$$tiP!ti݀2ViSTT}l @}2}2}2}2{9}2w}2}2w|}2t}2wl}2d}2w\}2T}2L}2Dnnvn~nnmnnnnC30A4uBBQ!BA!Bn@n8n0n(n n-n&n-IPm51Q=1QE1QM1QU1Q]1Qe1Q͠AupR}pRD@`RmЈRATRmDmDkstrtat}7bwt}?bt}Gbwt}Obt}Wbt|}_btt}Rl~Sd~S\m~ST~cL~cD~c<~c4|S,n#t$v#t~#t#t #tm#s#s#}sm0JK1aq`2aa!3a͠a4qa$s#s#sm3s3s3s|3st&3sl.3s`63sX>3smPF3sHN3s@V3[s8^3s0f3sau0pr}0pr0aA0rqdd4rc4rr~Јݓm_X_P_H_@_8kUr0_(&_ жm&n\v\̶~\Ć\\m\\}\}5XK/00u0mа!1Ђ02ၩ1Rs&\m6\>\F[N[V[^[f[خupp儁k[ųͳճjttcPcHc@#c8n#c0UW"c(#c &#c"""22ؤ2Ф2[Ȥ'n`uU`}```U```};!-}.PmТࢤT1RsH1&`5U`=`E_M_U_]_e_m~(up~ݤ_Ŕ͔ՔttPC gh}$K`}DSX}{d[P}cH}k@}Ľs8}{080m( ہ&ndvd~dmІdȎdddddK+,`0 ġ 1 Rsa&.d6d>d FdNcVc^cfc|up |}ҕD~ҭc}Ŕ͔Քtt~q~x~p~h~`~X~P~H~@~8~0~(~ ~~~nCl$vCl~ClmCl ClC[kCkCkd)t*u`+d+t,d,DkCkCkmSkSkS[k|Skt&Sk-pHk5p0=p0Ep0Mp0Up0]p0ep0mtzuPp}Pp{Bd{0Pa|PTTjt~TjtUTjtttWsW|sWmtWlWdW\U1P&WUldT-D<4obW݈wbVbV݈bV舏bV݈bV؈bVbVK'Pm(0B)u00*Հ.V6Vx>VpFVhNVm`VVX^VPf3VH.PIV<6P1I4>P1,FP1$NP1VP1^P1 fP1uxnp,ny xpzmprU̝|`P1U3Uttt[[[[[M[9 ~%tVlVdmV\V#TV#LV#DV[sZTFsZLNsZDVsZ-<^sZ4fsZ堰!Avm5}pp2p!wpP2@2$x$xtY$ztY$zYt5t}t @}2}2}2}2}29pa|}2}2|}2t}2l}2d}2\}2T}2L}2Dn_v^m~^^^^؞^*^C#0A$uBQAQ!BmаA!B^^x^p^mh^`^XK^P&^-IP^51Q=1QE1QM1QU@1Q]1Qe1QDtupRpRDuRRAvR]Ax]AyV[sttad}7bd}?bd}Gbd}Obd}Wbd{}_bd}Rی~S~S|~St~cl~cdm~c\~cT|SmLn#dDv#d<~#d4#d,#d$#d#d#d>JK!aq`"aa#a a$qa$c#c#c3c3c3cm3c&3c.3c63cx>3cpF3chN3c`V3cmX^3cPf3cHcrpr}0pr0as0rqdtdtV4ccv4b ^r~۰xݔOOOOOxOpUrh&O`mռմ&լnMmvM ~MLLL֞L䦣L05Kՠ !Ђ"၄1 Rs&LP6LH>L@FL8NLm0VL(^L f Lupup}p qqrKtŴʹմjݴSSS#Sxv#Sp#ShU_"S`&#SX"ջ""Ի22Ի2ܤ2[Ԥ'nQuUQ}QPPUPPP0;!} ТࢤT1RsH1&P5UP=PEPMPUP]PePun(mpnݤopOrPC W}$K}DS}{d[}c}k}Ľsx}{pqDqTLFTDNTFFFNFVF^F͐fF.PIF|$6P1t>P1lFP1IdNP1\VP1T^PB1LfP1uPhmbppn@i xj(erEPl`PV1E3EŔ44KKKKmKKsK&A nV۬VVV#V#V#V#|TtncKmhvcK`~cKXcKPcKHcK@cK8cK00K@"1 }"1 "`!"dJcJcJsJsJmsJsJ&sJ.sJ6sJ>sJFsJNsJmVsJ|^sJtfsJ$fŀp2}pp2!gp2@2$hJ$htJmа!jtiJ2JSTT}| @p}2}2}2}2}2}29palw}2|}2wt}2l}2wd}2\}2wT}2L}2mDnO@vO8~O0O(O OOOJC0AmQABQ!BA!BNNmNNNNN&N-IPN51Q=1QE1QM1QU1Q] 1Qe1QmAdmU}pRDeŠR̀RAfRMThҽMAiL*sttawT}7bT}?bwT}GbT}ObwT}WbT}_boT}R~Sۤ~S~S~c~c~c|~ct|Sln#Tmdv#T\~#TT#TL#TD#T<֞#T4#TuqKCaq`aaa aqa$S#Sm#S3S3S3S3S&3S.3S63Sm>3SF3SN3SV3Sx^3SpVf3Shcbdb}0prac0rq*dddd4Saf4St|;hݔ??ж?????Urm&Ÿn=Tv=mL~=D=<=4=,=$z=ՁKՠ-ၩ1Rs&DmFDND|V[Dt^DlfD"\up\]m]^HҭD`U͔Քش|(qbw|)x|*wp|+h|,w`|-X|.wP|/H|0w@|18|2w0|3(|4w |5|6|!nCLdvCL\~CLTCLmLCLDCL>>%>->5>=>E>M>U>]>e>m>u>}>>>>>>>>>Ŕ>͔>Ք>ݔ>>>>>> ===%=-=5===E=M=U=]=e=m=u=}=========Ť=ͤ=դ=ݤ====== <<<%<-<5<=$K0VAD|DC!B A!BԄw@ BwBBwBAR*R..61QI>1QF1QN1QV1Q^1Qf1QADnTnTD RmTCRD1QT,W}C0EPPP}4K}$Qw}DR}dRw}R}Rw}R}R~R~Sm~S~c~c۠~c~c|Sn#Āv#x~#p#h#m`#X#P#HcKK! b a b a b ab$##33m33&3.3ü63ô>3ìF3äN3mV3Ô^3Ìf3 }0aprmu0aӍ0r0rdԪdԭ4dֽ4þutd0.NNNU1P}$=B0x}Dr`qh}`qX}%`q~`@K.)uP8.0Hm0$V}P0~0@$h~}#8@$`~C@@$X~cH@$P~P@$H~}X@$@~`@$8|#h@$0cŬ2Ђ ބ:|:1Rs󁵚8!(|pK#|q0|r0|s0|t0|u0||v0t|a0 н@p pѵEvlcp#]H.LܾԾ̾LLqtTsm4l&\K}B.~800H50FN Vݼ^fDm̽@p倈ҵEΥҭЪHŔH͔HՔHJHHPQP1PA`A$ `A`A` Aټ%`(A@6C=`@AE`HA$M`PAU`XA]``Aټe`hAnCvCx~CpCmhC`CXCPCdytz@@@@a{d{d|d|DCCSmSSSK&S-p0Q5p0=p0Ep0Mp0Up@0]p0ep0mtuPPp}PpdPaTjdνTut,.CEFFFlxUD\UdTULUDUĮ1F1 N21V^YafY5npȮ xچЮ(2`Y݀nU$ 3D4D4D! %4Vv,Vg"$VV#V# Vv#V"T7"ۧncvc~c؆cЎcmȖccc:u"1Bv}"!wŠ"`!"dhc`cXsmPsHs@sK8&s-H1502=02E02M02U1]X2eX25!p2mpp2p!Ǡp2@2$$RtmP!ʽt݀V2U7"UBTBTBԪ`.lpPH۪@80&( 6m>FN˪Vˠfnvm~ІȎ۩㩸㩰㩨@dKs0AtuиBBQ@!BA!B۩`XPH@m80&(.۩6> FNV^fD =pRepRDQQ̀REAMRը}TȽD,@t@t@a }7b}?b}Gb}Ob}Wb}_b}b~R~gb~R~b~b~c~c|7cn#v#~##m##x#۴p#h$KCqaq`raasa͠atqa$ #m#33۴33&3.363m>3F3N3۳V3^3f3`qqmqq0aÍ0rqddĭ4dz4ddUe>ݔ>>}J0tU)1P}Drquh}qvX}%qwOLKoU0p]80q0Hm0arX}0snmu}Boՠаp-qЂ0Ir 1Rsִ&5=mEMU]emаup}pЈ¨РĽ<Ŵ<ʹ<մ<ݴ<F NV^fm0pļҵщѝbҭmp8Ŕ8͔8Ք8884$PQPA`AI `A`A` A%`(A-`-8>CE`HAIM`PAU`XA]``Ae`hAnCmvC~CC۬CCxVCpCditj@@pkdkdltlDm CCS۬SSS&S-pH5p0=p0Ep0Mp0Up0]p0ep0mtuPpeptmtPqMTիtTt,6CE666lpUdUUUĮ|UtldT46Dt64o"(w" "b""""igLUF`hаiŀrijՀnmx'2p.P&Id6P1\>P1ITFP1LNP1DVP1<^P14fP1npȮ xЮ(rmP`P1 UD 3444441 %tVlVndVD\V#TV#LV#DV#PFHNۚ@V8^0f(n vm~ۚPKcQ@duиBBQ@!BmQ@!Bۙ㙘㙐mxp&h.ۙ\6T>LFDN3F3N3V3^3f3d@ŀpr}0prea0Prqdd4`4dWdѣ.ݔ..R0d{}$rxUJ1P}dqeh}݄}qfX}}qg=HfXK_U0!`]80a0Hm0bmPX}0cnu}m _p!`upaЂ%b၄ 1Rs&5=EMmU]emаup`p儱eР̈́,Ŵ,ʹ,մ,jݴ,,tsӀTpĶ4l&\K ]m0^8e0_HP0TFLNDV<^fupp =ĝҭİ(Ŕ(͔(Ք(((4$P1PQ`AI `A`A` A%`(A-`0Al5`0FCIM`PAU`XA]``Ae`hAnCmvC~CCۜCCVCCdYtZ@tZp[t[d\d\Dm@C8C0Sۜ(S SS&S-pH5p0=p0Ep0Mp0Up0]p0ep0mtuPp}PpPEaPTjtTt,>CUE&&&^U${hUwUUWUldT4&D<4obh݈wb`"X݈bPbH݈b@"8툧b0KoWLUf`!XpYmPZՀ茑ݒ،ЌȌی'2L.PI6P1>P1FP1NP1$VP1|^P1tfP1 npnV xЮ[(rmP`P1[Ud 3$4%$4$! %VVVVdV#V#V#|Ttncmhvc`~cXcۈPcHc@Vc8c:!Um"1V`"1$mp!"dۇccضsss-s&s-H1502=02E02M02U02]02e02$upp2}pp2E!p2p2$$RtmP!tV2UG"U"T"T"Ԋӊ-S> ۊ㊸㊰&㊨.㊠6mF㊈NۊVx^pfhn`vmX~PHۊ@80㊥>KSpATuиBBQ@!B0A!Bۉжm&.ۉ6>󉌶FN|V-t^lf=AA=pRepRD RREAMRRՀA􉍰VA,t t t a`}7bX}?bP}GbH}Ob@}Wb8}_b0}mR(~S ~S~S~c~vc~b~b|Rn#mv#~#І#۔Ȏ####pdKQqaq`RaaSamqb`Tqa$`#۔X#P3H3@383m0&3(.363۔>3 F3N3V3^3f3du0pr}0prEa0rq*dd4}`4tdVѓ|ݔZ0T}$rx}DrUk1P}qU}qVX}n}qWHf`OU0P]8R0Q0H.R0XXp0SnuU}U!O0Pu0QPЂR၄ 1RBsV&5=EUMU]eńupp儡=H0UŴʹմݴtpspMTsp pq4ql&q\KMU0NmP8p0OH50qFqNqVq|^qtfqĜup ҕDҭq0Ŕ͔Ք4$P1PA`QI `A`A` A%`(A-`pd5`8A=`K(NCU`]``Ae`hAnCmvC~CІCیȎCCVCCdItJupKdKdLdLDm`CXCPSیHS@S8S0&S-pH5p0=p0Ep0MphUpP]pPepPdQ=ptd!̀PaPTtTtU,FCEyu,U$$UDu#`UUtU JldT4D<4obtwbtbtbtbtbtbtxbt}5,KGLU `H0!Iu0̀JPt( tݕs͌'2s.Is$61>1F1IN1V1^1f1UlnȮ xЮ@ers`P1PUU 344!yB 8!x%v "VxVg"wxVxV2oxV "V"xV#T7#ncxvcx~cxmcxcxc[xcxxcx;Emа"0!F@"`!G"`!"dx(cxm cxsxsxsxsw&sw-H1w502=02E02M02U02] 02e02U!p2}pp2p!M2@T2$$twʰ!twP2UO"UTT{ {{mS{F`zz&z.z6z>zmzNzVz^zfznzvz~zmzzzxzpzhc?$KC0ADuBBPA!BA!Bzm zzzzyy&y.ym6y>yFyNyVy^yfỳA =pRppRDRmTEA0RyDyT,tt\a}7bpvRp}Gbh}Ob@RRP}RH~S@~S8~S0~cMR m~c~c|Smn#v#~#ۄ##ඖ#؞#Ц#>KKAa`Ba aCa aDqa$ۄ#x#p3h3`3mX3P&3H.3ۄ<634>3,F3$N3V3-^3 f3`pr}0pr0aMrqddR4a4UnrdуUݔbqD}$rPr}dqEhU^1P}qF`n}qGHfOpK?U0@]80ApHp0aBX0CnUu}U?@m-AЂB၄ 1 Rs&5=EMU]eఁmpp p儑e"РаU Ŵ ʹ մ ݴ t`s`Ts``ia4al&a\K=U0>800?H50 ТRࢤ 1R!s1(&8J\mppݤ5pBРU } }b})}J}k}H`}}}}0]K<0-ŝ0=tF50aFaNaVa^afapHmppČ ҕҵpҪaԐŔ͔Ք4}P1}PA}`A} `Q}D}$` A}%`(A}-`pI}5`x}=`}E`}(U`XA}d]``A}e`hA}nC}vC|~C|C|C|C|؞C|ЦC|d9 t:mt:@`U;d;tP1FP1 NP21VPc^PYafPY5n p` xچЮ(rc`PY݀nU 344!i %4V,V$VV#V# VvV"hThnchvch~ch؆chЎchmȖchchch;5@"1B6}"!7"`!"dhhch`chXshmPshHsh@sKh8&sh-H1h502=02E02M02U1g]X2eX25!upp2}pp2p!p2p2$$RtgP!tg݀V2UW"UTTk`kmXkPkHSkk@Nk0&k(.k 6k>kFkkmVj^jfjnjvjض~jІjȎjmjj{jPdK3pA4mpBBQ@!BA!Bjm`jXjPjHj@j8j0&j(.jm6j>j FjNiViV^ifiD=pRepRDQQ0REAMRij}TiD,Uttau}7bu}?bu}Gbu}Obu}Wbux}_bup}Rh~S`~SX~SPm~cH~c@~c[8~c0|S(n#u v#u~#u#u#u#tm#t#tpK1aq`!2aa3a a4qa$t#t#t3tm3t3tx3tp&3th.3t\63tT>3tLF3tmDN3tRFR NRVQ-^QfQm0Hlp|} ҵщѵ~Ҩ,Ŕ͔Քtt4mP1mPAm$`Am `Am`QIm` Am%`(Am-`pm5`xm=`mE`HAmM`mDe^Cme`hAm(nCm vCm~CmCmCmClClCld)t*m@pU+d+d,d,DlClClSlSlSl-xSlp&Sl-pHl5p0=p0Ep0Mp0Up0]p0ep0mtAzuPpPp{d!{0Pa|PTkt~Tkt,VCEttUU$UDUdUU#PUtJldT3D<4݈obU(wbU ݈bUbU݈bUbU݈bTbTK'LU`(pB)u0*ՀTݑTx͌'2Tp.PITd$6P1\>P1TFP1ILNP1DVP1<^Pb14fP1xnpȮy xچЮz(2rS0|`P1S UU stt!Y ~%tVlVdV\V#TV#LV#DV3dlF3ddN3dm\V3dT^3dLf3 du`rmpr}0prq`s0rqdtdt4c`vr4cmиrdUcŔݔ퐽rq$}$rx}Dr}dq%wh}}q&XU1Px}q'HfKU0 ]8B0!0Hm0"mXX}0#nuU}ŅōŕUŝťŭ!0 m!Ђ"၄ 1RBs&5=EŪMU]emаpup}pqqаrР̈́tŴʹմݴt@s@Ts@@@MA4v%}A\KmB080H0BTFBLNBmDVB<^B4f Bmlppݠm=ҝnҭApt͔Ք*4]P1I]PA]`A] `A]`A]`Q]$%`(A]-`p]5`8AI]=`]E`HA]M`]U`]XrmfC]HnC]@vC]8~C]0C](C] C]C]UC]dt@@`djtdD\C\C\S\S\S\S\%&S\-pH\5p0=p0Ep0Mp0Up0 ]p0ep0mtjm}PpkdktQlPT[tnT[to,^CtEEU$UDܻUdUkUE#ldT4D<4݈obEhwbE`݈bEXbEP݈bEHbE@݈bE8bE0KLU`0ݠBmPDݑ،ЌDȻ͌'2D.ID$61>1F1IN1V1|^P1tf1@hjnpnȮi xЮj(erDmPl`P1UrU 344!I %nHVVVV#V#mV#V#|TmtncIhvcI`~cIXcIPcIHcI@cI8cI ;@"1@"1$`!"dHcHcHsHsHmsHsH&s H-H1H502=02E02M02U02]02e02$fmp2}pp2P!gp2@2$h$htHmP!jrtH2UUpUTTKKKжKKKmSK^lH.K6K>KFKNKVKmxKpfKhnK`vKX~KPKHK@K8K0K?OK0AuBBQ@!BpA!BJJmJJJJJ&J.J6Jm>JFJNJ|VJt^JlfJ=AlqpRepRDe RREAfMRJAhJAi,&n*ttaU0R0R@R @R@R@R}R~S5@R=@RE@RM@RU@R]@Re@Rhn#U`v#UmX~#UP#UH#U@#U8#U0*#UK@aq@aaA aqA$T#T#Tж3T3T3T-3T&3T-P01T5P0r=P0rEP0rMP0rUP0r]P0reP0r=abmpr}0pr0aAc0rqdddd4Taf4T܍rdSݔzq}$rx}Dr}dqh}}qX}U1Ph KU0u800H.0X}V0nuĶ}UĶĶĶUĵm)Ђၩ 1Rs&5Ե=ԵEԵMԵUԵ]ԵeԵń`up paa=ebఁdŴܪʹմݴܶt0s0Ts0m00141l&f> \K 0!mp800H502F2N2V2|^2tf2\up\]mpҝ"^ҭ2]U`-Ŕ͔ՔU4M4UM4MDM DMD%MDM%`QM-`pUM5DM=DMEDMMDMUDM]DMp&bUnCMuDM}DMDUMDMDMDMDMd t u@@ d d d DLDLDLTL TLTLTL%TL-TL5TL=TLETLMTLUTL]TL eTLmtZuPp}Pp [d[̀@Q\PTLt^TLt_,fCdEjr߼}H8}{P}X}`}h}pW}xldT4D<4ob'݈wb'b'݈b'b'݈b'|b'tb'm0((K!  0 m̀ Հ'$ی '&6'2&.PI&6P1>P1$FP1NP1VP1I^P1fP1XnpnȮYU xЮZ`r&`\`P1P} 34Ԛ4r(m( ('''&'5=ԪTM4]Զe4nc'vc'mx~c'pc'hc'`c'Xc'Pc'-*Km0"@!}"`!"!"d'c&c&s&s&s&s&&sL/r&m6s&>s&Fs&Ns&Vs&^s&fs&}p!V mp2m5p!WM2@2$X$Xt&*$Zt&u4Z &8STT|(A\}H9}P1}X1}`1}h1}{p1}x145=TҪMU]em4n'v'~''|'t'l'd'>},K0AuBBPA!BA!B'' '&m&&&&&.D7L?TG\OdW&^&f&CT=pRepRDU@R̀REAVMРRAX&@^CY,,stt>K>(U$R UDRUdRURUR{UQ=U bT5=ЪMU]eл4o=w======x= }Dmаba!}babd-a b"w=("= "w=2=2w=2=2<'<.3<50r=0rE0rM0rU0r]0re0rmaRmpr}0pr0aSMr0rdTdTR4<aV4<nrd<@UݔPﷀU$rxUDrpUdrhUr`UrXUĮrPUrHm ۹&nm@v8~0ۤ( äcK mЂT 1Rs&|6t>lFmdN\VT^KLfӣ]PPp}pQQmeRРԢTETŴʹմݴ̴S}qVӮD.T6HZo}а`ТÂࢤ 1RBs1( &8J\NpNݤO倈PРURԵʴ-D|t<.@RϮ F N V ^ f }0Lp LpM倈ҕDpNҭ pPŔ͔ȪՔ4K6}$5}D}d}}}}T-5=UMU]eUm$5u$5}$5$U5$5$5$5$5 Daaaaaaa$5$4$444 444444%44-44544=44E44M44U44J]44e44}q Juqqmq KqqlLL4U4N44uNt4ƴ}$@8p}$ p}}$ h}$ `}$ X}$ P}$( 5$ƪ=$E$M$U$ƺ]$e$4obwb܈bԈb̈bĈbb۴bhKCP` ŀ̀iՀ.d6\>TFLNDV<^4f,.PI $6P1>P1FP1NP1VP10^PYfPYHn`pnI xnJ(rnL`PY}$V044\U$LD<4,&S$5D=DEDUMDUD]DeDmmv~= DK"1 "`!"`!"@80m( c&L/r6s>sFsNsVs^s5fs#F1q1}pp2pp1Gp2pl2#H#Ht@p1Jt#Jx.CTT´})@~ @L|zx})P1})X1})`1})h1})p1})x1ª5d=dEdMdUd]ded4oԀẁm}QX'KpAuB0BQ@!B0A!BԄQTBLBDB<#ݕB,B$EB.IPD0R>1QFaP\HRVIQ^IQ4fIQخBDmpR6CDCE R̀RpQFTT1pQHIQ=nSI,5dttpa.whU$R`UDRwXUdRPURwHUR@UR8UR0TU=UEMU]e4o-ݠw--ݠ-Р-ݠ--M-paqa!aa-h-`-X-P-H-@-8'-0.-50r=0rE 0rM0rU01,]Xr0eXrm`Buqq}qqqCqlqcDcD),pqF,rV,ݔyPU$rwUDrUdrwUrxUrwpUrhUrm`0(۩ &UnuĔ}ĔUĔĔĔBupPJЂ* 1Rs&5ԓ=ԓEԓMԓUԓ]ԓeԓ}@`uppACAЈpBдԓDŴʹմݴ崼.F|}$KvV\<~$x>PZo డ డТHāࢤ 1Rs(&8J\>up>ݣ?@ЈЈp@ШpBԺԺԺԺԺԺe-D|t5GYnmv~V . !0…P@0ġ©1RsQ&¶.6>mFNV[^fưҭU@-Ŕ͔Ք&w@}$8}Dw0}d(}w }}җ}5=EMU]em$%u$%}$%$%$%$%$%$% D a aaaa$U%$%$%4% 4U%4%4%%4%-4U$54$=4$E4$M4U$U4$]4$e4$:uqq}qqqq0;qq<Zt$>t$E}D~}DHUDr}D }D }D }D ;}D( 5$=$M$U$]$e$4ob$wbbb bbbbKC mа0upPiՀ.6>FNV|^tfl.PI`$6P1X>P1PFP1IHNP1@VP18^P10fP1K8npnn9U xn:m:rn<`P10<}]D0.#4u4UDr|tlV&=D5D-%EDMDUD]DeDmv~m؞Ц}*K1!1 @"!"m1 "mxph`XP&L/r<6s4>s,Fsm$NsVs^s fsu 6@upp2mp2pp17p2p2#8#8tp1:tu4.CTT}J}@ @<}JH1ߴ|rp}{JX1}J`1}Jh1}J=p1}Jx1UT=dEdMdղUd]ded4mow ##6쀟䀧p,KpAuBBQ@!BpA!BԄQBnBB|v#BlBdB\.IPD%0RH>1Q@F1QI8N1Q0V1Q(^1Q f1Qu@4eDnTnTC5hRRnS6TTcpQ81PnS9,TttpaU$RUDRUdRU݄RURU]RxURpT5=EMU]e4o(w npBaaamqaݤݤݤx-'p.50r=0rE0rM0rU0r]0re0r`2@uqq}qqq3qqc4c4pq6Xrݔ售PU$rUDrUdrUrUݤrUrUrxDm<4,ۙ$V& nuĄ}UĄĄĄUĄߵu)Ђ⍑ၩ 1Rs&5ԃ=ԃEԃMԃ*Uԃ]ԃeԃmа0up p 11Јp2Рԃp4Ŵʹմݴ崬CY&66 SfY ~pۏdV4~ DFXo}޵mаТHࢤ 1Rs(&8J\.up.ݣ/@ЈЈp0Шp2ԪԪԪԪԪԪYTe-D|.@Rώnv~m莣[؞Ц. ۵ѱ@ @ ġ1RBsQ&.<64>,F$NmV^ f@,m ,p-ҕDp.ҭU0Ŕ͔Քw}$x}Dwp}dh}w`}X}GP}ҽ5=UMU]Uem$u$}$U$$$$U$D  aaam$$$4 444%4-454=4E4M4*U4]4e4@*uqq}qqqq0+qq,,tp.t0tĦz}d݀}dx}dPpUdr}d `}d X}d P}dV( ݽ5$-$UE$M$U$]$ݦe$4oa{dwa\aTaLaDaFNV^f+.P6P1I>P1FP1NP1VP1x^P1p4fP1h(mPppn p) xȆq*mp6q,`P1}d0۪Ĥ44UgdY &U5D=DEDMDUUD]DeDmw@v8~w0(w w0K"1 `"!"p!"w3;pC&K/q|6rwt>rlFrwdNr\VrwT^rLfr3uP &p2}pp2@p1'p2@l2#(#(sPp1*s4.CTT}k@> @,}kH10}P1|rh}k`1}kh1}kp1}kx1Ģ5d=dEdMdUd]ded4oTmwLD<4,$Հ,Kӕ0AuBBQ@!B0A!BԄPB̄BĄfB#BwBBU..B0R>1QF1QxN1Qp$V1Qh^1Q`f1QMXB$m0pRnTC%`RR06pQ&TTpQ(1QnS)W,2.cttpaU$RUDRUdRURUݤRURURT5=䠪EMU]e4ohw`XPH@8&0pѵaqaӐaԥqaݤ ݤ ؤ ݤ Ȥ ݤ ' . 50r=0rE0rM0rU0r]0re0r m`"uqq}qqq#qqc[$c$ pq& Pr Uݔ唞PU$rUDrUdrU݄rUrU]rUrwXPwH@w80w(& nUuut}ttUttttАѭ@Ђҍ၄ 1 Rs&t5t=tEtMtUt]t2etu mlp!!Јp"Рs$Ŵʹմݴ崜CY~}$K&>&l}de[,~pol~$xV,~dNXoB}mТࢤT 1Rs(&8J\mݣЈЈBp Рp"UԚԚԚ-Ԛ-$--D+|t~00ϸBTn@v8~0(  . @…P@0 ġ1 RsQ&.|6t>lFdN\VT^Lffm0uLpp ҕҵq0Ҧ0p -䘪Ŕ͔Ք}$Ҹ}DҰ}dҨ}Ҡ}Ҙ}Ґ}R҈5=EUMU]emm#u#}###### D ɵa aaa`a###3 333m%3-353=3E3M3U3]3e3m0@uqq}qqqq0qqt0pt0tŔ}{}}!}XUwr}!} !}M(!5$=$UE$M$U$]$ݖe$4oB݈wB蜈B݈B茈B݈B|BtB@)(K!`ȥ0u0Pt@.$6w>Fw NVw^fg.PI6P1>P1FP1$NP1VP1^P1fP1"npnpxn(mR`n`P1P}1U.#44 ~Ur&5D=DEDMDUD]DeDmvx~ph`XPHc+K@"0!}"`!"`!";3;C&K/q6r>rFrNrVr^rfr}p Ap2m5pp1p2@2##s4smu48.CTT}}@@}H1z0P1}X1ߤ|}h1}p1}x1Ē5d=dEdMdUd]ded4omw|tld}-KÕ0AuBBPA!BA!BԄQݑB B Q#ݕR섖RER.IPD0RI>1QF1QN1QV1Q^1Q4f1QBmpRnTCR؈RpQTTpQ1Q@^nS,,.cttp`(U$R UDRUdRURURU^QU bT5=EMU]e4owx}EB ba}babab"(ݤ" "ݤ22ݤ22-'.350r=0rE0rM0rU0r]0re0rm`@pr}prpqr0rcc4pq4r@ݔ唎PwU$rUDrлUdrUrUrUrUrylydy\yTyLyDy<&y4neume}eeeeeVe)Ђၩ 1Rs&d5d=dEmdMdUd]ӛdedmup}pЈHcpUŴʹմݴՌ崌CYn}$K}DSYo&o4Fd}cD~pot~$xo~Do^o$~oVo}డ@Тࢤ* 1Rs(&8J\ƮupݣЈqpԊԊԊԊԊVԊ-D|t<.@RϻoFNV^ff} @Lp p ҕҝpҦp͔Ք}$}D}d}}}S}-5=UEMU]Uem$u$}$U$$$$U$ E aa aaaaa$$$4 444%4-454=4E4M4*U4]4e4}qq0A uqqmqq0 qq U ttuUt}}x}!p}!h}}``Ur} !P}(!5$=$E$M$U$]$e$4obwb܈bԈb̈bĈbؼbشbجhKP B0PՀ.d6\>TFLNDV<^4f3,.PI 6P1I>P1FP1NP21VP10^PYfPYhn`pn xn (mrנn `PY}1Ą44m\TLDsFsNsmVs^sfs #1q1mp2pp1p2@2#[#t@p1 t׵# Vx.CTT߂}@ @ }H10P1}X1}`1|rX}p1}xT1Ă5d=dEdUMdUd]ded4oԀwmĀ۴<}QXK0AuB0BQ@!B0A!BԄQTBLݒBDB<#B,.B$B.IPJD0R>1QFaP\HRVIQ^IQfIQخBmpRCC RRpQTTpQIQnS ,5dttpahU$R`UDRXUdRPURHUR@UR8UR0TU=EMU]e4owؠРȠnpBaaaٴahݤ`XݤPHݤ@8-'0.50r=0rE0rM0rU01]XreXrm`uqq}qqq`qqccKpqPr퀾~ݔ~~PgU$rUDrUdrUrػUrUrUriixipihi`iXiP&iHnUumU}UUUUUVU)Ђ 1Rs&T5T=TEmTMTUT]ӛTeTmаup pЈphРTU|Ŵ|ʹ|մ|ݴ||CY^}$KY_}D=S$}d[U+_LNk ~p_|~$x_~D_~d_f_n~_^Po  @Таāࢤ* 1Rs(&8J\upݤЈаPРzUzzzz+zz-Dz| t|.@R4ovҸ~ҰҨҠҘnҐҭ / 0…P00 ġ1RBsQø&.6>FNV^fѽ@p倈ҕҝbҭѵë-xŔx͔x*Քxxx@}$8}D0}d(} }}.}5Ux=xExMxUUx]xexm$u$U}$$$$U$$E !a aaaaq$$$4 444%4-454=4E4M4U4]4e4uqq}qqq Aqqt0t媵tEvvv}{}}!}!}}!}hUr}M(!5$v=$vM$vU$v]$ve$v4ob$wbbb bbbbK mа0BupPՀ.Ȥ6Ȝ>ȔFȌNȄV|^tf3l.PI`6P1IX>P1PFP1HNP1@VP18^P10fP1npZnȮ xuЮmr`P10ޝ}1.#t4t4t-ɔ%Ʉ|tOUĀr%=Dt5Dt-%EDtMDtUDt]DteDtmmv~֞Цȅ+K1!1 @"!"m1 "Ȁxphm`XP&lL/r<6s4>s,Fs$NsVs^s fs@!upp2mp2p!p2p2$J$tǝ!tkǬ4Ǹ.CrTrTr}{@9rм}H1z0P1}X1}`1}}h1|rOP}x1rTUr=drEdrMdrUdur]dredr4ow ##̀䀧p-'KpAm0BBQ@!B0A!BԄQȔBBB|#ݕBlBdEB\.IPD0RIH>1Q@F1Q8N1Q0V1Q(^1Q f1QuADnTnTDRR6CTTfA1PCO,ptptppaߨU$RUDRUdRURUݤRURxURpT5p=pEpMpUp]pep4o(w &paaamqaݤިޠݤޘސݤވހݤx'p.50r=0rE0rM0rU0r]0re0rmauqq}qqqqdJdݵaݵPrnݔnnPXU$rUDr{Ud WUwUUUYݔYY݄Y|YtYlY]d&Y\nEuE}EEEEEEuRЂR၄ 1R!s&mD5D=DEDMDUD6]DeDmаAm0p p!ЈРRDlŴUlʹlմlݴllCaN}$}KaO }DS,}d[D}5cTfO\VP}s~pO~$xO~DހO~dO{~O~O~ĠOn}m@Тࢤ* 1Rs(&8J\m0pݤ@ЈЈШjjjjjjYTje-Dj|t&.@ROnv~nЦ…/0ѱ@0 ġ1RBsQø&.<64>,F$NV^ fIm0mݠ倈ҕҝҭ𪽔hŔh͔hՔhhh׀}$x}Dp}dh}`}X}P}ҽ5h=hhMhUh]hehm$u$}$֪$֍$֕$֝$*$օE0q0aaa@m$$U$4 44U4%4-454U=4E4M4U4]4e4m0@uqq}qqq0qPqt)՝t0tfff}}x}!p{}!h}!`}!X}pPUTr-Df5$f-$fE$UfM$fU$f]$fe$wf4obdwbw\bTbwLbDbwFNV^fL.PI6P1>P1FP1NP1$VP1x^P1pfP1%hmPppn  xYmpr`P1}U1d4d4mdٹ USr-Dd5Dd=DUdEDdMDdUDd]DdeDdm@vm8~0(۹ 0K"1 @"!"!"۸㸸㸰󸍘&L/rm|6st>slFs۸dNs\VsT^sLfsuP!@p2}pp2p!pP2@2$$tiP!t4.CbTbTb}@ @O}H10P1}X1}`1}h1}p1|rнb5db=dbEdbMdbUdb]dbnedb4oTwLD<4,$Հ-K0AuBBQ@!BpA!B{QԄBw̄BĄB#BBB(.IPD0R>1QIF1QxN1QpV1Qh^1Q`f1QXCm0pRnTDRR0ATƞTA1QC,2.c`t`t`paU$RUDRUdRлURURURURTT5`=`E`M`U`]`e`4ݠohw`ݠXPݠH@ݠ80paqaaᲱqaλλؤФλȤ['ΰ.50r=0rE0rM0rU0r]0re0rma@uqq}qqPqqdd)εaεPrV^ݔ^y^PH(U$rw UDrUdrwUrUrUqGU IIIIIIIx&kIpn6u5}555555ЏBАJЂ၄*1Rs&55m5=5E5M5U5]5&e5mm pЈ𢰁Р4䪽\Ŵ\ʹ\մ\ݴ\\Ci>}$Ki?}{DS4}d[L}c\}kdf?d^L~p?~$x?~D?{~d?~?~@~-Ġ@& nЍ}`mТࢤ 1RBs( &8J\mݤߍЈЈBРUZZZZԭZZ,Z-{Z|t}{Q.@RTo@v8~0( V / @@@@`ġ*1RsQ&.|6t>lFdN\VT^Lfm0Hmp܅ݍ ҕҵѱ ޥҦ0-XŔX͔XՔXXX}$Ҹ}DҰ}dҨ}Ҡ}Ҙ}Ґ}R҈5X=XEUXMXUX]XeUXm$u$}$Dž$UǍ$Ǖ$ǝ$ǥ$ǭ E a aaaa$$ƪ$4 44ƪ4%4-454ƪ=4E4M4U4J]4e4m0uq q}qqq ۍqqܭt0޽t0tUŔVVVPK0U$UDUdUUUUTV5$V=$VE$UVM$VU$V]$Ve$V4oa0@wa08a0{0a0(a0 a0a0a0 š͡ ա塱̀Հ./m6/>/F/N/V/^/f/-0H/500=00E00M00U00]00e00m0npn ٵxЮm(q.0&`P1.0r.ŔT4T4TPKU$UDUdUUUnUVV\l<V#V#YTn۵vx~ph`XPHc?8K@"!}"`!"`!"m۴&.s6s>sFsmNsVs^sKfs}p!upp2m5p!׍p2@T2$$حt$ڽtu4t.CRTRTR}{D)@} 2w} 2} 2w} 2} 2w}2}2w}2}2w}2}2w}2|}2wt}2l}2dobwbxbpbhb`bXbPbJ > pAuBBPA!BA!BԄQwRR RB؄BЄB-0HR50PR=0XRE0`RM0hRU0R]0Re0R}pA$mpRnTDR̀RаATTerՠAx1QupA,pa0.cPtPtPm&~~S~S~c~cm~c~c|Sm$„v|~mtld[\TIKbBa}badaՠbmܶ&.m6>FNV^fc@upr}praӍPrrddԭk@cֽ0t~1NjݔNN((((ж(((m&(5<545,5$555m &5nëv۫x~ëpëhë`ëXëUPë 4 ՠuP)Ђ 1Rs&۪6Ӫ>ӪFӪNӪVӪ-^ӪfӪ}Aup}p!ѕЈаҥԪԽLŴLʹLմLݴLL( m###ۮ#\4T4L4D4{<44o4,'4$nUu}U :0}}аడ~Тāࢤ 1RBs(&5=EMU]eD}upݤύЈаШԮդҽJJJJJJCq}{$K}DS}d[q}{c }k }s f۵CМCДCЌSЄSm|StSl&Sdnu}* @0{@@| ġ 1RsOB&.5U=EMU]e}H@p͍̽ ҕҝΥRpнHUH͔HՔHHH~qҀ~ x~ p~ h~ `~ X~P~H~@~8~0~(~ ~~~nCvCm|~CtClCۺdC\CT*Cdytz@P@@a{d{d|d|DCmCSS۹SS&S-p0Q5p0=p0Ep0Mp0Up0]p0ep0mtuPp}Ppd˕PḁPTtΪTtT4F*FFt!    % ՔFld\TLjD<4oa wa xa pa ha `ޗa Xa [Pa 0!w`xpyPPzՀ. 6m>FNV^f-QI5Q1=Q1EQ1MQ1UQ1]Q`1eQ1mаnpnȮ xچЮ(6q`124Dj4D4D픦Dۦ<4,$& VVg"VVVVVT7#ncvc~cccmccc}mp8DKu`"1 v}"!"`!"dm@c8c0sۥ(s ss&s.sm6s>sFsۤNsVsV^sfs$1 q1mp2p!Ǎp2@2$$ȭt@!ʽt$VEBTBTB}(L @ܻ})2}*2̻}+2},2}-2}.2}/2}02}12}22}32}42|}52t}62lk}!2dnv۩~㩰㩨㩠㩘Ump> s0AtuB0BQ$BA!B@6é8>é0Fém(Né Vé^Kfé-00500R=00RE00RM00RU00R]00Re00R`A upR}pRDR̀RAƥRUDȽDps@t@t@a$}7b}?b}Gb }Ob}Wb}_b}b~R~gb~R~b~b~c~c|7cn#v#~##m##|#t#(Kqe`raBasamPatqla$$##۲3 333&3m.363>3۱F3N3V3^3f3cprmpr0aÍ0rqdZdĭ4`cƽ4{Pt~;ЫȜ>ݔ>>rrr@ rr% %H%@%8%0%m(% %&%nv~mm4 oB pqJЂr၄* 1Rsd&6ۚ>FNV^%fmPup(}pЈD¥0Ľ<Ŵ<ʹ<մ<ݴ<<mh`X#۞P#H#@v#8�!$h!$`!$X1$P1$H1$@1$[8'$0nuU}Um: !m}nmPТࢤT1RsH1&5U=EMUU]eͤupݤЈT0½::U::::P}C P}$KH}DS@}d[8}c0}k(}s^ }{mx&pnUu}Um@0k0…Pl@½ġ 1RBsè&.5=EMU]emPup ҕDҭU8Ŕ8͔8-888~(q€~)x~*p~+h~,`~-X~.P~/H~0@~18~20~3(~4 ~5~]6~!nC۪vC~CCCC|CtCditju0`UkdktldlD۪$CCS ST"T&T-pH5p0=p0Ep0Mp0Up0 ]p0ep0mtuPp(}PpdPDPaPTtUTtTeU666t   % ld46TLD4oawaaa{aaaa0gPmPhBiPjՀ.@68>0F(Nm V^f -QI5Q1=Q1EQ1MQ1UQ1]Q1XeQ1npnȮ xж(q0`P1Z2444444픖m|tlۖd\Tn&LVDVs,Fs$NsVs-^s fsu!ŀp2}pp2p!p2p2$$ҭt!tZ4t2T}2T2}HT @}I2}J2}K2}L2}M2}N2}O2}P2}Q2}R2}S2}T2|}U2t}V2l}A2dnmv~ۙVЦ㙅> cpAduBQAQ$B0A!Bۙ6Ùx>ÙpFÙhNÙ`VÙ-X^ÙPfÙ-00500R=00RE00RM00RU00R]00Re00RDAupR}pRDŠ R̀RARRA0ZAs0t0t0aD}7b<}?b4}Gb,}Ob$}Wb}_b}mR ~S~gbw~R~bw~b~bG~b\7cn#ۢv#~######qHKaaq`baacambadqa$D#ۢ<#43,3$33m&3 .363ۡ>3F3N3V3^3%f3aŀpr}0pr0a0rdճdd4ʮc4}r~[и4.ݔ. . rrr rrr%r0TmLD<4,$&nvm~莣ۋ؞*Ë4 _ՠ `aЂb၄T1Rs&<6Ӌ4>Ӌ,FӋm$NӋVӋ^K fఁm(}p儱DаԊU,Ŵ,ʹ,մ,ݴ,,#m###x&#p!t!l!d1{\1T1L1D'pFhN`VX^Pf-QI5Q1=Q1EQ1MQ1UQ1]Q1eQ1uаènpp jxЮ(ˀrP`10034$4$4$픆mۆv&VۄV|VtV#lV#dV#\V#TTLncm@vc8~c0cۆ(c ccc0ćKU@"1 V}"!"͠!"dccssmss&sۅ.s|6st>slFsdNsm\VsT^sLfs uP!ŀp2}pp2p!p2@2$$t!Vt4Ŕ"T"T"}h\ @}i2Ի}j2}k2Ļ}l2}m2}n2}o2}p2}q2}r2}s2}t2|}u2t}v2l}a2dn@v8~m0( [㊭ %> S0ATmQABQ$BA!lB6É>ۉFÉNÉVÉ^ÉfÉ-00500R=00RE00RM00RU00R]00Re00Rm0AmU}pRDRRART0As t t ad}7b\}?bT}GbL}ObD}Wb<}_b4}R,~S$~S~S~c ~c~b~nb|Rn#ےv#~#Զ#̎#Ė###IhKQaq`!RaaSa͠aTqa$d#\#T3mL3D3<3ے4&3,.3 63>3F3mN3V3^3[f3cŀ pr}0pr0a0rqdd4c4tW~{Шݔ5rrr rrr%rp`XPmH@80&(n|@v|8~|0|m(| ||| 4 Oՠ PRQЂRR၄1R!s&{|6{t>{lF{dN{\V{-T^{Lf{m0Aup}p! Rz𰁤ŴUʹմݴm~~~#~#~ȶ#~#~&#~{!!x!p1h1`1X1P'HnÀu} : M}N Тࢤ1RBs1&5=EMU]eDm0upݤq~𰡢PC }{$K}DS}d[}c}k}s}{DDT TTTV%Tnu}UU @ K…L @@½ġ*1Rs&.5=EM*U]em0@pĜҕҵqR4U͔Ք~hq~ix~jp~kh~l`~mX~nP~oH~p@~q8~r0~s(~t ~u~v~UanDvD~DUԆD̎DĖDD)DdItJ@PpKdKtLdLDdCm\CTSLSۊDS<S4&S-pH5p0=p0Ep0Mp0Up0R]p0Rep0Rmtm0p}PpdPТaPTtjTtT|.Ut   % ld\TLjD<4obw@wb8bw0b(bw bbWb !GP H0аIu0PJtՀ.6w>FwNVw^f-Q105Q1=Q1EQ1MQ1UQ1]Q`1eQ1m0npnȮ xچЮ(2rа`P10034j44wvvvvvv&vVvmVVV#۬V#V#V#Tncvvcvx~cvpcvmhcv`cvXcvPcvHc9KE@"@!F}"!"`!"dvcumcususususuж&su.su6sum>suFsuNsuVsu^sufsu}p!ŀp2m5p!p2@2$U$tu$tmuu4uSTT}d @}2Ի}2}2Ļ}2}2}2}2}2}2}2}2}2|}2t}2l}2dnzvzx~zmpzhz`[zXzPz %? C0ADuBBA!B0A!Bz6y>yFyNymVy^yf y-00y500R=00RE00RM00RU00R]00Re00R}pAmpR}pRDŠR̀R"ARyAyŀA{U0stta}7b|}?bt}Gbl}Obd}Wb\}_bT}RL~SD~S<~S4m~c,~c$~c[~c|S n#ۃv#~####mܞ#Ԧ#pKAaq`!BaaCa͠aDqa$#|#t3ml3d3\3ۂT&3L.3@638>30F3m(N3 V3^3Kf3aŀ prmPpr0a0rqdd4c4t~И*ݔrrr rrr%rld\mTLD<&4nlvlx~lplmhl`lXlPl 5 ?а@PRAЂBR1R!s&k6k>kFkNkVk-^kfkmPAup}p!аРk Ŵ ʹ մ ݴ o(o om#o#o#o#n&#nݤ""ݤ"|2tݤ2l2dݤ2\'2Tnpup}pppppp @; =} > ТHāࢤ1Rs1T&o5o=oEUoMoUo]oeomPupݤЈаQРoդU PC w}$K}DS}d[!v}c }k }s }k{ ې㐼󐴶󐭜&ntut}tttttt@A ;@…P< 0 ġT1Rs&.Us5s=sEsMUsUs]sesmP"upČҕҝHҭsU͔Ք~qw~x~wp~h~w`~X~wP~H~w@~8~w0~(~w ~~~nC{vD~DDDJDܞDԦDd9t:u@p;d;tFNV^f-Q105Q1=Q1EQ1MQ1UQ1]Q`1eQ1mPnpnȮ xچЮ(r`P13444gDgseFseNseVse^sefse$1q1mPp2p!p2@2*$$te@!te$eETT}{l @}2w}2}2w}2}2w}2}2w}2}2w}2}2w}2|}2wt}2l}2mdnjvj~jjjjjjJ ? 30A4uB0BQ$BA!Bj@6j8>j0Fj(Njm Vj^jf j-00i500R=00RE00RM00RU00R]00Re00R`AupR}pRDR̀RARiDjiDkpsttas}7bs}?bs}Gbs}Obs}Wbs|}_bst}Rl~Sdm~S\~ST~cL~cD~c<~c4|S,n#s$v#s~#s#sm #s#r#r#rpKC1aq`2aa3amPa4qa$r#rm#r3r3r3r|3rt&3rl.3r`63rmX>3rPF3rHN3r@V3r8^3r0f3raprmpr0a0rqjdd4qc冽4qr~Јݓ-rrr rr% mxph`XPH&@n\mv\~\\\\V\\ 5 !/ 01Ђ2၄1RBs&[6[>[mF[N[V[[^[f[mPuppB儁Ј[0mųͳճtt_mh_`_X#_P#_H#_@v#_8&#_0"w䘤"䐤"w䈤2䀤2wx2p2h'2`n`u`}`````` ;B -} .mPТࢩ1Rs1&_5_=_E_M_U_]_e_ͤ~(up~ݤЈ_0Ŕ͔ՔttPC gP}$KH}DS@}{d[8}c0}k(}Ľs }{mۀ&󀠪ndud}dddddd A +0…P,`@ Hġ 1ԅRsP&.c5c=UcEcMcUc]%cecmP|@p|}ҕҝ~ҭcĀŔ͔Քtt~q~x~p~h~`~X~P~H~@~8~0~(~ ~~~nCk$vCk~CkmCk CkDDDd)t*@@0`+dU+d,d,EDUDTTTE|Tt&T-pHj5p0=p0Ep0Mp0Up@0]p0ep0mtzuPPp}Pp{d{PPa|PUt~UtTittt   % ld\3TLD<4obѻwbѸbѻbѨbѻbјbѫbѭ 'mP(B)P*Հ.@68>0F(Nm V^f -Q105Q1=Q1EQ1MQ1UQ1]Q1XeQ1xnpn-Ȯy xpzmpr 0|`P1`U3EttmWW|WtWlWdW\WT&WLVDV9K%1!1 &}"!"m1 "dVcVxcVpsVmhsV`sVXsVP&sVH.sV<6sV4>sV,FsVm$NsVVsV^sKV fsV@!vŀ p2}pp2p!wp2p2$x$xtU!ztU4Uttt}t @}2}2}2}2}2}2}2}2}2}2}2}2|}2t}2l}2dn[vZm~ZZZZ؞Z*Z? #pA$uBQAQ$B`0A!BZ6Zx>ZpFZhNZ`VZX^Z%PfZ-00Z500R=00RE00RM00RU00R ]00Re00RDtupR}pRDuR̀RDAvRYJAxY0Ay[sttac}7bc}?bc}Gbc}Obc}Wbc}_bc}Rm~S~S|~St~cl~cd~c\~cT|SLn#cDv#c<~#cm4#c,#c$#[c#c#cIK!aB`"aa#ama$qa$bm#b#b3b3b3b3b&3b.3bm63bx>3bpF3bhN3b`V3bX^3bPf3bHcr@ŀpr}0pr0as0Prqdtdt4kbcv4at~۲x4*ݔrrr rrr%r0Մ|tmld\T&LnMvL~LLmLL؞LЦL5 ՠ R!Ђ"R၄1R!s&L<6L4>L,FL$NLVL-^L fLupm}pqqаrUKtŴʹUմݴOOO#O#O#O#Ox&#Op"Ԥ"Ԝ"Ԕ2Ԍ2Ԅ2|n2t'2lnUQuP}PPUPPPP; } mТࢩ1Rs1&P5P=PEPMP*UP]PePm0)nmnݤoаpUOrUP}C W}$K}DS}d[x}cp}kh}s^`}{XpppԶpppmp&pnUUuT}TTUTTTTA ѱP0 ġ1RBsè&.T5T=TETMTUT]TeTm0lmlmҕҵPnҭSpŔ͔Քz~qr~x~p~h~`~X~P~H~@~8~0~(~ ~~֮~nDDvC[<~C[4C[m,C[$C[C[C[dt@m0`dUtdEDUDTTTT&T-p0R5p0R=p0REp0RMp0RUp0R ]p0Rep0RmtjuPp(}PpkdkDPalPTZtnUtoTYŔ*t  ` % UldT-D<4ob݈wbb݈b舏b݈b؈b%b m 0аu0Հ.6x>mpFhN`V[X^Pf-Q105Q1=Q1EQ1MQ1UQ1]Q1eQ1,m0hnpni xЮj-(rPl`P100̪3444GGGmGGGG&GmVV|VtV#lV#dV6#\V#TTmdG@vcG8~cG0cG(cG cGmcGcG0K"1 @"!"͠!"dFcFmcFsFsFsFsF&sF.sF|6sFmt>sFlFsFdNsF\VsFT^sFLfsFuP!fŀp2}pp2p!gp2@2*$h$htE!jtE4EŔTT}{| @p}2w}2}2w}2}2w}2}2w}2}2w}2}2w}2|}2wt}2l}2mdnK@vK8~K0K(K KKKJ ? 0AmQABQ$B0A!BJ6J>JFJNJmVJ^Jf J-00J500R=00RE00RM00RU00R]00Re00Rm0AdmU}pRDeRRAQfRIThiI0AiKsttaS}7bS}?bS}GbS}ObS}WbS}_bS}R~Sm~S~S~cی~c~c|~ct|Sln#Sdv#S\~#ST#SmL#SD#S<#S4#SuqK!aq`aaa͠aإqa$R#Rܶ#R3R3Rm3R3R&3R.3R63R>3RF3RN3RmV3Rx^3Rpf3+Rhcbdb}0pr0ac0rqdddd4Raf4Rt|; hݔrrr rrr%rmpŐňŀxph`&mXn=@v=8~=0=(= === 5 ՠ !Ђ%၄1Rs&<|6p" 0}$21O`}dB}1P}1Qw(}B}1RXUY!5 0AN`UD8BE0AO< 0AP(UPB^0AQXU`Bn " !qAnCO0Z~DnCP`DnCYQ!q@R(p> p@N4pA$@OA@3P@Q,&AM$MNNEOPu4P4QP 55]5ENOu4UO4PPL4M},5NOUOjP4Q$L4U(4&4X&4TՈT TsЬTTtДTTT|TtTlTdT\TTTLTDTm,Fm$NmVm^m fmFut*@aqqnt nsS4trRpqTaqlpqVTŔ͔ΪՔݔtp$ $/Uqવ@0TUD0 Ud@U0|{U04UXU0$ $$ $%$!1<YքԪ4444$u}jTHpTu}%EMU]ReB$B$CDhE FmGHUrU$0BUD0CL{Ud0DUHU0EtU0F@`@u!}!! !!!!!)A*|4mKE\eAABCd&DTD}4E4F@YTB@f$DhTETA}4B4CC4DE4F$@ABBCDE EF$FGH$HI%I$JhUG80r50Fr0GE@¤U0HselFsedNse\VseT^se-LfseDpB1n}qqqqKqqqqLatdUnNTtttttƴ>.PK63>`FN V𦙈^@f!U@U$0@UD8E@0擄U0hU0 UXثU0%$ $$$* B%HqqޱpU#pT |4%V-\UULt,U]Zem<dUx`K:0U$UD;UdU}?8U@y95@0!:UD0!;8Ud@"U0!U`" Ц@i:uq!}iI;Aii?2 #:`#;$% <#=! >9$$u:};<<=>89::;<= =9U$$4D444l&4$89: :;<%<-=}{)@>0}$2}D1?`}dB}1@}1A(}B}1BX}Cq`=}$Kq`>`}DS9A}d}[q`?}cq`@(}kQA}sq`AX}{ aA@ " uqA}Bq@?Aq@@HAq@A!q@BY!5a!4>a!LF?dNAV&@^AeB=$=>>-?m@u4@4AP 55]5->m?u4U?4@@<4=},5>?U?j@4A$<4U(4&4X&4TUT TcUt U%-5U=EMU]em]v]x~]p]mh]`]X]P]HpKCa`a`qa`uqa#\m6\>\F\N\V\^\f\}amutP \tFUԾKU$rUDq4UdlU݄UUqU Ls@qTsE@|4&աH"uq}qBq qqqyUsTFsTmNsTVsT^s+TfsTaHB1n}qqqq;qqqqTttնtttKmXm8U~U$0@UD8{Ud0U0hU0 U]XU0Iu}BhV خmHޮpUC(QT |4%V-\UULt,U]Zem<Ձ*!u+},-!./0U1)U$0!*UD0!+w8Ud@"U0!,U0!-`U0!.U`"Є *uq!} +$ , -!$ . /p)#*`#+ھ$Ю#,#-@$#.&)$T$u*}+,U,-.(U)**+,- -)$$4D4J44l&4$(U)* *+,%,--})@.0}$2{}D1/`}dB}10}11(}B} 12X@Y!5 0A.`@a!E0A/L@10(@QA@11X@aA  " qA}q@/Aq@0Aq@1Tq@2@-5ްA.4UDBUdA/dUB{UA0UİAQ1eB-$-U..-/0u4041 55]5-./u4/400J,4-},5.U/U/041$,4(4&4X&4TT Tc԰t䰪 %䰪-5=E䰪MU]e䰶mOvN~NmNNN؞NЦNcuKbabma!baupb#N<6Nm4>N,FN$NNVN^N fN`±nt}prpq3rrĝpq4aqMns6ԮԮqp$ $U K@0TUD0w Ud@U0|U04U]XU0ա$ $*$$%$!VtsFlFsFdNsF\VsFmT^sFLfsFD`B1n}qqqq+@qqqq,atEn.TttttztqKX|!UU$0@UDx8E@0U0hU0 U]XU0I !B" BmHqqޱpUc(QT |4%V-\UULt,U]Zem<Ձ%!/0U15@0!UD0!8Ud@"U0!{U0!`U0!/U`"Ў !uq!}   u!   2 6#`#$% #!6 $$uU}UU $Ԫ$4D44R4l&4$U %}-}@0}$2}D1`}dB}1 }1!w(}B}1"X@Y!5 0A`0@a!E0A@1 (@QA@1!)X@aAv " uqA}q@Aq@! Aq@!q@"@5Aw4UDBUdAdUBU^A UİA!eTB$U-m u4 4! 55]5-mu44  R4},5U 4!$4(4&4X&4TT TcԠt 䠪%-䠪5=EM䠪U]em>mv>x~>p>h>`>X>P>H`Kѵa`a`ӥqa`uqa#=6=>=F=N=V=^=f=} ±ntmuqp#qqqp$qU=t&ԞUԞ!{q|U}}~$ $U Kyz@0{TUD0|E@U0}|U0~4U.XU0աUz{$| $}$}$~%$!zqs5Fs5Ns5Vs5^s5fs5aHB1n}qqqqqqĝqqt5|nTtttttq'Krs[tXuvw!UwU$0s@UD8E@0tU0uhU0v UXU0wrs$t%u$vwr m Hqq!pU(QqrmsTt mu|v4r%r-sU\ULUt,qUr]resVmt<Ձ ! $ % !䕁0U1 5@0! {UD0! 8Ud@"U0! U0! `U0!KU`"Ц uHq!} B uA!   2 # `# $% # ! M $$u }U    U  U      $$4D444lT&4$  U   % - }@0}$2}D1w`}dB}1}1(}B}1X0@Y!5 0A`@a!E0A@1(d@QA@1X@ aA" !qA}Bq@Aq@HAq@q@@ 5A4UDBUdAdUBUAUİAeBU $ -Umu44 55]5-mu44 4 T},5U4$ 4(4&4X&4TzT T}Cq`1|}$KQt}{DSQl}d[Qd}cQ\}kQT}sQL}{Q]d5䐪=EMU䐴-eem1K5@0!UD0!8Ud@"U0!U0!`U^0!U`"v@A uq!}q q q u!R 2 m#`#$,% #! $l$u}4j%4-4 $$4D444lT&4$U4]4e4m4%-}&p" 0}$2}D1`}dB}0}A(}B}}AXUY!<5 0A`UD8BE0AU0@w(UPBUPAXU`B  " uqA}q@A2A@@Y!5a!I4>a!FIAdNIAVQA^aAeTBm4$4]44mu33 55]54Vmu4%TM444,5Zm4U3[$4(4U&4X&4TT TcW1`#PPPq#UP0PP@PUPPPP`PP@#t5䀪tEMUj]em#6s#>s#Fs#Ns#Vs#^s#fs#xcttt j%-"v"~"̆"Ķ""""cz<2ppqxrpqrrpqإr"pns4s~~~~*~~[q)\)]m]^#_ #`UKZ@0[TUDr0\E@U0]|U0^4U]XU0_ա)Z[\%]#]#^%#_!ZqF|NtVl^dfEdwdwdwdwdwwwwdwdwdwtw twtw-dw%tw-tvc~cmcccccupp ppppDpppt}48,=dv*dvdvdvqiRiSiTXUVW!U~U$0S@UD8E@0TU0UhU0Vw UXU0%WRS T !U! V%!Wp R pSpYTmpUHVqxqpWpU(QQRSTT U|V4RZ%R-S\UULt,QURj]ReSmT<ՁK!!u 퍁!0U~K5@0!{UD0!8Ud@"U0!U0!`U0!KU`"Ц uHq!} A 썡B u!   2 #`#$% 셈#! $$um}V4%4-4m U$$4D444l&4$U4]4e4m4%-}. @0}$2}D1w`}dB}1}1(}B}1XUY!5 0A`UD8BE0AU0A(UPB{U0AXU`B " uqA}q@!Aq@Aq@!q@5A4UDBUdAdU݄BUAUİAeBm4$4]44Vmu44 55]54Tu4瞧4 4M444,5m4U4$쐪4(4&4X&4*TT T&`1`&`P&` P&`0P&`@P`PP``JP`pPtp5Up=pEpMpUp]pepm6s>sFsmNsVs^s[fsxcoUootototUototooUooo o-oo%o-ܶv~̆mĎrupq}xrpq@rrpqlrpns4sUnnnnnnKqiLiMMN#O #PUKyJ@0KTUD0LE@U0M|U0N4U.XU0Oա)UJKL%M#M#N%#OH!Jq F |N mtV l^ dfU EdgdgdgdUgdgggUgdgdgdgtUg tgtg-dg%tmg-t vc ~c c c c c c upppppppppt }K48,=dfdfdfdfqKBCDXEFG!U׾U$0C@UD8E@0D{U0EhU0F UXUJ0GBpCpD !pE!!pFpG CDmEHFqqGpU(ABCTD E-|F4B%B-C\ܪLJt,AUB]BeCmD<ՁKCڭu܅ !ޝ0UվK5@0!UD0!8Ud@"U0!ܨU0!`U0!ޗU`"Ў ڐuq!} ۥ ܄ u! T ߭ 2 #`#$% ܈#! ;ް$$u}ۅܶܕݝޥ4%4-4ܶ $$4D*444l&4$UU4]4e4m4m%-ݤ}6)@w0}$2}D1`}dB}1}1(}B}1XUY!5 0A`UD8BE0Aߐ{U0A(UPBU0AXU `Bv " uqA}Bq@߅Aq@HAq@q@@5A4UDBUdAdUBUAUİAeBm4U$4]44mu44P 55]54Tu4Uߝ4 4M4ܕ44,5m4U4$U4(4&4X&4UTT T`V1``PPU PP0PPU@PPPPP`PPpPt`5`=`E`M`U`-`e`mm6s>sFsNsVs^sfsxc___t_t_t_t_t_____ ___%_-mv~̆Ďsupq}xrpq@rrpqlrpns4sU^^^^^^;q<==>#? #_@U:@^0;TUD04UXKU0?ա:;<%=#=6#>%#?!R:qlS93:%S;3<#?9S:HD=Su:};<<=>>9:%:E;Ma!Ӱ ԵսmHUK50Ҕ{UD0LUd0UHU^0tU0@`v u!}! !u!!H!)|4m\euѝTd#Uu4}4եT֍4T@$hTTu4}4ҥTӍ4Uӕ4%Tե4$U4%4-4M4UU4]4e4յ$%!h250t1E@¤L1#F+NUs]sVesWdWdUWdWdWWUWWdWdWtW tWtW-dW%tW-sv~؆ЎȖ並c{h2 uppڵxppۍppppܸpsnުtVdVdVdV*dVdVaaaq qq-a%qt5a=aEaMaUa]aeaq,$j UaaaaaaUUU UUU%U-U5U=UEUMUUU]UeUmUuU}UUUUUUTTTTTTTTTTTT TTT%T-T5T=TETMTUT]TeTmTuT}TTTTTTSSSSSSSSSSSS SSS%S-S5S=SESMSUS]SeSmSuS}SSSSSSRRRRRRRRRRRR RRR%R-R5R=RERMRUR]ReRmRuR}RRRRRRQQQQQQQQQQQQ QQQ%Q-Q5Q=QEQMQUQ]QeQmQuQ}QQQQQQPPPPPPPPPPPP PPP%P-P5P=PEPMPUP]PePmPuP}PPPPPPOOOOOOOOOOOO OOO%O-O5O=OEOMOUO]OeOmOuO}OOOOOONNNNNNNNNNNN NNN%N-N5N=NENMNUN]NeNmNuN}NNNNNNMMMMMMMMMMMM MMM%M-M5M=MEMMMUM]MeMmMuM}MMMMMMLLLLLLLLLLLL LLL%L-L5L=LELMLUL]LeLmLuL}LLLLLLKKKKKKKKKKKK KKK%K-K5K=KEKMKUK]KeKmKuK}KKKKKKJJJJJJJJJJJJ JJJ%J-J5J=JEJMJUJ]JeJmJuJ}JJJJJJIIIIIIIIIIII III%I-I5I=IEIMIUI]IeImIuI}IIIIIIHHHHHHHHHHHH HHH%H-H5H=HEHMHUH]HeHmHuH}HHHHHHGGGGGGGGGGGG GGG%G-G5G=GEGMGUG]GeGmGuG}GGGGGGFFFFFFFFcWUU 0 U@ P U` p U* U Uв ~xj#q~Cq~cq~q~qx~óqp|{# qhc!a`c !XaPc !Ha@c !8Da0a( Rn,wRm~RRRؖRОR RMY1l)UUZR]ZARe[R!R|QRc\R8`c{^8xzKD$UD$D$DRRRR$RR  R(R-!"" "!)Q-l wUQ=QEQMQUQ]QeQM"aQUQ]Q$eQQ QQ"!!$x$p$"P""Pn$Pv$UH~$@$8$0$($ $ pl2!$QQIP PPPP%P)0iBA0A0DBDBDBA0A1A1Q1 Q1Q1Q1%Q1-Q15Q1=Q1EQ1MQ1UQ1]Q1eQ1mQ1uQ1}Q1Q1Q1Q1Q1Q1Q0AQAQAQAQAQAQAQA4A4A4ADA DADADA%DA-DA5DA=DAEDAMDAUDA]DAeDAmDAuDA}DADADADADADAD@D@D@D@D@D@D@*D@` @`R`RpR pRpRpR%pR-pR5pR=pREpRMpRUpR]pRepRmpRupR}pRpRpRpR@pRpRpQ?pbpbpbpbp@bpbpbT?TU?T?d? d?dU?d?%d?-d?5dU?=d?Ed?Md?UdU?]d?ed?md?udU?}d?d?d?dU?d?d?d>dU>d>d>d>dU>d>d>>U>>> >U>>%>->5U>=>E>M>U>]>e>DnLm0vL(~L LLLLKƃ===Ŕ=͔=*Ք=ݔ== KUK!e!K!K!K|p*q0x|r0p|s0h|t0`|u0X|v0P|a0Yj̲ZHZd[[hj[K \(UK^1֓U<Ť<ͤ<դ<ݤU<<<IFINIVI^IfI0plyI 0I$III II@II@|x0@:::::::: :::%:-:5:=:E:M:U:]:e:m:u:}::::::999999999999 999%9-959=9E9M9U9]9e9m9u9}999999888888888888 888%8-858=8E8M8U8]8e8m8u8}88888877777777t7t7t77 777%7-757=7E7M7U7]7e7m7u7}777777666ń6̈́6666t6t6t66 666%6-amd>>>Ŭq Kǐ8!KoT+x ~~~`2  |WK i3  3  3  dUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUtttdUddddUddddUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUtttdUddddUddddUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUtttdUddddUddddUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUtttdUddddUddddUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUtttdUddddUddddUddt tUtt%t-tU5t=tEtMtUUt]tetmtUut}tttUttttUttttUttttUtt U%-U5=EMUU]emUu}U籠פּUń̈́UՄ݄U U%-U5=EMUU]emUu}UUŔ͔UՔݔU U%-U5=EMUU]emUu}텤퍤U핤흤U쵤콤ŤͤUդݤU U%-U5=EMUU]emUu}셴썴U앴이쥴쭴U뵴뽴ŴʹUմݴU U%-U5=EMUU]emUu}UUUU U%-U5=EMUU]emUu}UUUU U%-U5=EMUU]emUu}UUUU U%-U5=EMUU]emUu}UUUU U%-U5=EMUU]emUu}UUU \ ’y` dHc̲`侲XOBpS}} BKp@&ߠOPcLF镠FlFo|ЦU /tmp/prefs.tmp mv /tmp/prefs.tmp "./share/Netscape Preferences" # For IE echo -n "$PYWB_IP:8080" > ./share/proxy_ip echo -n $URL > ./share/home_page touch ./share/RUN_$RUN_BROWSER run_browser ./SheepShaver --rom ./oldworld.rom --disk ./hd.dsk --extfs ./share/ ================================================ FILE: browsers/base-sheepshaver/sheepshaver_prefs ================================================ screen win/1024/768 windowmodes 0 screenmodes 0 seriala /dev/cu.Bluetooth-Modem serialb /dev/null bootdrive 0 bootdriver 0 ramsize 134217728 frameskip 8 gfxaccel true nocdrom false nonet false nosound false nogui false noclipconversion false ignoresegv false ignoreillegal false jit true jit68k false keyboardtype 5 ether slirp keycodes false keycodefile mousewheelmode 1 mousewheellines 3 dsp /dev/dsp mixer /dev/mixer ignoresegv false idlewait true ================================================ FILE: browsers/base-wine-browser/Dockerfile ================================================ FROM netcapsule/base-browser # Adapter from suchja/wine ENV WINE_MONO_VERSION 0.0.8 USER root # Install some tools required for creating the image RUN apt-get update \ && apt-get install -y --no-install-recommends \ curl \ unzip # Install wine and related packages RUN dpkg --add-architecture i386 \ && apt-get update \ && apt-get install -y --no-install-recommends \ wine \ wine32 \ && rm -rf /var/lib/apt/lists/* # Use the latest version of winetricks RUN curl -SL 'http://winetricks.org/winetricks' -o /usr/local/bin/winetricks \ && chmod +x /usr/local/bin/winetricks # Get latest version of mono for wine RUN mkdir -p /usr/share/wine/mono \ && curl -SL 'http://sourceforge.net/projects/wine/files/Wine%20Mono/$WINE_MONO_VERSION/wine-mono-$WINE_MONO_VERSION.msi/download' -o /usr/share/wine/mono/wine-mono-$WINE_MONO_VERSION.msi \ && chmod +x /usr/share/wine/mono/wine-mono-$WINE_MONO_VERSION.msi # Wine really doesn't like to be run as root, so let's use a non-root user USER browser ENV HOME /home/browser ENV WINEARCH win32 # Use xclient's home dir as working dir WORKDIR /home/browser COPY proxy.reg /home/browser/proxy.reg ================================================ FILE: browsers/base-wine-browser/proxy.reg ================================================ Regedit4 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "MigrateProxy"=dword:00000001 "ProxyEnable"=dword:00000001 "ProxyHttp1.1"=dword:00000000 "ProxyServer"="netcapsule_pywb_1:8080" "ProxyOverride"="" ================================================ FILE: browsers/build-browsers.sh ================================================ #!/bin/bash DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) set -e for dir in $DIR/*/ do dir=${dir%*/} name=`basename $dir` echo "docker build -t netcapsule/$name $dir" docker build -t netcapsule/$name $dir done ================================================ FILE: browsers/build-me.sh ================================================ #!/bin/bash name=$(basename $PWD) docker build -t "netcapsule/$name" . ================================================ FILE: browsers/chrome/Dockerfile ================================================ FROM netcapsule/base-browser RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - \ && sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ && apt-get update && apt-get install -y \ google-chrome-stable libnss3-tools jwm \ && rm -rf /var/lib/apt/lists/* USER browser COPY jwmrc /home/browser/.jwmrc COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh WORKDIR /home/browser CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/chrome/jwmrc ================================================ .* -*-fixed-*-r-*-*-10-*-*-*-*-*-*-* 1 20 white gray30:gray60 black 1.0 #aaaaaa #808488:#303438 black 0.5:0.9:0.1 ================================================ FILE: browsers/chrome/run.sh ================================================ #!/bin/bash #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & jwm -display $DISPLAY & http_proxy="http://netcapsule_pywb_1:8080" wget "http://pywb.proxy/pywb-ca.pem" mkdir -p $HOME/.pki/nssdb certutil -d $HOME/.pki/nssdb -N certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "pywb" -i /home/browser/pywb-ca.pem mkdir ~/.config/ mkdir ~/.config/google-chrome touch ~/.config/google-chrome/First\ Run if [ -n "$NO_PROXY" ]; then run_browser google-chrome "$URL" else run_browser google-chrome --proxy-server="netcapsule_pywb_1:8080" "$URL" fi ================================================ FILE: browsers/chromium10/Dockerfile ================================================ FROM netcapsule/base-chromium # To get a different version, use "Position Lookup" here: [https://omahaproxy.appspot.com] to find the position code for that version string, # then look for that postition code here: [https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/]. # If it exists, use [https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64//chrome-linux.zip]. # See also [http://www.chromium.org/getting-involved/download-chromium]. ENV POSITION_CODE 72316 RUN wget -q https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/${POSITION_CODE}/chrome-linux.zip;\ unzip chrome-linux.zip -d /home/browser ================================================ FILE: browsers/chromium5/Dockerfile ================================================ FROM netcapsule/base-chromium # To get a different version, use "Position Lookup" here: [https://omahaproxy.appspot.com] to find the position code for that version string, # then look for that postition code here: [https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/]. # If it exists, use [https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64//chrome-linux.zip]. # See also [http://www.chromium.org/getting-involved/download-chromium]. ENV POSITION_CODE 44202 RUN wget -q https://commondatastorage.googleapis.com/chromium-browser-snapshots/Linux_x64/${POSITION_CODE}/chrome-linux.zip;\ unzip chrome-linux.zip -d /home/browser ================================================ FILE: browsers/firefox/Dockerfile ================================================ FROM netcapsule/base-browser ENV FF_VERSION 40.0.3 RUN apt-get update && apt-get install -y \ libgtk2.0-0 libasound2 libdbus-glib-1-2 libnss3-tools jwm \ && rm -rf /var/lib/apt/lists/* WORKDIR /download RUN wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FF_VERSION/linux-x86_64/en-US/firefox-$FF_VERSION.tar.bz2 && \ tar xvf firefox-$FF_VERSION.tar.bz2 RUN sudo mv ./firefox /opt/firefox USER browser #WORKDIR /home/browser/ffprofile COPY ./ffprofile/. /home/browser/ffprofile/ COPY jwmrc /home/browser/.jwmrc COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh WORKDIR /home/browser ================================================ FILE: browsers/firefox/ffprofile/user.js ================================================ user_pref("network.proxy.http", "netcapsule_pywb_1"); user_pref("network.proxy.http_port", 8080); user_pref("network.proxy.ssl", "netcapsule_pywb_1"); user_pref("network.proxy.ssl_port", 8080); user_pref("network.proxy.type", 1); user_pref("network.proxy.share_proxy_settings", true); user_pref("datareporting.healthreport.service.firstRun", false); user_pref("datareporting.healthreport.uploadEnabled", false); user_pref("browser.selfsupport.url", ""); user_pref("geo.enabled", false); user_pref("browser.readinglist.enabled", false); user_pref("browser.readinglist.sidebarEverOpened", false); user_pref("reader.parse-on-load.enabled", false); ================================================ FILE: browsers/firefox/jwmrc ================================================ .* -*-fixed-*-r-*-*-10-*-*-*-*-*-*-* 1 20 white gray30:gray60 black 1.0 #aaaaaa #808488:#303438 black 0.5:0.9:0.1 ================================================ FILE: browsers/firefox/run.sh ================================================ #!/bin/bash #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & jwm -display $DISPLAY & sudo chown browser:browser /home/browser/ffprofile cd /home/browser/ffprofile sudo chown browser:browser /home/browser/ffprofile/* chmod 644 /home/browser/ffprofile/* curl -x "netcapsule_pywb_1:8080" "http://pywb.proxy/pywb-ca.pem" > /tmp/pywb-ca.pem certutil -A -n "PYWB" -t "TCu,Cuw,Tuw" -i /tmp/pywb-ca.pem -d /home/browser/ffprofile #/opt/firefox/firefox --profile /home/browser/ffprofile -setDefaultBrowser --new-window "$URL" -width $SCREEN_WIDTH -height $SCREEN_HEIGHT run_browser /opt/firefox/firefox --profile /home/browser/ffprofile -setDefaultBrowser --new-window "$URL" ================================================ FILE: browsers/ie4/Dockerfile ================================================ FROM netcapsule/base-wine-browser USER browser WORKDIR /home/browser ADD ie4wine.tar.gz /home/browser/ COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/ie4/run.sh ================================================ #!/bin/bash export WINEPREFIX="/home/browser/ie4" sed -i s/DIMENSION/$SCREEN_WIDTH"x"$SCREEN_HEIGHT/g /home/browser/ie4/user.reg wine regedit proxy.reg run_browser wine start /max /W 'C:/Program Files/Internet Explorer/iexplore.exe' $URL ================================================ FILE: browsers/ie4.01-mac/Dockerfile ================================================ FROM netcapsule/base-basilisk2-browser WORKDIR /app COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh # not actually a tar.gz, just set for git lfs support COPY hd.tar.gz /app/hd CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/ie4.01-mac/run.sh ================================================ #!/bin/bash sudo chown browser:browser -R /app mkdir /app/share PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) # Proxy echo -n -e "$PYWB_IP:8080\r" > /app/share/proxy_prefs # URL echo -n -e "$URL\r" >> /app/share/proxy_prefs run_browser BasiliskII-jit --config /app/basilisk_ii_prefs --extfs /app/share/ --display $DISPLAY ================================================ FILE: browsers/ie5.1-mac/Dockerfile ================================================ FROM netcapsule/base-sheepshaver ENV RUN_BROWSER ie5.1 CMD /app/entry_point.sh /home/browser/run.sh ================================================ FILE: browsers/ie5.5/Dockerfile ================================================ FROM netcapsule/base-wine-browser USER browser WORKDIR /home/browser ADD ie55wine.tar.gz /home/browser/ COPY proxy.reg /home/browser/proxy.reg COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/ie5.5/proxy.reg ================================================ Regedit4 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "MigrateProxy"=dword:00000001 "ProxyEnable"=dword:00000001 "ProxyHttp1.1"=dword:00000000 "ProxyServer"="http://netcapsule_pywb_1:8080" "ProxyOverride"="" ================================================ FILE: browsers/ie5.5/run.sh ================================================ #!/bin/bash export WINEPREFIX="/home/browser/ie55" sed -i s/DIMENSION/$SCREEN_WIDTH"x"$SCREEN_HEIGHT/g /home/browser/ie55/user.reg wine regedit proxy.reg run_browser wine start /max /W 'C:/Program Files/Internet Explorer/iexplore.exe' $URL ================================================ FILE: browsers/lynx/Dockerfile ================================================ FROM netcapsule/base-browser RUN apt-get update && apt-get install -y \ lynx-cur \ && rm -rf /var/lib/apt/lists/* USER browser COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/lynx/run.sh ================================================ #!/bin/bash #fvwm -d $DISPLAY & sudo chmod a+x /usr/bin/xterm run_browser xterm -maximized -w 0 -bd black -fg white -bg black -e 'lynx -use_mouse -telnet -restrictions=shell,file_url "$URL"' ================================================ FILE: browsers/mosaic/Dockerfile ================================================ FROM netcapsule/base-browser RUN apt-get update && apt-get install -y \ build-essential libmotif-dev libjpeg62-turbo-dev libpng12-dev x11proto-print-dev libxmu-headers libxpm-dev libxmu-dev fvwm \ && rm -rf /var/lib/apt/lists/* WORKDIR /download RUN git clone https://github.com/alandipert/ncsa-mosaic RUN cd ncsa-mosaic; make linux COPY proxy /usr/local/lib/mosaic/proxy USER browser COPY fvwm2rc /home/browser/.fvwm2rc COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh WORKDIR /home/browser CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/mosaic/fvwm2rc ================================================ # default Styles: DestroyModuleConfig FE-StartMaximised: * *FE-StartMaximised: Cmd Function *FE-StartMaximised: add_window FuncStartMaximised Module FvwmEvent FE-StartMaximised DestroyFunc FuncStartMaximised AddToFunc FuncStartMaximised + I Maximize Style "*" BorderWidth 7, HandleWidth 7 Style "*" Color lightgrey/dimgrey Style "*" MWMFunctions, MWMDecor, HintOverride Style "*" DecorateTransient, NoPPosition Style "*" IconBox 0 -10 -280 -1 Style "*" FocusFollowsMouse Style "*" PositionPlacement, StaysOnTop Mouse 1 R A Nop Mouse 0 1 A Nop Mouse 0 2 A Nop Mouse 0 4 A Nop ================================================ FILE: browsers/mosaic/proxy ================================================ http netcapsule_pywb_1 8080 http ================================================ FILE: browsers/mosaic/run.sh ================================================ #!/bin/bash unset http_proxy unset https_proxy #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & fvwm -d $DISPLAY & cd /download/ncsa-mosaic run_browser ./src/Mosaic $URL ================================================ FILE: browsers/netscape/Dockerfile ================================================ FROM netcapsule/base-browser RUN sudo dpkg --add-architecture i386 RUN apt-get update && apt-get install -y \ libc6:i386 libncurses5:i386 libstdc++6:i386 libxpm4:i386 libxt6:i386 libxmu6:i386 fvwm \ && rm -rf /var/lib/apt/lists/* WORKDIR /download USER browser COPY install.sh /download/install.sh RUN bash /download/install.sh COPY preferences.js /download/preferences.js COPY fvwm2rc /home/browser/.fvwm2rc COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh WORKDIR /home/browser ================================================ FILE: browsers/netscape/fvwm2rc ================================================ # default Styles: DestroyModuleConfig FE-StartMaximised: * *FE-StartMaximised: Cmd Function *FE-StartMaximised: add_window FuncStartMaximised Module FvwmEvent FE-StartMaximised DestroyFunc FuncStartMaximised AddToFunc FuncStartMaximised + I Maximize Style "*" BorderWidth 7, HandleWidth 7 Style "*" Color lightgrey/dimgrey Style "*" MWMFunctions, MWMDecor, HintOverride Style "*" DecorateTransient, NoPPosition Style "*" IconBox 0 -10 -280 -1 Style "*" FocusFollowsMouse Style "*" PositionPlacement, StaysOnTop Mouse 1 R A Nop Mouse 0 1 A Nop Mouse 0 2 A Nop Mouse 0 4 A Nop ================================================ FILE: browsers/netscape/install.sh ================================================ #!/bin/bash sudo chown browser:browser /download cd /download wget http://ftp.netscape.com/pub/communicator/english/4.79/unix/supported/linux22/navigator_standalone/navigator-v479-us.x86-unknown-linux2.2.tar.gz tar xvfz navigator-v479-us.x86-unknown-linux2.2.tar.gz cd ./navigator-v479.x86-unknown-linux2.2 sudo ./ns-install cd /download wget http://archive.debian.org/debian/pool/main/e/egcs1.1/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb wget http://archive.debian.org/debian/pool/main/g/glibc/libc6_2.2.5-11.8_i386.deb wget http://archive.debian.org/debian/pool/main/x/xfree86/xlibs_4.1.0-16woody6_i386.deb mkdir /tmp/oldlibs dpkg -x /download/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb /tmp/oldlibs dpkg -x /download/libc6_2.2.5-11.8_i386.deb /tmp/oldlibs dpkg -x /download/xlibs_4.1.0-16woody6_i386.deb /tmp/oldlibs NETSCAPE_LIB=/opt/netscape/lib sudo mkdir $NETSCAPE_LIB sudo cp /tmp/oldlibs/usr/X11R6/lib/*.so.* $NETSCAPE_LIB sudo cp /tmp/oldlibs/usr/lib/*.so.* $NETSCAPE_LIB sudo cp /tmp/oldlibs/lib/*.so.* $NETSCAPE_LIB sudo mkdir -p /usr/X11R6/lib/X11 sudo ln -s /usr/share/X11/locale /usr/X11R6/lib/X11/ NETSCAPE_USER=/home/browser/.netscape mkdir $NETSCAPE_USER sudo chown browser:browser $NETSCAPE_USER chmod 700 $NETSCAPE_USER cd $NETSCAPE_USER mkdir ./archive mkdir ./cache chmod 700 ./archive chmod 700 ./cache ================================================ FILE: browsers/netscape/preferences.js ================================================ // Netscape User Preferences // This is a generated file! Do not edit. user_pref("bookmarks.outliner_geometry", "100x(4)Name:296;Location:293;LastVisited:114;CreatedOn:225;"); user_pref("browser.appliance.center_x", 0); user_pref("browser.bookmark_file", "/home/browser/.netscape/bookmarks.html"); user_pref("browser.cache.directory", "/home/browser/.netscape/cache"); user_pref("browser.history_file", "/home/browser/.netscape/history.db"); user_pref("browser.sarcache.directory", "/home/browser/.netscape/archive/"); user_pref("browser.startup.homepage", "HOME_PAGE_URL"); user_pref("browser.startup.homepage_override", false); user_pref("browser.startup.license_accepted", "1000 4.79"); user_pref("browser.user_history_file", "/home/browser/.netscape/history.list"); user_pref("browser.win_height", 1020); user_pref("browser.win_width", 1360); user_pref("browser.xfe.prefs_version", ""); user_pref("editor.win_height", 0); user_pref("editor.win_width", 0); user_pref("helpers.private_mailcap_file", "/home/browser/.mailcap"); user_pref("helpers.private_mime_types_file", "/home/browser/.mime.types"); user_pref("intl.font_charset", "iso-8859-1"); user_pref("intl.font_spec_list", "schumacher-clean-0-noscale-fixed-iso-8859-15,schumacher-clean-0-noscale-prop-iso-8859-15,schumacher-clean-0-noscale-fixed-koi8-r,schumacher-clean-0-noscale-prop-koi8-r,schumacher-clean-0-noscale-fixed-x-user-defined,bitstream-bitstream charter-0-noscale-prop-x-user-defined,nsPseudoFont-courier-100-noscale-fixed-UTF-8,nsPseudoFont-times-120-noscale-prop-UTF-8,isas-fangsong ti-120-noscale-fixed-gb_2312-80,isas-fangsong ti-120-noscale-prop-gb_2312-80,daewoo-gothic-0-noscale-fixed-ks_c_5601-1987,daewoo-gothic-0-noscale-prop-ks_c_5601-1987,misc-fixed-120-noscale-fixed-jis_x0201,misc-fixed-120-noscale-prop-jis_x0201,jis-fixed-120-noscale-fixed-jis_x0208-1983,jis-fixed-120-noscale-prop-jis_x0208-1983,schumacher-clean-0-noscale-fixed-iso-8859-9,schumacher-clean-0-noscale-prop-iso-8859-9,schumacher-clean-0-noscale-fixed-iso-8859-7,schumacher-clean-0-noscale-prop-iso-8859-7,schumacher-clean-0-noscale-fixed-iso-8859-5,schumacher-clean-0-noscale-prop-iso-8859-5,schumacher-clean-0-noscale-fixed-iso-8859-2,schumacher-clean-0-noscale-prop-iso-8859-2,adobe-courier-100-noscale-fixed-iso-8859-1,adobe-times-120-noscale-prop-iso-8859-1,"); user_pref("mail.compose.win_height", 0); user_pref("mail.compose.win_width", 0); user_pref("mail.default_fcc", "/home/browser/nsmail/Sent"); user_pref("mail.directory", "/home/browser/nsmail/"); user_pref("mail.folder.win_height", 0); user_pref("mail.folder.win_width", 0); user_pref("mail.imap.root_dir", "/home/browser/ns_imap/"); user_pref("mail.msg.win_height", 0); user_pref("mail.msg.win_width", 0); user_pref("mail.signature_file", "/home/browser/.signature"); user_pref("mail.thread.win_height", 0); user_pref("mail.thread.win_width", 0); user_pref("mail.use_movemail", false); user_pref("network.hosts.socks_serverport", 0); user_pref("network.proxy.http", "netcapsule_pywb_1"); user_pref("network.proxy.http_port", 8080); user_pref("network.proxy.ssl", "netcapsule_pywb_1"); user_pref("network.proxy.ssl_port", 8080); user_pref("network.proxy.type", 1); user_pref("news.default_fcc", "/home/browser/nsmail/Sent"); user_pref("news.directory", "/home/browser/"); user_pref("news.server_change_xaction", 2); user_pref("preferences.lang.outliner_geometry", "214x(2)Order:96;Language:288;"); ================================================ FILE: browsers/netscape/run.sh ================================================ #!/bin/bash #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & fvwm -d $DISPLAY & export XKEYSYMDB=XKeysymDB export LD_LIBRARY_PATH=/opt/netscape/lib cd /home/browser/.netscape mv /download/preferences.js ./preferences.js sudo chown browser:browser ./preferences.js chmod 644 ./preferences.js PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) sed -i s/netcapsule_pywb_1/$PYWB_IP/g ./preferences.js awk -v URL="$URL" '{gsub("HOME_PAGE_URL", URL, $0); print}' ./preferences.js > /tmp/prefs.tmp && mv /tmp/prefs.tmp ./preferences.js cd /opt/netscape run_browser /opt/netscape/lib/ld-linux.so.2 /opt/netscape/netscape -no-about-splash ================================================ FILE: browsers/netscape-mac-3.04/Dockerfile ================================================ FROM netcapsule/base-basilisk2-browser WORKDIR /app COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh # not actually a tar.gz, just set for git lfs support COPY hd.tar.gz /app/hd CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/netscape-mac-3.04/run.sh ================================================ #!/bin/bash sudo chown browser:browser -R /app mkdir /app/share PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) run_browser BasiliskII-jit --config /app/basilisk_ii_prefs --display $DISPLAY ================================================ FILE: browsers/netscape-mac-4.08/Dockerfile ================================================ FROM netcapsule/base-basilisk2-browser WORKDIR /app COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh COPY NetscapePreferences /app/ # not actually a tar.gz, just set for git lfs support COPY hd.tar.gz /app/hd CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/netscape-mac-4.08/NetscapePreferences ================================================ // Netscape User Preferences // This is a generated file! Do not edit. user_pref("browser.startup.agreed_to_licence", true); user_pref("browser.startup.homepage", "HOME_PAGE_URL"); user_pref("browser.startup.homepage_override", false); user_pref("mail.identity.username", "OldWeb"); user_pref("mime._.description", "*"); user_pref("mime._.extension", "*"); user_pref("mime._.latent_plug_in", false); user_pref("mime._.load_action", 4); user_pref("mime._.mac_appname", ""); user_pref("mime._.mac_appsig", "????"); user_pref("mime._.mac_filetype", "????"); user_pref("mime._.mac_plugin_name", "Default Plug-in"); user_pref("mime._.mimetype", "*"); user_pref("mime.application_futuresplash.description", "FutureSplash Player"); user_pref("mime.application_futuresplash.extension", "spl"); user_pref("mime.application_futuresplash.latent_plug_in", false); user_pref("mime.application_futuresplash.load_action", 4); user_pref("mime.application_futuresplash.mac_appname", ""); user_pref("mime.application_futuresplash.mac_appsig", "????"); user_pref("mime.application_futuresplash.mac_filetype", "????"); user_pref("mime.application_futuresplash.mac_plugin_name", "Shockwave Flash"); user_pref("mime.application_futuresplash.mimetype", "application/futuresplash"); user_pref("mime.application_x_shockwave_flash.description", "Shockwave Flash"); user_pref("mime.application_x_shockwave_flash.extension", "swf"); user_pref("mime.application_x_shockwave_flash.latent_plug_in", false); user_pref("mime.application_x_shockwave_flash.load_action", 4); user_pref("mime.application_x_shockwave_flash.mac_appname", ""); user_pref("mime.application_x_shockwave_flash.mac_appsig", "????"); user_pref("mime.application_x_shockwave_flash.mac_filetype", "????"); user_pref("mime.application_x_shockwave_flash.mac_plugin_name", "Shockwave Flash"); user_pref("mime.application_x_shockwave_flash.mimetype", "application/x-shockwave-flash"); user_pref("mime.audio_aiff.extension", "aiff"); user_pref("mime.audio_aiff.load_action", 4); user_pref("mime.audio_aiff.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_basic.extension", "au"); user_pref("mime.audio_basic.load_action", 4); user_pref("mime.audio_basic.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_midi.description", "audio/midi"); user_pref("mime.audio_midi.extension", "mid"); user_pref("mime.audio_midi.latent_plug_in", false); user_pref("mime.audio_midi.load_action", 4); user_pref("mime.audio_midi.mac_appname", ""); user_pref("mime.audio_midi.mac_appsig", "????"); user_pref("mime.audio_midi.mac_filetype", "????"); user_pref("mime.audio_midi.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_midi.mimetype", "audio/midi"); user_pref("mime.audio_mpeg.description", "audio/mpeg"); user_pref("mime.audio_mpeg.extension", "mpg,mpeg"); user_pref("mime.audio_mpeg.latent_plug_in", false); user_pref("mime.audio_mpeg.load_action", 4); user_pref("mime.audio_mpeg.mac_appname", ""); user_pref("mime.audio_mpeg.mac_appsig", "????"); user_pref("mime.audio_mpeg.mac_filetype", "????"); user_pref("mime.audio_mpeg.mac_plugin_name", "QuickTime Plugin"); user_pref("mime.audio_mpeg.mimetype", "audio/mpeg"); user_pref("mime.audio_wav.description", "audio/wav"); user_pref("mime.audio_wav.extension", "wav"); user_pref("mime.audio_wav.latent_plug_in", false); user_pref("mime.audio_wav.load_action", 4); user_pref("mime.audio_wav.mac_appname", ""); user_pref("mime.audio_wav.mac_appsig", "????"); user_pref("mime.audio_wav.mac_filetype", "????"); user_pref("mime.audio_wav.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_wav.mimetype", "audio/wav"); user_pref("mime.audio_x_aiff.description", "AIFF Audio"); user_pref("mime.audio_x_aiff.extension", "aif"); user_pref("mime.audio_x_aiff.latent_plug_in", false); user_pref("mime.audio_x_aiff.load_action", 4); user_pref("mime.audio_x_aiff.mac_appname", ""); user_pref("mime.audio_x_aiff.mac_appsig", "????"); user_pref("mime.audio_x_aiff.mac_filetype", "????"); user_pref("mime.audio_x_aiff.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_x_aiff.mimetype", "audio/x-aiff"); user_pref("mime.audio_x_midi.description", "audio/x-midi"); user_pref("mime.audio_x_midi.extension", "mid"); user_pref("mime.audio_x_midi.latent_plug_in", false); user_pref("mime.audio_x_midi.load_action", 4); user_pref("mime.audio_x_midi.mac_appname", ""); user_pref("mime.audio_x_midi.mac_appsig", "????"); user_pref("mime.audio_x_midi.mac_filetype", "????"); user_pref("mime.audio_x_midi.mac_plugin_name", "LiveAudio"); user_pref("mime.audio_x_midi.mimetype", "audio/x-midi"); user_pref("mime.audio_x_mpeg.description", "MPEG Audio"); user_pref("mime.audio_x_mpeg.extension", "mpg,mpeg"); user_pref("mime.audio_x_mpeg.latent_plug_in", false); user_pref("mime.audio_x_mpeg.load_action", 4); user_pref("mime.audio_x_mpeg.mac_appname", ""); user_pref("mime.audio_x_mpeg.mac_appsig", "????"); user_pref("mime.audio_x_mpeg.mac_filetype", "????"); user_pref("mime.audio_x_mpeg.mac_plugin_name", "QuickTime Plugin"); user_pref("mime.audio_x_mpeg.mimetype", "audio/x-mpeg"); user_pref("mime.audio_x_wav.load_action", 4); user_pref("mime.audio_x_wav.mac_plugin_name", "LiveAudio"); user_pref("mime.video_mpeg.extension", "mpg,mpeg"); user_pref("mime.video_mpeg.load_action", 4); user_pref("mime.video_mpeg.mac_plugin_name", "QuickTime Plugin"); user_pref("mime.video_quicktime.extension", "mov"); user_pref("mime.video_quicktime.load_action", 4); user_pref("mime.video_quicktime.mac_plugin_name", "QuickTime Plugin"); user_pref("mime.video_x_mpeg.description", "video/x-mpeg"); user_pref("mime.video_x_mpeg.extension", "mpg,mpeg"); user_pref("mime.video_x_mpeg.latent_plug_in", false); user_pref("mime.video_x_mpeg.load_action", 4); user_pref("mime.video_x_mpeg.mac_appname", ""); user_pref("mime.video_x_mpeg.mac_appsig", "????"); user_pref("mime.video_x_mpeg.mac_filetype", "????"); user_pref("mime.video_x_mpeg.mac_plugin_name", "QuickTime Plugin"); user_pref("mime.video_x_mpeg.mimetype", "video/x-mpeg"); user_pref("network.proxy.type", 1); user_pref("network.proxy.http", "netcapsule_pywb_1"); user_pref("network.proxy.http_port", 8080); user_pref("network.proxy.ssl", "netcapsule_pywb_1"); user_pref("network.proxy.ssl_port", 8080); user_pref("security.enable_java", false); ================================================ FILE: browsers/netscape-mac-4.08/run.sh ================================================ #!/bin/bash sudo chown browser:browser -R /app mkdir /app/share PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) sed -b -i s/netcapsule_pywb_1/$PYWB_IP/g /app/NetscapePreferences awk -v RS="\r" -v URL="$URL" '{gsub("HOME_PAGE_URL", URL, $0); print}' /app/NetscapePreferences > /tmp/prefs.tmp mv /tmp/prefs.tmp "/app/share/Netscape Preferences" run_browser BasiliskII-jit --config /app/basilisk_ii_prefs --extfs /app/share/ --display $DISPLAY ================================================ FILE: browsers/netscape4.8-mac/Dockerfile ================================================ FROM netcapsule/base-sheepshaver ENV RUN_BROWSER netscape4.8 CMD /app/entry_point.sh /home/browser/run.sh ================================================ FILE: browsers/netscape4.8-win/Dockerfile ================================================ FROM netcapsule/base-wine-browser USER browser WORKDIR /home/browser ADD ns48.tar.gz /home/browser/ COPY prefs.js /home/browser/prefs.js COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/netscape4.8-win/prefs.js ================================================ user_pref("network.proxy.http", "netcapsule_pywb_1"); user_pref("network.proxy.http_port", 8080); user_pref("network.proxy.ssl", "netcapsule_pywb_1"); user_pref("network.proxy.ssl_port", 8080); user_pref("network.proxy.type", 1); user_pref("browser.related.enabled", false); user_pref("browser.startup.homepage_override", false); user_pref("browser.wfe.show_value", 3); user_pref("taskbar.floating", false); ================================================ FILE: browsers/netscape4.8-win/run.sh ================================================ #!/bin/bash export WINEPREFIX="/home/browser/ns48" PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) sed -i s/DIMENSION/$SCREEN_WIDTH"x"$SCREEN_HEIGHT/g /home/browser/ns48/user.reg sudo chown browser:browser /home/browser/prefs.js echo "user_pref(\"browser.window_rect\", \"0,0,$SCREEN_WIDTH,$SCREEN_HEIGHT\");" >> /home/browser/prefs.js sed s/netcapsule_pywb_1/$PYWB_IP/g /home/browser/prefs.js > /home/browser/ns48/drive_c/Program\ Files/Netscape/Users/default/prefs.js run_browser wine 'C:/Program Files/Netscape/Communicator/Program/netscape.exe' $URL ================================================ FILE: browsers/safari3/Dockerfile ================================================ FROM netcapsule/base-wine-browser USER browser WORKDIR /home/browser ADD safari3.tar.gz /home/browser/ COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/safari3/run.sh ================================================ #!/bin/bash sudo chown -R browser /home/browser/safari3 export WINEPREFIX="/home/browser/safari3" sed -i s/DIMENSION/$SCREEN_WIDTH"x"$SCREEN_HEIGHT/g /home/browser/safari3/user.reg wine regedit proxy.reg run_browser wine start /max /W 'C:/Program Files/Safari/Safari.exe' $URL ================================================ FILE: browsers/safari5/Dockerfile ================================================ FROM netcapsule/base-wine-browser WORKDIR /home/browser ADD safari.tar.gz /home/browser/ COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/safari5/run.sh ================================================ #!/bin/bash export WINEPREFIX="/home/browser/safari" sed -i s/DIMENSION/$SCREEN_WIDTH"x"$SCREEN_HEIGHT/g /home/browser/safari/user.reg wine regedit proxy.reg run_browser wine start /max /W 'C:/Program Files/Safari/Safari.exe' $URL ================================================ FILE: browsers/www/Dockerfile ================================================ FROM netcapsule/base-browser RUN sudo dpkg --add-architecture i386 &&\ apt-get update && apt-get install -qqy subversion libsdl2-dev libpng-dev cmake portaudio19-dev libreadline-dev fvwm p7zip\ && rm -rf /var/lib/apt/lists/* WORKDIR /home/browser USER browser RUN svn checkout svn://svn.code.sf.net/p/previous/code/trunk previous-code RUN cd previous-code; ./configure; make;\ touch /home/browser/previous-code/src/Previous-icon.bmp;\ sudo make install ADD NS33.tar.gz /home/browser/ COPY tars.iso.dmg /home/browser/ COPY previous.cfg /home/browser/.previous/previous.cfg COPY proxy.py /home/browser/proxy.py COPY run.sh /app/run.sh RUN sudo chmod a+x /app/run.sh CMD /app/entry_point.sh /app/run.sh ================================================ FILE: browsers/www/previous.cfg ================================================ [Log] sLogFileName = stderr sTraceFileName = stderr nTextLogLevel = 1 nAlertDlgLogLevel = 1 bConfirmQuit = TRUE [ConfigDialog] bShowConfigDialogAtStartup = FALSE [Debugger] nNumberBase = 10 nDisasmLines = 8 nMemdumpLines = 8 [Screen] nMonitorType = 1 bFullScreen = FALSE bKeepResolution = TRUE bAllowOverscan = TRUE nSpec512Threshold = 16 nForceBpp = 0 bAspectCorrect = TRUE bUseExtVdiResolutions = FALSE nVdiWidth = 0 nVdiHeight = 0 nVdiColors = 0 bShowStatusbar = TRUE bShowDriveLed = TRUE bCrop = FALSE nMaxWidth = 800 nMaxHeight = 600 [Keyboard] bDisableKeyRepeat = FALSE bSwapCmdAlt = FALSE nKeymapType = 1 szMappingFileName = [ShortcutsWithModifiers] keyOptions = 111 keyFullScreen = 102 keyMouseMode = 109 keyColdReset = 99 keyWarmReset = 114 keyScreenShot = 103 keyBossKey = 105 keyCursorEmu = 106 keyFastForward = 120 keyRecAnim = 97 keyRecSound = 121 keySound = 115 keyPause = 112 keyDebugger = 100 keyQuit = 113 keyLoadMem = 108 keySaveMem = 107 keyDimension = 110 [ShortcutsWithoutModifiers] keyOptions = 1073741893 keyFullScreen = 1073741892 keyMouseMode = 0 keyColdReset = 0 keyWarmReset = 0 keyScreenShot = 0 keyBossKey = 0 keyCursorEmu = 0 keyFastForward = 0 keyRecAnim = 0 keyRecSound = 0 keySound = 0 keyPause = 0 keyDebugger = 0 keyQuit = 0 keyLoadMem = 0 keySaveMem = 0 keyDimension = 0 [Mouse] bEnableAutoGrab = FALSE fLinSpeedNormal = 1.0 fLinSpeedLocked = 1 fExpSpeedNormal = 0.5 fExpSpeedLocked = 1 [Sound] bEnableMicrophone = TRUE bEnableSound = FALSE [Memory] nMemoryBankSize0 = 32 nMemoryBankSize1 = 32 nMemoryBankSize2 = 32 nMemoryBankSize3 = 32 nMemorySpeed = 0 bAutoSave = FALSE szMemoryCaptureFileName = /home/browser/.previous/hatari.sav szAutoSaveFileName = /home/browser/.previous/auto.sav [Boot] nBootDevice = 1 bEnableDRAMTest = FALSE bEnablePot = FALSE bEnableSoundTest = FALSE bEnableSCSITest = FALSE bLoopPot = FALSE bVerbose = FALSE bExtendedPot = FALSE [HardDisk] szImageName0 = /home/browser/NS33_2GB.dd nDeviceType0 = 1 bDiskInserted0 = TRUE bWriteProtected0 = FALSE szImageName1 = /home/browser/tars.iso.dmg nDeviceType1 = 2 bDiskInserted1 = TRUE bWriteProtected1 = TRUE szImageName2 = /home/browser nDeviceType2 = 0 bDiskInserted2 = FALSE bWriteProtected2 = FALSE szImageName3 = /home/browser nDeviceType3 = 0 bDiskInserted3 = FALSE bWriteProtected3 = FALSE szImageName4 = /home/browser nDeviceType4 = 0 bDiskInserted4 = FALSE bWriteProtected4 = FALSE szImageName5 = /home/browser nDeviceType5 = 0 bDiskInserted5 = FALSE bWriteProtected5 = FALSE szImageName6 = /home/browser nDeviceType6 = 0 bDiskInserted6 = FALSE bWriteProtected6 = FALSE [MagnetoOptical] szImageName0 = /home/browser bDriveConnected0 = FALSE bDiskInserted0 = FALSE bWriteProtected0 = FALSE szImageName1 = /home/browser bDriveConnected1 = FALSE bDiskInserted1 = FALSE bWriteProtected1 = FALSE [Floppy] szImageName0 = /home/browser bDriveConnected0 = FALSE bDiskInserted0 = FALSE bWriteProtected0 = FALSE szImageName1 = /home/browser bDriveConnected1 = FALSE bDiskInserted1 = FALSE bWriteProtected1 = FALSE [Ethernet] bEthernetConnected = TRUE [ROM] szRom030FileName = /home/browser/previous-code/src/Rev_1.0_v41.BIN szRom040FileName = /home/browser/previous-code/src/Rev_2.5_v66.BIN szRomTurboFileName = /home/browser/previous-code/src/Rev_3.3_v74.BIN [RS232] bEnableRS232 = FALSE szOutFileName = /dev/modem szInFileName = /dev/modem [Printer] bPrinterConnected = FALSE nPaperSize = 0 szPrintToFileName = /home/browser/.previous/ [Midi] bEnableMidi = FALSE sMidiInFileName = /dev/snd/midiC1D0 sMidiOutFileName = /dev/snd/midiC1D0 [System] nMachineType = 2 bColor = TRUE bTurbo = TRUE bADB = FALSE nSCSI = TRUE nRTC = TRUE nCpuLevel = 4 nCpuFreq = 40 bCompatibleCpu = TRUE bBlitter = FALSE nDSPType = 2 bDSPMemoryExpansion = TRUE bRealTimeClock = FALSE bPatchTimerD = FALSE bFastForward = FALSE bAddressSpace24 = FALSE bCycleExactCpu = FALSE n_FPUType = 68040 bCompatibleFPU = TRUE bMMU = TRUE [Video] AviRecordVcodec = 2 AviRecordFps = 0 AviRecordFile = /home/browser/hatari.avi ================================================ FILE: browsers/www/proxy.py ================================================ from bottle import request, route, HTTPResponse, run from argparse import ArgumentParser import requests proxies = 'localhost' proxy_prefix = 'http://10.0.2.2/' start_ts = '1990' start_url = '' ALLOWED_HEADERS = ('content-type', 'content-length', 'location', 'date', 'last-modified', 'set-cookie', 'server', 'content-encoding') @route('/default.html') def do_default(): return do_proxy(url=start_url) @route(['//', '/']) def do_proxy(dt='', url=''): headers = {'User-Agent': request.environ.get('HTTP_USER_AGENT'), #'Host': proxy_host, 'Accept-Encoding': 'identity', 'Pywb-Rewrite-Prefix': proxy_prefix, } if not url.startswith('http://'): url = 'http://' + url r = requests.get(url=url, headers=headers, stream=True, allow_redirects=False, proxies=proxies) resp_headers = [] for n, v in r.headers.iteritems(): if n.lower() == 'content-type': v = v.split(';')[0].strip() if n.lower() in ALLOWED_HEADERS: resp_headers.append((n, v)) # force status code to 200 so that pages load in WWW # error pages are not otherwise shown at all status_code = r.status_code if status_code >= 400: status_code = 200 resp = HTTPResponse(body=r.iter_content(8192), status=str(status_code) + ' ' + r.reason, headers=resp_headers) return resp if __name__ == "__main__": parser = ArgumentParser('netcapsule http1.0 proxy') parser.add_argument('--pywb-prefix') parser.add_argument('--start-url') parser.add_argument('--start-ts') parser.add_argument('--port', type=int) r = parser.parse_args() global proxies proxies = dict(http=r.pywb_prefix, https=r.pywb_prefix) global start_ts start_ts = r.start_ts global start_url start_url = r.start_url port = r.port or 8081 run(host='0.0.0.0', port=port) ================================================ FILE: browsers/www/run.sh ================================================ #!/bin/bash cd /home/browser/ sudo chown browser NS33_2GB.dd sudo chown browser ./.previous/previous.cfg sudo chown browser proxy.py #fluxbox -display $DISPLAY -log /tmp/fluxbox.log & #fvwm -d $DISPLAY & PYWB_IP=$(grep netcapsule_pywb_1 /etc/hosts | cut -f 1 | head -n 1) sudo python proxy.py --start-url $URL --pywb-prefix http://$PYWB_IP:8080/all/ --start-ts $TS --port 80 & run_browser Previous ================================================ FILE: docker-compose.yml ================================================ pywb: build: ./pywb restart: always environment: - ARCHIVE_JSON=/archives.json volumes: - ${ARCHIVE_JSON}:/archives.json # for init order volumes_from: - redis memgator: image: ibnesayeed/memgator:master restart: always command: --arcs=/archives.json server ports: - 1209:1208 volumes: - ${ARCHIVE_JSON}:/archives.json nginx: build: ./nginx restart: always volumes: # - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/cache:/cache # - ./app/static:/static volumes_from: - app ports: - 80:80 - 1208:1208 # - 1210:1210 redis: image: redis:latest restart: always shared_data: image: python:2.7 command: python -i volumes: - ./shareddata:/shareddata - ./app/browser_app.py:/app/app.py - ./app/run_browser:/usr/bin/run_browser app: build: ./app restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - ${RANDOM_URL_LIST}:/app/urls.txt environment: - SCREEN_WIDTH=1024 - SCREEN_HEIGHT=768 ports: - 9020:9020 # for init order volumes_from: - redis ================================================ FILE: nginx/Dockerfile ================================================ FROM nginx:latest RUN usermod -u 1000 www-data #RUN usermod -G staff www-data #RUN chown -Rf www-data /cache ADD nginx.conf /etc/nginx/nginx.conf ================================================ FILE: nginx/nginx.conf ================================================ user www-data; worker_processes 16; pid /run/nginx.pid; events { worker_connections 4096; } http { ## # Basic Settings ## sendfile off; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; merge_slashes off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include mime.types; default_type application/octet-stream; log_format cache_info '$time_iso8601 $request_time $upstream_cache_status "$request" $status $body_bytes_sent "$http_referer"'; access_log /var/log/nginx/access.log cache_info; error_log /var/log/nginx/error.log; proxy_cache_path /cache/web levels=1:2 keys_zone=WEB:10m max_size=20G; #uwsgi_cache_path /cache/app levels=1:2 keys_zone=APP:10m max_size=100M; upstream netcapsule_app { server netcapsule_app_1:9021; } server { listen 80; location / { include uwsgi_params; #uwsgi_cache APP; #uwsgi_cache_valid 200 302 1h; #uwsgi_cache_key $request_uri; uwsgi_buffers 16 64k; uwsgi_buffer_size 64k; uwsgi_pass netcapsule_app; } location /static/ { alias /app/static/; } } server { listen 1208; proxy_cache WEB; location / { proxy_pass http://netcapsule_memgator_1:1208/; proxy_buffer_size 128k; proxy_buffers 100 128k; proxy_cache_valid 200 1h; proxy_cache_valid 404 1m; proxy_force_ranges on; proxy_ignore_headers Set-Cookie Vary X-Accel-Expires X-Accel-Buffering; add_header X-Proxy-Cache $upstream_cache_status; } } server { listen 1210; proxy_cache WEB; location ~* ^/(https?://[^/]+)(/(.*)) { set $targethost $1; resolver 8.8.8.8; proxy_pass $1$2$is_args$args; proxy_pass_request_headers on; #proxy_redirect ~^/(.*)$ $scheme://$host:$server_port/$targethost/$1; #proxy_redirect ~^(http.*)$ $scheme://$host:$server_port/$1; proxy_buffer_size 128k; proxy_buffers 100 128k; proxy_cache_valid 200 302 301 304 307; proxy_cache_valid 404 1m; #proxy_cache_valid any 1m; proxy_force_ranges on; proxy_ignore_headers Set-Cookie Vary X-Accel-Expires X-Accel-Buffering; add_header X-Proxy-Cache $upstream_cache_status; } } } ================================================ FILE: pull-containers.sh ================================================ #!/bin/bash # Pull all containers used by Netcapsule from Dockerhub # Latest pywb #docker pull ikreymer/pywb:dev DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # Browsers for dir in $DIR/browsers/*/ do dir=${dir%*/} name=`basename $dir` echo "docker pull netcapsule/$name" docker pull netcapsule/$name done ================================================ FILE: push-containers.sh ================================================ #!/bin/bash # Push containers to dockerhub DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # Browsers for dir in $DIR/browsers/*/ do dir=${dir%*/} name=`basename $dir` echo "docker push netcapsule/$name" docker push netcapsule/$name done ================================================ FILE: pywb/Dockerfile ================================================ FROM python:2.7 MAINTAINER Ilya Kreymer WORKDIR /webarchive COPY requirements.txt /webarchive/ RUN pip install -r requirements.txt ENV PYWB_VERSION git+https://github.com/ikreymer/pywb.git@develop#egg=pywb-0.11.1 RUN pip install -U $PYWB_VERSION COPY config.yaml /webarchive/ COPY . /webarchive/ EXPOSE 8080 CMD ["uwsgi", "/webarchive/uwsgi.ini"] ================================================ FILE: pywb/archivereplayview.py ================================================ from pywb.webapp.handlers import WBHandler from pywb.utils.statusandheaders import StatusAndHeaders from pywb.webapp.replay_views import ReplayView, CaptureException from pywb.rewrite.url_rewriter import UrlRewriter from pywb.rewrite.rewrite_live import LiveRewriter from pywb.utils.timeutils import timestamp_to_sec, timestamp_to_http_date from pywb.utils.loaders import BlockLoader from redisclient import redisclient import requests import re import logging import xml.etree.ElementTree as ElementTree import urlparse import json import os #============================================================================= WBURL_RX = re.compile('(.*/)([0-9]{1,14})(\w{2}_)?/(https?://.*)') EXTRACT_ORIG_LINK = re.compile(r'<([^>]+)>;\s*rel=\"original\"') NO_GZIP_UAS = ['NCSA_Mosaic'] #============================================================================= class ReplayHandler(WBHandler): def _init_replay_view(self, config): return ReplayView(UpstreamArchiveLoader(config), config) #============================================================================= class MementoHandler(ReplayHandler): def _init_replay_view(self, config): return ReplayView(MementoUpstreamArchiveLoader(config), config) def handle_query(self, wbrequest, cdx_lines, output): try: offset = int(wbrequest.wb_url.timestamp) if offset < 1: offset = 1 except Exception as e: offset = 1 cdx_json = None if output != 'text': cdx_lines = list(cdx_lines) try: cdx_json = [dict(host=cdx['src_host'], ts=cdx['timestamp']) for cdx in cdx_lines] cdx_json = json.dumps(cdx_json) except Exception as e: logging.debug(e) cdx_lines = iter(cdx_lines) return self.index_reader.make_cdx_response(wbrequest, cdx_lines, output, offset=offset, cdx_json=cdx_json) #============================================================================= class UpstreamArchiveLoader(object): def __init__(self, config): self.session = requests.Session() self.session.max_redirects = 6 self.archive_template = config['archive_template'] self.archive_name = config['archive_name'] self.reverse_proxy_prefix = config.get('reverse_proxy_prefix', '') self.user_agent = config.get('user_agent', 'netcapsule for ({})') # init redis here only redisclient.init_redis(config) def unrewrite_header(self, response, name): value = response.headers.get(name) # extract orig url from redirect, if any if value: m = WBURL_RX.match(value) if m: response.headers[name] = m.group(4) def _do_req(self, urls, host, cdx, env, skip_hosts): response = None headers = {} user_agent = env.get('HTTP_USER_AGENT', '') # disable gzip, as mosaic won't support it! # TODO: maybe ungzip later if any(exclude in user_agent for exclude in NO_GZIP_UAS): headers['Accept-Encoding'] = 'identity' # needed to avoid interstitial in openwayback headers['Accept-Datetime'] = timestamp_to_http_date(cdx['timestamp']) headers['User-Agent'] = self.user_agent.format(user_agent) for url in urls: if self.reverse_proxy_prefix: url = self.reverse_proxy_prefix + url response = self.session.request(method='GET', url=url, allow_redirects=False, headers=headers, stream=True, verify=False) if response is None: continue mem_date_time = response.headers.get('memento-datetime') if (response.status_code >= 400 and not mem_date_time): if response.status_code == 403 or response.status_code >= 500: # skip host skip_hosts.append(host) # try again with diff memento return None # success return response return response def __call__(self, cdx, skip_hosts, cdx_loader, wbrequest): self.session.cookies.clear() try_urls, host, archive_name = self._get_urls_to_try(cdx, skip_hosts, wbrequest) try: response = self._do_req(try_urls, host, cdx, wbrequest.env, skip_hosts) except Exception as e: print(e) response = None if response is None: print(skip_hosts) raise CaptureException('Content Could Not Be Loaded') if response.status_code >= 300 and response.status_code < 400: self.unrewrite_header(response, 'Location') self.unrewrite_header(response, 'Content-Location') remote = wbrequest.env.get('REMOTE_ADDR') req_ts = wbrequest.wb_url.timestamp base_key = remote + ':' + req_ts sec = timestamp_to_sec(cdx['timestamp']) referrer = wbrequest.env.get('HTTP_REFERER') try: pi = redisclient.redis.pipeline(transaction=False) pi.hset(base_key + ':urls', cdx['url'], sec) pi.sadd(base_key + ':hosts', archive_name) if referrer and not referrer.endswith('.css'): pi.set(base_key + ':ref', referrer) elif not referrer: pi.set(base_key + ':base', cdx['url']) pi.execute() except Exception as e: import traceback traceback.print_exc(e) statusline = str(response.status_code) + ' ' + response.reason headers = response.headers.items() stream = response.raw status_headers = StatusAndHeaders(statusline, headers) return (status_headers, stream) def _get_urls_to_try(self, cdx, skip_hosts, wbrequest): if self.archive_template in skip_hosts: raise Exception('Content Not Available') #full_url = self.archive_template + wbrequest.coll + '/' + cdx['timestamp'] + 'id_/' + url full_url = self.archive_template.format(timestamp=cdx['timestamp'], url=cdx['url']) try_urls = [full_url] return try_urls, self.archive_template, self.archive_name #============================================================================= class MementoUpstreamArchiveLoader(UpstreamArchiveLoader): def __init__(self, config): super(MementoUpstreamArchiveLoader, self).__init__(config) if config.get('memento_archive_json'): self.load_archive_info_json(config.get('memento_archive_json')) else: self.load_archive_info_xml(config.get('memento_archive_xml')) def load_archive_info_json(self, url): self.archive_infos = {} url = os.path.expandvars(url) logging.debug('Loading XML from {0}'.format(url)) if not url: return try: stream = BlockLoader().load(url) except Exception as e: logging.debug(e) logging.debug('Proceeding without json archive info') return archives = json.loads(stream.read()) for arc in archives: id_ = arc['id'] name = arc['name'] uri = arc['timegate'] base_url = arc.get('base_url', uri) unrewritten_url = arc.get('unrewritten_url') if not unrewritten_url: unrewritten_url = base_url + '{timestamp}id_/{url}' self.archive_infos[id_] = {'id': id_, 'uri': uri, 'name': name, 'base_url': base_url, 'unrewritten_url': unrewritten_url} def load_archive_info_xml(self, url): self.archive_infos = {} url = os.path.expandvars(url) logging.debug('Loading XML from {0}'.format(url)) if not url: return try: stream = BlockLoader().load(url) except Exception as e: logging.debug(e) logging.debug('Proceeding without xml archive info') return root = ElementTree.fromstring(stream.read()) for link in root.findall('link'): name = link.get('id') longname = link.get('longname') archive = link.find('archive') timegate = link.find('timegate') if timegate is None or archive is None: continue rewritten = (archive.get('rewritten-urls') == 'yes') unrewritten_url = archive.get('un-rewritten-api-url', '') uri = timegate.get('uri') self.archive_infos[name] = {'uri': uri, 'rewritten': rewritten, 'unrewritten_url': unrewritten_url, 'name': longname } def find_archive_info(self, uri): #uri = uri.split('://', 1)[-1] uri = uri.replace(':80/', '/') for name, info in self.archive_infos.iteritems(): if info['base_url'] in uri: return info return None def _get_urls_to_try(self, cdx, skip_hosts, wbrequest): src_url = cdx['src_url'] parts = urlparse.urlsplit(src_url) if src_url in skip_hosts: raise CaptureException('Skipping already failed: ' + src_url) archive_host = parts.netloc info = self.find_archive_info(src_url) if info and info.get('unrewritten_url'): orig_url = info['unrewritten_url'].format(archive_host=archive_host, timestamp=cdx['timestamp'], url=cdx['url']) else: m = WBURL_RX.match(src_url) if m: orig_url = m.group(1) + m.group(2) + 'id_/' + m.group(4) else: orig_url = src_url try_urls = [orig_url] if info: name = info.get('id', src_url) else: name = src_url wbrequest.urlrewriter.rewrite_opts['orig_src_url'] = cdx['src_url'] wbrequest.urlrewriter.rewrite_opts['archive_info'] = info return try_urls, src_url, name ================================================ FILE: pywb/ca/.gitignore ================================================ # Ignore everything in this directory * # Except this file !.gitignore ================================================ FILE: pywb/config.yaml ================================================ collections: # For Single Archive Collections: Specify CDX Path, url template and name single_archive: index_paths: 'http://web.archive.org/cdx/search/cdx' archive_template: 'http://web.archive.org/web/{timestamp}id_/{url}' archive_name: 'Internet Archive' wb_handler_class: !!python/name:archivereplayview.ReplayHandler # Memento Aggregator Collection: Specify paths to Timegate, Timemap all: index_paths: # for LANL aggregator #timegate: http://timetravel.mementoweb.org/api/json/ #timemap: http://labs.mementoweb.org/timemap/json/ # for local aggregator timegate: http://netcapsule_nginx_1:1208/timenav/json/ timemap: http://netcapsule_nginx_1:1208/timemap/json/ server_cls: !!python/name:mementoquery.MementoIndexServer wb_handler_class: !!python/name:archivereplayview.MementoHandler head_insert_html: ./templates/blank.html # fallback: live live: index_paths: $liveweb # Specify memento archivelist XML #memento_archive_xml: 'http://labs.mementoweb.org/aggregator_config/archivelist.xml' memento_archive_json: '/archives.json' #memento_archive_json: $ARCHIVE_JSON reverse_proxy_prefix: http://netcapsule_nginx_1:1210/ buffer_response: false #urlrewriter_class: !!python/name:archivereplayview.ReUrlRewriter enable_cdx_api: true framed_replay: false redis_url: redis://netcapsule_redis_1:6379/0 enable_http_proxy: true redir_to_exact: false proxy_options: enable_https_proxy: true # Select one of these #use_default_coll: 'single_archive' use_default_coll: 'all' cookie_resolver: ip use_client_rewrite: false use_banner: false ================================================ FILE: pywb/mementoquery.py ================================================ import requests import sys import calendar import datetime import itertools import urllib import json from collections import namedtuple from pywb.utils.canonicalize import canonicalize from pywb.utils.timeutils import iso_date_to_datetime, datetime_to_timestamp from pywb.utils.timeutils import timestamp_to_sec from pywb.utils.wbexception import AccessException, NotFoundException import logging from urlparse import urlsplit from redisclient import redisclient EXCLUDE_LIST = ('http://archive.today/', 'http://archive.is', 'https://archive.today/', 'https://archive.is/') #============================================================================= def datetime_to_secs(dt): return calendar.timegm(dt.utctimetuple()) #============================================================================= MemValue = namedtuple('MemValue', 'ts, sec, url') #============================================================================= class MementoJsonApi(object): def __init__(self, paths): self.api_endpoint = paths['timegate'] self.timemap_endpoint = paths['timemap'] self.session = requests.Session() def timegate_query(self, timestamp, url): url = urllib.quote(url, ':/') full = self.api_endpoint + timestamp + '/' + url r = None try: r = self.session.get(full) r.raise_for_status() result = r.json() except Exception as e: if r and r.status_code != 404: import traceback traceback.print_exc(e) msg = 'No Mementos Found' raise NotFoundException(msg, url=url) return result['mementos'] def timemap_query(self, url, closest='1'): url = urllib.quote(url, ':/') full = self.timemap_endpoint + closest + '/' + url r = None try: r = self.session.get(full) result = r.json() except Exception as e: logging.debug(e) if r and r.status_code == 503: msg = 'No Mementos Currently Available:
' msg += r.text elif r and r.status_code == 404: return {"list": []} elif r: msg = 'Unknown response with: ' + str(r.status_code) else: msg = 'No response' raise NotFoundException(msg, url=url) mementos = result.get('mementos') # if got timemap_index, just cached the timemap, so need to query again # TODO: revisit this.. if not mementos and result.get('timemap_index'): return self.timemap_query(url, closest) return mementos def parse_mem_value(self, m): iso = m['datetime'] dt = iso_date_to_datetime(iso) sec = datetime_to_secs(dt) ts = datetime_to_timestamp(dt) url = m['uri'] return MemValue(ts, sec, url) #============================================================================= class MementoTimemapQuery(object): def __init__(self, api_loader, url, closest='1'): self.api_loader = api_loader self.closest = closest self.url = url def __iter__(self): mementos = self.api_loader.timemap_query(self.url, self.closest) self.memento_list = mementos['list'] self.memento_iter = iter(self.memento_list) return self def next(self): return (self.api_loader.parse_mem_value(self.memento_iter.next()),) #============================================================================= class MementoClosestQuery(object): """ Provides an iterator over memento JSON API, returning results closest to the requested timestamp, and checking next-closest which each iteration """ def __init__(self, api_loader, url, timestamp): self.api_loader = api_loader self.url = url self.target_timestamp = timestamp self.target_sec = timestamp_to_sec(timestamp) def _get_mem_info(self, mementos, name, closest_ts=None): m = mementos.get(name) if not m: return None parsed = self.api_loader.parse_mem_value(m) if not parsed: return None if parsed.ts == closest_ts: return None return parsed def __iter__(self): mementos = self.api_loader.timegate_query(self.target_timestamp, self.url) self.m_closest = self._get_mem_info(mementos, 'closest') closest_ts = None if self.m_closest: closest_ts = self.m_closest.ts self.m_next = self._get_mem_info(mementos, 'next', closest_ts) self.m_prev = self._get_mem_info(mementos, 'prev', closest_ts) self.m_last = self._get_mem_info(mementos, 'last', closest_ts) self.m_first = self._get_mem_info(mementos, 'first', closest_ts) return self def next(self): if not self.m_closest: if self.m_next and self.m_prev: if (abs(self.m_next.sec - self.target_sec) < abs(self.m_prev.sec - self.target_sec)): self.set_next_closest(self.m_next) else: self.set_next_closest(self.m_prev) elif not self.m_next and self.m_prev: self.set_next_closest(self.m_prev) elif self.m_next and not self.m_prev: self.set_next_closest(self.m_next) if self.m_closest: res = self.m_closest self.m_closest = None return (res, self.m_next, self.m_prev, self.m_first, self.m_last) else: raise StopIteration() def set_next_closest(self, curr): mementos = self.api_loader.timegate_query(curr.ts, self.url) self.m_closest = self._get_mem_info(mementos, 'closest') if curr == self.m_next: self.m_next = self._get_mem_info(mementos, 'next', curr.ts) elif curr == self.m_prev: self.m_prev = self._get_mem_info(mementos, 'prev', curr.ts) #============================================================================= class MementoIndexServer(object): def __init__(self, paths, **kwargs): self.loader = MementoJsonApi(paths) #logging.basicConfig(level=logging.DEBUG) def load_cdx(self, **params): sort = params.get('sort') if sort == 'closest' or sort == 'reverse': closest = params.get('closest') if not closest: closest = str(datetime.date.today().year) mem_iter = redisclient.load_cdx_cache_iter(params['url'], closest) if mem_iter: return mem_iter mem_iter = MementoClosestQuery(self.loader, params['url'], closest) skip_exclude=True timegate = True else: closest = params.get('query_closest') try: closest = int(closest) if closest < 1: closest = '1' else: closest = str(closest) except: closest = '1' mem_iter = MementoTimemapQuery(self.loader, params['url'], closest) skip_exclude=False timegate = False limit = int(params.get('limit', 10)) mem_iter = self.memento_to_cdx(params['url'], mem_iter, limit, skip_exclude) if timegate: mem_iter = redisclient.save_cdx_cache_iter(mem_iter, params['url'], closest) if params.get('output') == 'text': mem_iter = self.cdx_to_text(mem_iter) return mem_iter def sort_archives(self, archive_list): ait = None ia = None pt = None for url in archive_list: if '/web.archive.org/' in url: ia = url elif '/wayback.archive-it.org/' in url: ait = url elif '/arquivo.pt/' in url: pt = url elif '/archive.today/' in url: continue else: yield url if pt: yield pt if ait: yield ait if ia: yield ia def memento_to_cdx(self, url, mem_iter, limit, skip_exclude=True): key = canonicalize(url) if url.endswith('/'): key += '/' for mems, _ in itertools.izip(mem_iter, xrange(0, limit)): if len(mems) > 1: mem, next_, prev_, first_, last_ = mems else: mem = mems[0] excluded = False if isinstance(mem.url, list): mem_list = mem.url count = len(mem_list) if count > 1: mem_list = self.sort_archives(mem_list) else: mem_list = [mem.url] count = 1 for mem_url in mem_list: mem_url = mem_url.encode('utf-8') # handle scheme relative urls if mem_url.startswith('//'): mem_url = 'http:' + mem_url if mem_url.startswith(EXCLUDE_LIST): if skip_exclude: continue else: excluded = True cdx = {} cdx['urlkey'] = key cdx['timestamp'] = mem.ts cdx['url'] = url cdx['src_url'] = mem_url cdx['sec'] = mem.sec cdx['src_host'] = urlsplit(mem_url).netloc cdx['excluded'] = excluded cdx['dupes'] = count if len(mems) > 1: cdx['first'] = first_.ts if first_ else '' cdx['last'] = last_.ts if last_ else '' cdx['next'] = next_.ts if next_ else '' cdx['prev'] = prev_.ts if prev_ else '' yield cdx def cdx_to_text(self, cdx_list): for cdx in cdx_list: string = cdx['urlkey'] + ' ' + cdx['timestamp'] del cdx['urlkey'] del cdx['timestamp'] string += ' ' + json.dumps(cdx) + '\n' yield string def test_memento_to_cdx(url, mem): key = canonicalize(url) for ts, target in mem: yield key + ' ' + ts + ' ' + url + ' ' + target def main(): server = MementoIndexServer(['http://timetravel.mementoweb.org/api/json/', 'http://timetravel.mementoweb.org/timemap/json/']) redisclient.init_redis() cdx_iter = server.load_cdx(closest=sys.argv[1], url=sys.argv[2], sort='closest', limit=int(sys.argv[3])) sec = None for cdx in cdx_iter: if not sec: sec = cdx['sec'] #print(cdx['timestamp'] + ' ' + cdx['url'] + ' ' + cdx['src_host'] + ' ' + str(sec - cdx['sec'])) print(cdx['prev'] + ' ' + cdx['timestamp'] + ' ' + cdx['next'] + ' ' + str(sec - cdx['sec'])) if __name__ == "__main__": main() ================================================ FILE: pywb/redisclient.py ================================================ import redis import os import yaml from pywb.utils.canonicalize import canonicalize #============================================================================= class RedisClient(object): def __init__(self): self.redis = None def init_redis(self, config={}): if self.redis: return redis_url = os.environ.get('REDIS_URL') if not redis_url: redis_url = config.get('redis_url') if not redis_url: redis_url = 'redis://localhost:6379/0' if redis_url: self.redis = redis.StrictRedis.from_url(redis_url) else: self.redis = redis.StrictRedis() # CDX Caching def load_cdx_cache_iter(self, url, ts): page_key = self.get_url_key_p(ts, url) cdx_list = self.redis.lrange('cdx:' + page_key, 0, -1) if not cdx_list: page_key = self.redis.get('r:' + page_key) if page_key: cdx_list = self.redis.lrange('cdx:' + page_key, 0, -1) if not cdx_list: return [] cdx_list = [yaml.load(cdx) for cdx in cdx_list] return cdx_list def save_cdx_cache_iter(self, cdx_list, url, ts): full_key = 'cdx:' + self.get_url_key_p(ts, url) for cdx in cdx_list: self.redis.rpush(full_key, yaml.dump(cdx)) self.redis.expire(full_key, 180) yield cdx @staticmethod def get_url_key_p(ts, url): key = ts + '/' + canonicalize(url, False) if not url.endswith('/'): key += '/' return key #============================================================================= redisclient = RedisClient() ================================================ FILE: pywb/requirements.txt ================================================ certauth youtube-dl boto uwsgi gevent redis ================================================ FILE: pywb/templates/blank.html ================================================ ================================================ FILE: pywb/templates/head_insert.html ================================================ ================================================ FILE: pywb/templates/not_found.html ================================================

Url Not Found

Sorry, the url {{ url }} could not be found in the archives. ================================================ FILE: pywb/uwsgi.ini ================================================ [uwsgi] if-not-env = PORT http-socket = :8080 endif = master = true buffer-size = 65536 die-on-term = true if-env = VIRTUAL_ENV venv = $(VIRTUAL_ENV) endif = processes = 16 threads = 16 #gevent = 200 gevent-early-monkey-patch = cache2 = name=sesh,items=500,blocksize=64,keysize=64 # specify config file here env = PYWB_CONFIG_FILE=config.yaml wsgi = pywb.apps.wayback ================================================ FILE: run-local.sh ================================================ #export ARCHIVE_JSON=http://webenact.rhizome.org/collinfo.json export ARCHIVE_JSON=./archives.gen.json export RANDOM_URL_LIST=./urls.txt python -c "import yaml; import json; data = yaml.load(open('archives.yaml')); open('$ARCHIVE_JSON', 'w').write(json.dumps(data))" docker-compose --x-networking build docker-compose --x-networking up -d