From 82bd6100baeee778f942c3d863be94e742c361e8 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 3 Dec 2013 21:55:52 -0800 Subject: [PATCH 001/297] update intro blurb to point to UWPCE again. That's where the next iteration will be. --- README.rst | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 032b7338..036cff16 100644 --- a/README.rst +++ b/README.rst @@ -6,11 +6,15 @@ Introduction This package provides the source for all lecture materials for a 10-session course in Web Development using Python. -This version of the documentation is used for a one-week Python Web -Programming Workshop taught by `Cris Ewing`_. This workshop is being `offered -August 5-9, 2013`_ on the campus of the University of North Carolina in Chapel Hill, NC. +This package provides the source for all lecture materials used for the +`Internet Programming in Python` section of the `Certificate in Python +Programming` offered by the `University of Washington Professional & +Continuing Education` program. This version of the documentation is used for +the Winter 2014 instance of the course, Taught by `Cris Ewing`_ + +.. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2014/ +.. _Certificate in Python Programming: http://www.pce.uw.edu/certificates/python-programming.html -.. _offered August 5-9, 2013: http://trizpug.org/boot-camp/pywebpw13/ .. _Cris Ewing: http://www.linkedin.com/profile/view?id=19741495 Building The Documentation From 01d617bf2c933105d9530cc594001a8969ca0b59 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 3 Dec 2013 21:57:49 -0800 Subject: [PATCH 002/297] fix links --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 036cff16..eea3dc4a 100644 --- a/README.rst +++ b/README.rst @@ -7,14 +7,14 @@ This package provides the source for all lecture materials for a 10-session course in Web Development using Python. This package provides the source for all lecture materials used for the -`Internet Programming in Python` section of the `Certificate in Python -Programming` offered by the `University of Washington Professional & +`Internet Programming in Python`_ section of the `Certificate in Python +Programming`_ offered by the `University of Washington Professional & Continuing Education` program. This version of the documentation is used for the Winter 2014 instance of the course, Taught by `Cris Ewing`_ .. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2014/ .. _Certificate in Python Programming: http://www.pce.uw.edu/certificates/python-programming.html - +.. _University of Washington Professional & Continueing Education: http://www.pce.uw.edu/ .. _Cris Ewing: http://www.linkedin.com/profile/view?id=19741495 Building The Documentation From 7a34a1a973026ef60767e23884d809767caa9d18 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 3 Dec 2013 21:58:37 -0800 Subject: [PATCH 003/297] speling --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index eea3dc4a..23fa3b7c 100644 --- a/README.rst +++ b/README.rst @@ -14,7 +14,7 @@ the Winter 2014 instance of the course, Taught by `Cris Ewing`_ .. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2014/ .. _Certificate in Python Programming: http://www.pce.uw.edu/certificates/python-programming.html -.. _University of Washington Professional & Continueing Education: http://www.pce.uw.edu/ +.. _University of Washington Professional & Continuing Education: http://www.pce.uw.edu/ .. _Cris Ewing: http://www.linkedin.com/profile/view?id=19741495 Building The Documentation From 023c0c9c01215b32e1d9c27f647a4971945b4d04 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 3 Dec 2013 21:59:30 -0800 Subject: [PATCH 004/297] linkify --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 23fa3b7c..44296c12 100644 --- a/README.rst +++ b/README.rst @@ -9,7 +9,7 @@ course in Web Development using Python. This package provides the source for all lecture materials used for the `Internet Programming in Python`_ section of the `Certificate in Python Programming`_ offered by the `University of Washington Professional & -Continuing Education` program. This version of the documentation is used for +Continuing Education`_ program. This version of the documentation is used for the Winter 2014 instance of the course, Taught by `Cris Ewing`_ .. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2014/ From a0d78741769cd976db2617c67814b96e7ead6963 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 5 Dec 2013 13:16:53 -0800 Subject: [PATCH 005/297] update installation docs in README to be correct about which version of buildout is being used and what that means for setuptools installations. --- README.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 44296c12..0b22e372 100644 --- a/README.rst +++ b/README.rst @@ -21,8 +21,10 @@ Building The Documentation -------------------------- This documentation is built using docutils and Sphinx. The package uses -`zc.buildout` to manage setup and dependencies. This package uses the v1 -`bootstrap.py` script. +`zc.buildout` to manage setup and dependencies. This package uses the version +2 `bootstrap.py` script. This version of the script will attempt to use +setuptools 0.7 or better. If you have an earlier version of setuptools +installed, please upgrade prior to bootstrapping this buildout. After cloning this package from the repository, do the following:: @@ -36,7 +38,7 @@ At the end of a successful build, you will find a ``build/html`` directory, containing the completed documentation and presentations. .. _zc.buildout: https://pypi.python.org/pypi/zc.buildout/ -.. _bootstrap.py: http://downloads.buildout.org/1/bootstrap.py +.. _bootstrap.py: http://downloads.buildout.org/2/bootstrap.py Reading The Documentation ------------------------- From 1602e9b73ac08e9732e1a45afb05b871e482522a Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 16 Dec 2013 17:41:58 -0800 Subject: [PATCH 006/297] update wordings and rephrase to fit course structure --- source/main/index.rst | 39 ++++++++++++++++++--------------------- source/main/outline.rst | 24 ++++++++++++------------ source/main/readings.rst | 4 ++-- 3 files changed, 32 insertions(+), 35 deletions(-) diff --git a/source/main/index.rst b/source/main/index.rst index 42447ca7..c7eb7c2c 100644 --- a/source/main/index.rst +++ b/source/main/index.rst @@ -1,12 +1,12 @@ .. Internet Programming with Python documentation master file, created by sphinx-quickstart on Sat Nov 3 13:22:19 2012. -`Python Web Programming Workshop, August 5-9, 2013 in Chapel Hill, NC -`_ +`UW PCE Certificate Program in Python Programming +`_ -=============================== -Python Web Programming Workshop -=============================== +================================ +Internet Programming with Python +================================ .. sidebar:: Table of Contents @@ -17,17 +17,15 @@ Python Web Programming Workshop outline readings -August 5-9, 2013 +Winter Term, 2014 (10 sessions) -Chapel Hill, North Carolina - -`Registration now open `_ +Tuesdays, 6-9 pm, January 7 - March 11 Overview ======== -This five day workshop emphasizes network-based programming and Web +This course emphasizes network-based programming and Web applications, how they work and how to program them in Python. Explore the underlying principles and their expression in the Python libraries. Learn contrasting approaches in creating applications: programming with the @@ -37,7 +35,7 @@ low-level libraries versus using highly integrated frameworks Prerequisites ============= -To attend this workshop you should have a working knowledge of the basic +To attend this course you should have a working knowledge of the basic syntax and structures of the Python programming language. You will also need to be comfortable working at the command line to navigate a file system, create and delete files, and execute commands. Finally, you should have some @@ -48,8 +46,7 @@ Requirements ============ This workshop does not provide a computer laboratory. You will have to have a -portable computer in order to participate. Network access, both wired and -wireless, will be provided, but you will need to know how to operate the +portable computer in order to participate. Network access is provided, but you will need to know how to operate the network settings for your computer. Your computer must have Python version 2.6 or 2.7 installed. No additional @@ -64,18 +61,18 @@ in order to keep our development environments clean and separate. What to Expect ============== -This one-week course will cover the fundamental concepts of networked -programming in Python. You'll learn everything, starting from the sockets that -enable communications between processes and machines and the basic protocols -that govern this communication, right up to the full-stack frameworks that -enable developers to build rich applications efficiently. +This course will cover the fundamental concepts of networked programming in +Python. You'll learn everything, starting from the sockets that enable +communications between processes and machines and the basic protocols that +govern this communication, right up to the full-stack frameworks that enable +developers to build rich applications efficiently. Along the way, you'll learn through a combination of lecture and activity. Historical information will be combined with exercises designed to help you learn the Pythonic way to create programs that interact with each-other across -networks. Each module will include reading lists for more information and -ideas for projects you can use to help cement the lessons you learn after the -the class is over. +networks. Each module will include reading lists for more information. +Homework assignments will allow you to dive more deeply into the concepts +introduced in class. **This class is** intended to give students a solid grounding in the fundamentals of network programming. You will gain a basic understanding of a diff --git a/source/main/outline.rst b/source/main/outline.rst index 9a59f66c..99c60ca6 100644 --- a/source/main/outline.rst +++ b/source/main/outline.rst @@ -1,24 +1,24 @@ Course Outline ============== -This course is five days long. Each day is split into morning and afternoon -sessions. Each session will consist of three or so hours of instruction and -exercises and a couple of short breaks. +This course takes place over 10 sessions. Each session is three hours long. +Each session contains lecture material and exercises you will type at a python +prompt. Each session has associated assignments which you will complete +between sessions. Session 1 - TCP/IP and Sockets ------------------------------ -We will begin by covering basic front-matter for the course: daily schedule, -class protocol, introductions and such. Next we will move into a disucssion of -the fundamental concepts and structures that underly the internet and -networked computing. We will learn about the TCP/IP stack (Internet Protocol -Suite) and gain some insights into how that model manifests in real life. We -will then dive into sockets and learn how to use them to communicate between -processes on a single machine, or across a network. +We will begin with a disucssion of the fundamental concepts and structures +that underly the internet and networked computing. We'll learn about the +TCP/IP stack (Internet Protocol Suite) and gain some insights into how that +model manifests in real life. We will then dive into sockets and learn how to +use them to communicate between processes on a single machine, or across a +network. Along the way, we'll build a basic Echo server and client to demonstrate the -processes we've learned. By lunch, we'll be sending messages and receiving -replies. +processes we've learned. By the end of the session, we'll be sending messages +and receiving replies. `Lecture Slides `_ diff --git a/source/main/readings.rst b/source/main/readings.rst index 60d8ce2b..492b83e0 100644 --- a/source/main/readings.rst +++ b/source/main/readings.rst @@ -1,13 +1,13 @@ Course Readings =============== -Web programming is a deep pool. There's more to cover than a one-week course +Web programming is a deep pool. There's more to cover than a 10-session course could ever hope to accomplish. To that end, I've compiled a list of related readings that will support the information you'll learn in class. Think of this as supplemental materials. You can read it at your leisure to help increase both the depth and breadth of your knowledge. -The readings are organized like the class, by day, time and topic. +The readings are organized like the class, by session and topic. Session 1 - TCP/IP and Sockets From 9235e136497f045c4b45ba6bb2aee702c59f3a55 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 16 Dec 2013 21:07:35 -0800 Subject: [PATCH 007/297] updates --- source/presentations/session01.rst | 42 +++++++----------------------- 1 file changed, 10 insertions(+), 32 deletions(-) diff --git a/source/presentations/session01.rst b/source/presentations/session01.rst index 1be3fd92..d59a80fd 100644 --- a/source/presentations/session01.rst +++ b/source/presentations/session01.rst @@ -20,8 +20,6 @@ Class presentations are available online for your use http://github.com/cewing/training.python_web -Use the ``week-long-format`` branch for this class - Licensed with Creative Commons BY-NC-SA * You must attribute the work @@ -31,26 +29,6 @@ Licensed with Creative Commons BY-NC-SA Find mistakes? See improvements? Make a pull request. -But First ---------- - -Daily Schedule - -* 9:00 am to 10:30 am - Session 1a - -* 15 minute break - -* 10:45 am to 12:30 pm - Session 1b - -* 1 hour lunch - -* 1:30 pm to 3:00 pm - Session 2a - -* 15 minute break - -* 3:15 pm to 5:00 pm - Session 2b - - But First --------- @@ -58,7 +36,7 @@ Classroom Protocol .. class:: incremental -Question to ask: +Questions to ask: .. class:: incremental @@ -75,17 +53,17 @@ Classroom Protocol .. class:: incremental -Question **not** to ask: +Questions **not** to ask: .. class:: incremental -* Hypotheticals: What happens if I do X? -* Research: Can Python do Y? -* Syllabus: Are we going to cover Z in class? -* Marketing questions: please just don't. -* Performance questions: Is Python fast enough? -* Unpythonic: Why doesn't Python do it some other way? -* Show off: Look what I just did! +* **Hypotheticals**: What happens if I do X? +* **Research**: Can Python do Y? +* **Syllabus**: Are we going to cover Z in class? +* **Marketing questions**: please just don't. +* **Performance questions**: Is Python fast enough? +* **Unpythonic**: Why doesn't Python do it some other way? +* **Show off**: Look what I just did! But First @@ -537,7 +515,7 @@ prefixed by ``IPPROTO_``:: .. class:: incremental The choice of which protocol to use for a socket is determined by the -communications protocol you intend to use. ``IP``? ``ICMP``? ``UDP``? +*internet layer* protocol you intend to use. ``IP``? ``ICMP``? ``IGMP``? Test your skills From 8a628095f81918a916101a54a21de36d862e9525 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 16 Dec 2013 21:07:47 -0800 Subject: [PATCH 008/297] add readings about lower-level protocols to help clarify socket family, type and protocol information. --- source/main/readings.rst | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/source/main/readings.rst b/source/main/readings.rst index 492b83e0..9195e714 100644 --- a/source/main/readings.rst +++ b/source/main/readings.rst @@ -20,10 +20,34 @@ Session 1 - TCP/IP and Sockets * `Wikipedia - Domain Name System `_ * `Wikipedia - Internet Sockets - `_ + `_ * `Wikipedia - Berkeley socket interface `_ +If you want to know a bit more about the lower layers of the stack, you might +find the following readings enlightening: + +**Transport Layer** + +* `Wikipedia - Universal Datagram Protocol (UDP) + `_ +* `Wikipedia - Transmission Control Protocol (TCP) + `_ + +**Internet Layer** + +* `Wikipedia - Internet Protocol (IP) + `_ +* `Wikipedia - IPv4 Packet Structure + `_ +* `Wikipedia - IPv6 Packet Structure + `_ + +**Link Layer** + +* `Wikipedia - Link Layer Protocols + `_ + In addition, you may find it interesting to take a look at ZeroMQ, a next-generation implementation of the socket concept built with parallel and networked computing in mind: From e1a2381d64eb15e902d60455adf6c056f814f1b0 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 16 Dec 2013 21:08:23 -0800 Subject: [PATCH 009/297] add function that prints out address constants from the socket lib. --- resources/session01/session1.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/session01/session1.py b/resources/session01/session1.py index 228296d8..56cdc3b4 100644 --- a/resources/session01/session1.py +++ b/resources/session01/session1.py @@ -19,3 +19,13 @@ def get_address_info(host, port): print 'canonical name: ', nam print 'socket address: ', add print + + +def print_address_constants(): + addrs = get_constants('INADDR') + for val, name in addrs.items(): + hexval = hex(val) + packed = socket.inet_aton(hexval) + addr = socket.inet_ntoa(packed) + tmpl = '{0: >24}: {1: <10} {2: <16}' + print tmpl.format(name, hexval, addr) From b08677bfdb49ee5a2d1d47a9443f3fd437dc1c6d Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 26 Dec 2013 16:28:00 -0700 Subject: [PATCH 010/297] add a few more utility methods. --- resources/session01/session1.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/resources/session01/session1.py b/resources/session01/session1.py index 56cdc3b4..167f0e88 100644 --- a/resources/session01/session1.py +++ b/resources/session01/session1.py @@ -1,10 +1,30 @@ import socket +def get_named_services(first_port=0, last_port=2**15+2**14): + tmpl = '{0: >4}: {1}' + for i in xrange(first_port, last_port): + try: + service = socket.getservbyport(i) + except socket.error: + continue + print tmpl.format(i, service) + + def get_constants(prefix): - return dict( (getattr(socket, n), n) - for n in dir(socket) - if n.startswith(prefix)) + return dict( + (getattr(socket, n), n) + for n in dir(socket) + if n.startswith(prefix) + ) + +# this example is more 'pythonic' for 2.7 and above (where dictionary +# comprehensions exist) +def get_constants_27(prefix): + return { + getattr(socket, n):n for n in dir(socket) + if n.startswith(prefix) + } def get_address_info(host, port): From 3f6f607bcec83c07cf3575d349bf821087698375 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 26 Dec 2013 16:28:28 -0700 Subject: [PATCH 011/297] * update session 01, add a few slides. Will pull out a few later to balance and maintain the 3-hour profile --- source/presentations/session01.rst | 212 +++++++++++++++++++++++++---- 1 file changed, 184 insertions(+), 28 deletions(-) diff --git a/source/presentations/session01.rst b/source/presentations/session01.rst index d59a80fd..4af60937 100644 --- a/source/presentations/session01.rst +++ b/source/presentations/session01.rst @@ -18,14 +18,22 @@ But First Class presentations are available online for your use -http://github.com/cewing/training.python_web +.. class:: small + +https://github.com/UWPCE-PythonCert/training.python_web + +.. class:: incremental Licensed with Creative Commons BY-NC-SA +.. class:: small incremental + * You must attribute the work * You may not use the work for commercial purposes * You have to share your versions just like this one +.. class:: incremental + Find mistakes? See improvements? Make a pull request. @@ -133,7 +141,7 @@ The bottom layer is the 'Link Layer' * what that medium is is arbitrary -* Primarily uses the Network Interface Card (NIC) in your computer +* Implemented in the Network Interface Card(s) (NIC) in your computer The TCP/IP Stack - Internet @@ -209,6 +217,8 @@ The 'Transport Layer' also establishes the concept of a **port** * 192.168.1.100:80 (the *:80* part is the **port**) +* [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) + .. class:: incremental This means that you don't have to worry about information intended for your @@ -230,6 +240,10 @@ applications or protocols: * 25 - SMTP * ... +.. class:: incremental + +These ports are often referred to as **well-known ports** + .. class:: small (see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) @@ -242,11 +256,13 @@ Ports are grouped into a few different classes .. class:: incremental -* Ports numbered 0 - 1023 are *reserved* +* Ports numbered 0 - 1023 are *reserved* * Ports numbered 1024 - 65535 are *open* -* Ports numbered 49152 - 65535 are generally considered *ephemeral* +* Ports numbered 1024 - 49151 may be *registered* + +* Ports numbered 49152 - 65535 are called *ephemeral* The TCP/IP Stack - Application @@ -297,15 +313,25 @@ A **Socket** is the software representation of that endpoint. .. class:: incremental Opening a **socket** creates a kind of transceiver that can send and/or -receive data at a given IP address and Port. +receive *bytes* at a given IP address and Port. Sockets in Python ----------------- Python provides a standard library module which provides socket functionality. -It is called **socket**. Let's spend a few minutes getting to know this -module. +It is called **socket**. + +.. class:: incremental + +The library is really just a very thin wrapper around the system +implementation of *BSD Sockets* + +.. class:: incremental + +Let's spend a few minutes getting to know this module. + +.. class:: incremental We're going to do this next part together, so open up a terminal and start a python interpreter @@ -314,11 +340,31 @@ python interpreter Sockets in Python ----------------- -The sockets library provides tools for finding out information about hosts on -the network. For example, you can find out about the machine you are currently -using:: +The Python sockets library allows us to find out what port a *service* uses: + +.. class:: small >>> import socket + >>> socket.getservbyname('ssh') + 22 + +.. class:: incremental + +You can also do a *reverse lookup*, finding what service uses a given *port*: + +.. class:: incremental small + + >>> socket.getservbyport(80) + 'http' + + +Sockets in Python +----------------- + +The sockets library also provides tools for finding out information about +*hosts*. For example, you can find out about the hostname and IP address of +the machine you are currently using:: + >>> socket.gethostname() 'heffalump.local' >>> socket.gethostbyname(socket.gethostname()) @@ -333,8 +379,8 @@ know their hostname. For example:: >>> socket.gethostbyname('google.com') '173.194.33.4' - >>> socket.gethostbyname('unc.edu') - '152.19.240.120' + >>> socket.gethostbyname('uw.edu') + '128.95.155.135' >>> socket.gethostbyname('crisewing.com') '108.59.11.99' @@ -401,13 +447,18 @@ single argument, the shared prefix for a defined set of constants: >>> def get_constants(prefix): ... """mapping of socket module constants to their names.""" - ... return dict( (getattr(socket, n), n) - ... for n in dir(socket) - ... if n.startswith(prefix) - ... ) + ... return dict( + ... (getattr(socket, n), n) + ... for n in dir(socket) + ... if n.startswith(prefix) + ... ) ... >>> +.. class:: small + +(you can also find this in ``resources/session01/session1.py``) + Socket Families --------------- @@ -423,7 +474,7 @@ stack. There were a couple of different types of IP addresses: .. class:: incremental -The *family* of a socket corresponds to the addressing system it uses for +The **family** of a socket corresponds to the *addressing system* it uses for connecting. @@ -475,6 +526,10 @@ What is the *default* family for the socket we created just a moment ago? (remember we bound the socket to the symbol ``foo``) +.. class:: incremental center + +How did you figure this out? + Socket Types ------------ @@ -490,8 +545,8 @@ Look up socket type constants with the ``SOCK_`` prefix:: .. class:: incremental -The most common are ``1`` (TCP type communication) and ``2`` (UDP type -communication). +The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram +communication (UDP)). Test your skills @@ -515,7 +570,8 @@ prefixed by ``IPPROTO_``:: .. class:: incremental The choice of which protocol to use for a socket is determined by the -*internet layer* protocol you intend to use. ``IP``? ``ICMP``? ``IGMP``? +*internet layer* protocol you intend to use. ``TCP``? ``UPD``? ``ICMP``? +``IGMP``? Test your skills @@ -524,6 +580,25 @@ Test your skills What is the *default* protocol used by our generic socket, ``foo``? +A Note About IPPROTO_IP +----------------------- + +You may wonder about the specifics of ``IPPROTO_IP`` (I did) + +.. class:: incremental + +Notice that the integer constant for it is ``0``. + +.. class:: incremental + +Setting this value is the same as saying "I'm not sure what I want, you choose +for me" + +.. class:: incremental + +Better to use a specific protocol if you know what you need. + + Address Information ------------------- @@ -542,20 +617,54 @@ specific communications profiles:: Address Information ------------------- -But when you are creating a socket to communicate with a remote service, how -can you determine the *correct* values to use? +When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile. .. class:: incremental +The local socket you create must match that communications profile. + +.. class:: incremental + +How can you determine the *correct* values to use? + +.. class:: incremental center + You ask. +Address Information +------------------- + +The function ``socket.getaddrinfo`` provides information about available +connections on a given host. + +.. code-block:: python + :class: incremental small + + socket.getaddrinfo('127.0.0.1', 80) + +.. class:: incremental + +* *host* can be specified as an IP address, a domain name or ``None`` +* *port* can be specified as an integer, a service name or ``None`` + +.. class:: incremental + +Provide optional *family*, *type* and *protocol* positional arguments to +filter results + +.. class:: incremental + +Set optional positional *flags* to control the behavior of the function + + Client Connections ------------------ The information returned by a call to ``socket.getaddrinfo`` is all you need to make a proper connection to a socket on a remote host. The value returned -is a tuple of +is a tuple of: .. class:: incremental @@ -638,7 +747,7 @@ Construct a Socket We've already made a socket ``foo`` using the generic constructor without any arguments. We can make a better one now by using real address information from -a real server online: +a real server online [**do not type this yet**]: .. class:: small @@ -675,7 +784,7 @@ Sending a Message ----------------- Send a message to the server on the other end of our connection (we'll -learn is session 2 about the message we are sending):: +learn in session 2 about the message we are sending):: >>> msg = "GET / HTTP/1.1\r\n" >>> msg += "Host: crisewing.com\r\n\r\n" @@ -688,18 +797,42 @@ learn is session 2 about the message we are sending):: * success returns ``None`` -* failure to send raises an error +* failure to send raises an error * you can use the type of error to figure out why the transmission failed -* you **cannot** know how much, if any, of your data was sent +* if an error occurs you **cannot** know how much, if any, of your data was + sent + + +Other Ways to Send +------------------ + +Instead of the ``sendall`` method, you could also use ``send``:: + + >>> bytes_sent = cewing_socket.send(msg) + >>> bytes_sent == len(msg) + True + +.. class:: incremental small + +* the method will return the number of bytes sent by the call + +* you are responsible for determining if your entire message was transmitted + +* if some data was __not__ transmitted, you must attempt to send the remainder + +.. class:: incremental + +You can also use the ``sendto`` method (which takes an address as the second +arg) if you want to connect to an address and send all in one. Receiving a Reply ----------------- Whatever reply we get is received by the socket we created. We can read it -back out:: +back out (again, **do not type this yet**):: >>> response = cewing_socket.recv(4096) >>> response @@ -716,6 +849,29 @@ back out:: repeatedly. The last bunch will be less than ``buffer size``. +Other Ways to Receive +--------------------- + +The ``recvfrom`` method takes the same *buffer_size* argument as ``recv``, but +returns a tuple of the bytes received and the address from which they came + +.. class:: incremental + +If you want to pre-allocate a buffer instead of creating a new string with the +results, you can use the ``recv_into`` or ``recvfrom_into`` methods. + +.. class:: incremental small + +* each takes an optional *nbytes* positional argument, controlling how many + bytes to read at a time. + +* if this is not provided, the size of the provided buffer will limit the + amount read. + +* the return value of ``recvfrom_into`` is a tuple of the number of bytes + received and the address from which they came. + + Cleaning Up ----------- From bd2c9ffc01d61599f34a60193f2cd8573ba0320b Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:11:27 -0700 Subject: [PATCH 012/297] update string formmatting --- resources/session01/echo_client.py | 6 +++--- resources/session01/echo_server.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/resources/session01/echo_client.py b/resources/session01/echo_client.py index c95e7c60..6f799e45 100644 --- a/resources/session01/echo_client.py +++ b/resources/session01/echo_client.py @@ -5,11 +5,11 @@ def client(msg): server_address = ('localhost', 10000) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - print >>sys.stderr, 'connecting to %s port %s' % server_address + print >>sys.stderr, 'connecting to {0} port {1}'.format(*server_address) sock.connect(server_address) try: # Send data - print >>sys.stderr, 'sending "%s"' % msg + print >>sys.stderr, 'sending "{0}"'.format(msg) sock.sendall(msg) # Look for the response amount_received = 0 @@ -17,7 +17,7 @@ def client(msg): while amount_received < amount_expected: data = sock.recv(16) amount_received += len(data) - print >>sys.stderr, 'received "%s"' % data + print >>sys.stderr, 'received "{0}"'.foramt(data) finally: print >>sys.stderr, 'closing socket' sock.close() diff --git a/resources/session01/echo_server.py b/resources/session01/echo_server.py index f28d8517..55739b1c 100644 --- a/resources/session01/echo_server.py +++ b/resources/session01/echo_server.py @@ -6,7 +6,7 @@ def server(): address = ('127.0.0.1', 10000) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>sys.stderr, "making a server on %s:%s" % address + print >>sys.stderr, "making a server on {0}:{1}".format(*address) sock.bind(address) sock.listen(1) @@ -15,16 +15,16 @@ def server(): print >>sys.stderr, 'waiting for a connection' conn, addr = sock.accept() # blocking try: - print >>sys.stderr, 'connection - %s:%s' % addr + print >>sys.stderr, 'connection - {0}:{1}'.format(*addr) while True: data = conn.recv(16) - print >>sys.stderr, 'received "%s"' % data + print >>sys.stderr, 'received "{0}"'.format(data) if data: msg = 'sending data back to client' print >>sys.stderr, msg conn.sendall(data) else: - msg = 'no more data from %s:%s' % addr + msg = 'no more data from {0}:{1}'.format(addr) print >>sys.stderr, msg break finally: From 5c0c7de92a10750bb5123149cdc5569259ac84db Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:11:46 -0700 Subject: [PATCH 013/297] update session 1 slides to fit 3-hour and to remove server exercise so it can be homework --- source/presentations/session01.rst | 388 +++++++++-------------------- 1 file changed, 117 insertions(+), 271 deletions(-) diff --git a/source/presentations/session01.rst b/source/presentations/session01.rst index 4af60937..04a6c912 100644 --- a/source/presentations/session01.rst +++ b/source/presentations/session01.rst @@ -580,38 +580,45 @@ Test your skills What is the *default* protocol used by our generic socket, ``foo``? -A Note About IPPROTO_IP ------------------------ +Custom Sockets +-------------- -You may wonder about the specifics of ``IPPROTO_IP`` (I did) +These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor. -.. class:: incremental +.. container:: incremental + + Using them allows you to create sockets with specific communications + profiles:: + + >>> bar = socket.socket(socket.AF_INET, + ... socket.SOCK_DGRAM, + ... socket.IPPROTO_UDP) + ... + >>> bar + -Notice that the integer constant for it is ``0``. -.. class:: incremental +Break Time +---------- -Setting this value is the same as saying "I'm not sure what I want, you choose -for me" +So far we have: .. class:: incremental -Better to use a specific protocol if you know what you need. +* learned about the "layers" of the TCP/IP Stack +* discussed *families*, *types* and *protocols* in sockets +* learned how to create sockets with a specific communications profile. +.. class:: incremental -Address Information -------------------- +When we return we'll learn how to find the communcations profiles of remote +sockets, how to connect to them, and how to send and receive messages. -These three properties of a socket correspond to the three positional arguments -you may pass to the constructor. This allows you to create sockets that have -specific communications profiles:: +.. class:: incremental - >>> bar = socket.socket(socket.AF_INET, - ... socket.SOCK_DGRAM, - ... socket.IPPROTO_UDP) - ... - >>> bar - +Take a few minutes now to clear your head (do not quit your python +interpreter). Address Information @@ -640,31 +647,14 @@ The function ``socket.getaddrinfo`` provides information about available connections on a given host. .. code-block:: python - :class: incremental small + :class: small socket.getaddrinfo('127.0.0.1', 80) .. class:: incremental -* *host* can be specified as an IP address, a domain name or ``None`` -* *port* can be specified as an integer, a service name or ``None`` - -.. class:: incremental - -Provide optional *family*, *type* and *protocol* positional arguments to -filter results - -.. class:: incremental - -Set optional positional *flags* to control the behavior of the function - - -Client Connections ------------------- - -The information returned by a call to ``socket.getaddrinfo`` is all you need -to make a proper connection to a socket on a remote host. The value returned -is a tuple of: +This provides all you need to make a proper connection to a socket on a remote +host. The value returned is a tuple of: .. class:: incremental @@ -678,7 +668,11 @@ is a tuple of: A quick utility method ---------------------- -Again, let's create a utility method in-place so we can see this in action:: +Again, let's create a utility method in-place so we can see this in action: + +.. class:: small + +:: >>> def get_address_info(host, port): ... for response in socket.getaddrinfo(host, port): @@ -692,11 +686,15 @@ Again, let's create a utility method in-place so we can see this in action:: ... >>> +.. class:: small + +(you can also find this in ``resources/session01/session1.py``) + On Your Own Machine ------------------- -Now, ask your own machine what services are available on 'http':: +Now, ask your own machine what possible connections are available for 'http':: >>> get_address_info(socket.gethostname(), 'http') family: AF_INET @@ -805,29 +803,6 @@ learn in session 2 about the message we are sending):: sent -Other Ways to Send ------------------- - -Instead of the ``sendall`` method, you could also use ``send``:: - - >>> bytes_sent = cewing_socket.send(msg) - >>> bytes_sent == len(msg) - True - -.. class:: incremental small - -* the method will return the number of bytes sent by the call - -* you are responsible for determining if your entire message was transmitted - -* if some data was __not__ transmitted, you must attempt to send the remainder - -.. class:: incremental - -You can also use the ``sendto`` method (which takes an address as the second -arg) if you want to connect to an address and send all in one. - - Receiving a Reply ----------------- @@ -842,36 +817,13 @@ back out (again, **do not type this yet**):: .. class:: incremental small * The sole required argument is ``buffer_size`` (an integer). It should be a - power of 2 and smallish + power of 2 and smallish (~4096) * It returns a byte string of ``buffer_size`` (or smaller if less data was received) * If the response is longer than ``buffer size``, you can call the method repeatedly. The last bunch will be less than ``buffer size``. -Other Ways to Receive ---------------------- - -The ``recvfrom`` method takes the same *buffer_size* argument as ``recv``, but -returns a tuple of the bytes received and the address from which they came - -.. class:: incremental - -If you want to pre-allocate a buffer instead of creating a new string with the -results, you can use the ``recv_into`` or ``recvfrom_into`` methods. - -.. class:: incremental small - -* each takes an optional *nbytes* positional argument, controlling how many - bytes to read at a time. - -* if this is not provided, the size of the provided buffer will limit the - amount read. - -* the return value of ``recvfrom_into`` is a tuple of the number of bytes - received and the address from which they came. - - Cleaning Up ----------- @@ -918,28 +870,6 @@ Then, receive a reply, iterating until it is complete: 19427 -Break Time ----------- - -So far we have: - -.. class:: incremental - -* learned about the "layers" of the TCP/IP Stack -* discussed *families*, *types* and *protocols* in sockets -* learned some API for finding out how to connect to a remote server -* made our first connection to a server -* and sent and received our first messages through a socket. - -.. class:: incremental - -Not bad for a Monday morning. - -.. class:: incremental - -Let's take 10 minutes and return to learn about the other end of this wire. - - Server Side ----------- @@ -960,7 +890,7 @@ Construct a Socket >>> server_socket = socket.socket( ... socket.AF_INET, ... socket.SOCK_STREAM, - ... socket.IPPROTO_IP) + ... socket.IPPROTO_TCP) ... >>> server_socket @@ -993,16 +923,16 @@ connections:: * The argument to ``listen`` is the *backlog* -* The *backlog* is the **maximum** number of connections that the socket will - queue +* The *backlog* is the **maximum** number of connection requests that the + socket will queue -* Once the limit is reached, the socket refuses new connections +* Once the limit is reached, the socket refuses new connections. Accept Incoming Messages ------------------------ -When a socket is listening, it can receive incoming messages:: +When a socket is listening, it can receive incoming connection requests:: >>> connection, client_address = server_socket.accept() ... # this blocks until a client connects @@ -1010,16 +940,14 @@ When a socket is listening, it can receive incoming messages:: .. class:: incremental -* The ``connection`` returned by a call to ``accept`` is a **new socket** +* The ``connection`` returned by a call to ``accept`` is a **new socket**. + This new socket is used to communicate with the client -* It is this *new* socket that is used for communications with the client +* The ``client_address`` is a two-tuple of IP Address and Port for the client socket -* the ``client_address`` is a two-tuple of IP Address and Port for the client - socket - -* The number of *new* sockets that can be spun off by a listening socket is - equal to ``backlog`` +* When a connection request is 'accepted', it is removed from the backlog + queue. Send a Reply @@ -1041,11 +969,8 @@ Once a transaction between the client and server is complete, the .. class:: incremental -* Closing the connection socket will decrement the number of active sockets in - the queue - -* If the maximum specified by ``backlog`` had been reached, this will allow a - new connection to be made. +Note that the ``server_socket`` is *never* closed as long as the server +continues to run. Getting the Flow @@ -1108,8 +1033,7 @@ new connection socket. .. class:: incremental -When you're ready, type the following in the *client* interpreter. Watch the -server! +When you're ready, type the following in the *client* interpreter. .. class:: incremental @@ -1157,196 +1081,118 @@ Congratulations! You've run your first client-server interaction -Take it to the Next Level -------------------------- +Homework +-------- -That's pretty much everything we need to build a simple echo server and -client. +Your homework assignment for this week is to take what you've learned here +and build a simple "echo" server. .. class:: incremental -We are now going to move to writing python files. +The server should automatically return to any client that connects *exactly* +what it receives (it should **echo** all messages). .. class:: incremental -Quit both interpreters and open a new file in your favorite text editor. Call -it ``echo_client.py`` +You will also write a python script that, when run, will send a message to the +server and receive the reply, printing it to ``stdout``. +.. class:: incremental -The Echo Client - 1 -------------------- - -.. code-block:: python - :class: small - - import socket - import sys +Finally, you'll do all of this so that it can be tested. - def client(msg): - print >> sys.stderr, "sending: %s" % msg - if __name__ == '__main__': - if len(sys.argv) != 2: - usg = '\nusage: python echo_client.py "this is my message"\n' - print >>sys.stderr, usg - sys.exit(1) +What You Have +------------- - msg = sys.argv[1] - client(msg) +In our class repository, there is a folder ``assignments/session01``. .. class:: incremental -Save that and try it out - - -Check Your Work ---------------- +Inside that folder, you should find: -In your terminal, where you created and saved ``echo_client.py``: +.. class:: incremental -:: +* A file ``tasks.txt`` that contains these instructions - $ python echo_client.py +* A skeleton for your server in ``echo_server.py`` - usage: python echo_client.py "this is my message" +* A skeleton for your client script in ``echo_client.py`` - $ python echo_client.py "my baloney has a first name" - sending "my baloney has a first name" +* Some simple tests in ``tests.py`` +.. class:: incremental -The Echo Client - 2 -------------------- +Your task is to make the tests pass. -.. code-block:: python - :class: small - def client(msg): - server_address = ('localhost', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - print >>sys.stderr, 'connecting to %s port %s' % server_address - sock.connect(server_address) - try: - # Send data - print >>sys.stderr, 'sending "%s"' % msg - sock.sendall(msg) - # Look for the response - amount_received = 0 - amount_expected = len(msg) - while amount_received < amount_expected: - data = sock.recv(16) - amount_received += len(data) - print >>sys.stderr, 'received "%s"' % data - finally: - print >>sys.stderr, 'closing socket' - sock.close() - - -It Takes Two ------------- +Running the tests +----------------- -The client script at this point is no good without a server to receive the -message and send it back. Let's make that next. +To run the tests, you'll have to set the server running in one terminal: -.. class:: incremental +.. class:: small -Again, open a new file in your text editor. Call it `echo_server.py`. +:: + $ python echo_server.py -The Echo Server - 1 -------------------- +.. container:: incremental -.. code-block:: python - :class: small + Then, in a second terminal, you will execute the tests: + + .. class:: small + + :: + + $ python tests.py - import socket - import sys +.. container:: incremental - def server(): - address = ('127.0.0.1', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>sys.stderr, "making a server on %s:%s" % address - sock.bind(address) - sock.listen(1) - try: - pass #<- what goes here comes in the next slide - except KeyboardInterrupt: - sock.close() - return + You should see output like this: + + .. class:: small + + :: + + [...] + FAILED (failures=2) - if __name__ == '__main__': - server() - sys.exit(0) +Submitting Your Homework +------------------------ -The Echo Server - 2 -------------------- +To submit your homework: -.. code-block:: python - :class: small +.. class:: incremental - try: - while True: - print >>sys.stderr, 'waiting for a connection' - conn, addr = sock.accept() # blocking - try: - print >>sys.stderr, 'connection - %s:%s' % addr - while True: - data = conn.recv(16) - print >>sys.stderr, 'received "%s"' % data - if data: - msg = 'sending data back to client' - print >>sys.stderr, msg - conn.sendall(data) - else: - msg = 'no more data from %s:%s' % addr - print >>sys.stderr, msg - break - finally: - conn.close() - except KeyboardInterrupt: - # ... - - -Playing With Your Toy ---------------------- - -In one terminal, start the server:: +* In github, make a fork of my repository into *your* account. - $ python echo_server.py - making a server on 127.0.0.1:10000 - waiting for a connection +* Clone your fork of my repository to your computer. -.. class:: incremental +* Do your work in the ``assignments/session01/`` folder on your computer and + commit your changes to your fork. -In a second, use the client to send a message: +* When you are finished and your tests are passing, you will open a pull + request in github.com from your fork to mine. .. class:: incremental -:: - - $ python echo_client.py "I am sending a longer message." +I will review your work when I receive your pull requests, make comments on it +there, and then close the pull request. -Next Steps ----------- +Going Further +------------- -You've now seen the basics of socket-based communication. +In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. .. class:: incremental -In the next session, we'll learn about the protocols that govern these types -of communications. +If you finish the first part of the homework in less than 3-4 hours give one +or more of these a whirl. .. class:: incremental -As an exercise, we'll extend this simple echo server into a basic HTTP -server, and we'll be able to ditch the client and use a web browser instead. - - -Lunch Time ----------- - -.. class:: big-centered - -We'll see you back here in an hour. Enjoy! +They are not required, but if you include solutions in your pull request, I'll +review your work. From 608223bc3138054ae86c0f470312773232400774 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:13:01 -0700 Subject: [PATCH 014/297] set up first week assignment w/ tests --- assignments/session01/echo_client.py | 42 +++++++++ assignments/session01/echo_server.py | 69 +++++++++++++++ assignments/session01/tasks.txt | 49 +++++++++++ assignments/session01/tests.py | 123 +++++++++++++++++++++++++++ 4 files changed, 283 insertions(+) create mode 100644 assignments/session01/echo_client.py create mode 100644 assignments/session01/echo_server.py create mode 100644 assignments/session01/tasks.txt create mode 100644 assignments/session01/tests.py diff --git a/assignments/session01/echo_client.py b/assignments/session01/echo_client.py new file mode 100644 index 00000000..61616c36 --- /dev/null +++ b/assignments/session01/echo_client.py @@ -0,0 +1,42 @@ +import socket +import sys + + +def client(msg, log_buffer=sys.stderr): + server_address = ('localhost', 10000) + # TODO: Replace the following line with your code which will instantiate + # a TCP socket with IPv4 Addressing, call the socket you make 'sock' + sock = None + print >>log_buffer, 'connecting to {0} port {1}'.format(*server_address) + # TODO: connect your socket to the server here. + + # this try/finally block exists purely to allow us to close the socket + # when we are finished with it + try: + print >>log_buffer, 'sending "{0}"'.format(msg) + # TODO: send your message to the server here. + + # TODO: the server should be sending you back your message as a series + # of 16-byte chunks. You will want to log them as you receive + # each one. You will also need to check to make sure that + # you have received the entire message you sent __before__ + # closing the socket. + # + # Make sure that you log each chunk you receive. Use the print + # statement below to do it. (The tests expect this log format) + chunk = '' + print >>log_buffer, 'received "{0}"'.format(chunk) + finally: + # TODO: after you break out of the loop receiving echoed chunks from + # the server you will want to close your client socket. + print >>log_buffer, 'closing socket' + + +if __name__ == '__main__': + if len(sys.argv) != 2: + usg = '\nusage: python echo_client.py "this is my message"\n' + print >>sys.stderr, usg + sys.exit(1) + + msg = sys.argv[1] + client(msg) \ No newline at end of file diff --git a/assignments/session01/echo_server.py b/assignments/session01/echo_server.py new file mode 100644 index 00000000..217380fb --- /dev/null +++ b/assignments/session01/echo_server.py @@ -0,0 +1,69 @@ +import socket +import sys + + +def server(log_buffer=sys.stderr): + # set an address for our server + address = ('127.0.0.1', 10000) + # TODO: Replace the following line with your code which will instantiate + # a TCP socket with IPv4 Addressing, call the socket you make 'sock' + sock = None + # TODO: Set an option to allow the socket address to be reused immediately + # see the end of http://docs.python.org/2/library/socket.html + + # log that we are building a server + print >>log_buffer, "making a server on {0}:{1}".format(*address) + + # TODO: bind your new sock 'sock' to the address above and begin to listen + # for incoming connections + + try: + # the outer loop controls the creation of new connection sockets. The + # server will handle each incoming connection one at a time. + while True: + print >>log_buffer, 'waiting for a connection' + + # TODO: make a new socket when a client connects, call it 'conn', + # at the same time you should be able to get the address of + # the client so we can report it below. Replace the + # following line with your code. It is only here to prevent + # syntax errors + addr = ('bar', 'baz') + try: + print >>log_buffer, 'connection - {0}:{1}'.format(*addr) + + # the inner loop will receive messages sent by the client in + # buffers. When a complete message has been received, the + # loop will exit + while True: + # TODO: receive 16 bytes of data from the client. Store + # the data you receive as 'data'. Replace the + # following line with your code. It's only here as + # a placeholder to prevent an error in string + # formatting + data = '' + print >>log_buffer, 'received "{0}"'.format(data) + # TODO: you will need to check here to see if any data was + # received. If so, send the data you got back to + # the client. If not, exit the inner loop and wait + # for a new connection from a client + + finally: + # TODO: When the inner loop exits, this 'finally' clause will + # be hit. Use that opportunity to close the socket you + # created above when a client connected. Replace the + # call to `pass` below, which is only there to prevent + # syntax problems + pass + + except KeyboardInterrupt: + # TODO: Use the python KeyboardIntterupt exception as a signal to + # close the server socket and exit from the server function. + # Replace the call to `pass` below, which is only there to + # prevent syntax problems + pass + + +if __name__ == '__main__': + server() + sys.exit(0) \ No newline at end of file diff --git a/assignments/session01/tasks.txt b/assignments/session01/tasks.txt new file mode 100644 index 00000000..9352a45f --- /dev/null +++ b/assignments/session01/tasks.txt @@ -0,0 +1,49 @@ +Session 1 Homework +================== + +Required Tasks: +--------------- + +* Complete the code in ``echo_server.py`` to create a server that sends back + whatever messages it receives from a client + +* Complete the code in ``echo_client.py`` to create a client function that + can send a message and receive a reply. + +* Ensure that the tests in ``tests.py`` pass. + +To run the tests: + +* Open one terminal while in this folder and execute this command: + + $ python echo_server.py + +* Open a second terminal in this same folder and execute this command: + + $ python tests.py + + + + +Optional Tasks: +--------------- + +* Write a python function that lists the services provided by a given range of + ports. + + * accept the lower and upper bounds as arguments + * provide sensible defaults + * Ensure that it only accepts valid port numbers (0-65535) + +* The echo server as outlined will only process a connection from one client + at a time. If a second client were to attempt a connection, it would have to + wait until the first message was fully echoed before it could be dealt with. + + Python provides a module called `select` that allows waiting for I/O events + in order to control flow. The `select.select` method can be used to allow + our echo server to handle more than one incoming connection in "parallel". + + Read the documentation about the `select` module + (http://docs.python.org/2/library/select.html) and attempt to write a second + version of the echo server that can handle multiple client connections in + "parallel". You do not need to invoke threading of any kind to do this. diff --git a/assignments/session01/tests.py b/assignments/session01/tests.py new file mode 100644 index 00000000..be3b3363 --- /dev/null +++ b/assignments/session01/tests.py @@ -0,0 +1,123 @@ +from cStringIO import StringIO +from echo_client import client +import socket +import unittest + + +def make_buffers(string, buffsize=16): + for start in range(0, len(string), buffsize): + yield string[start:start+buffsize] + + +class EchoTestCase(unittest.TestCase): + """tests for the echo server and client""" + connection_msg = 'connecting to localhost port 10000' + sending_msg = 'sending "{0}"' + received_msg = 'received "{0}"' + closing_msg = 'closing socket' + + def setUp(self): + """set up our tests""" + if not hasattr(self, 'buff'): + # ensure we have a buffer for the client to write to + self.log = StringIO() + else: + # ensure that the buffer is set to the start for the next test + self.log.seek(0) + + def tearDown(self): + """clean up after ourselves""" + if hasattr(self, 'buff'): + # clear our buffer for the next test + self.log.seek(0) + self.log.truncate() + + def send_message(self, message): + """Attempt to send a message using the client and the test buffer + + In case of a socket error, fail and report the problem + """ + try: + client(message, self.log) + except socket.error, e: + if e.errno == 61: + msg = "Error: {0}, is the server running?" + self.fail(msg.format(e.strerror)) + else: + self.fail("Unexpected Error: {0}".format(str(e))) + + def process_log(self): + """process the buffer used by the client for logging + + The first and last lines of output will be checked to ensure that the + client started and terminated in the expected way + + The 'sending' message will be separated from the echoed message + returned from the server. + + Finally, the sending message, and the list of returned buffer lines + will be returned + """ + if self.log.tell() == 0: + self.fail("No bytes written to buffer") + + self.log.seek(0) + client_output = self.log.read() + lines = client_output.strip().split('\n') + first_line = lines.pop(0) + self.assertEqual(first_line, self.connection_msg, + "Unexpected connection message") + send_msg = lines.pop(0) + last_line = lines.pop() + self.assertEqual(last_line, self.closing_msg, + "Unexpected closing message") + return send_msg, lines + + def testShortMessageEcho(self): + """test that a message short than 16 bytes echoes cleanly""" + short_message = "short message" + self.send_message(short_message) + actual_sent, actual_reply = self.process_log() + expected_sent = self.sending_msg.format(short_message) + self.assertEqual( + expected_sent, + actual_sent, + "expected {0}, got {1}".format(expected_sent, actual_sent) + ) + + self.assertEqual(len(actual_reply), 1, + "Short message was split unexpectedly") + + actual_line = actual_reply[0] + expected_line = self.received_msg.format(short_message) + self.assertEqual( + expected_line, + actual_line, + "expected {0} got {1}".format(expected_line, actual_line)) + + def testLongMessageEcho(self): + """test that a message longer than 16 bytes echoes in 16-byte chunks""" + long_message = "Four score and seven years ago our fathers did stuff" + self.send_message(long_message) + actual_sent, actual_reply = self.process_log() + + expected_sent = self.sending_msg.format(long_message) + self.assertEqual( + expected_sent, + actual_sent, + "expected {0}, got {1}".format(expected_sent, actual_sent) + ) + + expected_buffers = make_buffers(long_message, 16) + for line_num, buff in enumerate(expected_buffers): + expected_line = self.received_msg.format(buff) + actual_line = actual_reply[line_num] + self.assertEqual( + expected_line, + actual_line, + "expected {0}, got {1}".format(expected_line, actual_line) + ) + + +if __name__ == '__main__': + unittest.main() From 0d8e6cad135b01b69880f935b0ac23a597625d8e Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:16:58 -0700 Subject: [PATCH 015/297] convert to pluggable log buffer --- resources/session01/echo_client.py | 10 +++++----- resources/session01/echo_server.py | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/session01/echo_client.py b/resources/session01/echo_client.py index 6f799e45..ded3e397 100644 --- a/resources/session01/echo_client.py +++ b/resources/session01/echo_client.py @@ -2,14 +2,14 @@ import sys -def client(msg): +def client(msg, log_buffer=sys.stderr): server_address = ('localhost', 10000) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - print >>sys.stderr, 'connecting to {0} port {1}'.format(*server_address) + print >>log_buffer, 'connecting to {0} port {1}'.format(*server_address) sock.connect(server_address) try: # Send data - print >>sys.stderr, 'sending "{0}"'.format(msg) + print >>log_buffer, 'sending "{0}"'.format(msg) sock.sendall(msg) # Look for the response amount_received = 0 @@ -17,9 +17,9 @@ def client(msg): while amount_received < amount_expected: data = sock.recv(16) amount_received += len(data) - print >>sys.stderr, 'received "{0}"'.foramt(data) + print >>log_buffer, 'received "{0}"'.foramt(data) finally: - print >>sys.stderr, 'closing socket' + print >>log_buffer, 'closing socket' sock.close() diff --git a/resources/session01/echo_server.py b/resources/session01/echo_server.py index 55739b1c..e4fe7ae5 100644 --- a/resources/session01/echo_server.py +++ b/resources/session01/echo_server.py @@ -2,30 +2,30 @@ import sys -def server(): +def server(log_buffer=sys.stderr): address = ('127.0.0.1', 10000) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>sys.stderr, "making a server on {0}:{1}".format(*address) + print >>log_buffer, "making a server on {0}:{1}".format(*address) sock.bind(address) sock.listen(1) try: while True: - print >>sys.stderr, 'waiting for a connection' + print >>log_buffer, 'waiting for a connection' conn, addr = sock.accept() # blocking try: - print >>sys.stderr, 'connection - {0}:{1}'.format(*addr) + print >>log_buffer, 'connection - {0}:{1}'.format(*addr) while True: data = conn.recv(16) - print >>sys.stderr, 'received "{0}"'.format(data) + print >>log_buffer, 'received "{0}"'.format(data) if data: msg = 'sending data back to client' - print >>sys.stderr, msg + print >>log_buffer, msg conn.sendall(data) else: msg = 'no more data from {0}:{1}'.format(addr) - print >>sys.stderr, msg + print >>log_buffer, msg break finally: conn.close() From 8afecccaf26921520bcd34fa74166e4df7be3372 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:20:44 -0700 Subject: [PATCH 016/297] fix typos --- resources/session01/echo_client.py | 2 +- resources/session01/echo_server.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/session01/echo_client.py b/resources/session01/echo_client.py index ded3e397..bb8452d3 100644 --- a/resources/session01/echo_client.py +++ b/resources/session01/echo_client.py @@ -17,7 +17,7 @@ def client(msg, log_buffer=sys.stderr): while amount_received < amount_expected: data = sock.recv(16) amount_received += len(data) - print >>log_buffer, 'received "{0}"'.foramt(data) + print >>log_buffer, 'received "{0}"'.format(data) finally: print >>log_buffer, 'closing socket' sock.close() diff --git a/resources/session01/echo_server.py b/resources/session01/echo_server.py index e4fe7ae5..3158d710 100644 --- a/resources/session01/echo_server.py +++ b/resources/session01/echo_server.py @@ -24,7 +24,7 @@ def server(log_buffer=sys.stderr): print >>log_buffer, msg conn.sendall(data) else: - msg = 'no more data from {0}:{1}'.format(addr) + msg = 'no more data from {0}:{1}'.format(*addr) print >>log_buffer, msg break finally: From d95ca2b2350ce8e57a6b15971c8b33ad3472a511 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:41:12 -0700 Subject: [PATCH 017/297] remove answers from master branch for session 01 --- resources/session01/echo_client.py | 33 ------------------------ resources/session01/echo_server.py | 40 ------------------------------ resources/session01/session1.py | 26 +------------------ 3 files changed, 1 insertion(+), 98 deletions(-) delete mode 100644 resources/session01/echo_client.py delete mode 100644 resources/session01/echo_server.py diff --git a/resources/session01/echo_client.py b/resources/session01/echo_client.py deleted file mode 100644 index bb8452d3..00000000 --- a/resources/session01/echo_client.py +++ /dev/null @@ -1,33 +0,0 @@ -import socket -import sys - - -def client(msg, log_buffer=sys.stderr): - server_address = ('localhost', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - print >>log_buffer, 'connecting to {0} port {1}'.format(*server_address) - sock.connect(server_address) - try: - # Send data - print >>log_buffer, 'sending "{0}"'.format(msg) - sock.sendall(msg) - # Look for the response - amount_received = 0 - amount_expected = len(msg) - while amount_received < amount_expected: - data = sock.recv(16) - amount_received += len(data) - print >>log_buffer, 'received "{0}"'.format(data) - finally: - print >>log_buffer, 'closing socket' - sock.close() - - -if __name__ == '__main__': - if len(sys.argv) != 2: - usg = '\nusage: python echo_client.py "this is my message"\n' - print >>sys.stderr, usg - sys.exit(1) - - msg = sys.argv[1] - client(msg) \ No newline at end of file diff --git a/resources/session01/echo_server.py b/resources/session01/echo_server.py deleted file mode 100644 index 3158d710..00000000 --- a/resources/session01/echo_server.py +++ /dev/null @@ -1,40 +0,0 @@ -import socket -import sys - - -def server(log_buffer=sys.stderr): - address = ('127.0.0.1', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>log_buffer, "making a server on {0}:{1}".format(*address) - sock.bind(address) - sock.listen(1) - - try: - while True: - print >>log_buffer, 'waiting for a connection' - conn, addr = sock.accept() # blocking - try: - print >>log_buffer, 'connection - {0}:{1}'.format(*addr) - while True: - data = conn.recv(16) - print >>log_buffer, 'received "{0}"'.format(data) - if data: - msg = 'sending data back to client' - print >>log_buffer, msg - conn.sendall(data) - else: - msg = 'no more data from {0}:{1}'.format(*addr) - print >>log_buffer, msg - break - finally: - conn.close() - - except KeyboardInterrupt: - sock.close() - return - - -if __name__ == '__main__': - server() - sys.exit(0) \ No newline at end of file diff --git a/resources/session01/session1.py b/resources/session01/session1.py index 167f0e88..4de1db43 100644 --- a/resources/session01/session1.py +++ b/resources/session01/session1.py @@ -1,16 +1,5 @@ import socket - -def get_named_services(first_port=0, last_port=2**15+2**14): - tmpl = '{0: >4}: {1}' - for i in xrange(first_port, last_port): - try: - service = socket.getservbyport(i) - except socket.error: - continue - print tmpl.format(i, service) - - def get_constants(prefix): return dict( (getattr(socket, n), n) @@ -21,10 +10,7 @@ def get_constants(prefix): # this example is more 'pythonic' for 2.7 and above (where dictionary # comprehensions exist) def get_constants_27(prefix): - return { - getattr(socket, n):n for n in dir(socket) - if n.startswith(prefix) - } + return {getattr(socket, n):n for n in dir(socket) if n.startswith(prefix)} def get_address_info(host, port): @@ -39,13 +25,3 @@ def get_address_info(host, port): print 'canonical name: ', nam print 'socket address: ', add print - - -def print_address_constants(): - addrs = get_constants('INADDR') - for val, name in addrs.items(): - hexval = hex(val) - packed = socket.inet_aton(hexval) - addr = socket.inet_ntoa(packed) - tmpl = '{0: >24}: {1: <10} {2: <16}' - print tmpl.format(name, hexval, addr) From f7e4ea3a51a96f84b4e3adac7c8b5750b89a01f6 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 27 Dec 2013 17:52:04 -0700 Subject: [PATCH 018/297] further comment --- resources/session01/session1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/session01/session1.py b/resources/session01/session1.py index 4de1db43..a2fe6297 100644 --- a/resources/session01/session1.py +++ b/resources/session01/session1.py @@ -8,7 +8,7 @@ def get_constants(prefix): ) # this example is more 'pythonic' for 2.7 and above (where dictionary -# comprehensions exist) +# comprehensions exist) It will not work in Python 2.6 or below. def get_constants_27(prefix): return {getattr(socket, n):n for n in dir(socket) if n.startswith(prefix)} From d1befa72ef315845d0123c10f2b583c8a089f85d Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 13:55:31 -0700 Subject: [PATCH 019/297] canonical base echo server as starting point for http server exercise --- resources/session02/http_server.py | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 resources/session02/http_server.py diff --git a/resources/session02/http_server.py b/resources/session02/http_server.py new file mode 100644 index 00000000..cac6911a --- /dev/null +++ b/resources/session02/http_server.py @@ -0,0 +1,40 @@ +import socket +import sys + + +def server(log_buffer=sys.stderr): + address = ('127.0.0.1', 10000) + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + print >>log_buffer, "making a server on {0}:{1}".format(*address) + sock.bind(address) + sock.listen(1) + + try: + while True: + print >>log_buffer, 'waiting for a connection' + conn, addr = sock.accept() # blocking + try: + print >>log_buffer, 'connection - {0}:{1}'.format(*addr) + while True: + data = conn.recv(16) + print >>log_buffer, 'received "{0}"'.format(data) + if data: + msg = 'sending data back to client' + print >>log_buffer, msg + conn.sendall(data) + else: + msg = 'no more data from {0}:{1}'.format(*addr) + print >>log_buffer, msg + break + finally: + conn.close() + + except KeyboardInterrupt: + sock.close() + return + + +if __name__ == '__main__': + server() + sys.exit(0) From d8d65576c243a72e24f7563f1f604919e60d86b9 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:20:21 -0700 Subject: [PATCH 020/297] create a simple client we can use both for testing and for the presentation demos --- resources/session02/simple_client.py | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 resources/session02/simple_client.py diff --git a/resources/session02/simple_client.py b/resources/session02/simple_client.py new file mode 100644 index 00000000..c0f0d6e2 --- /dev/null +++ b/resources/session02/simple_client.py @@ -0,0 +1,37 @@ +import socket +import sys + + +def client(msg): + server_address = ('localhost', 10000) + sock = socket.socket( + socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP + ) + print >>sys.stderr, 'connecting to {0} port {1}'.format(*server_address) + sock.connect(server_address) + response = '' + done = False + bufsize = 1024 + try: + print >>sys.stderr, 'sending "{0}"'.format(msg) + sock.sendall(msg) + while not done: + chunk = sock.recv(bufsize) + if len(chunk) < bufsize: + done = True + response += chunk + print >>sys.stderr, 'received "{0}"'.format(response) + finally: + print >>sys.stderr, 'closing socket' + sock.close() + return response + + +if __name__ == '__main__': + if len(sys.argv) != 2: + usg = '\nusage: python echo_client.py "this is my message"\n' + print >>sys.stderr, usg + sys.exit(1) + + msg = sys.argv[1] + client(msg) \ No newline at end of file From 7f385914a7e3c216ca925f0a1e0430d0158ce603 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:21:15 -0700 Subject: [PATCH 021/297] fix test names for pep8 compliance --- assignments/session01/tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assignments/session01/tests.py b/assignments/session01/tests.py index be3b3363..d0d4005a 100644 --- a/assignments/session01/tests.py +++ b/assignments/session01/tests.py @@ -73,7 +73,7 @@ def process_log(self): "Unexpected closing message") return send_msg, lines - def testShortMessageEcho(self): + def test_short_message_echo(self): """test that a message short than 16 bytes echoes cleanly""" short_message = "short message" self.send_message(short_message) @@ -95,7 +95,7 @@ def testShortMessageEcho(self): actual_line, "expected {0} got {1}".format(expected_line, actual_line)) - def testLongMessageEcho(self): + def test_long_message_echo(self): """test that a message longer than 16 bytes echoes in 16-byte chunks""" long_message = "Four score and seven years ago our fathers did stuff" self.send_message(long_message) From f675a7cdf835077bdaba4298775dbf328825c734 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:21:46 -0700 Subject: [PATCH 022/297] needs a newline --- resources/session02/http_server_1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/session02/http_server_1.py b/resources/session02/http_server_1.py index c9d129f3..12cbfeba 100644 --- a/resources/session02/http_server_1.py +++ b/resources/session02/http_server_1.py @@ -68,4 +68,4 @@ def server(): if __name__ == '__main__': server() - sys.exit(0) \ No newline at end of file + sys.exit(0) From b7bf1c61d584ea8629d667d00ab7931f43931337 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:22:13 -0700 Subject: [PATCH 023/297] tests to run during class as we build the http server --- resources/session02/tests.py | 147 +++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 resources/session02/tests.py diff --git a/resources/session02/tests.py b/resources/session02/tests.py new file mode 100644 index 00000000..46624d8f --- /dev/null +++ b/resources/session02/tests.py @@ -0,0 +1,147 @@ +import mimetypes +import socket +import unittest + + +CRLF = '\r\n' +KNOWN_TYPES = set(mimetypes.types_map.values()) + + +class ResponseOkTestCase(unittest.TestCase): + """unit tests for the response_ok method in our server + + Becase this is a unit test case, it does not require the server to be + running. + """ + + def call_function_under_test(self): + """call the `response_ok` function from our http_server module""" + from http_server import response_ok + return response_ok() + + def test_response_code(self): + ok = self.call_function_under_test() + expected = "200 OK" + actual = ok.split(CRLF)[0].split(' ', 1)[1].strip() + self.assertEqual(expected, actual) + + def test_response_method(self): + ok = self.call_function_under_test() + expected = 'HTTP/1.1' + actual = ok.split(CRLF)[0].split(' ', 1)[0].strip() + self.assertEqual(expected, actual) + + def test_response_has_content_type_header(self): + ok = self.call_function_under_test() + headers = ok.split(CRLF+CRLF, 1)[0].split(CRLF)[1:] + expected_name = 'content-type' + has_header = False + for header in headers: + name, value = header.split(':') + actual_name = name.strip().lower() + if actual_name == expected_name: + has_header = True + break + self.assertTrue(has_header) + + def test_response_has_legitimate_content_type(self): + ok = self.call_function_under_test() + headers = ok.split(CRLF+CRLF, 1)[0].split(CRLF)[1:] + expected_name = 'content-type' + for header in headers: + name, value = header.split(':') + actual_name = name.strip().lower() + if actual_name == expected_name: + self.assertTrue(value.strip() in KNOWN_TYPES) + return + self.fail('no content type header found') + + +class ResponseMethodNotAllowedTestCase(unittest.TestCase): + """unit tests for the response_method_not_allowed function""" + + def call_function_under_test(self): + """call the `response_method_not_allowed` function""" + from http_server import response_method_not_allowed + return response_method_not_allowed() + + def test_response_code(self): + resp = self.call_function_under_test() + expected = "405 Method Not Allowed" + actual = resp.split(CRLF)[0].split(' ', 1)[1].strip() + self.assertEqual(expected, actual) + + def test_response_method(self): + resp = self.call_function_under_test() + expected = 'HTTP/1.1' + actual = resp.split(CRLF)[0].split(' ', 1)[0].strip() + self.assertEqual(expected, actual) + + +class ParseRequestTestCase(unittest.TestCase): + """unit tests for the parse_request method""" + + def call_function_under_test(self, request): + """call the `parse_request` function""" + from http_server import parse_request + return parse_request(request) + + def test_get_method(self): + request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" + try: + self.call_function_under_test(request) + except (NotImplementedError, Exception), e: + self.fail('GET method raises an error {0}'.format(str(e))) + + def test_bad_http_methods(self): + methods = ['POST', 'PUT', 'DELETE', 'HEAD'] + request_template = "{0} / HTTP/1.1\r\nHost: example.com\r\n\r\n" + for method in methods: + request = request_template.format(method) + self.assertRaises( + NotImplementedError, self.call_function_under_test, request + ) + +class HTTPServerFunctionalTestCase(unittest.TestCase): + """functional tests of the HTTP Server + + This test case interacts with the http server, and as such requires it to + be running in order for the tests to pass + """ + + def send_message(self, message): + """Attempt to send a message using the client and the test buffer + + In case of a socket error, fail and report the problem + """ + from simple_client import client + response = '' + try: + response = client(message) + except socket.error, e: + if e.errno == 61: + msg = "Error: {0}, is the server running?" + self.fail(msg.format(e.strerror)) + else: + self.fail("Unexpected Error: {0}".format(str(e))) + return response + + def test_get_request(self): + message = CRLF.join(['GET / HTTP/1.1', 'Host: example.com', '']) + expected = '200 OK' + actual = self.send_message(message) + self.assertTrue( + expected in actual, '"{0}" not in "{1}"'.format(expected, actual) + ) + + def test_post_request(self): + message = CRLF.join(['POST / HTTP/1.1', 'Host: example.com', '']) + expected = '405 Method Not Allowed' + actual = self.send_message(message) + self.assertTrue( + expected in actual, '"{0}" not in "{1}"'.format(expected, actual) + ) + + +if __name__ == '__main__': + unittest.main() From f1b0b89c298cca144f69857661fcb99a5d13990f Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:22:57 -0700 Subject: [PATCH 024/297] set up the assignment for session 2, needs a tasks.txt file still --- assignments/session02/http_server.py | 71 ++++++++++++ assignments/session02/simple_client.py | 37 +++++++ assignments/session02/tests.py | 147 +++++++++++++++++++++++++ 3 files changed, 255 insertions(+) create mode 100644 assignments/session02/http_server.py create mode 100644 assignments/session02/simple_client.py create mode 100644 assignments/session02/tests.py diff --git a/assignments/session02/http_server.py b/assignments/session02/http_server.py new file mode 100644 index 00000000..12cbfeba --- /dev/null +++ b/assignments/session02/http_server.py @@ -0,0 +1,71 @@ +import socket +import sys + + +def response_ok(): + """returns a basic HTTP response""" + resp = [] + resp.append("HTTP/1.1 200 OK") + resp.append("Content-Type: text/plain") + resp.append("") + resp.append("this is a pretty minimal response") + return "\r\n".join(resp) + + +def response_method_not_allowed(): + """returns a 405 Method Not Allowed response""" + resp = [] + resp.append("HTTP/1.1 405 Method Not Allowed") + resp.append("") + return "\r\n".join(resp) + + +def parse_request(request): + first_line = request.split("\r\n", 1)[0] + method, uri, protocol = first_line.split() + if method != "GET": + raise NotImplementedError("We only accept GET") + print >>sys.stderr, 'request is okay' + + +def server(): + address = ('127.0.0.1', 10000) + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + print >>sys.stderr, "making a server on %s:%s" % address + sock.bind(address) + sock.listen(1) + + try: + while True: + print >>sys.stderr, 'waiting for a connection' + conn, addr = sock.accept() # blocking + try: + print >>sys.stderr, 'connection - %s:%s' % addr + request = "" + while True: + data = conn.recv(1024) + request += data + if len(data) < 1024 or not data: + break + + try: + parse_request(request) + except NotImplementedError: + response = response_method_not_allowed() + else: + response = response_ok() + + print >>sys.stderr, 'sending response' + conn.sendall(response) + finally: + conn.close() + + except KeyboardInterrupt: + sock.close() + return + + +if __name__ == '__main__': + server() + sys.exit(0) diff --git a/assignments/session02/simple_client.py b/assignments/session02/simple_client.py new file mode 100644 index 00000000..c0f0d6e2 --- /dev/null +++ b/assignments/session02/simple_client.py @@ -0,0 +1,37 @@ +import socket +import sys + + +def client(msg): + server_address = ('localhost', 10000) + sock = socket.socket( + socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP + ) + print >>sys.stderr, 'connecting to {0} port {1}'.format(*server_address) + sock.connect(server_address) + response = '' + done = False + bufsize = 1024 + try: + print >>sys.stderr, 'sending "{0}"'.format(msg) + sock.sendall(msg) + while not done: + chunk = sock.recv(bufsize) + if len(chunk) < bufsize: + done = True + response += chunk + print >>sys.stderr, 'received "{0}"'.format(response) + finally: + print >>sys.stderr, 'closing socket' + sock.close() + return response + + +if __name__ == '__main__': + if len(sys.argv) != 2: + usg = '\nusage: python echo_client.py "this is my message"\n' + print >>sys.stderr, usg + sys.exit(1) + + msg = sys.argv[1] + client(msg) \ No newline at end of file diff --git a/assignments/session02/tests.py b/assignments/session02/tests.py new file mode 100644 index 00000000..46624d8f --- /dev/null +++ b/assignments/session02/tests.py @@ -0,0 +1,147 @@ +import mimetypes +import socket +import unittest + + +CRLF = '\r\n' +KNOWN_TYPES = set(mimetypes.types_map.values()) + + +class ResponseOkTestCase(unittest.TestCase): + """unit tests for the response_ok method in our server + + Becase this is a unit test case, it does not require the server to be + running. + """ + + def call_function_under_test(self): + """call the `response_ok` function from our http_server module""" + from http_server import response_ok + return response_ok() + + def test_response_code(self): + ok = self.call_function_under_test() + expected = "200 OK" + actual = ok.split(CRLF)[0].split(' ', 1)[1].strip() + self.assertEqual(expected, actual) + + def test_response_method(self): + ok = self.call_function_under_test() + expected = 'HTTP/1.1' + actual = ok.split(CRLF)[0].split(' ', 1)[0].strip() + self.assertEqual(expected, actual) + + def test_response_has_content_type_header(self): + ok = self.call_function_under_test() + headers = ok.split(CRLF+CRLF, 1)[0].split(CRLF)[1:] + expected_name = 'content-type' + has_header = False + for header in headers: + name, value = header.split(':') + actual_name = name.strip().lower() + if actual_name == expected_name: + has_header = True + break + self.assertTrue(has_header) + + def test_response_has_legitimate_content_type(self): + ok = self.call_function_under_test() + headers = ok.split(CRLF+CRLF, 1)[0].split(CRLF)[1:] + expected_name = 'content-type' + for header in headers: + name, value = header.split(':') + actual_name = name.strip().lower() + if actual_name == expected_name: + self.assertTrue(value.strip() in KNOWN_TYPES) + return + self.fail('no content type header found') + + +class ResponseMethodNotAllowedTestCase(unittest.TestCase): + """unit tests for the response_method_not_allowed function""" + + def call_function_under_test(self): + """call the `response_method_not_allowed` function""" + from http_server import response_method_not_allowed + return response_method_not_allowed() + + def test_response_code(self): + resp = self.call_function_under_test() + expected = "405 Method Not Allowed" + actual = resp.split(CRLF)[0].split(' ', 1)[1].strip() + self.assertEqual(expected, actual) + + def test_response_method(self): + resp = self.call_function_under_test() + expected = 'HTTP/1.1' + actual = resp.split(CRLF)[0].split(' ', 1)[0].strip() + self.assertEqual(expected, actual) + + +class ParseRequestTestCase(unittest.TestCase): + """unit tests for the parse_request method""" + + def call_function_under_test(self, request): + """call the `parse_request` function""" + from http_server import parse_request + return parse_request(request) + + def test_get_method(self): + request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" + try: + self.call_function_under_test(request) + except (NotImplementedError, Exception), e: + self.fail('GET method raises an error {0}'.format(str(e))) + + def test_bad_http_methods(self): + methods = ['POST', 'PUT', 'DELETE', 'HEAD'] + request_template = "{0} / HTTP/1.1\r\nHost: example.com\r\n\r\n" + for method in methods: + request = request_template.format(method) + self.assertRaises( + NotImplementedError, self.call_function_under_test, request + ) + +class HTTPServerFunctionalTestCase(unittest.TestCase): + """functional tests of the HTTP Server + + This test case interacts with the http server, and as such requires it to + be running in order for the tests to pass + """ + + def send_message(self, message): + """Attempt to send a message using the client and the test buffer + + In case of a socket error, fail and report the problem + """ + from simple_client import client + response = '' + try: + response = client(message) + except socket.error, e: + if e.errno == 61: + msg = "Error: {0}, is the server running?" + self.fail(msg.format(e.strerror)) + else: + self.fail("Unexpected Error: {0}".format(str(e))) + return response + + def test_get_request(self): + message = CRLF.join(['GET / HTTP/1.1', 'Host: example.com', '']) + expected = '200 OK' + actual = self.send_message(message) + self.assertTrue( + expected in actual, '"{0}" not in "{1}"'.format(expected, actual) + ) + + def test_post_request(self): + message = CRLF.join(['POST / HTTP/1.1', 'Host: example.com', '']) + expected = '405 Method Not Allowed' + actual = self.send_message(message) + self.assertTrue( + expected in actual, '"{0}" not in "{1}"'.format(expected, actual) + ) + + +if __name__ == '__main__': + unittest.main() From 780b1264098485891fc547581d82433a99f5cb9d Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:24:49 -0700 Subject: [PATCH 025/297] fixes for session 2 with inline tests and exercises --- source/presentations/session02.rst | 258 ++++++++++++++++++++++------- 1 file changed, 202 insertions(+), 56 deletions(-) diff --git a/source/presentations/session02.rst b/source/presentations/session02.rst index 69a315c8..db2c7ca8 100644 --- a/source/presentations/session02.rst +++ b/source/presentations/session02.rst @@ -597,28 +597,74 @@ We'll do so by building a simplified HTTP server, one step at a time. .. class:: incremental -We'll bootstrap ourselves by using the ``echo_server.py`` file we created -earlier. +There is a copy of the echo server from last time in ``resources/session02``. +It's called ``http_server.py``. .. class:: incremental -Make a copy of that file now. Call it ``http_server_1.py``. Open it in your -text editors. +In a terminal, move into that directory. We'll be doing our work here for the +rest of the session + + +TDD IRL (a quick aside) +----------------------- + +Test Driven Development (TDD) is all the rage these days. + +.. class:: incremental + +It means that before you write code, you first write tests demonstrating what +you want your code to do. + +.. class:: incremental + +When all your tests pass, you are finished. You did this for your last +assignment. + +.. class:: incremental + +We'll be doing it again today. + + +Run the Tests +------------- + +From inside ``resources/session02`` start a second python interpreter and run +``$ python http_server.py`` + +.. container:: incremental + + In your first interpreter run the tests. You should see similar output: + + .. class:: small + + :: + + $ python tests.py + [...] + Ran 10 tests in 0.003s + + FAILED (failures=3, errors=7) + + +.. class:: incremental + +Let's take a few minutes here to look at these tests and understand them. Viewing an HTTP Request ----------------------- -In a terminal, start your server running, like so:: +Our job is to make all those tests pass. + +.. class:: incremental - $ python http_server_1.py - making a server on 127.0.0.1:10000 - waiting for a connection +First, though, let's pretend this server really is a functional HTTP server. .. class:: incremental -This time, instead of using your echo client to make a connection, let's use -a web browser +This time, instead of using the echo client to make a connection to the +server, let's use a web browser! .. class:: incremental @@ -664,7 +710,7 @@ some printed content: Connection: keep-alive Cache-Control: max-age=0 -.. class:: incremental small +.. class:: incremental Your results will vary from mine. @@ -672,18 +718,50 @@ HTTP Debugging -------------- When working on applications, it's nice to be able to see all this going back -and forth. There are several apps that can help with this: +and forth. + +.. container:: incremental + + Good browsers support this with a set of developer tools built-in. -* windows: http://www.fiddler2.com/fiddler2/ -* firefox: http://getfirebug.com/ -* safari: built in -* chrome: built in -* IE (7.0+): built in + .. class:: small incremental + + * firefox -> ctrl-shift-K or cmd-opt-K (os X) + * safari -> enable in preferences:advanced then cmd-opt-i + * chrome -> ctrl-shift-i or cmd-opt-i (os X) + * IE (7.0+) -> F12 or tools menu -> developer tools .. class:: incremental -These tools can show you both request and response, headers and all. Very -useful. +The 'Net(work)' pane of these tools can show you both request and response, +headers and all. Very useful. + + +Stop! Demo Time +--------------- + +.. class:: big-centered + +Let's take a quick look + + +Other Debugging Options +----------------------- + +Sometimes you need or want to debug http requests that are not going through +your browser. + +.. class:: incremental + +Or perhaps you need functionality that is not supported by in-browser tools +(request munging, header mangling, decryption of https request/responses) + +.. container:: incremental + + Then it might be time for an HTTP debugging proxy: + + * windows: http://www.fiddler2.com/fiddler2/ + * win/osx/linux: http://www.charlesproxy.com/ HTTP Requests @@ -728,25 +806,29 @@ Let's update our server to return such a response. Basic HTTP Protocol ------------------- -Begin by implementing a new function in your ``http_server_1.py`` script called +Begin by implementing a new function in your ``http_server.py`` script called `response_ok`. .. class:: incremental It can be super-simple for now. We'll improve it later. -.. class:: incremental +.. container:: incremental -It needs to return our minimal response from above: + It needs to return our minimal response from above: -.. class:: small incremental + .. class:: small + + :: + + HTTP/1.1 200 OK + Content-Type: text/plain + + this is a pretty minimal response -:: +.. class:: incremental small - HTTP/1.1 200 OK - Content-Type: text/plain - - this is a pretty minimal response +**Remember, is a placeholder for an intentionally blank line** My Solution @@ -765,6 +847,27 @@ My Solution return "\r\n".join(resp) +Run The Tests +------------- + +We've now implemented a function that is tested by our tests. Let's run them +again: + +.. class:: incremental small + +:: + + $ python tests.py + [...] + ---------------------------------------------------------------------- + Ran 10 tests in 0.002s + + FAILED (failures=3, errors=3) + +.. class:: incremental + +Great! We've now got 4 tests that pass. Good work. + Server Modifications -------------------- @@ -773,13 +876,18 @@ purpose: .. class:: incremental -It should be able to return a response built by our function when a request -is finished +It should now wait for an incoming request to be *finished*, *then* send a +response back to the client. .. class:: incremental -We could also bump up the buffer size to something more reasonable for HTTP -traffic, say 1024 +The response it sends can be the result of calling our new ``response_ok`` +function for now. + +.. class:: incremental + +We could also bump up the ``recv`` buffer size to something more reasonable +for HTTP traffic, say 1024. My Solution ----------- @@ -807,17 +915,31 @@ My Solution # ... -Test Your Work --------------- +Run The Tests +------------- Once you've got that set, restart your server:: - $ python http_server_1.py + $ python http_server.py -.. class:: incremental +.. container:: incremental + + Then you can re-run your tests: + + .. class:: small + + :: -reload your browser pointing to ``http://localhost:10000`` and watch the magic! + $ python tests.py + [...] + ---------------------------------------------------------------------- + Ran 10 tests in 0.003s + FAILED (failures=2, errors=3) + +.. class:: incremental + +Five tests now pass! Parts of a Request ------------------ @@ -892,8 +1014,8 @@ they might change something on the server: This is a *normative* distinction, which is to say **be careful** -Methods: Idempoent <--> ??? ---------------------------- +Methods: Idempotent <--> ??? +---------------------------- HTTP methods can be categorized as **idempotent**, based on whether a given request will always have the same result: @@ -940,7 +1062,7 @@ My Solution def parse_request(request): first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() + protocol, method, uri = first_line.split() if method != "GET": raise NotImplementedError("We only accept GET") print >>sys.stderr, 'request is okay' @@ -984,8 +1106,29 @@ My Solution # ... -Test Your Work --------------- +Run The Tests +------------- + +Quit and restart your server now that you've updated the code:: + + $ python http_server.py + +.. container:: incremental + + At this point, we should have seven tests passing: + + .. class:: small + + :: + + $ python tests.py + Ran 10 tests in 0.002s + + FAILED (failures=1, errors=2) + + +What About a Browser? +--------------------- Quit and restart your server, now that you've updated the code. @@ -995,14 +1138,14 @@ Reload your browser. It should work fine. .. class:: incremental -We can use the ``echo_client.py`` script from yesterday to test our error +We can use the ``simple_client.py`` script in our resources to test our error condition. In a second terminal window run the script like so: .. class:: incremental :: - $ python echo_client.py "POST / HTTP/1.0\r\n\r\n" + $ python simple_client.py "POST / HTTP/1.0\r\n\r\n" .. class:: incremental @@ -1136,25 +1279,28 @@ My Solution # ... -Test Your Work --------------- +Run The Tests +------------- Start your server (or restart it if by some miracle it's still going). -.. class:: incremental +.. container:: incremental -Then test this out by using the ``echo_client.py`` script again: + Then run the tests again: + + .. class:: small + + :: + + $ python tests.py + [...] + Ran 10 tests in 0.002s + + OK .. class:: incremental -:: - - $ python echo_client.py "POST / HTTP/1.1\r\n\r\n" - connecting to localhost port 10000 - sending "POST / HTTP/1.1\r\n\r\n" - received "HTTP/1.1 405 Met" - received "hod Not Allowed - closing socket +Wahoo! All our tests are passing. That means we are done writing code for now. HTTP - Resources From c0b424b1a8f7e3fe42c5899ce9bfcaab6ebfb714 Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 17:31:00 -0700 Subject: [PATCH 026/297] move the webroot directory to 'assignments' since it will be used there. --- .../session02/webroot/a_web_page.html | 0 .../session02/webroot/images/JPEG_example.jpg | Bin .../session02/webroot/images/Sample_Scene_Balls.jpg | Bin .../session02/webroot/images/sample_1.png | Bin .../session02/webroot/make_time.py | 0 .../session02/webroot/sample.txt | 0 .../session02/webroot/web/a_web_page.html | 0 .../session02/webroot/web/images/JPEG_example.jpg | Bin .../webroot/web/images/Sample_Scene_Balls.jpg | Bin .../session02/webroot/web/images/sample_1.png | Bin .../session02/webroot/web/make_time.py | 0 .../session02/webroot/web/sample.txt | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename {resources => assignments}/session02/webroot/a_web_page.html (100%) rename {resources => assignments}/session02/webroot/images/JPEG_example.jpg (100%) rename {resources => assignments}/session02/webroot/images/Sample_Scene_Balls.jpg (100%) rename {resources => assignments}/session02/webroot/images/sample_1.png (100%) rename {resources => assignments}/session02/webroot/make_time.py (100%) rename {resources => assignments}/session02/webroot/sample.txt (100%) rename {resources => assignments}/session02/webroot/web/a_web_page.html (100%) rename {resources => assignments}/session02/webroot/web/images/JPEG_example.jpg (100%) rename {resources => assignments}/session02/webroot/web/images/Sample_Scene_Balls.jpg (100%) rename {resources => assignments}/session02/webroot/web/images/sample_1.png (100%) rename {resources => assignments}/session02/webroot/web/make_time.py (100%) rename {resources => assignments}/session02/webroot/web/sample.txt (100%) diff --git a/resources/session02/webroot/a_web_page.html b/assignments/session02/webroot/a_web_page.html similarity index 100% rename from resources/session02/webroot/a_web_page.html rename to assignments/session02/webroot/a_web_page.html diff --git a/resources/session02/webroot/images/JPEG_example.jpg b/assignments/session02/webroot/images/JPEG_example.jpg similarity index 100% rename from resources/session02/webroot/images/JPEG_example.jpg rename to assignments/session02/webroot/images/JPEG_example.jpg diff --git a/resources/session02/webroot/images/Sample_Scene_Balls.jpg b/assignments/session02/webroot/images/Sample_Scene_Balls.jpg similarity index 100% rename from resources/session02/webroot/images/Sample_Scene_Balls.jpg rename to assignments/session02/webroot/images/Sample_Scene_Balls.jpg diff --git a/resources/session02/webroot/images/sample_1.png b/assignments/session02/webroot/images/sample_1.png similarity index 100% rename from resources/session02/webroot/images/sample_1.png rename to assignments/session02/webroot/images/sample_1.png diff --git a/resources/session02/webroot/make_time.py b/assignments/session02/webroot/make_time.py similarity index 100% rename from resources/session02/webroot/make_time.py rename to assignments/session02/webroot/make_time.py diff --git a/resources/session02/webroot/sample.txt b/assignments/session02/webroot/sample.txt similarity index 100% rename from resources/session02/webroot/sample.txt rename to assignments/session02/webroot/sample.txt diff --git a/resources/session02/webroot/web/a_web_page.html b/assignments/session02/webroot/web/a_web_page.html similarity index 100% rename from resources/session02/webroot/web/a_web_page.html rename to assignments/session02/webroot/web/a_web_page.html diff --git a/resources/session02/webroot/web/images/JPEG_example.jpg b/assignments/session02/webroot/web/images/JPEG_example.jpg similarity index 100% rename from resources/session02/webroot/web/images/JPEG_example.jpg rename to assignments/session02/webroot/web/images/JPEG_example.jpg diff --git a/resources/session02/webroot/web/images/Sample_Scene_Balls.jpg b/assignments/session02/webroot/web/images/Sample_Scene_Balls.jpg similarity index 100% rename from resources/session02/webroot/web/images/Sample_Scene_Balls.jpg rename to assignments/session02/webroot/web/images/Sample_Scene_Balls.jpg diff --git a/resources/session02/webroot/web/images/sample_1.png b/assignments/session02/webroot/web/images/sample_1.png similarity index 100% rename from resources/session02/webroot/web/images/sample_1.png rename to assignments/session02/webroot/web/images/sample_1.png diff --git a/resources/session02/webroot/web/make_time.py b/assignments/session02/webroot/web/make_time.py similarity index 100% rename from resources/session02/webroot/web/make_time.py rename to assignments/session02/webroot/web/make_time.py diff --git a/resources/session02/webroot/web/sample.txt b/assignments/session02/webroot/web/sample.txt similarity index 100% rename from resources/session02/webroot/web/sample.txt rename to assignments/session02/webroot/web/sample.txt From b81a5272d945fab73a735ffe4012c4b71f1b6ddf Mon Sep 17 00:00:00 2001 From: cewing Date: Sat, 28 Dec 2013 18:05:02 -0700 Subject: [PATCH 027/297] finalize presentation for session02. --- source/presentations/session02.rst | 377 ++++++----------------------- 1 file changed, 69 insertions(+), 308 deletions(-) diff --git a/source/presentations/session02.rst b/source/presentations/session02.rst index db2c7ca8..6ef1695b 100644 --- a/source/presentations/session02.rst +++ b/source/presentations/session02.rst @@ -1362,242 +1362,50 @@ HTTP Requests: URI * API endpoints -Responding to URIs ------------------- - -We should expand our server's capabilities so that it can make different -responses to different URIs. - -.. class:: incremental - -To simplify things for ourselves, let's allow our server to serve up -directories and files from our own filesystem. - -.. class:: incremental - -This will be much like other common HTTP servers, like Apache or nginx. - -.. class:: incremental - -Save your ``http_server_1.py`` module as ``http_server_2.py``. If you've -fallen behind, you can find a copy of ``http_server_2.py`` in the class -resources folder. - - -Getting a URI -------------- - -First, let's update our ``parse_request`` method so that it returns the URI it -parses from the first line of our request: - -.. code-block:: python - :class: small incremental - - def parse_request(request): - first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() - if method != "GET": - raise NotImplementedError("We only accept GET") - print >>sys.stderr, 'serving request for %s' % uri - return uri - -.. class:: incremental - -Next, we need to write a function that handles this uri for us: -``resolve_uri``. - -What Should It Do? ------------------- - -Let's think for a bit about the specs for our function: - -.. class:: incremental - -* It should take a URI as the sole argument - -* It should use the pathname represented by the URI as a search path for a - filesystem location - -* It should have a 'home directory', someplace that serves as the root of the - search path. - -* If the URI represents a directory, the method should return a directory - listing - -* If the URI represents a file of some sort, the method should return the - contents of that file. - -* If the URI does not map to a real location, it should raise an exception. - - -My Solution ------------ - -.. code-block:: python - :class: small incremental - - # at the top of the file: - import os - - # add this function - def resolve_uri(uri): - """return the filesystem resources identified by 'uri'""" - home = 'webroot' # this is relative to the location of - # the server script, could be a full path - filename = os.path.join(home, uri.lstrip('/')) - if os.path.isfile(filename): - contents = open(filename, 'rb').read() - return contents: - elif os.path.isdir(filename): - listing = "\n".join(os.listdir(filename)) - return listing - else: - raise ValueError("Not Found") - - -Returning Content ------------------ - -Now we have to do something with the return value of that function. +Homework +-------- -.. class:: incremental - -The value should be returned to the client as a response. +For your homework this week you will expand your server's capabilities so that +it can make different responses to different URIs. .. class:: incremental -Let's update our ``response_ok`` function to incorporate this stuff. +You'll allow your server to serve up directories and files from your own +filesystem. .. class:: incremental -Remember, this new material is the *body* of our response. - +You'll be starting from the ``http_server.py`` script that is currently in the +``assignments/session02`` directory. It should be pretty much the same as what +you've created here. -My Solution ------------ - -.. code-block:: python - :class: incremental - def response_ok(body): - """returns a basic HTTP response""" - resp = [] - resp.append("HTTP/1.1 200 OK") - resp.append("Content-Type: text/plain") - resp.append("") - resp.append(body) - return "\r\n".join(resp) - - -Handling The Error +One Step At A Time ------------------ -Our ``resolve_uri`` function also adds a new possible error condition, one -that maps nicely to a common HTTP response code. - -.. class:: incremental - -We'll need a function that generates that response for us - -.. code-block:: python - :class: small incremental - - def response_not_found(): - """return a 404 Not Found response""" - resp = [] - resp.append("HTTP/1.1 404 Not Found") - resp.append("") - return "\r\n".join(resp) - - -Server Updates --------------- - -Finally, we need to update the code in our server loop to handle this new -stuff. +Take the following steps one at a time. Run the tests in +``assignments/session02`` between to ensure that you are getting it right. .. class:: incremental -* It should bind the return value of ``parse_request`` to a symbol -* It should pass that value in to our new ``resolve_uri`` function -* It should bind the return value of that function to another symbol -* It should use that value to build an ``OK`` response -* It should return that response to the client via the open connection socket. -* If the ValueError from ``resolve_uri`` is raised, it should handle it by - returning the proper response. +* Update ``parse_request`` to return the URI it parses from the request. +* Update ``response_ok`` so that it can use the resource and mimetype + of the URI. -My Solution ------------ +* Write a new function ``resolve_uri`` that handles looking up resources on + disk. -.. code-block:: python - :class: small incremental - - # ... - while True: - data = conn.recv(1024) - request += data - if len(data) < 1024 or not data: - break - - try: - uri = parse_request(request) - content = resolve_uri(uri) - except NotImplementedError: - response = response_method_not_allowed() - except ValueError: - response = response_not_found() - else: - response = response_ok(content) - print >>sys.stderr, 'sending response' - conn.sendall(response) - # ... - - -Test Your Work --------------- - -To test our new functionality, we need a bit of extra stuff, like a directory -with interesting material in it. - -.. class:: incremental - -In the class resources folder, I've provided a suitable directory. It's called -``webroot``. - -.. class:: incremental - -Copy that directory and all its contents into the location where you've been -creating your server files. - -.. class:: incremental - -Restart your server: ``$ python http_server_2.py`` - - -What's Missing? ---------------- - -Point your browser at ``http://localhost:10000/``. - -.. class:: incremental - -Try ``http://localhost:10000/a_web_page.html``. - -.. class:: incremental - -How about ``http://localhost:10000/images/JPEG_example.jpg``? - -.. class:: incremental - -What's going wrong here? +* Write a new function ``response_not_found`` that returns a 404 response if the + resource does not exist. HTTP Headers ------------ -The problem is that we're identifying **all** the content we return as plain -text. +Along the way, you'll discover that simply returning as the body in +response_ok is insufficient. Different *types* of content need to be +identified to your browser .. class:: incremental @@ -1658,113 +1466,83 @@ The standard lib module ``mimetypes`` does just this. .. container:: incremental - We can guess the mime-type of a file based on the filename or map a file - extension to a type: - - .. code-block:: python - :class: small - - >>> import mimetypes - >>> mimetypes.guess_type('file.txt') - ('text/plain', None) - >>> mimetypes.types_map['.txt'] - 'text/plain' + We can guess the mime-type of a file based on the filename or map a file + extension to a type: -Build a Content-type Header ---------------------------- + .. code-block:: python + :class: small -We'll need to do a couple of things: + >>> import mimetypes + >>> mimetypes.guess_type('file.txt') + ('text/plain', None) + >>> mimetypes.types_map['.txt'] + 'text/plain' + + +Resolving a URI +--------------- + +Your ``resolve_uri`` function will need to accomplish the following tasks: .. class:: incremental -* Extend the ``resolve_uri`` function to return content *and* mime-type -* Extend the ``response_ok`` function to accept both content and mime-type as - arguments -* Extend the ``response_ok`` function to write a ``Content-Type: XYZ`` header -* Adjust the server loop appropriately +* It should take a URI as the sole argument +* It should map the pathname represented by the URI to a filesystem location. -My Solution ------------ +* It should have a 'home directory', and look only in that location. -for ``resolve_uri``: +* If the URI is a directory, it should return a listing and the mimetype + ``text/plain``. -.. code-block:: python - :class: small incremental - - # at the top of the file: - import mimetypes - - # in the existing function: - # ... - if os.path.isfile(filename): - ext = os.path.splitext(filename)[1] - mimetype = mimetypes.types_map.get(ext, 'text/plain') - contents = open(filename, 'rb').read() - return contents, mimetype - elif os.path.isdir(filename): - listing = "\n".join(os.listdir(filename)) - return listing, 'text/plain' - else: - raise ValueError("Not Found") +* If the URI is a file, it should return the contents of that file and its + correct mimetype. +* If the URI does not map to a real location, it should raise an exception + that the server can catch to return a 404 response. -My Solution ------------ -for ``response_ok``: +Use Your Tests +-------------- -.. code-block:: python - :class: small incremental +One of the benefits of test-driven development is that the tests that are +failing should tell you what code you need to write. - def response_ok(body, mimetype): - """returns a basic HTTP response""" - resp = [] - resp.append("HTTP/1.1 200 OK") - resp.append("Content-Type: %s" % mimetype) - resp.append("") - resp.append(body) - return "\r\n".join(resp) +.. class:: incremental +As you work your way through the steps outlined above, look at your tests. +Write code that makes them pass. -My Solution ------------ +.. class:: incremental -for the server loop: +If all the tests in ``assignments/session02/tests.py`` are passing, you've +completed the assignment. -.. code-block:: python - :class: small incremental - # ... - try: - uri = parse_request(request) - content, mimetype = resolve_uri(uri) - except NotImplementedError: - response = response_method_not_allowed() - except ValueError: - response = response_not_found() - else: - response = response_ok(content, mimetype) - - print >>sys.stderr, 'sending response' - conn.sendall(response) - # ... +Submitting Your Homework +------------------------ +To submit your homework: -Test Your Work --------------- +* Do your work in the ``assignments/session02`` directory of **your fork** of + the class respository -Now, restart your server script and point your browser at various URLs, starting -from the root (``http://localhost:10000/``). +* When you have all tests passing, push your work to **your fork** in github. + +* Using the github web interface, send me a pull request. .. class:: incremental -Much better results, no? +I will review your work when I receive your pull requests, make comments on it +there, and then close the pull request. A Few Steps Further ------------------- +If you are able to finish the above in less than 4-6 hours, consider taking on +one or more of the following challenges: + .. class:: incremental * Format directory listings as actual HTML, so you can make file names into @@ -1777,20 +1555,3 @@ A Few Steps Further returns a ``500 Internal Server Error`` response. * Instead of returning the python script in ``webroot`` as plain text, execute the file and return the results as HTML. - - -Wrap-Up -------- - -For comparison, you might wish to take a look at the code in the Python -Standard Library's ``SocketServer``, ``BaseHTTPServer`` and -``SimpleHTTPServer`` modules:: - - >>> import SocketServer, BaseHTTPServer, SimpleHTTPServer - >>> SocketServer.__file__ - '/full/path/to/your/copy/of/SocketServer.py' - ... - -.. class:: incremental center - -**See You Tomorrow!** \ No newline at end of file From 63783ed6c89264a6aed8586df321c065e8ad117c Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 2 Jan 2014 16:09:16 -0700 Subject: [PATCH 028/297] make tests that will cover the homework requirements. --- assignments/session02/tests.py | 227 ++++++++++++++++++++++++++++++++- 1 file changed, 225 insertions(+), 2 deletions(-) diff --git a/assignments/session02/tests.py b/assignments/session02/tests.py index 46624d8f..a74fe150 100644 --- a/assignments/session02/tests.py +++ b/assignments/session02/tests.py @@ -1,4 +1,5 @@ import mimetypes +import os import socket import unittest @@ -14,10 +15,10 @@ class ResponseOkTestCase(unittest.TestCase): running. """ - def call_function_under_test(self): + def call_function_under_test(self, body="", mimetype="text/plain"): """call the `response_ok` function from our http_server module""" from http_server import response_ok - return response_ok() + return response_ok(body=body, mimetype=mimetype) def test_response_code(self): ok = self.call_function_under_test() @@ -56,6 +57,38 @@ def test_response_has_legitimate_content_type(self): return self.fail('no content type header found') + def test_passed_mimetype_in_response(self): + mimetypes = [ + 'image/jpeg', 'text/html', 'text/x-python', + ] + header_name = 'content-type' + for expected in mimetypes: + ok = self.call_function_under_test(mimetype=expected) + headers = ok.split(CRLF+CRLF, 1)[0].split(CRLF)[1:] + for header in headers: + name, value = header.split(':') + if header_name == name.strip().lower(): + actual = value.strip() + self.assertEqual( + expected, + actual, + "expected {0}, got {1}".format(expected, actual) + ) + + def test_passed_body_in_response(self): + bodies = [ + "a body", + "a longer body\nwith two lines", + open("webroot/sample.txt", 'r').read(), + ] + for expected in bodies: + ok = self.call_function_under_test(body=expected) + actual = ok.split(CRLF+CRLF, 1)[1] + self.assertEqual( + expected, + actual, + "expected {0}, got {1}".format(expected, actual)) + class ResponseMethodNotAllowedTestCase(unittest.TestCase): """unit tests for the response_method_not_allowed function""" @@ -78,6 +111,27 @@ def test_response_method(self): self.assertEqual(expected, actual) +class ResponseNotFoundTestCase(unittest.TestCase): + """unit tests for the response_not_found function""" + + def call_function_under_test(self): + """call the 'response_not_found' function""" + from http_server import response_not_found + return response_not_found() + + def test_response_code(self): + resp = self.call_function_under_test() + expected = "404 Not Found" + actual = resp.split(CRLF)[0].split(' ', 1)[1].strip() + self.assertEqual(expected, actual) + + def test_response_method(self): + resp = self.call_function_under_test() + expected = 'HTTP/1.1' + actual = resp.split(CRLF)[0].split(' ', 1)[0].strip() + self.assertEqual(expected, actual) + + class ParseRequestTestCase(unittest.TestCase): """unit tests for the parse_request method""" @@ -87,6 +141,7 @@ def call_function_under_test(self, request): return parse_request(request) def test_get_method(self): + """verify that GET HTTP requests do not raise an error""" request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" try: self.call_function_under_test(request) @@ -94,6 +149,7 @@ def test_get_method(self): self.fail('GET method raises an error {0}'.format(str(e))) def test_bad_http_methods(self): + """verify that non-GET HTTP methods raise a NotImplementedError""" methods = ['POST', 'PUT', 'DELETE', 'HEAD'] request_template = "{0} / HTTP/1.1\r\nHost: example.com\r\n\r\n" for method in methods: @@ -102,6 +158,103 @@ def test_bad_http_methods(self): NotImplementedError, self.call_function_under_test, request ) + def test_uri_returned(self): + """verify that the parse_request function returns a URI""" + URIs = [ + '/', '/a_web_page.html', '/sample.txt', '/images/sample_1.png', + ] + request_tmplt = "GET {0} HTTP/1.1" + for expected in URIs: + request = request_tmplt.format(expected) + actual = self.call_function_under_test(request) + self.assertEqual( + expected, + actual, + "expected {0}, got {1}".format(expected, actual) + ) + + +class ResolveURITestCase(unittest.TestCase): + """unit tests for the resolve_uri function""" + + def call_function_under_test(self, uri): + """call the resolve_uri function""" + from http_server import resolve_uri + return resolve_uri(uri) + + def test_directory_resource(self): + uri = '/' + expected_names = [ + 'a_web_page.html', 'images', 'make_time.py', 'sample.txt', + ] + expected_mimetype = "text/plain" + actual_body, actual_mimetype = self.call_function_under_test(uri) + self.assertEqual( + expected_mimetype, + actual_mimetype, + 'expected {0} got {1}'.format(expected_mimetype, actual_mimetype) + ) + for expected in expected_names: + self.assertTrue( + expected in actual_body, + '"{0}" not in "{1}"'.format(expected, actual_body) + ) + + def test_file_resource(self): + uris_types = { + '/a_web_page.html': 'text/html', + '/make_time.py': 'text/x-python', + '/sample.txt': 'text/plain', + } + for uri, expected_mimetype in uris_types.items(): + path = "webroot{0}".format(uri) + expected_body = open(path, 'rb').read() + actual_body, actual_mimetype = self.call_function_under_test(uri) + self.assertEqual( + expected_mimetype, + actual_mimetype, + 'expected {0} got {1}'.format( + expected_mimetype, actual_mimetype + ) + ) + self.assertEqual( + expected_body, + actual_body, + 'expected {0} got {1}'.format( + expected_mimetype, actual_mimetype + ) + ) + + def test_image_resource(self): + names_types = { + 'JPEG_example.jpg': 'image/jpeg', + 'sample_1.png': 'image/png', + } + for filename, expected_mimetype in names_types.items(): + uri = "/images/{0}".format(filename) + path = "webroot{0}".format(uri) + expected_body = open(path, 'rb').read() + actual_body, actual_mimetype = self.call_function_under_test(uri) + self.assertEqual( + expected_mimetype, + actual_mimetype, + 'expected {0} got {1}'.format( + expected_mimetype, actual_mimetype + ) + ) + self.assertEqual( + expected_body, + actual_body, + 'expected {0} got {1}'.format( + expected_mimetype, actual_mimetype + ) + ) + + def test_missing_resource(self): + uri = "/missing.html" + self.assertRaises(ValueError, self.call_function_under_test, uri) + + class HTTPServerFunctionalTestCase(unittest.TestCase): """functional tests of the HTTP Server @@ -142,6 +295,76 @@ def test_post_request(self): expected in actual, '"{0}" not in "{1}"'.format(expected, actual) ) + def test_webroot_directory_resources(self): + """verify that directory uris are properly served""" + message_tmpl = CRLF.join(['GET {0} HTTP/1.1', 'Host: example.com', '']) + root = "webroot" + for directory, directories, files in os.walk(root): + directory_uri = "/{0}".format(directory[len(root):]) + message = message_tmpl.format(directory_uri) + actual = self.send_message(message) + # verify that directory listings are correct + self.assertTrue( + "200 OK" in actual, + "request for {0} did not result in OK".format(directory_uri)) + for expected in directories + files: + self.assertTrue( + expected in actual, + '"{0}" not in "{1}"'.format(expected, actual) + ) + + def test_webroot_file_uris(self): + """verify that file uris are properly served""" + message_tmpl = CRLF.join(['GET {0} HTTP/1.1', 'Host: example.com', '']) + root = "webroot" + for directory, directories, files in os.walk(root): + directory_uri = "/{0}".format(directory[len(root):]) + # verify that all files are delivered correctly + for filename in files: + # file as local resource and as web URI + file_path = os.path.sep.join([directory, filename]) + if directory_uri != '/': + file_uri = '/'.join([directory_uri, filename]) + else: + file_uri = '/{0}'.format(filename) + # set up expectations for this file + expected_body = open(file_path, 'rb').read() + expected_mimetype = mimetypes.types_map[ + os.path.splitext(filename)[1] + ] + # make a request for this file as a uri + message = message_tmpl.format(file_uri) + actual = self.send_message(message) + # verify that request is OK + self.assertTrue( + "200 OK" in actual, + "request for {0} did not result in OK".format( + directory_uri + ) + ) + self.assertTrue( + expected_mimetype in actual, + "mimetype {0} not in response for {1}".format( + expected_mimetype, file_uri + ) + ) + self.assertTrue( + expected_body in actual, + "body of {0} not in response for {1}".format( + file_path, file_uri + ) + ) + + def test_missing_resource(self): + message = CRLF.join( + ['GET /missing.html HTTP/1.1', 'Host: example.com', ''] + ) + expected = '404 Not Found' + actual = self.send_message(message) + self.assertTrue( + expected in actual, '"{0}" not in "{1}"'.format(expected, actual) + ) + if __name__ == '__main__': unittest.main() From b42ea5c881987a4e7e9972d61bba1b6741ae8afa Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 2 Jan 2014 16:10:10 -0700 Subject: [PATCH 029/297] update some wording to clarify intent and intended results. --- source/presentations/session02.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/presentations/session02.rst b/source/presentations/session02.rst index 6ef1695b..c7cf33c9 100644 --- a/source/presentations/session02.rst +++ b/source/presentations/session02.rst @@ -1390,11 +1390,11 @@ Take the following steps one at a time. Run the tests in * Update ``parse_request`` to return the URI it parses from the request. -* Update ``response_ok`` so that it can use the resource and mimetype - of the URI. +* Update ``response_ok`` so that it uses the resource and mimetype identified + by the URI. * Write a new function ``resolve_uri`` that handles looking up resources on - disk. + disk using the URI. * Write a new function ``response_not_found`` that returns a 404 response if the resource does not exist. @@ -1492,8 +1492,8 @@ Your ``resolve_uri`` function will need to accomplish the following tasks: * It should have a 'home directory', and look only in that location. -* If the URI is a directory, it should return a listing and the mimetype - ``text/plain``. +* If the URI is a directory, it should return a plain-text listing and the + mimetype ``text/plain``. * If the URI is a file, it should return the contents of that file and its correct mimetype. @@ -1545,8 +1545,7 @@ one or more of the following challenges: .. class:: incremental -* Format directory listings as actual HTML, so you can make file names into - links. +* Format directory listings as HTML, so you can link to files. * Add a GMT ``Date:`` header in the proper format (RFC-1123) to responses. *hint: see email.utils.formatdate in the python standard library* * Add a ``Content-Length:`` header for ``OK`` responses that provides a From d9cba03ed7fc11e23610a89f864b6c0365962474 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 2 Jan 2014 16:16:43 -0700 Subject: [PATCH 030/297] remove redundant web directory --- .../session02/webroot/web/a_web_page.html | 11 -------- .../webroot/web/images/JPEG_example.jpg | Bin 15138 -> 0 bytes .../webroot/web/images/Sample_Scene_Balls.jpg | Bin 146534 -> 0 bytes .../session02/webroot/web/images/sample_1.png | Bin 8760 -> 0 bytes .../session02/webroot/web/make_time.py | 25 ------------------ assignments/session02/webroot/web/sample.txt | 3 --- 6 files changed, 39 deletions(-) delete mode 100644 assignments/session02/webroot/web/a_web_page.html delete mode 100644 assignments/session02/webroot/web/images/JPEG_example.jpg delete mode 100644 assignments/session02/webroot/web/images/Sample_Scene_Balls.jpg delete mode 100644 assignments/session02/webroot/web/images/sample_1.png delete mode 100644 assignments/session02/webroot/web/make_time.py delete mode 100644 assignments/session02/webroot/web/sample.txt diff --git a/assignments/session02/webroot/web/a_web_page.html b/assignments/session02/webroot/web/a_web_page.html deleted file mode 100644 index 82e96100..00000000 --- a/assignments/session02/webroot/web/a_web_page.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - -

My First Heading

- -

My first paragraph.

- - - - diff --git a/assignments/session02/webroot/web/images/JPEG_example.jpg b/assignments/session02/webroot/web/images/JPEG_example.jpg deleted file mode 100644 index 13506f01e9a514c53dc52cc7cbf499f52a29b6f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15138 zcmb7LWmBBNvR+(52<|Sy-4>U?;_edMgA?36I4n-k;O_3WNRZ&NSnv(5!MQo7?)?FG zrs|y!^Hxt!&2(2kPxrj7yln%p6hQJI02~|~K<-}$yg>n<09fxZFfq`vFyCY1U}NDD zF_I7w5D;-8x8>*?rj)A3IHJdQ}&;_|JM)@ zk>KHw0Vw|_Wv~G7a0m$ShzLl?h=_>D2mm;E1OOs74mB5&Brc7*8MkW)UUFf>1u{OZ z)WEEU=I=`$EpQ3}9j_%J-zRNzx6mJh|HKf({dbN3Ti`$AKRJj<|EB1$0r2n$aR2@M zuL^MR|B;U%sg6s7Xy(eD{I&+b_|G5M2-pB|Kp3fF8A-@K5Q+& zzCB^u`aQc1B&obJ(*1@{o?&ihZM*L5!Po!DG%i}|P$zglLGX6;r?Boso2$wC_YFxp z>Tb}ODHrsHOZyFAU*PxMJDp(i+mMioz%Fqe{oSeuw=kLoibA^ZnQf})ATz;tQ4|%J zvpZg+!97OfM>Mna#dGKuQDxFiU;Qd{_`D)b&T0Ex{S9DK_d|e*471_bzriBx>gKji zGJu7_53GvVD2x*!IfUbvED=fQ;i#Vf9+UWHn|-tS z`d0B44MU)9SaS+tUET-F?|Q{xsgQXUFTKmZ zA-S;prki#});>Er>?#c8ItTO0+q@`Ohbf;gINdI#fY09%`g#{>0;`y3p84U(@w<%%5+vu%y+FJf3vF0H*N^#?LM*+4yS8Uo!XgQSl$2b*`#?e=<5=+d_ z>r6&*V!d~4+%e>Yf)=Z>zXy;z=>Wap34uA z_&gff)lfv0Z5S##GY{boKSrj$FBkaP{$qx;K%WkYmI1?6-8V?D6-G$o4wr6ZN_p{I zx!AM!;$?_YugE% zifRi=ey8sY{&g@2!+&ufJ9{zDIY4Cxfv#yE%$Ha}iW!>v;erm3XS1=)f9yrOkJ3ZLLhtm9n~?R{1_tX-uW$Iumu&3xF>?_n zCp@2y55Rkf5g)(Z7kylIft+ISswTv z)*@WW@u2+@VCQ8zgKY~X?>|iWe7XGwpzi&x=-}I?G}cUHhZv!UvFms=S8;)7p_0!z z>TFVm$3%QXa0PKAjGsBSr)`|bTJjbBRw?RC{}lxA9jJem<1 zToZ+#|9Hg<;=l(@#jX+CUA>Elfop-f;|1NVZmen9mBMr#B#bdmxm~f$we$=6&ITJR zBNjUn70-b&gf_gQQa;s^&BDb~r*w(*PQ^IyaKP57u?nf?T~s(g596>^n7lI8HM(YR zuHfI59)g1sof*16u0`2dF6&|y0I6@DcKr|c6Cst*#$4c$!sa41EAhNO9V4+wQ263m z7XGeaDC2%=QkiB-1hmg=?3p>D?d1MTVv7g7CAZvaylWr8^=ey3Xk&3f0~Tq!#0h2Q ze*>s1c<7AoJIt3$rMI^;>OXq3kA0%n7Bd!nYPc=7(e>dY zU^Vol^D1SX4X>=kl!uZnsVAO-h3HAOX-2hQN`lrY7{V{*xg#**69PUsy_dtj$!nP3 z=GjstKe|d!ah(Zr_Fvv=CLjkHdf*s(yU+rv<&1L3r(bWmNl_hZ{Yk5ewa)2G+esZq zzHXe}9706y-!D|}>femJk}@YDCg)U^Wx3+hg_K5KSbqAo7CaS$T z#{ujrd3Vz*6g0aFOk{}=aI+1^k^x;KF#(MQX0U|_?(MT!+Hky^N>a5qz_Gr@nMS}uJ$Hb_SSmXDn3**zRhXT)@TIJj9NJ(%9HIr z_jo_|07WaCkSuIUBXKo0w@cOQKU9uC1+-)TOE$Ph7{=C*q5J8ok$;FC>LY`Q{PCVHe z82XJKNnng>m$yFg*LB9~&Y2M2pzcs2o>dlEaG>d5JU>I}NUu;nZk0+t?%YJ*uBB?_ zZ6n1W-me5G=A!QPPK&>PiLTc@Jn}j>%)jGNqTuEJ7EL-Th(h_#OT1L^rdWg1 zBRi*tlQ%NEb!>@PtdI};_zWH=Hs1h0vPk7Gb|#f_gUM{R@DB)2btD~yIy?pz$r@Vq zEZRli07C13HRMe%20ZFC;Uf1N`nRr1ND|7)jH*l>F|IR_CWH)k$BRvw^X^}Kf1L~2 zsZ=m!mUDr%&8JcCBVSrYUzngOb=)HAs)&wpAA|ry^MST6@2 zeZ;^c!@EFLjIId_<|y@~VEur|02gs|6rJ>U<0aV5>ZX6@@CcljYdBxn-}xkc=B;@@ zh=#y4L@m}#5Nu%eJDesZcpKjEVB;8cq;@rKz7p;Kf1IB`H>|aqdhIe!ROb1%vvmXdL%B~Kk z3vOh&=pDBG4CtH7e#94U+BEcFv4Q>M2BM`9jh*q=0cUG=zeik`D#8^?=I@Xek(NMhJw8M&$FZ4=P~GWOK}8 z>F3im8tZlT0OCRl`gAE)D9bqr(pb^Bp)SI@(o&rA>lF6E@?d2{{5$wY0}1%t1d%Gp z7jT15^I&+o2;9s>R$}Qm^`dY%(Yl*00K~n`4sx9-z2T1gVD3Y-y+~OvLjt>ehdnlm zFSaA-xWWmEdzN4Mg^b2BK0w|Ov)1vc;vKSx&0NMMN(FSj1xqB*5eoH{Aa7tuQ@Nks z4Kk2=DjV_3!c5J4pOX*}kC&2D_uByd9^!qXOkF0;h&1e;sWukp=_t6m%lWci zvCyjAcuxXzk6B#5PJt%`uvNY@WgA5Sm6vs?9%I`0Qd@PRc_&MVY=%*eA2fdKZ0=iw z4LxwFG0LkVfVbpFtRP!@mKr z2$+SFyvNrn_&z*-RCixc_!|(oRk0@GV#pW>XDU)~-QrW%@Wimm)P z?f%y{D2LgkMl4(Q{?b(^H|cpl>t-+U5JjBJQ0?^Dj_6SBl}OwK_Bj{`lIJQSPZY~% z#+Z!xZJyi+K$t&&)OiEU9&(KbLmG?G`U6aULOv`DmRK!K;7@}EP2JF5NE{va+QDld z$K(m&GPfn7Ih$0?!@qUgsZfuR&993zmNcdscAX>@5EF@CU&}gC&Y15-$WWEC6w)tJ9 z=J6BKM$r1JvNO&eCFHjJGiZlCC!Z7%qJ0U;TYZ8#C4Nm(Kr@B<`l>sVO0wY_n6|Od zPe#*nF6jy-xTeiG{Bx>fPDIoT18vh}mbg-#wxvzDhM!0#p!*V@ zRsM+OZ}uSNpZra<{1_2RKskiy#FOBDyB5<(_s674?*+^Rr@{gIO)Cnw*8i9 zJO@Xlywp_KVgKz-F_I!)NX4-tVf9BqGc2)ZD!EQ+?PC(q&FN=O)1MMoi%I`_TL`%oBARVfC zCU$mHcP3BWLF1meOz-05`ojFfLnVIRR3||kQ-_$jBID`kSEwOWWa-;ELHs8%*U++k z3EMc!_)M>XDuQcSKPQH7$MFy^GC!@SE}OR0GzQ7-M}HW;c~$)1X~DGweScmx&ibpB~*C zZb`G5*N?T0I5O5cc{{GjEJBg(KSgB*=6l&%(J+_~1<(Qqcn_6fy0JfYt~f9SQBrgn zU~4_}@vALv03=d#%=_Xx-z2}e#wyg{e#y3D-^i~%UE5)6hRL*V0Bj?Kg2MIej4$r! z8j|3sk9DwHVl1pseL!JRU0IP8Xkrc%Q!6DR(OmEpl1zAbIOB2$L`wpDMVJ4^AiN7*_C|XK`S%YxI8LUx=N6@`m5|o%N)K)OJ&scCqIU?ba z>EgCA0Akudf5}CE1F$E#9>-QhEHRd22)YRkQ9~TG>iT!i@ZBfi_uotkL2eKESz_a zW!6&=`FLpPl+R&b;rQi?Q`}MmDC9z30nLdBDT^`OI^hDr;)A^1ZfPJ*j-`Paw zi?E6TP=9yKRBBPI0ppz`Te+PuT=M;ba(Q8 z%802_T~&~=>TQ9i&VoYTO9G0$Xvw2N5d67r@YJ5C_=gru;N)EAD9tv7-Y&1-bk6(O zFlq;%OczcjIFOzNn4Do!V8|xE1D{=W^_ZA}N4QJy1QX?W-`KUbGc9aq?e{ZvJBq7h z=kaG9*jLd337=o^hkuxU=^xiRvvw-i>n792`D52Hz>Ix^*0T0}wAqR-zFT3AGBe{0 zpRDE6_sEZzQnmV+D8&8cRjV#?_wu^a=6451w^5NVMa`Y*QNn)$k1|h9`_1==t=6dj z>}=fg5kTQJX)sKw8U#F#kB|_LynkiusmM%_)0}bx*2A#``|TtoaSgoz*gZ$*N~(wp zf?*Iik@NfIxBX zF28-sxkcwC1;*jTPVi?Vtr5XHw#nCGUs;~7CM!YTMsF3WoHsdw>!L%<`cda=;k*}Pp-7z`YzAFcMBkF79DiE! z^``HY_E_u zDqq0-*66#U3mTtQ*m#NyCvaQ+Z1$zVuX3k!8l5W%l92cAyNnY%Uwqio=N>olqw!d+ zEh4mxtb2R&7NuleF88k^9CQ;qdpLx8Ik%AzDI-JNPTl^{dzurX2Oxi`t=>-=zT;0> zT?IX~Yegie@w=YKu=XerolYjFP&u|xjZxfk&q_4KqaiYHJ2sSx#1la=SP0Ux%b$}O zObB#yhuE7M#3KaftLggU1UsxQa)PTnpbql}UsH91=%TPa3$(?V)N*s14Ny%_enSsyqp^fA~hAVXO-g{d9_}v&ARicQ*RdbK-<0rU2 z#O*}i_7Pep<)6>o^E^4Nxe3E}wZwQI!F$^_z*E@6vc7D1Nrpyp)qD^8?-+h<*W8Ib z9_U3C4^gD7n4C*t)HSB*njnM`e%o6jSS!KB1=+jiUVVaaB(4F%y^gJf z?!r76q8@9%-mputK)nMMR28ZtvuZjtgU$t$wDlzX zS^TK9e}#^z-NUSUN`9!((tOD#RgGeuf}#=BWA2qw_Bo)E?xO%OTa4#idrq#laDw?K z;)EO581HbPcXHNh9>{#uO_kwTb>&l52nuTMYwF^m{1f?QqTYp`J?TSK+vB`J8m<(m z5(VJGSYOl#|0}0;*CpVOv)Ug~khukSr))5)X1t+$zVDB@hL!qJBK+9z-e*O>IIB@c z){;g#-H(H-SIqg%w#dut<{S^i2U9D=CkETBEbx0v^+jZ95$f@NeJdYw7_t}d$2X2b z$KFx099UuO=UwM-80Lk9NQwtwahv+W}U4Ynq8scAW8 z`)(UT&1&i7mh0&bi7Rv|o4Fu0_&IS@&L5@+7j&QHkS=_fy`JF?ZD(OZ%oEcd#N!;Vl&4f=t0~fPeEkTd zRQS21t>f{}8U^g$Z@sR3a#^EouvT(ftADs9uMmHh5b=HH8Ws!H zL@bfQk`*LHH@VOIQA1-OSGQ1Tm`OpUBC*=k&WF6I`|Vq8;{+zyz5PMApgoHwBsW8- z9iQTcel$x$=QJkmW<<3dX`~Pb%`8BjYtQpxNls#K*R1vBXbH>cCuO1N%R_L*qtR z{D8;T293ky19Kx7-S!z~pmt}BLh>k+plFzl6@xgAW9tnX98?3Dwk+TiviJ^*b^suG6@*ER6 z)xZ3TVH)f+%J8HHm(-uiDjHq|g<0nTxGmRM`tuhG)$hU|l0N2TB{c35&Ct$ukE9-ZJMB=| zKI>Q#zZzvD`m(I-e9=XWfcQ^(K0fJ!oeDiH-mz5=&}R7W(yLZJACnsx{uo5Fv5s&l zlw56Cf6OLS)z0P*X@JN8I1sDZrKcxPRNnDe=I0s$S*lb4YwM0reUjmc#8{SJFJ3?D->FI1!BKfxuS z)BqhylA>0NwmHRek6{$cWg%=Qg_Z;JBv+f?wftUtSTBg!)IJgL=3dDaBSl*^!Nvv; ztmsU`mB%Y|^P9bJ!Rb|Z-uH_Q=FHR#!#~dx*j0j(f7d)PZPL=Bqb?So zB5SRw$|Ap%31b{m7}9Io_QF%XHvCt^fY)>Pp_MGZHxvyM6<@LT*6_G15fC(pPPh^n z!2rthx{zy#q^&dzp5#gcZ2vh4)LvEh*Yf70i}A2hVQiPHFCSVW72gR)F1fATRfDo@m}} zh!__Bi*gK?+pB4onw=46K|NpD$r4o(5H2weB3G%}2D>iG5bzw}|7@RV zC30Tv_T4@m<2ZbiWN@#=&sUQ&~_@ILIUoqb$;B zmo`+_Uk#2{>5N;;$3@HW@gN)amtgSt6D>=8QX2yF@RL01w~kfUu!OB+#WaD0Kkeg! z&=^1ubJQzYa&_<(rmY>B&aYhbhJy7DhQzEokqyx6qCb5mnG2m!vfQS!kAMH?bt^)* z*nLVb->=lYb;}WJ@^;qZQJu}3MYDD+D2h5tIcI$4X;eXs02{MYr8Q{x93li8RLYC$ zc1P>J5)5SZE-)|@aiR+8?r zE)1JJu~&N=wLgTPrA&6mBuK+4QSqukc$lcSC8pTj^48qbiXDP<*Cv$8slH3t*iQJT@VRW7^IT%f}_ku;%to5}t0s`{; zg?x)p4`KQ468PAE=>FN_Sc2G^Zg;LL?w}zFSQloUG!=4)5Hq37HhFRi%Vmf|pSxnz z#WZ85`A5!pvej>0R`~H>gX3F0u-!=16b`2nzAU`X@I6m&bx|dtO3ckEg2geFWsmsX zJ$x2LVkx|+oQ)sgx!@3oG4?SrIo6m z!N+Ac796TnyofyTJZWUhxo?1fRyG{8{x4gw9LaYjC5=VJjfL#majr}>TSP%xU@=|b zDnB}3l8=0562515TcnIIM0BBw5=q~5Tg`exY1x{$!M3l8#Yk+HHvXtPRQC1eGo`f= z`Ap^;!1sOHXe=O!9gKLI8hh_Wx+*`88a48Lnf$W-h)Bc8FLP0p4jlv2!R=S!bI zWasgR)besOSJ&1`U(GUcUxd;=1wYkudxo^gHk0vv@3!T?ot5t$v|NLIL1M{YEKcxi z=FB<;vfQ|e|3a7AnC;aHTgWppZ0Ler@8{BWN%*7;vByW7eBS`7o!@iK+1F5#WvR|w zbMjS?^fMbkYQ=E`FYeMzg_+#oA%CXxyc-)2tKcjMgf>1hiy$9@#za^mW7$)Sddy{5Gd5KnKbeTVbf`^B^0Z^~1DTLb2lpgokB7C>&P zG8HeO5);77!{lf*l}#z`otP&9n6;#qHl8w)2CaK zFL+NdEz0t{#WJ_Guxlrn_zKItv)gzO7q4b$FD8ig4FQ&XOb^Y#~s3c&`Yt ztz+fa!#dO^_jgU(i2yb_A8JIG9nbfgU`so5Rxv~i9q*DzdtK#)JT+s$Ma!R!hY+e& zw3_p@HC)RdG5+2ai+ilS0mkwlbqWLLAj|x?SZ>tluiJ;j&#D{7x~DI)uWq}q$3ec1 zTauD>4=i;WZ4N%J*EPzlAVN#Q{%L03C5Sm50g0!@xnay~kw0svR$^3kjLgV{Vwl#T-W3FXXj z^+hAwmLZdd|2DGPF(8uTALZLYQQ??j*pQ~Tx9fnLJSwt)OyO3@U6!olE7G}}&Y+loB z0fuqZ&lNeK7dMG+q!8_>HRK)A%fF@x-qed}R+CTPkCx4avKHkNTb{OnV|CZEfZ!Z0I##C1N8(abYd~ zNuZeO!y#!w8-_RvU;*Z;^i-vqRM@m30{OpGv0;_R0Gi(yq&}G3hxW1O zBg@}Sc}V^O#FQRZ2`WAX@3Xj3_Wxz1x5R}G+_;PYgtrAYTz$8-p{jwmcPgVTmPx{M z2-RL|jmj>qUj#=0whbeu?f6l?SZUm!4pAJ!MuZUY6iCf_+;wh4b$IDqR}yY02}R%o zwP=dL7*`fB1Jp*Ev1(KXM4K>40QorZ2YdJiNY?dOK3*nME_U525>LIPD^i3?S=w`_ zVF%A`Y~vo{S@iwe8JRTO&n8oh7ZxD6Ks!mV8>S*a{}O z;H`nR{=4nbx};m9coVNuyJz&adQNF^e02M^ZMhY+B#2wt)Lown=8tQIBePjq&Y!n= zb$#o!j!|B|Aq4W2SdN zD)Q;US`Wr+^ZuFN^<=xrn(1pxz>tol2`w8rF@tF#UVqwug&Lq&oQzSy?Ew4SI!$lc z%Zwpf$EW3~h21nR^l$w@bYy0Sy(~z}7%?sFf=;d<&-jReRn>IS7k8T`z#q@8m~=e; zA5l6*D>2xXsAN>6o&aarFu=1=;!j@>=?PB(90Ug|(vUyiw=aI`Z2HDlTmT|dGS@f@ zGPTW5h*qh)EJ^J@3<F`KC8`s-M(YW*4J(&f_$HMos>lL{Q% zm0QUX>QLHB>-NO#?&&{j$wBkv;pVZyBjuOh25<+c+LAHKA&63u%cD z4!Z;}2V3m|d_2;1&{afMw=QZ7zPb2oFPGb?=LB}t)m$YvxaV+A*yJW|_1A9P5>;DJ zC~KT(yTj_YZeIoxRJp$%WsdD&Wv%><^^e*xwkhA53KEl_$6A-opIOc}_Srns&4b+v zZeyZMv{y= zlRm`66lqB+uGxT1T?W#pB~n`A^O1n7%|`iii76ZM@(o-XD|57fR z>zW8kE`g~8skr-lrv@fC@_=}GvwQWr>Ta`Iah8zwQQq(JvkGigxH*|Qv^luFNKW{X zl8FbTk16u?X~pk8dbsdRsbRe&Eana@mm?$$M!UG2Bkg*q{Tk1uyYeGBiq>zC`;y{xVZmqAf~O~r(rJdN~E5$hXTpPx$D=GX~hM1=~gpGiTIK?Mzr#NT^W z?Rg1)v07z?SgUygu2p1AH>rFWE-oP{?G-R;2`$F)^UcmS?i?nI>%y`Ng_8MS#R;`V zy3vpu{Z+crZv}PkFwIR#3^ZP&)0q-+ti{lkYmA74j*`bNVVcx5-1?-k#~%}EEW~2@ z;`WD$;?F}ti`u_f<7h44_YqZ@v^xdu&tFs;CmunJGB8v6s~j~oz8|Wx4zJK3tDjFpj-mRNSy#RIKKqymvY&mW%{H)Z!S%m1DamG zG|1C0$9l28`v^cI_*Xq0((L5Qi%!mom}*Cu3SV$bnLd)3anV3Mjy! zDKHEjB9V$KwoG)oy^Uz8wyQk)lA>FS%uK6vtuTH6^9nG!l+~JUXnhGEhhZVScTiKw zqhZ2Ww@~Zo#JP6Ed2>_z2Jog~r;&QHh_480`TW_4kag1{6xRWLvf)4}f~5+K4EML9 z5~k`Wqi5M@Zr%|q2`A@pi1xJ`{$w!Nz*AchE(AF0OoIV+eG&zDGy(|P{j0k0!mRU@w- z5}znrwjw_{YM@NJK5o`yZW%lzfJDFKcD*nn^hMZ+R_(YOS(N!A`x_EHS8cyLDdHIst1{iY=*TUwh;U|qDj^4a@U z2-j@%h~z0ioN~fp>LxN9b|KwKGtTc?{fld5khE#wqKQRp@FvfytO^QQ}`&k6!1tUEYd0TQ++EJu6EpVRb0%7eKy zV|FN1YEnlkH~O01;tIp_qSGP;b~Ax?^mK24 zf@xlolfs5JZPz+tD)JFwXP+HVNz8q8T->!r5;Z*;Kouo!7O6vaG8`iZ!)ppB#@CF} zLEm#dF@6jsxrgs*Q}v@e#l%L%l11fyE~dw}y1{IErx(L=_0X7D<7H z%`q~~HW9`5P(i3aoM!POKU6l0zKB8Iynp+&N6-d4wK={MxgTM9vqC^wwu5_yCQTgI z4H6b`r^ySyCHXXfs)`jXx7d!Zu316m>t0bvV18Q*JFtTqqRte@Qc{E#7F zaqX$jpG_vIe`Kd=&r3zZcN{ANIm`$IIkVOPd+UP542+bz5N+_myClm*DdYjc>B_2i zRiVg#c3G~^l|5`7_ZoD5Ax?UZihF>X-Er*b682S@1C7&+jkAh4f<*LX7QzS0msx%r zaVNaj$D~K3Sl8+;h_FJm+;cX}*`8D7AR6^O<`1y7<=H2HQr8ygZ=n+G*gdcNo`cDl z2{2Wg9_%n4>eGFD~%lJ7fT4>;Gm)OXW$T5!Pkk5Vth_k>!2VipgRLq2lFg`)5Y z54%OVHk^aP%2n`K?P`M8v!_PBSI~qnVaeK$6HjKYMsM-v=zth+BXY3XT!$1f_bn0(6*HTtET0|738fsEx9>0d`9u)o#ueCho(IG!Va?< zTKu!r5D+F$vVx*L(H8*A8{nJQ!?LfJ2BF5iQ;FVLhsZpk#wZS1o+y)}5J{=e@c~KR zMHP15*juwpJAHD3_zSgEHD_-W973%6tOhHj_+Iz!^ z5obi^oCLR%nGKX?p{YtE#ljqHbH*j3VU37Jh*MiLB-k&;*(&|%N~%bV=z>xcz@XRx z(gt8pOO6;uqQt|~!YG2(32@+$W_sMjeLi|{?3T>W+`lK~%G?V{4hcK|WOK29?N7Cb z+g~Ruf||r5o~38H=er7~8?o_UitBe@4*_p|kGnGsuK)rS;`VNP$=9hOEyb53i^M^_n9BE!wz3r) zJVcXOTO7Xo ziE8Z~KE&jv($_o|XLzwy%EH2D!-u@!vPNi&Z3}#{D^1}FyTG}$o#qfT=3%dQaW$Rw zBGU99C_@XaJNZb-5NL8`Cap&XL<%c45Y`bA4n`um!eEM$ zBB4f2xKLj=89N%_d9YY>;o<#88dIQNR709aJ||n8qfB?4h?3{nX6Yb_;Hq~0#9qj8 zePyyj;~+@Pyi;?we~}Bdhth5WcgeetZMr2pZ*A&K#76oZZumni{rwRqJv@h70a zftFgf{s%}4@`GwZ7p#o5cWH#0qL2~;?Z51V-(#Y}g~>I~mL?}=XkzCZsc*O1xg8gW zz;aS_u+6|c+rQ`M$(Hdd8!PQdFOb}SE*pSi=-S$n$hgCzcWR2U zkh#+qMwdf0eT!*y7P$6|9BiXXRl=b$js9NTYa4d#meFnNhxSfaetHXNw3vo2TyjG8 z9w{lYc~DJI^;5IJ=5 z%($IztrI7WEbtN#lDzQmO2fjFxWL<*nX*Y;iUmQ(Ts1l5q8z*F?O6+-uXd)f`8CS^ z*_MoGv6?jCA^_QPL8C1Hc#1|i3oWW%C!SDKNTNN>pBC$jv&Dc+NA;sdt=Ow{QjQ;H zKBfPj7J2@yV-lSj_Yk+Yp>_WKAW^4iyY(RBxexKFRaIqTZjw1FD-e1(6lmjnj`9`$mE|igAKX=-fZ5R` z%=@ha`!MF(TxR6M5QU@mQNBhd9m`dTJ2KqOoX|~TZN!*KyuAvMeBY6kcPyqB`-Uy| ziPMooQ!IAh8PiYc>N6n8qaNt?^zZ)?Jd(Zrp% zDr4%;Xf(4F2bAK1g_F1NZ!;i$%sPL^7u@nRG~M`biw>giRZn&}Qf&~9RR(|3m|?oY z){@8sem;`;l>vm@k~r-e7uuxee4P8Id3v9$vzu~Q0EeEGpQbn_r*iKoa|4K}2@&4_ z95=GG=sQ`Xr8fU9eqm-Vy`{ z%<%1DTHl)jlBR~SODm?XJX{G!1@OQ``Zz^Rp3tV+>Y7YMn;Y**%18?ZsRkI%V+ReO z^aMPQ9%|T0Cp6-9y9`~vU$G&=>)9*~rP3qV%ex7zcmqt5u5ms5(*13c#;I^3+Nb`+ zsz@^0>Za$Qx|MzGL6E#AkvV@n#lSHvroHg${Ev@#&=}KJo)wzFey* z6#1LYPcjtzKeu;slhP9ll$mN)es}HqlBVe{gcBfyZMIHsG7Nj)*42|!sx5Y2OH_|z zTm}~ekCMhOx0v%=YCiK_jt)XvQtnELf$!b`k0p<>oE<3`AS|!47fhDDIpQ-qD;p}N zA6a?k>IN^6S~#B$0W9!Zm_I!F$1Q@8jme nwjZ)>g{rsGjD}U<*2$c+mqW!NTk))KfC<0zhoy>dZ>#?U<;CN0 diff --git a/assignments/session02/webroot/web/images/Sample_Scene_Balls.jpg b/assignments/session02/webroot/web/images/Sample_Scene_Balls.jpg deleted file mode 100644 index 1c0ccade2de6ac61a164052ed4a7da9fe9ce2068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146534 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%0AG!bll7=qnQE!?zJg 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 z z1n`K}5F9YiPwP-htXt+8`FKCXDo9kzaAIIo2ITwt)YGDi!VsJ&!vbk;Quk3+L^5!Z zFpv+Ko4pZ+X-Fz^pDqV+N**hFy{mH5F(daxSe3b#c7<-#CRiXR z*R4TzLAXVd77j-adK$JsT~(Pu+*b?_pr+igGKk#BTPL^5DR(PyXuoiqo1F1c$%kMQ z8<&E8D#+Z$ayJ;r&UmWRz|9iL5e18U*yw$zK+wmx5TJ1p<+)+dQ^JOVJf2C-Nikou z?UH7Vk0AiaV@`6uM0i|*(*lMhicb+AKG4h#-*74`vyOPnU!){_h z1J~&Gh zj>y0snaQ9NvMsIOl;v5nqtlv3xQbH8a}4{{V)q$4qre`V(|*$YhJ=X6ZL|lep%_*i zNW;@2gpuMUl0rw)szWJ|3{?6mPRR-B&u%HEcsF$*{b~o1 z`T(T%#YQ)l`O^UO;7}ISzZKxg+aUv{L8i%m(J%vhfzqm=5#_SGaZt6 z6Sw9#B>MB(x~~stD`PwpLvtfCfEW+}Z~nDaOkFHG=9Z*FgzCE@e+BqN>a$6wUdJ_^ z?0|V{@sLntWtbdbZO%Um_6-N&!+2}NhT6{cuQa48;hA=sNa$E}<0k^0qTR`>Uj4S@ z@3~+zA?k22KSBCeeW5Uwju&<@&3tA*h%psq?Be-j%c}fOZx5E!rD?rg&CNSXid*UL zb^~=e%#z>�+y?)`*@&U@iu0ozr0pj4nOTTInqaMHuOhmH37`6;ly6DZAV7KF1AC zFpZJ9V1Ifu$nRYQC>22+E1uH`cflAnzZ2uHZuRTrQc4ZWxxGl~p?F{>I+4f}G2@^g zg(M^p3GPN|3LM~k+}8&Y)n3)8rF(SW{t0+>p*_5y5y#_NYB~rp~0Jhn4lyU2UiNo^>t8Ww$mzi>*%-StCBR3|}*J1L;~3 zDx6p3@Q1aY_x``9^E;&ZQ1ple2B(7DN%ZMYf+HtI2DBrxXW>UrYWJw+&b6FkaZ0*| z?1n3Fn83wFt7>*y9-A%Y^oa}+jI%l7sQ9DA)}9E{Ui(vjDmCF$b$09pe3kJt<0hfw zJK0ywG1`KBxDk%kAJqHT)ZlWpEoB=VRWTge#hV`%{{Uzk{Y1@UqBGc7@~tR1l26C5 zubuUMdV7f+G`sW5F+BY$U3*b^oq;$c_0KiWOzS3BJm$WZ6e;1O>}ablrXJE$SCcu< z8(i-&4*N+p$9Z0J^sUbp&HkITauq^yidYvYp;LFLQj%*=` zu*c@l6)pai6_!B3KBBz`;r^wfp9tLCUr6mdFuH+`kF@RY(D9RAb>b~TH@tr-!!KqX z{{YWiSFGTP?eR!*bdr_r?=pA2}HP1f|*D|Kl)OfY)j@;?#9V?EI_a5L{( zQAF`XH;vCSt37qz1WZCTokf=+~@J9 zD`T}WfhEJpBcCch1szHd*^Mv_r~B z;~Na|Zom^@YcV9+i=$v>r1fEh?2XEnQLVqPzwk81I9+7)qCtxI*(=&00VscTG^ z%;1B^Uuxt30B9S3KjDqrDA>{5LR90Qy^q&5-dUiCVL$^NNUl5MyiYg6U2v-JWD&FD z&`7z*)2)7=OWI+v7%0?|x{}w`+TG6{x>Ki8-H(+clOvpN6=_d7InR2bYDUB>k&*me zt3oy*K>mGe`zs3XO+O>>y0%kjT!WL2eQHG*?MMk65yeQLV}V`C7{4J@W9#cuBImDa zY+(1PRZcxCLUk1Y$Qa2UwC#hr=h#vrQ`LQ{Ty9#DBO@c`Ac5c7x-SEG>i+=28jzL= z3tLD)mLhT(X0TZS&q`~cPyopXt#IOSki=7T>MN#t7))hMEojxHD>bR~eEQ|SvtXCD z%pD~e;PfW2=jDCt&3p~wlce1XJBQ7rqyeAcYV?^~fO>*ESM$daWpy&z{IB7AGyB7U zc$SY4;L}dkV67$k`ZA2CoDP+-q!wtVu#rD}2J|HII2?YttVswBnx9U+YdO|MJ5(?v zU~&QJUoC{hJT-XKT^aQ}X~VR*pCQEMby9rscE3qm-D}bL9XEvGSUf>!&77715zuqq zxnJ5#LIULK3z6o+u{H)t`S{1b&0d4ytuV>rcw|+?O^FxN9dk_hx#6_&Ft@ZZq@{`4 zBqS&~$R{3^>SOWgaSj>9>B!Uhrq|?;^TUF2n%Q<$jKfxqnyDpc-a0enIrNBh%W*vE zv|uR8pS(v-KhG6QK=7!AVj%>QOh{ehpMI6?=i$_Cr?tJx8;i1bF;+N6Q?%pTt!keE zT4|8llueT;&QEV)`PbY_7Y!2J_2Y-1Rk7jM{{Rf_mLoZ01dW2EbtlvDtmyt0t(4|w zm0NZ}- z153)6Y_FirEyNhRasdY$NCUlgx;KXscq4s>Y5C53@mbL59)0D(1hi`>KHaG)bt&BC z5($3Q6psXJk;CI8%depaZ+(-ch1ZZ-2~K859Cn8O=zrZM7-LTx787DfY=5L$-6nV3N5U_7w6X*jN*_SLRYWiX-MZJxtq# z`%Swy-3l^6>PKpH#ip`lC^>#i zfq+L`j2`ipsBcmLd4tjA>u;b;I zY4@m5Tbz(s{{XtzeB;Lh3aTal?Rn94uaf(NE(hV+nfz^FY%K!jVNK3kEVHws_2 zM1$s!k9D9fSwJ0*$x8c?ih8cne|!rbIH(qQWgm1X_UliQ+z7)(8SII2xO+ZqzJp0=23%_g{d8f5;CSWax>IZ+E~dsiJiUk#YY>vvD$J680k+BI6NW2 z@0wz`( ztRopLSg~H`wOi7>KlTeWy3`|CTyq2u$V1eY9qL1Lnx?y=+cFL6;OFU_ir4WhpS}tS z!0lMottdy88cv*DM%m6@OC{aGcWjeedLPbFK;&~+axPe&gEhb5v$o(buYYRtF`vM> z*FhyTk4(`RLlk^titl_k_mqG+t`|;^D5ubh?|dz`O{XX1I5-vYIF}gJZS;%$k76sG zS$8}8D9DXKApZb5)`yY+AN_jEu_IvTpRYBoY5_dgPG4^H*#XXf zm3z7BtMz}~=(^b9rEX!#+t#%#w(a@4_N>%VfK6!FN9TN?;~dw)V4*K+y0dDI(K-z# z!durV8sq{2IO(5%&bOwrw($Lo_qvSBZ*6X+-QS=9XV$VbokA@R)?1n6SfhlI2`%bTn8eJnsc_7kaVnNQ+_xC4{e zobW#~E5NIY_Sl%yiO}QA2G1V3PcBALlDXj2a7Fg1g7l1h&iMPQ>;4|~9nAZScF!js zl@wP}2%ZRuQ6bEjZ@vaF2=+YJtd*6Kz}?;1-RYO=8Z@;J94L(yyiM~3%MHwZ3t$p| z!nzwZX)Z=^ub0?&=cnX2{{RZ{ zaXQH+b;CqV%;t2BGrw^=k8XNbf8h9*DECMKJ3%=(!SwxWiqj&*@i`l}oR-HUzJH~5 zdLpn?{@}qm?_WKRmn|2r?CYoTqq(zW-Q04%Mw5F-J|fXhTh#`h@ZUu3wl?|(V*)|sJ#zmOJOwYeX#<==NxiBTF?j& z9W%}`-l4Sl)Eo{v16EJUKpfZ7(T61%)1{+ka`?3*LI4Un^x~fie)FHyRA{8I1EpTK zh;9d**TZI&zOOk#A8UUzx|D9NXjv6TT(8$P&|4!kYCz+ttQ$oJKmgoNQfsBQAR?z3 zuS13-?IkX4g@~1v%Ls*3j1n=Nk6*22`2Njq{vY^`Cm^d>P1m*)BDPfJaB>Gu4_c|> z8)cuuy0yH3;#(+9s#DBqG~KTk>1S`o{{WfJl60h*@YbC(NfPc&r`ok6 zN8GU z^y!LnM~n>P9dq8E7m?Q<_3lLTn4w2p)T^B5tpP~~1B#Y3=YjJMwO0gyA&?$0C?J9D zpIVy$5Is9kstGk{Z$c~rJq~+OjN>5Urt06{VUNt8R7$| z*_$b!HxQ4MpW<5Jl?%291p4qP_II*bUq^ErZIKRg2kBomo@Fr2FtVd9`ad)7_(zEA z@ZM!l8&BcdOS*fWs^gxSqsw8&+!N2%pJOs=7Lm@QX>|mz_f9%hw6SSG3fz;>n*Ls^ zhN()kp*8O(WBnGxW;lFS5*W%-P7+Dq$nks-1HxfXn3t+2+~T9 z>WEl~!6&b5R|DZ65DhcNmR8ZoCbF50sA4b(Jcj3|KhC@V0202T_K=nvMpW;18QMOd zoq2fdrxljx*k@O1#Xn6pKaexr!v&AUV<&=Ek2CqcujbBAO|!JRw0Z4eks*|qk3DgY zr}e73L=fs4o$|D~tG;bJXj46!ZeAyiH>MB1F zTgo*{ct#1041@vHQndvVQa&YDI_GFl#O zYoyy-y4jfIJB|?JfscB{PY$B2k?h|fa;!kw4>jtxT0_km%JG29^8h-7S*Jpt>SjJ# z+hvOeBO~iVeMhsg=0izqxm}Y^Yfz&YIQ`%q2*qdIXoefc9$8$j=jZO{)AI(sA4t*- zz3ie}@pwTXws^@s0PTvBZ3!j1cUD|3Hxtg`=~t^n^Ca45j%q#}+pQwJcxR6o9T%MQ z^~kJS-w9s5;!EYiV%_qEKQZI=uVuaP`MK2H-yu%`4i6pw0F`8F9ur+YcqJFWDwf=n z5C%^|J^iRpp;zpA)V>>5(~s_ou^HaIv0VN3k2Qs;E`>)@4{+Tp+$GXs5M)LGV~m~# zE1L0FhvbE#XqU}_l{SoL1Pp&l9@j%%ndTQ(4;8xNJ<>NgJY?di2%jk&k!_Wilj&Zg zCxtC;EfmaITrqR=U<2B+U&F-7Aqu675-@uI0QIV_(jw=dEJP%MR1Tni6;DYFS2!iu zSi&9H+mBzREVie5 zMY|2RARnz*O+6yMP?rxQo^~RtOz~30!u?IyfU)NLg8%9s5u%NkElY zWQ=;|nZ42W$l*qNb*R88CerNWcTrN}H|62T$KEu6dGe%ie8w2)Gf2@#&`NmjXbTep z3WXg39qGc_0zll~P-p^GNa6tbx%yNud&>~5w0e%Ts}Q#v!Se@hl!Eo0a#fTM?}|gY z8r??hM#UY^twVhzZ5Rj&w%~a+D%?Yo8Z{*KIHbFZHnt@Y3}cb$LK>GZyvp`BQAgtK z9n=`p%o~~8amnDE6+~|nD0go8Nlr;@eGNBwrj1l>>OFdlRr^?(WmD7+ z-nB~C1yyhft*8olXnGJaSx}~`PR-iKPeW$h0UkiX$E{kA3`1?f?0Z#PbG{+@)r80Z zbUY4w*WPCIm3*~#R%>I1o8_v@DS`kv`c%-3rz6&?qw+J>tw)2C$N9y6ODMGM)bx>R zDGu;QYTvh)asiy2b6n(Oo;WqRWJ%fx=Dw$g>dKvG71ZXglSZU`u6l}dCqM_c6%<)z z0FHeR;Zpt3G6>HV`ZhU6r7Kik?Z2*`hm{v*>?BQv`MTAsX^NbJKBlws%Y)zAywl^) z#TD=uhFad%Olr5v$rcYWuXg=-ug|jlHB3$=Ql{;0{kxl1YB9faf&HaEJjrzPcxOnt z#iVC#)RCX{jz5R!2(OlP4MFZQSdzrkwJZ59=4m8i%*P~?$*j3#AaT~eXu{#tDW?7v zvi|@x#gbQXh{+#w?axYvNxYB;@pa;tzs*%;IV;ajyi==H-u+8avazvga2f(nCm0o- ztKRuhn3Exo8LJlO36qQtwT-Jb7@YDuR*t9c*LFmcj>kKAa^&W-E)H{(n!k2;F*TJw zLuB-?Vm|FCqlLX$UBD;Oy8i$H={{tiX>rxCx%BT`oDsFe=^FKR09UYhJ5P=)i&#Ly zt^v<_<-}Cvg}a(jhcvEwo`nzCG__{=U59VdxNjcnO3};8Rf=;FQ8$(HAT;UsCG1qLHdNzd_P^zHdq zZ(`y^RBnLej)0sG*0_%fIg3s5k49qQM{|$=09W}H)!W^#mKXSj4@&u*W%-j!L(-(Q zI!z5e(RZ}uMuQyvdVP8PtGd%7*y!6bHtiVi?Od0K?RVoJd5>Ph{F?3bGu zy?n-LQOeP8W3rBtx;t$)Wwy2f2x*AG$3?BXI6^`JIbuF+`kLo-)l^v20013*Ph8hc zXt_|?$T;V?uO}{-Jxg}}u6p}NQsPIo6+i@3g#rHn144Yipv^x%*{yN-->c#jZ=%=q z9XfpRyA=l3>C&xRoyUXoVyZ4d9C246Q^Jq074R6U-&m;T`knDgD#p&05otFbM|#<{ za9iXV{{TH}64FI6uyeLC!3+FH(zfhh&07z$216 zik4&MSlkHIv$QRM>r+9w-PeW6k)KW~bM9(b%5_`1a$PpJpKE;e z^t4mfn@7QVTp~5VIKvP}zD{d$AOdhtBD2~LBKG1kFv%;a1F;NiLNW4;4r}{gCU(J6 z^k0$qeqg`aYI?F&Y*dhpwh!iMAc&EiRmdPY91Q26uYEJg7>Gf@6=h@EaB-fz3bP%l zj}5brLr?M;;PI31PWLn_?AT65aw=$T{KX7T1xh3GkIlE5ngspag8-esmp!WQ*qu9) zq$x7(DS_-Nl=j;)FhCxnu35{nU8Hf?=C0hu9Ep;=`_}Q&&Z)J=xKC7g`oKhR$dG)Xnmf&^KdVgQ?B^ooTe?ZY3Wm=v7aD z#=K}QFyn$cSAS`*TzH9o*L5kH2bemSpV*Am+2T~hjsK{QbT_Emfb9dbugUR9<-X1anr za_k4@YtZhmEhX2k?qRW&?;;G6J1*VoI019kzB7xd#;!7hOIWA+A2*avQKeD7wl#Gt zcmBsdWo0XVNaB zRsm#841Wkc@la~I)b_AhS^ofL%`>|Y*9xO)!Rgn%X|!y%6H3q`NZ1jmJU6vzC!)~G z4JJ^7NVi=yHbiI#1Po)G>SC(bP)j zaf6e+ju&3AAKFg_-K{E(=sJbyG5FIpO)B2*5t}BEK*JL<{uve4vi|^R-OQ8Qg}H@r zqdiA&&a*W=CsvC{9(B}K*397}jUpKUoMV!Ee>&PV2ylGIJwBA0o|@`oF-8v4j^I`= ziL}+W(=CW!G9{4{1B`-k#d^J#it%YO$>pSs!z&u}1J~kmWwsLp`8f-09PX8cX7e*RfdYLt18C@Xal62QMk}l8=?6LJe-&M|)dX9}NY`HPv0%5|ALCiFtAJFtM{T~J ztvwk@_C6MPPz}Jc`h};*y;Qawj=--p;?klpNU(mnsQ%kJIm}Em+>Q-&k<@Zr?ru{D zwnsFtJVX*>UEl2rVrn7tzaV`o#8NEkT&m}`MIhXQKPk=ZP~y*G1jDGI?1??l=LL^r*9<==Mjwb z>S+$lBAd=l>w-NEM6gJAF(`^p7&O0SE`t-}1e_2DHCZk0@Z6(%0NrVcqC@tD+<0I* zVDm&*7Z@bM*y)lfixtwYSSpW9)RE80Sqmpz4y4j$BFL3?aDi|;ih@!MY`NTVoDP)H z7<0KLWB%|Tl{u{3so5aO{t_t(rqztLw>JqaYJPpYm+CpLw#MXYx)rp+w@DcCmXB7jY;ZupTt(Lgow7jz0+g_`QN;ay~j~l;^ECs{f=xEPD;FwW-G)8QCnUee=cIU z;i|0m;4==Gs~U3%?uOA{FInAK`igo==b&lx6xs*g$Ti(*F_}_1KsW~=iu2tW{?jUs zdgB%7dOHXT#M~!b686%SC3kPc>Q-qdq1ovd0HPtzYodqc`El4+H)Rlw71ZY= zHMwakNsbTFzaPX#^5#d;Q@yPtUf(RrbH`fVx5Fqo$sGQ*&)WQ@bI^NM-If@TIOF{P z04nC7?Nvs{P4v*)vuvs4j1K*(;5$hpjMXb8+BrF^tM4(DIdCz%vpAByKtuCq zuQ|`HS&6|MFn4ZCW<)2>h!K-LQQ>3e~bLoc71k zy{w+EC3L%)RY{{}9Dpij!5p4_s;n=8-lZ-ucqYGNN;PP5v%{6+CQ{b5TVD_9cN&G; zi0$p;GCLnZ{cGT_ioQL#@%M^uwHa8fMYhEmKXC^^Ue)_g{7v&^PYl>enByVtik_|6 ze-5?tB*3#1&P{P)aFnp$0=G4<>8Izv++{iQZd8^`nymO^)~!5#qw7&Rg$D!lue6Je zNTn8Vd=BiVaHnn%el-HABo6g*MeUDaP&){L=acJP6{+3a+AFx(t_%>B&P`!oTr`Kd zIOeZiOUH5rW8FUHB=t4VPu`M5&Gs|rCoPK3pPJB{B%DwsL=4G zp`TIn4lx+dKDFw;89BMnLI~szmBIK{%tK~m&&=(fM{4hUE-`RP$=WktKZ}*+HQ6+J z6q8U#OX4e^D$J&NAY}glI`YpEPmmY85(Ygpl7Eo=>$LGsq;j$2ELaRzo@*ChXuD&a zq78~YhyMUyC-J3))+xTa{JI!b?2LQ1Ag&H-Z89C#3ABb|&If8pZ6wrhQW(Zv`)AXi z=~})WwN$@mBPzK8d-eYS_1CpIsM6)?dCE7P&c92C?4&0+KzPo1Cbp6x5EA zKy!=%k4*Kar>}bA&1UIVl)C;FH>ADW5-Q=l)v>l1osI&i$tQtO!k@h4aqm*kBFT3R zxQoo%JjP-$tB#*jp53wZuOA0WHL82+>1zEAYCct=Z%c%t;oY72W@heBU!`<*i-jLd zR%VlLk(L7kzpZPp$%U`b@)}d9zPD4a_5E1$>$I05Eh}L4#~d2BrbK3T3Z;NjNgah! zA9SxdBe1Pq2?=?CK-fc&dwc#B%bvMa#!;tlcKiADCJxl3&xUn)3?3uZB4#cU?oqvt zN%_xOmJqB5Q;$lQ#xO0XjP=N3ZOE6?07ielPC5G1^yJEn_3RI7{>#Yc&w-@ZWPUH1 zD`Kj8vc;<85JnrI9+kbNY4MO+LQXlr;DRY zjS1-}<3HXXRQG1%SWl&#cs(EV2D2H+;}Iy9qTv2`ZTu|e`>dJ0?N2a7;(t!{Ht$A zu(^BBJ*R0LNo*A5uMHR-aq7Lm0$EJ6ECYpVpmw zbQxu|meeatAd@Aya-*-|f%()oH}40F8rz0<3I`eF1Co6PDf--IO>Wj;`=*U>W9&iT zpXFW>c6uI_wz(roeHN7o)8azP*>fr76!LHfU(TH$+hZGo$0G>KleYsrlgHuu)ejM^ z#-D#>{{RzJwzZi~_!s~I1RhVJv=ovoaAJ&&X5$b5}GgC$tQPQTxBWoD=O-E$yYff@l@m z4U;nOQ}Ya*k_jH?6m0YwcTKaM({$}t+Wt4W)WzHxJ5hd8gmvTJ`qyP~9n(Pu)=?5L zVhHu%59M6`kKxNr2KGqJ{{Y(Mno{CPSQl?q_r+{nLg0w}-KuizcXa2E^X*B=+SdlJ zE@GyvZXtyE*d)joAYc$qFn>Cp)o!QLzRqMelk$losQE{3K9xsZw3tFbm8CDW(L-^# zF#dR{VZF3A(aU#qA%;}I-1}H@$o~L7wGnqn)=6JsH1j>Y@j{x2l16`=Zv?gnKc5tM ze$w_foo-ukd0s`rfCwj{6;s1{9-pVXU80{oKX#7laukuz>z*rm2;(z0%aBMcS(WlZ zq~5j{Lzte~zu_ai%%38V(d{@O554^9@>yxxy!dTNuh9l%h0froJQ0qDrCSuZzL-ej zRuZ_~oRGL2A8uDgS$TC=NLL2D6?-d6}m z59#&&YLAL6q#8_Duqd8rh#?r{7AG0{)|B@`dmQ;K0bCgrj>D~0R*oAfMZi_HW*atx z`>~$>`8}wM*^>R;3Q_oCE9hPBo#CCZOsd!*Rck#W&f3-Opu1vJ?N=;GY)S#+uAsv7usm4?v&Z~HjPPUs?f?vAAFskQ` z=dKU0TGBIVY85G`CZck8It(cG*QVu=u-IZ_^07U@s+x|E3|11nZnEteP&vWv`qxc& zZ>3+|L2c#CZ;pJqLY<@31Ja4KK^VDZCNxZ(FylDnj8?IlZ&NN;6uO_6US-Tf9$PWb zQO;?}HNYdxMqHlbfk1iDg0dA}=QT5Jl!a$t2XJv-ft}vSf0`W*=L6_7Q6;$AN=c9R z#}yM=D@a1lzz%R};@A`jv+z2cQxMimgj|MFJAi45C*Qre7Z z8sR5KZ+CozF`!7}%E;Lr zG6pI*-XR$?V1vd7N&tzSe$gDLK>@M|t(|7tTPC;Et&h%xI3vHPteKVq3dEsUbAi(p z)aa%?Q%6`E1=MZYXqMWZT}0zMuT*GB9Cy$|br&&Ap@ARDptXoYcBAsDz8aKSUEFBb z1(dUSuo8IpQT+b^I@^}OEP;nnUpI-P%Pv%XRvN0S1vGDIYGQP8*Ven;B5^t?V0QtG zR|};`rX>f49<|lz5&+mOjyu=SN~G2)#k+L>03*?9I34bhbV@1`NCOqn+r9`R^sYxs zxB@}Dp&x~G_CGNM9E03+ugfu%oN7q+@bmW zj(Gg*$8OS0^dfaO3?%4t{zYB&2Z7TyM@>MHp&dy6m46|C$vLmL#=@-dFtS^GwmDN? z(Tb-dr8*|T$6Wdfj1i7KX~+oAJevHrR#LQ&K_dKl13a48vXxp82Mt)U9yl5H{Od~0 z41=5#UZz)7(!?tnRgKk+gvyQ%YmxY)H1Q0g7e8UQCO8xxG2Oo!{dWob)UEKX{{YM8c(vurr&G@Li`n&i z`EDnW$t;XnnT|;$)e!&#C!AHKw=K&L&XukA9A>>}LQmdjp4!;Wy0#88j2`uwB9WX7 zR{O!Y0qfSYFD;5>V;JvUbgDX1yV%M~=46ZWWAMqUmsmIjusv%*fEn&btx>uI1a+@Q zt*TRUK^JWdi`fAiKnL7bRNx$*m7{XFBy_CV#tGw!^C^l~DYE5{6vemm94-z?#Z9z7 zQCoTjn3BpGL6AA)>6-Vc)s&-Sj#?TzRkzvgQE`9#ya!bx`=^$qmQ}{MtfI1q&Jqs2dZFtb*`e-aH*UI+q40U zW|c_jznH9T4i&gSLE{^%b{N@NK>NqIub9Krlc~)u zk84g{4YVP$0LkrBCm8SUD!sSM7|&dge>$B$Vll@(D?IL-_P0wy=xk_NDV9LJ3GRAS zu|&dY8IJBiTyz8f0Io?j4Zc)+^fjYx4&+Q8M{bq#_-7~0N}liX?Wweqz1gLvgR}vP z(pdg%oN-mGBEp_AS5%M~o`7b*U(2AdxFsr`5#`nQs#ybJ22NA9;av}dZN=Txs@rf- zlaNR!8~_JX*NW$4<%m(!u5;71bRG}6@-;4ScPUUeZ5=w3Un^G;PQG(R&E5&6Z@oWW z&dYnDR*cpfN*mbtqv8@L{49SFIbSH7*ZF&A)~Q*MkfWY@)&BsA>d^d3@fdP9i`O47 zPxJkAS#~75E>B-iO8&{=_Lc&gk7M!-)qk~4=-sr1q?c-v!10V4>#cP6hBe;-c0~m7 zkUuV!m7&_AOB{t6$7EmP{{TH}z0@5d(Ke!HVpnr#7#Qe3&!v0SCi)&Fn`s^DS0iZyIM1(f^zB$W>YB8kp?4=}qr>O2cuONI2UGJB56e)r1cC@4_8lwJd`01B z)9xjXLS-xqZU-diuj9>emv$dxQRb*tBkrCLJq>okwbHhtz1^PYEjkPw08S}`Xi_>6 z*j3A@gl~?3o}#NVZgbq8wduyq5hRgTL!5TaF;onkgPN8|{%isOG{B@BXRU2+#(L~C zj!t;=6uo)j&Z;N+V0JHcxnnC%pRGiPFvw30a( z{Ig%q`MfzXwIaKpqF|pj2sTx{m$cg~vKpMZHLpeO~Mt{%Jxw~6iXZuc}7+)^x=W{UrB;;h{@UIoV z=cJYH>`$%fI##8t+j*|fsl0h8SnM&5*kZruNLN!=n0CX&MOQQm~tagzi|=zZe~VAIhTldKQvV)XmZt zNlilTXg4GgNPM6Xv4f1`Kb=^(iWl(_I3W_;FfGxJdsAOthT)@cvA8V$TQ1xcC;Ty5 zCTM54cy>1MiU%BEXZ59a?u+Yk4NP0uO9TjRNhA*PTO?q+BAn!m9!*1R z(eHRt2|iZ)_!wXhC-bOQOgBa*i*EX6wX98ctcfe{2N@X0T=wJq^H+7KY&*MTbJ%sM*6|xs5z5~q?%5e1dz^0f_pHrd#Ja7Xu^o(>SNuvPAtJd!<`!&> z41W$!13s0e_ZPzXj*kBAe#s&79J-ZR6-QrcfiJC^6oy-8{ooq`9mlWcD&^8m93Etd z7{(RxoC10fe+rFnLzvyIvI*L_BOv$v1t^K^W7IYjTHLpmV-mH* z19J@S9)hxz8=JW&g)r=J6!gc|mrvC7X|7rut8r`PovMU}+`W!{=}T7F)3t}fAR4XG z%^5D^dBFS2(?4F-i{t2?+u0kH7Nn4Z#QSKc#P9JEp9JMZKLulb(YF{v9fh zjUbm((4z|(hiUU9L^&;jFa=y}Q~13~?Q+)Bc~Du)ByxS(6><@=*V=@deMMxonh4T2 z1QU`UAl3UVR_1Fqj>5<>L54E7Kc`bs545O`=15Sicq~BqfIJiU14=frH*I;JlSbw( z=Wi@{Q{=cG}uEDl0I9xp)F&NtFb=krF*9ajGJr#e-~cnt4ky+BA|9t zoSJBwBrN;4W3@>g+PagF0H6sL@-5pEFxfaC{<{-Y_N!mx0p(g;R}jKo){)=q_OS~K~pBCha-=1K)2XY zc^rF70C?zV`&?{JS!n_Zy3O6k#wMpk67sf($CD zz&Xi1K9rKeilLDhpZ0rGME?M13R*Ugo}^P1>`b>n07Q9TQYufiLh*j}6^3z8$EbtL zV;zTTNh7zFnvl=l2(B_z= zk%Ek#n}r^yEqHTA@!cJMw`|v5UZZ7^b8OiM8T>yg=roJO)-=ejkwTI%=ni%_aa^y2 z^#vCVX)z@x7#Kgr+O%SYyfLb^z}#%+;#3{K+Wafd#nAS!vfXSL98#k{d*OTeGpDvb zT%#GTi%p*{gd8{PSWqfDtgx_>Hyf4LkVR|hE4t+da6!#{HCk=dSKjB^MXp^BMADTe zjdv2Q#zl0RRGwB8oUcshHOlF-s+<+WXN-<3rqjV-yo^`EW=op1tgWj(EHdRsQD{Mn zBCp%7=`r87e+tO3kf8&Nb*_fQB#yZ6{{Ysnnw2-sqI$4*)ZNpGRRg!b(zG+iK>X^3 zynAo~;;n)~7&x!JtA&*CT(`4|Ib71HN~@l8?^7t`af*O3&IbpzS&IxS@;b4UX8Dgr zJv1ys#yi!xW!eE9hkwGVNAe8&R)2}SO9zGYYm4c~!U7Qw@i#aX+kv4v)l?~N%&JXB zH)j#?zv2h>PMX>!tC4kZzrHGd;(vGX=Du*8ZemX)n%MCUvo^b`++NP+No8`xn#sX- z&OciH`vrl93k@18e!gt^dX*hXxiS!djN|a65rDZonww|`9ExLlcCOA<6{*j;UB(v# z=N&6L=V@G#$*WhAh40AptgDHO9y$v1D%44|jicPpxn4*golv+th5*mCXiv^SJXI;d z9RL~W-o30lbHgi{Ka9q@1hL~B^sL*386a|NPV`~3oaU%Zy>r&Q#iW8(E7`&3TmXLW zUX|Htc0XjYxpFYZHa_EnisMpdhEP=V>sl~)ibz*vult|lCzFcyC{0?{IOe?0l_Lup zgV!FFtq<-8nh{J|nMP6mbo&Y`TlM^^K72xTmfm%+ zbeso|RoNOasaVJu1dcwnV`(7ts3SRE zKf>b3&fKa?%TLhg#76jeF1BaJzZl}0)8fXz zZzdcGREEbzDhMBd#b)T1!dc@C+j4QqtuKo&=X_l8O9BWNc;o0Qoq$wqf=)Rg*Y_6< zFZfTUemk5s^{H6&?GDB`v{brMlFhY|)k!#DdY{0LTG{aCohG$6*~ETfA9y02QTyb7Gbji8cHb#07Ir@tFOe7kO+SQ(X?RCqsgLd1SJ90fqs>F^$@M_iZ zP}mEKq}>MWk?q>Po)OU;&fQ2Q0JbuH_@-m#;Bk)iF~bwoA6kh=%y0>eRN0EHlpp^@VWX|?ECmfIS=}Fn{IJXsaL3wd+{ikaU$!2L3 zi**Wf-**F`$E`B%ZBEt9iEoJ91dpNEJLG;;y4}=gQ%i{AeaZrzy;TW0=lt{)O7(m| zZeq5!jyUx5wdS0+&4Lfg2iG5+KZO;eX1o(zT3eMWp;P7x6m&e1^`%`_;CUFfNg6^| z<;dE&&S-+d;bLLu$uxN2J~|w5aw(c^+_$3Qs*{5(35n=rQ#)N;bIExsxwk-c25;@of@pK--vcny;zq6ByPj#7L1{Nh)~B>}vJh zyV`*9IXRPYEzcO|@T~oR&ho9LoC6cK;-P-$83g06HEWe_7k5n-Y%Q*{B3ax;1MT@9 zLAi0iXp$h!<`Kp-*EI|-h&Qu&hu*u-7W_KY{3|}on`7nV;eg1+a;;{E z2=MMc!oAfb&pB$Yie6+g{pDPJDmE68jj0|9{w(yX4F$VyMNAC!1k`52-ZpH@`QW>p| z;v-T|T5HbFe!e=Zqj6i&-*773_PoO0_Q3RRaV79=G`SgyN5Z(Nd~9#*4jc* zBxN7o8K;Y~gCqbt;Lt5P6`NDo4mck5D89zs{G4R&=|Qt} zN6Rd8Al?*?xam(_fN!X6m>lf79GnLSHRr)kdhf2BE2fpQMT4}m*+C5 z$y3)o>&sRsQGtxQ?c@M!XGGN+%IPKw%Dov|jE?m(jn68zKV*gFfv#yREj3#x$sMa!##V||aC#nn>y)s&XTlz!aa-1x zPK$%hd?e|(yQAHVufJ2dx130Tim<$>!R{-b(KRrvV}HBY*7C4r81^;y*ep}U;Tlig zw%%tgXsFFTg!u%4-@RCjl{p5hsmaE1{c2d>0RI3w{L3+;QjK<{)&57JO{pT=NUIqx z+f{N&JOC@_uZtcy{{V!SRQol%X2#r*hqIpTU8lvr9t%5H(k!GOXmR`JQ^;TL{cFSI zC5a^0>0CFJ#|{3`QaMAw^9`*VgSJd&*3!lQNT~Fny z1MeRBscx=9Wml6~QpjB7pU%7-UMWTLMe21z9m?}LVo5bpM*OOI3Fp05bB?v-b2e>c zh#dZ%>XgfzkymAWfr0Z?DbCPwgZS6k&`n|2F~u!pWZi+d^Ut+r&BjkPrE!LA=i4=( zIUcp;FNjhpK1u$x!Gg*UAo|m#JQ{;>4yWF|3QgS{l@-%Qjg8I4ox&IEZDe-L1Hi^3+WZ!L~?F4t+>J(z$4WAoi|;+cW8@A9&aw%cXiVqZ+olJUV!(($eL{ z)ij+#SrhFm3;o@b9gJJp9<>Gbi6Z%aSl_&4g*m~l8(X!K8>dikrN2JaLf=%>wA68J zaU>g?C(B|v^{w7s+R|Tnq;ptb-d6NGDIg$n2>Oa!dtzi8xKYU`u&#bDh#G`v7Z5{o zfPA5oZV#?SYg+i`-tsl`w7CSVNd3ctIP?a&C4j9SmpfyR!_Vz~=T&cT?QOhpSn+}1 zu>Sx)_22kD;I*-h{`PT>ocFIdvemTNA8So5yZ{2mSeaCubtk7nYqRiW+%ub**5)H? z0;p*>U;@Vg9QUt36-r#Tlv??Gj=FW}&*74OjPxr64=RpNw@T@(&?+jPxyK#rlhE#x zVI|<^*%+a0{G{WtuD-%R*23gB?#J;Sob<2GG5BezHrMKU)FzR&WV>4+WMG~vV@zU_ zjGUieO2Llc2$Dc{?(TT4O*-Stb>4YBy{qRXc+Tghq`EV*w3sr0NH31nqaHXJ!LD;j zxiVc2&`1YRuY{>(X?qr^2wT3iVKWZ{kYlz92)1Wr7`2Nt(!Zd?xUZr zc{wF|RI1v0vwEqtY{kkB{{UK)xJ5bnwv3fE6eK$Ec&YXcjgGkW#eS`gjY;6zrK`64 z^zGMPolhbyDe6PJ3`pa!BahOxG__@MAOnNmvx)^HjCxkarKm2I;B7|Xn8mUwCNd6q zR3v`9{uTMQ7cP}dZ?c@ZTGvI_{vYrC%~K$DDN)kqi^_cljO(7@BC*0x9D`J3m& z&T-o3M`3X*5Sxk0;~s!>`d6s@In=MMbxV1z-*fayita1abUbw9@vke>qwP*1fvXl$D~7F)JTIX|O|cZpQxU zZSGYw67Lwv8Ryh+J?j(1pAoNYZQk16V;n(BD-t&m?d{v?UOGHieR44JF;U3eXut6c z`jx}WBgGjfJ0n~wdnoKHia2XE x7uH_R#?^%;kmAuC#$UjQOmE(xFnt1Dwe_Dy| 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 KBK{cNAOG3+Y*1+c diff --git a/assignments/session02/webroot/web/images/sample_1.png b/assignments/session02/webroot/web/images/sample_1.png deleted file mode 100644 index 5b2f52dff2428c82276821909e466d877ea7608b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8760 zcmeAS@N?(olHy`uVBq!ia0y~yVA%k|9Be?5*NU6Z11XkbC(jTLAgJL;=>YOM3p^r= z85p>QK$!8;-MT+OLD3S|h!W?b)Wnj^{5*w_%-mE4V|^nFeFMvP`oBR6WIzgn^V3So z6N^$A98>a>QWe}Xi&D$;i?WLqoP&*LTytY)U{GN2ba4!+nDgeAVcuZ}0T#!32mjYs z%32kxRNW4`%B}XWG2_k5*R!}88m3$RTgSi<_bR&@XgUMKAGZTcKuW=Plo}0!(Nr*+ z5k|{`(c*9@)(CI!$uZcx&*5kIVImjTu;27HbHnnTqm|ldr3S0iKnWzk*!Z?ELj!;L zxtsGCCOl%|2Iln!6UISKZKj9gb3=AH^qts{+ zjHZIoj4)ajj24H3yhhl)ot=SU&s=aN_VY;fp4}h5#UwBS9X&w}LY2iEr&qIlcs$45 z&eQy=;qzU4_I|jxXEy_b{*xh6Sr7Ww#Ha%Ye~WK4jz;5X2y{$FlPT%R6x^9ppEdL5 zJz%x>A$|v?LljN#%ic<~CMs|=DX{7B1wh0THU0t`zyBS38eT2isM znHjRqSpqxO3=9>I8(D#r!>oo;YBUILZM9|i(Ye`{;lchhIr_lVA;hl(N{yFT1_QP3 zE#raZGl2s^2YjD{T_-k}TsJ6!Xw(sdBdLzY!)QDZQEKkJ#{jH^8CyYX0f-AXhEBaSd?N0SG)@{an^LB{Ts5b?$DF diff --git a/assignments/session02/webroot/web/make_time.py b/assignments/session02/webroot/web/make_time.py deleted file mode 100644 index d3064dd2..00000000 --- a/assignments/session02/webroot/web/make_time.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python - -""" -make_time.py - -simple script that returns and HTML page with the current time -""" - -import datetime - -time_str = datetime.datetime.now().isoformat() - -html = """ - - -

The time is:

-

%s

- - -"""% time_str - -print html - - - diff --git a/assignments/session02/webroot/web/sample.txt b/assignments/session02/webroot/web/sample.txt deleted file mode 100644 index 1965c7d3..00000000 --- a/assignments/session02/webroot/web/sample.txt +++ /dev/null @@ -1,3 +0,0 @@ -This is a very simple text file. -Just to show that we can server it up. -It is three lines long. From 38ad17836f736f00b9008d60ae9549cb6ef07ee4 Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 2 Jan 2014 16:17:59 -0700 Subject: [PATCH 031/297] remove completed work from the resources directory --- resources/session02/http_server_1.py | 71 ------------------- resources/session02/http_server_2.py | 102 --------------------------- 2 files changed, 173 deletions(-) delete mode 100644 resources/session02/http_server_1.py delete mode 100644 resources/session02/http_server_2.py diff --git a/resources/session02/http_server_1.py b/resources/session02/http_server_1.py deleted file mode 100644 index 12cbfeba..00000000 --- a/resources/session02/http_server_1.py +++ /dev/null @@ -1,71 +0,0 @@ -import socket -import sys - - -def response_ok(): - """returns a basic HTTP response""" - resp = [] - resp.append("HTTP/1.1 200 OK") - resp.append("Content-Type: text/plain") - resp.append("") - resp.append("this is a pretty minimal response") - return "\r\n".join(resp) - - -def response_method_not_allowed(): - """returns a 405 Method Not Allowed response""" - resp = [] - resp.append("HTTP/1.1 405 Method Not Allowed") - resp.append("") - return "\r\n".join(resp) - - -def parse_request(request): - first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() - if method != "GET": - raise NotImplementedError("We only accept GET") - print >>sys.stderr, 'request is okay' - - -def server(): - address = ('127.0.0.1', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>sys.stderr, "making a server on %s:%s" % address - sock.bind(address) - sock.listen(1) - - try: - while True: - print >>sys.stderr, 'waiting for a connection' - conn, addr = sock.accept() # blocking - try: - print >>sys.stderr, 'connection - %s:%s' % addr - request = "" - while True: - data = conn.recv(1024) - request += data - if len(data) < 1024 or not data: - break - - try: - parse_request(request) - except NotImplementedError: - response = response_method_not_allowed() - else: - response = response_ok() - - print >>sys.stderr, 'sending response' - conn.sendall(response) - finally: - conn.close() - - except KeyboardInterrupt: - sock.close() - return - - -if __name__ == '__main__': - server() - sys.exit(0) diff --git a/resources/session02/http_server_2.py b/resources/session02/http_server_2.py deleted file mode 100644 index b7c250d5..00000000 --- a/resources/session02/http_server_2.py +++ /dev/null @@ -1,102 +0,0 @@ -import socket -import sys -import os -import mimetypes - - -def response_ok(body, mimetype): - """returns a basic HTTP response""" - resp = [] - resp.append("HTTP/1.1 200 OK") - resp.append("Content-Type: %s" % mimetype) - resp.append("") - resp.append(body) - return "\r\n".join(resp) - - -def response_method_not_allowed(): - """returns a 405 Method Not Allowed response""" - resp = [] - resp.append("HTTP/1.1 405 Method Not Allowed") - resp.append("") - return "\r\n".join(resp) - - -def response_not_found(): - """return a 404 Not Found response""" - resp = [] - resp.append("HTTP/1.1 404 Not Found") - resp.append("") - return "\r\n".join(resp) - - -def parse_request(request): - first_line = request.split("\r\n", 1)[0] - method, uri, protocol = first_line.split() - if method != "GET": - raise NotImplementedError("We only accept GET") - print >>sys.stderr, 'serving request for %s' % uri - return uri - - -def resolve_uri(uri): - """return the filesystem resources identified by 'uri'""" - home = 'webroot' # this is relative to the location of - # the server script, could be a full path - filename = os.path.join(home, uri.lstrip('/')) - if os.path.isfile(filename): - ext = os.path.splitext(filename)[1] - mimetype = mimetypes.types_map.get(ext, 'text/plain') - contents = open(filename, 'rb').read() - return contents, mimetype - elif os.path.isdir(filename): - listing = "\n".join(os.listdir(filename)) - return listing, 'text/plain' - else: - raise ValueError("Not Found") - - -def server(): - address = ('127.0.0.1', 10000) - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - print >>sys.stderr, "making a server on %s:%s" % address - sock.bind(address) - sock.listen(1) - - try: - while True: - print >>sys.stderr, 'waiting for a connection' - conn, addr = sock.accept() # blocking - try: - print >>sys.stderr, 'connection - %s:%s' % addr - request = "" - while True: - data = conn.recv(1024) - request += data - if len(data) < 1024 or not data: - break - - try: - uri = parse_request(request) - content, mimetype = resolve_uri(uri) - except NotImplementedError: - response = response_method_not_allowed() - except ValueError: - response = response_not_found() - else: - response = response_ok(content, mimetype) - - print >>sys.stderr, 'sending response' - conn.sendall(response) - finally: - conn.close() - - except KeyboardInterrupt: - sock.close() - return - - -if __name__ == '__main__': - server() - sys.exit(0) \ No newline at end of file From f553fac05cb896db1b6f3a16311bca6fbb6d8f3f Mon Sep 17 00:00:00 2001 From: cewing Date: Thu, 2 Jan 2014 16:28:51 -0700 Subject: [PATCH 032/297] add tasks.txt file for assignment clarity --- assignments/session02/tasks.txt | 79 +++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 assignments/session02/tasks.txt diff --git a/assignments/session02/tasks.txt b/assignments/session02/tasks.txt new file mode 100644 index 00000000..f7b397bd --- /dev/null +++ b/assignments/session02/tasks.txt @@ -0,0 +1,79 @@ +Session 2 Homework +================== + +Required Tasks: +--------------- + +in assignments/session02/http_server.py: + +* Update the parse_request function to return the URI it parses from the + request. + +* Update the response_ok function so that it accepts a body and mimetype + argument and properly includes these in the response it generates. + +* Write a new function resolve_uri that handles looking up resources on + disk using the URI. + + * It should take a URI as the sole argument + + * It should map the pathname represented by the URI to a filesystem + location. + + * It should have a 'home directory', and look only in that location. + + * If the URI is a directory, it should return a plain-text listing and the + mimetype ``text/plain``. + + * If the URI is a file, it should return the contents of that file and its + correct mimetype. + + * If the URI does not map to a real location, it should raise an exception + that the server can catch to return a 404 response. + +* Write a new function response_not_found that returns a 404 response if the + resource does not exist. + +When you have successfully completed these tasks as described, all the tests +in assignments/session02/tests.py will pass as written. If you have to update +the tests to get them to pass, think again about how you are implementing the +feature under test. + +To run the tests: + +* Open one terminal while in this folder and execute this command: + + $ python http_server.py + +* Open a second terminal in this same folder and execute this command: + + $ python tests.py + +Make sure to run the tests early and often during your work. Remember, TDD +means that as soon as a test passes you are finished working. + + +Optional Tasks: +--------------- + +* Update all error responses so that they return something that can be seen in + a web browser. + +* Format directory listings as HTML, so you can link to files. Update the + mimetype appropriately. + +* Add a GMT ``Date:`` header in the proper format (RFC-1123) to responses. + *hint: see email.utils.formatdate in the python standard library* + +* Add a ``Content-Length:`` header for ``OK`` responses that provides a + correct value. + +* Protect your server against errors by providing, and using, a function that + returns a ``500 Internal Server Error`` response. + +* Instead of returning the python script in ``webroot`` as plain text, execute + the file and return the results as HTML. + +If you choose to take on any of these optional tasks, try start by writing +tests in tests.py that demostrate what the task should accomplish. Then write +code that makes the tests pass. From ff5634241b4ffe1931315a38ab6425864a885e47 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 3 Jan 2014 16:15:33 -0800 Subject: [PATCH 033/297] update to latest virtualenv (1.11). This requires now that the virtualenv_support directory be present in the same location as the virtualenv.py script since it uses that location to install pip/setuptools --- resources/common/virtualenv.py | 1003 +++++++---------- .../common/virtualenv_support/__init__.py | 0 .../pip-1.5-py2.py3-none-any.whl | Bin 0 -> 956894 bytes .../setuptools-2.0.2-py2.py3-none-any.whl | Bin 0 -> 540179 bytes 4 files changed, 380 insertions(+), 623 deletions(-) create mode 100644 resources/common/virtualenv_support/__init__.py create mode 100644 resources/common/virtualenv_support/pip-1.5-py2.py3-none-any.whl create mode 100644 resources/common/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl diff --git a/resources/common/virtualenv.py b/resources/common/virtualenv.py index ccb6eec9..b3a19e44 100644 --- a/resources/common/virtualenv.py +++ b/resources/common/virtualenv.py @@ -2,10 +2,8 @@ """Create a "virtual" Python installation """ -# If you change the version here, change it in setup.py -# and docs/conf.py as well. -__version__ = "1.9.1" # following best practices -virtualenv_version = __version__ # legacy, again +__version__ = "1.11" +virtualenv_version = __version__ # legacy import base64 import sys @@ -23,10 +21,11 @@ from distutils.util import strtobool import struct import subprocess +import tarfile -if sys.version_info < (2, 5): +if sys.version_info < (2, 6): print('ERROR: %s' % sys.exc_info()[1]) - print('ERROR: this script requires Python 2.5 or greater.') + print('ERROR: this script requires Python 2.6 or greater.') sys.exit(101) try: @@ -67,6 +66,42 @@ else: expected_exe = 'python' +# Return a mapping of version -> Python executable +# Only provided for Windows, where the information in the registry is used +if not is_win: + def get_installed_pythons(): + return {} +else: + try: + import winreg + except ImportError: + import _winreg as winreg + + def get_installed_pythons(): + python_core = winreg.CreateKey(winreg.HKEY_LOCAL_MACHINE, + "Software\\Python\\PythonCore") + i = 0 + versions = [] + while True: + try: + versions.append(winreg.EnumKey(python_core, i)) + i = i + 1 + except WindowsError: + break + exes = dict() + for ver in versions: + path = winreg.QueryValue(python_core, "%s\\InstallPath" % ver) + exes[ver] = join(path, "python.exe") + + winreg.CloseKey(python_core) + + # Add the major versions + # Sort the keys, then repeatedly update the major version entry + # Last executable (i.e., highest version) wins with this approach + for ver in sorted(exes): + exes[ver[0]] = exes[ver] + + return exes REQUIRED_MODULES = ['os', 'posix', 'posixpath', 'nt', 'ntpath', 'genericpath', 'fnmatch', 'locale', 'encodings', 'codecs', @@ -95,7 +130,7 @@ 'reprlib']) if minver >= 2: REQUIRED_FILES[-1] = 'config-%s' % majver - if minver == 3: + if minver >= 3: import sysconfig platdir = sysconfig.get_config_var('PLATDIR') REQUIRED_FILES.append(platdir) @@ -250,6 +285,8 @@ #"xmlrpc", #"zipfile", ]) + if minver >= 4: + REQUIRED_MODULES.extend(['operator', '_collections_abc']) if is_pypy: # these are needed to correctly display the exceptions that may happen @@ -407,9 +444,9 @@ def mkdir(path): else: logger.info('Directory %s already exists', path) -def copyfileordir(src, dest): +def copyfileordir(src, dest, symlink=True): if os.path.isdir(src): - shutil.copytree(src, dest, True) + shutil.copytree(src, dest, symlink) else: shutil.copy2(src, dest) @@ -422,7 +459,7 @@ def copyfile(src, dest, symlink=True): logger.debug('File %s already exists', dest) return if not os.path.exists(os.path.dirname(dest)): - logger.info('Creating parent directories for %s' % os.path.dirname(dest)) + logger.info('Creating parent directories for %s', os.path.dirname(dest)) os.makedirs(os.path.dirname(dest)) if not os.path.islink(src): srcpath = os.path.abspath(src) @@ -434,10 +471,10 @@ def copyfile(src, dest, symlink=True): os.symlink(srcpath, dest) except (OSError, NotImplementedError): logger.info('Symlinking failed, copying to %s', dest) - copyfileordir(src, dest) + copyfileordir(src, dest, symlink) else: logger.info('Copying to %s', dest) - copyfileordir(src, dest) + copyfileordir(src, dest, symlink) def writefile(dest, content, overwrite=True): if not os.path.exists(dest): @@ -482,115 +519,6 @@ def _find_file(filename, dirs): return True, files[0] return False, filename -def _install_req(py_executable, unzip=False, distribute=False, - search_dirs=None, never_download=False): - - if search_dirs is None: - search_dirs = file_search_dirs() - - if not distribute: - egg_path = 'setuptools-*-py%s.egg' % sys.version[:3] - found, egg_path = _find_file(egg_path, search_dirs) - project_name = 'setuptools' - bootstrap_script = EZ_SETUP_PY - tgz_path = None - else: - # Look for a distribute egg (these are not distributed by default, - # but can be made available by the user) - egg_path = 'distribute-*-py%s.egg' % sys.version[:3] - found, egg_path = _find_file(egg_path, search_dirs) - project_name = 'distribute' - if found: - tgz_path = None - bootstrap_script = DISTRIBUTE_FROM_EGG_PY - else: - # Fall back to sdist - # NB: egg_path is not None iff tgz_path is None - # iff bootstrap_script is a generic setup script accepting - # the standard arguments. - egg_path = None - tgz_path = 'distribute-*.tar.gz' - found, tgz_path = _find_file(tgz_path, search_dirs) - bootstrap_script = DISTRIBUTE_SETUP_PY - - if is_jython and os._name == 'nt': - # Jython's .bat sys.executable can't handle a command line - # argument with newlines - fd, ez_setup = tempfile.mkstemp('.py') - os.write(fd, bootstrap_script) - os.close(fd) - cmd = [py_executable, ez_setup] - else: - cmd = [py_executable, '-c', bootstrap_script] - if unzip and egg_path: - cmd.append('--always-unzip') - env = {} - remove_from_env = ['__PYVENV_LAUNCHER__'] - if logger.stdout_level_matches(logger.DEBUG) and egg_path: - cmd.append('-v') - - old_chdir = os.getcwd() - if egg_path is not None and os.path.exists(egg_path): - logger.info('Using existing %s egg: %s' % (project_name, egg_path)) - cmd.append(egg_path) - if os.environ.get('PYTHONPATH'): - env['PYTHONPATH'] = egg_path + os.path.pathsep + os.environ['PYTHONPATH'] - else: - env['PYTHONPATH'] = egg_path - elif tgz_path is not None and os.path.exists(tgz_path): - # Found a tgz source dist, let's chdir - logger.info('Using existing %s egg: %s' % (project_name, tgz_path)) - os.chdir(os.path.dirname(tgz_path)) - # in this case, we want to be sure that PYTHONPATH is unset (not - # just empty, really unset), else CPython tries to import the - # site.py that it's in virtualenv_support - remove_from_env.append('PYTHONPATH') - elif never_download: - logger.fatal("Can't find any local distributions of %s to install " - "and --never-download is set. Either re-run virtualenv " - "without the --never-download option, or place a %s " - "distribution (%s) in one of these " - "locations: %r" % (project_name, project_name, - egg_path or tgz_path, - search_dirs)) - sys.exit(1) - elif egg_path: - logger.info('No %s egg found; downloading' % project_name) - cmd.extend(['--always-copy', '-U', project_name]) - else: - logger.info('No %s tgz found; downloading' % project_name) - logger.start_progress('Installing %s...' % project_name) - logger.indent += 2 - cwd = None - if project_name == 'distribute': - env['DONT_PATCH_SETUPTOOLS'] = 'true' - - def _filter_ez_setup(line): - return filter_ez_setup(line, project_name) - - if not os.access(os.getcwd(), os.W_OK): - cwd = tempfile.mkdtemp() - if tgz_path is not None and os.path.exists(tgz_path): - # the current working dir is hostile, let's copy the - # tarball to a temp dir - target = os.path.join(cwd, os.path.split(tgz_path)[-1]) - shutil.copy(tgz_path, target) - try: - call_subprocess(cmd, show_stdout=False, - filter_stdout=_filter_ez_setup, - extra_env=env, - remove_from_env=remove_from_env, - cwd=cwd) - finally: - logger.indent -= 2 - logger.end_progress() - if cwd is not None: - shutil.rmtree(cwd) - if os.getcwd() != old_chdir: - os.chdir(old_chdir) - if is_jython and os._name == 'nt': - os.remove(ez_setup) - def file_search_dirs(): here = os.path.dirname(os.path.abspath(__file__)) dirs = ['.', here, @@ -605,89 +533,6 @@ def file_search_dirs(): dirs.append(os.path.join(os.path.dirname(virtualenv.__file__), 'virtualenv_support')) return [d for d in dirs if os.path.isdir(d)] -def install_setuptools(py_executable, unzip=False, - search_dirs=None, never_download=False): - _install_req(py_executable, unzip, - search_dirs=search_dirs, never_download=never_download) - -def install_distribute(py_executable, unzip=False, - search_dirs=None, never_download=False): - _install_req(py_executable, unzip, distribute=True, - search_dirs=search_dirs, never_download=never_download) - -_pip_re = re.compile(r'^pip-.*(zip|tar.gz|tar.bz2|tgz|tbz)$', re.I) -def install_pip(py_executable, search_dirs=None, never_download=False): - if search_dirs is None: - search_dirs = file_search_dirs() - - filenames = [] - for dir in search_dirs: - filenames.extend([join(dir, fn) for fn in os.listdir(dir) - if _pip_re.search(fn)]) - filenames = [(os.path.basename(filename).lower(), i, filename) for i, filename in enumerate(filenames)] - filenames.sort() - filenames = [filename for basename, i, filename in filenames] - if not filenames: - filename = 'pip' - else: - filename = filenames[-1] - easy_install_script = 'easy_install' - if is_win: - easy_install_script = 'easy_install-script.py' - # There's two subtle issues here when invoking easy_install. - # 1. On unix-like systems the easy_install script can *only* be executed - # directly if its full filesystem path is no longer than 78 characters. - # 2. A work around to [1] is to use the `python path/to/easy_install foo` - # pattern, but that breaks if the path contains non-ASCII characters, as - # you can't put the file encoding declaration before the shebang line. - # The solution is to use Python's -x flag to skip the first line of the - # script (and any ASCII decoding errors that may have occurred in that line) - cmd = [py_executable, '-x', join(os.path.dirname(py_executable), easy_install_script), filename] - # jython and pypy don't yet support -x - if is_jython or is_pypy: - cmd.remove('-x') - if filename == 'pip': - if never_download: - logger.fatal("Can't find any local distributions of pip to install " - "and --never-download is set. Either re-run virtualenv " - "without the --never-download option, or place a pip " - "source distribution (zip/tar.gz/tar.bz2) in one of these " - "locations: %r" % search_dirs) - sys.exit(1) - logger.info('Installing pip from network...') - else: - logger.info('Installing existing %s distribution: %s' % ( - os.path.basename(filename), filename)) - logger.start_progress('Installing pip...') - logger.indent += 2 - def _filter_setup(line): - return filter_ez_setup(line, 'pip') - try: - call_subprocess(cmd, show_stdout=False, - filter_stdout=_filter_setup) - finally: - logger.indent -= 2 - logger.end_progress() - -def filter_ez_setup(line, project_name='setuptools'): - if not line.strip(): - return Logger.DEBUG - if project_name == 'distribute': - for prefix in ('Extracting', 'Now working', 'Installing', 'Before', - 'Scanning', 'Setuptools', 'Egg', 'Already', - 'running', 'writing', 'reading', 'installing', - 'creating', 'copying', 'byte-compiling', 'removing', - 'Processing'): - if line.startswith(prefix): - return Logger.DEBUG - return Logger.DEBUG - for prefix in ['Reading ', 'Best match', 'Processing setuptools', - 'Copying setuptools', 'Adding setuptools', - 'Installing ', 'Installed ']: - if line.startswith(prefix): - return Logger.DEBUG - return Logger.INFO - class UpdatingDefaultsHelpFormatter(optparse.IndentedHelpFormatter): """ @@ -703,7 +548,7 @@ def expand_default(self, option): class ConfigOptionParser(optparse.OptionParser): """ - Custom option parser which updates its defaults by by checking the + Custom option parser which updates its defaults by checking the configuration files and environmental variables """ def __init__(self, *args, **kwargs): @@ -803,14 +648,14 @@ def main(): action='count', dest='verbose', default=0, - help="Increase verbosity") + help="Increase verbosity.") parser.add_option( '-q', '--quiet', action='count', dest='quiet', default=0, - help='Decrease verbosity') + help='Decrease verbosity.') parser.add_option( '-p', '--python', @@ -824,49 +669,47 @@ def main(): '--clear', dest='clear', action='store_true', - help="Clear out the non-root install and start from scratch") + help="Clear out the non-root install and start from scratch.") parser.set_defaults(system_site_packages=False) parser.add_option( '--no-site-packages', dest='system_site_packages', action='store_false', - help="Don't give access to the global site-packages dir to the " - "virtual environment (default)") + help="DEPRECATED. Retained only for backward compatibility. " + "Not having access to global site-packages is now the default behavior.") parser.add_option( '--system-site-packages', dest='system_site_packages', action='store_true', - help="Give access to the global site-packages dir to the " - "virtual environment") + help="Give the virtual environment access to the global site-packages.") + + parser.add_option( + '--always-copy', + dest='symlink', + action='store_false', + default=True, + help="Always copy files rather than symlinking.") parser.add_option( '--unzip-setuptools', dest='unzip_setuptools', action='store_true', - help="Unzip Setuptools or Distribute when installing it") + help="Unzip Setuptools when installing it.") parser.add_option( '--relocatable', dest='relocatable', action='store_true', - help='Make an EXISTING virtualenv environment relocatable. ' - 'This fixes up scripts and makes all .pth files relative') - - parser.add_option( - '--distribute', '--use-distribute', # the second option is for legacy reasons here. Hi Kenneth! - dest='use_distribute', - action='store_true', - help='Use Distribute instead of Setuptools. Set environ variable ' - 'VIRTUALENV_DISTRIBUTE to make it the default ') + help='Make an EXISTING virtualenv environment relocatable. ' + 'This fixes up scripts and makes all .pth files relative.') parser.add_option( '--no-setuptools', dest='no_setuptools', action='store_true', - help='Do not install distribute/setuptools (or pip) ' - 'in the new virtualenv.') + help='Do not install setuptools (or pip) in the new virtualenv.') parser.add_option( '--no-pip', @@ -874,36 +717,40 @@ def main(): action='store_true', help='Do not install pip in the new virtualenv.') - parser.add_option( - '--setuptools', - dest='use_distribute', - action='store_false', - help='Use Setuptools instead of Distribute. Set environ variable ' - 'VIRTUALENV_SETUPTOOLS to make it the default ') - - # Set this to True to use distribute by default, even in Python 2. - parser.set_defaults(use_distribute=False) - default_search_dirs = file_search_dirs() parser.add_option( '--extra-search-dir', dest="search_dirs", action="append", + metavar='DIR', default=default_search_dirs, - help="Directory to look for setuptools/distribute/pip distributions in. " - "You can add any number of additional --extra-search-dir paths.") + help="Directory to look for setuptools/pip distributions in. " + "This option can be used multiple times.") parser.add_option( '--never-download', dest="never_download", action="store_true", - help="Never download anything from the network. Instead, virtualenv will fail " - "if local distributions of setuptools/distribute/pip are not present.") + default=True, + help="DEPRECATED. Retained only for backward compatibility. This option has no effect. " + "Virtualenv never downloads pip or setuptools.") parser.add_option( '--prompt', dest='prompt', - help='Provides an alternative prompt prefix for this environment') + help='Provides an alternative prompt prefix for this environment.') + + parser.add_option( + '--setuptools', + dest='setuptools', + action='store_true', + help="DEPRECATED. Retained only for backward compatibility. This option has no effect.") + + parser.add_option( + '--distribute', + dest='distribute', + action='store_true', + help="DEPRECATED. Retained only for backward compatibility. This option has no effect.") if 'extend_parser' in globals(): extend_parser(parser) @@ -932,16 +779,6 @@ def main(): popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env) raise SystemExit(popen.wait()) - # Force --distribute on Python 3, since setuptools is not available. - if majver > 2: - options.use_distribute = True - - if os.environ.get('PYTHONDONTWRITEBYTECODE') and not options.use_distribute: - print( - "The PYTHONDONTWRITEBYTECODE environment variable is " - "not compatible with setuptools. Either use --distribute " - "or unset PYTHONDONTWRITEBYTECODE.") - sys.exit(2) if not args: print('You must provide a DEST_DIR') parser.print_help() @@ -967,16 +804,20 @@ def main(): make_environment_relocatable(home_dir) return + if not options.never_download: + logger.warn('The --never-download option is for backward compatibility only.') + logger.warn('Setting it to false is no longer supported, and will be ignored.') + create_environment(home_dir, site_packages=options.system_site_packages, clear=options.clear, unzip_setuptools=options.unzip_setuptools, - use_distribute=options.use_distribute, prompt=options.prompt, search_dirs=options.search_dirs, - never_download=options.never_download, + never_download=True, no_setuptools=options.no_setuptools, - no_pip=options.no_pip) + no_pip=options.no_pip, + symlink=options.symlink) if 'after_install' in globals(): after_install(options, home_dir) @@ -1060,11 +901,69 @@ def call_subprocess(cmd, show_stdout=True, "Command %s had error code %s" % (cmd_desc, proc.returncode)) +def filter_install_output(line): + if line.strip().startswith('running'): + return Logger.INFO + return Logger.DEBUG + +def find_wheels(projects, search_dirs): + """Find wheels from which we can import PROJECTS. + + Scan through SEARCH_DIRS for a wheel for each PROJECT in turn. Return + a list of the first wheel found for each PROJECT + """ + + wheels = [] + + # Look through SEARCH_DIRS for the first suitable wheel. Don't bother + # about version checking here, as this is simply to get something we can + # then use to install the correct version. + for project in projects: + for dirname in search_dirs: + # This relies on only having "universal" wheels available. + # The pattern could be tightened to require -py2.py3-none-any.whl. + files = glob.glob(os.path.join(dirname, project + '-*.whl')) + if files: + wheels.append(os.path.abspath(files[0])) + break + else: + # We're out of luck, so quit with a suitable error + logger.fatal('Cannot find a wheel for %s' % (project,)) + + return wheels + +def install_wheel(project_names, py_executable, search_dirs=None): + if search_dirs is None: + search_dirs = file_search_dirs() + + wheels = find_wheels(['setuptools', 'pip'], search_dirs) + pythonpath = os.pathsep.join(wheels) + findlinks = ' '.join(search_dirs) + + cmd = [ + py_executable, '-c', + 'import sys, pip; pip.main(["install"] + sys.argv[1:])', + ] + project_names + logger.start_progress('Installing %s...' % (', '.join(project_names))) + logger.indent += 2 + try: + call_subprocess(cmd, show_stdout=False, + extra_env = { + 'PYTHONPATH': pythonpath, + 'PIP_FIND_LINKS': findlinks, + 'PIP_USE_WHEEL': '1', + 'PIP_PRE': '1', + 'PIP_NO_INDEX': '1' + } + ) + finally: + logger.indent -= 2 + logger.end_progress() def create_environment(home_dir, site_packages=False, clear=False, - unzip_setuptools=False, use_distribute=False, + unzip_setuptools=False, prompt=None, search_dirs=None, never_download=False, - no_setuptools=False, no_pip=False): + no_setuptools=False, no_pip=False, symlink=True): """ Creates a new environment in ``home_dir``. @@ -1078,20 +977,15 @@ def create_environment(home_dir, site_packages=False, clear=False, py_executable = os.path.abspath(install_python( home_dir, lib_dir, inc_dir, bin_dir, - site_packages=site_packages, clear=clear)) + site_packages=site_packages, clear=clear, symlink=symlink)) install_distutils(home_dir) if not no_setuptools: - if use_distribute: - install_distribute(py_executable, unzip=unzip_setuptools, - search_dirs=search_dirs, never_download=never_download) - else: - install_setuptools(py_executable, unzip=unzip_setuptools, - search_dirs=search_dirs, never_download=never_download) - + to_install = ['setuptools'] if not no_pip: - install_pip(py_executable, search_dirs=search_dirs, never_download=never_download) + to_install.append('pip') + install_wheel(to_install, py_executable, search_dirs) install_activate(home_dir, bin_dir, prompt) @@ -1184,7 +1078,7 @@ def change_prefix(filename, dst_prefix): assert False, "Filename %s does not start with any of these prefixes: %s" % \ (filename, prefixes) -def copy_required_modules(dst_prefix): +def copy_required_modules(dst_prefix, symlink): import imp # If we are running under -p, we need to remove the current # directory from sys.path temporarily here, so that we @@ -1211,13 +1105,18 @@ def copy_required_modules(dst_prefix): if modname == 'readline' and sys.platform == 'darwin' and not ( is_pypy or filename.endswith(join('lib-dynload', 'readline.so'))): dst_filename = join(dst_prefix, 'lib', 'python%s' % sys.version[:3], 'readline.so') + elif modname == 'readline' and sys.platform == 'win32': + # special-case for Windows, where readline is not a + # standard module, though it may have been installed in + # site-packages by a third-party package + pass else: dst_filename = change_prefix(filename, dst_prefix) - copyfile(filename, dst_filename) + copyfile(filename, dst_filename, symlink) if filename.endswith('.pyc'): pyfile = filename[:-1] if os.path.exists(pyfile): - copyfile(pyfile, dst_filename[:-1]) + copyfile(pyfile, dst_filename[:-1], symlink) finally: sys.path = _prev_sys_path @@ -1232,7 +1131,7 @@ def subst_path(prefix_path, prefix, home_dir): return prefix_path.replace(prefix, home_dir, 1) -def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): +def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear, symlink=True): """Install just the base environment, no distutils patches etc""" if sys.executable.startswith(bin_dir): print('Please use the *system* python to run this script') @@ -1253,7 +1152,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): else: prefix = sys.prefix mkdir(lib_dir) - fix_lib64(lib_dir) + fix_lib64(lib_dir, symlink) stdlib_dirs = [os.path.dirname(os.__file__)] if is_win: stdlib_dirs.append(join(os.path.dirname(stdlib_dirs[0]), 'DLLs')) @@ -1272,9 +1171,9 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): for fn in os.listdir(stdlib_dir): bn = os.path.splitext(fn)[0] if fn != 'site-packages' and bn in REQUIRED_FILES: - copyfile(join(stdlib_dir, fn), join(lib_dir, fn)) + copyfile(join(stdlib_dir, fn), join(lib_dir, fn), symlink) # ...and modules - copy_required_modules(home_dir) + copy_required_modules(home_dir, symlink) finally: logger.indent -= 2 mkdir(join(lib_dir, 'site-packages')) @@ -1297,7 +1196,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): else: stdinc_dir = join(prefix, 'include', py_version + abiflags) if os.path.exists(stdinc_dir): - copyfile(stdinc_dir, inc_dir) + copyfile(stdinc_dir, inc_dir, symlink) else: logger.debug('No include dir %s' % stdinc_dir) @@ -1314,7 +1213,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): # (traversing virtualenvs), whereas the platinc_dir is relative to # the inner virtualenv and ignores the prefix argument. # This seems more evolved than designed. - copyfile(platinc_dir, platinc_dest) + copyfile(platinc_dir, platinc_dest, symlink) # pypy never uses exec_prefix, just ignore it if sys.exec_prefix != prefix and not is_pypy: @@ -1325,7 +1224,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): else: exec_dir = join(sys.exec_prefix, 'lib', py_version) for fn in os.listdir(exec_dir): - copyfile(join(exec_dir, fn), join(lib_dir, fn)) + copyfile(join(exec_dir, fn), join(lib_dir, fn), symlink) if is_jython: # Jython has either jython-dev.jar and javalib/ dir, or just @@ -1333,7 +1232,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): for name in 'jython-dev.jar', 'javalib', 'jython.jar': src = join(prefix, name) if os.path.exists(src): - copyfile(src, join(home_dir, name)) + copyfile(src, join(home_dir, name), symlink) # XXX: registry should always exist after Jython 2.5rc1 src = join(prefix, 'registry') if os.path.exists(src): @@ -1409,19 +1308,19 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): if sys.platform in ('win32', 'cygwin'): python_executable += '.exe' logger.info('Also created executable %s' % python_executable) - copyfile(py_executable, python_executable) + copyfile(py_executable, python_executable, symlink) if is_win: for name in 'libexpat.dll', 'libpypy.dll', 'libpypy-c.dll', 'libeay32.dll', 'ssleay32.dll', 'sqlite.dll': src = join(prefix, name) if os.path.exists(src): - copyfile(src, join(bin_dir, name)) + copyfile(src, join(bin_dir, name), symlink) if os.path.splitext(os.path.basename(py_executable))[0] != expected_exe: secondary_exe = os.path.join(os.path.dirname(py_executable), expected_exe) py_executable_ext = os.path.splitext(py_executable)[1] - if py_executable_ext == '.exe': + if py_executable_ext.lower() == '.exe': # python2.4 gives an extension of '.4' :P secondary_exe += py_executable_ext if os.path.exists(secondary_exe): @@ -1455,7 +1354,8 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): os.unlink(virtual_lib) copyfile( os.path.join(prefix, 'Python'), - virtual_lib) + virtual_lib, + symlink) # And then change the install_name of the copied python executable try: @@ -1496,7 +1396,10 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): full_pth = join(bin_dir, pth) if os.path.exists(full_pth): os.unlink(full_pth) - os.symlink(py_executable_base, full_pth) + if symlink: + os.symlink(py_executable_base, full_pth) + else: + copyfile(py_executable, full_pth, symlink) if is_win and ' ' in py_executable: # There's a bug with subprocess on Windows when using a first @@ -1549,7 +1452,7 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear): 'your %s file.' % pydistutils) ## FIXME: really this should be calculated earlier - fix_local_scheme(home_dir) + fix_local_scheme(home_dir, symlink) if site_packages: if os.path.exists(site_packages_filename): @@ -1610,7 +1513,7 @@ def install_distutils(home_dir): writefile(os.path.join(distutils_path, '__init__.py'), DISTUTILS_INIT) writefile(os.path.join(distutils_path, 'distutils.cfg'), DISTUTILS_CFG, overwrite=False) -def fix_local_scheme(home_dir): +def fix_local_scheme(home_dir, symlink=True): """ Platforms that use the "posix_local" install scheme (like Ubuntu with Python 2.7) need to be given an additional "local" location, sigh. @@ -1627,10 +1530,10 @@ def fix_local_scheme(home_dir): for subdir_name in os.listdir(home_dir): if subdir_name == 'local': continue - os.symlink(os.path.abspath(os.path.join(home_dir, subdir_name)), \ - os.path.join(local_path, subdir_name)) + copyfile(os.path.abspath(os.path.join(home_dir, subdir_name)), \ + os.path.join(local_path, subdir_name), symlink) -def fix_lib64(lib_dir): +def fix_lib64(lib_dir, symlink=True): """ Some platforms (particularly Gentoo on x64) put things in lib64/pythonX.Y instead of lib/pythonX.Y. If this is such a platform we'll just create a @@ -1638,7 +1541,14 @@ def fix_lib64(lib_dir): """ if [p for p in distutils.sysconfig.get_config_vars().values() if isinstance(p, basestring) and 'lib64' in p]: + # PyPy's library path scheme is not affected by this. + # Return early or we will die on the following assert. + if is_pypy: + logger.debug('PyPy detected, skipping lib64 symlinking') + return + logger.debug('This system uses lib64; symlinking lib64 to lib') + assert os.path.basename(lib_dir) == 'python%s' % sys.version[:3], ( "Unexpected python lib dir: %r" % lib_dir) lib_parent = os.path.dirname(lib_dir) @@ -1649,12 +1559,19 @@ def fix_lib64(lib_dir): "Unexpected parent dir: %r" % lib_parent) if os.path.lexists(lib64_link): return - os.symlink('lib', lib64_link) + cp_or_ln = (os.symlink if symlink else copyfile) + cp_or_ln('lib', lib64_link) def resolve_interpreter(exe): """ If the executable given isn't an absolute path, search $PATH for the interpreter """ + # If the "executable" is a version number, get the installed executable for + # that version + python_versions = get_installed_pythons() + if exe in python_versions: + exe = python_versions[exe] + if os.path.abspath(exe) != exe: paths = os.environ.get('PATH', '').split(os.pathsep) for path in paths: @@ -1687,24 +1604,28 @@ def make_environment_relocatable(home_dir): logger.fatal( 'The environment doesn\'t have a file %s -- please re-run virtualenv ' 'on this environment to update it' % activate_this) - fixup_scripts(home_dir) + fixup_scripts(home_dir, bin_dir) fixup_pth_and_egg_link(home_dir) ## FIXME: need to fix up distutils.cfg OK_ABS_SCRIPTS = ['python', 'python%s' % sys.version[:3], - 'activate', 'activate.bat', 'activate_this.py'] + 'activate', 'activate.bat', 'activate_this.py', + 'activate.fish', 'activate.csh'] -def fixup_scripts(home_dir): - # This is what we expect at the top of scripts: - shebang = '#!%s/bin/python' % os.path.normcase(os.path.abspath(home_dir)) - # This is what we'll put: - new_shebang = '#!/usr/bin/env python%s' % sys.version[:3] +def fixup_scripts(home_dir, bin_dir): if is_win: - bin_suffix = 'Scripts' + new_shebang_args = ( + '%s /c' % os.path.normcase(os.environ.get('COMSPEC', 'cmd.exe')), + '', '.exe') else: - bin_suffix = 'bin' - bin_dir = os.path.join(home_dir, bin_suffix) - home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir) + new_shebang_args = ('/usr/bin/env', sys.version[:3], '') + + # This is what we expect at the top of scripts: + shebang = '#!%s' % os.path.normcase(os.path.join( + os.path.abspath(bin_dir), 'python%s' % new_shebang_args[2])) + # This is what we'll put: + new_shebang = '#!%s python%s%s' % new_shebang_args + for filename in os.listdir(bin_dir): filename = os.path.join(bin_dir, filename) if not os.path.isfile(filename): @@ -1723,7 +1644,11 @@ def fixup_scripts(home_dir): if not lines: logger.warn('Script %s is an empty file' % filename) continue - if not lines[0].strip().startswith(shebang): + + old_shebang = lines[0].strip() + old_shebang = old_shebang[0:2] + os.path.normcase(old_shebang[2:]) + + if not old_shebang.startswith(shebang): if os.path.basename(filename) in OK_ABS_SCRIPTS: logger.debug('Cannot make script %s relative' % filename) elif lines[0].strip() == new_shebang: @@ -1740,7 +1665,7 @@ def fixup_scripts(home_dir): def relative_script(lines): "Return a script that'll work in a relocatable environment." - activate = "import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); execfile(activate_this, dict(__file__=activate_this)); del os, activate_this" + activate = "import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); exec(compile(open(activate_this).read(), activate_this, 'exec'), dict(__file__=activate_this)); del os, activate_this" # Find the last future statement in the script. If we insert the activation # line before a future statement, Python will raise a SyntaxError. activate_at = None @@ -1915,316 +1840,147 @@ def convert(s): ##file site.py SITE_PY = convert(""" -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 -UM3ckC/Q8aP8VLy+mjYY5MxOtAdgjULwf2RtvCc= -""") - -##file ez_setup.py -EZ_SETUP_PY = convert(""" -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 -qL7+C1AkCcw= -""") - -##file distribute_from_egg.py -DISTRIBUTE_FROM_EGG_PY = convert(""" -eJw9j8tqAzEMRfcG/4MgmxQyptkGusonZBmGoGTUGYFfWPKE6dfXTkM3gqt7rh47OKP3NMF3SQFW -LlrRU1zhybpAxoKBlIqcrNnBdRjQP3GTocYfzmNrrCPQPN9iwzpxSQfQhWBi0cL3qtRtYIG/4Mv0 -KApY5hooqrOGQ05FQTaxptF9Fnx16Rq0XofjaE1XGXVxHIWK7j8P8EY/rHndLqQ1a0pe3COFgHFy -hLLdWkDbi/DeEpCjNb3u/zccT2Ob8gtnwVyI -""") - -##file distribute_setup.py -DISTRIBUTE_SETUP_PY = convert(""" -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 +Qc7sRHsA1igE/wfVIOdx """) ##file activate.sh @@ -2248,21 +2004,22 @@ def convert(s): ##file activate.fish ACTIVATE_FISH = convert(""" -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 +32XS1ITj/qLjN72ob0hc5C9bzw8MhfmL """) ##file activate.csh diff --git a/resources/common/virtualenv_support/__init__.py b/resources/common/virtualenv_support/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/resources/common/virtualenv_support/pip-1.5-py2.py3-none-any.whl b/resources/common/virtualenv_support/pip-1.5-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..9bd4316f68e737c100535d8343f735fe4faa9b4c GIT binary patch literal 956894 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

38?_eRwAtK&ouYjrLOxTO7dsDrX~fapbB_ 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�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 literal 0 HcmV?d00001 diff --git a/resources/common/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl b/resources/common/virtualenv_support/setuptools-2.0.2-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..267eeff2387c02dbf6b1450024b1c5101c307056 GIT binary patch literal 540179 zcmV(`K-0faO9KQH000080Qp;uLtIa~MQH#40Db@f01p5F0A*owd0%O6b97;BY%Xwl zEzB_vgFp;K(SA>1xq&nsAQEMYv|M0hkwsZ)Z6nqcxjhgu)im!j^RyeqH`7bn?` -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/resources/session08/mysite/myblog/templates/list.html b/resources/session08/mysite/myblog/templates/list.html index b2299169..c51702ff 100644 --- a/resources/session08/mysite/myblog/templates/list.html +++ b/resources/session08/mysite/myblog/templates/list.html @@ -2,12 +2,11 @@ {% block content %}

Recent Posts

- + + {% comment %} here is where the query happens {% endcomment %} {% for post in posts %}
-

- {{ post }} -

+

{{ post }}

@@ -21,4 +20,4 @@

{% endfor %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/resources/session08/mysite/myblog/tests.py b/resources/session08/mysite/myblog/tests.py index a51abbe7..5671bfda 100644 --- a/resources/session08/mysite/myblog/tests.py +++ b/resources/session08/mysite/myblog/tests.py @@ -1,12 +1,9 @@ import datetime from django.test import TestCase from django.contrib.auth.models import User -from django.contrib.admin.sites import AdminSite from django.utils.timezone import utc - from myblog.models import Post from myblog.models import Category -from myblog.admin import PostAdmin class PostTestCase(TestCase): @@ -21,19 +18,6 @@ def test_unicode(self): actual = unicode(p1) self.assertEqual(expected, actual) - def test_author_name(self): - for author in User.objects.all(): - fn, ln, un = (author.first_name, author.last_name, - author.username) - author_name = Post(author=author).author_name() - if not (fn and ln): - self.assertEqual(author_name, un) - else: - if fn: - self.assertTrue(fn in author_name) - if ln: - self.assertTrue(ln in author_name) - class CategoryTestCase(TestCase): @@ -44,36 +28,14 @@ def test_unicode(self): self.assertEqual(expected, actual) -class PostAdminTestCase(TestCase): - fixtures = ['myblog_test_fixture.json', ] - - def setUp(self): - admin = AdminSite() - self.ma = PostAdmin(Post, admin) - for author in User.objects.all(): - title = "%s's title" % author.username - post = Post(title=title, author=author) - post.save() - self.client.login(username='admin', password='secret') - - def test_author_link(self): - expected_link_path = '/admin/auth/user/%s' - for post in Post.objects.all(): - expected = expected_link_path % post.author.pk - actual = self.ma.author_link(post) - self.assertTrue(expected in actual) - - class FrontEndTestCase(TestCase): """test views provided in the front-end""" fixtures = ['myblog_test_fixture.json', ] - + def setUp(self): self.now = datetime.datetime.utcnow().replace(tzinfo=utc) self.timedelta = datetime.timedelta(15) author = User.objects.get(pk=1) - self.category = Category(name='A Category') - self.category.save() for count in range(1,11): post = Post(title="Post %d Title" % count, text="foo", @@ -83,9 +45,6 @@ def setUp(self): pubdate = self.now - self.timedelta * count post.published_date = pubdate post.save() - if bool(count & 1): - # put odd items in category: - self.category.posts.add(post) def test_list_only_published(self): resp = self.client.get('/') diff --git a/resources/session08/mysite/myblog/urls.py b/resources/session08/mysite/myblog/urls.py index 3c72e6bc..8b97b5dc 100644 --- a/resources/session08/mysite/myblog/urls.py +++ b/resources/session08/mysite/myblog/urls.py @@ -5,10 +5,7 @@ url(r'^$', 'list_view', name="blog_index"), - url(r'^posts/(?P\d+)/$', + url(r'^posts/(\d+)/$', 'detail_view', name="blog_detail"), - url(r'^add/$', - 'add_view', - name="add_post"), ) diff --git a/resources/session08/mysite/myblog/views.py b/resources/session08/mysite/myblog/views.py index 3768595e..c3f48eb0 100644 --- a/resources/session08/mysite/myblog/views.py +++ b/resources/session08/mysite/myblog/views.py @@ -1,12 +1,7 @@ -from django.http import HttpResponse, Http404 -from django.http import HttpResponseRedirect from django.shortcuts import render -from django.core.exceptions import PermissionDenied -from django.core.urlresolvers import reverse -from django.contrib import messages - +from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django.template import RequestContext, loader from myblog.models import Post -from myblog.forms import PostForm def stub_view(request, *args, **kwargs): @@ -23,8 +18,12 @@ def stub_view(request, *args, **kwargs): def list_view(request): published = Post.objects.exclude(published_date__exact=None) posts = published.order_by('-published_date') - context = {'posts': posts} - return render(request, 'list.html', context) + template = loader.get_template('list.html') + context = RequestContext(request, { + 'posts': posts, + }) + body = template.render(context) + return HttpResponse(body, content_type="text/html") def detail_view(request, post_id): @@ -35,24 +34,3 @@ def detail_view(request, post_id): raise Http404 context = {'post': post} return render(request, 'detail.html', context) - - -def add_view(request): - user = request.user - if not user.is_authenticated: - raise PermissionDenied - if request.method == 'POST': - form = PostForm(request.POST) - if form.is_valid: - post = form.save() - msg = "post '%s' saved" % post - messages.add_message(request, messages.INFO, msg) - return HttpResponseRedirect(reverse('blog_index')) - else: - messages.add_message("please fix the errors below") - else: - initial = {'author': user} - form = PostForm(initial=initial) - - context = {'form': form} - return render(request, 'add.html', context) diff --git a/resources/session08/mysite/mysite/settings.py b/resources/session08/mysite/mysite/settings.py index 8c2a28a9..e9a98f3c 100644 --- a/resources/session08/mysite/mysite/settings.py +++ b/resources/session08/mysite/mysite/settings.py @@ -1,162 +1,91 @@ -# Django settings for mysite project. +""" +Django settings for mysite project. -DEBUG = True -TEMPLATE_DEBUG = DEBUG +For more information on this file, see +https://docs.djangoproject.com/en/1.6/topics/settings/ -ADMINS = ( - # ('Your Name', 'your_email@example.com'), -) +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.6/ref/settings/ +""" -MANAGERS = ADMINS +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os +BASE_DIR = os.path.dirname(os.path.dirname(__file__)) -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': 'mysite.db', - # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', - 'HOST': '', - 'PORT': '', - } -} -# Hosts/domain names that are valid for this site; required if DEBUG is False -# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts -ALLOWED_HOSTS = [] +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# In a Windows environment this must be set to your system time zone. -TIME_ZONE = 'America/Chicago' +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'izjnm)3w#gc)za-gnc0vwayf45ucd1p59w=_ia74h^q7z2j@p8' -# Language code for this installation. All choices can be found here: -# http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'en-us' - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True - -# If you set this to False, Django will not format dates, numbers and -# calendars according to the current locale. -USE_L10N = True - -# If you set this to False, Django will not use timezone-aware datetimes. -USE_TZ = True - -# Absolute filesystem path to the directory that will hold user-uploaded files. -# Example: "/var/www/example.com/media/" -MEDIA_ROOT = '' - -# URL that handles the media served from MEDIA_ROOT. Make sure to use a -# trailing slash. -# Examples: "http://example.com/media/", "http://media.example.com/" -MEDIA_URL = '' - -# Absolute path to the directory static files should be collected to. -# Don't put anything in this directory yourself; store your static files -# in apps' "static/" subdirectories and in STATICFILES_DIRS. -# Example: "/var/www/example.com/static/" -STATIC_ROOT = '' +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True -# URL prefix for static files. -# Example: "http://example.com/static/", "http://static.example.com/" -STATIC_URL = '/static/' +TEMPLATE_DEBUG = True -# Additional locations of static files -STATICFILES_DIRS = ( - # Put strings here, like "/home/html/static" or "C:/www/django/static". - # Always use forward slashes, even on Windows. - # Don't forget to use absolute paths, not relative paths. -) +ALLOWED_HOSTS = [] -# List of finder classes that know how to find static files in -# various locations. -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', -) -# Make this unique, and don't share it with anybody. -SECRET_KEY = '(g!gi6orza2nez)tf-xj_g%5g3!+pmdhs15xjgat)0g!10qku*' +# Application definition -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', -# 'django.template.loaders.eggs.Loader', +INSTALLED_APPS = ( + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'south', + 'myblog', ) MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', - # Uncomment the next line for simple clickjacking protection: - # 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) ROOT_URLCONF = 'mysite.urls' -# Python dotted path to the WSGI application used by Django's runserver. WSGI_APPLICATION = 'mysite.wsgi.application' -TEMPLATE_DIRS = ( - # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". - # Always use forward slashes, even on Windows. - # Don't forget to use absolute paths, not relative paths. - '/Users/cewing/projects/training/uw_pce/testme/training.python_web/resources/session08/mysite/mysite/templates' -) -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - # Uncomment the next line to enable the admin: - 'django.contrib.admin', - # Uncomment the next line to enable admin documentation: - # 'django.contrib.admindocs', - 'myblog', -) +# Database +# https://docs.djangoproject.com/en/1.6/ref/settings/#databases -# A sample logging configuration. The only tangible logging -# performed by this configuration is to send an email to -# the site admins on every HTTP 500 error when DEBUG=False. -# See http://docs.djangoproject.com/en/dev/topics/logging for -# more details on how to customize your logging configuration. -LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } - }, - 'handlers': { - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' - } - }, - 'loggers': { - 'django.request': { - 'handlers': ['mail_admins'], - 'level': 'ERROR', - 'propagate': True, - }, +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'mysite.db', } } +# Internationalization +# https://docs.djangoproject.com/en/1.6/topics/i18n/ +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.6/howto/static-files/ + +STATIC_URL = '/static/' + +TEMPLATE_DIRS = ( + '/Users/cewing/projects/training/uw_pce/testme/mysite/mysite/templates', +) LOGIN_URL = '/login/' -LOGIN_REDIRECT_URL = '/' \ No newline at end of file +LOGIN_REDIRECT_URL = '/' + diff --git a/resources/session08/mysite/mysite/templates/base.html b/resources/session08/mysite/mysite/templates/base.html index 5168b320..61300646 100644 --- a/resources/session08/mysite/mysite/templates/base.html +++ b/resources/session08/mysite/mysite/templates/base.html @@ -8,22 +8,15 @@ +

this is my user: {{user}}

- {% if messages %} -
- {% for message in messages %} -

{{ message }}

- {% endfor %} -
- {% endif %}
{% block content %} [content will go here] @@ -31,4 +24,4 @@
- \ No newline at end of file + diff --git a/resources/session08/mysite/mysite/templates/login.html b/resources/session08/mysite/mysite/templates/login.html index e1a56ee8..1566d0f7 100644 --- a/resources/session08/mysite/mysite/templates/login.html +++ b/resources/session08/mysite/mysite/templates/login.html @@ -6,4 +6,4 @@

My Blog Login

{{ form.as_p }}

-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/resources/session08/mysite/mysite/urls.py b/resources/session08/mysite/mysite/urls.py index f3f985db..9c67dfdb 100644 --- a/resources/session08/mysite/mysite/urls.py +++ b/resources/session08/mysite/mysite/urls.py @@ -1,11 +1,14 @@ from django.conf.urls import patterns, include, url -# Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', + # Examples: + # url(r'^$', 'mysite.views.home', name='home'), + # url(r'^blog/', include('blog.urls')), url(r'^', include('myblog.urls')), + url(r'^admin/', include(admin.site.urls)), url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}, @@ -14,13 +17,4 @@ 'django.contrib.auth.views.logout', {'next_page': '/'}, name="logout"), - # Examples: - # url(r'^$', 'mysite.views.home', name='home'), - # url(r'^mysite/', include('mysite.foo.urls')), - - # Uncomment the admin/doc line below to enable admin documentation: - # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), - - # Uncomment the next line to enable the admin: - url(r'^admin/', include(admin.site.urls)), ) diff --git a/resources/session08/mysite/mysite/wsgi.py b/resources/session08/mysite/mysite/wsgi.py index 34e900eb..10ef32d9 100644 --- a/resources/session08/mysite/mysite/wsgi.py +++ b/resources/session08/mysite/mysite/wsgi.py @@ -1,32 +1,14 @@ """ WSGI config for mysite project. -This module contains the WSGI application used by Django's development server -and any production WSGI deployments. It should expose a module-level variable -named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover -this application via the ``WSGI_APPLICATION`` setting. - -Usually you will have the standard Django WSGI application here, but it also -might make sense to replace the whole Django WSGI application with a custom one -that later delegates to the Django one. For example, you could introduce WSGI -middleware here, or combine a Django application with an application of another -framework. +It exposes the WSGI callable as a module-level variable named ``application``. +For more information on this file, see +https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/ """ -import os -# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks -# if running multiple sites in the same mod_wsgi process. To fix this, use -# mod_wsgi daemon mode with each site in its own daemon process, or use -# os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" +import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") -# This application object is used by any WSGI server configured to use this -# file. This includes Django's development server, if the WSGI_APPLICATION -# setting points here. from django.core.wsgi import get_wsgi_application application = get_wsgi_application() - -# Apply WSGI middleware here. -# from helloworld.wsgi import HelloWorldApplication -# application = HelloWorldApplication(application) diff --git a/source/presentations/session07.rst b/source/presentations/session07.rst index 66bdf5b0..3f270de1 100644 --- a/source/presentations/session07.rst +++ b/source/presentations/session07.rst @@ -1690,8 +1690,7 @@ Post admin*. Your Assignment --------------- -You'll be reversing that editing relationship so that you can add categories to -posts, and cannot choose posts from categories. +You'll be reverse that relationship so that you can only add categories to posts Take the following steps: @@ -1721,7 +1720,9 @@ The trick of course is reading and finding out which fifteen lines to write. If you complete that task in less than 3-4 hours of work, consider looking into other ways of customizing the admin. -Tasks you might consider: + +Tasks you might consider +------------------------ * Change the admin index to say 'Categories' instead of 'Categorys'. * Add columns for the date fields to the list display of Posts. From f52e7da71e80de5242f1db5329322bc32bf848ea Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Tue, 11 Feb 2014 12:00:17 -0800 Subject: [PATCH 084/297] fixed plural --- source/presentations/django_intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/django_intro.rst b/source/presentations/django_intro.rst index 0951003c..8824066a 100644 --- a/source/presentations/django_intro.rst +++ b/source/presentations/django_intro.rst @@ -246,7 +246,7 @@ Django's ORM provides a layer of *abstraction* between you and SQL .. class:: incremental -You write Python classes called *models* describing the object that make up +You write Python classes called *models* describing the objects that make up your system. .. class:: incremental From 3e1768efa4fe6ad07917cbaf069a80a0a1c96686 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Tue, 11 Feb 2014 12:28:20 -0800 Subject: [PATCH 085/297] Fixed INSTALLED_APPS --- source/presentations/django_intro.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/source/presentations/django_intro.rst b/source/presentations/django_intro.rst index 8824066a..fdcc01f5 100644 --- a/source/presentations/django_intro.rst +++ b/source/presentations/django_intro.rst @@ -303,16 +303,12 @@ Django already includes some *apps* for you. :class: small INSTALLED_APPS = ( + 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', - 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', - # Uncomment the next line to enable the admin: - # 'django.contrib.admin', - # Uncomment the next line to enable admin documentation: - # 'django.contrib.admindocs', ) @@ -610,10 +606,10 @@ You extend Django functionality by *installing apps*. This is pretty simple: :class: small INSTALLED_APPS = ( + 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', - 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'myblog', # <- YOU ADD THIS PART From 92b5f718c13bfdb77461ea9572a5754f1ad550f8 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Tue, 11 Feb 2014 12:31:28 -0800 Subject: [PATCH 086/297] The first user is "admin", as per prior recommendation. --- source/presentations/django_intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/django_intro.rst b/source/presentations/django_intro.rst index fdcc01f5..d2379a57 100644 --- a/source/presentations/django_intro.rst +++ b/source/presentations/django_intro.rst @@ -724,7 +724,7 @@ Let's use the *manager* to get an instance of the ``User`` class: >>> from django.contrib.auth.models import User >>> all_users = User.objects.all() >>> all_users - [] + [] >>> u1 = all_users[0] >>> p1.author = u1 From 51232b8dd3c911e9356289aa75c4b57da1b9a5a6 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Tue, 11 Feb 2014 12:57:02 -0800 Subject: [PATCH 087/297] There are no tests in tests.py yet. --- source/presentations/django_intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/django_intro.rst b/source/presentations/django_intro.rst index d2379a57..f98b7921 100644 --- a/source/presentations/django_intro.rst +++ b/source/presentations/django_intro.rst @@ -1000,7 +1000,7 @@ Now that we have a fixture, we need to instruct our tests to use it. .. container:: incremental - Edit ``tests.py`` (which comes with one test already) to look like this: + Edit ``tests.py`` to look like this: .. code-block:: python :class: small From 12d57c2960de2d9268ed1a8176fdf91d7a2c7c65 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Tue, 11 Feb 2014 13:02:42 -0800 Subject: [PATCH 088/297] Fix Typo --- source/presentations/django_intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/django_intro.rst b/source/presentations/django_intro.rst index f98b7921..ea57c5c8 100644 --- a/source/presentations/django_intro.rst +++ b/source/presentations/django_intro.rst @@ -1249,7 +1249,7 @@ Django too has a system for dispatching requests to code: the *urlconf*. .. class:: incremental -* A urlconf is a an iterable of calls to the ``django.conf.urls.url`` function +* A urlconf is an iterable of calls to the ``django.conf.urls.url`` function * This function takes: * a regexp *rule*, representing the URL From 0121bc4a6e943b21c7a58607d5f296228b9dd3f8 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 16 Feb 2014 16:38:29 -0800 Subject: [PATCH 089/297] Wrong file name for css --- source/presentations/session07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session07.rst b/source/presentations/session07.rst index 3f270de1..4d708d63 100644 --- a/source/presentations/session07.rst +++ b/source/presentations/session07.rst @@ -1435,7 +1435,7 @@ Create a new directory ``static`` in the ``myblog`` app. .. class:: incremental -Copy the ``django_css`` file into that new directory. +Copy the ``django_blog.css`` file into that new directory. .. container:: incremental From 5e235dad6efe5b2b03b5fb00f953fd1aa769bc15 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 16 Feb 2014 16:53:22 -0800 Subject: [PATCH 090/297] Update session07.rst --- source/presentations/session07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session07.rst b/source/presentations/session07.rst index 4d708d63..02d50ee8 100644 --- a/source/presentations/session07.rst +++ b/source/presentations/session07.rst @@ -1690,7 +1690,7 @@ Post admin*. Your Assignment --------------- -You'll be reverse that relationship so that you can only add categories to posts +You'll be reversing that relationship so that you can only add categories to posts Take the following steps: From 8e048665cb5c2681c1893c75b743f55fd060a069 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Thu, 20 Feb 2014 11:31:17 -0800 Subject: [PATCH 091/297] baseline of myblog app as it was at the end of class on Feb 18 --- assignments/session07/mysite/manage.py | 10 ++ .../session07/mysite/myblog/__init__.py | 0 assignments/session07/mysite/myblog/admin.py | 6 ++ .../myblog/fixtures/myblog_test_fixture.json | 38 +++++++ .../mysite/myblog/migrations/0001_initial.py | 78 +++++++++++++++ .../migrations/0002_auto__add_category.py | 93 ++++++++++++++++++ .../mysite/myblog/migrations/__init__.py | 0 assignments/session07/mysite/myblog/models.py | 22 +++++ .../mysite/myblog/static/django_blog.css | 74 ++++++++++++++ .../mysite/myblog/templates/detail.html | 17 ++++ .../mysite/myblog/templates/list.html | 25 +++++ assignments/session07/mysite/myblog/tests.py | 65 ++++++++++++ assignments/session07/mysite/myblog/urls.py | 10 ++ assignments/session07/mysite/myblog/views.py | 29 ++++++ assignments/session07/mysite/mysite.db | Bin 0 -> 155648 bytes .../session07/mysite/mysite/__init__.py | 0 .../session07/mysite/mysite/settings.py | 89 +++++++++++++++++ .../mysite/mysite/templates/base.html | 26 +++++ .../mysite/mysite/templates/login.html | 9 ++ assignments/session07/mysite/mysite/urls.py | 20 ++++ assignments/session07/mysite/mysite/wsgi.py | 14 +++ 21 files changed, 625 insertions(+) create mode 100755 assignments/session07/mysite/manage.py create mode 100644 assignments/session07/mysite/myblog/__init__.py create mode 100644 assignments/session07/mysite/myblog/admin.py create mode 100644 assignments/session07/mysite/myblog/fixtures/myblog_test_fixture.json create mode 100644 assignments/session07/mysite/myblog/migrations/0001_initial.py create mode 100644 assignments/session07/mysite/myblog/migrations/0002_auto__add_category.py create mode 100644 assignments/session07/mysite/myblog/migrations/__init__.py create mode 100644 assignments/session07/mysite/myblog/models.py create mode 100644 assignments/session07/mysite/myblog/static/django_blog.css create mode 100644 assignments/session07/mysite/myblog/templates/detail.html create mode 100644 assignments/session07/mysite/myblog/templates/list.html create mode 100644 assignments/session07/mysite/myblog/tests.py create mode 100644 assignments/session07/mysite/myblog/urls.py create mode 100644 assignments/session07/mysite/myblog/views.py create mode 100644 assignments/session07/mysite/mysite.db create mode 100644 assignments/session07/mysite/mysite/__init__.py create mode 100644 assignments/session07/mysite/mysite/settings.py create mode 100644 assignments/session07/mysite/mysite/templates/base.html create mode 100644 assignments/session07/mysite/mysite/templates/login.html create mode 100644 assignments/session07/mysite/mysite/urls.py create mode 100644 assignments/session07/mysite/mysite/wsgi.py diff --git a/assignments/session07/mysite/manage.py b/assignments/session07/mysite/manage.py new file mode 100755 index 00000000..8a50ec04 --- /dev/null +++ b/assignments/session07/mysite/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) diff --git a/assignments/session07/mysite/myblog/__init__.py b/assignments/session07/mysite/myblog/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/assignments/session07/mysite/myblog/admin.py b/assignments/session07/mysite/myblog/admin.py new file mode 100644 index 00000000..67aec2d6 --- /dev/null +++ b/assignments/session07/mysite/myblog/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from myblog.models import Post +from myblog.models import Category + +admin.site.register(Post) +admin.site.register(Category) diff --git a/assignments/session07/mysite/myblog/fixtures/myblog_test_fixture.json b/assignments/session07/mysite/myblog/fixtures/myblog_test_fixture.json new file mode 100644 index 00000000..592dea17 --- /dev/null +++ b/assignments/session07/mysite/myblog/fixtures/myblog_test_fixture.json @@ -0,0 +1,38 @@ +[ +{ + "pk": 1, + "model": "auth.user", + "fields": { + "username": "admin", + "first_name": "Mr.", + "last_name": "Administrator", + "is_active": true, + "is_superuser": true, + "is_staff": true, + "last_login": "2013-05-24T05:35:58.628Z", + "groups": [], + "user_permissions": [], + "password": "pbkdf2_sha256$10000$1rQazFNdOfFt$6aw/uIrv2uASkZ7moXMTajSN+ySYuowBnbP6ILNQntE=", + "email": "admin@example.com", + "date_joined": "2013-05-24T05:35:58.628Z" + } +}, +{ + "pk": 2, + "model": "auth.user", + "fields": { + "username": "noname", + "first_name": "", + "last_name": "", + "is_active": true, + "is_superuser": true, + "is_staff": true, + "last_login": "2013-05-24T05:35:58.628Z", + "groups": [], + "user_permissions": [], + "password": "pbkdf2_sha256$10000$1rQazFNdOfFt$6aw/uIrv2uASkZ7moXMTajSN+ySYuowBnbP6ILNQntE=", + "email": "noname@example.com", + "date_joined": "2013-05-24T05:35:58.628Z" + } +} +] diff --git a/assignments/session07/mysite/myblog/migrations/0001_initial.py b/assignments/session07/mysite/myblog/migrations/0001_initial.py new file mode 100644 index 00000000..4e7a9de9 --- /dev/null +++ b/assignments/session07/mysite/myblog/migrations/0001_initial.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'Post' + db.create_table(u'myblog_post', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=128)), + ('text', self.gf('django.db.models.fields.TextField')(blank=True)), + ('author', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])), + ('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)), + ('modified_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)), + ('published_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), + )) + db.send_create_signal(u'myblog', ['Post']) + + + def backwards(self, orm): + # Deleting model 'Post' + db.delete_table(u'myblog_post') + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'myblog.post': { + 'Meta': {'object_name': 'Post'}, + 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}), + 'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'published_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + } + } + + complete_apps = ['myblog'] \ No newline at end of file diff --git a/assignments/session07/mysite/myblog/migrations/0002_auto__add_category.py b/assignments/session07/mysite/myblog/migrations/0002_auto__add_category.py new file mode 100644 index 00000000..1ecf7fcc --- /dev/null +++ b/assignments/session07/mysite/myblog/migrations/0002_auto__add_category.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'Category' + db.create_table(u'myblog_category', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=128)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + )) + db.send_create_signal(u'myblog', ['Category']) + + # Adding M2M table for field posts on 'Category' + m2m_table_name = db.shorten_name(u'myblog_category_posts') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('category', models.ForeignKey(orm[u'myblog.category'], null=False)), + ('post', models.ForeignKey(orm[u'myblog.post'], null=False)) + )) + db.create_unique(m2m_table_name, ['category_id', 'post_id']) + + + def backwards(self, orm): + # Deleting model 'Category' + db.delete_table(u'myblog_category') + + # Removing M2M table for field posts on 'Category' + db.delete_table(db.shorten_name(u'myblog_category_posts')) + + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'myblog.category': { + 'Meta': {'object_name': 'Category'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'posts': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'categories'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['myblog.Post']"}) + }, + u'myblog.post': { + 'Meta': {'object_name': 'Post'}, + 'author': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}), + 'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'published_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'text': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + } + } + + complete_apps = ['myblog'] \ No newline at end of file diff --git a/assignments/session07/mysite/myblog/migrations/__init__.py b/assignments/session07/mysite/myblog/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/assignments/session07/mysite/myblog/models.py b/assignments/session07/mysite/myblog/models.py new file mode 100644 index 00000000..29b851c7 --- /dev/null +++ b/assignments/session07/mysite/myblog/models.py @@ -0,0 +1,22 @@ +from django.db import models +from django.contrib.auth.models import User + +class Post(models.Model): + title = models.CharField(max_length=128) + text = models.TextField(blank=True) + author = models.ForeignKey(User) + created_date = models.DateTimeField(auto_now_add=True) + modified_date = models.DateTimeField(auto_now=True) + published_date = models.DateTimeField(blank=True, null=True) + + def __unicode__(self): + return self.title + +class Category(models.Model): + name = models.CharField(max_length=128) + description = models.TextField(blank=True) + posts = models.ManyToManyField(Post, blank=True, null=True, + related_name='categories') + + def __unicode__(self): + return self.name \ No newline at end of file diff --git a/assignments/session07/mysite/myblog/static/django_blog.css b/assignments/session07/mysite/myblog/static/django_blog.css new file mode 100644 index 00000000..64560dc0 --- /dev/null +++ b/assignments/session07/mysite/myblog/static/django_blog.css @@ -0,0 +1,74 @@ +body { + background-color: #eee; + color: #111; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; + margin:0; + padding:0; +} +#container { + margin:0; + padding:0; + margin-top: 0px; +} +#header { + background-color: #333; + border-botton: 1px solid #111; + margin:0; + padding:0; +} +#control-bar { + margin: 0em 0em 1em; + list-style: none; + list-style-type: none; + text-align: right; + color: #eee; + font-size: 80%; + padding-bottom: 0.4em; +} +#control-bar li { + display: inline-block; +} +#control-bar li a { + color: #eee; + padding: 0.5em; + text-decoration: none; +} +#control-bar li a:hover { + color: #cce; +} +#content { + margin: 0em 1em 1em; +} + +ul#entries { + list-style: none; + list-style-type: none; +} +div.entry { + margin-right: 2em; + margin-top: 1em; + border-top: 1px solid #cecece; +} +ul#entries li:first-child div.entry { + border-top: none; + margin-top: 0em; +} +div.entry-body { + margin-left: 2em; +} +.notification { + float: right; + text-align: center; + width: 25%; + padding: 1em; +} +.info { + background-color: #aae; +} +ul.categories { + list-style: none; + list-style-type: none; +} +ul.categories li { + display: inline; +} \ No newline at end of file diff --git a/assignments/session07/mysite/myblog/templates/detail.html b/assignments/session07/mysite/myblog/templates/detail.html new file mode 100644 index 00000000..cd0322ff --- /dev/null +++ b/assignments/session07/mysite/myblog/templates/detail.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} + +{% block content %} +Home +

{{ post }}

+ +
+ {{ post.text }} +
+
    + {% for category in post.categories.all %} +
  • {{ category }}
  • + {% endfor %} +
+{% endblock %} diff --git a/assignments/session07/mysite/myblog/templates/list.html b/assignments/session07/mysite/myblog/templates/list.html new file mode 100644 index 00000000..88920817 --- /dev/null +++ b/assignments/session07/mysite/myblog/templates/list.html @@ -0,0 +1,25 @@ +{% extends "base.html" %} + +{% block content %} +

Recent Posts

+ + {% comment %} here is where the query happens {% endcomment %} + {% for post in posts %} +
+

+ {{ post }} +

+ +
+ {{ post.text }} +
+
    + {% for category in post.categories.all %} +
  • {{ category }}
  • + {% endfor %} +
+
+ {% endfor %} +{% endblock %} diff --git a/assignments/session07/mysite/myblog/tests.py b/assignments/session07/mysite/myblog/tests.py new file mode 100644 index 00000000..a2a27010 --- /dev/null +++ b/assignments/session07/mysite/myblog/tests.py @@ -0,0 +1,65 @@ +from django.test import TestCase +from django.contrib.auth.models import User +from myblog.models import Post +from myblog.models import Category +import datetime +from django.utils.timezone import utc + +class PostTestCase(TestCase): + fixtures = ['myblog_test_fixture.json', ] + + def setUp(self): + self.user = User.objects.get(pk=1) + + def test_unicode(self): + expected = "This is a title" + p1 = Post(title=expected) + actual = unicode(p1) + self.assertEqual(expected, actual) + +class CategoryTestCase(TestCase): + + def test_unicode(self): + expected = "A Category" + c1 = Category(name=expected) + actual = unicode(c1) + self.assertEqual(expected, actual) + +class FrontEndTestCase(TestCase): + """test views provided in the front-end""" + fixtures = ['myblog_test_fixture.json', ] + + def setUp(self): + self.now = datetime.datetime.utcnow().replace(tzinfo=utc) + self.timedelta = datetime.timedelta(15) + author = User.objects.get(pk=1) + for count in range(1,11): + post = Post(title="Post %d Title" % count, + text="foo", + author=author) + if count < 6: + # publish the first five posts + pubdate = self.now - self.timedelta * count + post.published_date = pubdate + post.save() + + def test_list_only_published(self): + resp = self.client.get('/') + self.assertTrue("Recent Posts" in resp.content) + for count in range(1,11): + title = "Post %d Title" % count + if count < 6: + self.assertContains(resp, title, count=1) + else: + self.assertNotContains(resp, title) + + def test_details_only_published(self): + for count in range(1,11): + title = "Post %d Title" % count + post = Post.objects.get(title=title) + resp = self.client.get('/posts/%d/' % post.pk) + if count < 6: + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, title) + else: + self.assertEqual(resp.status_code, 404) diff --git a/assignments/session07/mysite/myblog/urls.py b/assignments/session07/mysite/myblog/urls.py new file mode 100644 index 00000000..ddce82fb --- /dev/null +++ b/assignments/session07/mysite/myblog/urls.py @@ -0,0 +1,10 @@ +from django.conf.urls import patterns, url + +urlpatterns = patterns('myblog.views', + url(r'^$', + 'list_view', + name="blog_index"), + url(r'^posts/(?P\d+)/$', + 'detail_view', + name="blog_detail"), +) \ No newline at end of file diff --git a/assignments/session07/mysite/myblog/views.py b/assignments/session07/mysite/myblog/views.py new file mode 100644 index 00000000..54c4bb75 --- /dev/null +++ b/assignments/session07/mysite/myblog/views.py @@ -0,0 +1,29 @@ +from django.shortcuts import render +from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django.template import RequestContext, loader +from myblog.models import Post + +def stub_view(request, *args, **kwargs): + body = "Stub View\n\n" + if args: + body += "Args:\n" + body += "\n".join(["\t%s" % a for a in args]) + if kwargs: + body += "Kwargs:\n" + body += "\n".join(["\t%s: %s" % i for i in kwargs.items()]) + return HttpResponse(body, content_type="text/plain") + +def list_view(request): + published = Post.objects.exclude(published_date__exact=None) + posts = published.order_by('-published_date') + context = {'posts': posts} + return render(request, 'list.html', context) + +def detail_view(request, post_id): + published = Post.objects.exclude(published_date__exact=None) + try: + post = published.get(pk=post_id) + except Post.DoesNotExist: + raise Http404 + context = {'post': post} + return render(request, 'detail.html', context) \ No newline at end of file diff --git a/assignments/session07/mysite/mysite.db b/assignments/session07/mysite/mysite.db new file mode 100644 index 0000000000000000000000000000000000000000..63c9e9a57dbf40bdfacafb2a0d046cc8f04f22df GIT binary patch literal 155648 zcmeI5du$uYeaCmnB`HcG$1i#PIGxw@`D{ifnNNw7bM@(L-qk)!wq-lA4hWbPxun+S z>$sF{xj_-i$)!LG1Ze+BfgmZ+{!!dNO@pBMBT4^ATA*m!21S$nksk8yp-q#fN%Lwh ze{^Pcxx0KwvWh#$XM7j-aA)Q>Gr#%FZ+2ef>gtt?dP`GE^=4IVDM?|MAd13siXsTY zIr{%;`oD7>p*K>;LqA2={bsl4gvsw5_c3AeCX+c#-W>Vo(I1b5Mm`q&^6)}`-q%~y>JwtBIpyZLf(OS;1y66K zV7iowCrVj$u!8#^NWo4X+bL*j&2^LZ1>|QZ#P+14n@j!Vj8;l%D=Ds&6FxRT8z(m3 zN##<*iDiHa^;%1-weqd?hGrrf+H0CooU2j1sn*K%yjra4wS1*swsY)_*w?K{Z?v7x z)TB3huqwhHw?+4+u`RPVV(&Jpbb7+(syG&XZdX8#M#YV@Ep?@$StS`7H|1{MZmZO5 zbI)JQDUt3-TEAh1UJ)y4{+6~LQEscv!m8RlnTkb~g-h3zh3gkDDwh|}&(AF`D=+1i zpXp9hR9k99X=!&`wzMUo-EHViEl&lsh{D{KUe#=&;ppkze)&>V6nK*wuTxP!<*8g2<22{nF2r&d_jnzqUVDAd#{ty~9L zJmz9%QBWI=d_`T+DqD+H>&0zEt}mRway>_Thm+$oO2kYT9ggORUtUgbL(^SV8>u^R z*Zm8l0r|)g@znyiE#9%2;n_E#ZiaUFPRTV?!?;s#Qp`5JM8>f=i(W-FTC9ibwE-q% z$>>JjSfdXRre;K0sn;uZi&+vZrn{w*u7*-fvX*Q~Z_*++mv$?*t&~<(byvgBr28t! zly9k}(qP4DtXgR4x2cT{su$~2`J1%EXcXgs9u^Pz<=m0YY{G83eB8bbZ=4to$a8bz z{pIfVH%D#fF>TmM`eH^lv5-E&otjMN0od0utu}GAV}nMYl(Lw6A-9-YIGej_O&Od7 zRFw!D@64R+uGT4$b~Hzpk4VGOt0R87Jhweuo`;j#aMA7~GTOd36p$w;#rr3E@be+r z1>N)qH$!bkztw>4dBFp)<+9sjwX>v;uroowe06erqGsjX9Lo7K%Nw9|T;We@64Z(FakiyYMLUh?_neD(pLx^TGxyIJ@*!k&OUF(KZ+>cDo= zamtR@I{>c}yHl>+_LFwmkHytJEDwC1*>Xj#JF@}P5c`SNn=3_Jpi>W?0qug%dj0a1 zi7n|mRkpA?0c>?CZQK(1BkV&#&eWQQ*>m+?zo(mOZ}d*Fvf;8`%d@HGfFaRB)_JV= zJ;rRL-RqBzoE2SPxv3ReyiM4=w>z|{HRvp)Gp9)mnh}~RmMUsFq8L@RQlS$~WvyoD zWjc`e&RytSyjIroRXV#@%d}3;Oq;?!G#X;a$)Z5MN?s$sOK)(200@8p2!H?xfB*=9 z00@8p2!H?xJOF`rNkL&QC=xjsO2p!+$yj1C5mVyX*;ryW6`M+C($m>wFg3qs=!JKA zH&^9`>CbokClA?@=6RqaX`K&tBqIlX!lZbd<*62nju`dWxn&Rdgq(QVRc=);H&u3U zs;ufpiz+Z=DPTuf;aS;EYAIq%*hxDlmYqDUq{;n0;f$E>Xx5*Osc45!cv0WAKL2^j*H`+f_XG6i`_iE$0x+as4IW#yO4gX2+RBQ zZd=YOr6Xq*WOp;j|ccm1rHwE9~2@zD~oN-+*O7r^0putLUx- zR{2&KOArnDgtTc^OouLMrie>a8MW0l3s%_CxMV58?v)W+!YZ9hSf#T2L&IHoc{D4A z-9&=6HCp-e?{;{t0=OqKWXo73m@-xo-19`hC!7$EbehlU<@^ zV-@9uJma&at@4~Wk5#A>^0Z_(JcH>(cv$g{_oSCX54!s@{nnyFzr@^Jw=|%B?mg+T zC9U#pNvrgZWJL4{r-F80w#8V<9hqVJtU4U}dx89je4YF)`6T%$`2cB<_mT_bG>Hwd5@SlhODEz^2lkN%R!Y9JP(9c8PqRDW900@8p2!H?xfB*=900@8p2t0HG zW0E)__HO(fHbbq2VP}))&>l%VE(X~;uoHA}ToO-lzm}I92Wz8JxslO_eo+@?AbrrV+LBOtgVpUJS#s-Xoc)L zAc=8tz$OSWBRU+M-H|W{D?A{QvQ9W7H4? zKmY_l00ck)1V8`;KmY_l00h|izeuhL^dBw|009sH0T2KI5C8!X009sH0T2Lz9S~?o z#gNcGF&C6Wp=>ZX*I2n#EG6>Bs+veoKNU~JVzH;rUQEm^EiM+%$L`#IYA!WbEXS8> zsp+Nk?S&cVk!28K(-gA@|((5&4RX18x%BZikR_#zLaBsjTj2#?n)Qy&z3%fh)_X&r`4;z|c(Da=T z>+__~CmcV1tWdADv|3APtv595p4}R*``r@Fdu(jY(3&bOntkr|`UH7QE;s9I4Hm|4 z#yvja=-APQ)~xEhL>A-t4vRkFh&)bfsL%qN>wMi$ecZ#&|AXYBK>mw-iF}=Wp8N^9 zNPdU>K6&3eyosSc2!H?xfB*=900@8p2!H?xfB*=*O$7Ez2gk+ky@cQ)NuCr3?i>se z>EM_p&NdAK`=s&1V$WuQ{|V{%G10Xr;NBnbg`}}Dv9mQGg{3i>`}n4Scds;dlzW|> z0MBko9yibZJL`Y*_y79^vY+_hCM?Jn1V8`;KmY_l00ck)1V8`;KmY_D9Rj~<`{wQ? z@7-;d>EU_1?D5TSyw?d>y_;E0Y3t3qYE>`YOX-QMQApQHFIN}z`FmGV3roxKOV<`| zE!><>F5g?MEL_XQm+!4s=Fb(@7j7=zoIiIxF<)JdzkF_FP}X>eZIQ*%JNdWwz8hSxspi73e}2!vHC*1_+oj@miz7bwQEb+ zTQ4u&J-fWL(0q9*ee1k_N57F^a;v4{jfF~~l5Md3=5NHTmj)y!W7F=J2F%2#)5GL- z`uqRS2;?)=!36>!00JNY0w4eaAOHd&00JNY0wC}x5qQcwFWS2mn`};asKQUJG@EPn zSSlTF+{u)awY#f@>D$GX=DosdTDzlW`TPGQ@oDKmY_l00ck)1V8`; zKmY_l00cnbolC&y6~&;$T`zY%l2|A)y+=luT%8z21M({Q0J%q6q()Y0GF%`40w4eaAOHd&00JNY0w4eaAOHfK0AFk$ z=I$Zx9%Sy&0q)A&-Ot>>7)X`x?*h;lN*YoZq;(e{)31M*8* zv7K|O$!nNzXw9l_7<#>CBrJV4w0opjR z`A#aA8cr+&RH)ZlTCJ6Dtv56i(a>JgRO4KY;!U+yuIJTaRj=hM^|GB~Z^XWCMS7#{ zbfzY~(SubH_PBdZZ<>zv7kVT1Zlg-4w{5P9W6|e!1>|T{+&J4(S1OuSlA&=^?)L4r zO1(Ds{KcFS>5ioJ8&>EQv6AL*Y3mW?w%RPLs?C$BSX5cKbWK^fe(|DmdGY-G+~TtG zQf~Q~?leWUrACyNcDH3qTN2vchThcjR6vU;%x&pa%@!Jtp5E=3FGWRxH>vSTMQ>?& zYDjhN&v&buk9Yg`Y=pxBIhhpicQJ4qj+MY2L_QN7c+~3+Gyk}>WWs`TC7?xZXBw2p^_81ip~WMZv3G|ywMNrv-^3s@FjXv7 z)N({Is%oV|txH*}8G5;<6>Ssi=(0*5a9X}fyR=%Sb?WL~!_kefCm>Hui1)8LjpRH* zd6PI^Z#V0n*qx&8Hu!YEy>EuGuZq;*yE7Zmdu*HU&6Qeyp_2hM{%5^@`O3s*#@|!r ze7q+>+8CDtayBd8zwYqt8@YL+zEIx)x_v@Bg=~+%9UJV0=d`ZdQf(<^G511lF}H9w zch#C4ISHsP5jL`$mSzLCi=<>7VLtc{M_=;!<$QKaynS`HDEEc?+oS$~eDtW;c0FOZ zlmj@h8PuJE>^88B%UTt)=EKosz%Rde^a1K-S`F89sC{pUKkn|Ia14e&UwE{^YvS?; z2h_(Ez0+E4_arl!yB=X%7zUT!#3nlBP?NB;q@C?d&@W$|+>)59a+V#qLWVa^3xa)bXy4_~r84_NaSn?S|ePH~Rk^ z;x#(LS@Xq#rqw@1Y^a8Dr{1JPsXakTWSmK*HP%&Bqs1oidTsNuTQ~B?8b#0Q5>Zy_ z^@?rMRxT{2ySFF%d%GoD(wnr%&86LnZ7Zc!RoykWn@RUokSX6%OQpez(^xirxlKp; zLG@zu=KM`MC)Oy&0h4I9{+Go+6@niPerfpikz*s@A3ZVpS|}a*T=+)#f64oYemL~* zz+d}s`QG$-q$Tekd%o(KrQ*0A9)b40V*&a6jMz@|l}&Yhg)LbNv|-Ej=6b$SH(GT6 zVMa}5)vP)&_G#;BXYIHQl(BO#7mx#G*mIs0$A|UyfrzQrvsXycE=w? ztxgWxsAc0|bCdSm(SWQ{Vt2Ms&6Oh0A<|k6RP!lIO>3^RCB#9QZlyWhtLU_&^$54| zo>l_#%#64(#s|59nhgv*);+Whl(7cvzUg7t3YAWgUApzjvhl`Jwl6N)K6!+%Fg5~% zwC~X=vZclksB8CwHr_Q*(2WbtC^Yp3TjuqwhNA7;Pnwf=Q&pqR_A#q^xv4VgRo!UO zUN$)NXt&~ng?2jXvE_MpWfJNBLBUqg85{?R(ab9PCXfEwctB1c6WhDporE{3mYvQP zONmaeWnqd{)o$zWlJ2r|7Q6 zQqhgoKDpuO`ws`?)6vcjeD@Yter0AQ6EDR&JBijN-ILu7xk(zcExRLGbGrBBqV1_e z0r~2j*uKs!$XT`YP8sc;?af8TyVcrU(9X+LadSbYZue}PK9vrd3ZLIj;m&UA=Gi~- zzzTQrdJu&rp=Vd*n||-`>;f2Rd06512=R$9je%a~Ck*Ic{|ZAv5COWmrU+pD|C=I@azOwDKmY_l00ck)1V8`; zKmY_l;NcNq>wl4aTOi*iUwn9_q9hOi0T2KI5C8!X009sH0T2KI5CDOl6L>Zei>D@I z$;sHX63@;iW@Zz~sZ2bUoryi^of8Mg&cvtFo>2HjK?;3Z2z{EoN`}IXotKRiAOHd& z00JNY0w4eaAOHd&00M6pf%YzONH~2pI5#&pzpn7N(JAcRIm*ek27AR@F?x-@wn(A> zTC18n{``sCnsTS9x9Hok%{5_SG7(eanb~A!HZ?sp6VJ?Kvpq4{*?4v;9gowsWOqy| zF`LdzB@>xMHc6`*%`uIH%Ty7qX((z_Q_AcuI7(3~)XkSEEv;(pF=2tL@ZL}tDPo{}M;nlb*iuF#R?p%`D+4Rg*ER&dtr#6d8rMqL?4ad&^ zCGtao{F?lN{Dj`%0s#;J0T2KI5C8!X009sH0T2KI5O`-3ki0=rVvd(N921V8`;KmY_l00ck)1V8`;KmY_l;9(GWx5pFL>2W@pf|4Z2q4_mKF9f~p_W64K zmNDd!gt5@&in=}|vb&{v^A=nG`^mou$bXXWl7FQhTp$1fAOHd&00JNY0w4ea zAOHd&00NIX0l!}oL{akkeeBaK`RQf={q*?hPJk$SJU+S&z%ukQRKRq6= zUkbAQ07(jV*8kr$-~abx`VD}8Bj0@FD+mQa00ck)1V8`;KmY_l00ck)1V8`;+ys1H zx)b1MuGhz1iMbx<{eR~9|2NqB|G&xi>01E4LB8kC0QVpO0w4eaAOHd&00JNY0w4ea bAOHf7Isv}q=gWVIFaJH(@}GzE_y7MN3OLNV literal 0 HcmV?d00001 diff --git a/assignments/session07/mysite/mysite/__init__.py b/assignments/session07/mysite/mysite/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/assignments/session07/mysite/mysite/settings.py b/assignments/session07/mysite/mysite/settings.py new file mode 100644 index 00000000..78a3248e --- /dev/null +++ b/assignments/session07/mysite/mysite/settings.py @@ -0,0 +1,89 @@ +""" +Django settings for mysite project. + +For more information on this file, see +https://docs.djangoproject.com/en/1.6/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/1.6/ref/settings/ +""" + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import os +BASE_DIR = os.path.dirname(os.path.dirname(__file__)) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'o$)p$v##&^xobe)62v2mvh(+m297vqd-sqnma@c0@g#g&o_!bw' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +TEMPLATE_DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = ( + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'south', + 'myblog', +) + +MIDDLEWARE_CLASSES = ( + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +) + +ROOT_URLCONF = 'mysite.urls' + +WSGI_APPLICATION = 'mysite.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/1.6/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': 'mysite.db', + } +} + +# Internationalization +# https://docs.djangoproject.com/en/1.6/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/1.6/howto/static-files/ + +STATIC_URL = '/static/' + +TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'mysite/templates'),) + +LOGIN_URL = '/login/' +LOGIN_REDIRECT_URL = '/' diff --git a/assignments/session07/mysite/mysite/templates/base.html b/assignments/session07/mysite/mysite/templates/base.html new file mode 100644 index 00000000..2a01d991 --- /dev/null +++ b/assignments/session07/mysite/mysite/templates/base.html @@ -0,0 +1,26 @@ + + + + My Django Blog + + + + +
+
+ {% block content %} + [content will go here] + {% endblock %} +
+
+ + diff --git a/assignments/session07/mysite/mysite/templates/login.html b/assignments/session07/mysite/mysite/templates/login.html new file mode 100644 index 00000000..1566d0f7 --- /dev/null +++ b/assignments/session07/mysite/mysite/templates/login.html @@ -0,0 +1,9 @@ +{% extends "base.html" %} + +{% block content %} +

My Blog Login

+
{% csrf_token %} + {{ form.as_p }} +

+
+{% endblock %} diff --git a/assignments/session07/mysite/mysite/urls.py b/assignments/session07/mysite/mysite/urls.py new file mode 100644 index 00000000..9c67dfdb --- /dev/null +++ b/assignments/session07/mysite/mysite/urls.py @@ -0,0 +1,20 @@ +from django.conf.urls import patterns, include, url + +from django.contrib import admin +admin.autodiscover() + +urlpatterns = patterns('', + # Examples: + # url(r'^$', 'mysite.views.home', name='home'), + # url(r'^blog/', include('blog.urls')), + url(r'^', include('myblog.urls')), + url(r'^admin/', include(admin.site.urls)), + url(r'^login/$', + 'django.contrib.auth.views.login', + {'template_name': 'login.html'}, + name="login"), + url(r'^logout/$', + 'django.contrib.auth.views.logout', + {'next_page': '/'}, + name="logout"), +) diff --git a/assignments/session07/mysite/mysite/wsgi.py b/assignments/session07/mysite/mysite/wsgi.py new file mode 100644 index 00000000..10ef32d9 --- /dev/null +++ b/assignments/session07/mysite/mysite/wsgi.py @@ -0,0 +1,14 @@ +""" +WSGI config for mysite project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/ +""" + +import os +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") + +from django.core.wsgi import get_wsgi_application +application = get_wsgi_application() From 1c59bb903eada3ac4a4cb87ca759e41525b5ca17 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Thu, 20 Feb 2014 11:34:34 -0800 Subject: [PATCH 092/297] fix test with bad indentation --- assignments/session07/mysite/myblog/tests.py | 76 ++++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/assignments/session07/mysite/myblog/tests.py b/assignments/session07/mysite/myblog/tests.py index a2a27010..413b2131 100644 --- a/assignments/session07/mysite/myblog/tests.py +++ b/assignments/session07/mysite/myblog/tests.py @@ -19,47 +19,47 @@ def test_unicode(self): class CategoryTestCase(TestCase): - def test_unicode(self): - expected = "A Category" - c1 = Category(name=expected) - actual = unicode(c1) - self.assertEqual(expected, actual) + def test_unicode(self): + expected = "A Category" + c1 = Category(name=expected) + actual = unicode(c1) + self.assertEqual(expected, actual) class FrontEndTestCase(TestCase): - """test views provided in the front-end""" - fixtures = ['myblog_test_fixture.json', ] + """test views provided in the front-end""" + fixtures = ['myblog_test_fixture.json', ] - def setUp(self): - self.now = datetime.datetime.utcnow().replace(tzinfo=utc) - self.timedelta = datetime.timedelta(15) - author = User.objects.get(pk=1) - for count in range(1,11): - post = Post(title="Post %d Title" % count, - text="foo", - author=author) - if count < 6: - # publish the first five posts - pubdate = self.now - self.timedelta * count - post.published_date = pubdate - post.save() + def setUp(self): + self.now = datetime.datetime.utcnow().replace(tzinfo=utc) + self.timedelta = datetime.timedelta(15) + author = User.objects.get(pk=1) + for count in range(1,11): + post = Post(title="Post %d Title" % count, + text="foo", + author=author) + if count < 6: + # publish the first five posts + pubdate = self.now - self.timedelta * count + post.published_date = pubdate + post.save() def test_list_only_published(self): - resp = self.client.get('/') - self.assertTrue("Recent Posts" in resp.content) - for count in range(1,11): - title = "Post %d Title" % count - if count < 6: - self.assertContains(resp, title, count=1) - else: - self.assertNotContains(resp, title) + resp = self.client.get('/') + self.assertTrue("Recent Posts" in resp.content) + for count in range(1,11): + title = "Post %d Title" % count + if count < 6: + self.assertContains(resp, title, count=1) + else: + self.assertNotContains(resp, title) - def test_details_only_published(self): - for count in range(1,11): - title = "Post %d Title" % count - post = Post.objects.get(title=title) - resp = self.client.get('/posts/%d/' % post.pk) - if count < 6: - self.assertEqual(resp.status_code, 200) - self.assertContains(resp, title) - else: - self.assertEqual(resp.status_code, 404) + def test_details_only_published(self): + for count in range(1,11): + title = "Post %d Title" % count + post = Post.objects.get(title=title) + resp = self.client.get('/posts/%d/' % post.pk) + if count < 6: + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, title) + else: + self.assertEqual(resp.status_code, 404) From 172303e0a05dc65b52f33b33645c04d93d78e0ef Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 24 Feb 2014 21:18:32 -0800 Subject: [PATCH 093/297] update session 08 --- source/presentations/session08.rst | 120 +++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/source/presentations/session08.rst b/source/presentations/session08.rst index da9e0ad3..ca6cea03 100644 --- a/source/presentations/session08.rst +++ b/source/presentations/session08.rst @@ -16,3 +16,123 @@ Wherein we extend our Django blog app. image: http://djangopony.com/ +Last Week +--------- + +Last week, we created a nice, simple Django microblog application. + +.. class:: incremental + +Over the week, as your homework, you made some modifications to improve how it +works. + +.. class:: incremental + +There's still quite a bit more we can do to improve this application. + +.. class:: incremental + +And today, that's what we are going to do. + + +Preparation +----------- + +In order for this to work properly, we'll need to have a few things in place. + +.. container:: incremental small + + First, we'll start from a canonical copy of the microblog. Make a fork of + the following repository to your github account: + + .. code-block:: + :class: small + + https://github.com/cewing/django-microblog + +.. container:: incremental small + + Then, clone that repository to your local machine: + + .. code-block:: bash + :class: small + + $ git clone https://github.com//django-microblog.git + or + $ git clone git@github.com:/django-microblog.git + +Connect to Your Partner +----------------------- + +Finally, you'll want to connect to your partner's repository, so that you can +each work on your own laptop and still share the changes you make. + +.. container:: incremental small + + First, add your partner's repository as ``upstream`` to yours: + + .. code-block:: bash + :class: small + + $ git remote add upstream https://github.com//django-microblog.git + or + $ git remote add upstream git@github.com:/django-microblog.git + +.. container:: incremental small + + Then, fetch their copy so that you can easily merge their changes later: + + .. code-block:: bash + :class: small + + $ git fetch upstream + + +While You Work +-------------- + +.. class:: small + +Now, when you switch roles during your work, here's the workflow you can use: + +.. class:: small + +1. The current driver commits all changes and pushes to their repository: + +.. code-block:: bash + :class: small + + $ git commit -a -m "Time to switch roles" + $ git push origin master + +.. class:: small + +2. The new driver fetches and merges changes made upstream: + +.. code-block:: bash + :class: small + + $ git fetch --all + $ git branch -a + * master + remotes/origin/master + remotes/upstream/master + $ git merge upstream/master + +.. class:: small + +3. The new driver continues working from where their partner left off. + + +Homework +-------- + +For this week's homework, you will need to install the Zope Object Database +(ZODB) + +Instructions for this `may be found here`_. + +.. _may be found here: https://github.com/UWPCE-PythonCert/training.python_web/blob/master/resources/common/zodb-install-instructions.rst + +This is not trivial work. Please be sure to start early in the week so if +there is trouble, you'll be able to recover. From 08863ac057e90c858ef1a4378a9e8497c312a6f6 Mon Sep 17 00:00:00 2001 From: cewing Date: Mon, 24 Feb 2014 21:20:18 -0800 Subject: [PATCH 094/297] updated and merged --- source/presentations/session08.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/presentations/session08.rst b/source/presentations/session08.rst index ca6cea03..2fdfc768 100644 --- a/source/presentations/session08.rst +++ b/source/presentations/session08.rst @@ -61,6 +61,7 @@ In order for this to work properly, we'll need to have a few things in place. or $ git clone git@github.com:/django-microblog.git + Connect to Your Partner ----------------------- @@ -136,3 +137,4 @@ Instructions for this `may be found here`_. This is not trivial work. Please be sure to start early in the week so if there is trouble, you'll be able to recover. + From 3950f3f8ec3d3529a50ca936e8372006676af3f5 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 2 Mar 2014 14:39:46 -0800 Subject: [PATCH 095/297] Small typo --- source/presentations/session09.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session09.rst b/source/presentations/session09.rst index 0a1f7ae0..6bc081ac 100644 --- a/source/presentations/session09.rst +++ b/source/presentations/session09.rst @@ -924,7 +924,7 @@ Instances of these classes are able to know when they've been changed. .. class:: incremental -When a ZODB transaction is committed, all changes objects are saved. +When a ZODB transaction is committed, all changed objects are saved. Persistent Base Classes From ee760cab433de0e69f459b9264c99f6eec832376 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 2 Mar 2014 14:40:41 -0800 Subject: [PATCH 096/297] Minor typo --- source/presentations/session09.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session09.rst b/source/presentations/session09.rst index 6bc081ac..fe1bbf9e 100644 --- a/source/presentations/session09.rst +++ b/source/presentations/session09.rst @@ -1235,7 +1235,7 @@ We are ready to add views now. We'll need: * A view of the Wiki itself, which redirects to the front page. * A view of an existing Page * A view that allows us to *add* a new Page -* A view that allows us to *edit* and existing Page +* A view that allows us to *edit* an existing Page .. class:: incremental From c1e509e0069f27c8e79d9b2c011f7ee1fdf01e5f Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 2 Mar 2014 14:52:55 -0800 Subject: [PATCH 097/297] Update session09.rst --- source/presentations/session09.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session09.rst b/source/presentations/session09.rst index fe1bbf9e..754b8dda 100644 --- a/source/presentations/session09.rst +++ b/source/presentations/session09.rst @@ -1545,7 +1545,7 @@ Update ``view_page``: def view_page(context, request): #... - content = wikiwords.sub(check, content) #<- already there + content = WIKIWORDS.sub(check, content) #<- already there edit_url = request.resource_url(context, 'edit_page') #<- add return dict(page=context, content=content, From d501637266380b7b5c4585266b8c5d58f0ebba85 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Sun, 2 Mar 2014 16:39:25 -0800 Subject: [PATCH 098/297] logged_in is not defined by slide 12 Using this base.pt without commenting out the (or otherwise removing the "logged_in") will break the template. --- resources/session10/base.pt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/session10/base.pt b/resources/session10/base.pt index 6d7e665c..db9e81d6 100644 --- a/resources/session10/base.pt +++ b/resources/session10/base.pt @@ -42,9 +42,11 @@ @@ -59,4 +61,4 @@ - \ No newline at end of file + From ddb211dabbabcd86d3e01848f7058b98ecdad01e Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 2 Mar 2014 17:02:02 -0800 Subject: [PATCH 099/297] update cgi_1.py to have a more "correct" shebang --- resources/session04/cgi/cgi-bin/cgi_1.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/session04/cgi/cgi-bin/cgi_1.py b/resources/session04/cgi/cgi-bin/cgi_1.py index b969de64..7dfafcd2 100755 --- a/resources/session04/cgi/cgi-bin/cgi_1.py +++ b/resources/session04/cgi/cgi-bin/cgi_1.py @@ -1,5 +1,5 @@ -#!/usr/bin/python -import cgi +#!/usr/bin/env python +import cgi cgi.test() From ba7cb047b224fd8b4ec3d727c7f03261be8ea5d6 Mon Sep 17 00:00:00 2001 From: Fulvio Casali Date: Mon, 3 Mar 2014 23:35:14 -0800 Subject: [PATCH 100/297] move adding template to session09. revert change to base.pt --- resources/session09/base.pt | 62 +++++++++++++++ resources/session10/base.pt | 2 - source/presentations/session09.rst | 124 +++++++++++++++++++++++++++++ source/presentations/session10.rst | 84 +------------------ 4 files changed, 190 insertions(+), 82 deletions(-) create mode 100644 resources/session09/base.pt diff --git a/resources/session09/base.pt b/resources/session09/base.pt new file mode 100644 index 00000000..c89d5283 --- /dev/null +++ b/resources/session09/base.pt @@ -0,0 +1,62 @@ + + + + Pyramid Wiki + + + + + + + + +
+
+
+
+ pyramid +
+
+
+
+
+
+ + Viewing Page Name Goes + Here + +
+ You can return to the + FrontPage. +
+ +
+
+
+
+ +
+
+
+ + + diff --git a/resources/session10/base.pt b/resources/session10/base.pt index db9e81d6..c89d5283 100644 --- a/resources/session10/base.pt +++ b/resources/session10/base.pt @@ -42,11 +42,9 @@ diff --git a/source/presentations/session09.rst b/source/presentations/session09.rst index 754b8dda..b79b0e88 100644 --- a/source/presentations/session09.rst +++ b/source/presentations/session09.rst @@ -1560,6 +1560,130 @@ Update ``view_page``: OK +What's in the ZODB? +------------------- + +We can inspect the database directly. + +.. class:: incremental + +Start an interactive session with: + +:: + + (pyramidenv)$ pshell development.ini + ... + >>> root + {'FrontPage': } + +.. class:: incremental small + +:: + + >>> root['FrontPage'].data + 'This is the front page' + +.. class:: incremental small + +:: + + >>> root['FrontPage'].__dict__ + {'__name__': 'FrontPage', 'data': 'This is the front page', '__parent__': {'FrontPage': }} + + + + +Adding Templates +---------------- + +What is the page template name for ``view_page``? + +.. class:: incremental + +Create ``view.pt`` in your ``templates`` directory. + +.. class:: incremental + +Also copy the file ``base.pt`` from the class resources. + +.. class:: incremental + +Pyramid can use a number of different templating engines. + +.. class:: incremental + +We'll be using Chameleon, which also supports extending other templates. + + +The view.pt Template +-------------------- + +Type this code into your ``view.pt`` file: + +.. code-block:: xml + + + + +
+ Page text goes here. +
+

+ + Edit this page + +

+
+
+ + +View Your Work +-------------- + +We've created the following: + +.. class:: incremental small + +* A wiki view that redirects to the automatically-created FrontPage page +* A page view that will render the ``data`` from a page, along with a url for + editing that page +* A page template to show a wiki page. + +.. class:: incremental + +That's all we need to be able to see our work. Start Pyramid: + +.. class:: incremental small + +:: + + (pyramidenv)$ pserve development.ini + Starting server in PID 43925. + serving on http://0.0.0.0:6543 + +.. class:: incremental + +Load http://localhost:6543/ + + +What You Should See +------------------- + +.. image:: img/wiki_frontpage.png + :align: center + :width: 95% + + +Page Editing +------------ + +You'll notice that the page has a link to ``Edit This Page`` + +.. class:: incremental + +If you click it, you get a 404. We haven't created that view yet. + + Next Steps ---------- diff --git a/source/presentations/session10.rst b/source/presentations/session10.rst index f7af5495..8c3731fc 100644 --- a/source/presentations/session10.rst +++ b/source/presentations/session10.rst @@ -13,28 +13,6 @@ Session 10: A Pyramid Application | Totally not built by aliens. -Adding Templates ----------------- - -What is the page template name for ``view_page``? - -.. class:: incremental - -Create ``view.pt`` in your ``templates`` directory. - -.. class:: incremental - -Also copy the file ``base.pt`` from the class resources. - -.. class:: incremental - -Pyramid can use a number of different templating engines. - -.. class:: incremental - -We'll be using Chameleon, which also supports extending other templates. - - Chameleon Templates ------------------- @@ -152,30 +130,13 @@ METAL provides operators related to creating and using template macros: Much of this will become clearer as we actually create our templates. -The view.pt Template --------------------- - -Type this code into your ``view.pt`` file: - -.. code-block:: xml - - - -
- Page text goes here. -
-

- - Edit this page - -

-
-
- - A Few Notes ----------- +Take a look at our ``view.pt`` template again. + +.. class:: incremental + ```` and ```` tags are processed and removed by the engine. .. class:: incremental @@ -212,43 +173,6 @@ The ``structure`` expression ensures that the HTML is not escaped. our anchor to the value passed into our template as ``edit_url``. -View Your Work --------------- - -We've created the following: - -.. class:: incremental small - -* A wiki view that redirects to the automatically-created FrontPage page -* A page view that will render the ``data`` from a page, along with a url for - editing that page -* A page template to show a wiki page. - -.. class:: incremental - -That's all we need to be able to see our work. Start Pyramid: - -.. class:: incremental small - -:: - - (pyramidenv)$ pserve development.ini - Starting server in PID 43925. - serving on http://0.0.0.0:6543 - -.. class:: incremental - -Load http://localhost:6543/ - - -What You Should See -------------------- - -.. image:: img/wiki_frontpage.png - :align: center - :width: 95% - - Page Editing ------------ From 3ba0e0220defec77a4d7223155c8259456ea7989 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 27 May 2014 09:34:35 -0700 Subject: [PATCH 101/297] typo --- source/presentations/session07.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/presentations/session07.rst b/source/presentations/session07.rst index 02d50ee8..c5a6c966 100644 --- a/source/presentations/session07.rst +++ b/source/presentations/session07.rst @@ -783,7 +783,7 @@ Full Urlconf Testing Views ------------- -Before we begin writin real views, we need to add some tests for the views we +Before we begin writing real views, we need to add some tests for the views we are about to create. .. class:: incremental From 6128dfaa9bc59cd0521f8bbe3b912327d85a5b9c Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 27 May 2014 09:35:47 -0700 Subject: [PATCH 102/297] add newline --- resources/session10/wikitutorial/wikitutorial/templates/edit.pt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/session10/wikitutorial/wikitutorial/templates/edit.pt b/resources/session10/wikitutorial/wikitutorial/templates/edit.pt index 9d6ef02a..12af8152 100644 --- a/resources/session10/wikitutorial/wikitutorial/templates/edit.pt +++ b/resources/session10/wikitutorial/wikitutorial/templates/edit.pt @@ -12,4 +12,4 @@ - \ No newline at end of file + From 84dc67f7c5a966572f60889b698911dd21e764e5 Mon Sep 17 00:00:00 2001 From: cewing Date: Sun, 28 Dec 2014 18:22:47 -0800 Subject: [PATCH 103/297] update .gitignore to omit junk --- .gitignore | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d04dac0b..86ecdd9d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,10 @@ svn-commit.tmp bin build include -lib \ No newline at end of file +lib +cast-offs +develop-eggs +development +*.db +*.sublime-project +*.sublime-workspace From 5459388e9583a5a59c8c5ef8fa59183cb720ecdd Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 30 Dec 2014 19:33:21 -0800 Subject: [PATCH 104/297] pep8 fix --- assignments/session02/tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assignments/session02/tests.py b/assignments/session02/tests.py index a74fe150..1438857c 100644 --- a/assignments/session02/tests.py +++ b/assignments/session02/tests.py @@ -77,7 +77,7 @@ def test_passed_mimetype_in_response(self): def test_passed_body_in_response(self): bodies = [ - "a body", + "a body", "a longer body\nwith two lines", open("webroot/sample.txt", 'r').read(), ] From 73b49de5f81fd249643d32587105cf52652025d7 Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 30 Dec 2014 19:37:16 -0800 Subject: [PATCH 105/297] begin shuffling things around --- source/presentations/session01.rst | 1201 ------------------ source/presentations/session04-old.rst | 1435 +++++++++++++++++++++ source/presentations/session04.rst | 1616 ++++++++++-------------- 3 files changed, 2126 insertions(+), 2126 deletions(-) delete mode 100644 source/presentations/session01.rst create mode 100644 source/presentations/session04-old.rst diff --git a/source/presentations/session01.rst b/source/presentations/session01.rst deleted file mode 100644 index 69f9106b..00000000 --- a/source/presentations/session01.rst +++ /dev/null @@ -1,1201 +0,0 @@ -Python Web Programming -====================== - -.. image:: img/python.png - :align: left - :width: 33% - -Session 1: Networking and Sockets - -.. class:: intro-blurb - -Wherein we learn about the basic structure of the internet and explore the -building blocks that make it possible. - - -But First ---------- - -Class presentations are available online for your use - -.. class:: small - -https://github.com/UWPCE-PythonCert/training.python_web - -.. class:: incremental - -Licensed with Creative Commons BY-NC-SA - -.. class:: small incremental - -* You must attribute the work -* You may not use the work for commercial purposes -* You have to share your versions just like this one - -.. class:: incremental - -Find mistakes? See improvements? Make a pull request. - - -But First ---------- - -Classroom Protocol - -.. class:: incremental - -Questions to ask: - -.. class:: incremental - -* What did you just say? -* Please explain what we just did again? -* Why didn't that work for me? -* Is that a typo? - - -But First ---------- - -Classroom Protocol - -.. class:: incremental - -Questions **not** to ask: - -.. class:: incremental - -* **Hypotheticals**: What happens if I do X? -* **Research**: Can Python do Y? -* **Syllabus**: Are we going to cover Z in class? -* **Marketing questions**: please just don't. -* **Performance questions**: Is Python fast enough? -* **Unpythonic**: Why doesn't Python do it some other way? -* **Show off**: Look what I just did! - - -But First ---------- - -.. class:: big-centered - -Introductions - - -Computer Communications ------------------------ - -.. image:: img/network_topology.png - :align: left - :width: 40% - -.. class:: incremental - -* processes can communicate - -* inside one machine - -* between two machines - -* among many machines - -.. class:: image-credit - -image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite - - -Computer Communications ------------------------ - -.. image:: img/data_in_tcpip_stack.png - :align: left - :width: 55% - -.. class:: incremental - -* Process divided into 'layers' - -* 'Layers' are mostly arbitrary - -* Different descriptions have different layers - -* Most common is the 'TCP/IP Stack' - -.. class:: image-credit - -image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite - - -The TCP/IP Stack - Link ------------------------ - -The bottom layer is the 'Link Layer' - -.. class:: incremental - -* Deals with the physical connections between machines, 'the wire' - -* Packages data for physical transport - -* Executes transmission over a physical medium - - * what that medium is is arbitrary - -* Implemented in the Network Interface Card(s) (NIC) in your computer - - -The TCP/IP Stack - Internet ---------------------------- - -Moving up, we have the 'Internet Layer' - -.. class:: incremental - -* Deals with addressing and routing - - * Where are we going and how do we get there? - -* Agnostic as to physical medium (IP over Avian Carrier - IPoAC) - -* Makes no promises of reliability - -* Two addressing systems - - .. class:: incremental - - * IPv4 (current, limited '192.168.1.100') - - * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334') - - -The TCP/IP Stack - Internet ---------------------------- - -.. class:: big-centered - -That's 4.3 x 10^28 addresses *per person alive today* - - -The TCP/IP Stack - Transport ----------------------------- - -Next up is the 'Transport Layer' - -.. class:: incremental - -* Deals with transmission and reception of data - - * error correction, flow control, congestion management - -* Common protocols include TCP & UDP - - * TCP: Tranmission Control Protocol - - * UDP: User Datagram Protocol - -* Not all Transport Protocols are 'reliable' - - .. class:: incremental - - * TCP ensures that dropped packets are resent - - * UDP makes no such assurance - - * Reliability is slow and expensive - - -The TCP/IP Stack - Transport ----------------------------- - -The 'Transport Layer' also establishes the concept of a **port** - -.. class:: incremental - -* IP Addresses designate a specific *machine* on the network - -* A **port** provides addressing for individual *applications* in a single host - -* 192.168.1.100:80 (the *:80* part is the **port**) - -* [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) - -.. class:: incremental - -This means that you don't have to worry about information intended for your -web browser being accidentally read by your email client. - - -The TCP/IP Stack - Transport ----------------------------- - -There are certain **ports** which are commonly understood to belong to given -applications or protocols: - -.. class:: incremental - -* 80/443 - HTTP/HTTPS -* 20 - FTP -* 22 - SSH -* 23 - Telnet -* 25 - SMTP -* ... - -.. class:: incremental - -These ports are often referred to as **well-known ports** - -.. class:: small - -(see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) - - -The TCP/IP Stack - Transport ----------------------------- - -Ports are grouped into a few different classes - -.. class:: incremental - -* Ports numbered 0 - 1023 are *reserved* - -* Ports numbered 1024 - 65535 are *open* - -* Ports numbered 1024 - 49151 may be *registered* - -* Ports numbered 49152 - 65535 are called *ephemeral* - - -The TCP/IP Stack - Application ------------------------------- - -The topmost layer is the 'Application Layer' - -.. class:: incremental - -* Deals directly with data produced or consumed by an application - -* Reads or writes data using a set of understood, well-defined **protocols** - - * HTTP, SMTP, FTP etc. - -* Does not know (or need to know) about lower layer functionality - - * The exception to this rule is **endpoint** data (or IP:Port) - - -The TCP/IP Stack - Application ------------------------------- - -.. class:: big-centered - -this is where we live and work - - -Sockets -------- - -Think back for a second to what we just finished discussing, the TCP/IP stack. - -.. class:: incremental - -* The *Internet* layer gives us an **IP Address** - -* The *Transport* layer establishes the idea of a **port**. - -* The *Application* layer doesn't care about what happens below... - -* *Except for* **endpoint data** (IP:Port) - -.. class:: incremental - -A **Socket** is the software representation of that endpoint. - -.. class:: incremental - -Opening a **socket** creates a kind of transceiver that can send and/or -receive *bytes* at a given IP address and Port. - - -Sockets in Python ------------------ - -Python provides a standard library module which provides socket functionality. -It is called **socket**. - -.. class:: incremental - -The library is really just a very thin wrapper around the system -implementation of *BSD Sockets* - -.. class:: incremental - -Let's spend a few minutes getting to know this module. - -.. class:: incremental - -We're going to do this next part together, so open up a terminal and start a -python interpreter - - -Sockets in Python ------------------ - -The Python sockets library allows us to find out what port a *service* uses: - -.. class:: small - - >>> import socket - >>> socket.getservbyname('ssh') - 22 - -.. class:: incremental - -You can also do a *reverse lookup*, finding what service uses a given *port*: - -.. class:: incremental small - - >>> socket.getservbyport(80) - 'http' - - -Sockets in Python ------------------ - -The sockets library also provides tools for finding out information about -*hosts*. For example, you can find out about the hostname and IP address of -the machine you are currently using:: - - >>> socket.gethostname() - 'heffalump.local' - >>> socket.gethostbyname(socket.gethostname()) - '10.211.55.2' - - -Sockets in Python ------------------ - -You can also find out about machines that are located elsewhere, assuming you -know their hostname. For example:: - - >>> socket.gethostbyname('google.com') - '173.194.33.4' - >>> socket.gethostbyname('uw.edu') - '128.95.155.135' - >>> socket.gethostbyname('crisewing.com') - '108.59.11.99' - - -Sockets in Python ------------------ - -The ``gethostbyname_ex`` method of the ``socket`` library provides more -information about the machines we are exploring:: - - >>> socket.gethostbyname_ex('google.com') - ('google.com', [], ['173.194.33.9', '173.194.33.14', - ... - '173.194.33.6', '173.194.33.7', - '173.194.33.8']) - >>> socket.gethostbyname_ex('crisewing.com') - ('crisewing.com', [], ['108.59.11.99']) - >>> socket.gethostbyname_ex('www.rad.washington.edu') - ('elladan.rad.washington.edu', # <- canonical hostname - ['www.rad.washington.edu'], # <- any machine aliases - ['128.95.247.84']) # <- all active IP addresses - - -Sockets in Python ------------------ - -To create a socket, you use the **socket** method of the ``socket`` library. -It takes up to three optional positional arguments (here we use none to get -the default behavior):: - - >>> foo = socket.socket() - >>> foo - - - -Sockets in Python ------------------ - -A socket has some properties that are immediately important to us. These -include the *family*, *type* and *protocol* of the socket:: - - >>> foo.family - 2 - >>> foo.type - 1 - >>> foo.proto - 0 - -.. class:: incremental - -You might notice that the values for these properties are integers. In fact, -these integers are **constants** defined in the socket library. - - -A quick utility method ----------------------- - -Let's define a method in place to help us see these constants. It will take a -single argument, the shared prefix for a defined set of constants: - -.. class:: small - -:: - - >>> def get_constants(prefix): - ... """mapping of socket module constants to their names.""" - ... return dict( - ... (getattr(socket, n), n) - ... for n in dir(socket) - ... if n.startswith(prefix) - ... ) - ... - >>> - -.. class:: small - -(you can also find this in ``resources/session01/session1.py``) - - -Socket Families ---------------- - -Think back a moment to our discussion of the *Internet* layer of the TCP/IP -stack. There were a couple of different types of IP addresses: - -.. class:: incremental - -* IPv4 ('192.168.1.100') - -* IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334') - -.. class:: incremental - -The **family** of a socket corresponds to the *addressing system* it uses for -connecting. - - -Socket Families ---------------- - -Families defined in the ``socket`` library are prefixed by ``AF_``:: - - >>> families = get_constants('AF_') - >>> families - {0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET', - 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK', - 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'} - -.. class:: small incremental - -*Your results may vary* - -.. class:: incremental - -Of all of these, the ones we care most about are ``2`` (IPv4) and ``30`` (IPv6). - - -Unix Domain Sockets -------------------- - -When you are on a machine with an operating system that is Unix-like, you will -find another generally useful socket family: ``AF_UNIX``, or Unix Domain -Sockets. Sockets in this family: - -.. class:: incremental - -* connect processes **on the same machine** - -* are generally a bit slower than IPC connnections - -* have the benefit of allowing the same API for programs that might run on one - machine __or__ across the network - -* use an 'address' that looks like a pathname ('/tmp/foo.sock') - - -Test your skills ----------------- - -What is the *default* family for the socket we created just a moment ago? - -.. class:: incremental - -(remember we bound the socket to the symbol ``foo``) - -.. class:: incremental center - -How did you figure this out? - - -Socket Types ------------- - -The socket *type* determines the semantics of socket communications. - -Look up socket type constants with the ``SOCK_`` prefix:: - - >>> types = get_constants('SOCK_') - >>> types - {1: 'SOCK_STREAM', 2: 'SOCK_DGRAM', - ...} - -.. class:: incremental - -The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram -communication (UDP)). - - -Test your skills ----------------- - -What is the *default* type for our generic socket, ``foo``? - - -Socket Protocols ----------------- - -A socket also has a designated *protocol*. The constants for these are -prefixed by ``IPPROTO_``:: - - >>> protocols = get_constants('IPPROTO_') - >>> protocols - {0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP', - ..., - 255: 'IPPROTO_RAW'} - -.. class:: incremental - -The choice of which protocol to use for a socket is determined by the -*internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``? -``IGMP``? - - -Test your skills ----------------- - -What is the *default* protocol used by our generic socket, ``foo``? - - -Custom Sockets --------------- - -These three properties of a socket correspond to the three positional -arguments you may pass to the socket constructor. - -.. container:: incremental - - Using them allows you to create sockets with specific communications - profiles:: - - >>> bar = socket.socket(socket.AF_INET, - ... socket.SOCK_DGRAM, - ... socket.IPPROTO_UDP) - ... - >>> bar - - - -Break Time ----------- - -So far we have: - -.. class:: incremental - -* learned about the "layers" of the TCP/IP Stack -* discussed *families*, *types* and *protocols* in sockets -* learned how to create sockets with a specific communications profile. - -.. class:: incremental - -When we return we'll learn how to find the communcations profiles of remote -sockets, how to connect to them, and how to send and receive messages. - -.. class:: incremental - -Take a few minutes now to clear your head (do not quit your python -interpreter). - - -Address Information -------------------- - -When you are creating a socket to communicate with a remote service, the -remote socket will have a specific communications profile. - -.. class:: incremental - -The local socket you create must match that communications profile. - -.. class:: incremental - -How can you determine the *correct* values to use? - -.. class:: incremental center - -You ask. - - -Address Information -------------------- - -The function ``socket.getaddrinfo`` provides information about available -connections on a given host. - -.. code-block:: python - :class: small - - socket.getaddrinfo('127.0.0.1', 80) - -.. class:: incremental - -This provides all you need to make a proper connection to a socket on a remote -host. The value returned is a tuple of: - -.. class:: incremental - -* socket family -* socket type -* socket protocol -* canonical name (usually empty, unless requested by flag) -* socket address (tuple of IP and Port) - - -A quick utility method ----------------------- - -Again, let's create a utility method in-place so we can see this in action: - -.. class:: small - -:: - - >>> def get_address_info(host, port): - ... for response in socket.getaddrinfo(host, port): - ... fam, typ, pro, nam, add = response - ... print 'family: ', families[fam] - ... print 'type: ', types[typ] - ... print 'protocol: ', protocols[pro] - ... print 'canonical name: ', nam - ... print 'socket address: ', add - ... print - ... - >>> - -.. class:: small - -(you can also find this in ``resources/session01/session1.py``) - - -On Your Own Machine -------------------- - -Now, ask your own machine what possible connections are available for 'http':: - - >>> get_address_info(socket.gethostname(), 'http') - family: AF_INET - type: SOCK_DGRAM - protocol: IPPROTO_UDP - canonical name: - socket address: ('10.211.55.2', 80) - - family: AF_INET - ... - >>> - -.. class:: incremental - -What answers do you get? - - -On the Internet ---------------- - -:: - - >>> get_address_info('crisewing.com', 'http') - family: AF_INET - type: SOCK_DGRAM - ... - - family: AF_INET - type: SOCK_STREAM - ... - >>> - -.. class:: incremental - -Try a few other servers you know about. - - -First Steps ------------ - -.. class:: big-centered - -Let's put this to use - - -Construct a Socket ------------------- - -We've already made a socket ``foo`` using the generic constructor without any -arguments. We can make a better one now by using real address information from -a real server online [**do not type this yet**]: - -.. class:: small - -:: - - >>> streams = [info - ... for info in socket.getaddrinfo('crisewing.com', 'http') - ... if info[1] == socket.SOCK_STREAM] - >>> streams - [(2, 1, 6, '', ('108.59.11.99', 80))] - >>> info = streams[0] - >>> cewing_socket = socket.socket(*info[:3]) - - -Connecting a Socket -------------------- - -Once the socket is constructed with the appropriate *family*, *type* and -*protocol*, we can connect it to the address of our remote server:: - - >>> cewing_socket.connect(info[-1]) - >>> - -.. class:: incremental - -* a successful connection returns ``None`` - -* a failed connection raises an error - -* you can use the *type* of error returned to tell why the connection failed. - - -Sending a Message ------------------ - -Send a message to the server on the other end of our connection (we'll -learn in session 2 about the message we are sending):: - - >>> msg = "GET / HTTP/1.1\r\n" - >>> msg += "Host: crisewing.com\r\n\r\n" - >>> cewing_socket.sendall(msg) - >>> - -.. class:: incremental small - -* the transmission continues until all data is sent or an error occurs - -* success returns ``None`` - -* failure to send raises an error - -* you can use the type of error to figure out why the transmission failed - -* if an error occurs you **cannot** know how much, if any, of your data was - sent - - -Receiving a Reply ------------------ - -Whatever reply we get is received by the socket we created. We can read it -back out (again, **do not type this yet**):: - - >>> response = cewing_socket.recv(4096) - >>> response - 'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53 - ... - -.. class:: incremental small - -* The sole required argument is ``buffer_size`` (an integer). It should be a - power of 2 and smallish (~4096) -* It returns a byte string of ``buffer_size`` (or smaller if less data was - received) -* If the response is longer than ``buffer size``, you can call the method - repeatedly. The last bunch will be less than ``buffer size``. - - -Cleaning Up ------------ - -When you are finished with a connection, you should always close it:: - - >>> cewing_socket.close() - - -Putting it all together ------------------------ - -First, connect and send a message: - -.. class:: small - -:: - - >>> streams = [info - ... for info in socket.getaddrinfo('crisewing.com', 'http') - ... if info[1] == socket.SOCK_STREAM] - >>> info = streams[0] - >>> cewing_socket = socket.socket(*info[:3]) - >>> cewing_socket.connect(info[-1]) - >>> msg = "GET / HTTP/1.1\r\n" - >>> msg += "Host: crisewing.com\r\n\r\n" - >>> cewing_socket.sendall(msg) - - -Putting it all together ------------------------ - -Then, receive a reply, iterating until it is complete: - -:: - - >>> buffsize = 4096 - >>> response = '' - >>> done = False - >>> while not done: - ... msg_part = cewing_socket.recv(buffsize) - ... if len(msg_part) < buffsize: - ... done = True - ... cewing_socket.close() - ... response += msg_part - ... - >>> len(response) - 19427 - - -Server Side ------------ - -.. class:: big-centered - -What about the other half of the equation? - -Construct a Socket ------------------- - -**For the moment, stop typing this into your interpreter.** - -.. container:: incremental - - Again, we begin by constructing a socket. Since we are actually the server - this time, we get to choose family, type and protocol:: - - >>> server_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_TCP) - ... - >>> server_socket - - - -Bind the Socket ---------------- - -Our server socket needs to be bound to an address. This is the IP Address and -Port to which clients must connect:: - - >>> address = ('127.0.0.1', 50000) - >>> server_socket.bind(address) - -.. class:: incremental - -**Terminology Note**: In a server/client relationship, the server *binds* to -an address and port. The client *connects* - - -Listen for Connections ----------------------- - -Once our socket is bound to an address, we can listen for attempted -connections:: - - >>> server_socket.listen(1) - -.. class:: incremental - -* The argument to ``listen`` is the *backlog* - -* The *backlog* is the **maximum** number of connection requests that the - socket will queue - -* Once the limit is reached, the socket refuses new connections. - - -Accept Incoming Messages ------------------------- - -When a socket is listening, it can receive incoming connection requests:: - - >>> connection, client_address = server_socket.accept() - ... # this blocks until a client connects - >>> connection.recv(16) - -.. class:: incremental - -* The ``connection`` returned by a call to ``accept`` is a **new socket**. - This new socket is used to communicate with the client - -* The ``client_address`` is a two-tuple of IP Address and Port for the client - socket - -* When a connection request is 'accepted', it is removed from the backlog - queue. - - -Send a Reply ------------- - -The same socket that received a message from the client may be used to return -a reply:: - - >>> connection.sendall("message received") - - -Clean Up --------- - -Once a transaction between the client and server is complete, the -``connection`` socket should be closed:: - - >>> connection.close() - -.. class:: incremental - -Note that the ``server_socket`` is *never* closed as long as the server -continues to run. - - -Getting the Flow ----------------- - -The flow of this interaction can be a bit confusing. Let's see it in action -step-by-step. - -.. class:: incremental - -Open a second python interpreter and place it next to your first so you can -see both of them at the same time. - - -Create a Server ---------------- - -In your first python interpreter, create a server socket and prepare it for -connections:: - - >>> server_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_IP) - >>> server_socket.bind(('127.0.0.1', 50000)) - >>> server_socket.listen(1) - >>> conn, addr = server_socket.accept() - -.. class:: incremental - -At this point, you should **not** get back a prompt. The server socket is -waiting for a connection to be made. - - -Create a Client ---------------- - -In your second interpreter, create a client socket and prepare to send a -message:: - - >>> import socket - >>> client_socket = socket.socket( - ... socket.AF_INET, - ... socket.SOCK_STREAM, - ... socket.IPPROTO_IP) - -.. container:: incremental - - Before connecting, keep your eye on the server interpreter:: - - >>> client_socket.connect(('127.0.0.1', 50000)) - - -Send a Message Client->Server ------------------------------ - -As soon as you made the connection above, you should have seen the prompt -return in your server interpreter. The ``accept`` method finally returned a -new connection socket. - -.. class:: incremental - -When you're ready, type the following in the *client* interpreter. - -.. class:: incremental - -:: - - >>> client_socket.sendall("Hey, can you hear me?") - - -Receive and Respond -------------------- - -Back in your server interpreter, go ahead and receive the message from your -client:: - - >>> conn.recv(32) - 'Hey, can you hear me?' - -Send a message back, and then close up your connection:: - - >>> conn.sendall("Yes, I hear you.") - >>> conn.close() - - -Finish Up ---------- - -Back in your client interpreter, take a look at the response to your message, -then be sure to close your client socket too:: - - >>> client_socket.recv(32) - 'Yes, I hear you.' - >>> client_socket.close() - -And now that we're done, we can close up the server too (back in the server -interpreter):: - - >>> server_socket.close() - - -Congratulations! ----------------- - -.. class:: big-centered - -You've run your first client-server interaction - - -Homework --------- - -Your homework assignment for this week is to take what you've learned here -and build a simple "echo" server. - -.. class:: incremental - -The server should automatically return to any client that connects *exactly* -what it receives (it should **echo** all messages). - -.. class:: incremental - -You will also write a python script that, when run, will send a message to the -server and receive the reply, printing it to ``stdout``. - -.. class:: incremental - -Finally, you'll do all of this so that it can be tested. - - -What You Have -------------- - -In our class repository, there is a folder ``assignments/session01``. - -.. class:: incremental - -Inside that folder, you should find: - -.. class:: incremental - -* A file ``tasks.txt`` that contains these instructions - -* A skeleton for your server in ``echo_server.py`` - -* A skeleton for your client script in ``echo_client.py`` - -* Some simple tests in ``tests.py`` - -.. class:: incremental - -Your task is to make the tests pass. - - -Running the tests ------------------ - -To run the tests, you'll have to set the server running in one terminal: - -.. class:: small - -:: - - $ python echo_server.py - -.. container:: incremental - - Then, in a second terminal, you will execute the tests: - - .. class:: small - - :: - - $ python tests.py - -.. container:: incremental - - You should see output like this: - - .. class:: small - - :: - - [...] - FAILED (failures=2) - - -Submitting Your Homework ------------------------- - -To submit your homework: - -.. class:: incremental - -* In github, make a fork of my repository into *your* account. - -* Clone your fork of my repository to your computer. - -* Do your work in the ``assignments/session01/`` folder on your computer and - commit your changes to your fork. - -* When you are finished and your tests are passing, you will open a pull - request in github.com from your fork to mine. - -.. class:: incremental - -I will review your work when I receive your pull requests, make comments on it -there, and then close the pull request. - - -Going Further -------------- - -In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. - -.. class:: incremental - -If you finish the first part of the homework in less than 3-4 hours give one -or more of these a whirl. - -.. class:: incremental - -They are not required, but if you include solutions in your pull request, I'll -review your work. diff --git a/source/presentations/session04-old.rst b/source/presentations/session04-old.rst new file mode 100644 index 00000000..f8214583 --- /dev/null +++ b/source/presentations/session04-old.rst @@ -0,0 +1,1435 @@ +Python Web Programming +====================== + +.. image:: img/gateway.jpg + :align: left + :width: 50% + +Session 4: CGI, WSGI and Living Online + +.. class:: intro-blurb + +Wherein we discover the gateways to dynamic processes on a server. + +.. class:: image-credit + +image: The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY + +But First +--------- + +.. class:: big-centered + +A look at some of the cool mashups you built over the week. + + +But First +--------- + +Clean up the git situation. + + +But First +--------- + +Before you leave the classroom today, please complete the following tasks: + +1. Create a virtualenv called ``flaskenv`` +2. Activate that virtualenv +3. ``pip install flask`` to your virtualenv + +You will need this for some of your homework this week. + +But First +--------- + +A special note to pay attention to the readings. You will be expected to have +read the basics on Jinja2, SQLite3 and Flask **before** class starts. + +Previously +---------- + +.. class:: incremental + +* You've learned about passing messages back and forth with sockets +* You've created a simple HTTP server using sockets +* You may even have made your server *dynamic* by returning the output of a + python script. + +.. class:: incremental + +What if you want to pass information to that script? + +.. class:: incremental + +How can you give the script access to information about the HTTP request +itself? + + +Stepping Away +------------- + +A computer has an *environment*: + +.. container:: incremental + + in \*nix, you can see this in a shell: + + .. class:: small + + :: + + $ printenv + TERM_PROGRAM=iTerm.app + ... + +.. container:: incremental + + or in Windows at the command prompt: + + .. class:: small + + :: + + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... + + +Setting The Environment +----------------------- + +This can be manipulated: + +.. container:: incremental + + In a ``bash`` shell we can do this: + + .. class:: small + + :: + + $ export VARIABLE='some value' + $ echo $VARIABLE + some value + +.. container:: incremental + + or at a Windows command prompt: + + .. class:: small + + :: + + C:\Users\Administrator\> set VARIABLE='some value' + C:\Users\Administrator\> echo %VARIABLE% + 'some value' + + +Viewing the Results +------------------- + +These new values are now part of the *environment* + +.. container:: incremental + + \*nix: + + .. class:: small + + :: + + $ printenv + TERM_PROGRAM=iTerm.app + ... + VARIABLE=some value + +.. container:: incremental + + Windows: + + .. class:: small + + :: + + C:\> set + ALLUSERSPROFILE=C:\ProgramData + ... + VARIABLE='some value' + +Environment in Python +--------------------- + +We can see this *environment* in Python, too:: + + $ python + +.. code-block:: python + + >>> import os + >>> print os.environ['VARIABLE'] + some_value + >>> print os.environ.keys() + ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', + 'LOGNAME', 'USER', 'PATH', ...] + +Altering the Environment +------------------------ + +You can alter os environment values while in Python: + +.. code-block:: python + :class: small + + >>> os.environ['VARIABLE'] = 'new_value' + >>> print os.environ['VARIABLE'] + new_value + +.. container:: incremental + + But that doesn't change the original value, *outside* Python: + + .. class:: small + + :: + + >>> ^D + + $ echo this is the value: $VARIABLE + this is the value: some_value + + C:\> \Users\Administrator\> echo %VARIABLE% + 'some value' + +Lessons Learned +--------------- + +.. class:: incremental + +* Subprocesses inherit their environment from their Parent +* Parents do not see changes to environment in subprocesses +* In Python, you can actually set the environment for a subprocess explicitly + +.. class:: incremental small + +:: + + subprocess.Popen(args, bufsize=0, executable=None, + stdin=None, stdout=None, stderr=None, + preexec_fn=None, close_fds=False, + shell=False, cwd=None, env=None, # <------- + universal_newlines=False, startupinfo=None, + creationflags=0) + + +Web Environment +--------------- + +.. class:: big-centered + +CGI is little more than a set of standard environmental variables + + +RFC 3875 +-------- + +First discussed in 1993, formalized in 1997, the current version (1.1) has +been in place since 2004. + +From the preamble: + +.. class:: center + +*This memo provides information for the Internet community. It does not specify +an Internet standard of any kind.* + +.. class:: image-credit + +RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 + + +Meta-Variables +-------------- + +.. class:: small + +:: + + 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 + 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 + 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 + 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 + 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 + 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 + 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 + 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 + 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 + 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 + 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 + 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 + 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 + 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 + 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 + 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 + 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 + 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 + + +Running CGI +----------- + +You have a couple of options: + +.. class:: incremental + +* Python Standard Library CGIHTTPServer +* Apache +* IIS (on Windows) +* Some other HTTP server that implements CGI (lighttpd, ...?) + +.. class:: incremental + +Let's keep it simple by using the Python module + + +Preparations +------------ + +In the class resources, you'll find a directory named ``cgi``. Make a copy of +that folder in your class working directory. + +.. class:: incremental small red + +Windows Users, you will have to edit the first line of +``cgi/cgi-bin/cgi_1.py`` to point to your python executable. + +.. class:: incremental + +* Open *two* terminal windows in this ``cgi`` directory +* In the first terminal, run ``python -m CGIHTTPServer`` +* Open a web browser and load ``http://localhost:8000/`` +* Click on *CGI Test 1* + + +Did that work? +-------------- + +* If nothing at all happens, check your terminal window +* Look for this: ``OSError: [Errno 13] Permission denied`` +* If you see something like that, check permissions for ``cgi-bin`` *and* + ``cgi_1.py`` +* The file must be executable, the directory needs to be readable *and* + executable. + + +.. class:: incremental + +Remember that you can use the bash ``chmod`` command to change permissions in +\*nix + +.. class:: incremental + +Windows users, use the 'properties' context menu to get to permissions, just +grant 'full' + +Break It +-------- + +Problems with permissions can lead to failure. So can scripting errors + +.. class:: incremental + +* Open ``cgi/cgi-bin/cgi_1.py`` in an editor +* Before where it says ``cgi.test()``, add a single line: + +.. code-block:: python + :class: incremental + + 1 / 0 + +.. class:: incremental + +Reload your browser, what happens now? + + +Errors in CGI +------------- + +CGI is famously difficult to debug. There are reasons for this: + +.. class:: incremental + +* CGI is designed to provide access to runnable processes to *the internet* +* The internet is a wretched hive of scum and villainy +* Revealing error conditions can expose data that could be exploited + +Viewing Errors in Python CGI +---------------------------- + +Back in your editor, add the following lines, just below ``import cgi``: + +.. code-block:: python + :class: incremental + + import cgitb + cgitb.enable() + +.. class:: incremental + +Now, reload again. + +cgitb Output +------------ + +.. image:: img/cgitb_output.png + :align: center + :width: 100% + + +Repair the Error +---------------- + +Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: + +.. code-block:: python + :class: small + + #!/usr/bin/python + import cgi + import cgitb + + cgitb.enable() + + cgi.test() + +.. class:: incremental + +Notice the first line of that script: ``#!/usr/bin/python``. This is called a +*shebang* (short for hash-bang) and it tells the system what executable +program to use when running the script. + + +CGI Process Execution +--------------------- + +When a web server like ``CGIHTTPServer`` or ``Apache`` runs a CGI script, it +simply attempts to run the script as if it were a normal system user. This is +just like you calling:: + + $ ./cgi_bin/cgi_1.py + +.. class:: incremental + +In fact try that now in your second terminal (use the real path), what do you +get? + +.. class:: incremental small center + +Windows folks, you may need ``C:\>python cgi_1.py`` + +.. class:: incremental + +What is missing? + + +CGI Process Execution +--------------------- + +There are a couple of important facts that are related to the way CGI +processes are run: + +.. class:: incremental + +* The script **must** include a *shebang* so that the system knows how to run + it. +* The script **must** be executable. +* The *executable* named in the *shebang* will be called as the *nobody* user. +* This is a security feature to prevent CGI scripts from running as a user + with any privileges. +* This means that the *executable* from the script *shebang* must be one that + *anyone* can run. + + +The CGI Environment +------------------- + +CGI is largely a set of agreed-upon environmental variables. + +.. class:: incremental + +We've seen how environmental variables are found in python in ``os.environ`` + +.. class:: incremental + +We've also seen that at least some of the variables in CGI are **not** in the +standard set of environment variables. + +.. class:: incremental + +Where do they come from? + + +CGI Servers +----------- + +Let's find 'em. In a terminal (on your local machine, please) fire up python: + +.. code-block:: + + >>> import CGIHTTPServer + >>> CGIHTTPServer.__file__ + '/big/giant/path/to/lib/python2.6/CGIHTTPServer.py' + +.. class:: incremental + +Copy this path and open the file it points to in your text editor + + +Environmental Set Up +-------------------- + +From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method: + +.. code-block:: python + :class: tiny + + # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html + # XXX Much of the following could be prepared ahead of time! + env = {} + env['SERVER_SOFTWARE'] = self.version_string() + env['SERVER_NAME'] = self.server.server_name + env['GATEWAY_INTERFACE'] = 'CGI/1.1' + env['SERVER_PROTOCOL'] = self.protocol_version + env['SERVER_PORT'] = str(self.server.server_port) + env['REQUEST_METHOD'] = self.command + ... + ua = self.headers.getheader('user-agent') + if ua: + env['HTTP_USER_AGENT'] = ua + ... + os.environ.update(env) + ... + + +CGI Scripts +----------- + +And that's it, the big secret. The server takes care of setting up the +environment so it has what is needed. + +.. class:: incremental + +Now, in reverse. How does the information that a script creates end up in your +browser? + +.. class:: incremental + +A CGI Script must print its results to stdout. + +.. class:: incremental + +Use the same method as above to import and open the source file for the +``cgi`` module. Note what ``test`` does for an example of this. + + +Recap: +------ + +What the Server Does: + +.. class:: incremental small + +* parses the request +* sets up the environment, including HTTP and SERVER variables +* figures out if the URI points to a CGI script and runs it +* builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\\r\\n') +* appends what comes from the script on stdout and sends that back + +What the Script Does: + +.. class:: incremental small + +* names appropriate *executable* in it's *shebang* line +* uses os.environ to read information from the HTTP request +* builds *any and all* appropriate **HTTP Headers** (Content-type:, + Content-length:, ...) +* prints headers, empty line and script output (body) to stdout + + +In-Class Exercise +----------------- + +You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. +Let's make our own version of this. + +.. class:: incremental small + +* In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. +* Open that file in your editor. +* The script contains some html with text naming elements of the CGI + environment. +* You should use the values in os.environ to fill in the blanks. +* You should be able to view the results of your work by loading + ``http://localhost:8000/`` and clicking on *Exercise One* + +.. class:: incremental center + +**GO** + + +User Provided Data +------------------ + +All this is well and good, but where's the *dynamic* stuff? + +.. class:: incremental + +It'd be nice if a user could pass form data to our script for it to use. + +.. container:: incremental + + In HTTP, these types of inputs show up in the URL *query* (the part after + the ``?``):: + + http://myhost.com/script.py?a=23&b=37 + + +Form Data in CGI +---------------- + +In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: + +.. code-block:: python + :class: incremental small + + import cgi + + form = cgi.FieldStorage() + stringval = form.getvalue('a', None) + listval = form.getlist('b') + +.. class:: incremental + +* The values in the ``FieldStorage`` are *always* strings +* ``getvalue`` allows you to return a default, in case the field isn't present +* ``getlist`` always returns a list: empty, one-valued, or as many values as + are present + + +In-Class Exercise +----------------- + +Let's create a dynamic adding machine. + +.. class:: incremental + +* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. +* In the ``index.html`` file in the ``cgi`` directory, the third link leads to + this file. +* You will use the structure of that link, and what you learned just now about + ``cgi.FieldStorage``. +* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all + operands sent via the url query is returned. + +.. class:: incremental + +For extra fun, return the results in ``json`` format (mimetype: +'application/json'). + + +My Solution +----------- + +.. code-block:: python + :class: small incremental + + form = cgi.FieldStorage() + operands = form.getlist('operand') + total = 0 + for operand in operands: + try: + value = int(operand) + except ValueError: + value = 0 + total += value + + output = {'result': total} + json_output = json.dumps(output) + + print "Content-Type: application/json" + print "Content-Length: %s" % len(json_output) + print + print json_output + + +Stopping Point +-------------- + +.. class:: big-centered + +Let's take a break here, before continuing + + +CGI Problems +------------ + +CGI is great, but there are problems: + +.. class:: incremental + +* Code is executed *in a new process* +* **Every** call to a CGI script starts a new process on the server +* Starting a new process is expensive in terms of server resources +* *Especially for interpreted languages like Python* + +.. class:: incremental + +How do we overcome this problem? + + +Alternatives to CGI +------------------- + +The most popular approach is to have a long-running process *inside* the +server that handles CGI scripts. + +.. class:: incremental + +FastCGI and SCGI are existing implementations of CGI in this fashion. The +Apache module **mod_python** offers a similar capability for Python code. + +.. class:: incremental + +* Each of these options has a specific API +* None are compatible with each-other +* Code written for one is **not portable** to another + +.. class:: incremental + +This makes it much more difficult to *share resources* + + +WSGI +---- + +Enter WSGI, the Web Server Gateway Interface. + +.. class:: incremental + +Where other alternatives are specific implementations of the CGI standard, +WSGI is itself a new standard, not an implementation. + +.. class:: incremental + +WSGI is generalized to describe a set of interactions, so that developers can +write WSGI-capable apps and deploy them on any WSGI server. + +.. class:: incremental + +Read the WSGI spec: http://www.python.org/dev/peps/pep-0333 + + +WSGI: Apps and Servers +---------------------- + +.. class:: small + +WSGI consists of two parts, a *server* and an *application*. + +.. class:: small + +A WSGI Server must: + +.. class:: incremental small + +* set up an environment, much like the one in CGI +* provide a method ``start_response(status, headers, exc_info=None)`` +* build a response body by calling an *application*, passing + ``environment`` and ``start_response`` as args +* return a response with the status, headers and body + +.. class:: small + +A WSGI Appliction must: + +.. class:: incremental small + +* Be a callable (function, method, class) +* Take an environment and a ``start_response`` callable as arguments +* Call the ``start_response`` method. +* Return an iterable of 0 or more strings, which are treated as the body of + the response. + + +Simplified WSGI Server +---------------------- + +.. code-block:: python + :class: small + + from some_application import simple_app + + def build_env(request): + # put together some environment info from the reqeuest + return env + + def handle_request(request, app): + environ = build_env(request) + iterable = app(environ, start_response) + for data in iterable: + # send data to client here + + def start_response(status, headers): + # start an HTTP response, sending status and headers + + # listen for HTTP requests and pass on to handle_request() + serve(simple_app) + + +Simple WSGI Application +----------------------- + +Where the simplified server above is **not** functional, this *is* a complete +app: + +.. code-block:: python + + def application(environ, start_response) + status = "200 OK" + body = "Hello World\n" + response_headers = [('Content-type', 'text/plain'), + ('Content-length', len(body))] + start_response(status, response_headers) + return [body] + + +WSGI Middleware +--------------- + +A third part of the puzzle is something called WSGI *middleware* + +.. class:: incremental + +* Middleware implements both the *server* and *application* interfaces +* Middleware acts as a server when viewed from an application +* Middleware acts as an application when viewed from a server + +.. image:: img/wsgi_middleware_onion.png + :align: center + :width: 38% + :class: incremental + + +Flowcharts +---------- + +WSGI Servers: + +.. class:: center incremental + +**HTTP <---> WSGI** + +.. class:: incremental + +WSGI Applications: + +.. class:: center incremental + +**WSGI <---> app code** + + +The Whole Enchilada +------------------- + +The WSGI *Stack* can thus be expressed like so: + +.. class:: incremental big-centered + +**HTTP <---> WSGI <---> app code** + + +Using wsgiref +------------- + +The Python standard lib provides a reference implementation of WSGI: + +.. image:: img/wsgiref_flow.png + :align: center + :width: 80% + :class: incremental + + +Apache mod_wsgi +--------------- + +You can also deploy with Apache as your HTTP server, using **mod_wsgi**: + +.. image:: img/mod_wsgi_flow.png + :align: center + :width: 80% + :class: incremental + + +Proxied WSGI Servers +-------------------- + +Finally, it is also common to see WSGI apps deployed via a proxied WSGI +server: + +.. image:: img/proxy_wsgi.png + :align: center + :width: 80% + :class: incremental + + +The WSGI Environment +-------------------- + +.. class:: small + +REQUEST_METHOD + The HTTP request method, such as "GET" or "POST". This cannot ever be an + empty string, and so is always required. +SCRIPT_NAME + The initial portion of the request URL's "path" that corresponds to the + application object, so that the application knows its virtual "location". + This may be an empty string, if the application corresponds to the "root" of + the server. +PATH_INFO + The remainder of the request URL's "path", designating the virtual + "location" of the request's target within the application. This may be an + empty string, if the request URL targets the application root and does not + have a trailing slash. +QUERY_STRING + The portion of the request URL that follows the "?", if any. May be empty or + absent. +CONTENT_TYPE + The contents of any Content-Type fields in the HTTP request. May be empty or + absent. + + +The WSGI Environment +-------------------- + +.. class:: small + +CONTENT_LENGTH + The contents of any Content-Length fields in the HTTP request. May be empty + or absent. +SERVER_NAME, SERVER_PORT + When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to + complete the URL. Note, however, that HTTP_HOST, if present, should be used + in preference to SERVER_NAME for reconstructing the request URL. See the URL + Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT + can never be empty strings, and so are always required. +SERVER_PROTOCOL + The version of the protocol the client used to send the request. Typically + this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the + application to determine how to treat any HTTP request headers. (This + variable should probably be called REQUEST_PROTOCOL, since it denotes the + protocol used in the request, and is not necessarily the protocol that will + be used in the server's response. However, for compatibility with CGI we + have to keep the existing name.) + + +The WSGI Environment +-------------------- + +.. class:: small + +HTTP\_ Variables + Variables corresponding to the client-supplied HTTP request headers (i.e., + variables whose names begin with "HTTP\_"). The presence or absence of these + variables should correspond with the presence or absence of the appropriate + HTTP header in the request. + +.. class:: center incremental + +**Seem Familiar?** + + +A Bit of Repetition +------------------- + +Let's start simply. We'll begin by repeating our first CGI exercise in WSGI + +.. class:: incremental + +* Find the ``wsgi`` directory in the class resources. Copy it to your working + directory. +* Open the file ``wsgi_1.py`` in your text editor. +* We will fill in the missing values using the wsgi ``environ``, just as we + use ``os.environ`` in cgi + +.. class:: incremental center + +**But First** + + +Orientation +----------- + +.. code-block:: python + :class: small + + if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('localhost', 8080, application) + srv.serve_forever() + +.. class:: incremental + +Note that we pass our ``application`` function to the server factory + +.. class:: incremental + +We don't have to write a server, ``wsgiref`` does that for us. + +.. class:: incremental + +In fact, you should *never* have to write a WSGI server. + + +Orientation +----------- + +.. code-block:: python + :class: small + + def application(environ, start_response): + response_body = body % ( + environ.get('SERVER_NAME', 'Unset'), # server name + ... + ) + status = '200 OK' + response_headers = [('Content-Type', 'text/html'), + ('Content-Length', str(len(response_body)))] + start_response(status, response_headers) + return [response_body] + +.. class:: incremental + +We do not define ``start_response``, the application does that. + +.. class:: incremental + +We *are* responsible for determining the HTTP status. + + +Running a WSGI Script +--------------------- + +You can run this script with python:: + + $ python wsgi_1.py + +.. class:: incremental + +This will start a wsgi server. What host and port will it use? + +.. class:: incremental + +Point your browser at ``http://localhost:8080/``. Did it work? + +.. class:: incremental + +Go ahead and fill in the missing bits. Use the ``environ`` passed into +``application`` + + +Some Tips +--------- + +Because WSGI is a long-running process, the file you are editing is *not* +reloaded after you edit it. + +.. class:: incremental + +You'll need to quit and re-run the script between edits. + +.. class:: incremental + +You may also want to consider using ``print environ`` in your application so +you can see the dictionary. + +.. class:: incremental + +If you do that, where will the printed environment appear? + + +A More Complex Example +---------------------- + +Let's create a multi-page wsgi application. It will serve a small database of +python books. + +.. class:: incremental + +The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + +.. class:: incremental + +* We'll need a listing page that shows the titles of all the books +* Each title will link to a details page for that book +* The details page for each book will display all the information and have a + link back to the list + + +Some Questions to Ponder +------------------------ + +.. class:: incremental + +When viewing our first wsgi app, do we see the name of the wsgi application +script anywhere in the URL? + +.. class:: incremental + +In our wsgi application script, how many applications did we actually have? + +.. class:: incremental + +How are we going to serve different types of information out of a single +application? + + +Dispatch +-------- + +We have to write an app that will map our incoming request path to some code +that can handle that request. + +.. class:: incremental + +This process is called ``dispatch``. There are many possible approaches + +.. class:: incremental + +Let's begin by designing this piece of it. + +.. class:: incremental + +Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. + + +PATH +---- + +The wsgi environment gives us access to *PATH_INFO*, which maps to the URI the +user requested when they loaded the page. + +.. class:: incremental + +We can design the URLs that our app will use to assist us in routing. + +.. class:: incremental + +Let's declare that any request for ``/`` will map to the list page + +.. container:: incremental + + We can also say that the URL for a book will look like this:: + + http://localhost:8080/book/ + +Writing resolve_path +-------------------- + +Let's write a function, called ``resolve_path`` in our application file. + +.. class:: incremental + +* It should take the *PATH_INFO* value from environ as an argument. +* It should return the function that will be called. +* It should also return any arguments needed to call that function. +* This implies of course that the arguments should be part of the PATH + + +My Solution +----------- + +.. code-block:: python + :class: small incremental + + def resolve_path(path): + urls = [(r'^$', books), + (r'^book/(id[\d]+)$', book)] + matchpath = path.lstrip('/') + for regexp, func in urls: + match = re.match(regexp, matchpath) + if match is None: + continue + args = match.groups([]) + return func, args + # we get here if no url matches + raise NameError + + +Application Updates +------------------- + +We need to hook our new router into the application. + +.. class:: incremental + +* The path should be extracted from ``environ``. +* The router should be used to get a function and arguments +* The body to return should come from calling that function with those + arguments +* If an error is raised by calling the function, an appropriate response + should be returned +* If the router raises a NameError, the application should return a 404 + response + + +My Solution +----------- + +.. code-block:: python + :class: small incremental + + def application(environ, start_response): + headers = [("Content-type", "text/html")] + try: + path = environ.get('PATH_INFO', None) + if path is None: + raise NameError + func, args = resolve_path(path) + body = func(*args) + status = "200 OK" + except NameError: + status = "404 Not Found" + body = "

Not Found

" + except Exception: + status = "500 Internal Server Error" + body = "

Internal Server Error

" + finally: + headers.append(('Content-length', str(len(body)))) + start_response(status, headers) + return [body] + + +Test Your Work +-------------- + +Once you've got your script settled, run it:: + + $ python bookapp.py + +.. class:: incremental + +Then point your browser at ``http://localhost:8080/`` + +.. class:: incremental + +* ``http://localhost/book/id3`` +* ``http://localhost/book/id73/`` +* ``http://localhost/sponge/damp`` + +.. class:: incremental + +Did that all work as you would have expected? + + +Building the List +----------------- + +The function ``books`` should return an html list of book titles where each +title is a link to the detail page for that book + +.. class:: incremental + +* You'll need all the ids and titles from the book database. +* You'll need to build a list in HTML using this information +* Each list item should have the book title as a link +* The href for the link should be of the form ``/book/`` + + +My Solution +----------- + +.. code-block:: python + :class: incremental small + + def books(): + all_books = DB.titles() + body = ['

My Bookshelf

', '
    '] + item_template = '
  • {title}
  • ' + for book in all_books: + body.append(item_template.format(**book)) + body.append('
') + return '\n'.join(body) + + +Test Your Work +-------------- + +Quit and then restart your application script:: + + $ python bookapp.py + +.. container:: incremental + + Then reload the root of your application:: + + http://localhost:8080/ + +.. class:: incremental + +You should see a nice list of the books in the database. Do you? + +.. class:: incremental + +Click on a link to view the detail page. Does it load without error? + + +Showing Details +--------------- + +The next step of course is to polish up those detail pages. + +.. class:: incremental + +* You'll need to retrieve a single book from the database +* You'll need to format the details about that book and return them as HTML +* You'll need to guard against ids that do not map to books + +.. class:: incremental + +In this last case, what's the right HTTP response code to send? + + +My Solution +----------- + +.. code-block:: python + :class: incremental small + + def book(book_id): + page = """ +

{title}

+ + + + +
Author{author}
Publisher{publisher}
ISBN{isbn}
+ Back to the list + """ + book = DB.title_info(book_id) + if book is None: + raise NameError + return page.format(**book) + + +Revel in Your Success +--------------------- + +Quit and restart your script one more time + +.. class:: incremental + +Then poke around at your application and see the good you've made + +.. class:: incremental + +And your application is portable and sharable + +.. class:: incremental + +It should run equally well under any `wsgi server +`_ + + +A Few Steps Further +------------------- + +Next steps for an app like this might be: + +* Create a shared full page template and incorporate it into your app +* Improve the error handling by emitting error codes other than 404 and 500 +* Swap out the basic backend here with a different one, maybe a Web Service? +* Think about ways to make the application less tightly coupled to the pages + it serves + + +Homework +-------- + +For your homework this week, you'll be creating a wsgi application of your +own. + +.. class:: incremental + +As the source of your data, use the mashup you created last week. + +.. class:: incremental + +Your application should have at least two separate "pages" in it. + +.. class:: incremental + +The HTML you produce does not need to be pretty, but it should be something +that shows up in a browser. + + +Submitting Your Homework +------------------------ + +To submit your homework: + +.. class:: small + +* Create a new python script in ``assignments/session04``. It should be + something I can run with: + +.. class:: small + +:: + + $ python your_script.py + +.. class:: small + +* Once your script is running, I should be able to view your application in my + browser. + +* Include all instructions I need to successfully run and view your script. + +* Add tests for your code. I should be able to run the tests like so: + +.. class:: small + +:: + + $ python tests.py + +.. class:: small + +* Commit your changes to your fork of the repo in github, then open a pull + request. + + +But Wait, There's More +---------------------- + +In addition, read and step through the quick tutorials on templates and +database persistence in the assignments directory. + +Use your flaskenv Python, it has everything you need installed. + + +Wrap-Up +------- + +For educational purposes, you might wish to take a look at the source code for +the ``wsgiref`` module. It's the canonical example of a simple wsgi server + + >>> import wsgiref + >>> wsgiref.__file__ + '/full/path/to/your/copy/of/wsgiref.py' + ... + +.. class:: incremental center + +**See you Next Time** diff --git a/source/presentations/session04.rst b/source/presentations/session04.rst index f8214583..69f9106b 100644 --- a/source/presentations/session04.rst +++ b/source/presentations/session04.rst @@ -1,1435 +1,1201 @@ Python Web Programming ====================== -.. image:: img/gateway.jpg +.. image:: img/python.png :align: left - :width: 50% + :width: 33% -Session 4: CGI, WSGI and Living Online +Session 1: Networking and Sockets .. class:: intro-blurb -Wherein we discover the gateways to dynamic processes on a server. +Wherein we learn about the basic structure of the internet and explore the +building blocks that make it possible. -.. class:: image-credit - -image: The Wandering Angel http://www.flickr.com/photos/wandering_angel/1467802750/ - CC-BY But First --------- -.. class:: big-centered +Class presentations are available online for your use -A look at some of the cool mashups you built over the week. +.. class:: small +https://github.com/UWPCE-PythonCert/training.python_web -But First ---------- +.. class:: incremental -Clean up the git situation. +Licensed with Creative Commons BY-NC-SA +.. class:: small incremental -But First ---------- +* You must attribute the work +* You may not use the work for commercial purposes +* You have to share your versions just like this one -Before you leave the classroom today, please complete the following tasks: +.. class:: incremental -1. Create a virtualenv called ``flaskenv`` -2. Activate that virtualenv -3. ``pip install flask`` to your virtualenv +Find mistakes? See improvements? Make a pull request. -You will need this for some of your homework this week. But First --------- -A special note to pay attention to the readings. You will be expected to have -read the basics on Jinja2, SQLite3 and Flask **before** class starts. - -Previously ----------- +Classroom Protocol .. class:: incremental -* You've learned about passing messages back and forth with sockets -* You've created a simple HTTP server using sockets -* You may even have made your server *dynamic* by returning the output of a - python script. +Questions to ask: .. class:: incremental -What if you want to pass information to that script? +* What did you just say? +* Please explain what we just did again? +* Why didn't that work for me? +* Is that a typo? -.. class:: incremental -How can you give the script access to information about the HTTP request -itself? - - -Stepping Away -------------- - -A computer has an *environment*: +But First +--------- -.. container:: incremental +Classroom Protocol - in \*nix, you can see this in a shell: - - .. class:: small - - :: - - $ printenv - TERM_PROGRAM=iTerm.app - ... +.. class:: incremental -.. container:: incremental +Questions **not** to ask: - or in Windows at the command prompt: - - .. class:: small - - :: - - C:\> set - ALLUSERSPROFILE=C:\ProgramData - ... +.. class:: incremental +* **Hypotheticals**: What happens if I do X? +* **Research**: Can Python do Y? +* **Syllabus**: Are we going to cover Z in class? +* **Marketing questions**: please just don't. +* **Performance questions**: Is Python fast enough? +* **Unpythonic**: Why doesn't Python do it some other way? +* **Show off**: Look what I just did! -Setting The Environment ------------------------ -This can be manipulated: +But First +--------- -.. container:: incremental +.. class:: big-centered - In a ``bash`` shell we can do this: - - .. class:: small - - :: - - $ export VARIABLE='some value' - $ echo $VARIABLE - some value +Introductions -.. container:: incremental - or at a Windows command prompt: - - .. class:: small - - :: - - C:\Users\Administrator\> set VARIABLE='some value' - C:\Users\Administrator\> echo %VARIABLE% - 'some value' +Computer Communications +----------------------- +.. image:: img/network_topology.png + :align: left + :width: 40% -Viewing the Results -------------------- +.. class:: incremental -These new values are now part of the *environment* +* processes can communicate -.. container:: incremental +* inside one machine - \*nix: - - .. class:: small - - :: - - $ printenv - TERM_PROGRAM=iTerm.app - ... - VARIABLE=some value +* between two machines -.. container:: incremental +* among many machines - Windows: - - .. class:: small - - :: - - C:\> set - ALLUSERSPROFILE=C:\ProgramData - ... - VARIABLE='some value' +.. class:: image-credit -Environment in Python ---------------------- +image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite -We can see this *environment* in Python, too:: - $ python +Computer Communications +----------------------- -.. code-block:: python +.. image:: img/data_in_tcpip_stack.png + :align: left + :width: 55% - >>> import os - >>> print os.environ['VARIABLE'] - some_value - >>> print os.environ.keys() - ['VERSIONER_PYTHON_PREFER_32_BIT', 'VARIABLE', - 'LOGNAME', 'USER', 'PATH', ...] +.. class:: incremental -Altering the Environment ------------------------- +* Process divided into 'layers' -You can alter os environment values while in Python: +* 'Layers' are mostly arbitrary -.. code-block:: python - :class: small +* Different descriptions have different layers - >>> os.environ['VARIABLE'] = 'new_value' - >>> print os.environ['VARIABLE'] - new_value +* Most common is the 'TCP/IP Stack' -.. container:: incremental +.. class:: image-credit - But that doesn't change the original value, *outside* Python: - - .. class:: small - - :: +image: http://en.wikipedia.org/wiki/Internet_Protocol_Suite - >>> ^D - $ echo this is the value: $VARIABLE - this is the value: some_value - - C:\> \Users\Administrator\> echo %VARIABLE% - 'some value' +The TCP/IP Stack - Link +----------------------- -Lessons Learned ---------------- +The bottom layer is the 'Link Layer' .. class:: incremental -* Subprocesses inherit their environment from their Parent -* Parents do not see changes to environment in subprocesses -* In Python, you can actually set the environment for a subprocess explicitly +* Deals with the physical connections between machines, 'the wire' -.. class:: incremental small +* Packages data for physical transport -:: +* Executes transmission over a physical medium - subprocess.Popen(args, bufsize=0, executable=None, - stdin=None, stdout=None, stderr=None, - preexec_fn=None, close_fds=False, - shell=False, cwd=None, env=None, # <------- - universal_newlines=False, startupinfo=None, - creationflags=0) + * what that medium is is arbitrary +* Implemented in the Network Interface Card(s) (NIC) in your computer -Web Environment ---------------- -.. class:: big-centered +The TCP/IP Stack - Internet +--------------------------- -CGI is little more than a set of standard environmental variables +Moving up, we have the 'Internet Layer' +.. class:: incremental -RFC 3875 --------- +* Deals with addressing and routing -First discussed in 1993, formalized in 1997, the current version (1.1) has -been in place since 2004. + * Where are we going and how do we get there? -From the preamble: +* Agnostic as to physical medium (IP over Avian Carrier - IPoAC) -.. class:: center +* Makes no promises of reliability -*This memo provides information for the Internet community. It does not specify -an Internet standard of any kind.* +* Two addressing systems -.. class:: image-credit + .. class:: incremental -RFC 3875 - CGI Version 1.1: http://tools.ietf.org/html/rfc3875 + * IPv4 (current, limited '192.168.1.100') + * IPv6 (future, 3.4 x 10^38 addresses, '2001:0db8:85a3:0042:0000:8a2e:0370:7334') -Meta-Variables --------------- -.. class:: small +The TCP/IP Stack - Internet +--------------------------- -:: +.. class:: big-centered - 4. The CGI Request . . . . . . . . . . . . . . . . . . . . . . . 10 - 4.1. Request Meta-Variables . . . . . . . . . . . . . . . . . 10 - 4.1.1. AUTH_TYPE. . . . . . . . . . . . . . . . . . . . 11 - 4.1.2. CONTENT_LENGTH . . . . . . . . . . . . . . . . . 12 - 4.1.3. CONTENT_TYPE . . . . . . . . . . . . . . . . . . 12 - 4.1.4. GATEWAY_INTERFACE. . . . . . . . . . . . . . . . 13 - 4.1.5. PATH_INFO. . . . . . . . . . . . . . . . . . . . 13 - 4.1.6. PATH_TRANSLATED. . . . . . . . . . . . . . . . . 14 - 4.1.7. QUERY_STRING . . . . . . . . . . . . . . . . . . 15 - 4.1.8. REMOTE_ADDR. . . . . . . . . . . . . . . . . . . 15 - 4.1.9. REMOTE_HOST. . . . . . . . . . . . . . . . . . . 16 - 4.1.10. REMOTE_IDENT . . . . . . . . . . . . . . . . . . 16 - 4.1.11. REMOTE_USER. . . . . . . . . . . . . . . . . . . 16 - 4.1.12. REQUEST_METHOD . . . . . . . . . . . . . . . . . 17 - 4.1.13. SCRIPT_NAME. . . . . . . . . . . . . . . . . . . 17 - 4.1.14. SERVER_NAME. . . . . . . . . . . . . . . . . . . 17 - 4.1.15. SERVER_PORT. . . . . . . . . . . . . . . . . . . 18 - 4.1.16. SERVER_PROTOCOL. . . . . . . . . . . . . . . . . 18 - 4.1.17. SERVER_SOFTWARE. . . . . . . . . . . . . . . . . 19 - - -Running CGI ------------ +That's 4.3 x 10^28 addresses *per person alive today* -You have a couple of options: -.. class:: incremental +The TCP/IP Stack - Transport +---------------------------- -* Python Standard Library CGIHTTPServer -* Apache -* IIS (on Windows) -* Some other HTTP server that implements CGI (lighttpd, ...?) +Next up is the 'Transport Layer' .. class:: incremental -Let's keep it simple by using the Python module +* Deals with transmission and reception of data + * error correction, flow control, congestion management -Preparations ------------- +* Common protocols include TCP & UDP -In the class resources, you'll find a directory named ``cgi``. Make a copy of -that folder in your class working directory. + * TCP: Tranmission Control Protocol -.. class:: incremental small red + * UDP: User Datagram Protocol -Windows Users, you will have to edit the first line of -``cgi/cgi-bin/cgi_1.py`` to point to your python executable. +* Not all Transport Protocols are 'reliable' -.. class:: incremental + .. class:: incremental -* Open *two* terminal windows in this ``cgi`` directory -* In the first terminal, run ``python -m CGIHTTPServer`` -* Open a web browser and load ``http://localhost:8000/`` -* Click on *CGI Test 1* + * TCP ensures that dropped packets are resent + * UDP makes no such assurance + + * Reliability is slow and expensive -Did that work? --------------- -* If nothing at all happens, check your terminal window -* Look for this: ``OSError: [Errno 13] Permission denied`` -* If you see something like that, check permissions for ``cgi-bin`` *and* - ``cgi_1.py`` -* The file must be executable, the directory needs to be readable *and* - executable. +The TCP/IP Stack - Transport +---------------------------- +The 'Transport Layer' also establishes the concept of a **port** .. class:: incremental -Remember that you can use the bash ``chmod`` command to change permissions in -\*nix +* IP Addresses designate a specific *machine* on the network -.. class:: incremental +* A **port** provides addressing for individual *applications* in a single host -Windows users, use the 'properties' context menu to get to permissions, just -grant 'full' +* 192.168.1.100:80 (the *:80* part is the **port**) -Break It --------- - -Problems with permissions can lead to failure. So can scripting errors +* [2001:db8:85a3:8d3:1319:8a2e:370:7348]:443 (*:443* is the **port**) .. class:: incremental -* Open ``cgi/cgi-bin/cgi_1.py`` in an editor -* Before where it says ``cgi.test()``, add a single line: +This means that you don't have to worry about information intended for your +web browser being accidentally read by your email client. -.. code-block:: python - :class: incremental - 1 / 0 +The TCP/IP Stack - Transport +---------------------------- + +There are certain **ports** which are commonly understood to belong to given +applications or protocols: .. class:: incremental -Reload your browser, what happens now? +* 80/443 - HTTP/HTTPS +* 20 - FTP +* 22 - SSH +* 23 - Telnet +* 25 - SMTP +* ... +.. class:: incremental -Errors in CGI -------------- +These ports are often referred to as **well-known ports** -CGI is famously difficult to debug. There are reasons for this: +.. class:: small -.. class:: incremental +(see http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) -* CGI is designed to provide access to runnable processes to *the internet* -* The internet is a wretched hive of scum and villainy -* Revealing error conditions can expose data that could be exploited -Viewing Errors in Python CGI +The TCP/IP Stack - Transport ---------------------------- -Back in your editor, add the following lines, just below ``import cgi``: - -.. code-block:: python - :class: incremental - - import cgitb - cgitb.enable() +Ports are grouped into a few different classes .. class:: incremental -Now, reload again. +* Ports numbered 0 - 1023 are *reserved* -cgitb Output ------------- +* Ports numbered 1024 - 65535 are *open* -.. image:: img/cgitb_output.png - :align: center - :width: 100% +* Ports numbered 1024 - 49151 may be *registered* +* Ports numbered 49152 - 65535 are called *ephemeral* -Repair the Error ----------------- -Let's fix the error from our traceback. Edit your ``cgi_1.py`` file to match: +The TCP/IP Stack - Application +------------------------------ -.. code-block:: python - :class: small +The topmost layer is the 'Application Layer' - #!/usr/bin/python - import cgi - import cgitb +.. class:: incremental - cgitb.enable() +* Deals directly with data produced or consumed by an application - cgi.test() +* Reads or writes data using a set of understood, well-defined **protocols** -.. class:: incremental + * HTTP, SMTP, FTP etc. -Notice the first line of that script: ``#!/usr/bin/python``. This is called a -*shebang* (short for hash-bang) and it tells the system what executable -program to use when running the script. +* Does not know (or need to know) about lower layer functionality + * The exception to this rule is **endpoint** data (or IP:Port) -CGI Process Execution ---------------------- -When a web server like ``CGIHTTPServer`` or ``Apache`` runs a CGI script, it -simply attempts to run the script as if it were a normal system user. This is -just like you calling:: +The TCP/IP Stack - Application +------------------------------ - $ ./cgi_bin/cgi_1.py +.. class:: big-centered -.. class:: incremental +this is where we live and work -In fact try that now in your second terminal (use the real path), what do you -get? -.. class:: incremental small center +Sockets +------- -Windows folks, you may need ``C:\>python cgi_1.py`` +Think back for a second to what we just finished discussing, the TCP/IP stack. .. class:: incremental -What is missing? +* The *Internet* layer gives us an **IP Address** +* The *Transport* layer establishes the idea of a **port**. -CGI Process Execution ---------------------- +* The *Application* layer doesn't care about what happens below... -There are a couple of important facts that are related to the way CGI -processes are run: +* *Except for* **endpoint data** (IP:Port) .. class:: incremental -* The script **must** include a *shebang* so that the system knows how to run - it. -* The script **must** be executable. -* The *executable* named in the *shebang* will be called as the *nobody* user. -* This is a security feature to prevent CGI scripts from running as a user - with any privileges. -* This means that the *executable* from the script *shebang* must be one that - *anyone* can run. +A **Socket** is the software representation of that endpoint. +.. class:: incremental -The CGI Environment -------------------- +Opening a **socket** creates a kind of transceiver that can send and/or +receive *bytes* at a given IP address and Port. -CGI is largely a set of agreed-upon environmental variables. -.. class:: incremental +Sockets in Python +----------------- -We've seen how environmental variables are found in python in ``os.environ`` +Python provides a standard library module which provides socket functionality. +It is called **socket**. .. class:: incremental -We've also seen that at least some of the variables in CGI are **not** in the -standard set of environment variables. +The library is really just a very thin wrapper around the system +implementation of *BSD Sockets* .. class:: incremental -Where do they come from? +Let's spend a few minutes getting to know this module. +.. class:: incremental -CGI Servers ------------ - -Let's find 'em. In a terminal (on your local machine, please) fire up python: +We're going to do this next part together, so open up a terminal and start a +python interpreter -.. code-block:: - >>> import CGIHTTPServer - >>> CGIHTTPServer.__file__ - '/big/giant/path/to/lib/python2.6/CGIHTTPServer.py' +Sockets in Python +----------------- -.. class:: incremental +The Python sockets library allows us to find out what port a *service* uses: -Copy this path and open the file it points to in your text editor +.. class:: small + >>> import socket + >>> socket.getservbyname('ssh') + 22 -Environmental Set Up --------------------- +.. class:: incremental -From CGIHTTPServer.py, in the CGIHTTPServer.run_cgi method: +You can also do a *reverse lookup*, finding what service uses a given *port*: -.. code-block:: python - :class: tiny - - # Reference: http://hoohoo.ncsa.uiuc.edu/cgi/env.html - # XXX Much of the following could be prepared ahead of time! - env = {} - env['SERVER_SOFTWARE'] = self.version_string() - env['SERVER_NAME'] = self.server.server_name - env['GATEWAY_INTERFACE'] = 'CGI/1.1' - env['SERVER_PROTOCOL'] = self.protocol_version - env['SERVER_PORT'] = str(self.server.server_port) - env['REQUEST_METHOD'] = self.command - ... - ua = self.headers.getheader('user-agent') - if ua: - env['HTTP_USER_AGENT'] = ua - ... - os.environ.update(env) - ... +.. class:: incremental small + >>> socket.getservbyport(80) + 'http' -CGI Scripts ------------ -And that's it, the big secret. The server takes care of setting up the -environment so it has what is needed. +Sockets in Python +----------------- -.. class:: incremental +The sockets library also provides tools for finding out information about +*hosts*. For example, you can find out about the hostname and IP address of +the machine you are currently using:: -Now, in reverse. How does the information that a script creates end up in your -browser? + >>> socket.gethostname() + 'heffalump.local' + >>> socket.gethostbyname(socket.gethostname()) + '10.211.55.2' -.. class:: incremental -A CGI Script must print its results to stdout. +Sockets in Python +----------------- -.. class:: incremental +You can also find out about machines that are located elsewhere, assuming you +know their hostname. For example:: -Use the same method as above to import and open the source file for the -``cgi`` module. Note what ``test`` does for an example of this. + >>> socket.gethostbyname('google.com') + '173.194.33.4' + >>> socket.gethostbyname('uw.edu') + '128.95.155.135' + >>> socket.gethostbyname('crisewing.com') + '108.59.11.99' -Recap: ------- +Sockets in Python +----------------- -What the Server Does: +The ``gethostbyname_ex`` method of the ``socket`` library provides more +information about the machines we are exploring:: -.. class:: incremental small + >>> socket.gethostbyname_ex('google.com') + ('google.com', [], ['173.194.33.9', '173.194.33.14', + ... + '173.194.33.6', '173.194.33.7', + '173.194.33.8']) + >>> socket.gethostbyname_ex('crisewing.com') + ('crisewing.com', [], ['108.59.11.99']) + >>> socket.gethostbyname_ex('www.rad.washington.edu') + ('elladan.rad.washington.edu', # <- canonical hostname + ['www.rad.washington.edu'], # <- any machine aliases + ['128.95.247.84']) # <- all active IP addresses -* parses the request -* sets up the environment, including HTTP and SERVER variables -* figures out if the URI points to a CGI script and runs it -* builds an appropriate HTTP Response first line ('HTTP/1.1 200 OK\\r\\n') -* appends what comes from the script on stdout and sends that back -What the Script Does: +Sockets in Python +----------------- -.. class:: incremental small +To create a socket, you use the **socket** method of the ``socket`` library. +It takes up to three optional positional arguments (here we use none to get +the default behavior):: -* names appropriate *executable* in it's *shebang* line -* uses os.environ to read information from the HTTP request -* builds *any and all* appropriate **HTTP Headers** (Content-type:, - Content-length:, ...) -* prints headers, empty line and script output (body) to stdout + >>> foo = socket.socket() + >>> foo + -In-Class Exercise +Sockets in Python ----------------- -You've seen the output from the ``cgi.test()`` method from the ``cgi`` module. -Let's make our own version of this. +A socket has some properties that are immediately important to us. These +include the *family*, *type* and *protocol* of the socket:: -.. class:: incremental small + >>> foo.family + 2 + >>> foo.type + 1 + >>> foo.proto + 0 -* In the directory ``cgi-bin`` you will find the file ``cgi_2.py``. -* Open that file in your editor. -* The script contains some html with text naming elements of the CGI - environment. -* You should use the values in os.environ to fill in the blanks. -* You should be able to view the results of your work by loading - ``http://localhost:8000/`` and clicking on *Exercise One* +.. class:: incremental -.. class:: incremental center +You might notice that the values for these properties are integers. In fact, +these integers are **constants** defined in the socket library. -**GO** +A quick utility method +---------------------- -User Provided Data ------------------- +Let's define a method in place to help us see these constants. It will take a +single argument, the shared prefix for a defined set of constants: -All this is well and good, but where's the *dynamic* stuff? +.. class:: small -.. class:: incremental +:: -It'd be nice if a user could pass form data to our script for it to use. + >>> def get_constants(prefix): + ... """mapping of socket module constants to their names.""" + ... return dict( + ... (getattr(socket, n), n) + ... for n in dir(socket) + ... if n.startswith(prefix) + ... ) + ... + >>> -.. container:: incremental +.. class:: small - In HTTP, these types of inputs show up in the URL *query* (the part after - the ``?``):: +(you can also find this in ``resources/session01/session1.py``) - http://myhost.com/script.py?a=23&b=37 +Socket Families +--------------- -Form Data in CGI ----------------- +Think back a moment to our discussion of the *Internet* layer of the TCP/IP +stack. There were a couple of different types of IP addresses: -In the ``cgi`` module, we get access to this with the ``FieldStorage`` class: +.. class:: incremental -.. code-block:: python - :class: incremental small +* IPv4 ('192.168.1.100') - import cgi - - form = cgi.FieldStorage() - stringval = form.getvalue('a', None) - listval = form.getlist('b') +* IPv6 ('2001:0db8:85a3:0042:0000:8a2e:0370:7334') .. class:: incremental -* The values in the ``FieldStorage`` are *always* strings -* ``getvalue`` allows you to return a default, in case the field isn't present -* ``getlist`` always returns a list: empty, one-valued, or as many values as - are present +The **family** of a socket corresponds to the *addressing system* it uses for +connecting. -In-Class Exercise ------------------ +Socket Families +--------------- -Let's create a dynamic adding machine. +Families defined in the ``socket`` library are prefixed by ``AF_``:: -.. class:: incremental + >>> families = get_constants('AF_') + >>> families + {0: 'AF_UNSPEC', 1: 'AF_UNIX', 2: 'AF_INET', + 11: 'AF_SNA', 12: 'AF_DECnet', 16: 'AF_APPLETALK', + 17: 'AF_ROUTE', 23: 'AF_IPX', 30: 'AF_INET6'} + +.. class:: small incremental -* In the ``cgi-bin`` directory you'll find ``cgi_sums.py``. -* In the ``index.html`` file in the ``cgi`` directory, the third link leads to - this file. -* You will use the structure of that link, and what you learned just now about - ``cgi.FieldStorage``. -* Complete the cgi script in ``cgi_sums.py`` so that the result of adding all - operands sent via the url query is returned. +*Your results may vary* .. class:: incremental -For extra fun, return the results in ``json`` format (mimetype: -'application/json'). +Of all of these, the ones we care most about are ``2`` (IPv4) and ``30`` (IPv6). -My Solution ------------ +Unix Domain Sockets +------------------- -.. code-block:: python - :class: small incremental +When you are on a machine with an operating system that is Unix-like, you will +find another generally useful socket family: ``AF_UNIX``, or Unix Domain +Sockets. Sockets in this family: - form = cgi.FieldStorage() - operands = form.getlist('operand') - total = 0 - for operand in operands: - try: - value = int(operand) - except ValueError: - value = 0 - total += value +.. class:: incremental - output = {'result': total} - json_output = json.dumps(output) +* connect processes **on the same machine** - print "Content-Type: application/json" - print "Content-Length: %s" % len(json_output) - print - print json_output +* are generally a bit slower than IPC connnections +* have the benefit of allowing the same API for programs that might run on one + machine __or__ across the network -Stopping Point --------------- +* use an 'address' that looks like a pathname ('/tmp/foo.sock') -.. class:: big-centered -Let's take a break here, before continuing +Test your skills +---------------- +What is the *default* family for the socket we created just a moment ago? -CGI Problems ------------- +.. class:: incremental -CGI is great, but there are problems: +(remember we bound the socket to the symbol ``foo``) -.. class:: incremental +.. class:: incremental center -* Code is executed *in a new process* -* **Every** call to a CGI script starts a new process on the server -* Starting a new process is expensive in terms of server resources -* *Especially for interpreted languages like Python* +How did you figure this out? -.. class:: incremental -How do we overcome this problem? +Socket Types +------------ +The socket *type* determines the semantics of socket communications. -Alternatives to CGI -------------------- +Look up socket type constants with the ``SOCK_`` prefix:: -The most popular approach is to have a long-running process *inside* the -server that handles CGI scripts. + >>> types = get_constants('SOCK_') + >>> types + {1: 'SOCK_STREAM', 2: 'SOCK_DGRAM', + ...} .. class:: incremental -FastCGI and SCGI are existing implementations of CGI in this fashion. The -Apache module **mod_python** offers a similar capability for Python code. +The most common are ``1`` (Stream communication (TCP)) and ``2`` (Datagram +communication (UDP)). -.. class:: incremental -* Each of these options has a specific API -* None are compatible with each-other -* Code written for one is **not portable** to another +Test your skills +---------------- -.. class:: incremental +What is the *default* type for our generic socket, ``foo``? -This makes it much more difficult to *share resources* +Socket Protocols +---------------- -WSGI ----- +A socket also has a designated *protocol*. The constants for these are +prefixed by ``IPPROTO_``:: -Enter WSGI, the Web Server Gateway Interface. + >>> protocols = get_constants('IPPROTO_') + >>> protocols + {0: 'IPPROTO_IP', 1: 'IPPROTO_ICMP', + ..., + 255: 'IPPROTO_RAW'} .. class:: incremental -Where other alternatives are specific implementations of the CGI standard, -WSGI is itself a new standard, not an implementation. +The choice of which protocol to use for a socket is determined by the +*internet layer* protocol you intend to use. ``TCP``? ``UDP``? ``ICMP``? +``IGMP``? -.. class:: incremental -WSGI is generalized to describe a set of interactions, so that developers can -write WSGI-capable apps and deploy them on any WSGI server. +Test your skills +---------------- -.. class:: incremental +What is the *default* protocol used by our generic socket, ``foo``? -Read the WSGI spec: http://www.python.org/dev/peps/pep-0333 +Custom Sockets +-------------- -WSGI: Apps and Servers ----------------------- +These three properties of a socket correspond to the three positional +arguments you may pass to the socket constructor. -.. class:: small +.. container:: incremental -WSGI consists of two parts, a *server* and an *application*. + Using them allows you to create sockets with specific communications + profiles:: + + >>> bar = socket.socket(socket.AF_INET, + ... socket.SOCK_DGRAM, + ... socket.IPPROTO_UDP) + ... + >>> bar + -.. class:: small -A WSGI Server must: +Break Time +---------- -.. class:: incremental small +So far we have: -* set up an environment, much like the one in CGI -* provide a method ``start_response(status, headers, exc_info=None)`` -* build a response body by calling an *application*, passing - ``environment`` and ``start_response`` as args -* return a response with the status, headers and body +.. class:: incremental -.. class:: small +* learned about the "layers" of the TCP/IP Stack +* discussed *families*, *types* and *protocols* in sockets +* learned how to create sockets with a specific communications profile. -A WSGI Appliction must: +.. class:: incremental -.. class:: incremental small +When we return we'll learn how to find the communcations profiles of remote +sockets, how to connect to them, and how to send and receive messages. -* Be a callable (function, method, class) -* Take an environment and a ``start_response`` callable as arguments -* Call the ``start_response`` method. -* Return an iterable of 0 or more strings, which are treated as the body of - the response. +.. class:: incremental +Take a few minutes now to clear your head (do not quit your python +interpreter). -Simplified WSGI Server ----------------------- -.. code-block:: python - :class: small +Address Information +------------------- - from some_application import simple_app - - def build_env(request): - # put together some environment info from the reqeuest - return env - - def handle_request(request, app): - environ = build_env(request) - iterable = app(environ, start_response) - for data in iterable: - # send data to client here - - def start_response(status, headers): - # start an HTTP response, sending status and headers - - # listen for HTTP requests and pass on to handle_request() - serve(simple_app) +When you are creating a socket to communicate with a remote service, the +remote socket will have a specific communications profile. +.. class:: incremental -Simple WSGI Application ------------------------ +The local socket you create must match that communications profile. -Where the simplified server above is **not** functional, this *is* a complete -app: +.. class:: incremental -.. code-block:: python +How can you determine the *correct* values to use? - def application(environ, start_response) - status = "200 OK" - body = "Hello World\n" - response_headers = [('Content-type', 'text/plain'), - ('Content-length', len(body))] - start_response(status, response_headers) - return [body] +.. class:: incremental center +You ask. -WSGI Middleware ---------------- -A third part of the puzzle is something called WSGI *middleware* +Address Information +------------------- -.. class:: incremental +The function ``socket.getaddrinfo`` provides information about available +connections on a given host. -* Middleware implements both the *server* and *application* interfaces -* Middleware acts as a server when viewed from an application -* Middleware acts as an application when viewed from a server +.. code-block:: python + :class: small -.. image:: img/wsgi_middleware_onion.png - :align: center - :width: 38% - :class: incremental + socket.getaddrinfo('127.0.0.1', 80) +.. class:: incremental -Flowcharts ----------- +This provides all you need to make a proper connection to a socket on a remote +host. The value returned is a tuple of: -WSGI Servers: +.. class:: incremental -.. class:: center incremental +* socket family +* socket type +* socket protocol +* canonical name (usually empty, unless requested by flag) +* socket address (tuple of IP and Port) -**HTTP <---> WSGI** -.. class:: incremental +A quick utility method +---------------------- -WSGI Applications: +Again, let's create a utility method in-place so we can see this in action: -.. class:: center incremental +.. class:: small -**WSGI <---> app code** +:: + >>> def get_address_info(host, port): + ... for response in socket.getaddrinfo(host, port): + ... fam, typ, pro, nam, add = response + ... print 'family: ', families[fam] + ... print 'type: ', types[typ] + ... print 'protocol: ', protocols[pro] + ... print 'canonical name: ', nam + ... print 'socket address: ', add + ... print + ... + >>> -The Whole Enchilada -------------------- +.. class:: small -The WSGI *Stack* can thus be expressed like so: +(you can also find this in ``resources/session01/session1.py``) -.. class:: incremental big-centered -**HTTP <---> WSGI <---> app code** +On Your Own Machine +------------------- +Now, ask your own machine what possible connections are available for 'http':: -Using wsgiref -------------- + >>> get_address_info(socket.gethostname(), 'http') + family: AF_INET + type: SOCK_DGRAM + protocol: IPPROTO_UDP + canonical name: + socket address: ('10.211.55.2', 80) + + family: AF_INET + ... + >>> -The Python standard lib provides a reference implementation of WSGI: +.. class:: incremental -.. image:: img/wsgiref_flow.png - :align: center - :width: 80% - :class: incremental +What answers do you get? -Apache mod_wsgi +On the Internet --------------- -You can also deploy with Apache as your HTTP server, using **mod_wsgi**: +:: -.. image:: img/mod_wsgi_flow.png - :align: center - :width: 80% - :class: incremental + >>> get_address_info('crisewing.com', 'http') + family: AF_INET + type: SOCK_DGRAM + ... + family: AF_INET + type: SOCK_STREAM + ... + >>> -Proxied WSGI Servers --------------------- +.. class:: incremental -Finally, it is also common to see WSGI apps deployed via a proxied WSGI -server: +Try a few other servers you know about. -.. image:: img/proxy_wsgi.png - :align: center - :width: 80% - :class: incremental +First Steps +----------- -The WSGI Environment --------------------- +.. class:: big-centered -.. class:: small +Let's put this to use -REQUEST_METHOD - The HTTP request method, such as "GET" or "POST". This cannot ever be an - empty string, and so is always required. -SCRIPT_NAME - The initial portion of the request URL's "path" that corresponds to the - application object, so that the application knows its virtual "location". - This may be an empty string, if the application corresponds to the "root" of - the server. -PATH_INFO - The remainder of the request URL's "path", designating the virtual - "location" of the request's target within the application. This may be an - empty string, if the request URL targets the application root and does not - have a trailing slash. -QUERY_STRING - The portion of the request URL that follows the "?", if any. May be empty or - absent. -CONTENT_TYPE - The contents of any Content-Type fields in the HTTP request. May be empty or - absent. - - -The WSGI Environment --------------------- -.. class:: small +Construct a Socket +------------------ -CONTENT_LENGTH - The contents of any Content-Length fields in the HTTP request. May be empty - or absent. -SERVER_NAME, SERVER_PORT - When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to - complete the URL. Note, however, that HTTP_HOST, if present, should be used - in preference to SERVER_NAME for reconstructing the request URL. See the URL - Reconstruction section below for more detail. SERVER_NAME and SERVER_PORT - can never be empty strings, and so are always required. -SERVER_PROTOCOL - The version of the protocol the client used to send the request. Typically - this will be something like "HTTP/1.0" or "HTTP/1.1" and may be used by the - application to determine how to treat any HTTP request headers. (This - variable should probably be called REQUEST_PROTOCOL, since it denotes the - protocol used in the request, and is not necessarily the protocol that will - be used in the server's response. However, for compatibility with CGI we - have to keep the existing name.) - - -The WSGI Environment --------------------- +We've already made a socket ``foo`` using the generic constructor without any +arguments. We can make a better one now by using real address information from +a real server online [**do not type this yet**]: .. class:: small -HTTP\_ Variables - Variables corresponding to the client-supplied HTTP request headers (i.e., - variables whose names begin with "HTTP\_"). The presence or absence of these - variables should correspond with the presence or absence of the appropriate - HTTP header in the request. - -.. class:: center incremental +:: -**Seem Familiar?** + >>> streams = [info + ... for info in socket.getaddrinfo('crisewing.com', 'http') + ... if info[1] == socket.SOCK_STREAM] + >>> streams + [(2, 1, 6, '', ('108.59.11.99', 80))] + >>> info = streams[0] + >>> cewing_socket = socket.socket(*info[:3]) -A Bit of Repetition +Connecting a Socket ------------------- -Let's start simply. We'll begin by repeating our first CGI exercise in WSGI +Once the socket is constructed with the appropriate *family*, *type* and +*protocol*, we can connect it to the address of our remote server:: + + >>> cewing_socket.connect(info[-1]) + >>> .. class:: incremental -* Find the ``wsgi`` directory in the class resources. Copy it to your working - directory. -* Open the file ``wsgi_1.py`` in your text editor. -* We will fill in the missing values using the wsgi ``environ``, just as we - use ``os.environ`` in cgi +* a successful connection returns ``None`` -.. class:: incremental center +* a failed connection raises an error -**But First** +* you can use the *type* of error returned to tell why the connection failed. -Orientation ------------ +Sending a Message +----------------- -.. code-block:: python - :class: small +Send a message to the server on the other end of our connection (we'll +learn in session 2 about the message we are sending):: - if __name__ == '__main__': - from wsgiref.simple_server import make_server - srv = make_server('localhost', 8080, application) - srv.serve_forever() + >>> msg = "GET / HTTP/1.1\r\n" + >>> msg += "Host: crisewing.com\r\n\r\n" + >>> cewing_socket.sendall(msg) + >>> -.. class:: incremental +.. class:: incremental small -Note that we pass our ``application`` function to the server factory +* the transmission continues until all data is sent or an error occurs -.. class:: incremental +* success returns ``None`` -We don't have to write a server, ``wsgiref`` does that for us. +* failure to send raises an error -.. class:: incremental +* you can use the type of error to figure out why the transmission failed -In fact, you should *never* have to write a WSGI server. +* if an error occurs you **cannot** know how much, if any, of your data was + sent -Orientation ------------ +Receiving a Reply +----------------- -.. code-block:: python - :class: small +Whatever reply we get is received by the socket we created. We can read it +back out (again, **do not type this yet**):: - def application(environ, start_response): - response_body = body % ( - environ.get('SERVER_NAME', 'Unset'), # server name - ... - ) - status = '200 OK' - response_headers = [('Content-Type', 'text/html'), - ('Content-Length', str(len(response_body)))] - start_response(status, response_headers) - return [response_body] + >>> response = cewing_socket.recv(4096) + >>> response + 'HTTP/1.1 200 OK\r\nDate: Thu, 03 Jan 2013 05:56:53 + ... -.. class:: incremental +.. class:: incremental small -We do not define ``start_response``, the application does that. +* The sole required argument is ``buffer_size`` (an integer). It should be a + power of 2 and smallish (~4096) +* It returns a byte string of ``buffer_size`` (or smaller if less data was + received) +* If the response is longer than ``buffer size``, you can call the method + repeatedly. The last bunch will be less than ``buffer size``. -.. class:: incremental -We *are* responsible for determining the HTTP status. +Cleaning Up +----------- +When you are finished with a connection, you should always close it:: -Running a WSGI Script ---------------------- + >>> cewing_socket.close() -You can run this script with python:: - $ python wsgi_1.py +Putting it all together +----------------------- -.. class:: incremental +First, connect and send a message: -This will start a wsgi server. What host and port will it use? +.. class:: small -.. class:: incremental +:: -Point your browser at ``http://localhost:8080/``. Did it work? + >>> streams = [info + ... for info in socket.getaddrinfo('crisewing.com', 'http') + ... if info[1] == socket.SOCK_STREAM] + >>> info = streams[0] + >>> cewing_socket = socket.socket(*info[:3]) + >>> cewing_socket.connect(info[-1]) + >>> msg = "GET / HTTP/1.1\r\n" + >>> msg += "Host: crisewing.com\r\n\r\n" + >>> cewing_socket.sendall(msg) -.. class:: incremental -Go ahead and fill in the missing bits. Use the ``environ`` passed into -``application`` +Putting it all together +----------------------- +Then, receive a reply, iterating until it is complete: -Some Tips ---------- +:: -Because WSGI is a long-running process, the file you are editing is *not* -reloaded after you edit it. + >>> buffsize = 4096 + >>> response = '' + >>> done = False + >>> while not done: + ... msg_part = cewing_socket.recv(buffsize) + ... if len(msg_part) < buffsize: + ... done = True + ... cewing_socket.close() + ... response += msg_part + ... + >>> len(response) + 19427 + + +Server Side +----------- -.. class:: incremental +.. class:: big-centered -You'll need to quit and re-run the script between edits. +What about the other half of the equation? -.. class:: incremental +Construct a Socket +------------------ -You may also want to consider using ``print environ`` in your application so -you can see the dictionary. +**For the moment, stop typing this into your interpreter.** -.. class:: incremental +.. container:: incremental -If you do that, where will the printed environment appear? + Again, we begin by constructing a socket. Since we are actually the server + this time, we get to choose family, type and protocol:: + >>> server_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_TCP) + ... + >>> server_socket + -A More Complex Example ----------------------- -Let's create a multi-page wsgi application. It will serve a small database of -python books. +Bind the Socket +--------------- -.. class:: incremental +Our server socket needs to be bound to an address. This is the IP Address and +Port to which clients must connect:: -The database (with a very simple api) can be found in ``wsgi/bookdb.py`` + >>> address = ('127.0.0.1', 50000) + >>> server_socket.bind(address) .. class:: incremental -* We'll need a listing page that shows the titles of all the books -* Each title will link to a details page for that book -* The details page for each book will display all the information and have a - link back to the list +**Terminology Note**: In a server/client relationship, the server *binds* to +an address and port. The client *connects* -Some Questions to Ponder ------------------------- +Listen for Connections +---------------------- -.. class:: incremental +Once our socket is bound to an address, we can listen for attempted +connections:: -When viewing our first wsgi app, do we see the name of the wsgi application -script anywhere in the URL? + >>> server_socket.listen(1) .. class:: incremental -In our wsgi application script, how many applications did we actually have? +* The argument to ``listen`` is the *backlog* -.. class:: incremental +* The *backlog* is the **maximum** number of connection requests that the + socket will queue -How are we going to serve different types of information out of a single -application? +* Once the limit is reached, the socket refuses new connections. -Dispatch --------- - -We have to write an app that will map our incoming request path to some code -that can handle that request. - -.. class:: incremental - -This process is called ``dispatch``. There are many possible approaches +Accept Incoming Messages +------------------------ -.. class:: incremental +When a socket is listening, it can receive incoming connection requests:: -Let's begin by designing this piece of it. + >>> connection, client_address = server_socket.accept() + ... # this blocks until a client connects + >>> connection.recv(16) .. class:: incremental -Open ``bookapp.py`` from the ``wsgi`` folder. We'll do our work here. +* The ``connection`` returned by a call to ``accept`` is a **new socket**. + This new socket is used to communicate with the client +* The ``client_address`` is a two-tuple of IP Address and Port for the client + socket -PATH ----- +* When a connection request is 'accepted', it is removed from the backlog + queue. -The wsgi environment gives us access to *PATH_INFO*, which maps to the URI the -user requested when they loaded the page. -.. class:: incremental - -We can design the URLs that our app will use to assist us in routing. +Send a Reply +------------ -.. class:: incremental +The same socket that received a message from the client may be used to return +a reply:: -Let's declare that any request for ``/`` will map to the list page + >>> connection.sendall("message received") -.. container:: incremental - We can also say that the URL for a book will look like this:: - - http://localhost:8080/book/ +Clean Up +-------- -Writing resolve_path --------------------- +Once a transaction between the client and server is complete, the +``connection`` socket should be closed:: -Let's write a function, called ``resolve_path`` in our application file. + >>> connection.close() .. class:: incremental -* It should take the *PATH_INFO* value from environ as an argument. -* It should return the function that will be called. -* It should also return any arguments needed to call that function. -* This implies of course that the arguments should be part of the PATH +Note that the ``server_socket`` is *never* closed as long as the server +continues to run. -My Solution ------------ - -.. code-block:: python - :class: small incremental - - def resolve_path(path): - urls = [(r'^$', books), - (r'^book/(id[\d]+)$', book)] - matchpath = path.lstrip('/') - for regexp, func in urls: - match = re.match(regexp, matchpath) - if match is None: - continue - args = match.groups([]) - return func, args - # we get here if no url matches - raise NameError - - -Application Updates -------------------- +Getting the Flow +---------------- -We need to hook our new router into the application. +The flow of this interaction can be a bit confusing. Let's see it in action +step-by-step. .. class:: incremental -* The path should be extracted from ``environ``. -* The router should be used to get a function and arguments -* The body to return should come from calling that function with those - arguments -* If an error is raised by calling the function, an appropriate response - should be returned -* If the router raises a NameError, the application should return a 404 - response - - -My Solution ------------ - -.. code-block:: python - :class: small incremental - - def application(environ, start_response): - headers = [("Content-type", "text/html")] - try: - path = environ.get('PATH_INFO', None) - if path is None: - raise NameError - func, args = resolve_path(path) - body = func(*args) - status = "200 OK" - except NameError: - status = "404 Not Found" - body = "

Not Found

" - except Exception: - status = "500 Internal Server Error" - body = "

Internal Server Error

" - finally: - headers.append(('Content-length', str(len(body)))) - start_response(status, headers) - return [body] - - -Test Your Work --------------- - -Once you've got your script settled, run it:: +Open a second python interpreter and place it next to your first so you can +see both of them at the same time. - $ python bookapp.py -.. class:: incremental +Create a Server +--------------- -Then point your browser at ``http://localhost:8080/`` +In your first python interpreter, create a server socket and prepare it for +connections:: -.. class:: incremental + >>> server_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_IP) + >>> server_socket.bind(('127.0.0.1', 50000)) + >>> server_socket.listen(1) + >>> conn, addr = server_socket.accept() -* ``http://localhost/book/id3`` -* ``http://localhost/book/id73/`` -* ``http://localhost/sponge/damp`` - .. class:: incremental -Did that all work as you would have expected? +At this point, you should **not** get back a prompt. The server socket is +waiting for a connection to be made. -Building the List ------------------ +Create a Client +--------------- -The function ``books`` should return an html list of book titles where each -title is a link to the detail page for that book +In your second interpreter, create a client socket and prepare to send a +message:: -.. class:: incremental + >>> import socket + >>> client_socket = socket.socket( + ... socket.AF_INET, + ... socket.SOCK_STREAM, + ... socket.IPPROTO_IP) -* You'll need all the ids and titles from the book database. -* You'll need to build a list in HTML using this information -* Each list item should have the book title as a link -* The href for the link should be of the form ``/book/`` +.. container:: incremental + Before connecting, keep your eye on the server interpreter:: -My Solution ------------ + >>> client_socket.connect(('127.0.0.1', 50000)) -.. code-block:: python - :class: incremental small - def books(): - all_books = DB.titles() - body = ['

My Bookshelf

', '
    '] - item_template = '
  • {title}
  • ' - for book in all_books: - body.append(item_template.format(**book)) - body.append('
') - return '\n'.join(body) +Send a Message Client->Server +----------------------------- +As soon as you made the connection above, you should have seen the prompt +return in your server interpreter. The ``accept`` method finally returned a +new connection socket. -Test Your Work --------------- +.. class:: incremental -Quit and then restart your application script:: +When you're ready, type the following in the *client* interpreter. - $ python bookapp.py +.. class:: incremental -.. container:: incremental +:: - Then reload the root of your application:: + >>> client_socket.sendall("Hey, can you hear me?") - http://localhost:8080/ -.. class:: incremental +Receive and Respond +------------------- -You should see a nice list of the books in the database. Do you? +Back in your server interpreter, go ahead and receive the message from your +client:: -.. class:: incremental + >>> conn.recv(32) + 'Hey, can you hear me?' -Click on a link to view the detail page. Does it load without error? +Send a message back, and then close up your connection:: + >>> conn.sendall("Yes, I hear you.") + >>> conn.close() -Showing Details ---------------- -The next step of course is to polish up those detail pages. +Finish Up +--------- -.. class:: incremental +Back in your client interpreter, take a look at the response to your message, +then be sure to close your client socket too:: -* You'll need to retrieve a single book from the database -* You'll need to format the details about that book and return them as HTML -* You'll need to guard against ids that do not map to books + >>> client_socket.recv(32) + 'Yes, I hear you.' + >>> client_socket.close() -.. class:: incremental +And now that we're done, we can close up the server too (back in the server +interpreter):: -In this last case, what's the right HTTP response code to send? + >>> server_socket.close() -My Solution ------------ +Congratulations! +---------------- -.. code-block:: python - :class: incremental small +.. class:: big-centered - def book(book_id): - page = """ -

{title}

- - - - -
Author{author}
Publisher{publisher}
ISBN{isbn}
- Back to the list - """ - book = DB.title_info(book_id) - if book is None: - raise NameError - return page.format(**book) +You've run your first client-server interaction -Revel in Your Success ---------------------- +Homework +-------- -Quit and restart your script one more time +Your homework assignment for this week is to take what you've learned here +and build a simple "echo" server. .. class:: incremental -Then poke around at your application and see the good you've made +The server should automatically return to any client that connects *exactly* +what it receives (it should **echo** all messages). .. class:: incremental -And your application is portable and sharable +You will also write a python script that, when run, will send a message to the +server and receive the reply, printing it to ``stdout``. .. class:: incremental -It should run equally well under any `wsgi server -`_ - - -A Few Steps Further -------------------- +Finally, you'll do all of this so that it can be tested. -Next steps for an app like this might be: -* Create a shared full page template and incorporate it into your app -* Improve the error handling by emitting error codes other than 404 and 500 -* Swap out the basic backend here with a different one, maybe a Web Service? -* Think about ways to make the application less tightly coupled to the pages - it serves +What You Have +------------- +In our class repository, there is a folder ``assignments/session01``. -Homework --------- +.. class:: incremental -For your homework this week, you'll be creating a wsgi application of your -own. +Inside that folder, you should find: .. class:: incremental -As the source of your data, use the mashup you created last week. +* A file ``tasks.txt`` that contains these instructions -.. class:: incremental +* A skeleton for your server in ``echo_server.py`` -Your application should have at least two separate "pages" in it. +* A skeleton for your client script in ``echo_client.py`` + +* Some simple tests in ``tests.py`` .. class:: incremental -The HTML you produce does not need to be pretty, but it should be something -that shows up in a browser. +Your task is to make the tests pass. -Submitting Your Homework ------------------------- +Running the tests +----------------- -To submit your homework: +To run the tests, you'll have to set the server running in one terminal: .. class:: small -* Create a new python script in ``assignments/session04``. It should be - something I can run with: +:: -.. class:: small + $ python echo_server.py -:: +.. container:: incremental - $ python your_script.py + Then, in a second terminal, you will execute the tests: + + .. class:: small + + :: + + $ python tests.py -.. class:: small +.. container:: incremental -* Once your script is running, I should be able to view your application in my - browser. + You should see output like this: + + .. class:: small + + :: + + [...] + FAILED (failures=2) -* Include all instructions I need to successfully run and view your script. -* Add tests for your code. I should be able to run the tests like so: +Submitting Your Homework +------------------------ -.. class:: small +To submit your homework: -:: +.. class:: incremental - $ python tests.py +* In github, make a fork of my repository into *your* account. -.. class:: small +* Clone your fork of my repository to your computer. -* Commit your changes to your fork of the repo in github, then open a pull - request. +* Do your work in the ``assignments/session01/`` folder on your computer and + commit your changes to your fork. +* When you are finished and your tests are passing, you will open a pull + request in github.com from your fork to mine. -But Wait, There's More ----------------------- +.. class:: incremental -In addition, read and step through the quick tutorials on templates and -database persistence in the assignments directory. +I will review your work when I receive your pull requests, make comments on it +there, and then close the pull request. -Use your flaskenv Python, it has everything you need installed. +Going Further +------------- -Wrap-Up -------- +In ``assignments/session01/tasks.txt`` you'll find a few extra problems to try. -For educational purposes, you might wish to take a look at the source code for -the ``wsgiref`` module. It's the canonical example of a simple wsgi server +.. class:: incremental - >>> import wsgiref - >>> wsgiref.__file__ - '/full/path/to/your/copy/of/wsgiref.py' - ... +If you finish the first part of the homework in less than 3-4 hours give one +or more of these a whirl. -.. class:: incremental center +.. class:: incremental -**See you Next Time** +They are not required, but if you include solutions in your pull request, I'll +review your work. From 01ab9336d039ce754a1434a4a570a19ab178914c Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 30 Dec 2014 19:37:36 -0800 Subject: [PATCH 106/297] start a new session 1 file --- source/presentations/session01.rst | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 source/presentations/session01.rst diff --git a/source/presentations/session01.rst b/source/presentations/session01.rst new file mode 100644 index 00000000..7380e0ae --- /dev/null +++ b/source/presentations/session01.rst @@ -0,0 +1,6 @@ +Python Web Programming +====================== + +.. image:: img/python.png + :align: left + :width: 33% From b3f463c88710768c311015a9a20766b93ffa99da Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 30 Dec 2014 19:50:32 -0800 Subject: [PATCH 107/297] update for 2015 run --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 0b22e372..d79a8a4e 100644 --- a/README.rst +++ b/README.rst @@ -10,9 +10,9 @@ This package provides the source for all lecture materials used for the `Internet Programming in Python`_ section of the `Certificate in Python Programming`_ offered by the `University of Washington Professional & Continuing Education`_ program. This version of the documentation is used for -the Winter 2014 instance of the course, Taught by `Cris Ewing`_ +the Winter 2015 instance of the course, Taught by `Cris Ewing`_ -.. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2014/ +.. _Internet Programming in Python: http://www.pce.uw.edu/courses/internet-programming-python/downtown-seattle-winter-2015/ .. _Certificate in Python Programming: http://www.pce.uw.edu/certificates/python-programming.html .. _University of Washington Professional & Continuing Education: http://www.pce.uw.edu/ .. _Cris Ewing: http://www.linkedin.com/profile/view?id=19741495 From 1cc4198e72b18c4274691cf393d533838a21a288 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 2 Jan 2015 16:50:21 -0800 Subject: [PATCH 108/297] begin converting buildout to use hieroglyph for prettier slides and better slide/text integration --- .gitignore | 3 +++ Makefile | 42 +++++++++++++++++++++++++++++----- buildout.cfg | 58 ++++++++++++----------------------------------- commands/build.in | 14 ------------ 4 files changed, 54 insertions(+), 63 deletions(-) delete mode 100644 commands/build.in diff --git a/.gitignore b/.gitignore index 86ecdd9d..663f268d 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,6 @@ development *.db *.sublime-project *.sublime-workspace +.mr.developer.cfg +outline_improvements.txt +src diff --git a/Makefile b/Makefile index 11bcf2d7..20506467 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,15 @@ # You can set these variables from the command line. SPHINXOPTS = -SPHINXBUILD = sphinx-build +SPHINXBUILD = ./bin/sphinx-build PAPER = BUILDDIR = build +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter @@ -29,17 +34,20 @@ help: @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: - -rm -rf $(BUILDDIR)/* + rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @@ -77,17 +85,17 @@ qthelp: @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/InternetProgrammingwithPython.qhcp" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PythonWebProgramming.qhcp" @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/InternetProgrammingwithPython.qhc" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PythonWebProgramming.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/InternetProgrammingwithPython" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/InternetProgrammingwithPython" + @echo "# mkdir -p $$HOME/.local/share/devhelp/PythonWebProgramming" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PythonWebProgramming" @echo "# devhelp" epub: @@ -108,6 +116,12 @@ latexpdf: $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @@ -151,3 +165,19 @@ doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." + + +slides: + $(SPHINXBUILD) -b slides $(ALLSPHINXOPTS) $(BUILDDIR)/slides + @echo "Build finished. The HTML slides are in $(BUILDDIR)/slides." + diff --git a/buildout.cfg b/buildout.cfg index f8537e31..a69c7287 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -2,13 +2,13 @@ # Buildout to set-up Sphinx # [buildout] -parts = -# venv -# venv-pygments - build_s5 - executable +parts = sphinx +extensions = mr.developer +auto-checkout = * +always-checkout = force + allow-picked-versions = true show-picked-versions = true @@ -18,55 +18,23 @@ script-in = ${buildout:directory}/commands/build.in [sphinx] recipe = collective.recipe.sphinxbuilder -#doc-directory = . -outputs = +outputs = html source = ${buildout:directory}/source/main build = ${buildout:directory}/build eggs = Sphinx docutils - roman Pygments - -[venv] -recipe = rjm.recipe.venv -venv_options = --no-site-packages -distutils_urls = - http://pypi.python.org/packages/source/d/docutils/docutils-0.9.1.tar.gz - -[build_s5] -recipe = collective.recipe.template[genshi]:genshi -input = ${buildout:script-in} -output = ${buildout:directory}/bin/build_s5 -build-suffix = html -build-directory = ${buildout:directory}/build/html/presentations -build-cmd = ${buildout:directory}/bin/rst2s5.py - -[executable] -recipe = collective.recipe.cmd -on_install = true -on_update = true -cmds = - chmod 744 ${build_s5:output} - -# manually install Pygments into the docutils venv so it will be there for -# colorizing slide code examples. -[venv-pygments] -recipe = collective.recipe.cmd -on_install = true -on_update = false -cmds = - ${buildout:directory}/bin/easy_install Pygments - + hieroglyph + ipython [versions] # pin versions for continued sanity -Jinja2 = 2.6 +Jinja2 = 2.7.2 Pygments = 1.6 -Sphinx = 1.1.3 -collective.recipe.sphinxbuilder = 0.7.1 -roman = 1.4.0 +Sphinx = 1.2.2 +collective.recipe.sphinxbuilder = 0.8.2 #Required by: #collective.recipe.sphinxbuilder 0.7.1 @@ -89,3 +57,7 @@ rjm.recipe.venv = 0.8 #Required by: #rjm.recipe.venv 0.8 virtualenv = 1.10 + + +[sources] +hieroglyph = git https://github.com/nyergler/hieroglyph.git diff --git a/commands/build.in b/commands/build.in deleted file mode 100644 index cc365279..00000000 --- a/commands/build.in +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -shopt -s nullglob -SRC=rst -DEST=${options['build-suffix']} - -cp -R ${parts.buildout.directory}/source/ui ${options['build-directory']}/ -cp -R ${parts.buildout.directory}/source/img ${options['build-directory']}/ - -for RST in ${parts.buildout.directory}/source/presentations/*.rst -do - BASE=`basename $$RST` - OUT=${options['build-directory']}/$${BASE%.$$SRC}.$$DEST - ${options['build-cmd']} $$RST $$OUT -done From a674a7d6474333e085dd25e159a5a0a69d7204b5 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 2 Jan 2015 17:09:02 -0800 Subject: [PATCH 109/297] remove unused packages from buildout --- buildout.cfg | 6 ------ 1 file changed, 6 deletions(-) diff --git a/buildout.cfg b/buildout.cfg index a69c7287..ed81b6b9 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -48,12 +48,6 @@ zc.buildout = 1.5.2 #collective.recipe.sphinxbuilder 0.7.1 zc.recipe.egg = 1.3.2 -Genshi = 0.6 -collective.recipe.cmd = 0.5 -collective.recipe.template = 1.9 -rjm.recipe.venv = 0.8 - - #Required by: #rjm.recipe.venv 0.8 virtualenv = 1.10 From 05f3997314b3bde3044770a8e6bf97b6408004e5 Mon Sep 17 00:00:00 2001 From: cewing Date: Fri, 2 Jan 2015 17:43:21 -0800 Subject: [PATCH 110/297] cleanup --- source/{main => }/index.rst | 0 source/main/conf.py | 284 -------------- source/{main => }/outline.rst | 0 source/{main => }/readings.rst | 0 source/ui/default/blank.gif | Bin 49 -> 0 bytes source/ui/default/framing.css | 25 -- source/ui/default/iepngfix.htc | 42 --- source/ui/default/opera.css | 8 - source/ui/default/outline.css | 16 - source/ui/default/pretty.css | 120 ------ source/ui/default/print.css | 24 -- source/ui/default/s5-core.css | 11 - source/ui/default/slides.css | 10 - source/ui/default/slides.js | 558 ---------------------------- source/ui/uw_pce_theme/blank.gif | Bin 49 -> 0 bytes source/ui/uw_pce_theme/framing.css | 25 -- source/ui/uw_pce_theme/iepngfix.htc | 42 --- source/ui/uw_pce_theme/opera.css | 8 - source/ui/uw_pce_theme/outline.css | 16 - source/ui/uw_pce_theme/pretty.css | 252 ------------- source/ui/uw_pce_theme/print.css | 24 -- source/ui/uw_pce_theme/s5-core.css | 11 - source/ui/uw_pce_theme/slides.css | 10 - source/ui/uw_pce_theme/slides.js | 558 ---------------------------- 24 files changed, 2044 deletions(-) rename source/{main => }/index.rst (100%) delete mode 100644 source/main/conf.py rename source/{main => }/outline.rst (100%) rename source/{main => }/readings.rst (100%) delete mode 100644 source/ui/default/blank.gif delete mode 100644 source/ui/default/framing.css delete mode 100644 source/ui/default/iepngfix.htc delete mode 100644 source/ui/default/opera.css delete mode 100644 source/ui/default/outline.css delete mode 100644 source/ui/default/pretty.css delete mode 100644 source/ui/default/print.css delete mode 100644 source/ui/default/s5-core.css delete mode 100644 source/ui/default/slides.css delete mode 100644 source/ui/default/slides.js delete mode 100644 source/ui/uw_pce_theme/blank.gif delete mode 100644 source/ui/uw_pce_theme/framing.css delete mode 100644 source/ui/uw_pce_theme/iepngfix.htc delete mode 100644 source/ui/uw_pce_theme/opera.css delete mode 100644 source/ui/uw_pce_theme/outline.css delete mode 100644 source/ui/uw_pce_theme/pretty.css delete mode 100644 source/ui/uw_pce_theme/print.css delete mode 100644 source/ui/uw_pce_theme/s5-core.css delete mode 100644 source/ui/uw_pce_theme/slides.css delete mode 100644 source/ui/uw_pce_theme/slides.js diff --git a/source/main/index.rst b/source/index.rst similarity index 100% rename from source/main/index.rst rename to source/index.rst diff --git a/source/main/conf.py b/source/main/conf.py deleted file mode 100644 index 4c55833d..00000000 --- a/source/main/conf.py +++ /dev/null @@ -1,284 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Internet Programming with Python documentation build configuration file, created by -# sphinx-quickstart on Sat Nov 3 13:22:19 2012. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Python Web Programming Workshop' -copyright = u'2012-2013, Cris Ewing' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '1.0' -# The full version, including alpha/beta/rc tags. -release = '1.0' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'InternetProgrammingwithPythondoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'InternetProgrammingwithPython.tex', u'Internet Programming with Python Documentation', - u'Cris Ewing', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'internetprogrammingwithpython', u'Internet Programming with Python Documentation', - [u'Cris Ewing'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'InternetProgrammingwithPython', u'Internet Programming with Python Documentation', - u'Cris Ewing', 'InternetProgrammingwithPython', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# -- Options for Epub output --------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = u'Internet Programming with Python' -epub_author = u'Cris Ewing' -epub_publisher = u'Cris Ewing' -epub_copyright = u'2012, Cris Ewing' - -# The language of the text. It defaults to the language option -# or en if the language is not set. -#epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -#epub_identifier = '' - -# A unique identification for the text. -#epub_uid = '' - -# A tuple containing the cover image and cover page html template filenames. -#epub_cover = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_pre_files = [] - -# HTML files shat should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -#epub_post_files = [] - -# A list of files that should not be packed into the epub file. -#epub_exclude_files = [] - -# The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 - -# Allow duplicate toc entries. -#epub_tocdup = True diff --git a/source/main/outline.rst b/source/outline.rst similarity index 100% rename from source/main/outline.rst rename to source/outline.rst diff --git a/source/main/readings.rst b/source/readings.rst similarity index 100% rename from source/main/readings.rst rename to source/readings.rst diff --git a/source/ui/default/blank.gif b/source/ui/default/blank.gif deleted file mode 100644 index 75b945d2553848b8b6f41fe5e24599c0687b8472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW diff --git a/source/ui/default/framing.css b/source/ui/default/framing.css deleted file mode 100644 index c4727f30..00000000 --- a/source/ui/default/framing.css +++ /dev/null @@ -1,25 +0,0 @@ -/* This file has been placed in the public domain. */ -/* The following styles size, place, and layer the slide components. - Edit these if you want to change the overall slide layout. - The commented lines can be uncommented (and modified, if necessary) - to help you with the rearrangement process. */ - -/* target = 1024x768 */ - -div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} -div#header {position: fixed; top: 0; height: 3em; z-index: 1;} -div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} -.slide {top: 0; width: 92%; padding: 2.5em 4% 4%; z-index: 2;} -div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} -div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; - margin: 0;} -#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; - z-index: 10;} -html>body #currentSlide {position: fixed;} - -/* -div#header {background: #FCC;} -div#footer {background: #CCF;} -div#controls {background: #BBD;} -div#currentSlide {background: #FFC;} -*/ diff --git a/source/ui/default/iepngfix.htc b/source/ui/default/iepngfix.htc deleted file mode 100644 index 9f3d628b..00000000 --- a/source/ui/default/iepngfix.htc +++ /dev/null @@ -1,42 +0,0 @@ - - - - - \ No newline at end of file diff --git a/source/ui/default/opera.css b/source/ui/default/opera.css deleted file mode 100644 index c9d1148b..00000000 --- a/source/ui/default/opera.css +++ /dev/null @@ -1,8 +0,0 @@ -/* This file has been placed in the public domain. */ -/* DO NOT CHANGE THESE unless you really want to break Opera Show */ -.slide { - visibility: visible !important; - position: static !important; - page-break-before: always; -} -#slide0 {page-break-before: avoid;} diff --git a/source/ui/default/outline.css b/source/ui/default/outline.css deleted file mode 100644 index fa767e22..00000000 --- a/source/ui/default/outline.css +++ /dev/null @@ -1,16 +0,0 @@ -/* This file has been placed in the public domain. */ -/* Don't change this unless you want the layout stuff to show up in the - outline view! */ - -.layout div, #footer *, #controlForm * {display: none;} -#footer, #controls, #controlForm, #navLinks, #toggle { - display: block; visibility: visible; margin: 0; padding: 0;} -#toggle {float: right; padding: 0.5em;} -html>body #toggle {position: fixed; top: 0; right: 0;} - -/* making the outline look pretty-ish */ - -#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} -#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} - -.outline {display: inline ! important;} diff --git a/source/ui/default/pretty.css b/source/ui/default/pretty.css deleted file mode 100644 index 1cede72d..00000000 --- a/source/ui/default/pretty.css +++ /dev/null @@ -1,120 +0,0 @@ -/* This file has been placed in the public domain. */ -/* Following are the presentation styles -- edit away! */ - -html, body {margin: 0; padding: 0;} -body {background: white; color: black;} -/* Replace the background style above with the style below (and again for - div#header) for a graphic: */ -/* background: white url(bodybg.gif) -16px 0 no-repeat; */ -:link, :visited {text-decoration: none; color: #00C;} -#controls :active {color: #88A !important;} -#controls :focus {outline: 1px dotted #227;} -h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} - -blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em;} -blockquote p {margin: 0;} - -kbd {font-weight: bold; font-size: 1em;} -sup {font-size: smaller; line-height: 1px;} - -.slide pre {padding: 0; margin-left: 0; margin-right: 0; font-size: 90%;} -.slide ul ul li {list-style: square;} -.slide img.leader {display: block; margin: 0 auto;} -.slide tt {font-size: 90%;} - -div#header, div#footer {background: #005; color: #AAB; font-family: sans-serif;} -/* background: #005 url(bodybg.gif) -16px 0 no-repeat; */ -div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} -#footer h1 {display: block; padding: 0 1em;} -#footer h2 {display: block; padding: 0.8em 1em 0;} - -.slide {font-size: 1.2em;} -.slide h1 {position: absolute; top: 0.45em; z-index: 1; - margin: 0; padding-left: 0.7em; white-space: nowrap; - font: bold 150% sans-serif; color: #DDE; background: #005;} -.slide h2 {font: bold 120%/1em sans-serif; padding-top: 0.5em;} -.slide h3 {font: bold 100% sans-serif; padding-top: 0.5em;} -h1 abbr {font-variant: small-caps;} - -div#controls {position: absolute; left: 50%; bottom: 0; - width: 50%; text-align: right; font: bold 0.9em sans-serif;} -html>body div#controls {position: fixed; padding: 0 0 1em 0; top: auto;} -div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; - margin: 0; padding: 0;} -#controls #navLinks a {padding: 0; margin: 0 0.5em; - background: #005; border: none; color: #779; cursor: pointer;} -#controls #navList {height: 1em;} -#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; - background: #DDD; color: #227;} - -#currentSlide {text-align: center; font-size: 0.5em; color: #449; - font-family: sans-serif; font-weight: bold;} - -#slide0 {padding-top: 1.5em} -#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; color: #000; - font: bold 2em sans-serif; white-space: normal; background: transparent;} -#slide0 h2 {font: bold italic 1em sans-serif; margin: 0.25em;} -#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} -#slide0 h4 {margin-top: 0; font-size: 1em;} - -ul.urls {list-style: none; display: inline; margin: 0;} -.urls li {display: inline; margin: 0;} -.external {border-bottom: 1px dotted gray;} -html>body .external {border-bottom: none;} -.external:after {content: " \274F"; font-size: smaller; color: #77B;} - -.incremental, .incremental *, .incremental *:after {visibility: visible; - color: white; border: 0;} -img.incremental {visibility: hidden;} -.slide .current {color: green;} - -.slide-display {display: inline ! important;} - -.huge {font-family: sans-serif; font-weight: bold; font-size: 150%;} -.big {font-family: sans-serif; font-weight: bold; font-size: 120%;} -.small {font-size: 75%;} -.tiny {font-size: 50%;} -.huge tt, .big tt, .small tt, .tiny tt {font-size: 115%;} -.huge pre, .big pre, .small pre, .tiny pre {font-size: 115%;} - -.maroon {color: maroon;} -.red {color: red;} -.magenta {color: magenta;} -.fuchsia {color: fuchsia;} -.pink {color: #FAA;} -.orange {color: orange;} -.yellow {color: yellow;} -.lime {color: lime;} -.green {color: green;} -.olive {color: olive;} -.teal {color: teal;} -.cyan {color: cyan;} -.aqua {color: aqua;} -.blue {color: blue;} -.navy {color: navy;} -.purple {color: purple;} -.black {color: black;} -.gray {color: gray;} -.silver {color: silver;} -.white {color: white;} - -.left {text-align: left ! important;} -.center {text-align: center ! important;} -.right {text-align: right ! important;} - -.animation {position: relative; margin: 1em 0; padding: 0;} -.animation img {position: absolute;} - -/* Docutils-specific overrides */ - -.slide table.docinfo {margin: 1em 0 0.5em 2em;} - -pre.literal-block, pre.doctest-block {background-color: white;} - -tt.docutils {background-color: white;} - -/* diagnostics */ -/* -li:after {content: " [" attr(class) "]"; color: #F88;} -div:before {content: "[" attr(class) "]"; color: #F88;} -*/ diff --git a/source/ui/default/print.css b/source/ui/default/print.css deleted file mode 100644 index 9d057cc8..00000000 --- a/source/ui/default/print.css +++ /dev/null @@ -1,24 +0,0 @@ -/* This file has been placed in the public domain. */ -/* The following rule is necessary to have all slides appear in print! - DO NOT REMOVE IT! */ -.slide, ul {page-break-inside: avoid; visibility: visible !important;} -h1 {page-break-after: avoid;} - -body {font-size: 12pt; background: white;} -* {color: black;} - -#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} -#slide0 h3 {margin: 0; padding: 0;} -#slide0 h4 {margin: 0 0 0.5em; padding: 0;} -#slide0 {margin-bottom: 3em;} - -#header {display: none;} -#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; - font-style: italic;} -#footer h2, #controls {display: none;} - -.print {display: inline ! important;} - -/* The following rule keeps the layout stuff out of print. - Remove at your own risk! */ -.layout, .layout * {display: none !important;} diff --git a/source/ui/default/s5-core.css b/source/ui/default/s5-core.css deleted file mode 100644 index 6965f5e8..00000000 --- a/source/ui/default/s5-core.css +++ /dev/null @@ -1,11 +0,0 @@ -/* This file has been placed in the public domain. */ -/* Do not edit or override these styles! - The system will likely break if you do. */ - -div#header, div#footer, div#controls, .slide {position: absolute;} -html>body div#header, html>body div#footer, - html>body div#controls, html>body .slide {position: fixed;} -.handout {display: none;} -.layout {display: block;} -.slide, .hideme, .incremental {visibility: hidden;} -#slide0 {visibility: visible;} diff --git a/source/ui/default/slides.css b/source/ui/default/slides.css deleted file mode 100644 index 82bdc0ee..00000000 --- a/source/ui/default/slides.css +++ /dev/null @@ -1,10 +0,0 @@ -/* This file has been placed in the public domain. */ - -/* required to make the slide show run at all */ -@import url(s5-core.css); - -/* sets basic placement and size of slide components */ -@import url(framing.css); - -/* styles that make the slides look good */ -@import url(pretty.css); diff --git a/source/ui/default/slides.js b/source/ui/default/slides.js deleted file mode 100644 index 81e04e5d..00000000 --- a/source/ui/default/slides.js +++ /dev/null @@ -1,558 +0,0 @@ -// S5 v1.1 slides.js -- released into the Public Domain -// Modified for Docutils (http://docutils.sf.net) by David Goodger -// -// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for -// information about all the wonderful and talented contributors to this code! - -var undef; -var slideCSS = ''; -var snum = 0; -var smax = 1; -var slideIDs = new Array(); -var incpos = 0; -var number = undef; -var s5mode = true; -var defaultView = 'slideshow'; -var controlVis = 'visible'; - -var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0; -var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; -var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; - -function hasClass(object, className) { - if (!object.className) return false; - return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); -} - -function hasValue(object, value) { - if (!object) return false; - return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); -} - -function removeClass(object,className) { - if (!object) return; - object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); -} - -function addClass(object,className) { - if (!object || hasClass(object, className)) return; - if (object.className) { - object.className += ' '+className; - } else { - object.className = className; - } -} - -function GetElementsWithClassName(elementName,className) { - var allElements = document.getElementsByTagName(elementName); - var elemColl = new Array(); - for (var i = 0; i< allElements.length; i++) { - if (hasClass(allElements[i], className)) { - elemColl[elemColl.length] = allElements[i]; - } - } - return elemColl; -} - -function isParentOrSelf(element, id) { - if (element == null || element.nodeName=='BODY') return false; - else if (element.id == id) return true; - else return isParentOrSelf(element.parentNode, id); -} - -function nodeValue(node) { - var result = ""; - if (node.nodeType == 1) { - var children = node.childNodes; - for (var i = 0; i < children.length; ++i) { - result += nodeValue(children[i]); - } - } - else if (node.nodeType == 3) { - result = node.nodeValue; - } - return(result); -} - -function slideLabel() { - var slideColl = GetElementsWithClassName('*','slide'); - var list = document.getElementById('jumplist'); - smax = slideColl.length; - for (var n = 0; n < smax; n++) { - var obj = slideColl[n]; - - var did = 'slide' + n.toString(); - if (obj.getAttribute('id')) { - slideIDs[n] = obj.getAttribute('id'); - } - else { - obj.setAttribute('id',did); - slideIDs[n] = did; - } - if (isOp) continue; - - var otext = ''; - var menu = obj.firstChild; - if (!menu) continue; // to cope with empty slides - while (menu && menu.nodeType == 3) { - menu = menu.nextSibling; - } - if (!menu) continue; // to cope with slides with only text nodes - - var menunodes = menu.childNodes; - for (var o = 0; o < menunodes.length; o++) { - otext += nodeValue(menunodes[o]); - } - list.options[list.length] = new Option(n + ' : ' + otext, n); - } -} - -function currentSlide() { - var cs; - var footer_nodes; - var vis = 'visible'; - if (document.getElementById) { - cs = document.getElementById('currentSlide'); - footer_nodes = document.getElementById('footer').childNodes; - } else { - cs = document.currentSlide; - footer = document.footer.childNodes; - } - cs.innerHTML = '' + snum + '<\/span> ' + - '\/<\/span> ' + - '' + (smax-1) + '<\/span>'; - if (snum == 0) { - vis = 'hidden'; - } - cs.style.visibility = vis; - for (var i = 0; i < footer_nodes.length; i++) { - if (footer_nodes[i].nodeType == 1) { - footer_nodes[i].style.visibility = vis; - } - } -} - -function go(step) { - if (document.getElementById('slideProj').disabled || step == 0) return; - var jl = document.getElementById('jumplist'); - var cid = slideIDs[snum]; - var ce = document.getElementById(cid); - if (incrementals[snum].length > 0) { - for (var i = 0; i < incrementals[snum].length; i++) { - removeClass(incrementals[snum][i], 'current'); - removeClass(incrementals[snum][i], 'incremental'); - } - } - if (step != 'j') { - snum += step; - lmax = smax - 1; - if (snum > lmax) snum = lmax; - if (snum < 0) snum = 0; - } else - snum = parseInt(jl.value); - var nid = slideIDs[snum]; - var ne = document.getElementById(nid); - if (!ne) { - ne = document.getElementById(slideIDs[0]); - snum = 0; - } - if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} - if (incrementals[snum].length > 0 && incpos == 0) { - for (var i = 0; i < incrementals[snum].length; i++) { - if (hasClass(incrementals[snum][i], 'current')) - incpos = i + 1; - else - addClass(incrementals[snum][i], 'incremental'); - } - } - if (incrementals[snum].length > 0 && incpos > 0) - addClass(incrementals[snum][incpos - 1], 'current'); - ce.style.visibility = 'hidden'; - ne.style.visibility = 'visible'; - jl.selectedIndex = snum; - currentSlide(); - number = 0; -} - -function goTo(target) { - if (target >= smax || target == snum) return; - go(target - snum); -} - -function subgo(step) { - if (step > 0) { - removeClass(incrementals[snum][incpos - 1],'current'); - removeClass(incrementals[snum][incpos], 'incremental'); - addClass(incrementals[snum][incpos],'current'); - incpos++; - } else { - incpos--; - removeClass(incrementals[snum][incpos],'current'); - addClass(incrementals[snum][incpos], 'incremental'); - addClass(incrementals[snum][incpos - 1],'current'); - } -} - -function toggle() { - var slideColl = GetElementsWithClassName('*','slide'); - var slides = document.getElementById('slideProj'); - var outline = document.getElementById('outlineStyle'); - if (!slides.disabled) { - slides.disabled = true; - outline.disabled = false; - s5mode = false; - fontSize('1em'); - for (var n = 0; n < smax; n++) { - var slide = slideColl[n]; - slide.style.visibility = 'visible'; - } - } else { - slides.disabled = false; - outline.disabled = true; - s5mode = true; - fontScale(); - for (var n = 0; n < smax; n++) { - var slide = slideColl[n]; - slide.style.visibility = 'hidden'; - } - slideColl[snum].style.visibility = 'visible'; - } -} - -function showHide(action) { - var obj = GetElementsWithClassName('*','hideme')[0]; - switch (action) { - case 's': obj.style.visibility = 'visible'; break; - case 'h': obj.style.visibility = 'hidden'; break; - case 'k': - if (obj.style.visibility != 'visible') { - obj.style.visibility = 'visible'; - } else { - obj.style.visibility = 'hidden'; - } - break; - } -} - -// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) -function keys(key) { - if (!key) { - key = event; - key.which = key.keyCode; - } - if (key.which == 84) { - toggle(); - return; - } - if (s5mode) { - switch (key.which) { - case 10: // return - case 13: // enter - if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; - if (key.target && isParentOrSelf(key.target, 'controls')) return; - if(number != undef) { - goTo(number); - break; - } - case 32: // spacebar - case 34: // page down - case 39: // rightkey - case 40: // downkey - if(number != undef) { - go(number); - } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { - go(1); - } else { - subgo(1); - } - break; - case 33: // page up - case 37: // leftkey - case 38: // upkey - if(number != undef) { - go(-1 * number); - } else if (!incrementals[snum] || incpos <= 0) { - go(-1); - } else { - subgo(-1); - } - break; - case 36: // home - goTo(0); - break; - case 35: // end - goTo(smax-1); - break; - case 67: // c - showHide('k'); - break; - } - if (key.which < 48 || key.which > 57) { - number = undef; - } else { - if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; - if (key.target && isParentOrSelf(key.target, 'controls')) return; - number = (((number != undef) ? number : 0) * 10) + (key.which - 48); - } - } - return false; -} - -function clicker(e) { - number = undef; - var target; - if (window.event) { - target = window.event.srcElement; - e = window.event; - } else target = e.target; - if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target, 'object')) return true; - if (!e.which || e.which == 1) { - if (!incrementals[snum] || incpos >= incrementals[snum].length) { - go(1); - } else { - subgo(1); - } - } -} - -function findSlide(hash) { - var target = document.getElementById(hash); - if (target) { - for (var i = 0; i < slideIDs.length; i++) { - if (target.id == slideIDs[i]) return i; - } - } - return null; -} - -function slideJump() { - if (window.location.hash == null || window.location.hash == '') { - currentSlide(); - return; - } - if (window.location.hash == null) return; - var dest = null; - dest = findSlide(window.location.hash.slice(1)); - if (dest == null) { - dest = 0; - } - go(dest - snum); -} - -function fixLinks() { - var thisUri = window.location.href; - thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); - var aelements = document.getElementsByTagName('A'); - for (var i = 0; i < aelements.length; i++) { - var a = aelements[i].href; - var slideID = a.match('\#.+'); - if ((slideID) && (slideID[0].slice(0,1) == '#')) { - var dest = findSlide(slideID[0].slice(1)); - if (dest != null) { - if (aelements[i].addEventListener) { - aelements[i].addEventListener("click", new Function("e", - "if (document.getElementById('slideProj').disabled) return;" + - "go("+dest+" - snum); " + - "if (e.preventDefault) e.preventDefault();"), true); - } else if (aelements[i].attachEvent) { - aelements[i].attachEvent("onclick", new Function("", - "if (document.getElementById('slideProj').disabled) return;" + - "go("+dest+" - snum); " + - "event.returnValue = false;")); - } - } - } - } -} - -function externalLinks() { - if (!document.getElementsByTagName) return; - var anchors = document.getElementsByTagName('a'); - for (var i=0; i' + - '

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�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%0DgI^ER2!k<@7J|g#H6S=%waCp;9}1t7 z3lXwiZ63v`Xu4VtZy-H*!`8$xI72T&TBr2vUA**Dk|HabBq6^CKx+Z%9YR5;x*sV1 z+VgNuKeEM0yZRssPAv0X$OO_2cH!QC@s$sdT#{?~BP7T}5W#LepJ-C1_Ktcrz|&yJ z!17srufWN*Vd`a&OC8x48K+pJZN&(!mNKPQ&Xn|;<;GBT@Ys~vAZRBwb?$0NE5H_V zhRUgs>{nD{@R+}=O**GqnovVBF&Bl1zKC;3Qb!gF)Q*V#5ooTWN%(CwzRLb)YHlB{fyz@2ia#O=;KD?;)ETJQu$nU530#n5g&$xq5N?;N2OJ+N-mFN_YvQ_=Yibx zv5S-;&q;X*C?-my?(aGt@H9Sgk))i~Wm|x4a<}?H==x+jHoOfp{wg73_hQA*zVZw2 z?dh7~$RNS=n4IimH@dWBaV^@_e9(tQ5-`cogOD7{C9VV7@{D|MplGo*zoJvVMX0s}B$>$?A}dDQNz{VevtpMFCTX zl+_r0ok~KMd{*Q4bd)T}2dV=!&F?w-M7qdo^Vw0c>xh;LE6>L|{aqcttfN{QzIu-4 z3p0+2C|lPo4x$LT%L@YTOr^==VI=0Y7VqS~=hBv&}353b4cx2+wzdGDK*7qyPi~b|S#OLE=$T z0AM~Mk$P6q9=uXgPUv!4fYkyk_!P!K{rRv#7wq#xX+2(!i|Tim!LlP{46yA53)Wg?8;3=yiP_*}H zvr=RQt|YRpD1xY0`e4C!R8%i%Ww$uGYORnxn3h#)W%W@Kc0GZJB?Dw2b~tOHt+Uo7 zPlX=)0l1oOi}KAlKQmWL3!4f%eO7CkY)5{rrGds4Owu=z&Sok(QqdVahi!^(2e3k| zOOB|SL*s)Ty%T!eSqtLl-whnXV2b-t^c4tXJ!LCk2MgG7(^FP|O|L~%z8^P>nL7#= z9x4<&eHLi#=kZ=7sgLG?dR8BtK%&GB$`U1+SQ}PJa zD-kcN(Bcm(Ug*qoSmjjAoW{CKP3$R`1pNo5I1}2YcFiEAH)M51d{-H`{f0e!28GS$ zM2OQr8xlHFAaK?aSkXk)VjC3c#t1Zf+8EU}8Bq=}O9Le1IQA+;amp@XYxmThX%irg zN_2>%&FVbEOa+nIxoz^56AJ=z5Tm{(3#?sXV6hq~e77?#=fIF@;`&cL$7IYT4l zDs^{w`Ftu6h(7ruy<6+@6!u-R9jWlS3BwU!lZ!aWi`~2K# zOAi7uv#1u3>eu4_n!3{xmvAc%gGS`F#B<)vbGD~Ix{dUkzMOYq&g)^GSE^+mnya+6 z=U~DYKcEG&`mdx_jm`ws^ka$Mf7BqgYDO$Csg!R+UiA%MED9~C>hB;5pj~wstpjoj zph5*^GD9YBXsPRAVa*)ZB5^Hlq4|XT%>h=8%y7G!j^(;hw*^jy#a=uD#omG+Z4B#H zKBgf7RSRvB5V=)-8Gcv7j9aR(KY_?97tWj?R=A&)I{j?lJu!YXNqx`HEzQwk#9#@< zV5UjDie!GSp>5}Pe?|FYY&DD+T22emHX50O)Gy#FRNr|8hX6%d1$dr87NrKz#>wae z8jZv)2dLZN+a#c^Wg0KwL?b^iNgonZs17jo4ya2TFR>7p@4}YAL98YgRH}jGS$1n= z_q^gDW%vu4KOz50p8s_XZ5ls^$W*hTy1^nJ;MzPCh$Uj$KDs|_SfD3h0O9D zu4T_rpVrPEtV{%x66Dd6)9_e;WS2E{7gig~jJh|WYn`rimSnmBh z!d{Lu+8~}wM(*-PZsIo7m&@?Tt1s`u2V{PIH)TdOeQhR!eO(GIdj(@U6oZk+UIeYJ zB|UB&rH9v(ieI4zLFKaud$AIQq8P)6ItSFdmAu3ui@`9!fYuMQZr}PBG*T|x3BTRC zz4-M$w$9r+*U5|0fEUO+if#Olt zq3iB;G|F5+c@y{WV)m5Bb-ptO4O%0TO|@$nj;YQ_JVRMVu50w`&di^K1lgiGJ23Ms ziHC;qP$3VQd1wI-bsnbBA|6tCXbBH}Ng)=OoGoe-kKnY_@|$;1UulH+_aUCo#vd&- zM~oX+a8nivj_pv4dT>=?Z=Nq_nG0KD^L*!PRKs~l>b8)bO}F3uTHid=Rv1k7mQy9KusA|qzL~U+>Z0kvSc( z$?C(bMRhz|fvNgN=Bu}=%LmJDC!p=uzKNq?a~f$kV*v;UT7GO>?~i}xb_^(fg@mYc ziB!}snP4IVUt86`O9;}OudTf10LUN`ZNI|e7hmD@#~ahR9**f;cgJ}gpWWyDG~x27 z*!=rx?8hq88bM1j21l&Lc~)Ns{NqBvA5N2IHYw4*P6$W#CTDB|&E4tN{p>5yV~oLx zQc?Z7S3u|njX07~1`F&t;$9hzQaD}xI+Mm`GDKh2is)Tu169S-wzQ7#_V$~{pc^DJ zgFYb@HAtpvzv9}63TgXK_X3G%MaKSV2R1bM3tChsC3X#H-|{)iGgc!iXxnwWi-vc* z8bAW5TnNoK*d)*CrJu!iLo%ob$-4dI%N#bz^Y5km&MwGHMNQC&i?K;llfk@gAL|g*4N3iWMeR-!nABqUS;@-|xBAy0E|$B}54l&O0R!J+Dp zy|noQ{AQ^7#&_7Uj6MCF3C8NpKjBzqz68jDe5(B5ULe+h*NaHDmO;g>dI5Xn$mZMC zi%Cg>`En@Ow6u&RK_6Sjkf>3DcV;Q?ul0E*Xk> zeglxZ+a*t3aEz7&FOl1vlIM$(>oILH_R3Qy=SnrYNs64?jm{8vAE*8;)Ul22>W#;_ zSvxYzs^;+|iITp?>ePq7;ez8p10NBDnB^y?PaQ_&>1sQtx~olZOyD1JN`35~Bu5WTJLhZJ7qL|?uEd*cP{NoxT+-_IV; zDahL2DVmE5*b#{x2(YM7@fC6i7%ZtV5cW3bUMoCDnnL9643^g&@az?y{TtdI@=oEq z@<*~|nn6zd6~1|l@@SYM@~32<`%MjcGnyR{pO=-2>lNPx=xmp;UC!6cjYn~DRW`>|B(vV48PuP9xnY9SN*JIP+|hosgO=t4-^UVb zQI|fOOvH||9<}6%uIHnZDA1TXA+(%$RwZg)fg($AGlp7nr^v(oAWAB=HmPQ>Su)ii zO^ISuU$E2+xlDex)9=|Sgz|`2PPZ0domb;VkJ4=kW(LA{TE&R>RCFSbG6t<^jUPpg zzVjyW#SieoW}1~At5Bg59QJRTP(|JYzoKb#0o&~Jv^;&Wzvde=Xz2*5sMq?H8e2hl zuCbeCet@|x@58UD5ppj5vV6)f4TfsA9&JFuj0Odt3hGQxluua+De<^+jJvOV%C8dQ zLS&OGpYof8xC)G$Qa&Y;5QqE!+6CoPo==E-4&#QEPx&>*rSZ7s*t_508`;1BAHoEe zmO_IAI36%ah5Sh5|Tb$<1ui!yeNo+m(HZ6gPyLejjfV5xov=4aNyNPL9 zP_4qg@y&O_qJ@M-E6HfUHUsvqX)qXa?=Z{5fri@pkhNCwG?u6Xf~6MBmISmpaxaj( zOI+GGX!a7`?8L-o)q4&hdscz@8iOhB>S!k<6jU4vriqaPlREj|y1unSm#xtG9^jBG zm6KL^q;fJ{9;%!)%NYUSh&eu($VJ-a0k#3>IRMq>NXlRF-2mBx!+mTuB1FS;_=`@- znuUsBVlK=4ydDs!1tnBw*;bD@j*CGm+Dw|pbJTt1{zj`ouLW@~n`OQZnY5kiO9z2T zgv~AhF9pE66ZqVxh=HCx!A$ldw#9ac`sbR3ZGnepkDP{ZTLA9hut1n#g{&#QFhS?8 zj?=9ipjqCZ(5!H#{To0HU1@Rx1kvk&8z{ZHJVEL01^&slqXTKgJ_iVc^36Ehs>D4?$&^v6r2zAo3e2Tb zv^wQc?pC&)HV`km4&m$8g%HVXY?f`g&y`(i)JA?nycW+ZKvuR%{oM>~+H+c{*aSI+ z)o9Qrix`lum^3)RcW@vtn(uBeU@d;!oIV<0y91sr!3)(>$B;9{iAjR9gF5UOrz=Q} z&@sXyd3MS>0&Il~MdY>UX&|!dfTt$VXY~fvPMA@HPg3lF*|vfzCgC9&bc_@Ao#;S& zOuoibw{)TccXGuB6+>I8s@`l z06McUVF%%?`_+6e9@u9G_nj|5BkN%zB-KGXZlR4Pmok#Cs-xYU=L?~&^wKJX>QM6W zG(Rz0Z99q@%=Jc?z8`173^)+x1pzMJOv1o?bb_G+D%NPuZUhdP5-9n4dw!J9Aa z)N(7TpUkOGp%c3(LT;`rZw!cBQ(Wl>X<-3x#emu$vin6B7%)-P+4!E zv%uNyKzE!AI`IZ0@e0st>)oyD&T&L@q{!1YF)}L|MDsddc%B*ltnimneC!?2Dwfrt zW$^TJ^SDZrgf`P3jKQN)B!cb$>u_UXxjDDeD51c908{?g{x0qnmeIC=r4-%uxqJE| ziaEmkX2iMKx_!+GJd|SO?kCfXGxi!->#|P*_3+#d#iR#EN)gMk4GEhY7IoDZ*oY;w4om%l z3Nwpd%XjaxaRZBxk+)Gq{1UB7vz+S1Eqxk$PQsp$7x&P(N9c&pVHr+*d^gD^y}^kM zmiu<|Z8Y6}35c@X^Ya#hMtPMyKec@2$Jty?Wqf9qWRWxO4p-~B*dP{skP|1 zDlyH^Hi;i&gSk0E=tA^IGi~*o4k9O3dMqW;a$P-*eAZ0c8Buzto%J<4bo(p-AN831 zF_z~?P96r|tIdfeX$dhvljq)U6 zb&jxFGJ1Lz+p~5+o!5*7fXdR$e$!|EtgXQx@kC0FBe+wFTz}r$UZ|kVYW15oQX0F# zTpoQLmW4b?iJIkem1w4H6FpmjE!Ambs?25>?BP|z@R3nvwxax4H55YO>oa`eVyk8f z-))s5%WOdA)+R&MK;NQ!acIUa-vvFcSkue7>lbJC?42;-U<~ZcbbM7$8mk6te3adq8paQ&w}e=;K~nU-w;ySr5rZP4&`vBoFRHn1;?!CeOu4_wx0KGJ@xJG z3@LJ(%^z8M$V{CQ)}$bjD@HS3Z4!>#Aw-U)C%94-0NjB^oVpzs04!o+K^whsFUi4u z=va@aY}3{1Z%Ox1ZKv@0aurF>>V{Kz+G(#R&n$$V$2~JAZc|-yF`4Dvy5wo#dubAT zkuTFmv5K-hemQi(gGT|`R@Hi%A9idIDqNKLmwY4Ir~{Yf0nkog>U-z;0P7!FBQP9s+_oZ7cMYxxO8lcz^Pw&lLj z=T5H-8TY32W%>pkk;`>l_D_$IigqjyjYi&yxjI0|)f+Hf`x;hw-Uixt*Mmbr%D;L8 z@25rm5UEvo?8FVcd%P3B0Sc>SflwB_07hW<7B^beBkaiKc2d>LO2q1a-I`?Wr~BUa8Q& z1jOH~Qx2?DeKjHexAd-L z#~Pb~jZKHd9E>QBA`wv^=lLaw`jl`!Ylk|I$Kk;^4Bo(lSdBWJzZa5K&$4PG--aKf zti^M62-mH*5-j9RX~)cwrwTVD6Wy@jxmhW9Mu$91Vgk8uVP7ojp&clpJ=2Yxklkoa zNZCm#4Nj7+KEdOe1O4Hn|Js56H?R_bqm{=;)yz3ux$}&$*q9~BC@D(-MqnwktqF0}PI9#eO}iX>-Jz7>SQtsKK^Ywt5K(E;JAB5} z0YLhU)&W5Bu;Ywy_JD9Akk|ecNS`t7CqPo%nLzrCmHZ@RO}}pfsvb~6#POdRU_%3* zR{1h13`=ga`Ul_u1&}z-4}poe8=_3Xb8!(%BOVX+G{b5d(Y|0!uhlE8 z-mcb8iAlZabm6W1kX)<0l^?rM%dZc)(1vI5MP?ec;TT)VW5X1SRs}qMGRKt@h&g33 zaRf=$qM5+rvNed?T%xYHiMIMi=J;HNTnL&S6N22;+8Cg>u0<0zfrwN{A`+gG<#JX` z<6JnvUyWSTfQEq@MY}-grM0TeK>l~JU9Jfz>Syya>gZ6?7(cMB+aD@B%eiV&R@>0E z3NYmgl%S{YmAZ}qGb?qeg}8ZphVB+S?efSzvZBwEg!g)Qr4_m)__`5a^u3EgQ_Z{& zK#I(^2Jpb_$Y%(=;ACam&3L#@9*zDF89&fQ@fH+-|J7i^inX^fkjw*#9-x4pYuEMJ zh?r%?cc40rpjiy2kZPe>Kw=BjNkxscn-{kH46>-*<7s@ReZ~QB0YpH1!eaxN*v=E3 zvBZ?BF$lsEIu$;P`0WUw3bolF%ve#&K%w4pbSLEbo?HO!(;-uSL^6SR6o}Z{T2Nc4 z?spTfMH5VbjWGJr`92+fdu0o(ymq@nHZ^;%t_$lHIs`3Eip6{=>fU^%cljU#-=7E=AH?; z|NV4d?%289hq;C1$Ip320^#PqjD0o%N9_C!;WwK+6&)(r5klhDe0O`<6lZ?qNh2MW z`ZB=(ES4`+Z~NwKD}c;Y3-{s*h~_4t0ojBit6LY- z4{O#>$<)3r3F;KtuH~i>==Nw(0|gjJAX<3vk^x~uqtbKBGt1=1l&Dh(;nt55O_u{= z)(&~P5_QN~N;FL#tMr(KiXfm$KH7}XcAw97DLZUL*o1Y5Q|KI)x3j@3RN!WYvcnq< zQLa7OVu(%(KCbNVRlYx^>_`&U9ZJz2f{KFks1m0(Pl?WvXDZPl@)T_MLWE$1(vvJy zBq3j@=nlG}jUn1q`4vsUN%?Gtuin?W}Z4zf7UY3G@;^Ai0&_I z?+syD3zglX9-K#{0FbB70*w#T3LwjV%3_UWY3k2ng)Bq0iy_NrlqDsW<*)NN1SSqa z3S_e-LIDbt8oS$LK|b5+V-0@xIo^;^hC-5b7cc!i%J{}8Ie}0Y zbpcJf8_B;iwZkAUl$g1r)9X-zw+ZX!JA{%OBQs7b-L}QH$c;Aj&UU1@LMX~)FmctA1H9X%VDMdEAqlBL!n02ns-7atV@=VW#xG&3py)U5r zU>h*e0(W%*TE~C{1dz3>8%r>4Bc{cwfFkIgLChHh0|%Z#xA_}toR;5=)~vBSEBiC^ z`hR+E6=dNaG!MJfy)f0%`Ag4o!lD!AFN&KDOmw`d2q9F--h`#!1Bq`Y$>~a?Gb}oy zsNpD$MtJ2r6Dexy(#gfm~OG&~MPn2cEQ<;UZTTCg?X> zh1Fzz4GY=`^es{L+LUTr>I{eSpw-ZCNtP4OZOn1ma87O+co?%#{J57;w?<@bKA6`l zVG?pg&&J?rwGu`bR#=XDPkVfuD2ndjZXMM16^HS95KCJVtUP5O-eti$0`NbQS^fsl zrJ7!g@}F_D*oq_bL9dqUZSlk?bt2RZ4fK8)S6riSLoz$; z*&~FOC*vdv70+Vjo?UXQZ~4;8bHpl?|4Ld+qknJciq_euN<~NPEEb|Z1;TT)z3~8$J+TVCYC3({R*56c@<4W~IHgetJ#WC>M82OaRu&lI zg+yhuE}FjdM{YHWkp*48N?&%WZ;CG87ta7SXp^7)yMTS~H*KQ3b^;z%P^Q4b`~mXjPL#KqGm)vm% zs*82^DVcU5({%ggrS$ex?owB_9E2`by{7Al9hBtpW&CVSntY+RGArK3@(@K<`Yun^ zX81k-4hr#XK})?UO>@W4Ddw|-$2=#3q#e%$E!_Yu$pX>?OWtdEkxdqKIpDe9SO}@`6lpKtpS7pcR7O%=^j`=E+ojo* z6Xs_e0Bp%{NES`Igw>|$IUgJ5gAy*He5_qXcNUqRh^ zwWl^{m5OR5Q=4}8z;W_GQ_6{?N>~9)hb}k82MS_gkaCq1rr=Lvr(jK4ZQ6*~V0C?& z&l;qnR`rAvP|pVnCi~ch`|@Jezgtuv+fu+bAqR4|u0;!WfY0U|z>d(G7#ykF?|qz3 z*M0j1s`LQ#cSfYZK;b-fAc?oXqU$qbKzoJXHkb~Dmu5>*95BzWb!nu&7mK;K8U{h$ z8zNID6~H(vPxT=#XxOe|r5kWJAL5EVn`B!tIoBl-dXgJZWJYfv>LwNE+6Z;c(b^d5 zo;VxoR`sDSYOYvU40k_$oG^9>$ODUL(N_EeG9dm6Avz--u^j*NnK*nsb*?y<*DKE| z4rc)ZS0yxzhzwC{2S(+_tErrmJw>}6@qEO9s)Cl{@Nn(g*!)Qiwa8e2fSS~6#u*Hh z6#yy%fchG@YZ>wQSr{MA!qF=5>=&N>2crG>v!ZNe9^}^ z^QU@!g715gZPb3I+Y25;Mr{G&&pwOuH1!pFMaemO9&LI*614c(e(fKCJ+DJr6phrN z-Cv|W@foqJ8~e&8ZrQ_>s1NMqJGsin!i0+m?y5`J3#BugiPs^B$T$y3MLmk%8$4GX z_8D&RgdJ*hXPw#90P8}I8;DH1zZRG1cOYYY zS2&BAyI>gyoL1!<;1FunPTc!ef7MqnxfvwvL;tOnZ-%^ucAPq~yc@Z+@M5*6E|{hM zoR_|3XWusV8Kr;5OKXpU476#E!LX9r@ANsXMtP`@)dP=&l+rFdWvkiMv_3G@aa6Uk z1rI~IZ>2jXE~0d3Z(r+R(Dt_h?7g;!h@^Gf|t>H4$n=L6L9pjPO`RJ?g$nB>`6l1bNieWA(@5IooO zYX>B<6LrcTNuHCX8PuQk?3ZIY?6fHnG+z1R6`qRGKr9!P-3k zRSw0QSMFlsm1pqv+;ZSc1j%ELp2zYh584z_78 z#PkE9ZYcag3Haef;H3?Js1Q6={OQ1-?qG9AS%%9Houkv4)U)kZ(P}C`NDeT#pR3!~ zE(9E0S4h^&`x?>j`=me@fabe(KRO;Esy~%PCa=k#B3s-V&a~par4~avT7KI~^YSa7 zvig;DU98VbP0J5Il>res5Xen~pD7qK8)5=}r4IBu%l-`sg-hyK<~oQd_5ne@PYC&q zTzXmHN9oE#UV;nEQcK8;OGBE##vcEK zJT@a&rC@7J7d?BHEt8aMb-+H2q|B&l8vDgGB6eS^Y3&Hm(uZw*l3Lk}0C@b7g2WOP`aX?MG+gdaLK;(r5D- z)Cx;~j|94uWE%Sjn)not4m!Hx>6MeqW?9R$XX^8;*Q=`3`%Y$gtAJ{>f9>LCvJHB#6utgcqNlY&^AS4&m8O+hofTBXRW7_4Jruv+xI z3=pY+j9iL&r3N&Z=pqQ2=xME+gcUd8q590XKSs;5?IAj+WP<$YRI!p~_b#WOl}_@r zr?LxJQBI$W;o0tUD%wrgI)FO!DPoVq^(gLU~0F`k6N1hAxhwowF@w1w^-Y15&=4USM>mX~H;x28f#o?u)lUk_-qYbchn7Olo7>4{5iLJxNW*Cgrw=^N(Qh9I z{*|I$g{&cK(JKFv>0QZL`_umMzc-uME3431%KAp9-;XRd({#o~- zQTaP}XXFN>y1%i{J}1I3dZr!Nf;Kwz5)Tv|24cAmW_6}ARW-;D&156g&gl+Co(}@R ziz+z=S^j|OEJLN+Gp-VqUL)usxjJ8P6Jc$kwZf&HlV8yp90{3{WScsMCyRow3$GrO zn0*e_GU5QrBr4uSOV+wa;f-6vybUNL_8OtcaXxO`?+*9L=l9QE9p#QDasHEV-meEL zo->QDLir8=dmjk4bfQcFtvuBmsv^-i&C?Sc+v%Nelt-x(XT?rHE4-0{`a75siwz*mLyoPrB$RHY(}Hf^m^ZDtD&M@ z&Vczl(8N(cX~5->I+S=mAbGgaiuo(t<)E3rQ+R*g0eimQuq05 zPQgl@{GT-mE7kYCAz`U{nrQ8eXc}zoT-?avy%+B^oJmU+YT#=%9pm^a9ip~0_CZF= z(>N=(Jlh(niT4`^Yoei{Z+XtgspdEJ(9+~<191)3hddr$tn#@M^V`&m|EcTcMUJkM zx-h*Am9o0^Pl8EYG16JXy*ThdDTrd7abH+$r0qosW+p)5hZ?WtzeJk};U9 zjshyUHQ`(mKhN?$oqIl~XrSK(zq3@&o%UrT-A^*(Ya|F`-)$tn19=IGknNJ-Yb*0O z7pIna46?gImoF;wj1Q&)k=KP6s#!Pa^XfkeXp5KpIrTcNc`9Uw7u=Ev9vgUB!XW1> zm1(y&lAfp5(zf<5PQ$yAkbb1$rQ(sfCL^`5KQhBe`;bymqgqPl z!fueeB7f!kw1A>xYv3K>e*jBwO~b&n$ReYhCl&p$j<1((Y7Q0+r(l^95~)AOvwPR4 z4|2}@?;FX>!YUQjOC}g1L+~|d>Gr?!?Ts7%fvFQ`{FQ|G3k?mHI~w{tU(R;m6YnE^ z1MfoM1-HL}M8Swe;lJJ0<-{}S^9$G!KkF8i2XGO83s@#L82L_dtDF)Dqm97oK7{i& z6z1)aclCIfIyCL5TCS+))2$6D%T1LjAX5md-I%gn-Az{%$ivUf0IA+kr+iMuq2S-W zWxY;08GciPuVS9m`Wd=G13cK`?!+ye&^`l>wNti~c~XNGM2;gAzXg@)itj*~4o`I< zc%q&h^N-aqn_g4qnJaf9$XACp2giacGenBy8Ow6ULp4CQ(s33lIuQjsTB6!ekn5rS z0}J`@7%;uzX7*T zBGcY|umAoAy4w0>wB_mcjC&BZ#%69pG@Z8nFSI;yWDP+RimP}74jOj6grV_U+0{>Q z7p(|=r_rGw|Bb`jujfid0aX8b^wOK8$cQ77r=>(fr%FwDWcQH}miu8+#8eE=vU8_HgDi_}*g_D%KgubuDPu z?Vi5!bi`;lX-OwRX_^3vv#A$eE(~_XUw%M=BZqFsmaVimQ~{{$bhS1el6>uMQ~);OCo8tAli$X}rpM{7 z`*N(5)oZ1m?Q$ygUZ@BV#lH9Mcn^fo6f}9|IAxopSHm;d9eZ|U)#=qzQ3uwUO2Bku zkB3mj4yYh%&~bO6p04`l`%jd1Y978c406pJzsQqtHRhUU8NR|0yS85X^orN^OnxZ~ z1&jtzjJleE;GSZ55-@gW*PeOY$^frh=h60*-`%d;JLdMkzdMiX(>d{o-^}CZ7~py~JCrKUw;#wm2$txjxwDN>hy2#Br> z3PUGd=tMBk8s4Vb`Yy-`UWNn>pb$9}+jV>0oe0ItF(@t~D2@RX$3@Ta;D-MJMIwJs z{G5r%)Bv7$KB5+WgjPr-F}Y)#-$74lI*l92%z6OHoc&I&JmUuG3i6n=Cp{38UXR>C zJY5Kt5~4S%=8x#U?Uws7xE+x2nRl>`raO4@_a9R7ANrCPQ1aWc?HWu!SDw@ zTl;;z(V*sk9P3#05&bNmTo_=VmAZCIZ=q+6EEKO?jvOM?D&O;FO7NJ!O7EqA%lzvN z+;UqkFy3YP2FVAysM-w%x*pMqhsTKW;$Ek2KRu_q)U`YTLvAtn}Dce^|LzKFMu|v0o*}2hLOemUmU)K{RF4MP&yqe z46r$Apl8=OrLed+fZGVnm)3!?-L$VDb_8%w;WKD#ToiBiORR6DRDJ^eWlBD(f(i|S z!<;5Kd}&^(yrv8%q%n9Vs> zSYZ5Kj8`$91Ex1(Y)620E#CH*tJs3Syc-{afnG+=GP4PLR z36hj(QovfQUz(o|U0=-S2j-$Iahmx2)FjMLAl4p^Z#Rx_2ga!w zhm+t}F>Wu$wP9Q{z(q5J(|3~%;|Vf8K{(Ar|J(emgZbe$p?o}N{3Vh#WnZ`0X)pt4 z0fn1+tp!E1&0TE)Q;Ss87?{xFFRGi#M%d{7X~`;?W?4H$lOSgZt3{Ktw?q1Uz|hKsh+6fQcZhK|+ff#tWkQoYJ=rv^ApHAN{y;*cNr~)iKNeP_^cx zK6@9^v)dVYTcPraM*CyPF_l9p#)2;m2 z_7S=l&hpi(efOoOpl8^Zc=B)Y+oV)P=Aar|SxpLsS}|Ap*(NEg&TrZ%;Z32x++pO**vE^a%l0Rpn6u~;n5Nfh=f*E;+DSRpRq+hB z8o4MH|HvF(os8^%E-qc4NE-xhytZKyxpeDwG4q58H=|S>oZ+zz<=I@q0p0AuS7(^8i=_hDB+Sb=6f8o2xl80Gg218VhFKJ1zc zRcE|nAcv%YFOq*8+vuxaw>JlP-Ty(8JWP#o=~FrgGkSye03r{eP*QM|u*L*aQLJ>Q z6^F5lFbU|ulaS?VVGWK^$2I6Z1zCg&^tn|UlJFxMquI7%SOGq@C7v8yqBmeetWM0@ zD0(&t&l+)$V6H2GU$dBvmvL0+LIwKMqqqIfO?a-`B2+v8FDm`1vJ)PrtPW@S|5P$oAGpi zyPq8-bZn;K1ynr+(UDs+eWaR4K6E)#=t9Izya%NhEJqvWrm1Pc^vaPUeo3RA4))hn zCgW>)k3Jkknr6Ch9z{be?ql`7tZD#Z!OM7*7%HYd(4DC0K8AVXt4p^};1=VnOlTH} z)qr0bDZ;C{J@vv0ywZeiT1Osjv0=RdxKfl~=bJGT`yG7+*&|GuQ1My3XXBw~RBEuk zT`sJF&MBLc5Cwulad@Pt)F(;wS3`fr;baPy_w-^nH=Vtk<$wA=baU!Vj*~M1=s~-R zpUFF;t9Xq}wDvR}(11SOK<8944Sbz10-6`^%%uZ5lTqyBvNE2(#=n^83^LA}Ky^zR z6IVJNhs$cDODJ%C-wO4!08&7$zZ&vld?~Be-P+Ra1H~^6FJJYUGjRYqut#O+jMkaB z@Qb!X|1&UmKHhngIe%3@8IXKg^?XDwrVDQ6bdwB`p3Y}J(X6_C8eXE)20`KZ##8wH z2i{wt52EL^@N6=U#(SsG2AUxdccD7-(cJKvZr{Z(4o*iCle<0o{3*nc12YIio;^iu z;r_ov4a?}uj+VwhCh!EWoGzA4b&U~1mqMy~>RnupbVL78D55wGQ3>L+$njtW@j^Vq zp8q^Q!(NHu@{Pzm6F>O#f0s+nRo{L$CYO}I``>&Ly8duhpM+C?7|bW(=66X($a;4$ z89{uf-zVWulYioqz@?JUx?(;F``+oJQ{C_M`y^ys8r$^TN0I8s?+n&l>)Zd!CxOek zx@GH&*vZ}WT_d&V02<8lY^d30Dzh9`{L+UFZzO<#S&HO2A%fT*eF83zJP)M4FPWhZ zuJrTPq}!kl@vCa-la!wahX*{Ho){u|w#iB1 zi$KsrKVA%(lvLf%Ju;tgsoUO)Sz{9IFlf$os^7jzu7{6F>;>+Ki@QQ<&Pp_2&UJak z+=U~AifyQCtqH}hkV1XTQ}aYX^8AS2il?8*q))z~{r&Y_usH8|EAIWR&Vg5E@a8)x)x7Woo~e~K0gKaDgc%$6GD>Czl|NQFnSF{0NeBY8_&NY z?~P^L-^-^YesY+9RVsG;IQ%ZR#8yH8s)7~5KcuSLKlIT@T}S5f zazcfGU_hI{4x6-J>h^QcW_vWA-ob$K74nBA$+_%xGx`R2f z+nl~R9lOmb=8G`h;q|jN^l1CJ%@DMRx|MT1-=bFF4Qkivvbm!Dnf-%Y>2%h6 zro>J!g32qESQHJZO9*7+Q0*Fk!o9q}z*~Z5&cgxLH$h9mQL5!{c!So(!J$0){p(a6 zZ_93fX4`+cQ_7KegsJ>sGwp?1#ysAqIpH@3&#34HZO_LcBX$9TCAh*joLbFN31G@UN(=oT*Ha`ldefhOXyu$30nyf1D&Xt8~Su z6`ioR>z#QHZy=JnXpye-Jx_ExDBel?8SBe&o3UP=gy+U41d6I5O}E zDOgxtSYQe@p#!{zpDKeaF31Aoo%2laA}oC#mL4q?HA}2k`8GyFTMPZB7i!3DetJ%s zEUJHgWAMIw@cQ6=5m|k77K#-(C@17K-sP8x?5Gd#m%|^Q$XWy87x>beazF@~QD6Z& zK*u!J(|4it2GMg=3iG2b!ivv88j9raom#kfm?Ui2G+kJ|!dljjSM&**No1R)B2X+c zs_9foBc#5N`U<4h956$3bCnZTA#@o!Qf?MKtwLyd3LX+R3Za**u@`Ur79~{})Q7e6IW9;{(P|p$2SH!N3*;aHwfT9P}{cN5g-_t9y2D<-G z@YP@&kjG}lZj3=Aujk8n)so;F`+6y1U-YQqCw29glrPB_))aL2eV-jQ)&f?i-hPr6 zh6sHa3zZhq4*zg*d44y9d>E<>#Y(KAXSBe?Z-FPWUAD<7DqFqzo)htOksT8vlj(pG z-uMw+NaOy1umZmep>#jEY=_eQGa+<@2LDkZ^bx&0CWQV#FN@>{lFgM3$G(h-hhgqc3MDek{BO zvmMFW0z|_XWdt352nt6@pd-;pJ4E_8RDS5YC+C}Qs`t49*<$3Tqm@2afp&{X_j+QQ z4-2Jg)BNmdntt_QS9}PC(8H&24R3VHmg4X=T2lC$_?Si?HqikqFaPEfo8yuYQ-qQf zd}NfS6~wSfyOd@P>lgvQUOA;e_%y#;8wK+R4;#fL7Zky}IiKZsQ#iB0Q~R{l-_?e& zS$V~2RB?$ZpH;*3JZqvlAN2X^h-MPz5qNyIwsBO`jkx63};s*2@$U;9fY(Evv z0fI6bl`W_ywak+(gwn}?vIX>eU%e?iiZ?k0hj`0QKNu8aK<35(6wCF$KzP|jV&v0# zSgL4;`o2_Vt_Kvf*1Lb_9bXQ zrMqYGTb8Uo{%wRexk1NAhp?JOcFJ8{z8_^Dd92UV9mLB%>`=ApqVhoU<;&`V^bBCVC?E#dCSbo#wXq9t z`U~)HLj*8(mul@Me6`A>;MY8$K(_ijR8*F_eD3O8AUAT*)4l9*iD^C{BnBcRWDkrV zfW+0V??Am-P3l__!7E~-Do}O#f&g8@$w62_#noTLvz`e4jlkC?&;$4r?wV<%`yfK! zC$*4g$CIK^`_eH8wLD@#H^1qmEXeN=MUXlV$4&of&ry7wtKkP^>9SyuKwve_1qS?= z1uz)I+mIUq*Q;>!pwn@yoT{8i5h|YVMh~DD`WPzr4v5LL=-;z~#1m9zmy~g3)@dST z7Uh^kWfsuIFHeKt1@fiv`>>n|zl(#FM76c@vg;lWW+H!uU`F&Yy0~boEn3W9oY8sk zvOI-|*VL=jmTBL=1}Jc?!t5K+!YGwcHTm^H|m>bM_4 zAYOhM0PdaggAhuJ*=hST;5Q*)3Zj){Vmf_saCCl*hysNYBIpL3&w8Wy+2OoM#;3@^ zeUbl%y*B}fvRePg&#>r-;DCaHOOA?4;(}`^nv4uO5G3xFmLd#_vP>}JmJ0}`IAVHl zw|&pHTeoXvmTls$xmzyTB9+!4n%JUN==ndNbIv;q2xj;8-TuG(!aL77=RM2wJm)#j z+0R*EIarY;zWiE|t_5soQtFbV0PQ_PX~I>(9G^?aD-9$bV@v%D5WduGIS3CGH_M<# zyNP}~*?ZG(q`f2k_OQ30-zdY<#xe$d#nme^s*0bbL054W2I6hwim#=USH-7SBy()| znTVgU__4%0za|=FP5&18ab0<=_VK@V_wm0i9zzFWy^yDhJ1=6UH+G!Iu*OtNDGnVj zxhus|;+SYDSvZy2!p$-uVcRVw@u6mCNGwSpZpdMMd9w4|)7b4ffiJAWt{r>91; zxip8HV~#mSCYAbbHenEHpE%={Ix(W3B(|EKx&=EA?Edl2Bj%DG-!CKm+lGf+?T=xp zkdw6zyr^+0Mp$_hN;SYwi+xA28}3b4irAUJ0Jc#3tlqs!rkq#adciU+c-| z{$PB}WlEBl@5jroXPrl=K*ni)Pw7%?BpRQ`{6=kOX+P@=7GH(zOLy|w521J z?GCb0$7Y|-A?-5VIkd~f_qM0$MDA`0Y0ocad^vC~hYV z2MkMb*NM|HBj!h}9EoR6o6n`YsGXcVG1r`gq&6~r zAVhkG0{zV; z5m336-nc~$KAoa+*aq3g^@OgyTOi&7ZJ~yp`^EZkrG@W~5_}3tawbnT<61$IWn$m? zC`@fgO>#4762k%vwN@+_8E&;vT0|$-JfU`-8eE%CIPLaMqnP~_yU52;+bEo}2q=)! zsL=?n=67;S&=F3YMTrW#QsOxEIFuER+h6vXx zX^3(y6^5p+h0-C`WtRqvYnC*mxTZlX-0Otf~6T`3to{~Eb6Nk%12!0>Z+1v(Wg8m%}^Vz!lgPPp+4w`8dpvOLIBQtECy&2Dyr*8As{4=1Mb;^mb)QGum^msnU!srmnHlEDqMS zNHdOSbq$tg9Np@Qnpbn+Zuq>KlX63)8E5Uf{G}P=WiB?)ec-O^r@8Kfc3rNyVqjaI z<+yaWeOOICH?hP7yq+VDblf6B+@>d&7p2QO=@LjTPe_+1-7yK7L811LnNae$Kzek@ zphj}ZlP+n}C4yXLNS9I4g)~XP-O^>KbcrUHvC^f7bcrRGMCsB-x>(31R=PCtAg|%| zzmbQMoF8FHUz-)WVJm{04BFxtFBeNsuw2@V(Iv;Xt8143CYA;_$te7q8!`%iy=<7X z$Kuo_I)jN_TO6Ab-qn^1CwU*X6jgDt?6U8cgr!^UJ1Y&AHf5Hg<9uu1GA!a-U3}Qy zwfLgFlUg9$1`C9hnR;*brqbwBe9_^=t!pZ9J@|`Ni5)>gaK`EtxL|Jb3(>s#HacpD^bPOS5 zD2$%~iHKqHoj!;|A_?Q;Hjke_Ud#q@zERsi)s@LfsWHIcr7QTifY$ahyND3Vu?a+s{dUT;L@m$0s*_QNJThv#z^%xougS34LC7!4HkDnQEB!4V zT)*+WT8?0~+A{L06}kC(rjzs4rFVOyI*Dm#TgBMI%%rq$sP$l8Bz9ewGkZ#+)4yD7 zt`2m)wpiZv(unV%sKSeW3trHhJhxgTmQ<9>GY2n3pjry>l8#@wf*j(Q!XFkgc3V;S zH;ivZa+UYXjn&_k$m+=R3=>>nEAJ;tDv1rXlvwn&XL3YypPSYfm~ijjiJh@8g_28Y zuC8S6<2ZX58qiWQcU^q(UTVY4eaEyRu(EMU7Im*zTte+M)}=FwZfbDdb9tU$frDDV zHROd{+QDKQGlyT{g7C4J!nJ$H`~BqHFHhZsN-i^X+J(8Af|vvLv61`igJSmCd%G5_ z6m#!Qxoh;wYo=aB8YQ8w=}yre_^lD@!poImu@`sf?RrX)QHtkGn=lw&N!^TJoh!qk z!Aa(0bvVs2zd8>X9@tzNXmakVY)UnMWh3XlN-yUDYP3+4 z=o?x(ZLtp@0`+c>9)eLRd$%DB*CpIE1Z^qUdfj1; zYOMZl1?HV01Fp|kVBWdnX>nzYoNO>Vv5v>NQmv0)fO%eOU{f0jaYpPE8xb)H%R_GM zDp%4>6!$wV#XVyiMOHg^cG^tc$vCk{FSfYKKJeOD3C&CGMbsi*ieE-r(ZwTDM~o${ zX;NvAQ*-OCXGn0Gw=*oGy~;!Ohl?Z0MiMbDKTs51vDZg!oAT-+&UQ$a@jQOrc}v8z%?x6seBY085@}j_G`zNkWr7}wu#hMGU1#`kytNx zVsf7~rD*p1K_rNj&CBh2J^8F3pXdV9iXGvW<>v4t!_xc2{KrK@$rcP|7XM_Q>uehD z+=e6X2E0evY7RGpSz)g3gk)hf?j^LR5H2r&$azHtR-QE#hm*@yld;PegvYu}|KOY$ z6H1NA*w&69oJnY=Ag_hV12{KR3MhuIBkxKjwoVWsu)s*qMwIuZ7aV~Y@awc0o3Orb zR_WEW%DJP{<{>PWFi0GNU90x)WFyd-Y+lSBNj3uEWb{k z!~uTyEf(`3XJ6df!_lU`g9ffr)G%vpI6RYs;q!mu&Lu?J~!lUi_I_yqnfEcEzi* z_7O!Ow&3*QYl}gwK1&~MNo!GOD&Cp2o#dn-Jt%tdW>;WYd1JjfC^|NJL3om*gQy_d zG*GmX^m?PGu#jlrlxtIQm7(}Sfr}{je>aNr5mT;JTw)x>t-Nq7v$q&OQ||fYlD$moGe19;7AdH%CLg;Q2kZP)(=VjRt)&Xk_lg zVaI+Lhj~04eHcsOHq<0_*XP;geuk8I=fNbR8h2%3pm2RSJX@AtH2kd$n|)npiaFmT zq$m2CV;!y*VZf*21ZvM_SOZ4A0Tt}c>jc{=gJB9#&C5`4B-(Uo^J0=3)cshZMX_{t zWnU+jLJ>>lR18I8$R+~g_(pLT!cn={s+Cy0CzKuOEK)3DS87@_Yyu>{CYAbrkSDJt z6q)T)Ce*sKnQK5Jj62%Bi74>VE{>o{(ay3nIX9azgd{kJ+5HG1oftJTV^HyMf^(1S zF^@apYVS1`T*slx)Y&h!98bU6oF(Q9M{BH8vdCK*V%@hgR5*1~)S?Gw z>K!fQF?JYlINX9{VG=&ZTyYF`#T3<^!N_vYV2oNKmq68t8hghVSM(4O{A}N3dfmsc zp_PU2u~0!RPV#GK9|xpb8a6b_a2_ESeLKU_JFy;h8x&`BFNcrwNM)R1L*tCiU+XDQ zM$>~CF{1+W{OPy(oJJYmqk=2L$=ovUCi)GX6G|?vE1MhM-g42bZx?9S8#X+k7vox# zgoW=&aF)d*75nW-*T=cN@@~Q=HoB+7H-jvrfQV^xIVH6t!`!qi!{jW>Fvplgf+mrm zDY!C{%q{ae({JdU_T>nr>b&9&>ZQn14CxL9HMOH#~sF@D`eZC!}M zrlYnqY$%I!3a*pIV&Rj>;&qh82ARdfi_Kx}>^;Eh zAmXfZA321!b4Q5Ze~otdpV5dr&`i} zv6S}MlOv`ZioPS2d6iTqpJ>6x0!z{0#@sQaXvpY9YJ)hsl0pi_k=Fi2zvvuc8-F4W zR{C%J8NherMRDH5ytZP828AtYOLe1%;!hw63q5rl3ix5pL@c`gCy-dqdaHua#3Ew#Ja z2!yW?vHsp%U>s0`amV^FmghC7HN+vVtBZsm*U?4pwZwN3>b+wECT0`rH(SyUSxN(D zWFsBV%Gcub*?iF)NSHSwV_;=>*LoGx%0&$>D}H97+QTLG5;t%+8n)xroO|_s7O8XM z7;)=1r~R}XkuO@%*Pl81mX2)VI&m+qM;7)lDt3L<@qwRF1L@N7HitX?%FTWK<(A@q z&gYz}fWX_FNvBan!vcB8vM?<6_Bepgxd2NU(&as~;*dbefsCyBI6$!k23mOM=rFnH zufDU}ViR!oh4XBD--{;F3;wR5^TovkdXsZo#cm>JV^d%kbgy=*Tezjv_tGpJa~5kT zeGJoKX*|){_Ob4MkXXd@)Y1GvNFKR&+1%BSw<_&U|nP z4#t|}72ms0;Ly}uYSUrIM?|GJk5hbFHV=C=E=un_Bt2BdOodn2lW@+eMG!@vhVGzG zNhO_dzBb`}TO{H6&U4P5@4B9K_Ox88Omdz{*nGtY`@1%~h9-HtoI5v{`Pm+eShz$~*Kg)C%3Bv6s z!-q+sVuM6yAw$|e&^k@4F7xHqi20b$s3wU(P^o$%$*B@8PxO@+wbBmATM(ihkhk(*RH#g$Hj>i z>`6FcXkbgG&T?_&4)oocjxIT7fEN~tgCQd=MZcBL#tn6@S>)mxJx{weK|5Hm=1fpm ze=!AcoQIrhAvzUbkj#~MR~~V-)jsTzAGV1PI8Nz3F%nC}PzCEdE{>@kSILu?`P9vWQNQZ(fC@#3Dy z<>J$j7GmDhv9PG~BjbfjOh}!5nY+~4T3Ah1cUPvIh_eL?WO^%P>``?Pu~6%rhnxtO zN3~_3?NJ%D)3@_@byn87cW{J~m?Xopu+%$63w}m@XCsNWT$MN}2)jk>&8b0W4~UKK z=4dZAiDY2UNWD!KcWbZb-Lkb8g`FUd&SHNBnpq{@^|jyxg0G?3hHJrHf7{D>%yxOd zg^*pdvjkVFn5h0=6lIFJuprWzKy7EVX8%@3GWIUYnwTV%s|I{psDRWEZEi^`^cU^_ zs=SEU=vqfWhwOhTT z1TIdC4-auP$Mz4yQk>yexpuE?*AJ*=U2&2m+Qo294~jy?vq^N zV98YBbaO?{Zt&=lScjMywXli`9X3y%viqBgs=XHMq2KVu+f6HaVhvt#gQMn!m2F0$xEfSRs0PA`gC^6_Mb~r_y<^IQUr|K`8qCeaqsVyONw+ z#91)TLj!$(yqhsc6Kd-{nkde3-t8Kt?HiJJ#QO%_>eitVkQt*%ToU}Q4`tI1b9fh0 zau*Gv{uF2a`pGSGk9o<0837ga#fADwl4$3A?AkSH4LlWFN&MW%mWuPNB5eb9>K&4 zM77@PS!_qXj6;?uP+L__=51LAnyPS0`mlNnocY8Yw;zZ+ zUY}yxsvQwm&#;Evw>zZtPV(u%b-9kNuGHKH$(^0UxuC7G9Zn1TL~T%=v&S_N*SF{? zfa^i`fMi2;s%pue>C2JJBXrISF5itP87^_Eb_%(9^*v0|bp9PVpl=^yaeiTmJZ_0O zX;`&cG}|6;itRespj(Z%v4y{>_niL-I~??yF{-{4EblOcu4N{LD2j2m2X)9Zg-4Iod27PLVM= zKcO&x6{ueD!*W6DhwZ}Ph&SO_Id0)yVzulM^5pl9HZOzQF392M?^Um7oga>3x3uAw zOD8SZMZr0Br?zBk3Av7Ct44MPuCMck2f1*cB2N&J|Kn{fa_na%m32uQ!%D)=yLO!? zW0{=Tfta9nASOEf_Y7NM)I)>0p?Z&dU%I+p$ZGifw^<~*;;M8%r|++K5WjTV zUUCX=k&S=)iO??OEDcC$D<=Iho*8SF%I-93kP_bk;sp3@7VSLnfX=t6zJNbEEcQl} z&th+6fX_7_&NO1~`&!kooJ|ZFQg^^rIGS^LjePzzahy%jyRtPHikdw|E?qp}`gSQY zo<8G9%O&cz=eb4YI-CzlE?AOf*x(Z_26Nr3QO)5~m40&WtoTZ_=+W&`?acws^UyCT zo3G%W=zXq7%S3mueeCjA#Z(PuIt!V&40;KsPTs{@hDxKW4>4BYr5fqvtw4H%Z`sYE z4iu22F49Wz(P{EAy#p%6mhDoxoDk>Wd8=Ml1g2P=qk<(@Vm^`AcJ{%J<;yz51{uH} zVA!xS997=ta(&ay^{l$JIOR5P;AwHkzw-=LjVZ2m%Y=JWZTG3JhwF8ZbrsZhHwt$h zwIH2(*XKF4(!jTkLVxsiC$8wP`7ZQki;Qaml1Lxw53Tl@k6^3kH`j) z(ZY$o_JbuY*@!_lXNW-@A{+dXYsr0e7*vZ#BBJx@*JL2_Z}ORI@(I}&U)woW&>zd} zw-zllGkZ6S^KS*Bjq6u4b+}~wwNr<<%2fDt`ni6n5K+c@k|;(@$E9COyZA6Ty}@i3 z1BY$h-`Rhj|0BNS{!UzS;3XWGWPr>C1KC0jb1wT^ogo0-jtX9zf zl7!(34pJ~l!5IoJP_S6R)e1hY;A;wQQSeIzs}&5qtkO~NRs}~ZI8DJk1q&2hrQpK~ zzNFxX3Vx*EQ3bzOu+c9P-lSl61;;8lRl%7G&Q@@_f=?>=s)Ab-+^=A{g5N91ewCoL zf_)TBQgE7r3lw}%!50*KU%{gaey!k73i|veVM_(OC^$eti-LD5I77j?3a(V}Q3e05 zV3~pk6)acq_nznhOtcKblO%MFlJM1R3F|&{cT4xZqwD|f`LyX>HX0BOl_bzcts%?j z@>^VPUi{oldrDqznl(S4v22#l(pWCbV^;d>$e0A-`J#)W5!5V;WQ@U_7NUdW*(VrO1QnoW%PikzWoCHOgY9>n=LCdE!Ccx zn`4}jns3ZbO}83T$=zt{BYihPJg9ymZ&9hP*WXu+RdTR6l zzrF!}J&dLrG#nIn@|c7qN`O$z$ji;9Br@}jsrmWV>}gr^jOmWN%$(`Q9ExhTRr<=z z$+TytW@XM7(ff^s|ID0ppk$?x#%Ye}WH-*sb>w;C+S8a|HXDY4ZOhEErW+%ArDf&aY|L=vqzRr1JX33s%E`CqInwMz zJpGH0=B%vb)J#b`=fEj7(5*p-z_$<|_+C%<~v;g_3stIWL7 zVr@LMA8-heWLN*k&`-&P_2!|3~Q=Q#sq)2T!+p% znYnfHt|r`o2E*ms)2|b*Kf>7@#DUqFd3Hx?R!t@$H-$&|>(^lXQ*v{xRBC$>vj`aN zAkiIv?}4@H&b3){M1JRzJ>5DxGtH`TQTkVWvd*fv9Mw+vEp zb`)q^Zf1_%jUJ+b`jgU4U9QZuyxjcU47+iBrl2-1GSbbLB&ihP&yRff?AenIw&mqc z&m$6ZQptlOXI4(`oSa)JT@@rAS=YhOFGYGAWK?*eztYqrf7+4V$HV?$9eXL+^&a+B zb?o=ov9GRUUsK2ampb;p*0D#h9Oe*p)XmbKhD(_do^2c4I< zk8h*K`X+u&{R5gA0)v{j2o7o4Dm1Kho3`z4YH#e&u~T^GE?pyT?iSg-N6%hSz5Dd- z*MGn*(E|s?3?6dp&{)&3ICK2)5tf9++me!RADJ?0^q8^Z#!r}d$DNZV-*xwtsj1V_ z(ybZOXJpQtm6e^7Yr7{e-|m<_XYRcD_byntXfaDm%V*=p4(}1I@PWDafTVbh{&BY_ z#Emq^vk_LUj-NnkHh0b#yAW=;kIT2_jhr@<%5*}F)SFaz`ks`UZ#Si()=0^<;lgd@ zF5P5wESX|Xoo*eLJ6DDrHzs~`-#$IfNlC2M)2N`}zJkI6$`J4S3hrA{5bWzqIkI%= zQWCVNsDhM&<;2~HuF)wI3W(p7DJdx!xG+W(EH9u?jIw3Mj2U`;5Ttw z3DDL2-RM(G0(3QhUN`txBLV;J-|x|nzhL_Fw0VBJVUiWywe2@bZw=jbU39g&g9U|4 zii(%sw`_UI3g^nwRrjx6^OwIq@V5sadiaq?AA9_XC!c!ynP;C{`}_+pzV!0nUwQQ( zul;k~>u&_?j~)N? z#Aly>@#V?#ufG1~)ah@(b5)$FJbUi@^Hmpq`0=NoFJ8L*%dfvxU%ATv?FzEt3h;(1 z$p2~j|EJUcFK?hU{QZ9g|1Fk5+1Z0IvLT;zdb%5v=`q4Ej~?NkoZKrty_dA4Br|48 zmj2DwH0sk^^R)1{=gzKWA4xrESjSjxcI|`7G2M}GXDrc?CE`n@J`7V=aO<=@hia<}zo|LGO6ejk#E-ZUC*ng~6n-A!LOckMFlNLF&CkK~8EB80%7 zP$J9-LBf;JC9DZ~qJc;uia;1WaU*XZIc{t?b5P@x+KK5|SrVU`cH~&* zknLH=pXi~AagmHn8BM1SL|^VS&(5Kdx}|yZ&|S+A2wd|$-)gsed}bIK$T6lnYPz@D z7x~b4BD!G@^qqRy4S%n}KaB{WZm~_a`i+i!pwYE+e%Ctunr@{IDn=2+I8|f>#Sf{1tOlK@!8wAk4XdQ8xKgypmD^rU8wf?(y>S|1-{;fSVPmE*L3309e4qd71 zoP`k?&_SW=OQu%1Y1G$O%t+0`kd+++0omE96dghsv#r$GmnETN=lqUF@zYsQK6;FK z%o{&_y7Z?V&V&!|Er0EWsawCoYO=IJlhI$wpFEz3oi~~KROmS6Pacz*ZOgK1VmUcI zGv7XW&VYVBZRyk4jXXMo4>R;@#0-6!+Jf5pv9{?3*0x_W);2G+s%3fb!RBRww%~zs z;cR4U#`?8k?CCu!Y*QU;O3CQ_yqI5~Mo~c_dKO|2U?J)LETmsk7LpfKhOij_-QJ$D z@95p4!k#5Fn$4PB7wpG^`vtM!(ScRX%KZ=emFaDbr#4Cn3iD%O+nTa4JHhlOEUcfN zg^dn5sNr;XC&uQ`dqRt+oj+?wIJ6@i+Kp|>+V%5e?M8={w>lV779?nG!VIIEx@kJp znX%94{XvBf3U0)L(}7D9;Ntezjl_3g*BXC1KOg2txcH53WUDXUTOvsBM%4Ik(!4Qi zo*v4Y_iM$P>w;NR>d$JtnMwX;N62ukx{w;L2NV5@mZPUW` z>`r*m+hwmz=XNqX=pC-?K`ne(i++t+i#`T-n8Q5~uqI3hnUi|fgwY`%KcW01o`(>P zA)|xJg`1t;^v2}Yh=ueCDhs;S&7Cie`%+(>-YHs~O}tqX-TTZd3VE%UJRVCtrue~U zkN>D35)+#-awd!YJt@2t_1(h2P z29(w0vHez}b0}l4d*U>$Cf?=r?IC*i?Uhj1N>A}MVXejzq&#WWr-e=Og4*(94aAFP zEclH;n@;e8WS)2wHr6fkWntlvq4gv~Z;}kH6EgJDV#aK~Ovy%Lw`?H&7lt#&={>LT z3u~`uf&HkjkXKW_5FTSVzgNyeZe#4gZ8dS}45TwC-`%4zy^Q#f5qKh|<=GuE=7KWjOGvK5n4*Q5Am^V*oR53u8umD9KeTlBt%=sB6x`s#=wY9IVOnYN`4{rA%e&15VgvnCyx5B@dzKU(6hmEBD<8S|aR*dXQqKC*Wt`%Epokg))gFMrl* zbnUdZX5oM;#)>qasdAw6&?{1ZlHR1W+mYq7M`l;{g3`a+4m&_2PcT+>T#!Q>X)C(sslb5qKfbk<6DC#w%PoKqauBOt!LJ(%!o zL4KRF7IDqq@T=07H#+E3=B4~ibeE?f$_pw}hnw2MdI$9HWDjKRss3(5JZ;std0w+B z|8l>B`Z6v4Xm>a&gXBk)!)9KrSs%Zspuk2fkjhOU)Y98e5}JlwMHvKgkc(Ghyj&`El!|zrM}boAmnZ_bflnq+C+mB#*Vq&s*?A);->Xx0np1wYAh<>H7vuV}`~*??38eC4 zAX#k2+WkeAAK`bJ^cw+L?blejEV<#=om^E=$gR;#S$k$iOXVWGMb7Gw*ILflb475hbQW zxuE(I^3x^{daXqn`JWorqbbQ_ANtmtzD2P%y6#N23>DqPpokxt`?(WqMGmrhpZ~0r zk?=q3WE36$%ht)X*Lf~WS>!Xu>Nz__y=*yS#b)S+=UJ`Vgy#<32&+BLk(X!9afj9W zPDstP56{gTLmkH~s|uG*K69*j)Fq6QGvjggysY@y6pnBfvB-{M67>^JtR*w$=VwmO zQE`sVtwDf&3*SICj{48;bu?>Poalcm2NPp2dXK_bLA_M`P5E}akpEd;6z>>&x`nX7 z_=Da{&Bcj95XxaMHK%7vPtOx+-s+u{o0_h8K{3RDYaZmunDST{LMG>?JF=|9sds;S zYBrI`&N8zaRIsWfN3*!B+NU?l;Sn6j6uYVFMdXY`@P~ZT{ZPxvzc3<;)OKrpM1sv)aHZLeq|+wKqXggP*;; z6Y|a0X^!dBt$8WL5@coO~#&Tdb#Zk?8D{^yW zd@{`b#Cf7PGhLK{)ah3CnaKCrrIxWH!d1#TW0~H`SV1yup4~b&cS2^mHEu>~9^2|Y znz$jzW(&YIDPIy5_AAoI$FcKlR%XX{*tE=G8A2b#*R01FW5-%7Du5?NIlblso8CZ( z3C!rLAvHGFjVb%8{&-0KUzR02#hNEb&PkI<6IzdgS7S5NW+^ImUaO}l`wK+*n3r$2 zW@GTvlrQKc6Z>3plk$mr)j|)51z55Wv8ScJlI5Io;|&ix6;TS)!#gQ1nIaIVQixuj zcEUVcmQ2{dSMp)2?LvN*D;))-OzZ)0-a|XxMUv~tpMj6V92ptbJSxd21lFUiQlM{^ z@~rSOu?-$rj&#^<4m)t~Tg%r3mWp)ZbJ9m@6|1RU~n6w9K{*^sQ^RMj9l|4$? zTWAR@d#JMRIx6j9%Ko&nw^sHU%HBqcPubflyI$FEQg+u7X>YIW1j^joC9kuDwpR)+A*;_PWoX?f;L4|F4e! zkB0w$^$}wYOqN@`-U?z38p;xmr@&SijMby;;;>@ufYB@1L_t6Gt*OVimMScuLB$)W z+)%EYs~7GalzV?=Hz|9ZvZtspqm}y@1t+NZ?@(!HDfet9%O(^W%5wUP2)pl~i! zaEba}q`nucc(4l$%io?<_Gc76YgKwLD)+Y)e*4w;W9oZoW62ARXXbllx&5=Cx8nQL ziVk){x>tSr`|H^M{U@-&M}9Xp`23fn_TTa}yjVhhZ+J5Qe-`gQ^Z9>W2I@Tj$3>#d zSMEpAdHIN@+gegEQR&)Q77&`VPsQI%skQOTK^v({}N+B zy%))lJ}0H#ysFx@adrIvx3wdh>aMT9|A)Wp*!6iawM7HrzmWW0{grC(eqJ-3rFJ@+z1FI|x`FC>ynctC`uuzSuCM<*|9SrN{Qvp+z4gdmbslf^ zXyLhf3jD5@%D?`2*L6_(*GtuNQ%_4cS;2`4j#V&4!6XGO3dSlJtzeXbMg;>E^ilBg zDG7g4uu8$R3c3_LrC_;&pDTD=!A}%CsNh}&cPUt=;5r4@D)@Mv_#aSkrGmu@&Q;K+ z;8X=u6tpO4RxnyYqk@47Hu0%lpJ?@4&pO$WqUyiTtId^z1g~&coA+8lVb^UnAnTQ*35QJEw7vNFF)aEmg3PS6m>*gGylhhPG|?^D<$g1;$qHNpGZ5I*Fmj9}Nc zGHe9FM0$TB_auTpEBDI;XSbuc&y$Q0e2d;{^79VCU)o7O)db(TNz!|kUo;^~e=M+J@`r+!fy2Karnp1ebLtzvRB0U=_V`-Mw~EZ=1jk1ZE@Ylauy;4oHD?&>M{syI$wLdlzeJJ_C--#(k3=f| z6I{`qv2=1@NieX7Lc+lCYaTi=shFhy1p{4cL;vbk8rM}Fa)jr8S75wbp#LgmvI7CDKp@J0TPF3 zg7cLCc0h^0c>%$~TX63crA6?uTcrQT34U^mObgIITABfeDf2;sK?6y?D&=~%x2TY> zCi6Q4Kcn|mGJj6+@*o*!HNlStOS&!-%p6K_BVB?U>GdIb*hcW;P$f$Qmzqc}$bC7% z{9)uyW;?+H)PYPQ^Fe~&$4PmpBDln?_(pL0aLOa{GlO9G2-3-CC0sv3$|qoCBFPB3 zcTW^&TClRS5@J6na0c9wEM-+clCdcxC2ms*9-)_!`8dI^QYbITe2QSyD0GA9Flo8L9aBD5i5T23PBMk~ z2~L|KX-_Bkw@i{*!r@_pK{KU$Fu_SPCC-xxrp%&p19>JGnkD4~Fe;nk|6aoB+0sAm z19&-G()B9AZORNdBu9qD9gexVQnqabhu%YF8SVrJnU?KTPnYQsT*Z3EwZ3{sFyL$#{GSj-$7l+$Rz| zx=QlrIKdN-knEHBbAn+{5xrz?OYjYPZDd|g@TO-87cv_OzD(~+WPX+4gKMeWllftS zEd^Zw-+QF@gC*F1>7&s*w*)C-Flqh zEALBrUPo}-2bAUo3Hxu7>BbV=vYGHC|Jw-uv{|MFIARO&4fQp_ecLDrq@~F7A^7AT zv@hlU3hawWxga6-HtemG@CRiE#Qp%70kM`J{sD(7GuHD@QD(q*OeJ? zpNbRkymAM`I&PQ&J18^YAY}%es?1o6T%^o^SVxOE0bf^UK(S`?f`nL)3IBitlo@L> z$1C&yl}DaQ;Vt@;)C?(T#>CuO0p)qvPf2zPthVhZ}HzsR8$Q8gSp$fcxFL zoCCsofS<1}@UNaTXTbt^IM4T1AK-g0(dV6H*OTQug(dr(Ik3A9?A^Op*hSY-Pe12* zb%yvpXF-+zECuE}lzq+t{bhvD$f%a~#qhuPKt{%aoyuMp*oA=C%fa!I2iA6cb+7P?m)y^q2J_1lT+CS${`;RByZ3VSfr2vO{{ZJ##%;P>Ek46P z@wejf%UpaG{6`cn`5FGjQIN;wXA!@^O@3zjI#@t zG!48u<#`GHKZO&KFllc`-ihRvTpzm|-z zUcH+A{qKKg>({RrGJf>vQFi+DX}6r)usnd;6t;D5H%3m}YrB_k$k@adZ#uszV^%I( zOj(q%iSxyqDyNVn%v${Y&r>##VeylvCvpB;#=_mF$Bi4eDI=-hD+H&^O1x(z=Wk8n zi%Pm~nlx?-Tg;!^^wv1Uw{aEXU(ETrOPAI$A;r}GThzWi4{Y3?GjH{>>%5wu#_Bal zK7mKEf=|~!Ev9ql&MY!Al0`*Du^~f-Fq6r|5)u*w??#Op#m0{x&+fS64tCdFcdsdOTY>D~>&oYhsV(#j^Jb z2eE$?B(O&dr?Iymwy_=e-^LC;H;YAl$XWL-ob}$p+0bpA_5X;o!TULzypOZEPdK~n z1ZSg8a+Xi;xUV^z^c`nu<(y4B%UNMzAuA~d+V*Ygf4sk{rB0&Ti3BA7dU&XinHz8x3k^5ce8!__OU~U4zW)@`GlP~ zae{sE#TV@S>ErCSYs;bzfOP7SK;PL83^#k?Su$Mu< zn%YGqH%+OqH$(fDH)lh5Z#IdKV)OVt>|wr!y~ST=pYTJPK4rlaz9ag36n+SWPonU5 zQ26N-el8DUD=7Tq6#g{|Uq;~%Q}|OJ;k!`ySPFk9g|}1qRTTbZ3crQIAENNbDg2id z{u>HkLE+C+_=_Ildv&3<4)u#|lc-%reVujGhClE!)oEL)5FQR<{CIE1zZk{%se2ed zvxf1i*BQU)5k8p0cck!96#iBUPyO5j6jv4X@Ay0lzkX7g+EQMJclb6Gz6XULO5sOS_%sSXo5C-r@Q+aV7byIC3crQIAE5A` zQ}{}c@Os685DMRh!grwXT_}8a3V$nwpGe{Fq3|my{0kI*6NNwF5x({_MLwQRadE>; z!%SvjPU;rXIlN=XE+gDuO~Vos63phrxS>N$<|#cQx_0dxK4L^CEe3M}eWw2eGMLR% zB5#I=5hIN1dt!22eBw}wK0eMgbeL&McX;UBxnl?QJs~;PlxT`G$5D9T)w6qKY4Qe0Yl%Ey#oW`;-BVro{G&rvz@N?>7w}E>LLe{vK!WHAFXyicd5r z6PJg#7eurhuEb;LAd{(&x4}1R=#=Cs$qDfa%VbTu65{#|i|gg1^SfPr0Iw3vCinL# z1A7HFX{6HySqMX*n4CD21gYk`>6ZRceVcgen;(Ods64yjl^Bw#l0gG)K)NJIGxa6TRBx{U$#xEaB zV9>y16Y(*@<1^wni_heKOW(Mdgxa5_{80R662ye~{)6g#_K2TYlVBQD=QB&J{Uq1< z%z4@3%Z7rX<^7G*Ken2?YYsTM~n8zBI^iu+vCN#x3cA# z@$BKeIJSOCJX`nZB6iCzYEzJ&vmE1W{MWM0Fqhzi4?f5qd+agx#1l`jXP$Y6tzElT zv=!cb^G(qneD~dVMO)!W*^BHkYHzHgw!*e;+t~j7`$gN})Ym83*I$3lPMtc%Dl045 z*|TTa4;Rjhw!zOo|IDsjxx&_5;_P*@ANtKh&-Us-72PdV(NVcvjRDkoRMFi}72OLg zh_7e8`G;&2-^K3XAG0<5bM`tvP4#z`M|i3bQ>aI8qsn%5cM3m%!pBnhL<&EN!rw#T zmr?j9DEu1~em8}$sptOFPWewe<^O6sMcWtBx^?RgfMH_eNbAtfy?XV+^&_o~ty_n- z?$E7$V6$d7k(`BfjOg6CYv*1;frgs{$lkg`r>lH*E zngs;h)V4$Ch+a+oB5qO+Mq@;`UV6QM1ckY|d9#4lp{=_0YO2@!HSzWJzu91D?bE1r zw{}hSesJg&*gmAOu5rg+c-l4bMf@#8y;_j1X(zuXO(Lm$b?Ds2yDfdCAnnLb=|{E= z?%FA`SFcE%P(i;N79jO-98=xa+4*5G#NAgpY$fw93Dg!5K!LyO^b9)92-3;Wy4 z@gWj>HdS~rURTfFz@u$JXyozwvU--Y{1-icWGSHb0ADQm4{6`NJ(!9&oZc=?nlvHJ zBDMly`w+Gqk){ya1~iWUS&z4h*Z&6ngRiI_A^ygvo_cBm)jRKzW5y({n$6}2#QR6_|MABkIkjchbn4WpKk;zYnKNg2Sy`Ez z&j$`1;Gcf_slb!+N8k=~d3ibi?6c2=9W-e#wRr?2nfvL&g$tKS?tY^c{^G{-o>OFYwo1 zEibh9UnwUj2auNuUvfU;IOlOki2tC0@?gLo&ifDzImbA^Sj~CHAg&yh!v8^}NOF7??2LL&+P+dh*t4Eu!h zTM5@eL_>d)8{2V-f9A)WhrfUAp6Ki0Pjv>@^graE>LZS~Zk}jz4!$BUAXktLjSiG? z$Qk4w&@-OT_)}CyLBkiEClC$sM8mps{6?M&^gh}U{=fY4 z3#WRf)(aZ6SEHl8JgJY4-+udzAKLf?e||wCfApTA{K4E$-Gk zv_RG&M<@5L=P%9~%%5`%;ZNq@DrmrSR|V&HC>l~ua-KvuSw8hB&!9n-=bq3>q*FVS zPU=83w0}qHR(cBS!@pz4j&AvHTi+^i~2yz3zP@gH5!0F={;WdP&$8Q-eCU1 zoFV*KqTvam0Z%IF&&fo?M8ae2*OCUUJc9;aD@=s-L71~26a~d5QEuaDQK|`_y{Glh`Dm3xe?v3GpCmNn78lJIB{PWLqKDCl) zaB)82v@FliNr|7;lxNVOm1oePm1pRri1$P^m+In=a)$ba+F9-wG-z*KI_fJU8ZCI< zUObS$v0xB?ZGH@Yc`nf~dkFuz>I^^jtE6EH(J<*dqQRp)C#v#n`dI3u=zX$&)^t)= zqM_4!_39;oKeg{y_V3@nBehYAfj{&jAY=wKpv|Mv0yosPTDuJ2P~W1>fal$UfqcWF zf&6u%;U7f9OGLx_kL2>7&R5)!vZ)|Cvnfxaweqam7+pWCAAjfzP5uWB8q@`Op}i=t zz#F&$ca0Y4e&~DjYoIq#SD|jh^Wl;&d~2I_~6O9y=&#@N8rBRBeog@F#sQb5cN{Nk0=9+7A+Dqc*@uBhyOuCbI?b?-3nKFex|NQeD^>TiGKDXQLeC5iOqFjIR#TP>F zpe?Bp)+o3@X-zrX)mZ@u*@m0?cb_}sa3Ih6?x`)#+~CfW$ww{I8n0NjBq@<@{_ zEk8gXWDoruwCj);C=V#pqC8VRc$Vjv>y+ocZ$E{0;A1x;JOc*~eBhBs9ueapNL!U< zUQkfL$B!S+J9X;BZ@&3vPHk&}3-CbM@O(jo_SU5ZFJwxK8@hGh6Vv$nOJk{imTe5w z&#x?u<8S|UI{$3X27dA9pFgJjzTxqQhaY~J7Z(@*xMs~7zGTUgpYOc$PM(#OCHPML zN+C<20p$X80yof6mlljcpdNUoI#U%mv7{^=ohz!&&yW4`Dc0HQpgjG#Q! zE$^taJ^LQ$KeInL{)Vyz`6pR=rm(Q^6O_}$#6-Se!2*#FpaJ*~8#atjoH$XqBM(4> z_JRhj-;2H&+SibK;0XvB0&SkMg*FxZlP>v7czF1L_3PK)k3Ph|fM4j>8MY(w6dW=$Px4b(l@CEfYHBJ^N=g#4wRY`Vfj@W+p2G~hQ4XMg z;EuK_>6gfBsX11Fwls zF4ApxQ60H}aNk01%b1+^xY79=(SAew2l}7N<0{xu-T;9M@*8EA=Zl$s= z>Nn^b$hRhkCs3@&G#7vpobe;zb@IKTw|&y*QBudeip?ad+eIDXX3`>?zy8 z4Rk?@?1k6E!7T`{4{409qy7+sJ|7d-w>*WdB z_h|pXj(It}kS)L+J9Y@Y3m%}nLf(Nt$^psa+CLF@fxqYYC+P|I_z!46-HG-K^dIB^ z^%3e$@ECng@E-Y~jqf5KV293!u7w_>K82XqAe#Sd+y(xS-RsGDL-Ovai|}0=w*a3( zBV?WA=qj}lT$ER+S6lzdxZ}a`nJxc|U!;L`4}Z#WSG<5KmrZl#RI|qX>d-lJ${8D4 zB_WyqWazD+PC@o3L0z5rJ<=^uu8USD>dwj##+=-o~4#X9{(*fFD0cRaA62Wf>;+c%2p{6wqOI*Qu+X43gs zhK*%sXmf`!4>?8LUtH#V_Sc+Sj>)`-e+xq(Y-a>u5 zd#FrbhCZV<=g*{XD@ZS$CB1Zl+UL(w+jb_kfw707H@zLHy>Wi}DLGGuu~5wO#i+5| zPk!Y5zy;2SZWHN$f1UK(kq&>3(!A_BpRTPn(ZunD`y=2Lf)CV4TU_5X@+X?*#)Q`~XsEeSh(UwI!1>a!C zGs#smUx+y#%y(i;8}mCDlgAv}@1>7E0QEt0sJ}2%>))fFi*(VB22Zp;586$h59Z76 z{7%mIVXka_ReeJjwVv~Jr#xbQ2=k1C2_C5}lkHKbQ2#ZR+PULB*I^+4(FO)CsDIvjBwLJuVLTXP z@>=?M?>-~vJu%-Vh78F~5K@;SCSjes|9B%&(m15iUax$+IAGia zyugF;b<8#WL(TVLo(bcjkVnihVQ!;H%`YuTlkbB|G6fDo9uL;ceb-ID?p$!)Ibh`f z=4C_0d>7`5Fs6yIaZMgEE{^#X%uR?nE|vbm^x-0{5gzh5WN+>KN1Lpqq$Kt6#~&Y$ zvWWgZ+UKAfxPS+Mho8$7^M;tO!no=yYHa%{HNSu|f%y^46&6^{ZXV$A)X|u`^^|{< zt@-ok=aBxNsm%|dUx22>GAw7fxHY+sYYt4@8w&wq2YMjq`o^7z=IJCJ<6^*_b$rKLZ9{P?ei z4jn4ST`@PEnVHE~tXLuXcfd*01)8oz{(v_>x=!%@&&=W*i%eoIfF_U6&Ku6(_?wMa zp8A~g2HHQj-g;}_*x1;4pkvXZMY+?aP1_k26~$-GnkB}8SFKtl#xAtJ4|om;{%dO+ z!H>FiG9JW9{tlCDUAO($qeqW%RPIGT5OqD~WiYoy?JPcN(j-B5Lu1W#^G2)3wY8NL zJ=Q&6e}g~qA8Awj;|%5!F>aiYkRZlifx|ub+#~o7eW1;eXfmLUA#3tL^+a`6R@QWq z<$P)*VPiM?{J+@0*#O6>H2G7YGZ7 zI*@a`z{^-u0dD7IxPA!PZTSc1usY`?V2^ZN7rFs^Rpq=Q+6#4!aziI?ZEY*AVn|C2>Wad_9nbwrQx^&tJ$)BSm> zaK6#k_3kbFgWlQge0R4UPjURg^H&b>-mcm+pWGgv>h+BG$7ko~=Rc;D{=s$B&z5Dq zv$(j}rFU%G{)MNJUS3`n_j#C;jIl97$lA)vifB)1!_dxrOn==OAM0uB>+6_jy~opN z@cy@laR_dV{`vvuAeX*z_CcNJ_`3YPNUA2|BP{wfFr36Qa!f&&z4U{_nSf94a9H#7 zmtFW+fenT%j5W!LIJRM%8zlFje)`r$fwzG7fc1bifpx(*?CaM= z8sHp3o)5I&#KeSH=Y|eLJv27V=B+|N@JV2I;CAo^aHp%Zmj z4a|l1fIjWa3x30vclLjTm+de2Bq1%>Nyvvi0#88N(97KRzup-idK&pgI;ab*6`@S9 z*_cm4T<~nz?v0I&uDEbB{q~59d*wvSEC1qUnEsZ368HO*ennMX;F@95g)9G9ZK64K+-@r3rOX0#u6 zKE9aeQSsTy=e21qp(gM*;Eot$sp<4~BY9FJC9*{7n1kk!=`(|7*o>KZvuKvgkQKHjt(cXu@>anr zTC-Nks#Y{^Gr9;$9ee@X`q#+unlQc#%G*1h(NM~t@61qgIRF-0!HbhDGslo=Biw!cB z4KXhZ@{+|^hUHm-71=B+F~XKuon;pC3%yXru{(DEU-uVKO9KQH000080KF`qLn-cA zf8QGb0O)K002}}S0B~t=FJE?LZe(wAFJx(RbZlv2FL!8VWo#~RdDT5@bK6Fe-}x)x z=v)9D2!3oXccof+Pqyhqdw!MVBzr4sVUQe>us{F>fTHQW{qNV^^9BYW6Rgrs_#iH3J74u#en|z)$DZGOptnw1*DsQTE zx@ih{T2_p$S>7P5OUArc=g%i^E+N%~OO_OGI zg#YDTv2~JWvX?ch>txAd{1PwHOtoAk^(srJ@)7>XpP%X?m%p=OxdcMX$3h`e7Ipf$ zOq!K^Q7Opvig1xnJJqIP>(WHwOUfTP+L1&#j&E620}J9f^j^RK0nN$h87q-3qVB9% zL+76E1GuzEm!bFfw0sFLLvK+7-GFu>bo;r9n_Y=7(+r3$U;r%>q_u={p4Uy1Wo(Xp z632CaYt|%KU)Fssoz~yqFh_KSl!NMdN7zC(y%@S60b#ot(fo z;25-_j;&t&`}O_W_wLguOoCmVJh>jd`yZ%GgxdMuw?@kmV9!4p!>}rh&Muz+2;c4L zO=FS73dT{z;9qi<|+Mb`e0b!crC-IO}{NY2iU1k3^f=+SX zMCU)ed3!N=es($W{uiHt7th{aPJn)dEIeMGzkT!DA$>^Cmp@LPoxS;?)9JMGKhzJ7 z?p^)kL-irQet=vC?iF=Zvy$e}LotJzA|^eJDj-=;=ZROGc!j|mcLl{(4l+c5s3>Mx zQrF&VFp;35f@1oK%^D#RbG87zo#ts1$3e}qg?NtzA0yC&X#KV;2E9Xf|NNKz9dx{S zt>7i|Ie`j2RFtT%LJw3q*l(C-^Adeph&&bPU3rW%~2g&9z2*k>>MwUCcL` z#C@^JGEP54=kyIsMPnGynXE9-XT|DG)`)>>5-3sX)Wcpz`Ykv=x%jA2&5EQ4)dBoK z*YYO480s2VvgP#v%4P>>2!;t?B`Np}=VaL@RaJlv-Q>wMW9U;N?KM}4*W5y=ak)_j z!HI|%^BvSmXMtv!X0jTK3rG~l2!K`KVYZlrr9^cOA0&*Zs!Q-ZxutkKZqp-Uc|c9Z z-c#?fg9x(EGMU|=e~Fz^gR4i^eO!-MMR5c5qz2JC=> zPWCC~j+#e~7Bxl3j@4f9Zt~9i?#X|QBL#wf(0r6;9}oy0t1+V+9N!?O`n$`8=Qx)~LN~vmdRKX0{4sDZa$!#JgXS79YY+5W|gMcSaDAl4*^91M#ItJWLij zxkDKILF7&98eR`#qw7eSq8@a)1`>eNLmF_k#9Jhl-GZ9@mkgr~w}}(B?Y^4Y_nERm z!n7q?^2r)uP6@)QwAj=h`s<+8@}_pHa*TdW+S!6*YU^W+AFa9r+RLrxCDnlf(WfHK z1I-IfLr!PA3cNEaaJsf?z)M|45C%fyV~mcE<^M3=!YLFe0Sql63l-wdeiURa*(F7Q&~nnF4?yu>!#sg&O)XE106Z~l|S~9+WWGw8Pim| zE~f~_mqi48$b$}I1ZTQ%GkCiIyv4YK>7uKkuqeM@<`K#6f&Y8DZM9%z%Dn$(JBl^> z!jYeoY{Nt}B26B7y)doVEZIPn`!)Jm2iQM7#-7C<;=P&KYsY?|at z5nAC84BKdz$8yv&0k1KRDqO-UK}Jt~fI}-`fuGc~ zH1#_(RN)hLChHcLqv8tMS27vPA8PqStYRTT1`A0=spYJ|s7mUIz&bpws@S3rCAx5^ zFlra^KgBkH|JxI=1lq`?b|B44#WD)Ax(M5i+t33{edCITKQ^+$n42>cDhG*brBAMi!hz*s=QF$l~9A2Z_60O^QpSNL;09-C=G z%r^>%r@B%rM_b1T2o3iFb8Ic`#1;w2ZLIQGe1+}WSxMxx&Yqq3d>1(_T!R}-8*7xB zYO@ccR%XqCP&>iq!b#-W>_nUF1386m1}<{K8=$y_#n^7ed(~~=*=S*feP&E;G=LXo z3mtz68R3o=3Bna;uz~qkdT`|G7#Y^g1{C%y1JNVzWeVC95Nb9H z(1@!P1HD?U6o9fg7FlpT8)=aT1R5#?J|PL>zasaq#-H^Jv~yGY4CsYf{%tY?s5XK`=G02$Id3qS}Gm56%@h?jcRi1#SlP zM;5TXTJ8w*zPLruD>jXnv(JrJZ$MIU2{U8JRKa6n_GC_(w*W~Gy){X+d*ZvjKagQ%dfZgC@v~1|SSkyB5Ktu^{=hYJU7P_pTr=ok#cQW6mCKn)j$LIC&J02UHhz7!=)|Iao#^pKbJ*Jol#M%l;&coyM^zFpU7wu?FZ!iXP$_4S7O5;lg8vQ?a!Z@lyG#uKQD`U(6IX z)WkPI+1{f=#ISh6I|~Vd$(|v(6Dq0|nps&Im7jqwxNmb;xssh6Dp)PKLb~qsjvaJw zzJPy1TfNm7e@*hgFI~O`Z7uecM}I$m7r&Uie0BDI^1_)!KUA);@Qu{boJ}{&!2hKx z8d^?)A>OB1Li5-siYH}PXMd41zx7?D-{c5%ib-s6vXe|W$$&c#9^7n`YFYPgGU9uq zWMWC2b7*ChBJUi65`^P@{0M(Qfq(o6>Q{@EtRJFZS+9x>a1xAj;>`d$?sf}>FTPEo zH~2E6t@E5W&9=~a*iFejoq0M-8kv~l$SE^}87i>wwLFG_POYk@K*{PUdH5tyA?2<} zOF{bt4bZG&Ws=W!vYKdREW*FXzGe_7OmX)WcRW(?L3n-*$pL5*dwGr*-!hrtHQ*RD zgozfT=T21g-d7vI44(-DkpX)sGF!rNfpHqy3UTxxR6`fZ0+<9mX5?9O`m8-yW#CO< z=+B_MH7t)t#-N!LxLaH-i9$=-M+V-vT3^K1J+LWT7yFtPaQ+#%ctAD>!+>-(Yq|5 zZf|w9E88D8w<~ov=OQp;D=Vqj;400VARY5SpXT3fYm+dj$-ruQ@6_emlYZed$w2^m zA9S0A7FOd?yJt1bmf!EwN+!>qJFKpqK~@V1cI@w7%j~ojiwf5^ZrVpR&LhxJO(`)1 zxqoq8EO_ywTtSWUx;~vQr~#MV{$0L2s3jk{&weGQAV7=&=O4@@2D=YBlIV#BFm=9?1uKL zGB#&(dsNdIG(_`^CluyI-o)HVO zSmQNdXBp<%TnWn~q?1@K!qYu*mTdAFaFl#4v5_9wW~Og>J8?|+m8fqxq~yP$fWX|b z8gb8|E;iMS3A-uA;;6>a7S*h@FBaz(F(l;|a>8Kdf~LTqv>e)#mxB;PSVC&$-eoNd z$WK~Ju@6L3<0R`qc6Af$p2RO_-TplwJy6sxg7)quvmBA1i3bxBJnc-g2I!vq4KfQT z#pTnz#giwqK}NhewU}+HiscP>aQt~*pexSv4y12ev)Z7Z!r#bFKNNY6PutGAn^}4j zs8~=_pDHb@dT}dcO8;-Ko?P=JeNzRR^)W^LXoY!|eti1&nNZ?koz}EBip23wd)u-2 z+(}i#=*{vYj*ka$%*AEva}M9p$(R@$Q?<0m$c$g=XJW-oY1rL zO^(rv*1#(o;V@c#>=HnJ9mB8)rYV;7@l1t3w0T6$2jgIGAZ>f7JcGVf1uS+JM1nt| z)u$5YddxQzg;0#OaSXii2FL0u*y^G<6NGfun)uj;lf@?nooxLkc^%E+lZ9o;C z$VVT;0K;d*Lm<oO;Ctjy8AiWMc7=ClMei6E_B%3zr&d+UVu1s zQ^_gDv0r067P+C5aWgHQowM}uur|hm5t%FDDk3%a?gZ8NH&)UTnI4A#%N$c(=D@i{ z-z&q8D0AN3`eEXSh}0?pj{gmYXd#9KA$SZ<&1}=)5)Iz0z|@J_`T*-gHy6y!CY?5h zXX&PLpPR_n0MJjw0J|rC#I&|61jo`Zk4K)^gTUl!iJOHGomR9mi8+dLhn+=u+m(^R zsTtEtO6IDH4F{KmaGwv%?3x4Q{nNr4t!0s(@B$VsBY6a?2NoFY#LL(+neBMaeH@bF zNaRu!sgk*=ncNPVLa2v;SX$|0erpLGlWnD-`#dNcz^Ugyjvn=#LgB;v35=!~9d^`P z6Ys7WNHMY;3{70Z+or~w)p`U7%U+9QX%1HQr~JD(3fINFYRkPAU>1WhtvqwPSo?-S znbt+dFh9E7r2FhJmK(l06svuv_YvA5UJ+e4!-sd6Hzdb&<>Qh_d|!5kiRbzLftmxp z)qP*xTt^gS*L`_3SE>21PsEzrZB$llkwRE|8`YZy{5l{|6a`3e8!fWVhNAr_dyND*q^?N)@fy8I6GCMZn|A*2GlBPg{G z{wq9?yG`>07x_9c_AdIhi!s^Jw$QacxcbLepXJv9_4S+b`LCC6-*^_o?#7@tdxsf@ z=O4uY2NSHQ)})f6RbJjkEaam;(Yo)S|LP|dsKsG0s5gf}5Xv?}ppp#0!{isqC}Xja z_inFk4M7kwxP3lDgFQeEc8`GnOb5Wl zK^(k3$P%cOA(#R9uP_7%cK?L!akn|h!JKHQ}PEk6YgAs~z!xZlN>~ZqxAgsr?lDp9nN6+Xi zJw1#?Q?VGfO7bP{zpeR-CslM~$g<%r6RwJCe?%{CSH9S>(LOO_)%5tKrD98Jy@C*G z9%sdjvK4h8_A)wG*kys)Q1(k=Ck?cRSd>(nx$uR}#3@+kf5J11It zhbj-s0}|G^j`{Dsi`Fc{4PZJgDTZXGiCp(3$$brC>w+U0OXg){x5)vr!~5b_KS$NN zsTh-49OLYCOx9tCNddYlqws+FtNtpTM6dAoN8OXZy`Q|nJMb>Q@@f;sQR5K6Z+=71 zA<4gk?&Yy=bhW&9cfv&prA(!C1l-+_4(f@eGCEXcUk1D19?$tgh$UF&Rp9pWAn#-N zh^jeH*k=%&I>1i$_ymA+mCPEkAF4m384TozBA8afo9+3iKy@{|fA|@%>B{>|s}NW2aA+k?O_=B;Z65*Zni1&?y^%P{0eV9|0U^6z z=E2pAn#84Ez7rEb*^I=POrhN8J zwX6Sh=X?F2jm8O@?UTQIUFUfw2-_EkgAY(1D>=;2a8P}U4r$r)%rdL)0O|Dd)Mzvrr8+5PkCnySA;_wT-aHD zxTLYa)7nn?jST~zYH1k*)&d8W2-=}r$GWBA>2TOX-;a)J(TI)IysGTj*T_vk{A~i? zd7*?NsZATH(?UvQqCx%y{A36Tjuh>`y;Fz6(p4pUa~N*RGpG;87dQ+nIe`;w{AW&K zAvpiqCjLknqK%U|cJ-Kp+;}7R+ZAatoSu^MW27qDdMjl=aKC7o%_>Y7^U>Um$Q*Q$ zaf8U@u%)JN?)A?0V8`g6*HO` z#oBdzySDO{H^pgzHf4*4jxrhLL^n}vcBzuXgMi-ivA5JII~0S>$9lW&TCUIG_XNV0 zT3UqFlxC3X$JI8Oz8;DHh5v`CzONllpHb8?V_xeA8~=EOP4|`dcNODJu;kxflq|h( z$o~X`q&H?CL;rvv3IGIz`hNg}dWHr@R`zy|&J22b7Pc17dV2pTA$i<@9FPf4 zaTW=z=MIvO=nj%9%e^bKT4@Af>5GrPXC|7r=mhIPysjys@R3$&g!^yo+)yh$r{E9i znWDlw=6n4G%4#3~5pxOKbg9#YShPWne=cS@xv8ltK7Xdv%g_$!uOU1o9>w|s`Oiw!MKYMo{;R?i5Cnw$zgEJ=!pZ1g z6?~KiY&RI;dM;?g!9sF=Ftz4}f^t<0LV#f{6iCVs5sfqFm@AP97q-3LP_8Lnl&(4> z%ii$iIh;>BxlgvuDU$hkPulixXI0 z{LGO0R8^s6mH5#uzGHN;JU)IE<*zT3LjqbYpK!x#lnqX*wRFKZF50p z>I5ZOBU7Pc(ZfB{g?S2CQm{aY8MAxYI!M&8*b@i6AhW3E9K-NZ%W${t2a~3J zdM{YU1m#%FsszTEVl#LA@QYp4EvBlArZh0t%M&;-tDEjt$1~Q@E3PZPWJypmk#;vR zJfAwKrWhy8sXf1&s4ze<5kD38AuXvm8?pOjz>vTG#v2jUaJLx&P?rizxSv1l?M#?8 z&2tgdtp?viz1L!k%~HDC4)VdBALKv+oETGgN9A{q(VsmP^*tQQcX_Y(bQ=2pvmsb3 z<|ifo!E$C}5D?1$+7M3WF3uMJ51;c|+2Kwk>^#wOqro9?JPt48W4P&_BE+tUMUz<# z#a-%x1>hvgS{ClXu^>)8ZhyU0nF*MNCN4wUhx4zJm34Jic5dtNl^x%4#LZM{o*X@A zoUP9seD~|g$;r#jL|OWkKU}$3C1SETJs+NByxH5#YzTYlq#XOSSlBhKXR4{F)i$x$ zO`=isv@L&}Jw>Gnbo*tr=4mCRSUv2|AQEo(e0`1~+HLoY5gKex7&E`E{`-^?OqbHC zarQ7}RYGV#L;eh9$x}^Fv(A?4@>*;v^M_vHgkYKh2yn9)N z%LY2zV$Z@RtFlTB1G9svUIDys+0<+Uu6_5oCDapI7?tED}#@7vodm!Iq+{%%|)Z3LItQr6HWvlm&L_U6DrW} zUjOYVx|iPfd!=dQJ{`Kr##gsdpzp1 zG}mQ$#eWccYWDeU&0NNI80RY-F>um#j{2#0^N1+~BhbCGp^}SUr%(R&Bk=ydNvETs z>vEJ{T?`s3zDN&~$fW*V*3Q$W&EwB{CkGs*+tGX&GL&{P?aSKvXdN=hzn6U}g!E(R z9?M_ie2Se^6&p;VdBy^3iZn{fDiSLk;YUh_DR~c_6dtYn*jab!7e*n-XAci+1oO=< zI=jpDP2CNY$4t1NS^+Rw)0>C+PfMf9URp^ROcAne6*!UDGLvfgLGS}KvwQ7qa%PtM zU>vEJ=Q34PVK#C6MHn48E`s{W$$?*Z!YUl!NcH#ZkPjip^BJ0%QD_Y!yK<+)crv#X zQ&FMzx1QgmmkKT$NH~=j0w8`sS;R0-8@-Jf=w{wE)+b9__KVV-tijZc=fD4=_jY)F z9G`D;$r?|L>nGNC7so_>jo?8*E-aBCB4=*_{-WK;2oiANgMZBAcv80@>IXZh?>YCD z%&t9p_iC=#=Y(RIrLlYtdFFPgU4O7?XK?hKRK<_*be0t1#i2MaRnT%=7O)xCq zjF=$Yde3OZ1JnpZG%N)l9}z<^>B%M@<;>**gKm_fNp0T3ZK}++6+TXXwLqL2EQM#eMx-R__WR4#=v9V6WHQ&1f1SPE#R%i@Z_w7{Zxoi6926Xak^v4`g&YkCw z5n9%id|VmU_*?`R2*0Zo3A2Euy_ipwJExR$;cAIyLGQr7#N48Z+;FUdwrn#}rl2r* za`0FHIO3-o5aX`x)jqe@;AT9M4;#fFgdA4|`R0KT^KhDwpFe(pLO?E-oGxFw;+o)t zYxz8K`3j}70&qPRJq7!W8a>X8I28mkVsy0tPtHu)dFyjEKUN}&->Hefl~6p{)j(M4 zE>LjTT4hN%n;7lSQTIiY(yOu{jt}c;@9#^w%KUBU%X5tU`O5BKe?(;`>CYL3q?s&h zbbvE%h{Dm2lMxkE;EszCwdW)8UZ5MsLUj{1{~PDc`L-2V(7$ATEBLEVzD(sD%{sZCFB%DaqR7{6WND^9Zsp_rOk=`b+ z2C;$GYhDf^P-g?4ifZ|uadC0w!_Yec*Nrf3?TevpK=Im26fiJ2*7{TKQDz$&LMxfJF}eV6^j3r!)i5bvX8BR<0)cXJKsoRAo>HglfvNg+^2MWXCH z6elHQ0fWAXV2?;;8nfdWoJgTQI)ZTJ8@B=~;;H~L-t9P}!O?eMbpNLys(U$i>~&+~ z$PR8ku8oKne74JKalBY7*Qbp80E>Mrkq=2L#G|G$LiPYHoH+Qfr>!jDQpg+VtzyS_ej~22VSRHB zq(Zbe616=sNCTMlG+vaQ7%HaiXjaw`$zZKuZB%yMhiyV2_PWVIqNz4+HU>@&5`hZ` z?OVVVZ6k-#l(1B}Ix$yX<_vN6+=5D>0wqHZl?HYs(eldR9)ydjkX4*Y!h_{Xc$g~~ z0c$)QSxaBPpW;0 zJQ&y&?XaN|qHdjH@Q|>LnYr^15Yqa>_D5Z5rNrNpej7=xLsIGAp)2H#N*&f((@2-NnjNsA;Bw=OvQp- zykZTSKZwhr#j>N}Jaz+udR+?tF2{K&jFoIYWUi@;8_lHt~kIxX?rxwZWkd;eiw=*RW!N6AY?5<%FxEwe!m(Q}ytuo@66*?QJ0V ze$NWdpU#JH)|9W5rfn-N5|!@BTY9U_WD>KQ1gEn+G|0yg)=( z68XBPh%1GTwPk{Uja!TbpWbiM##ScZ_xUUkHdSRHLBa6ajdUdKEIcbX#OumzsvLM; zu7G3e=}ZiL5Peeims+SNwop%45h)?N5s0-AvkVstLUD${;2Nq*E3IcPORa==Dj9#i|W+pGWe+ zo>?31obn2GqU5cEuI;(v^n1j1GCBD(lfOMb@b zz&9^LUL(iICh*}FzL|48Dy_$Xjxai?ECtlb%k4w(Ciu;*0}MAjjMS* za;VZMVUu{rfj2x-G z+K(L(#o~!PoJqAl)7$0%Mw**SE)n-~h1>^l#Tlsx-Bi%5HCO}1W1p#gdy@Tx8Vv5T zEp!O%XJizCu8>+LL#`eLbz1jc+MFQFUR;8Bt`K7?P{$M!>mrR!9t}vE1c{o!B~0Jt z3ZZR0B@jh(6a^JT7RMfRTD8uvD4ZmF?xL%hnf*1SlUd3OD#N>cF>|fdIk-Oc!LU>Yq|HN|F9S6yF5x*v!+;d z@JpMV9X}sQBc7Co0i5o7W@`f{Dk`x#K5TpvXzqdo|Cq&VJ$B1|DeVZT7=jrzJj^Z| zgPX`ipH}ZL^nu@bQ8D~mp7Csqhq#4b?O=tcfEmY&VH9oB%g5{Ru1>eN*6@joL?ubFL^V=&n1}b4*_FUQ=%293}{R$EuP1gX3cm0~;T9fglATgX}jf zJ7eW8{Ro1h8lfMv>6HtVg6g2C0K;`>KUwGTt*EkR>-PKgpTGuKC*TsNyspldd;aN^(Vv|@JBDM zA!Nht+rygJ{X5UPKukNnh`g8=dVLgJJmE0`ls~!xM9PVO&3ED@sRMA*SdHWL1-4ku zPj_A$90zOy^>l|FD8egC%$_(YT(`C9E4&4D&ZvZ%An;c2Egt%%yIO0ux;|5YrqaR4 z_b?Wq)6uF;o=&r@bmyxS!gQn$o{gqtfa1F0jK`RjHG$&Gm!&Wm7k=hlXduP!BgHCH zq~s;TGa&dYC;aRP0dk%ej_b)@NbA>AawuYTs*Y~6GfpT^dtH@0l6TD!oP;47Vp={* z^DP)TZ`9ek&x)t*8KW&AtMfA_a|d)q2@8^pC-f#tt_#9HpHIIjOueVYmh$(E;%5Xu zd6M&chz7f4n%=DTMJSER1(T4qcT~|iT6G_kL0(o~Sv%h!v;HfFKU`7G8FGFFd)&?d zP7xyjB37X$^2-(Er|6v}rqcSu8M%L8oS6~_qc$Z@$^zqra5=gwly6951brA!Dqs zr+;M96(060K}?Un9s=A$Ipy>?iSj=iCzVq{b|7S&`Qzzeih7^q8O@1cNt4>av&w!8 zgUFQp36F!?r9w3ko2=^ZJCGMu?)E@k-4fPkvDrdi&B4fxKkRi%7EJhnV@F!^sCA3_ zWf=lrg6L)VjahUc4g?nEG2Bqu4P>)w)uGN`>(CZuB)9L`9+=)aYiTD*>pQ_fp=uxViS6T*ZUBx0B8h z(hF6@{rva-;Doque|#(b=zio)`YwX93s2XJe2bib=QO$QCo&f7=<4o(fLz$tgi@kZ zmh7)&3LoK4zs3>}g{*KXg6=>i^OqyN^xS{2mIU3x&xJmPZ?RIg&aN)7z*5pbeyKj8 zrf>`!J62v~LA2B5DZl%`?P4<{jeRV%mn>#64N42^L29&ly^n1;|H0M!8e z1nse-6)z%rv6Ds)$Bd(J`}7>|we41kg-|7<-ow9Q>}86EBNSNYy9x(ez>+E6!MZ}b z0%sc$B1LHvTe(N+ND|f~#QEUyiR>J&{ z=nOfbqZ}})V~u?tUzIvrdI(lQs4+wP49QxDMN1b)3kp04on$WH!r5d*1OTkHjQOx^11r5M@F!j z^t|d-IE#o#6uYSEe6!eOU^s9}Q{LZ{-cp;4tl(W52-}(jz40ixu|6c9Cr`3Hu z;@xL}kbWd7!SkOW)tDdC?-b^0#dmL1w>xAp{Q`rNzuDZp%O$FG@|69TtD;OAWmOZ2 za&}w~E`@a-m2NyLKI`tKoyrpkw~?oZ5Ae%-ef%bIfC)BZZpAQU!EhPrwY>Y-iW2Dl znwlD^;<)+x_!#n<*6L`k{|ub?&5|U-mfq1JF{mBmw7GVa4U4Hn$8G#%bdTKBq0C1B z5rL`!Izl+6&qU^gNOzx`=KQjzW}&?{062Ku1fV)V=yRgut8wC>ypm3M<%MAiF&!Tw zmb~fC;2uDS;gGuhNop9ZY+Zry(dEr-p6ZJau!HKlK@sb|T!MX75YZIcREf*iBTML| z+NeJFzR_A*>^a{*=|?5doGLkqYMRRUG6A!g6>?j@kMh~@3$cP7C4|qQ#?bv>rc}!00CNux5cz@tX z!n?Z}(6RYl3tJ(B%-8|NM6(ww>981jWrEz&paGxTp^J8xEr^@5^SHZ2a0W~4Y#;SH zWWb(F2&`0l4YzM z^1x;!z0SKf7)JejsvnQ2D?&IoZ8tkN8cQ-ZpRBP716~X8)eaUaPbmnn84)yAA46+0 zvz6$H>-8b!wbaT)N8TEOk6k=4ueZ|cQS z2^GUZ@K5LtaaFbHR_cXxs?y0xi#{E)M)5;mnrJs4o{3Vw^t+r1o5+;B=lVG{&D|pk=|1ZFK$PiF_lXzRAWw3H4tVa;=r8yA-E+T$$uygDztQNnL}I3}g=8 z(}RX~&O@R(YECPPzpU4?;FR55x{h}Vyg|L?vawa@@j6QGceQP7(zY-XTP~_MNucRy z@Qg2T_KC*&Y?y9J4I!lDzj&pzC_lvzw|FN|lnfT;QIU-t2 zkwa?%)k3k;Bq*YW{}G7NXN_hd^VYd(%NB0oj!C*a8}i82+Ycx z6BeP*eTDt`lh6Zp68c}$2CdjLV$$ytK4LSj-YGAC&U6$5KB-BL(t_5z`OPN!oKHYW z;T}gwi;cTsUS~Mq6!4t;e0}ST1r$1O;%`k_3!izA9aWkH|G-F>`Qd>t(ib>WOMXyP z)s0JRYDM-k1EEQ^P8$Cb2kttPks>D~A%0_&kZ%$S$Vl>k-9EoX3494-PXy}r7vUuf z`JyZ^Vtjx#0OZD`$*_AWY8k?Wqy)cxWVasooGEm8*aQ zWSZ*QAJq1%-I>U*&-WyIh^~_UA_i5hAPs0Z7jciuJKgAwZ%`8;oOxtuOWsESU0AxB z6&axa<+gz%E_q$8RJ*gl*s%B8}2)c9)Qmd^u zRA1aX430Ns)rGzwY!)YEhmF)l-?z;kRp>KJFBEC}=?iV@whTmo_r9g7V6fcM;(LY! zdZ5GgMT(pga)BzD724%z`%>SVe3VXi^qTythJLe_ohWSx`wh(L#{SK73++2ULAru| zEMHEYzS7Y>{z{!p$f^&)tpJa9%Lx=H0?2uWF_M5UDjbl`+YeWCT8 zgjcAfkvuzdGD;JTZ~h9hyFfwc%>3DzkLs9al`ZqEv%a)#(^iPf1wre^S?mHLK|vQo zbZ_^LYiU~E;_x4G4tbnb3hNxc73EuatboU2MeF==<4h_xgYs60@tC_vUgNG7-;@Vq z>HFyfOxaTKv>d8ZH<|`h@xYa-kRA>^af?myfHWv%WBE7ar`rSjpz_4 z%TN4zeST<}$x<*>7S86}}78?Im?R|mo!%R&O~#U%xfb zZogI`5tnuY#;wp!J~s*9VV2g^pj)NHt2=;)zE!X-Y;*7{_}UwF5!LITMwW>AhMpEfHRJ;V z{-QES{q-Q>uj{mkj_LR)sTNM-V#;%b*BC`MxXqTET_8sOH{yT7NIMLWn&*FXnhOR5 zg!aF~NDn6?J6lr=GkPOavn!RU*sPyO-E(Tu$ySENn@*F|zYr4Gxim0v@&lIlEm--i zqv=jI{_rjn5m>DnB}W~dU7u&tV7{uO9FWuD7rS#+ApWIYLu;DEjx%-%L@<;`2td>n zn8#)ILLi}xhax?C<~Nu$WyaSGgdZ0ou?U#?ca^v6`} zk7Qf}_6i6KaweL6>2JD%-6Ykt@?aA8JyDj$Ox3=Z|E~gw-7GM-b5I8D?!-@Ni7xIQ z)TwI+LQ61+dIRYqwg*Mgrdg30DTYZCXV0do z2@_$@D5ceB3;)KHs+)&*2UU6>hdwTYu5JAvaI-PD5fbS&&MZt0gW0u>Y8f*FWHSqp zoYCwiw=geA!cj;;2d#R>oQ9qv#4^e-J6|q7ZtMeL^S0%SC)c8I*nvoyfJZQ*#My%> zW=eZHxf6}vju3sPK3>| zDPFy6#&23zu)Jx0hl8-9^6DM5A?u-E#_QrAdZcREyp&%twU`vtzt`5tQWzx4P*{iM zC^Fn6Vxq2@Hl|M>1efh4dJQd4T`;-{pdTNYxQ`%*qoT~#ymR4 z%^YT)fIbg+lNN&OIpWgI^k$Ot_V}ly-*IJy+s{&ZZuxxd{H!%?0e_wFP&}q?+L+gB z!4@|%B8?_!&iYC0wE6D8b6-w3XfbFq^v~>j-VgsWM{fHv7ExauO#|#FTzKzJ|11O( zR`s0-mBc56H%16`mg8tz)qd>2t%0wH&+~rZ4}X%<>@qsd;4|_(WJ;>-h>$>)QZS%8 zNNK{@2Tm_AikQSY#VpOE-8eko2?f5`K(3y4er6gn*nxN#@NB}vQ=NvvC-g6`r_>~S z+OuDqy}xPx;wp-0!q)v7akFZfARgmR8l$Xt$+a8{9_g&;2TQUwb0qOH*$8a zPKT<;`>yO@aoFbN^K1FIr+q#!CogPjZMhV6V#bd=G114c06U?69tdb^QOlxn1s@eIn;I^?x@RL?(b$IRG%w^pUl2I=?UX6(m`cFRmlL!i75$_8_9gKq{X)~MV1Asr98K?=)F)~ zPPj~!_&T;Ev2PLYl#s$zj{BqQ#DN<~U4tt>bPAIfBoSRZC>`r17HGo^?bsl-KllP_ zH?E7|-%_QE3Js1k#o&uNoo@>RweLu(zsC8`Cl;|dA~_Y%e0z>i0P^FP@@MF@E%ZK8 zDMfeXr!1VNTpNNA6Eb-9*aBg`Da!M#?5LLjezyP?WV_)*3Iha%k2;T;n}}o5uRMua zEfbR7oN7k}k+yp7^A{4J$s!SkmHGgzUSI&f0}lC7w9(6s2mxUJyVtio7oGqb_>>9_ zDRP2Ifc{6}c4q|$VssT$%2lXMBn*y{n~uZF32i3>kBG+e*6zj3#l`6hDeFWavgR0q zm+W=Y_h#nzezm`b81%5?z$!V~MvFv@D%m=iR^Q@pKHpwy+A;#WDVPpguDzo~G|i?G zN0S}YzAJ6On!?@mOUsoI3Esa=6N4=pAT6M%K3_W}-hTDBhFtm43n>>JfgK#gdXx19LOE6r0~heqt1wp?+6grLLE~+8pb{4# zcrFsm1-TvW?>P`1i?Q}7ZIn|yYV_B}KEv#2(vQo$R-gq4Moaf^$@kE2X&>%gyP7ML zRm{tP=!y*HL`G|IsiOvc1EMhd?^5FFXXyO9tmzUnfa#*CEi7-FupV2z@6?FQ4UQeQ z=BEj26Zo7U%t(m-f*!yGav4~e33jNYDPdy;{c?=|y;`9b{!ClS85X**Va}%jDlLcK^sd+q4K>?7IcBF!4A#C5MsnrB|W| ziy$MlPzNFa>#gvCkR4kkx6>j|y`y`_^UKX;1B4LU6W$jmur#zNIL3xc*a+o_?G{ow zo9PytwGTwwyqax8gvfGvG+Jccm53E3_cwTaOkrKdnjT&1M`!6j+xc;`No{ zQX=xBVDX-SRgmf(@ked5IgU4q>CBg7B{|No&`g!4#i&1t=oDSFUj7-XD+L{t3Q2vPA;GFqj~DC)GNC6M&TA<@WK z_C|HtSmd}{2dX>G&C3)P;tE_hqK0Z)uH1)ch$wB!4`{Lrww0T-Thvi z+cXfDhQ1Z`6dcMu_cTCG@m3r8zGdatnT?o3`6u{OOxJlx^Gi z0b{Bk1=fRTC-1sL_~Ge%?=)BVT4^*z<0gOI3*AY1mPu7jI{l!-J2Uiw07Sxpb^q&( z!JG56`UfNaxXeN$$Hq>3(P~+2C!{r|7FQPEd|sPqD4$#8;sU8AS&T>IFr`80njCh` zYsr%=vMV^LD1SOqhxye2p&q5!c#u;x3RJLGTCfYor~;SFS6?=s4W$(9r{>^pCYF8t z9@F^GZAq%)fnmU3IN@~i^&0a(=jtZZT9KeWW{mp6srR_RT$`T9HRwJtQp9PZS+n0s zVDK_%^UJ6v{GqEN-O))%@Ve=kk61Jy#i4f5x)S=Z=!~wcy|9`eDR= zHSqksfqlA(n)j2V&qbUaY5Hd{ikJ(J7NSH4vDnuhlS9qZrfX;yjKjWo)e7QMCd0V~t+5FCRsq z_2`EJosdIlw~KzxcZ(4N=FlC|m6F4K-$M8N5yzW{F;heQr0;&Jyr zT6M4Mstmb2e_^%xq5S0=FwAImKE1oCAi%-tOCC>==S2j^zd142L>)~hLEvZeO-%V;T9oy?fPy_q0MH9B_EoEl%>6_t!hitcs>Eu5M?J;1vc z;v~mjNWokX&0K~`VFc9t%5mTvtLB_v_l_zwBwFYQUCKe-SVjzlJlV3>cuYYCz=pqi z{gGJ)qbxI9G7l!wh_+!|ZQd*tqLd%a>dlpvPJ8U-Ww&$n#W}j=*{0{S#lxSvvvj{j zryv$YbXPSCeCG2qP)F-uTE|Nz9_cLEz%38&LC4WNA8$__4cIk6*rcz~OC~I>ZrNdf zv!VXHDI`{YqGT%(&Qd=~pIhGBJC=3^vF~J|G`0lPqK@iBZmJDm?L)$g|B%4s3Cs!Q z#$x9&K83mKOUqBwh^6B0GCwroFY(%>H|r(9S!JXz#t=hTGksu`q*5fQNaHR_vEQLd z7YvAM@w&B`w;0=>&4`2l@fpa=*YB)T#uctJt81gjDefo|i`&${09>&W(u+(!iCdNX zSbhHkXpvUOp;9?if%jvwuelj=e97f1yo!766bya{bkrLTGLv34ms!%`+_3ygvuR6n z{QdxlVM7O;plGj@(!xvGbgqmh(yLUDEZu*xT`$(poW-}=L=jmPk6Gw`S{&T4Dia7` za{Qh>Mpr9egmlOXYJ5D&GnV+^9Zp7c74s?7-`r4zv{4}4r0txEGnyeV$O`C**GVl@ zJz~1pZ ztf%otHu(i*lUb4McV%LEArE$B3DFBX@sl<>lpzK4x;pXRYV2L)xj&#>j4lZx)m0vN zHSKybjH^iH1|0&rQuV7lN+B40+>Q}r;1Z_nju)Dt=CT%MW_sVd5NazaPE3A8X|JJd z+V0396z%f&Z|%1ox$+rzT|R6b@?)<;5JLNN_)u9!MsPmSx=6oa3pjix<5Lb676-ty z{Rd*lj&vo1;2eu~jsJ20FD!NnFFy{U?;tgC3Al?k@x&mu3%Q{*3S;Thts_#;0nOwQ z5s0Pf#H(qyn4jXjQAcVe)@^t(XQ4IS)i3QrgczmWu6Fu|M5@GxMw>;?g1Fh-NP^2E zf(c_XSwgInAsPg{x)ps2E~2k*t_!B`3M?YlUl@zM6!VM_d13}v!eN3hLbcbpIZY0y@;E`d%np9@or+<-yf-kdtOSYr z*)l^(VjnkYhK)*E(0s$}o)JgOf_1gBvEg^{eC^vt>N|@*_riMI`Ys9azFX#bTO-qq zH|~(x?gN*$rde_cy}1<_UVm`tQO(OSbp3i}zkUy+%*_z?vbLa2@vNJ)0Hy8l@}}Bt z+iaqUtG$lVwVJrQLF)0fR!^<;TAx4Z^&X)5YZc;~hlmA{H>YF*=WjQ1VgqtvHb<|X zr`s9O|Nitq^G*t6!>X+>YQyT*QJL4;nKd*8Z)phGLc`HpYQ&(8dBpp!-mUu6b{?+H zKjlvzTR=BffOubw#82zrJIW&SXi!mQY> zPa=|3+K9LG#;!-x(7nyDOHMhT>MWkXPGRlmw#3$ao}fNz4Z}rBx2^ zD=5r7FsD$WP|b^@loe0r98;^9+digfQqqfc`svF})1`kCP_!Xivz3|Fc!cmEC#tBL z*Yr^$!h3Lc+X;0b_MR`xmfA?S%IW^Ej-7)QxBuXtuE z*VRV~F51a()?HcVNitx~=)2qniT#I? z3gL~k9Aa#X_m%%03N@`-(-4vjov7k~AFzQAN(X;{99y)Dyu{hBEQ~~e)w#@R*$J=N zqZ||pOH-xZ^;!&FlytLhCViUogD5klA-6i(1}cv>w~TilMs<+Bqz}Oo&Fq_{ljzKw@bZc5jem`j^#giTzsrSB z@J*-}a@QI>K;z^$H*lWe<-$P6T%S2yb+viDz@jlq zvC^6^xjvka{yeK zl50$@cOsb>B?J{A4?xJ@tX^A+9!2yA=fxNIIY_PhDS|tEjTDN@YD!R zb5~%+m`u%4gqQ(De2D9NIL8Qjw$6)bnZFp{P)bV2QQwmg8=zZYgK$Hg@1(AAd->sy zW$=Az)Up_i`{fxC(j|ia%+cw@o)MG_!}5Rhw_pwmZII#_uB2B6VVg4$lT{mDS5Te| zjO|hl)P=oEj(PD*b*?&R8tB5PjU3=NGzj%bC9Y?~NLN~+eq~8~L59jrPpRM1{+DOK z8;uV(??%Hw-$D->`JWeUIu{8fUP3 zc`J{oT$5}Hw4Y*KP(&#W>dJg#pmWO82j$3H;gax@q|;li!_z9de` zD3Xj#m0E2I=$3vmRiabpk9UDND3=53k;Zk;cs&7VxCVh{EcBR@u!u#2-5YXo@Jf3U zX+l;*MR#q{dJrP>VU#rI>o@`!>L{Hs4F#fWBItkn6jrRU^3XlY!Z&N?qXv#tmbRT+<)7=LhK z_-MiUuO*NOsHtp8z8Y=;DoTR4{!jT%AO;Szy?;feTpR-6)F9CSuMf*?)32*=S9is5 zc2WjkvP$VpM?Pt;my3>K&D}`QDn?2AYgtl!FThhhW{>TCfaZKKiqiQirT3-CmTA<5 z&+d7~`)w^(;Q2iQ-p+9fub~YbWz{+$NPgwYwfu!;?N>o>$C8k+r7syS!%O+=pV38b zlNH^|ckZkNr;FZ-c2?J88Vz&gGPfpoXC%{*r6CHh>1F;Lzt3M|0&ly?IKtI1B{H@` zhv1H=Xiip;Q`U0*n>JlNgQSB4KEuFWgT;aVS*=36CA`%1Aj7`d$?QY$V}}ZH3S&^8 zgb2g(t*rtK(VPDY&Sq zwXD0Zzw=m!r2nK2GT@%#m5jM>P5E%vr(VkxL%+8i>C)-4#nL&&J9t*o2gSPjt9ix ztFmyVDdq~6gK}O_Ht$wCjBG z)QeVDPakXAR>L_AaICT~(I`ZfeH0XpRbQoh9o|_QH0GNAN{i+^MxibmIZ1LBx9qZ~ z=|RK(Zu3^G1T#`r#UL*vh$PKKiR|KPY1V{ew8o3=?w*J?2P!6I= zYY3d-p6SmDOI+U8Kn&Vy$*xi`_`Buzt)8O0vWc&OyRM?XUV&G8Zmuo9 zw>$sh_T3Ob`8cSBhEc89+77m<)V@Xb@Cbf9v5Av}5d%{kk&qOMII)<<<)S@$67nUp zl8b~Tp~O!^Xr8~7%vK&nbCy%HI-Dzmq?vk^_v@+OiZ?b`I)DCsl++=}JN3O>3C8K; zQ_Qa@IQDY-wK+3eLimHpDg<*N7c}JAz72pPK80SRf@yRX5y$7%sg8=r^;T#ELWH7~ zSN*P|fOf%P)|pXG0Y}U;u*=}EMjE&m4^dHZXTJfusPg3SIUIle(Mf9Ogu=L`h(ou^ zuLaQzGg7NM(IJ);A$SJ)}ixKYJ!&-!Y`Y+By)1LT<`k3bGj1<_OFCBX@lKWGq7WF$W&v8p6w<)h=$gxO@3A=QiD#R|!EVdTwt%cmFYgo8={j=s~bX znFWVOd~>vq_}FPBB=U^i*rf8fsBI0hYw+A@u$6gU7B;DsM^?b&(Y@=nPLC4C4ykHl zQEL_*Wr$=<`qJFei7r8n3TF58uuWac){~DBa_#{MTsZ~=X>Y)Z4DrMvpu}m@0h^Yh z3Q?8&0-AAQYq}~iZWH4dGucmv#YKQ5{uE2n+?6UlTrzF{{EL1TDVivJ^#1{cKzhFf z76$^EQSG3XxufE4)sC3<(cMvWF^ozE(jxUSvuy1_Q@%=wyNnl?~7;dD+QwYQogiyt`U|$iz`7;ME{# z*3(tatEejl{m?RYft1mdM?l3}Uy{eeMO42AJRtq*VdwxApnWA=)0=-J+Fw6TP4tej zy6ysy#}n(LG=7&3>Fv`!w^w+xu^v?2eyU3wUoo*p7aEY3cy?jHh5I=Xe`|65iNNUy)#{V)Tp< z1aid-dmU(O-+L;y86EE@1PlvJy+1FW3JOAq9yK#Csm|VG_QXia?8jhNfu2R9$xJ#_ zS5?W2snhzDk{at+#qqYQ;q0`}z-lbd9jg^@bZP8{)p1YdgUln`>dZ@6aWAK2mrk- zpF^QTI9p>`007fz0RSif003}la4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mbYXI4 zX>4UKaCzOmeS6zBvN-y`KLuAlIhGPxYdJ4Xee2%iBu?t5j-AJLHtD9hDkae}H!`V1 zQgPhf{qA?(0OF05oV4fO^V4o)i3A1%U@({&3}!aBzx}hZ8C7v{na-2J;&x;6kAe6+ zU)&by?5c{o&wJ7C&dzRh92aHuYFSosGEU~v4|DkaUo-W4Fin1hdI$4)MD@z3NXn%6 zoJhfYao~PwiKbof4!gyK1!xA4(k__r$ z=l+@(QJKu=3?s$P@F*DA_IVhvxdo1U70Do$+{>G*{2FTjjJkt3E0@b60|a2)sN59( zD|3JbIQ%1-RQ!~hy3FVE{04eWcx2NQdt2_&Twg$ec$|MusFzGeQI=QG3&sm)j4@-1 zkay)(4CE7y5icH9Km?`&pGse`^UE>NTvnwpQH#8wc5w(0E!7*Qxr?6;qw~|37w-YkilM8`+3k1hc6#c4#%3cRDk zbASObqt}OL&wqj^2hWazgb_~7VuKYDTS`ry?e*F6PjfC?66qyfge zpAPvcG=BgX96Y}`Iz6E-K0iIVID_AP7=^Qo8p6Ay^F!$G!P(I{pbs!!o}EHVIP6dj z2lfQ(o*XhLoDzHLpa}kcdyZdmJPCsrhX=<1?;NX}#c}R03n1{(=yF*ti)1v4(rcuY zXi=nD1y3_tyBiywPUkF%rx6uL%DgGkDnTL#jtV4RT*p-u7n7^>b5ahl_{PR)^cj{C zR0pv8QRhF-lFupr{1131ZzBA_yPd)JgPji4h?l?@3aEfjH6Q(TxwDfzLSEYScxex- zO@V`9C93uxFW}c6u;SrxduMlh_i;4*Ztv0V-p(+3umcP_>b@+}egw~7CSxkri~a+l zOg@+Cl)xaAqv@WpT|`fxK7RVd0{WPN{yn;ej&H-Dz-pQ&*W+a|6L>`etG(pz(|+(d zk51C$I=M}XK7N}!{p&|(DRT8`bdlcxAIqi#7_3cmzd51_D$R#7XXS0FzUKNHG+L?e zNl|3E`cb9VNnNN|PINJ3Me2KzY;07;?cN5Ctvs6*3t+%E(~acIBw18~(P2^K1($;Y z&|@e8|DNO-fPfvT9F(`$^ECSu!L+|ivuS=)BAEf70xEhk*olfbErD^JJA?cAN61#0**OOxNTse%p51cN0S1W zI-mm_H@eE_Q`!X>(0TH_NPx!9Z?DHW>^R4O+M6Q%43siUuuuGrO8b~U0Mt!X`aLy} zC-HS+4C4YeXB;|Ob3%z~4({Vxna_!|K6EbP;w8KUE{$K0vdbL5rsYU#$qRzr`M9wG z-2`G8sO6bLg%3L)qaUJ&)I!$>MUhVu*vUZz8qf2|r*h-$@cHT43#nd%x(}Sj zt6e0MyqK07uTI{MVDCA4PRJr(DWb^0c@sF&ES*HNY)NB-5)z0Xut^@hcPsw-Wd}YT zv)Upr(=TSljpM_UR~J8xP7YopmcyMLuZ!35m-KphZ6F(y0GRVcc572{C z{P^T&U3wUVPOPsBOCp^nYBl#Z&VPBW>+J^XmBM5Qz{c~R&UE>Q!Sb3gqjHf)*bW&^G&rY$qVU zBdqFn0dhoj1ro9XUoICU#qDjJzkTxtbb!MbBb={ulxu|Z^rHj)P1s9+!yl(eSO_R2 zyi)s-T86>mYPIzv;U)b@I76_wyVClRyO3I|@zUvS1ja&%UKPnwXo>))Z!*;Z@@&-c z+J?q&yzbx{NT5CsYqwH+hE1dcB5U3HoyQ`G0PIGk=uy!07g>LdP7Wejfg3~|i69rn zO3EGZk~um&enHrD7IAfjk{$9Y^}S4gCu#2*#ruvsI-O-Y#kVv5vqZ*7zv;^w_~CHH zmzTiqVZz3@(bcrT{iaMR#tuiNMiCx&!)UrKn@yt`BiL}ZydHzZ+9xYV4zpG8-VSS& z-W!C(f=ek#y?y=c@T^AbpEN3+n1*OCx}4{6#Us_31fE?7p5Zv|0jBEr%=t~zKo2(l z{f!*y8EBAb3M2atlIV3lO}OLz=yN<@CNyOEq>AT*Z)xg$boBC=_QjoixQkL@&5CUy z1WUsDs6G=D1x1g^jUy{j^tRNTXuXKgoK!sO+g}+_AmkL9t zf-?F79&gVM4_;_IBD+*f3oXCNV2{3d`|j-M;!q)Am1KjAQS|Wr;d9-zRg@7-{#qtz zu`%krsu6)%2qH2o^5p_b)`;xvHXx#k)`-A7tUyHSoEnJiJPMBpG5{!PAhNR?Mnn}g z5ZM{7K!odj+tN+56m75R?_yH_dRU;a=j8x-C9d^uC##ToPJnZ=9)5W8{FKbB`@oy3 z%k8HfLrFJYqSil4Dl+ZgmKB;xCOKNv;~i0h_v9&Ld?u{3hXPW13t7AJ4kL z@L8|xM+)0MnzHhul-_qbo#%N5TPN%j!urvs6qBaDU7__ni+RVY&@xUI`hlv-W*Quv z0l`nYUNcmrNUCL#MdgP*M(1PnAnJ<7xs51x%U%x@_mj8Bj66t>i2OQ8w;{@1;cnST zF9_+&G@EuwM`b*LRu<7;_M`3Lp5Fecdmr`|AFZAYrb$D81^=|$fGuvsyazFMi`(i7 zPbcVwjU*j%pxA&r^i7V|g)$w36sB4&QP^^z_JN-&Yg-C5&;vnnp5F{q2TL?pK_4eq zMVDA%ukNe1_^A)tqhKfQ%6xR^&xv< zbdtFF9ixoGJ>rfp0Thg%LLa(pHIeOd|4_fXt@CJ0;K!& z{{1e)*dF$J+rxnt?WIx)A_caqFq@I|NaAKDKuGcgYReKd+Qr4~AUc4B9@7yf@4$!* z%-uAd#1-ijfEDT!=>(-9fm5$9l;8AuV5IPqiS)v0-gS@87?V z-htGdUW525G_X|y6<)=k(|lRbQ8Y~P42Jh}tz}L02wd>B_;9Y=fjSD|HSA6v_}p1q2^or8AI2p;xF|gLD<$BnBF|k*eW_ zEp3?zE`YM`3_Y<~v??dF8S!F#fb-IID0cYh=`)~F!0y8yeE*2+-6`_$@e@^K`1r}* zzG8J3k2EBEn;(%k(Px9T8) z`7+r;q;>?gk&M(&fTI`x(WR=FmUQmfXV)8?PN0FbAhTixU+q~*b-n$4lYeploFW3c zE(H_^!qi2vOl)od1BQI4m<&*3>JFdWAMWfvve^Oh%p8yJF73KhAF6$_o?>4~ry?fc zqDjA>y?rT1Swmp*5w=Lr`LL@GWv^q{ErH(mVR3xE&Zk`^+e=l3iws~~vplYDusf%7 zR^58M2v67({rTbD3-;v(0>fPAyP|^PvnRigiuUnHx3gWr(hU)0H zzF2s?YQf`G3m&fok5@h(ubS|9)q=-q3m&H}c$^9zf4g`OcvL1H^hiOxFy5Sccx;GT zsHmxn|Ae##ECAa+*(nX(RhigPI8;=-UEF-(|7$M#wq$8v`3KC?vJzoP>%E{Tqu;|v z%`2F&fnV69UN0wNC@JuK+rJhWgfGvtCeL8N{uC$Rv`=lM12I_Q+L zF6j7koX%mM#NtAkAxQ(2?RoksQIr~N%`^@8 zt=W@DO^UGGJno0ri|W<{YkY6&M}l<(bPynsLRJ}Ifho>*^im$QLwEzy7 zU)BI_8)(8bvK*Jme=k8&yCZCJ(?zfAY^vLF4%(dtTTP^7Lk7htgZ0T2$GmYpvlpi)$G_MrJZy>b_T3r2jsC^Ip2MDcp?+MPy*+te*ZcPeZ0MsYv|Ys| z9>{icG$fvmo*kVWoc+>q6mdfDU;7M`i_{u7^lEU4o{>2_$93x-q7MG#$&+3^7?XKk zCNvU86Hu{!4zP^!ByRG+;SprdRVJ{mE(2AiSPg(BNP%FtS-;|ndV3l%OZDjMIlUz# z8Xa|&WbXsLdKxd#(l$=2neyeI`Nirof<5m1QA%cY7 zl7*M?@5$c4OSBX^OmxenYTSU_Js?p8se1N%xI{ZNaSEMN~*~~8;xY_5fkJL#An#XN^28G zMzfIl?Om2zpL&X}5`CrZk{0gJ6-$1svjd_EAM=bwwP`JZ5wJz2MDLUOYA!SN#?yB3 zQ&+S3o53nPWe5@OCYtFWdY{ z7BDz}%MQoGub1sWPv!U@-S7Lxix-D4j}I;mUj!W~8$a7MfY%4_NAI2;U7X(yf`!58 z_2KK$@!{VNkM9O#r=D~4lPjy3yKNqJ{eZ_`cmj_l2KZ06*X!A%H5!TWvh(ZC!|#6G z9X|YZXSjp^b)p9b=m+GEzq9-6!|%T9SoT!C;SE3xDsi^DodK|W_moWUi~IHW4}04W zYdL>2I(zwi`2FMEsElt*JbAfZmK91=(b4(o_S2`2zuz9}L#mhLfNmU!dwnu7<1^H> z%mobkAr#4C9-}i4pQ)}Pjsvm1Bkv|Lt(EF%iv^7^RjM&+-w%y##GqZ;OUk}}>&zZ* z)erW?38uNhzd(ak?DEJ`H3ch1uM!iEJ(%WF9)0BiA!;#R?gb8?B{wYfn@FXs{@#i( zjm>~`-Ll$|wZjOM`YE5w(1^(UUi70S6a~gzu~UO?=xofa_A$U^<-kFew_5qQLY*W{ z4W85RIPyD4-?iZ@Dz8M1F%g)8e2x~e6gJ6A5N~hdVp^^szyPl{Pm#>BdS|`q5W`=K zpv(zTgmpPzmRH^0nk{%oVlC6tI3Mmtzup4G58n*W*d>94K3tJ0sn7bb_u=j~8mdvL znBjfW@v;g4!dZR8empk?TAd4&oaX5ytw1-N#AT)KCXlI~K|c=w!fP=DygA>;>5f(N zBl@f+}Bp zqT_oYzl@#A3ck4?{l zQa-%~0e>xE$ZZv{m+=sKy6_u-3DOMtdbPHv+oU%LtQTnWsoiFi&jSHdM57xEDQvVxC`JY{VGz2)dX#;X zSK~8$^8Yi0b^{AslWM(ut7JY8tlBd+4%hP07GJakK1e1j;fGD?j&c_h-c&bNCdnre z&fxj}j@{~cQnfT$k*hFBAj&fjff)w~)PM3F9;ef3lWd00&^bEGX~y~EzUw2{;+$gF z?OWoTJ&lf&p69V*%}i~A55lU;1UyH4rJwnNd9K-!v5Lm9bC5u$?HKG%Yw(}O$#c#U zOgAZ?Y%8{*Y8uHsIBt4u{L!ud5{PJ+Z>AU$P06!p)blvNiJ zrBh=YBB-yTD4{0g8v0aRyl3$~JCc#5Y|u@yIOCh5eBE#@%CrdTYv@VIwtpy9nM&=Q zXRm4UT)RQz)NMxAS+8^S%Li8O`S1BPGVleyliH+bCUlfmHl3xZ*1aRO=-fF(i^u~l z+A98af2+6pXj7f1?b$<6pT0F6UfG>mB(G8~+>on4wZv0&RXvVw^5Rom7zY7_W%ZAVp+Fr`q#w8i~=`0OMpdCUCQ6#fc3vMav^Nr?w6Bcy-Vg>F*P@BqB3gVZF-$3Y zHj`jsYzfU(1UmBMqb%r1d4SggYxBD72r)*2NJ~09HrX|9PpV_EZGBFs=ozP@(BR!Z zT0874hj&Y%$WnGNRnfh}zLKrymzO2_lHmgA^WK1A|6Hwp9d^&4(B?;9?3c3P_?|w> zghb5Qqz#QrSWB;8gSL+M6p1l?G)=mu1KM@GU`sBKAAFh`vv0@WGM=RyYcN7Yb+_s6+bYz)-z?;LNT)IuYB~w9$hQ9Jdb*1iTSj>=zVf%CdDM@x{Q;d_5A&zW$xR_kp6cz}}J6U8W%Yt+yv5wxs5Sw!B zUUQJ@y(=~DkqDe~C?N41)MAxOsvM3h)TFz%{btv(BgSm8sP*&a23t*fiu-6zwCxOr zDi{#PxaxJ9b(zK*fp`LlDdn-yMb&|Ktn3D);ru_+WFbj~);l z8-#$D{q2eQfneUn61l>;tmd7-4~D^Vdf%_vtRbqx(|~!rp$(Jk;z!+=HKz;u=g*Xb z503H*Pc~X5nu~SqVch2N4V>PZ?go}b&8RvSzTnsj2n<4dUwY_M==Of_m4)R4uZ(HQ z@#L9}4SiD#f1Z+P;R!kT%JONq&UZ6)uS>4|*B3=fY23cmC-=*6q`E!(I<%#?wyCTV zOp(6ep4u$Nn8KS1>8-YbMiMkW(tzynBU-C>sYeugrwSBL)DgTzn^t8gs;N~#^l;E{ z?dSR|pPi+xcQVi>rj93oCAe8{#Q16)u`7Nb+KbIy($ZO43LDCSbgDZ1pB~}ZbsaG(>2{L?OQILREssv$iF&y#DbNtb0GJN-g(jvVdIn=bc4dq1=V_Lhw7)$J zP(J$dNvH}e-$M36=jM>GKX$gQT)*mbT;+vHikVtnrXEbAL)$o8MA7?eoUs0jwupIB zF-HHBYsFCQn5uNBwTxVKhi3a!*mEt|L<4S?-0)zcS-^H8Tl2hmZ4;fQGFcRXvm(J) zPM+vq8+M4a)26fP^+&>KB|Iv386h7H)7W{L1n%F{;E_!0Eq^C0UJbOCBWnX3!SPuU z6!2|~J_kY_-ZwO^zx2&@TQ+Nmc;--6va&Fx6nTu`Vxx*pdSbbpJMIrnq(~F9UmGil zj|2_F_+~GlO>k>Ut;bScuer#dq!s@;+~F>|HnO!OnrIXFK&{CRYKc=7G3_n*@* zfXc|?!Zq*>7;6m45ZBLj{H05s-RT+Hv$=-`VLyL+=1CoFCO~OR`n@?kd9h-o0At+_F(t1J3;QO2FKcea0Yseyc3hz&D1iBDZ^+EC-n{`cfEybt9(n`BFHR<4S z1RX?(&o14QPlCa6>i{qq3*OVo@gYW9gxQMc){!!1EMh5fnpAN*FEP#B630?uZtLsO z48CU^WfP;csF-~yX6WHnA?X&N>VUa}dNDw$u1BCVWfH*aj_8}icrN7C84S?U!>*^ z4cGtoI~`}08^+%S03@?@h-td5+3F(B<4a${d*FtWzczrwF*n!HODe9BhjkNMImSP!6Ib`~nj zL+BS)E5+#MrV4n$FW9fxuZ3$WSc_grExVdFteYc>6l!ojc7dYgtD(vxac|hEE6a{V zFU;BwwQ!~&PK>A8mWMJ$Y0cFg{h?+C0N|hhrn*L^46~w`4~{aU054N!i|pv6`I*F6 zrRb!X{BA1sIeSN4n0^jw_5th!AGI0e^kh?o(x|}v#x>g-T!3C+aXeTmP7eQmeSYT9j7g_bZZ#7~uVT|$Y%RkDW?uUD2bgw|e z$-T`lKT>dJLS!_eEq^qEZ-~Wc)Yl`}PuWsno{|DClEjUp0;Zzul_K2BLqy;7Hj-%g2{Q)1?okn}9Ngm0hM zSzjWPb30{3KG=&aPVE#T(ZOhoBI?*h^eWu53C!(zJ(4vucKhy>nFY#dsbtUQy@6sR zur8H6!N$%}ORESjGI2EOV-xGQtjT`!Zbr0Xoa%d=l5}wkHWej6M4(g5a zcL{~IuX8Z$t6Uf=)xmzJT*8+bh?Pk>i5E$y!OCK64R+Le%K1oP;9Vb+z|!D3QOnS| zUdKVxVd%_EY|XbJSQs8r8aCM$x(GIqal%$w>xSy+>?@m@Wy`N@q)zmy$WyoCwSWOFLW`0UYIZ*M?M13?(NNw{&^_j$P~a;YeAsd} zk{PjP-K75zp}Es((B?N!CdP(0r!wL|kdr1GoHM67HS3Baw>!_VdE7KI`i(Pdj-ClH zke{w;G{1%@)<-FX4kyrSL8mr|qc>S2vD7?l9a1qkOo&vzcD>V`qzXjmjLuao?N{gT zz|eenmEb16?c@0wn!_d4of9Ke6P*c%@24*plHuBv_V3PbR2f^PaJ7s9#;-TGsmSUEt!+N)%fnp)H*;)3_#9}-H7Z`I z3|__<`vyi1{$c2KcoBp$rKi=ce>z6VakFJ&w+288ieAGZht#Dva@Hw%kZn-GTZ=?O zi1bG%{fm)3$*LrG7vE+nmOi994c8crG5A0OgEU$ z{s7X84k*-$%Esf9Vm*|e$6oUc!eBK|yjbEXeGwK6Brw7OPs^0@^-hv5lA1!laK>( zP}baBZAq+N`#NG7L;NqYL$Du8XvgIo)e7`v4jnLhv(~1IBWiF zWFPiq+j?_$`10sI<$=>B`4mjbBW(WqVS7jk^gz3I+#wWXDYpj&YqBwHb03iHa-p8# z=+ItYma`Osg*%r3*sX%5uipf88)wS737#Aw(h_fGP8=!?l06GnYiba&BMPdkET+AT zg*Wp84~<4G!KpSm(%?8DPb@h%xvw&)>7?WhL_s#^{pf==c$h+yTsvn;Rf|O(*f4+? z16{Pmp46%>2WdOK+Bg^Ke1fetc>_bofc47H?pR(nLaZ>{U8{!LEL*FL_1OiK+%z(r z;ePLF$P8G{3gz_00cg*LDTS^*BXti*vhSO6eQRq=v#E!>D_gQ_&+b^;9&O_!bp1)K zk4#%D*?5YPLXGI-$8DynkFJ_-MO?c#Ez#Jnulo0K50(5ZxYmqo0Q!*5O_ujzTUX!v zNcsNk2I=1F_QNNSD4lHQ-p-T!*Bxw?VT95y64Zx}ziSDy(a!4@@h!+l)2{q&iv@-H zf)ulI>+z*Jbd5Hrf}`>1ctEvfG%u!2C%^5f!8DHj$cVV0$;C{;TnGp zGS)$rBwMdDic+sdv}v+-kYvN+I|t5Ra|3bhBDgcUrkkKmK&cDip*42v#?;1=#?v)a z|MTCD8A03nI)lFs{`z0X(CcI1Uaqx4+5hcxW`0LJ`lEPo(x!hGGuoyIl%Bl(fcxoM z-vgrGU5tzX_E%qlvE)czMBI_pv=WdzT|wBTng(hiem@v)@9yk8tw#eW!IqCh^g?}QMdGTm@KF*9bB6|51au_aE9quyEy;)?tr5^? zFJ=x<6jCWy=J?hCM?pKw=xSP!{G3$#oLGf2MT2NwWRRSE{(J6yQ6RNKHHfa%mfVo5??gdh(x3<4?kzmTx(ziP^6xT`p&5|SW z)uXHY0r>einWb4~<;~@`ZY5Y(61bDsRA97Z}vEQZhWEsa-YRK zRwQJLVSTemp`S4aopbUoW6yshJhwt|Xit)4I!{UpGhL#6mqY4a)oIRo-2gdGu8hsq zhs9&DZ&Ojtp8WGlo1lVzu0fcVeycunVb3zU$OiEzRm2|;skdA3zX#FQKK=V^wq=2! zTfmDmpiP8M%GBAD7{E~+O|RRRVTuj^NQ5)!9G6V zQGCGnCCrWK9c9}=MKCU=oY|ar$v5#AP8!w`Qvg~3>GWWlTlPUChZYfHmM{TvMs-B` z`Wny74SUjh`*e-L*KX7@V$FMX@EB9u$P8QJ0~!5q+^PdssI@n1-I?b78m~N|KLKsd z@MV<{*X$k1x2Ix54CYvtEnd=QT3G+y4BJ7x1b`hgy`LRfSOfdZel0(TfCdu)cHH!S zHgJp-Hp!P+)y1R*h;M5XP8z_DpXASEMp~iDs+9Do;iIQ}!^clPS|~^<_AhBlRBodY zNE+A~$5XA_n@I5OVW0%VKOCLqm0(@5inp@|iu=blJrgU5zpC!f4pw{m(JsUus&yIY z^YDpNW@eWeKG_@YK61*4Q>res`)F_Y&;_KtQFW<@PdE#=RjO8PuPj$nd?%i!V@b|E zeEi)<>%HMBrv?kk?CnCiRl~J(>g_&xytn)P>UuM`-uK__J>30%Wj(_KRgDK!+k5!% zyN`ZBaXQrnA3__C9vcN~1FfI|ulF7|P>I1cPeJJV+jrz`BnCk(hOk8uI2gz)w`>%b zY>TFttRtDn7+^7-Q}PR7b63_;L_K%=(Sh<4M!{QAcbkWnG4bN$WgVR1{sp~2M+)(4 zm7e62$#Rhb2c#hDvehlKrICG)ePJhwy8I;fRwx%M*%lrtn9OsRg?am9Gdjnlf8@z~ zm0VM`c}(%EK|M$~H77u3ZGi!)=mUX)Q5yL9n}f4+ho$kY!G}+uIF=}KxR1QJ!cKJP zM}ecM#ynTrTUk*X-Yld*JkfCXqc17p2M;c3v$1MX4XJ8z4D}Ipq_(u*Mc9(g>+n4) zxRAmnAk;}XAxRRiKES1wQVXml&*y~yqo;0XQCxTU+@q%t_a1%!*ewW?>fDLI`yukR zZ#3A~K&@4ImR#qbQ6rcxvuT`FyrNWC0JSJnlNN=R(h}afN{q3E==D~hKCqzGX16>s zKfvQ4_*cDg1vHEV)-E{7B@`B(LMeWB^FRM#Exs5i7Gdk1y3}Z;a`jIRZuyQ$;xUG2w_sEmcMh0SP}n^eRi)YIG`tq>l|tx~B`H|cy{w@Y{^_zwrs zS?yejCP5YcnjK=D+gr7b(wsCaxQ?UiT;=M*C$Pz@%G_6FLQLAREssJ*$f1zVqO@5D zs&6r&`-|^2=-S4^!HLBy6}vXemdG{hHKvM^ud;Dzs(sh@0gDi^3NCg-yKHC=gY(nl zgR`Uak-S;i3$$+rTJjvCy^7;yI0!nOE;yrv44jG;BgrSeQb=DXBhX`HeiH zC2t~x1dGeRlG~f6=(;MhoPFCW%w=niYz0g+s(Q4Qme4+@g{~(_w#)OkZ{D1qT^zm$ zZJHoreo7ZMhcWqrZO>C-#FTRnm8oxj8>tg*j-W$p8j`>pZ8>zdO!f-}!FMVL07fPM zVwjtv5Tv#FEgeqKl>~)|eJZhXPjojogzXZUT7zp48HxVPXNisCZD#S!R>F@t&N<6O zbZ4>cl4*;85S|}P6nmMd2_UwtE`yLu4Wn&xG*6tTN-Ca=BWjLP_0%|@8Qu<{_ZD8szoV7`jg`$Op1 zUhX2WHS>D4j|7_YEf`<39uSnf9%SoSi{~23v`ofgzNFyxg>pY?JcxUT3C%c}Qo%h{8rh$ch7G;ARZ-HOi?)KLD^HVoxPXD;bH*!x5D}t#;_I?nK3k}f3wb}T zs}|tLjq{5iM}yxT{-3DA*KvsH)}CO{5C!zlRreq7n7y;FPJ0w|cTvIHa6J$YR_)p5 z<$tvp*4YOa60&C1qR(2+_CbW2Cgr3^$8>4J98c3bpot|=thf3cx8bDxn|8|s^W=w) zSWDyb3iQNilNMK!qN3vLFSU$ChRv=T5t7_ciLeWpM`~RjG26UnaetA+U8f=QLQFs$ zY7x9w)(zaJ(QXoz?RalEX}G8Il92={x{Q{kGi3U_Iae_8=6QVwo$czlzIo?npA5|O zTVN&?BZU&dE49}K8VKHAyxe{&S4yUsa5e&IW0Ke|DV1fB)@nIx-vmao(9vPJI(@%J zqQ*=B;^-jmB``Ej2PtpRT%u* zn*c<2PB}v-xeLRsN+MBSSwVUK+ergFn6% zKLntKxBxa{Qc?#KogbY=!<{FOoH&lAm2=5q^!|4 zYwhd4*+Z`Bdf$`3T9%|yi)X+Ve{nwv2hc!klN?uLM&MFz@4#s8nZtB%8r>`R@0A!q z@m?gsp8JkxOK+ertFdllZ55kprRqSJ(k`s5`I3+)QJW#KUrt()fd^*JSsW5caiF~y zaG^6LAVG~`>YPRFxp9GJOcA$X?I1>|qrl?n!s_Woux9pQ$?O}`=L$j; z#nLndTr^9{B>^hZ6n@Kk?2Nj-21_Tlmku4CW>qjaw{n(2DTLvme6ve&F8BBWg?GVJ zy$=+)?Z~|5!1JLwDz54YrB43``T(J?2ooc+Jd0;joE7mDbD*iBDAPs20;Y4x`Hj%W zNrlH;IBb~TSS)nqrvWk<2T<}QMmi%a8XYwLupbQvyAP2##f+oaGOjY*B+B}7s{>3i zAhQ${lh^aY%JZ~{slf8jc@ExL6VEouZF)$pinvd058IC6H ztZ0d)AZRy<1MQM>jK;79i>Vuf8EuvJj96oC<5QCy%S6oW$(}+hwW~RSb_C?VL7BQq zbHz`py)=;pV^9TDkVh|%4v$})`^!X8aRXZP+B}Q)blM<-tB`DWKWoQjodF89-?%Z$ zaD7ycZ=Q}<$H`x1=K0@d*AX4UFdGC#e4wcglo8De^DT5*uZV6EM6H(C$NQh5ILc%@ zgQ2}fY&*PI0d|I6969?UVBH6@)tI=EPud@W+|D}4?fA%vjA&!%NjTPM;(ZtLi|PzH zgjQ>Dy6M8j-OTT6b#1s-*M`Ba*#`qc8V$!6?WY#24Ar!Uxi@C<@{VtMb8XXiv`KsL zf|f{^$97f|8h7*PGT0aKNv!2Ome_oDwu$?8marBC5??%@EO{eEF`iMiPXYrVtYCG% zFL7;ms{23kvg=9Dsf=+jLciBO7;&0>AZ?0~fWC*rm9ISdXfdH$D^@P!hSzP2T@^(j zcWH6mewb~TwiHIz@%W(|2&_P2Xln|VjuC8?5^Ah^uD?&xwN^wOKMig|8QM^6wN*^R z(qXqpZFPwCLPZwe?EG>Is^Xv|rX7}4CcGz(Gs4)J3z5Bw~ zO1?OJ;e)$-ejL#4@NTEy>3v)^1pMT~-rnxVzO?sYh`-u~V%S3HYaAl1GbY0(Vi!XY z$F2;FlzX>vU7I_@?bkOVWfaNLz8?+UlA^rv4>#W_T_WK0InfWQ!u@F13y8sK4}`ac zlW=o@qq`g(aKw;xx>66Fxs15JyL|3s+WsbLbGBS2HH*krU1_B4PmQ}1v&c33vVZ)d zNIs|e(z;}31=euQ-wo9HbvKF(y$VGylNVAbMUN^6Wyoz_Av(34^Rtg{IR4TD_iX&G0>CAFUo}^caO61y=P7f{Rfv zq3m3RJ5tLRmMU8;!|T$UUlHhdl*Bx4UT||SO4^qs8JCd$900pUM~&gD548FbU2Ji9 z8>RJKF3<-Guk%n5G^5v-%TdWwF-j{-=1&H*fokFD!$+X!{YcsE?tCepT3vY?-Z=ti zUm7b@qY4?oukIU;s(L_J8EA>3tdzsE!&h%XDP+CCs7{8EminS?7&XvadR2pUa9N{b zd3(K1#q(cYI~C{Ir*$eGpZx4poLsGi>hqsmRLAqRT6}iwws@KPv719RUmm?Yb%&>R zHfgA=>_qjEmpLuT=XL0yE1m5tTvM{vrJVI<4WI0M8b zN*d@r8y6~_Md_u)9xw6m$BN`HpUvnsrx~M@Rb*y6Q8&w@>vC515bndMi{@eat-uw@ zCHzN8U-$~S0S-+9lvkPDm~%iequcd(_$rxp#M!rT8>)d-;vCs0qbeT(0h|FNlFqWc zNJbcjqjWJb5Gg;Ui!$Q-f#|>@fpKNgo5x4Zh^VM-rQz)>SP%=HC!Z6%Hav7I0v0>S zZ&B=HX3NKuDDK9H4A0IQC|qMSwHaX0#T>3Qr9Z-)_9*V=kJt*sUjr1Lf-NxL%2fGX zlhZr7RPaWFr_|Cv6~s8Q<4FrBcBrQk018iaFdYzwsj!oxs^O{+BUKz~1G7W*76sX- z+haU(QBe`dWtk|%&9;|fL<5L=xI=z`M6T*jCyOug5x z`p{oBO00*ViErP^eB%MJUIrjFWhCKDns|Y7zk|_$q(ylyF~8}DMFG+~DQ2u)d15Xi zd87k{`_P&KhFkiPZVPBsfz*p6kZ<%9G(RMi?vnBx770>j&*W&)Z#V>7gXlNx{}wW6 zc9n^?iY*vE6GzH5%3>LM4}t2(S3L+&KiZ17=#mAgn~}QgU=%fBaYiR-<%TLvRLH|D zxsi83N|?S?NL@FVz^DSEghQ!Cjpd{ymY zA0+s$2~X~uOp^*T!DQ&JSdX4@3k761-EK+rWuax^gu5c=ui|WOdUHbO3VPmpr5k}` zkh@_-;Yp_2s@f^y8%Lk;5n}2pNrhlgx<6&D& zUmwu-8~lDV?)>`$mh{8+$#8i3v(fB6Lew$;^KyXd(tv2A>^gxG)knt)$bfXPq{{0@ z{-{E&-sE^42K2-4N4mh+E>S0l9?z?6lrJPMQQxTN7;NZy@};V)+Hqw315h1$l{3%M z*j&XWsedX5wIs<1jE%S+D^ri_`A*I=9xw{i7XW6Bh5~8PNkbp4kTW`oN3^deI3Aaj zIE6zwsxFh@V%rLnxtW(+zL`gtM;S)W)QLx|vr5@)8@;j^y4th(i&JR4!ulez^4aygG@*jLhR1ke>;oF6Ai#+jonAojUwgVnj|v#B$+ zx`|Ddd}BpLWm3=bX`)kH2^b@o>Li|ADYrN&oBK(QeN60>ho!z20qR;Zt!K_NSb1Aq z5wxn(;1s3gH*}9lTFNm;1&-V8dFRpY-Wu9IU*qL;(Pkv7iZQ^UqvvsQse)dyGZm|d zPVy4K6x$(cni2ep4&x_$ z>B4B=Xq@!XW(-(FL_dC(5HXCE<$;eMi+oVj^dwE)nVM15saZpyTAd=Ok990_HE)f9 zz+H%9&<+ovHRdS)CwBg9uWap!;N{xp;r8XUyz-=<#)Zy^aAw?qkZ7m6HDA-z{aKg% zpC$ABhKw9!+Ni@csKl_b1XQ0>234|ROMD63?hWhIrdDtW3Sago5m{fpS9w3l=RB)@ z&C#ocbvA*tSdQoE1U0$;OO!fFL|85tNzvIhFkqKWOjgULG8jsV0G|mUAd~-IBGyoM zY}Z5$F{T*U>4a_;D}5TboMox@i)&y9byNV-l~3Oso{U}}Ui>82=vDXek_EItE0dh& zOYUV}hb&M-q`X>T(p5vyJo>$=or&GEsmCVT=w=Skte!x#MKVJ@h;l@r@)P6f%jYPEV>ggB)(mP!2Mz5$sFlGnMr;b{?!p;Iq2+s=l&kmoTp1t6J$oKDmx`~Tf z8M10vRt!Ud?`!oPr)(kd0#xV%bFIXr{uTM6NO96_g0z?v;%qHdG>)KtTZ*V|_6b#MlpAUk`e}wpQva-e&#^3)GER94t_3be&^!C|$5{W1ZNxZQI6)ot)UV zZQHhO+qP}nH_xZH-dlBl!c0%??mgYT7UdF@Y5xH!Gqmw6B{U20~QXXKs?ePGNG+z7wrrDO0CL z;q~k~v$-Im#{T^Q0ZAHFt|ET$2=YCs>=vTO9lamUx)p7xLnp!OruTF{{#n##Q7 zdVUuJXGP87EayGvLJVZ0oHO--u+BCo~1t(8`i^#fA z3EpXOiWHg(y_OzoU&|h_)p?wVpJ5p^yHN)v4nm=0TT_q>dr~IeKAR8T25;gV>RWaY z{9hY&7of2GlBD*tZ+wc+M?vOQ@tbA!HzZ(u->Fc6QRmleL%%agSjRO9L1Gf5!hN^} z=n!<2WLfH8Gdh=bfY8q$eDpvAYie#M+XjQ)m|xoyDNGTAU!Wv+@vT;6UO{x_w0zIA z#(q{-WWRg9!AW(K6TMmy=Gj$qY!=0^nvI7nefTi57T9b+P=bfm!WYe7ct&F=qrp!A zk5n>T6~t32?O-TF-JvZrHQ-Q7qX(xQO7qpb*np@895GI?D$b^I3P{8wk3brSk&~Es z4NMhilmbL$BT0wyMZ#)@;S_UrJ1+VZ`+ja__Rj5eEjj}Z*gm|r_7sT*O(u6*qD!bE zw%o+`9C91Mn;gcY?rU&fI^aBfd0s^~EqfU>6yX zrH}}yzqI{C(cyKbpCIFwH>eXtZ`rDzZ04nEL+!_PIqD{}6fA-8riJd<_^;DE}D& zXgZtG!^pmW>Pa_&Ue?E?kH^hhiPY!e1)yKn2fjEZV9}5KZ!%dX&Zn(P?!$@Bx^5>fg7%IYOhu1*fS>vd-!=zBZWX(}4jG_Kg3p6=tJm8d^NH*S*NkW;8L)t1i z*)VDE(_w#DLk&A8Dx=A#9P75hM`|Fo(fA72-d470h=eRS;=fbys1v(vZ zzCc-0SwOD)kACS$Fz4yq(sQGm0j@w#VKqIoQ={PO?i!ZCBFS$UY}@{3gp)(q*XufgPGsjmct}t0g&XN1kjm_k= z^3NKhsQ(ZTteMb35Ge{)<^I-w(b0?%h90x%r`r+OzYZx|*MCQ*2d*o#6s2KYNgeU4 z+$8(bWwgqTxJ!XNEHrn~Vu``U8-Egb@aAv!9%MWn5`@`OqXDcI4WQ9f4Su)u%V9Rs zJy~Ub@Sqe1v+)lh4_8kFbEZm#&xftIw2mJ5PbRSl=c8F9kkwB&N+5I!GeMDxPeP3c zbnx=R^2Q_aLj;*Zi_x<2&ZfbSmUBgPWj5wjkru@&M*hybScODm^hm33t&t|7Ir~C} zskZWtAfYC%#7yePg*Qbwq|A&y*xQDU88F}?GQtB5)sdp1K$r!brg(;VP90+|Jl-#l zUl2lACj~Q=*mJdmLb!^MR=w(NuXmLw+TZSV;Os+uXGG4ZDAC4CxToEd;2#a@Q4qok z9S}`%(eiDsRrzw>%9X}WiDUh_4Qxib_V?1fgO;K?% z`tHBf?K+fhdS7aM-DKOQP&HsQmHT5_LPcj`te%o=1DuveyGWZL!dGv7@IG|1M@>!k zCX+)_6I{zGs{Y{LA%7u^Q0&l(_UzD5u!vZJP{T%H`tKQ)RrV6AY89ww`p#o#dJoV* zot2fqhG}ZEKYsWh_V1~ zPC0Nih+od_UZgUMJkzd#u#mlMKTSI&vdd{pP8i-rmx# zr=z2{^J{s;&{i!l240sV4Ek-QO@Ah7PCy(2&yT%*XZ3{1+Q?q*_Z&Gxc5m z(7w6Cr_qk*li#-|G?-xisc+_IJmxW%$i5ap+g5Sr|r!4{*&gOns%@qa8gEUbZ7KC6(> z<+^X|x*R zPWYOfW;zY7R=k`ygLB=c(l1yK6$uJD`vi2GFTu$**)Ac`{~#xWiwA6r($~5W-85w` z|I_Vs$z-3`1G?>{Vs`j56)9L+GzMxkt5(@RMD^%CN_I_}pw0ZYI;zlmx93J!O z6U&(gnnflzW=!oCfZ;D?F5%xJ!P?4UgoHV$GFYG zdY6V0!L?fuuOUb?XreL+?P;tV6~p$D$MxymiEYuMst-HmVfE<`jLGUUKH3Ut>D!&& zp}%M4V{J6nAC`1y;c!GM1qdn@k4_=MFg;<2HzjBdKqGAxyj|&fouylz@s)Y;ftrzV zJP|&{3lwY}8DG>U=Mhm6YcH=YWoTmN?iUqy6ylQhCz?D~q-Scv)T6s83YAAHK~p7y z1VtP9&5^^5Q>pIi&$}Iez!RyKJ4$Z8Kd@b0h46}@5>KZz&(=6O}_@Gyq_RHu|+K9Op~%m&bx^K;w~j zByENA?2CBEO0c_HYaIhoM%tLyN^1Psb61x3H(9^W^CRDsSBDtECHR9U5GIG`g+^r8 zi~h}+SiuoYkGjQ=2YlYQ(F_d9+~G%ImTV2A8dj0UF1?!cN2m4A>Y0b;M0;W&fzf(j zL}sTqmeve}3W$A$zNkHoxQKuAKlu8WwBNwJFV@m2OCZqG;YgQce~og8D8$roI7()2 zonOXQhm}<{pco{ij^Ye^WgfU8Jfqf@lLpjgjes;HkCkjq1LvSQ#jD5)2-x@FlEMFs zv`~ur5wFIQ1Kpi)7g?gAqR}OUd(QYQ;G33)o($lR`7ZFnui(Zy3Ke$>mdGKcUdpkn zT8>AMsdB!yqo0EkTEg_)eR9-Z(U6L!1c9bkdKu_zO(rLjHAJfniO!9o9JAKbH&i^U zi_Is=zAnr0gOF}DBX{s+0GpI%dr%jN^p|k#%9&?>8VC! zUw-%q9Hr4{KXfhuV@gEgr9zTRu+m1bthk%5z1DB zv!yLf8~6v)2vcP9`=8U5r+7`2RPHr%3iM97_R?H3#g`@YWQZ59z{qCeTYpyRi=5|D3B+n6m z6OLuRpH=FV)6)B=Sa!L!uK%JD59)g{TNPu?uv`Rz2GAbgaxBOJkE@VgxWGGaD{Aq& z>}+D_0rmY(VL9CmdtI3Hp|E+~B^I`KhIX(LeR1NiFoh%C6oJ>izW5&vhslh6*peQz zvvuMEwR?)OVrOyriun}S|*IKxP|;2xP|1mV%Ac6_{~l-BAA z*Uc^qTHl`?&x?(0jn7l`U(Vwg14R*ncA*V8qXJ*n?oWkv6x$Xuo9jfJ;qx{n3)5bu zgBMB$`BSRt#~QA)8q|`vCuuROOx0D9L4`XELV3@SRLQe+eU_sZM4oGb-<)+gPk97u zknQY54q~osxhwBVUU@~u*E9e!RT-8ZV2IXOxX-?15hr^t2wmG)gxs`5)3P=3wG7G; z8^-W=@xrYmA;$UNHuu(EdBa0|4bHN;l45gvNN5B(U8&fII;Q0~Hsr2Crkrx?t@sZI z7Q$PUfLgm7_DhU6-yw%?d0Ou}29tONZ)DQSn%h`BsT==IXKF5SD%Wn_I^&Vh?l*zHOubb5v zB}JG7)xXeTu&&SCUnonfM2QRoXa|nB2TykUyWRY#ShpF*7T6{&c&jsYmJRn=ZW=*U zQENs|%s9|evQEX@_|wE(&B|tnU$IHHEwoV+x2FTa=}q z3CO6n!L0{6eD!8Dhw%wtEC%k%CniQf#Hb{y;bJ?(H+mT}460*y9&1;?F)YO0f((i! zq#9iY*ND%`!)T~hW_DHzhC&j58r|#{mD?(_fN0c9>Deu58V zfZ^ZS32Lb_=`X=M#*!>RM>z@nngXx-hGQF}*;rs^*~L7-FqmZ)C+*Sli9WtUOE$0} zaF&2j7Plo`tQpL^H5tU=cPycH%+ivAA$1e$GjF*R_Bz6)3!`%MJdM8zY`>ur@O*YJt1(#*G!f2F%LS!N+ z#laCiVtMnS6#z@sPuGD@+V{UMD@AIS(2@*ggIHCa*3@c)d*t<-5{Q~dl5r(lse_o4U9aI|M)d}dv*4PYh1fk} z(K@;Tiw2p(JVJ9yxlRzGJWDbPpBuTfJy|0XH+I29$RB3LKqYH;P#Z}h#^9XQ6YH&1 zr?#@{d3a_WwA+0PNZDeMkX5AcF9-+&fp)eKY7;N8f_O!AFwTtBF^(%me|Gd$=1Z-M zJ2TCA;68_skx{##e}Z?3VJb7uNaa>-Y91Lz9aN4hyi-t9+vz8&jLt6pB5Bd-3;`)F ze$Ck?s!^8rZ?d~L^hX*GT6o{<^%2(mfl10%AY~<9$1;@j)SLiAb-qFCXynavb$xVH zh9BnsWfNS%EHzj@&X-&3;zAkG;&+aIkI6S$cdU;bQAOPye9!DNq4lu}hy2yV@`C~r zu54T6Dz%P*8ml7n77{%eM}~MRxI%Z_Rn}3HT;_SK*AvgYpP1nZ43cTN%bTh^L=Zdw z7%y+#eON$HJ|$Gos*m=;jzgRC^qwu--;QAlXJ+^y#pV&g)pvX5nFTpU1a9B|7y*sm z_wDU{6g)(bitJ$C&YnGmBlJYTD;`h$%fA_K6)<|G8DUncnEjnI35Q8$3*>N3RVQ)W z;)?yXM%4ClSs<$TM$arvmSH*KiOFQeT8FnS~X{ZH~nwrswBXt5)#1r0trw=kI9+J^RO8!$fKr`l9W~Tnf9Vo@|XE9pu zK(o_bo@525WPwug;N7b_Ve%+n2e@|T%+Ly#Xrq-0U7hzTR_UM8RPSMNPi zzReu|mWZtU7|=rP6(-bI=|%VB{d{%8WQ4C}GD-FGP0oackof^)f;wICFEv)qY*M&_ zRCd)1&?N<#-@UcNwsQ6=4=?tei3V+MC=6&Jw6i2*RzQaaPgcpwKHg%1IAZNk!LA(* z2pF{Tng09q`JxkA3-q7NGe%)cz%#%bBSxH1Aadlt9T^W>#Isdr)eUGG&P4#>Pz<_> z%L|Gh7i<#wGQoup#AQaDJNzK8?3lKvr)7NsF`u8%)KipKj1T1t@xE8ZLt0J4V~Ot| zYlKp|jK@S-DGft+1^UOe-lvXydReUtZ5mOX4$CIpFfnC*@tR#hE6g2OpB#z{;!72@ zsKKkRjEayv#O(kMIBNH2N*l(LS&=BCEN<&<_Fafrb&R%Yd&N)kY*%^_8D%~}2>2uu zj+8A}e#VCaDVa+yTB47%3UdzPG!qWtlT1?r)3}w{lWA@}NTqq*I}(Xc`Y+LJ+$Lat zX)m5w2x{qQIx-;1x*@&u{CaJ$K;Qn)C5Ezv2<87I2`L?8PbvKL76oTc8aldlgL0+}O9TgG``a;%HZ`~?4OUZ2Liw#nxvx)u#xkpD z`VA*|c%i3wV0M~_Xwn2Xb9f_-g)Oi}Sn;>?k-d6mY|uqj&9@01H}j}36FIg=`%BHa zQgM|(+>05;9W@^;Eb%X*Yk0V`_{I=J62#UXHH0GcA#pV5;B_wh+unkk*&7znoZfZq z3fcO1%MC^CjY&rwEWz&xU(Z@=FIv@xn)5^^Ih|PhL=`8TtU%_As(^4y`GJHuR(`kf z1P{!3@@1g}CQ>>%6m^QWfGSBd5aF7KBwIC?d-e8vP`=}h&zF>8MP1v>PA0lu#-&E0 z3)32p+AF>eEnZ&b_waY!#>F5fw}fnRS(=--yEYJig+w85z9sP50J$Jf^!&(~sm7?Ix& zV)))TWGkT1my{Vt3ha(*ja+#H`zOw$RIQIpPIb9QKs*j@ENrwArJ!zlG$}0SfQDOk z=Qg>fE11%K;8@iDeadIfAv^N6N21+{S<+2 zwCC^7SFlvP#cgre1t?>VN)$+!v^&Cmu_J(GW;pHT87Ve+&&Wx8pv83QqnnX0jCicf zWY`4B^NrSc3^Zl}5GLk#oGkj)Y<4@3v3uuM2qIrGEaKtiqW1vgX}CzOzECDLRp(NGppkBnSta|6xj_Ge%9-{`p(f)I z;Y_jPK2>kwuBtFE85kYHJA*774v(V1=4sms5vLw*)Gk*1u&E(r@pF~dDqU&DRSfAR8j$4Ng^^APYGtD@>yH6pAQ6& z#RHoS5@oOF`-NE?b_B7kW$Js?Y9^aOGit%4_g9o%c8~i}=9xehi>$ z;F={E*vb{YqpK$czUsvmr2b@J*o6FU>!~xfzjKLH%|MvOTkf**%f0 zAp==iVjVjLDUic#gCellV&Mgte6aF{B;rRc8g-;UM z91${Jcv&_^JNXfSuM@OJ=yk?Em*+Jf1>@Ra8w_^JMT`dKEB0j8Y7aA;7w7FK$~TbT z_QjvtfnPpj40?Z#|*Ks`8 zRv|Q?eBnrR2Z2S}{wBkS*x?i%iLc>Bt#Un4=9k(?ZV^sp99YabrErd;%AZ7KlZWe( ziIuDNM%@A7h=?V6W3o9fY1EO1Racj%iW*l_r=VcPov}uq0b;t4j##=H2z5Y8a$((T zqdxg&fA#!7Q1fh{p^!V{JyqDR8hacF0094gftpPntt?qA&HmBp>Y7=bIqK^E0-BBD z7;HA_p@Uq$pad0xT1A;Q|Kbb%X`Gq`!hmhfg8&&T_7XN6%ROXI(Zw5o-eL(w(_AFl z88NA9a$o)V0xmcb&I6Z=rpf7D3#1tYcnh_4eeLG^1k+CBs+tdlaavrJW>~C66EPD5 zlbrpR&ns>dy$het9+~fet6%I1;#rh9Wa@OakF1fqWJJ2-PjjOG$gVdEY5e#t6@il! zHj0gbp7HAMpBlqTW%rou@mM0KB4imS1n53(m#6@XJ)+L8ShYB#s%fbw**sz+8D@3} zJ;ME(6`0G}8p8gsb#7p+u`UftUc36KYCMws#l)_w(r00dlE$q(`T$_qQ861m%Fn9N ziQ=82Kz#0d5u)lYF|JB(BXY>vW!gFGuf2yB(`16aWDT{;x3pTFo6C z^{pKpe&aaRWs!l^7DxK7-Q!=d#u4w_-tI;>kL?koL8)!IC7R;wvcc;WpC-YmDM3ob zq^>+)`SStf*7pJCOI)$OZL$)RqryOF`v(LF!4JSb$z)@juBQ_Ah#xR`%8vSvO1n{%z5V#wu5*w|22h~;(%K`!s8{KQ6!D5!|B5UC&kE9ar>j_ z<>UFrMsu|*qGbm8Ri-&&Y3ID=r+r27r=y3f@JziG@*ZEwY3D~9bm`~gXzz;+YK5s) zr(W@A2d`Y^K<`6_F6PAyepum#lY*^F?&te*t)XOR+vib6+o8S#YMz*LfoI2LtU58N zr*e)bVEJi<#Q{e@`NU4GSamN&x1=&yGj*BbnDcIORCU|0Gq?stWWl27{Z1wK!Qth0i%b|y@4LSD;v1k^GY zvK5WY*!Fd;Hf1v3A*ND51$&H({wIV?P@ilR;fD5*n_IEukQ<_VhP&cH`ZiTF-n{8c z?j_BEj-u96-lS>wO~!tCR!C~e@3Yvzu`C_zA60uU=4^4>i&>Y>sHl6VcvBP~+vRy9 zcj=j|>X(0HT_!D{JPJ3v6}M&Jj5iQ&mp3IEcNBDm#)q@rRi`C`M}U`dbgxl`$>*E0 z)G001G~829tB6tAO!#bgWG`76R%}yB7?6~RV1Un!6zY1n+5BP^hq*?_Oj7c+pL0Cic+S3P!!(&ZKRX7jrc_ zWdvETY?q1R4W@t_30$c2Uedy)mF$6Q1Ala7pEo0?GbnVS| zI7@*{DGhP1gt}-sOD%E7^huEnZU|JVw_ z$+k31oU?}StcJQcC&sKyN*$1}oPRH;>)22l%Y5yz0@+RkU%vfZt2q?ck(0BIgDK$( zCk7p*c%>-Z?OtB`sTjd!cYEF6mAIh6bt^|(o7wmNKjHys*F` zs>+P~uJneZKRr}#GNd8gkv7Z)H5wCn%=4dF<)_xTTG$!Lkw6gSo1SDAZEx{~rjT28KOK5v}Wh$YJ@lNhcU z@lTBywnRM0w8|sMxnBx{ud`anF&~o@cDikys%IM|Gh5io(bWlt zTqN5aBxUHi z6d#_UG8Io;fa2^BiG&olB66u+6HkLn*K1;Dwa*buA=ka6M_Q}@R zv1GfW*ECcpMs3TK%P4OYLfyWl-L;G2W^q^e@0-E|wLsCqSrE|3PRFC`JRQgkNFXd& zmLKGm^6hMvQ@y*E+aGo`C7y~DKTjH>6<(`)9jjXT$Rf)d85<#c)pVMHP zrM+6+m=zDSfa8eL{2YOZS*&#_K1FwCxHp{NQX`rZ$XmD=cvN=yIqfx2%)!cH`mn%jk_>^&Muz2PLtB`Lv1#>Vvze+!uTq5Q;8qkE- zx;dF3mhWgk?O9))ZR_VNh^3NDQ6+izy=-oyGON4R6IR@6cOJo%xfQPHtcbeW<8)%H zm%_=}HVnSdzZc#aK11Fa-bX9SJg38OVrAEmbo@2Uu2dN@q|`LtR#=Zy)s%`Q*#j3*YkF z{&&j%B%I1CuTFHd+hGy^9&9J8sCV;h`4_iqdsQFVQK`6FwfaC&MNw}Rad|7ek8mLk zo4HGsS)Z$deon?2uW27@z4TR3JEr=jKhX;?yLZj)#c+3X6LYw#JSM)(Sxl}SFxgY_ zZt5%JIZ<&sNo8yQ43vv3*##cBnBPCk;JoA~&cjh{Df}#T-BU7;sV!&#*QD1I<9R3u zIXYsQIjx3yH?G-l+$!YzhEyhXk)nH0g3DvcVifRx98V6mzSZ_!pYdAmH-K9Gi+akoI>dTz zmW?xowg;5w=|+|ou64I6THHDuGcTh5 zW?(zWbx63j1hY+|!OUX2pw>Lp&e>J%Aowma;LOL_-h+dAKh#Os?3Bz(dv-cXu&Nqm z{J4JS%Ab0UzFl^_T)e!#uAWXesC9kVQfE$fwv=9P`xd~|xuCy-Sw zeEjr#c79|Hu==rB-g07|3j13IwYOe>GkiOhaix->D)yOV(9d=Eu_A)82T53zuc>j> z{iQ{xV#MR#KzVbB-jS|3>h~2^lfcc3nPuUi91@uF<0HGm(}+U2Rje-V{wupe^QSUZ zTLE*EIgc!2R-&)v zTaM;9Ic63WwJrG2w8EdPM&C8qYfm(Gc?qI zZKH`#_8?tY-)%}7AOFJ1gc&lha?|=PNarN7VE5La()3%wD|m_6ZLj76@|XyugRUqI zsQcHzL-Gp-NV&4`Tyfd4k-zGvB^0t!zs;4?$vz}uGgR;Dhq{=Bv(P@fa3sbO=>7Xd zjh>`yxFmoNcR;G%WlrAIr;0>0gBX-vU>-AF|5gi=_O?&$tA00;WN?g90j%Z zuNZk5;*}9g6zt54D&wCB_y}YxsJS>oG)8iAXQTUQ#ATh`nArXBvU_7>cSp!>6Odld zAi1|LE{fTQZl@?dB?_nznC@%dv-!15G)Ok|a9$E&whdVB?UXYa!9)AXs zzsqZM!MCG|;@ugl)4_VK=$HE(ffl z%tt^!`3?Y84oW}n6(k1v^qGHB+;*Y{3T7SGkD`yibthOIA6By7E@p3DavFQw!7_Jh z%&Sn(rIaOfx>cgj5p-BA+9`Bvwx7kC`q%N6G|YUMr$9tfiEHXF*x{bSkXLke_}`oJ zUrDSaaF;}QuU<;Ru{Gk0M=L0Uy4dGMWo}P(5-SttrPK^?w>AdZx&AeVJj3U z-^n2-LVVm(kLCt$=h(W=cWf%|csvW$<}coJH1N7=-LgiQ#(T<^znfkJ?^?Y_^3v$M zgo@g7^EJXB*xOsm%uFRS!jy)sn0Uq`t$r}mdWMf{!rm;(i|@91aB_J`36cudkkju(_?KNt+R}T1#T&NE zD^|fg@*!Xq;?@TM(}VqRA1@$kMM>6%y$>;0LQh zXv&saofj>5+%CAosLQViXcD@X9oI)_8|NeB9jKP;rL*`bBu@n__ir7(O3qDl&qa77 zhmBCob=dr(L3kLc1k<)?L&68_Gj6dl@iza#I0-{qCSJ|cm3GRCcgr9cATgpT-Epef zr?6(Y%DEu$bSk6bnl4`yd30Dey9L!#a=sa1j z+K`se`fT%du5@>jK2cwB|4b2$`}vC_pGFm$u}fKvdoizb*wU3!R4%@gR~j>v$fec8 zh?HgFFvUl{rhO*?yh!NFoRtmOS z#oOiPes_745mDl#JWfePo!PVms)XOgS?fo9kLRm+jZX6{`z{i?{%YoGegJMecI*v@hm5kFpy_v zzsc-2cfsTJarR*#GaX#eO~F<+0aL=GeD{&U_bdLmyQ|n9s!*ld@p663vjVqFXMGIU zmc!%o@xJRONkfl+2sYGf7fd_};2q|w80PZKr}X-IKASM1TO!Zs<8^!c9xGXy(b4`~ z_4qs-8_I~0;WBXa(rID(tL;`I+3Ecz$zoJ&#Y`~FTaCeW)e`A-|GFi`Gh5sQ$6}Gg z?fvsCvoX8L{OGkXi@o4>cX_bZ(L%RV+MfM_t4a@7B36L$ep`4wV0ilY`}#)k__}&d zySi*augy|=ql|$Uy%biwz8eiZ`8E!athg`C1ImuSi1PWY+*t6K?MsVQn97V&RiVL8 ziq$&)AxG@=cz*A@w&lh7y_HhD6q;2du=~{cQ7l&{msmN7P3SvbnJa94eJ3Ecs8E8J zwyWa{y~qE%k~OE%ye@4YM57r$~Fup%6W z*m2J{rOjT+{5Fs86zk>GF7;4fh{o>^+Ivxz9``BMDP>JwP9hg?D5=+h5s%J^xtNXl znbc`NV9AHftO{Rx!NCUpvk6aHo*JU~U zKTRW_a9C5_rn4(y05sS}2vEA=2l!G#^^Efnq{m9>`BI~KaX~cLSNW56^3_!RKUl9_ z_TS;m2CkE$uGQMLjYXmY0`695v1hFJj z^$1lrRs@1p)00y$;UeznX&7JI(gBw5wOb=8#RCQhlzeUiMA(?Y+-@J&CFwPNnfiag z#ieAWwva=+%xEzYnJEGu&Faf__GplvTF$Orff$eaya{mAM|%_KN7cuL@b}5hKo7M9 z(P&pI?X<_BZ!J?UC8aCX?d9?-g#nRbT=OgBGSs`&^YhPd-_10Sjl+sn+icV_2E|1I zG?pfqS({2>r%n)GIM;BX^hyvvXpIhq3HeAjQfp0>N}#mJL_USxF4hQafNCgG8HxXj zIFByS$yJo(d@GWnqq8uEYH>yY70lHf=Lb0evVr>d54-+=Qd@JN?=z*?BUG8 zPxMu?v+%5vBeT!s3x!J7fpd?+x>w6JOqte`xv8K}gD>)k1?B64Yse7!-!o!i1@k@8 zl$S`x-s>4GZel}So#9FR(OZ?{qen;in$%nPD(Q2_!P-;dMTF-tzMD1tZq)bnQUY5iAgil5HNR+#}^ud2t z=ThC2RQS-MVNmT7^T6G~I^cV_f?Tt&Y^Lz29scq@MiXIq8SfQokVC)hT4a?uJgv&a zm$b3_MrkYIW#}MreDOXjB)Ob z3V?;0TjoFtGsDwFADiJvhHg(zY5>mL;GBABm>XaHq219zTo3SHfU_cm$231FOynvAdPMwKIyo;SB4ORetPCUbSTy=RW!W^Z3a;D?Pj(ECAs z5Ehp{eZcUKF(xiSIVNpibcxUYO1y$+@d7iq6MeQq>~g=A^GU>aOYW-3*4pdb?&qE# z9y1;59)Eg1(zy<}YX zli+BI#YZEwxqk)3wR*y{2ygSP=V@=bM8`!{!{KbnUL27?q<840io+X4GoZ;b3;5{t z<0dJh(s~$0=uK5}eb$bMCi*phQ>4)MSP_Py%kM|tNm;kiy17gU@%j=WGp`kd>xMdz zBQ~s8QxA6c zSZrX7t2$M%#`LMU{doJWY7UerEcc+Wa66k1A)OVSs!5|~cK>xdr<$uQTkL5T3<73U zo;_pLrDeqR#C5QcUPf(7AY{1`x%|a`?bLTp1AQjd0XMQo`B(*uDJgnymFS;o!C%kH zpNoq=a1_B1^Bzh0oJ^lop(p0B*|&IgKJFgG@+gja?HcP=jq+mU@elS%xS~v4zb;!~ z14M{TfP}k-ftB`WCoVmiv>!EfOJ|FMa3O}~BVi<)XE!NaJo3Ua0>5o+B~%txRNrf0 z*vrJwY!hGed+?LmiwI-iI!%nDmBb)P>j2s2mr%7@J|0}yMu4$3zYhY%Caj?VG1$zH zU7npAH=Ga@JW3CziDdEd`g64k%oNe9QI{?2yb7ixX@RST9&;9tZwtCnqm;O`FW)_3 zP-I16^Kbb@&*%r(g;PV&rEwsY$`eob3?Q(f(rx-2m`qGQS(})eLSg4DJ-4ZS7_$sk z&4-=(k1OXu8kbUWLphfF=(Brg;?2IZ{9g^_=+xQs4f%=})8C#GrEz|h5c)Z^mmWB7 zW#)BJ$plQEO}iJ0M*fw4`Bcf;C=)wgh;ijNbrfH%LUJ_bhO4S}g7W;Vnw9Ot_7!v# zyB&ODQKta5NzY!V08ql65y}yVRaia6EXx{?Kq z%4vw|hj7s%KQ{{Rbpas&prqktT8nuv{okQPVoaF#2QIb039x={JAK!b*=V&Nkg`eU z@7BnjLeSV42(Ach^gl5oVH)OV?Oa6|8>7oU;c4`lUvec_!MZm+C9XHv(GMRHCs7&5NTz$eg((rBKRSWgDF6;o`Z;|@ z;nwI9UUXST!du%?CT@Zxr=9>X{MLEn?UnUKGP@I=wPCzhJcbUfayM_5Fxsnzu|N&G z=cZ9?lDsL*jQLECafGtGc6Zi?5FDW>Nl4@=Jg1?FIhw-V@^8fUp_giJwE==4ibtiD zrf+}oMJhc^3o7+q7Kb;!TF#yOw}|L;)~|FBsdj0=PorE9*xU2&9N8MhFLRwPhyJKY z&DEMz-1LR-#}f#M@g92Q4dN5OJ8@sgyTYD4bMgKeH{|q|8lXdE4mOUIqwA}14%ZgL`{sAwin@=zDXYPm*gwZ#}8>(kZxMMIiZUzB~W`*_S z(>M=-7yQCUq)o)lZBA#9ep~I12VnA$W}i+@1H8^OmsWZ2VGp^>R7Q`YApuEi=*}Gz z$LB#v2*a=KCpoPvNT3&L^R5@vS^$_qH) z`O%1+#>LRb!Q^P(`X1I#Ed{96Dj$zC@FvGN>EHE}K%*4AmBT*Cm@*p#jH-`{EpoPU z7Dez75jYOtJ1!88-YcBjCEyD|OsH-}yt^;#0Ja>#%$(WcV;=~cFyD5o*7XAIMG4^vHpxLgniCTYeT?mS zPGzlYp+C@jl@z^olOPS0DL9TW1BLOM>G`;iE*2p~KWhi6!Ecv+c1;s77U1Ga4QY2* zn|@aUfTxJ9M?T?C7R`P54{N8WYmtm_*VG)0Kl!XCL)3aiMPVm?wYxM?MNJ=pFF5X4 zFn0k}zP-pMXK5(k0Za?KQ%Q$)W~Vd##UuJ_IR~aP(yTZ?4OyE$3WX>C7q z)ia~xG4MWyFyE)l|CkSBWQmMvefGsLZD(%Drj3TZW^x9N_0zw@TzdYikJRd&pxBkI zg5MLSKpMKe>qjCAd~-7I(#Jl=sFk-`5yo@YVh1>1)!U=k!GF}#P3c45(&;X%ayYD@ zNMC2{vcEXO#${CfM`rqwg<4*DxrckZxu*lYom2H6|M5Qr3pM$kMD;F5;EM)ErsXOL zL+^qLR1C0F`f9e068zDt-%Vt~PYB8@-bh{R^#J6^edE9Pg3mBf&gG=q?f1jXp2x!T zqe((%!w_IkhFygqw8g9mr-N|Zmw^siv+1<;egcuCj;+b2=VrMZ^iAzrqFdgxO3jt% z2Jp3(JP7*(3iFDS1W5pajo2#Qz(WgZfF)0^WhllSEVw2Vn255t$PiLMY~btfsVV;h zj)(wKYGIt0%s)k=1fist2j9`pyOUeGlNY1`h@xJ~B3~D@4$wr1JfcSY33V4}WT`)U z$KjIadkeECXD;k<$6Z*a>q8P^9QcsO&s!aU7=0{?ln5MHwuYsR*oy%949Fn`nE%t4 zJqb0r$m=KEi%_YfKfep^d--rVya5xni>5EnvHdBq%a_aM194tzP?{dx@q^<_r%5No zoXO?iR=}i5>*ETv~KPFTU`OCi;3@ezf#XeVrNl7QO6vP61BVO=t zB2etQX88KZZ9mY?@x_TfoEo~0l32@IWcWTFVPC%>Oqd^u!8|R)QT(2Vr4^YRx-+ZXXLg4p-OFiqfC8b!Vo83wwEADv^N@C_Mbwaf9UNo3SoperCor6!T->84Pk;b zQL=5@*0gQgwr$(CZB5&@ZQHiZ>F(`+Z+qCo%evI5@~g~@c##n=M%HfxAttRgr1Z-Zh zTBe);PaMm$Yx5`2Va$@eaSIbh3_+0`Tth@J~Q>rEIa@_M)baHdnW!|&L5{!aA&iL zt9Jw7x5WK3GFf2e?2dM#H>A{Q?xSz9p*+aJ2)-@;;7|=gJ0j+-Q^3L>AF|!KCZ|U1 zOxIM|t|1o8$P0#RVzjVo@5>mCdUW{i;b6oMUkrOc_#v{~FyQ)#PcH&iNcJ`6y>HzB znW<|kB;wSC-vOH;qA3Tlzw@I~iume4%z1=$(bbzST$YTEm=+N#OJEuNq6*r3?{A&IlL-J`cT!9N=O$hVi!1794@H2u zwF1Y2xg|recQjH3@;w&_UMWmG<WdKgnu4L6w)olc*WHv!D1h}lEhV%5@y zc%T#(=>E7gKz)VGK!#2*q%pL8q81%%2DJ|ryj0*8+}oaf`;XgE@A87QEhAK_{OgbI z9s$0oO|dfw@;Zl^PQ8U5s@d|1fbkV^VfhDgZ2&y_aqMxz)LdgfyfhfwQPSM?c@<=8 zfuG14bQi209~?f&6e0E>$ht3-W$FlyEB7q;v5Yx=bu^?JUWtPX-mvJAKBhZGFeHaM zEvZB&wxX(O(3}30R9QIKa>w&BuaVlA?3BIjGX)Yka`+sD^%ee^CHdAp@86biKajgr zl!84bGxZe%Pj#&K+yTk*y|ALEzf(~~y~qR?SL#Hx-RUnT@pd3(w)a1z7%12{tgyQM z<3lx-h_1gmQ$%)WkSJHZ3krGk=_%MZc$)o4*-62%pmISgwZ#RSK7!sB#Zjbh3e{IGsR>sm$qP{bz}993+@L!j>T7 z8Y9iQSit8YG)Q;{JUR<;kh=Q)B1@u_ZOkbUTUDVx{R&`RjfMG^KSwr+o>Z^1e~8_G zjwaGcnQXDcDghyn174T=Hq_u1k!DDN$^q+Og?v6qdbUm-&P+^0XyE?l6+=-CAU5Qq z#_u_LbXg5~QU4xw-zG{oOKAg&H!PlXa*F5)US}gh1p{kAaiI65uu`wlD$b_4MdK_4 z?WHI^1u_Wiqlqq?_jnP?!`r9*_mqj3@qcm_7QnHvDXK25kf;l!YGNG)uFEb0P4C$9guOynU@05Xk+yHN1Lk{Z|a;)Q2rrM zaWdu=ZD9!^$^w{(-YJ{6*W>j~2C=uZHzK(3o^9(NlkuEb8-QkOeJ11`*W^|eN3P=A zvD(m8FvF(Z-ZOv)mD&)3#NH6dzAi$>W8~f3enaR@G$&L=EH+5Z%8f3l5_*P zC74)f((wI(rT01=DR}C!s?N9GdIHUM;T#Zwq8vnRif&X4rb1wvL!vXR8}z4KdKKAH zf|hPiDixs=+=sz4MWkU3QAX;VZOD=D-X9YpbfFt}wJk?e6m8FLLnRy<%9y5fgh}K0 zE6z^uMuw7K`@3DNbawBR)yb=Z%*yB+27<>hyMwX|-}X`A&K?Pe!Cv|-InfN9ISES@ z)N<3Jyk%B-)big_$87-(f?TjAYB_?q8^YU-0_5lk;#&KEQ*&U|rjU(7gH3J7}L%%sPlm<`z64-%=O8f(H zfen=bMb=%1_U=xMr(@0{^u(fbmH?&PvgPxT0wRTF!aaS_mQQ3BZz06BP%{#5 zXcrSv6fZ#u>z@uoDug5a;Ya|5O3CjL;VNB5hEsXo@0d6)OME4!avX``PRn~h9iU-1 z_3RykL9_=~E*u8*dEru1DFH$eLuo`M{5;)P+LUQH0>h1wP&IUZRg+ufNi2-Vt9;__ z&I7(NZ#?~mks!SuhvA2#OW2;egwbWpR$J$kz^tq@9*%)*^-$A^nhG{pzH)g1t zG3tLzoYsAp$>#q4NX5)u~w6A1NH3M^lc&L@HX} zs|x3G_0BFvTN@{`mQJ5*YHDod0RwU~(itQnrlCc*I?kV87#baEbw%q%bhl=h0lJ2$ zmP6lPbvWtS^jd)%QXz@O=L%vqcco|`{pDd{w9>S3P!tqR_^-Xi(yF$t* zX=Ss!3_j0M$NhK!OP&LGTTaRT5f(p1h0p-s-s!-{w4#@+{zTI-6{FQYoS1N453v}U z>V5|bnZCcafr-&ZBa;bEmMxQ@vkO5SozhP!31v2a!w1#l(vJ^B$a#8TB|9BWLY?YC z3W8F^Ryagm!j(+?(NzHme-V}0=nlvxiHJ9-*<=>MY4~M&#eUyidjA2`MKpsmJc7*P zFk|GS?NQpFXb@{dlS28odBN~_(*0yuFw;HJXR;Zg2Xlnm^)*g77av+fL!?NfJKs?n+aqSpOQg{ zeKC+ZEqD)iaDSI3j~8%QX;DGe%pK*0Dg3l%nf?$epflzcor7a3dOkTyHd0`6oP zwesSsEjj@663FwVg4L5*8qOmq{6NW$*E(TTjnf)cCUQs4gTCJQ+9XAnjuJQi_{A5evi*Ea}2h*Fmzn<3p60}dlLKA(a=b`xZ7QfTFB@qdvutJNnAYlPGjY!+0{ z0J0f`m^lnFktn}Zl1M4yIUdA(DUS(V1k#bx)V@;DLClB%KNEmZfL6St2+iL58bLUQ zw4AHh0aiqdOY?i?F4Kig|P`(0gj#u%VGYkM1)wo5YJNNp*O6ifZfOR+;*e2EbOhZwjsm^XA;x%Trl4cJlR`1X z7=L(mGWFO=#o?uHxs48gK#h+~?H^l6-CwJ2yJ3pA{#He197*g~&xL8m;?3ZAI)nE7 zUu72j5+SRgrjH6MiX$@xJ|!w}Ix#?YN%nRi-JjwID|z-csn&Hsfu8vVL6Cj27eWqk zu)pZ_TO2{fC`ge&1*ah0R{(mRS*Z2e(mrI=Iq`cq_yb2~U1p9vJ8~K_)?K$!DyPy- zurHvg-|v*hMYYT>gqxiajmFAN?irn^^3cg2^yDmi=?g<}319Ri!Oy60GHV)1>)r;Jd~~ISW7OlS=@FS?b`nO zaEgteN7zSA)M0nq3q<-!!BaA$aRE0EzP{AgbF~jsgof-MWJ`Z1i%lTW2Fx=d*)e6( z$uEV>&!kX;-r)aftM_`4=OCreGWGp!F#4>p2Fdf#Ux!sjrrP7U#(jZ=SWbx&LZ%eF zKwnS6lAcwI#*8fzD$*b*su}a~}k& z7Y96AN+1ll2jE=TV__dDLHc84{*RzB`#jUks`?$VINpxJIF^MYZGjN zeb*WTtcs)YA`-o|HF@F9j14-7A5D0sOw>5i+MMWjw(bK7POgB@T0#z_um=65s61^f zgyl~qut5)-!~Ej~%Z68#y=nhKqfdD(K*%fGbGrq9?w|(h;$}$<0ZxG{EyUB((EyI1 zx^YHq+`N3#;oCNbFHnV%h|aJ=2CRKjIxew=>Lgz?i7ubXBj%!q?zi)pH;c3eI`mq3 z-3_|Ua)9sE9xO_7-P?TjM#@qC*-GJ$47>r?aFFm?y%$l{o?VZ)P1{g;1ZVtJupIDe z=qYb{=uVDK=jA+?kP{wZC!QJC33Co2q&2v$pi_Tgd5Ac|m9C*8P zquulVu&Ng*JSMCQ+oL?I$jBWOrYIiSTLBp$ff}?TLb10U9+0Q1ACjkvck2-Ws#FXL zVlDsn~`C@Q5icPBX42g#vd=c;XEqqU4W zuZC;YrfmWOkpj`WOBDqjeXJ@>(8(Fo$=bY}aKjOBiFzj5A3~HS?WXe=?+SzhV+4X} z>J92}vi3~}4*8Cj8{Md~A2k-U?gs`-!ev3blcFoA1jc>P)_zbzeB#)I5)##x1}=s_ zm>PizUB}+w>qxO# z3_)yI2m}6@Nx80a?cb(*%zDcSnIuz2Wj94DnP6V|2t@Xx3d@O^jQthC(iY`tf*}Q8 znsQ&czfd;y@$diuk^TmV48-5WJ#cj_q1!%82X-i@M%zsrxl_wdhz*LJdij(`F6L7_ z@e?iYxN~QeT{fYQ^|F^wbm;iR0i3g5gu?g3=6vJ>P8lx^rFSaFpqP&;%{&?FoM6XJ z>q*a^*FbGpW_-7>lCFAdVu52|yj)xv^4xeib+;mK%-sYTa79DtM+gfKzcc+z$I}rM zv?R;B9s-GP2ZT(%#SO4wH-)xmFVBaVg|`RN=ufDiW~dyggv4mM188Nj{-Y0#o?gX4 zg@rTqC(1}r|MC+`Utcy)t#9nz6%jVL2f8Oy;ui!SGHxKqAsSl)NdMwFz{h^f0vQ&f z{3QM8<)ftkLdfYJ-N2 z<)7dfqIb4HQW?{iR*+4i>dH8;?XJ`_Omk3LBkt&Jv60Um)#@|$-d%Q5ibU^whyh=t z-0R9CSnKt4_M>I z^u{k*tytZI5$r%6=VjiME^8t&kvNdQ47B2f8UR6d0cnC_IzDy;j5YzL^au?EmZw&< z5Y>LTR`}ovDYqXN<5E8aR}|!@c8CcZOp9m;(zyhaXoNliiG0sGH;O%H)?c_Q+O8NU zLA2M_MyaPNQW~n}La;yO=LS<0EmopIgoTkpJwTBqe1%Gj;r%8jBF+pK@ky~_tW!G? z!~TDsoT07%eHoxPkeefTp_(+aD>)QosC2m3Ep&=-~x2&OEo$oVPEA z*BeSGwX-@M`#~V^fi(b?L;&rYjR^)idiWXsW(h_shd%m1R{Y+6_jk!!oQ4Q( z5aKeXM|=9`Jpj?cNVxCJ1jNDWijcbRokC;^qE`%o(XaMLP;^cuvi>ZkO_ISBMz0uQ z`yiiwPjReF%>+mWsIw{Xb_kMfVyqLzTzIFLztleM;1);~`6ou-JB`S=txXD13g$*} zPm!M%ejq_3TT8E#j~ryTI3Gx+49(}1OWj;ytC+u8fwERK-_T={2S}9JWK>4RCw*8SC|M8&upa3d z9ElM5IbbWI^oX#7k&Ty#{d5Gmdn_glE8gQ+DNsvwE?l0dHhZJ)VWQrsDTdn+0`$wC z_|NWUX>q(+#y9MEU1A+WZLCJ9L*oQc>*m#YFJf@YzILAz{(z)jsIt0Xgl^=k^eM~< z0{7r~&LZX@$F_cK7fP|Y@dN`Drkgo{(%-sh#=@`2V*OA|K->YM;SPxLVocx(yy@t^ zE}8+K6!P}Dxd(!@d_!a%z<#z~a%EU9T_qqVHjDg)`%GX1scQ&|{ZIKc^VSh}j@Vz> zXAt5g1PBL4fbxT2Nkzb{YQ;t{qH#kckl-c~nKhH#3}%acz;swJn*Uj=-W+rtLyN8n zo-}6j+5rjtxR5qzSuc;s zhyiGD)EbMA_ToxqdsGCWKn}+ucN};EBB3Vy5Rw`g3~vkYrEH!?V2ftyA0VY>O+;Xe zxP7Soe`Js|3ZZD($`}le4psMrMs;2cD}S92lx>3yfn@;ss@68*77EaD8|r2DTw^h0 zTjziS6~$?c>2+A)k6{ytv{I-WC{}P7y~O}Ngjdu1ajt*!L{5Mvu7V(ZG7so0M8n0( zFiyF6DQMq;wc0RL`_F@ojAOF+a5#gj75dB9)@aEZ3{-*O#s{mHpa>fTR9PceBB;f_ zka6>?kkwyM1F;(>)L|7kygTAp5idInkN~xUif$kFK;4FTphn?>8m^Wub1nt^E>TN= z6OPC2`k?Nh?8g){z*RIOzc7u%0^l$`VgL9MDd1;OyhtdTwE zHltrZG7`K#XYtR29Ua3q*ec0QNh1EmahNg8eK-`R6wgVQ8s*n0eS1=zZM7?~ir@ORm$yNwpVSGnYs^_^fZCSF6FNs`+1 zV)QK78uGC2fnX3;l?qWed9uL?I0U~n1=95vU{zyAD5Ihyg5=v|J23^ibhAW}^bRwG z8#0sqD(c|0ns_+5!Ut@DYO~M(m%NP-C#G7TFKRjiYQG!@MMFar_4ptA6X&Q^zt!UxC)Bu|TQ$mI}_kos1CfMS9b5+RwUG4LaJy#a1@zM4DS zz5<}NXIg;ug;LOhCemp4NrX@@khvRjE&*SrvXwAD-O>C|_<~vFr-QLnPwp(q-pT^Z&^Z#ctShTo1Y`K~BGT(%pI`0t6~kv60v z?Z9R%eeYir-wqvzyy%1Ce+oSJSl!9nFBt%I%<;BbkNDH@vjUe6Q3xwH1|-M5qW$*& z*q65^{M2iKt%2Y_?(uRw28z{jE5GqgvlH}^-e|BfldoCPlsw_i`dzQa3)H|wEbyej zWOy0Fh%f!~Ri@WCFR4XF124ID^9H%EJ@C_rURqtx5ps7L#;~&xGZ|dSU|FNeVq<(9 z>b@Ll<|Cq`!F$Qiq@ChK?yQ)krpP)cz=ME-1K{WK}EL`Gw-q&cOci;}x z%m(zhKk3sa1Sk;qz!6=9gJ^Jb-#0l56>5T)8M)d%axLJFbIcg)b9ds^*c|z4((1nPt-4Tcns>LqQ50X1#O*inm98h?Z z4aCrol07P+Hyjg?RSku~sTgbhg5Wg7Xn4+BG!c49&#Qe^%N(?7I#EJe#*;duh@Cv_ z$0_*jqKqz}6i3yN1rga*m)s-J2SEE%2?}9s-cNwT z4ukjv*?ZNG*t`$^i;l#-xt75vBY1WDFR*;B4sb!wq0`i!6!)P$RpzNHGL)1VfV7kX zg-^^#-HqK;bJfOlnSo^`k*?%iG2S_5CghS=umwEaP^)nK6eW8Itr` zIO3q}m2Dhjx-kI=i=pQzdP<`NRkPjLvEBx0B)=>sxHMc~LKU5(#&64Z$<($dy>?O# zqRC#r!RrFMBqd>aE>0%f6Pj6%lqVS4mLd~ zD`ErJtCzR|&u8Dhx4Dcb$v+r&hdS@V<*@`ydehfmJ+FEy8Q(I!1%5AA>x(5=pph4V zPoMtNA2Qu>c>t{DXH&!gxOE0fu6G!93QW)^ZHoOPG~1y1NnoZ#lTfTS20nc=S{Th- zm75s6e;Xb{ZG}znTXg~Yd+g3n{COI(VWW1+Q+@+<>RV-29bIf7y%EkM!qeaJueb%!ptB1dcegkfKyt;Qm*GFyyyOZ{u2gaM3%k`y(#DK$A zz(Asz*BAUL(VJoT6&8@2$A(<|LqE5kpP6d)rMc+hz=|PQV42WpQj5l^^DbghsLjk^c?2^jmxx@GN;LGgIOK2n7UxkhcA;eu6v3%P-HJA z|0cpn?H!1Yc2D?kOPL3M7S#KPL(^tbFUV&uG7sqc;Sx{yvbZPQ?6rA~BF+x`it>H; zYBm!eEQh*PcYZk>?tGb|R@^dJ?VEXkikM}9m<)A*{Lk-``nNED3+K1+e~ak1NJAEW zU0f9(6)G{mgr;H%eY3F0ulGW<+enH)NGJ=7R7U ze2)%Bqwzc6B9=kn$CE2Do^%38BpUBI2nWo#N8Y9v?yr+emqZFQR|ji8r*4kG%~>vRwJ-|_D?oP9=_s?uh5<9G zU0Z3(P=h;UraB#j+ajz&jZ%L9-X`k#bEtzNW*KN}Sr5TCI!`&-Dp3Bt*&S4s7L?&g zZP~2&V?m#rQ!E5~&POADx=~60O^B}%Eynii+3D>1*c{?&?UY5$n?e)Tyd5da_yn>}uVGyJFypajly^$IQ~@h?>}%35PiWUtjovxt(1OLVW*QL{*AgA5_N z9+RnFY7->TfmNyGrOgH?fV(xp)gp`E+1ix&`jIR|S z5HdJ@B>smB*QsWcC}+Cztt+t2E)zCf<%bLN24Ii3I+BkeWu)WQ->u4KPiwaz+nlWl zwGPAiY?Z%MtEt#KBhH0e&@>1y$@O&O0AD-e8dJ3S$aV09d;c2S={eff1?6TPtjIfE zu!d&KZmQ)C=h{oA%V(nZv7Kc*O8&Z;A|^dk7^|3pVi{*;o#wPS;cz={q=LgqBvGN= zJ$eB}zl_@Ul4m)T@zLLw?C|H%lx6^?E<>B8b(+7T7w4#t0G!s*JYEQ$gK;b&3J3dW zO+*&P@qnlljKd}26wKp>$PCPasUNjBt1*iSar*PK+sovIW5?%TLmc96?+-Jy6lnWT zr*1E;2R^wb6uY@UesV7w^i>!L;#pjr&*8WYPhnNPBZ%E-M0RR0W6SptJ_N}_Qd(Wqke|@rx z$J60s5WK{h0{DQxFEE%PP3eI?7 zC-ziSQT*T@bQ-ky{wWW6JiZq0ssyc5F$#V6bmU^|Z3W-!_EJ2}{Tp8Tf&RZnOCN+p z*l;2M0RJWc0f_%Uqow~f&ayXfbTV=LwOYFNv2xmCZ8&@V2X)i-;_0l)1(1hTHDav*{(KvTo9U$sD|Sx=*XN~^ssB^225~I(myYr>cp55DS~7U5F=XHIlrBr zHq7|(=Fn5KO8WW6AemNKP*wO=McLpo&HHdVNFhPDNJ;ZBXr5ErNMwND*ko#wt)e%L zI7F!8N8{b#}=#W&HO)xzi7Vf?~9by($jS?$23TZh5DAX7<$bz1GRqe2ReE{4v< zq5t8@Of^#_pPoyrRAWGLKCb-3^5dSmCY|~pB`uvb!X;;lk@?PaWLL#uSL$t+nMS_m zFw@HsH|-%N!C%hk1IyHsAN6YW_dApN0M#zkb?TT#Gfb@pxVKYk*#+-;HS5$N7iwr+ z(c+h@O5ri?en|G{oq82*)vNVVOs!?+PLD2QW=_A|3zHY3+Vz6y`iV`V>B|=Q$u?d+ zQ}QdNYpTa(H9b;mJcYr-qIBGfMt5ezH)hUgbvR`(c6LvlqpQ2hvUe7qf1l%(X-H@D z678noab;`f%$`wwh3r6L6VMID z(OZ(<1NcC{6Ka+fhd&B&7_ZhRfFn9)PkDc0!C9H&`IZIzXM{!m7?XZ=Rk_duB+>d( zCZLnHvR(n#@0=S*RyxXYWJKm#Xhykoc355ZNw%`LWw=lrt{W8OjggAEn{)Z&8}NdS zu1V5xrA}QQD!x*z+@gsYFi3qG*(g*KQHP2*TLkirRNP{sZ zUVvb5xlN2YNHg~m2Wp+L`qm73;?|i7EY7a*oliZ zYnjckhguKN3dPDtCqX--PP6MR?x$^S=(r#-rS`DE;vH4|&_D4+gKp&sJd)YZiwsO+ zltIaeL*2^G1rkZ8*R^R{Pe_0Q!t!UU9RC1HUU+3!?O_9N1Umh@ z@W6L-na@}xXtzj@%F#L+IT@i(+^yO?(wO4DO<~@Og@-~+f!92RR9an6qPRy2`olQM z?lENzXhdbP@`-6JIIh))o5b<7rGLHu1S=~DJ~ZvPSw-k^My4tV0A@@u^&!jZ;?AL1 z4iKYR*0C>E3|rfCaI>c~%63Q$oHI$8quVMOHbjjmm1$5nvV*t-SS9iLfp3V=shv)7 zP{+O~>$j?TQr(D1Ry4?;`nGtb zv-8FNabLi2vhnFaJEaNQPrEh9mDy_*pujVL%Tq6zl^sWber z!Q7$Py=6)<)4*i6+}nd(cuo*4R$^guol6-Zg4dkIw!-NvDgoLPc393R*Q8JfqM>MF zj)kj+(WBM1Q&FgdN0PK&Y2iy{L;miiD~}paVYsG-b@%Q@?oUW zD;%(&A{1ZEDR~YjRJ6S0fg*XnL7p9zp0A1q1eB_B6j>C9Kpf^1c3{&i1e8hZ05E^e zkXoN(M-?rwHr^`lu#&*u^$u!-uG)6~xe2!6$m2w2S#o$@=FQgU6f}raGu%GCRvZzZ zYI`hm{%dJ^WpI8zYG{n}Z84e_SusOV9akdVx3O%KR+aEu9GUU@1(2KkLijM7$})o3 z^Jh|JfR?ApTJV-=E7@*jE?WtH82#*e@2lJqV4StDGKy}T6`m~0d4SjORgG=mYyXkX z`SG`8F!(MmaB$XCr9!5d8Oebr2Ts96OrLxaAS!!ZG`_*iAjp7g+XNf6(>9qsPwk`0 zwl4qa+k7kiY)OE*HGS_eSy%TtSevWC4lA`AyxL}4pb#MVjyg}5b_^Fcy{QHzZ^*n| zu;Ps;yiBb`^uZg@06wjm$1(CAm18i$fdi-b4}bGqf8C*0l--8pAuH#t-TVpAwyG{l z=%&wR1Wn&VQ<9<*=E{+P7FUi+1Mcz2$RdwdOehplFl#mTT%Ds~GNbW8($s?hKBq$5fvlwS%oH&Wuh_OY+<5xG`I~#Y#b&c|=N6i#|`< z|4NrS>3K2ppi-_?SW>%6?PREW)CsEzMbw3CkJRP2cF1U?VjR#1;8ZHF<$7P59vP?_ ze4&Wrxh4e={4upEBJ}9#Hqc<*C)YGCS95mv{nf3LxU<*f#tfzpkGIz)j4R<=0`288 z?1&s+oq_P88`noSnzE}ynIoiIHEFA{Q1%K4sn}| z6V@&Qpp(lQdvGg5xB;e5#3x2_R4v*(y-ic$AYB}iPW4eoz1P5XetEjWH3d3h9|Ag5 zna^wcs32Bn@f|t%-x3hasoyY0bjECfPasGn*@9{yjOIl~;AbVTWM^EWn6<+`c|x3Z zqZY!HPPLzf#W7|9(a1ELp(7{apZCF?2g$+tw`no*3+YG!+0dBuVX5{3Z6xU^LL?Z7 zdB;HR`_xMX%t3{U@Nj(WZM-D+y(m;hHcEBjpF-dS2nZ`x;mP26%NL=Ziwcqzn&vw^*r_vU!}Hl* z)#d_50ejiLa{xg`lm(C(>X;Hx{-OK6zd1frvpMZ$kET6`5DhqZnF6fRj*klBB+#Or zAN6_{z#7U_LvLxzsGFiS)<68>^TUXSs{X5BG>%4eB<}Rg5Ip-rJnyfGRo+J(lgs;< z_|+6@(lfm9cHr?ipn%oJ)}X8LQti$xIdfngIvTAG^E0xDQYoEUqsmWZm3|lrH4xQ$ zcYyyiKt1iUYpGgNsTnKNrKvwB@eJFkEE|p^9|s#RgBg3AV#h_ zPN~wsfmYbN+rMj?!6>W9kAa($ug)JbJehP-T&lVV{XVcB2aUlynaU7>#Ao?mbASLNma0)VTijV4PO1bh2a#^2;W9-{+7U zVDkRd=-WDVSjlb8DBwsvo9^u*kuKnDjiH;_l4jiMBfB`t$ufZNCx?$~lGUjnKZmKG z&t@T*IF;`^3a>hGIYeCwYVSf&y_|cl61uvsQMpGKjcLuBBXs{f#+`A3@YUP`AaAP? zUeDeqBL}s%^MfkVyohec|I)_Rkqrvx?N0o?dz0vf|GyWyt8( zF=-T&d|P>uyMr{Hcd-IRxdh1a#oVRa(?*5Flh?0AeT+?38UUGyq_217ZGT(UyHOO@ zi#*Eeq4QAW?jDkdQ;O`ef#wwjuSzldkw|KWp{C$q__fD+R zII(UrxkyQu*<*uS%Vg2hRX3pj+ zJ}|9>jqVt`&>J_;AE?NLZZgI+AeQAeF+^kV5f{rW|6@_(!zHaUC zAnoR@a;Txy0~bhL|GMKJTY?tK{4};EAcuS>k?B2TadPyy1C8!jE0P}uKcN|lgX6!h zU88({?DXfMgMZ9S5;E+ECIRh(xyu3mvH=sUZDVYNU39ITA)HMEK(IunaYB4sLcr8G zlo5#ULIl=L;r$I9zI1{o_GGn8f=?-=brfl)`sLF@{~B@Mau#){F~TUX6i0ew}FJ^v>KNG@YQ zq9nb!F3Kh`dB|vneU%&}_s|XdTETqkmD#LD{_hew)nujhG1iXs=LIe!>i)b+yyf2| zBotQM{X7t?qq<&(hr$w%iRrzhq`{ory?%yZgNR0zT7i5*b=o`p(*P;yAK1*@P2SFq zh1iW}70;3fq}k)7bs$gWf`Ew57eg<+aU!upyUfq6=`m{y_pas{-S(%41?alz(Uc3V zN?+;Iu5sepuuY#Z8wH-nrXYbMIfQ1{qRTTE@MNy}Bq!ERf+>I5grWiaXmW(QpX$b7 zaFFaI9&KtiF?Xmi7A76_p*>PBoJkj#GKAH?`Ef!FQL##{Y^+zQma&MwxwRZ`UwCl6=SoV!%VI@|Be$f@5SMs(IeK1i-t@?4eYyV*!f`MCDl6)qKD^hL z6bM9+6<}u@g=J7(A6xUGn<*7C%7RFS0b}5z36XK_@%_$s?Kso(@k@a)bY@7j!?b>E z8L)FP0t6JuKl+Y*zgJ#poa8!0S=WS~PzwpHm||}fgitl==?|-hm%6CYpj92e6%5zx z6eGkXcXI6?{AtpL?-E6eW+)^(@h#RTl!_TFcEb?G^||2?zS*PCOxy_cldkkPa?Qsd z@k}xuxU-PfwTQ$&`RM(np;wgpfi%Yc8nH7wKOc_%S?8v7e#VR&LJ&Jr#rV5OB@odQ zcjGk^Pyd7!*(a*+=QdoZ!1mxFV5TobRoVV{XjjVqz4muVyj zm|Re*`2d!Q$sTr21q} zR9(h|RYHs#4A>U*Na+FRp66lARNq&h`)OJQ8`5@2$S5+siN3aBWbAOkKO7K{_e;Sn0Jbgr2~QdO{PiOqg7;sZ-FzGlI9uA)_*H1Y@cWg$AHG?VEHT*`DX zG?Ox4+PR4c1!^{ZWGMNQVOt9%v;kkvIHVBXvfX#D?&F1ZK9Rkh3}8+Xw|^Q%Fm; zi+)g_-q*k56}-Jc;n4b{5QOgIAUcz_+$6z?86UyfTea#^3{z{U@jBQ{z&?ZHpBJzw z;ZaSDK(yd>1J{b8Km(;{8-;*uIr%|BKrpdWonSHPdnuBTO^76yX;E1gW-{I=qltFOdbgKEj(k2dlC!f%ulF5+=Ur>>*YS7IC;ZK})38M} z+3U^lxQRCEBj?10FyQ_3lP`)IcB((lLuuJF_!)q*PPymAMLW107{kJlwP zj9i+a;iXZ!Yi9S~fejB5{|sy+rKooiBXO#^1;B$*@;F z;;cJ^EAcWeq;gf8vo*n}&&hyD%@V7A`Gd&$&Me9!%Z>u(mgz({*>GTMxQ zD?rLXurKnZ(xuf5$rd-H{^TB0H`8~@0PAi@mZw*{LFCOzJ4qX1xhmJMv~S{uXZxfN0KSiF!Ci1l++?DjiUS>= zbrE=A1CMXuB4i0;|0zvK+r_p}@|o;v_$hMQAuI>sNm|!gs42`a9bgx^NoUbD_BJT)oqP<-090!5F?vaund(ta-v4za~Omya+%}s@b z^KmZX--g>=pxRms-EXTl-CdXQ1QXNq)(F>q;xdb`q5yRnYGVI38ZGfb0(f_n*P}*+( z!}V~UgwLe1k#{YT-(5q&{*^41jk>>OHIPBixsyB!vKp*{$L@#F`8-u9rGDp>mCdF& z?e<}wPX=4=FZufzi6MTnvqG9i1gN(oNm&&>hT-yOmg=PXo%xE+O;%QYM-lfs9NtOP z^e)^Z=S>=%62V#_Xxk3_@f+9=vFH8=>cG=#C5=F~y|$zdzc=Vdjd62&ulmODKFMW_ zeHe`k5qhJL`C#5#Y5@u~4udiJw&ajXWGV{|atmjD#kN?39_q%~!ONbWJ1=%VK=q#Y z?_VfJwvG;087_05ttO9hf8pmOt2Mi(-&Fry+=x6-MsuXf=r>X5!KU7a`g@GyS~tva ze>c#V(2|p{kypyh@~`8CtQ!iB=o_B7J85SW5fTMmfa7-1q=p4KA!s%(I zpi#HajxC760O?934OQ;olZz@YFhU`aqK8-AB#o7B=c#7ke`6*2!{h`mCvT(e&@9?KI0@YH=~X{uqf> z4#W9z@WAEz#C3e6(#RGmYJuB+2rKIZTf3WfCwKWlyKRE=)wYX-Oq5}X5C{TL0ZoRK z9%L+^J@i&QN)@Ux8@~2RQe%5OpXl%}qqC@X%?n$1(SB;}?tN3Ty{8Atl?hSG(V?=z z-yqA2xC$^>9MmMz6bo+5L?)RnkSQv3;WwI=Fd+^-3@72b+CVxK4Ft10ly=Fa<<(#clpZn5jZ z-PxDr8gXl~X+CJ&R_+of2aWu0>kCNQn?hFuPmIB?Ji`09GlF67-+!VZjC^#7N(xn6^gnc+L$EMBkZ3QyYumPM+qP}n zwr$(CZQHhOy?^ShW-(c$QduWe>F)G7Y19a@5cGpbZ*scb>B?6qLlrTsA|47dIr!(A z#Y8WY#}&i7M>M3L^Wq|;&UufhV?{1JdEYBOfkbp-O!->u=tgMU0QE5%NKAycEiPy{ zf?BRvEW;?Tj~cczaSdM|zqcWmF z)P`eD>m~8^)^78jwWBz+<1bk4qM#{eYo&1O{SGR--y&qCJ8af|yRk2gO1xe|8*s4&;hI7=-Hy82)qD(L_nHiqhNa zOo$IPfjy;Ic?O*nU?pY!u}vkx>KaU>IBIoQg2glaC8Zr?{>sypx2~a8zGUrWkG+@z zLhc^olI~W`D|iA~b$628u4U!#9PQ?y$bB&nT=>(xrR_5z#D89S?s z`nK7S&2O4MOD+Y=lVLHelj?VY7#teeZNrw*e)`a+0`?sjTRDPhJDzLl_P34!S; z&uDryPZ=RU^lk*dsrlZoHpN-Q^;)G!(COTdN>n1yLUajNk@7jSvcoXr7P8YRMZ+Bo zumd6a!&y=Gv4KH*_zw%cd`6?IJa=`9oa=_cv71)9_w>q_*zC(1`q(eB8=>(1Ev+b>;><{KBXvGl*3`tW|Y=pF%yKL;07C5V-hw ze;(nKzjGIo4&(58!dSR==m`jSfQ1qJ?NKg;V;+I{M~lu{%8Bpb7m=pc9x8TaRUN8E z6y#c|^LChN+F)lPC*|zQ}Xs4YASwktO zwzgoamEldk+AO9uLFZjX=T=S`T~fFL5^~ClWP~Llo5ABsS+Kz*q8r+z*Yr1lCZidm zr8{7j$6h0ean&T*9va`%j@(HNto*ih^uqn|MbHmV;8Dbwl4<(__wJD)Rvhv049=v1 zpE!s)1T9RrffGh&-3Bd>W_5X73tye;B7?nHh|JH;)T(tGpmr12&TXE0)EGJ$7%?7? zONO&ERbdNmg2i9CUOzr$Dm`~Zh_VJ6*3;j8S?pz714!mLsfZGs?t6ebs}(6IyY9YZ zOR!cpZ8T|HUNbH-y>6O7AAb{Kx6)v~wNny7f>ba`>juk~gSQeVZ6?b)^K(a%@6eiP zwG`w-ezJJnjoOY6K4@{2A0r(no~n3W>d`|-^V@CYfDCU&&I$(e5MEgIlyNVEA9#ITk<0zwYLXtLl1|;5edl~*nqoD z#I!YhQAmf1_zL-xh-XY$nmlIWw2m=PH}A+iW?9PpqZ^?b0lv;iFsh79uzvOlx^Zv< z0DO>$F|}rt&AS|O?5-}W=e(qDtz7*YM&k`kd)zQ*0K~=8+g5f>*ol_7>=nRp2iw+? zkNnecQ$p^YbqI(;4tvJS2v<0#b%A|5Oy*F?AjS*6^LZj&7anppL`khlqJlk!t_4Y_ z)Jz6wSUGM3>&`?P}Xg}(0Y*w@zu=)x2d>~%NEEyF_)3)D&2)!&5g*W`^bME^ELNH4}emR zSi*_VX>!qzeVtx`;tHN7+mr__{bE=xWrNzMXBhZ7))Zl_}%wpxb-9D<=rGa$0fX?NAlCZqg#$ zW@B^MV`wwg?kk@O7HmQ@)gi7d+Y!xlEA`Yd?_Vau{JKyX0kdX+;$PQ8y&i>@NGjKd zW1rk2OxvAo6i(E-x9n4n!8{a%D{wfc<2<BWn= z6qE=GCCZe>O!f*0iA!q+*&4X?=RSWJ6D?wkv&oJA>ww&9zC$hDFUL_GPx7>a6{(g- zLhBZ)jef0u6E_0m@>ewd7|(rQ2m_wer3G?zW#^M!hh)XbM0n~J1_j#y8w(&~fu+Ny z{zE_reSO#SWdV#c#6{F+(8qFzx=>#I)c;It(R0m*M$oCJTQvW=g66rqf)Vk539fq^ z7(ZlM^?(Ci3)e$!VwdtOwW1+%syQMS5SmiKVU*}D=Ai)!q%%hxiRBvbx z-noyCCHEIDTVUdRJG?7`YTZFLQ3QnXYA9x>)R6fdd~+~x)XAgECX z8ZkQT1f&Bo+hypq!q7k+v_qz^;Xb35{ZEhClo~~{@6Hz7I?o3B=+bTFWa=ej>8H7- zL7#)l0N7&y1HcT7cFP9hXS%E}b8f zNj5EcbK61KnT)fn`pBl7u9LMPZ`Hj@SRjR$rm5TVL?OvmhtLqM2K4<|cf$1b_fb=3 z4pX4}?+h+4ER`doKvY(qkRIMY>FU1k%_1G zM3Dwi+W%^is*Y?Z+1$+1`iGr=(Zr{13ejr#)QW z2n}^Igjh&+U0SLm=Uv~U+kzhAx?@)fTrI!iTwZ19`C`htBh_~QDBF2>eIi}Y)d3$_#p>Y?$=4f40d{u{p^K$MBOh4gHEV4C4(AOO@0MzuXRujrTZrF9<@vpjHykkovu5{pJwY^2JGHmS91U^{rA;rjU@^13 z?ZPbUB4Rh+3zq`>T@&Q~Cn&D5_&W-9KopNeYwKME%;4cQN0hl%NA5Bbp)gemBv)LAu@(%e0BzT!dqNhdwhV91b$ zvXD|QzzqvBAncE(i$#pzSr&M=LfjW@)tPfGbRd8GJmypDKA$SC3|+9=(RNFy04_iRNAXICoLVKDd)-m7})BRs)O`s6WL9)*xH! zN~#^KOgqj+L0VngbZb65uom#v!sr%5(Oe2P@g{<)IiHej9d|+{t{T{}(Omshe9(@Y zM?DOlUn0u&acF1Y%GLe)sJF(Hk!`bIn3MFTb#o^ErWp(H)BXnyhP|8`Uw3h0iyn6I zGH71CkSJHz6q#Pi28E5sbv|#kLRAOxPd9;a2z@#>d5m|a(Pc1})4hqme-*mVJWum(q<;c+K1{=dZ&I__w@gE>?zySZHNBX;6vfF2(xU#ZQ%hD6p4-@eUeg7s*NipwDSh8BTYc#I3xHP)J8{@8&PX%@)giPh z2mo{p_*m(;%iTIhJ~OJKzIlc){<^3mml6%Ak5fKoEn%Bdym_i8cZGetpOcy3fCpAr zK`MW8>AvG?e^_MaX@fv~cBIV{sUD*;w;Ir&sorUu75(nD!rN*K`_n>7*!%4d8z=ER z0u#59u|D76e=$s{A);wTVTIEvt=y*$yujqAlnNhH|%;zhf~ zC|u5+#YT1y-2wdvlEOVnsm1ORSN*-TZnm2aV4zQ&YG!||JffloZ8r^y(Km^@Nhy4C z0%g|5E&Sit{bpeuL1{{>kFO`);gtI%2y^C;bpbKiC?p8>Axl%Lyh!Hd|E!w`w& zv#Nvl{s20z|7N27Ro}n8{K2_~z<${hE3dhl|gc*rwl8o zx!)EWNT)<`H#BV+ucb*@r5_TsMuPA7lfah3gb)Fl^Mei>Y7(@;Anae)C4d}MQGA&D zDJn7)!H_iry$S6ZvW$z6Ak@fsxP>)$7)hy&)_@)CA;C#i8*{X zdXTUD7dZ8;_qAY(i9{EK1HK^oOJ)z}CTM==Q*tZFHuT}g-Z|AP_K!$DuI6?g*E)w; z;Y*e@hekD?rY2UTc>C57xcalJqrYNXs2Z z(#Ela&KqsUQ$xL_vfK@}U6&%Rk7iSWR~<#IKHepsAZJ3O#I4x|!pnc?R>8VA8ph+E zFz{Q?$CuXVvm}glfAahPs_5KaH59b-2PaG#Rw~Qe`LK2^1Ik=1fNF}LYM!-+`ekqP zj*{mbNE8UUn(4khBEfQxi$Px0X=U>R((KfMMU@MaRN%-;L!3wTdp~p!SEkF{=Vyi~ zPmdh^vq#PmT_-YQe{C#_`Ua*Hz(L$UI_!9VO?~*2`mJnLP)1d3G&ZhamyTRFt=ud8 zea3yn8ta!cX1vcjZw5CC_&yZHi}--}K&)VxnL8BO=h>^u7zjP|pmI(xlq$amVAQhb zH7qylxz*mGIA|YNa!~5eA6sUcI6m1SWcqHf2N&>RFJzy~SXseFmT%+TUbiKt{cM6_9Au}9JNoljQAd>L6PwX;ZeCu={lKEf+d|F0{rGfVuYvJ z4?<56-%hmIo98MR+5lm)(oC<{N{e8B1f?F(H+wNmv{J27)3-2NB^ZUWBp(k}v50^bI`#Jrf)iO%DP#x`-M zYV8{=ubuF@H6JF@fVwR0|17rvZbc#ctbF9lY~reVopMrB=&V7s_}V{XIW}%#fx0UD zu-JHon~lfbw1k*p;Fl4Z4hzV|c^N4NdMCcd+lQMGsWigmu#|F`Ef(;MO|I{D|8U@e zw%zKz9MbRa-6_SSxMJnUll5V~8 z+p=P#{k*lwiw(36j7#p9#V@ z?|SXHt+nieX{PDMr>XGahD~9(ozo|!1cIqy@)6iP@!&q@AqS&$nrIYDHVLAODQi2Z z7wU_0@1KpTaJC0*eu^TxrWiRPs2a5$2lUh?Z2??pln2JxQgu`qW!{npPV!5XWTeLT zoX9@YUE~#fi1(Mi|b{k#(3``4jrgMPx0nBh3TA+s$78%Sx-n{4KEto$Jyv5`A*3ga*5F-tg$p7ubP^HZRd z=cS7(HK?VR`-nQjjl35ZHh;?b=n5H8E!X;bOXSt}VeD=>YO83oNbEUE=lat_q@O1w z@5JmGw!j8tHJr+#lH%{ps^XXXPszJ?23^HbDnaQuaG?o~?sAvY1>@PKGxq-Lx@qeiU0U z({N^;g{0niS%#KhAeb$KIGxR7rJ2lGmx1|0B8$W7m?k@cmx{1GDp#M5P6=1%Bv0cH2ZWdvnLl6vGJlMm;+u&Me z+@_0(?S}ir30FI-6oTqKx{5;aiu41SsX7OfbBJ3@?JSgI^c*+REPdIW`G?KA|42#t zX(8Ozk{3xW$#t=Xea{g+hNv$AR2C$nrk%UY9kI8F!0mgVug|qk{V5Xoihk>uoF4n% z7Tp;}YdJAs+56fG)|az)xJ|>%CCNEDO4Ogm zURa(Hnp3fr%S<*ioC`Ydkj$XDteH#CNrwQNbm{Kw21$57NtD@{>*j>NuEY9a87E}> z7uCtYmY7p^ir=sA1dYJ@<*U~?t?Xy5ozcTqaP3dF&$d(SMoRJyfjQ?K9Sc_S($S}D z4j5J~7`9^C(LgNNctF`Gm*G#RT+GFBa6X?B!trL%u;r2uwX zANezN#9*u4I`fv4rMuRxN|;;2+MA_T&}oaZf>aHu0=}*uqzqb;kN4oN$(dleemN^= zkE%tJ%z`v13MHeK@inTQ>&4?9I0Ni!VX1_}+7zK!B@YuUZQT-n@-%8o_MZ0VBQG z=iuAPy$Br|FL)RDpRqW{;-AMb3CX~A;VFo(mlS+3ex{B&R`?U&sz6#aZ74t`?r zf6AmMk*#$*qMjuRw-Twa_sE$0Hce|v2XydN)22W>Va>M>-mC_aG|O&i1N}?G^bLzK zGdRNO-S!c*&2-nKjot#whU**0gf_UN@%)WR*FV-3z zg}c{WYE5s`0D?`eqz7-#pdVxyTvbC`T}%N|`9|J(#A9$Ov2uk+-ccBON0gM0=iTf1 zD?OZXCnE*N4%ODQe))s{cx*Nc=SsDG3(u7A%gKXKwq3=Q5c#N+27*A#X-8i{95^|yFlZcMFqvz zjn>)&wE@wlU9mHLtr2s#W*tG7 zn;gKncv8dO<%$O+8adgob#al)h?K!wr5w+fd2IDSy9^n!N-~)uyVHXW9m#GTqFL>V z=G+}ERu@iMCZW^*EQl{d_(YR46lDX7i!{qJ4oX{1M}+*}HkM^<*z3+)EV5ypwf2~O zjlBFQ&bUrpC@cL{X3qZUiWi(MVnPtqm8!Ei$qYj#2sfs!G14|q+r!5l$Pe2li92Rj zXX~FXr^Xz{M|CGJtgUt|!>{TvU)>5**COu_QSJ&Y$SNRXy6MC=E8x zJ3O+Zdq#bIR=>5?SU{yhW$IAnCbISa`UCL^-uRe+MuQr}jhThug=I67mqC zZZ{g;Q>=jFo?NBGu;)feVCx$rvPNPVM^!l)E4Q9KW~H;aaFqqTM#J!Rjb%%7cpHi7S$_F{VwY5UkKN- zjJLs#3ZiCQHKjf4<~Nf@aXm|a{JiAAII(f&mJmMp5(KH?aJ0Ysv;5MY5sG4dB%GA`fUbfW)>7CPx%Yv6+!B3Pr6!YJGW^~O+ zBZc6iUn6v*Mqov6T{-|^GAnL3HiKR^G(CO4o}LPgF9^x*dbW+iN|SO7X;K`fKY8e) z@-VLNUf!LZL!mFJb>{gr7`omqbe4y=iS4+c<|NrO8M@g*zGR61kr2S97pFbLbtn@b zFm8t*h*aJGF^vkH;LZQxE&lbvf;s)dth_V*{AqpmLHCyJmOl5HydUh57g1_x9zdY} zLX7J?`CXy^%|sD|AI*{;n>12FIGlV&&+9Gxr8=aB2nFRtvsPBpLhW+BQ}yht9oNpi z^Htfq--L=~VaGVh@PxXUY5>=X#R`l&Jl?se^!=A=t;eS~FnLRDnmp7Hdg_ZltkyN& zTH&DlcmD?W?8XL}$vNMyc|&p4_1RMq@dj0{qPOp)x5KS7%94emp`fVq`yHG+bV&lLl1R>WC?6wFC>;o z;_Qi~I?&lcHapy(`-Dz!G7V6^(zJ#8C?$BY*Bj-n0SdMxR3`0n(Z8Q-k1T)>?UU1kR|mdCSULh`4;Bgrxo>~i%LMhV``1a2;Okk*n4Rk zZ}oggejnPinOzJCl}U`+vzaJY#2$IXm;;Wxtq;BDc(lKeS0r=ks6sz?b^u>i9kvNncp*Tk1}#T z)Tm~bKEI^RyqsX;JrIATJr`;_iu1U6jwV1w1j+`3swB^cVwx99H$`WiIX`)qm?90w zPiJ#^ml}%`6Ry>k1W$-1l>gI~8JB`}r#xt-*IBDvcz3#zt!pRSW#R#ss`*@VR%wNz z*R@MU1e>AfmLXGvg@@pTnjxQeegsI{{d6qxyF^ej%v=q7I&gb@#|?U@4)bp)q3)x# zvp%NBmhuDErf|HMsZB8I848_}9<$Q|>@6;~7Y8~Bws7a8D(zgEp%`XN`ceqC{;}%@ z_5G=sGPf#9C<6$8{j`7+Cjh{!cUlnJz5{fO!5+HN&9k*O1?aF_@W)@S`(vgd)coi=R<)$hc>DkOKJJMeVISkDjFgmkPJ zQmE7g3LZ+5d{t4G2(zOBf|D^Y#4Yz{4M zK5uGZ?S4=3@{+g-svkR=qP~U5*f|F)9OK>VjggL_PRMCmWY`uND>^M)L4FB;E*>RX zDqgkfSJhXJSaUr$ykcP4b&jk;WlfJefZ^|pW?$1uv<>&@!l8ddmOjU{0r^jNC#<^p=ZAqwq2 zG-~#mw5Yx?;?!PfBQ@6tvN)f*k$UQ)P-cLv6*kLI;QM3U3U?!9*@;Nt)KZ1btWoO% zKIVH`&lfcNtHRCp_G#QEly>Zsa9V`r=J9WLsQs}HDi(YjHZMy(!xSI7SWz8~acUO&Hna}tMH#b8^4 zet#H-39>o#w9UfE%P!x(k$(*M)^=qaH-0FdfV*tI;ts>pAEW^hcD@WksZ>5nG zA;BE`aE+L-gNKLzCIwODy~$1DJ&;VCZ<$i{(gly)*~cU%5S&@-lOZ^lLY3!Mjh-V+ zzcyZ6@6+5PL)LZy{@G^mA0>b54SPkW2(_wY8&!CV!w9MPwN1bo-u~PeL7C1TC><$I zuX&hiIZb6HzT_!OeWkR9c?mjoZLKAXDkNon?~-6b)`F4i=^3R7GW3Ki2aEBO?`)Ve z+vI9>P259=!X-`S?NcpycI*AY_;|J1uTSjn1$cPZ%=k z>;~|n{%ge|#S~MIv9I+Og|m7O&*gQM$%Xq?C=MOj0+D48N4rVVxsM2+9yL6)6DuIp zqI<$~&xE30=k?084K3Y6t3?^EPKryuYJMhtaEukR6m+_I@=6#Im?JtTe-s=@c^$3I z2Mbn&5sNP8m@zEwOe`5nvD_hgs-6ojNp3CyZMtvR=xl?64S7wFV`Y%YyNvv^B8%+v z{SWxz91w@_5jBOSKJ7XZE1G@fj}Ol#n=N*pd~%949vFOdguu}Ng_<&(@@Z}+0#Ea% z*o!05_g(3bg77NTn2Yq@#W});M?aj*M6#=Mi}@=aP~xWW^yXdsioDPt($hw>=KX3h z>P{)JJF{Rej5nVvJ+YF03-YW0QmnGPQ}99z}dvz z#`=F)Dq1%Gu~ZU&YxM?j>?WBSh?9oY&R5%})+%cx8@)U#WO9nn`4O8(*)kVkD74%p ze!l?akovnNTob!?=&C5+0Ag-M--1Brv17YtK4&{RE^tG`V%j?#P~G0HX7=wp_2}?G z9fW?A%5=K*o}*qamp#;JGF_-_Q=?zmmDI2vzMrA>` zoaj~=pWt0jEezQ;KxJX!Os3=t6?Wv{WAlnl$?;mgi-+Yc4I+WX1uop{vt4PWu;*}(`Vf>lY0GlrR5(Z3-c`^S$N91y1_ z!i{d^kp(g^xJWcWXNiTbaFwN<1o3`@3u1YoH_CApEkhzCisMVcrIM@-M6xYwITo-r z6Y?zC2qm+~=`|Ikv!|)ul1qjeB9Ij@#auH8GkGY#7gox_TkJ6m%b9B#(XdaO6w*IN z%)>$e0z^nj)CC76Y&lTar-^Bd#IaH{kIg8&O*5*>#!ofbqs+(mrz5em3+XRGWE3>n zz@=3&WF-}fZ7n(GC3)1gBzV|UXJu@Qo!C=9M?aSHkjC1u8?UpN2wsp5(esw#1B5yv zRV%^_8PUN+bLgd$q@l<{P)X^POpgfZm7q)|^-D8eIEpA3ubf1cj6G$Rs?o75)dpon z!%bY_OoP?`vpHiBq-qQ^3Q|A8RQ~@ZA7N}R&y$P4M)=5#U{kw>c+w{J6nGxB1P$00 zQxiujLuPVD5Q9-P`={}gx^1wSi&LwybE8RxMl!WbxDlC*1QnB+VCu*)!&NR)C%5%C=!TQfP+=bs6?l0QyEm{6R+u37NWM*NbByNn8E#KPlTLk}~TF8{6Y# ztd5D8?)i?)G-eA6*!4glYU@N~WPJl*YV!U;P<46#5SX%jdq^x<2{nEWIx#j$y*)G% z6XlDnuR`d2T~Je+$>8Or4pliICgde~!_Z?Am%z~3p~M42nhXv#smZ)WQi+U3`PjEJaLi-;EgoauKVGj|KR#z?{1z;(xc0~8Bo9*@zSia70| z!wwLK%7?^9;}%9(kJ?NfUvp&>CSqCZ;0%OWbMd+^>(qUBCz|WCa6#6|1f=%PgsV_o z$QUdG04{^_n{zAWR!V4*T--?S9dH+-RhT17<#<(#!$^w7^)*++n%QPPi$bi7)+9xL z3zKX8zNt9jtqDb%>=X1!7)%pZR!SJbk|Rn522YYDiNlm;`;rRUVpR4Nv(&~%#KZHV z#i~*CdIEL;4{j$ zK@Ny4&8aGKf~vtb>_iGiBsB@fl9kGFM-v*gVwD)%>7EburODLIphqGmp`!rSGE6Ps z^TMgJGoU?_&*Qh9WcC!^51&o6UbeO0Vh+`^@Dqi6TzXm58uh-N`>!n#p*d_t@_Z9h z6;9Jux;&QWYNt%2S@AxNy%ngJ>%v@3cOtxyR$Lu#&;I)xgR`ZJi>)Olar*!eEflgM zOlB4{H}N!W^SY{dTfQx1%<845#&{h??c)?s*HMiXVYUa!$3OL4g7dT(YYAv=BI`W*^=r` zY4n{O>VsyFEvO%;)@KhoTI*uEIA-je*3Dlal^Ak>r zQ?QsDvnv&w{$*$cW_!=>)EGuhmiAX$;0g~nkYMuEo}un?7dKKcbJ3EiJq;JD%GRE~ zqRvgMY@15`w?tj(#-9rD=qJ~%EU%se`OsE(hkER&=S4eq61cBaMZa2{WGX>f;pwGt zlF}??tbd6ttE!C-z5!HR1XMIN?Mw3z42gmWyQTRU5M`sxv(?)OcL}->t-#{^pz=Jd zL2TkwK|~l^R!8A^RkP-{Fri`G~$Y+4$IXd`ll`krrjlXh~Y2$kNEjHg>ckBjf5wp%5>vca{9~t$?;conM18F<@8D7>|4KMT!ej zZ#h*}sy9B`oP$zh<2L(-w8V}a{Zt?|VrG35*DE3KX<+2tDe2|yJdQ+mE=vnlI{9xt zo>PQA!l42oJ-b_tT6tFVvvR+*);U{iN=ibT-9sI^`82Q()pBS&bTgDony#p0F@emM zd=*Y)60s%b=-!r-%O2v3Nyt`^QJ`V{xgX|UtbVjA>O0;JcjB1%F{CKXnur>^I8pgh z@>JFNL(c}~nDV)n1{2H$~&3vS-UAC~upeHTlh zxRZ4iZk1QJ(?kriW9nM0dO3}yLueag0Hp?b_p6 zu{(W#^4OR2dw^@Fhv`%K0$aCs7s5%Lb3N6^iMEu)_3O^mdywEueJq=<{3wSTsap(} z+$FL%wG{mN#v9MI?#7CU@ppGDsf|7Gw#c)Ss#Ite>(-M3Rz`|4e0d;i{f>WKsa<~K zx?C#@7x8jITe`bTy_FkVh2OISbX5N1gEHMz;_TyXH*Ul5-wD7JOXE(@6T1JPu#cndU5QL-&9y0kV;(i|81NV}S9KiRqH=JZ^bC=x^AVR`_cJAQ2X z^*r<@y@KiFURel>_}{1EJ}qAoD3p#Bh}50Q!;_Pg z>c?4GJ-zIoi_6Q$>&wfqzxK}0hwICR*yBE7md>g%)?Ux+!z!?~r!%wndjT$IAhcu( zOt(l@K+sIlg;}ApAW1X@F^IVnrm#=&aWj{7nqRaY8_%0QjPo1sm5z$O6=Xm?WgAQ5cQH$w!evf6~clBrDBN>#HDc!p&S9mjE2VmvBB)QE%*=M z0geEof$4RHLgNqlBZ0ADmDvjh8|2#a?EwJq>V;WUJ4LTswh*OcRFtm&YivUBidnb9 z<6rd!pR6b%tp&yuSZ4{*A-c{StQ9&BhH%M8GGycgvDBAWdR&Gu1qO9dM3MqjWrC)+ z9?m4muOFeGmcaR{J|%E5ly4j)P#uy2suguyfk~~g-4_Xphv>u9P*GA{0m2!q1N4Qt zx3WKH&ULHWUkHA3_Gfm|VL%$o#(*Lv0NI7%d}jY83wlIAB0fAn1SS;1>AL0z{Ynw5ig*;37pF zV8)&CL9F?ZxwNDO z=z^DzNzEW4<2pwHh5#)Q-~QHE`AdeyHswJG0){xuT+wckEMltDJE@$5ASzsrw=+WX z>73Bb1+q|^1x4G*DS3iRZYq=#m;t2v6__J#K7|PCfSlCAVkh;*EH0SyusE;{wV)tS z6_-;VCS?7Y^|4f0-KsgPr;q`%zdC)%DJ?W<4?Vk2EKj~Y-*Hq)Ek^fLy(yi-UZTQDFQzlga9Kav+nW2^p0Pep?G4#dFYw zRM#T<+69BnebiBYUlHp8aiDsJHgE3~$9*&jT9pia6nR|KDSWD_H*1|;qp;wZ*J&LJ z``jFW@hl$!DH`-H|3*5da6TIf6%T%i-ddXPcx?4Dk7AWx4l6O6 zHTR`Oj$dueS|ydO%J+0Ad7l0BvkCnfFl@_`#YvtTHoie>{*jeAt)$CF!}ToPr+A`i zMYTnx6iKt!({t?n`N?(N#gE-Rq%>*K85cJ#6-^N7>_{0R)q7$wci@D6MXlBGdB5BL z4)E#O?e^w&)qY{tcK@Obl((T?+5|G|n|-=4;B*^f?&+7)hrPV7v#2CZzovC+AI^U@ zhx~%Lj=|7x+L%a-A)Zd~w1JW8!pP0el0q_>T;00?c=>0=@C@!$s{yA?cKeVWX~HZ@ z`cd&_3WiHSmM4k$rmKlfqP-AKF4Psa&MO3hnWxu$bK}e90(1c$(UcAv7U^Qh9cVWB z%G0Ht#H7oaHpKxw*SKT94t(6ENS}WjrDKl(FG&h#({Ssu`z3tzI2`-3g}r_1WfnqIo$-Zrtv z|LW#G*WZ1oW$r6Ao^+HKW0lPjm0gmpu4 zxrXgsVE;W@eitM&^fVE>^-&KcC&U$4kTS;eLhT^*!O}$uWraF90?fxo8(Pyu(|8}O z(epfpZd(h~^tCi^Ww~u_{_#ZjS>*9TjFjE2F+{v2__df#mcACigBrqgqHbgJY4VY{BFcfR@-2jxC)Tw48AGR=GKMRL^N0im4f(Wlgx{bsW51uCZUX`FD+T2Xy)11E}W( z9?8P5QoSry3{k@NVQVhjfu{s>KHq!gZA|XOtjlhTmCfFXg4z4iDTjH~+$}%#MnVx`r6`^z(ni%d_7^qq;CE%0!8+q`f_Saix>|iab|MWOeya z&=*fM>Y21=kq}Q*CYN+XP}|soW|F3lb5Tf+Z#q<=B^JrS8zs#Fs7Ymryf%^9htBf#X3CRhlDJkF zjW}Vb*uobA*cbJxy?XdUhj5jJS`21^CyO%#WMZ^=z9#PyQMB)?zDX(VEsP7nI~!N* zt))Ca2)})S%aVs?sxWzH<;lDgrrNXvxkSDD%RboZ5-7viL4_mdYvda(VHtP>n9u6G zxv2^3NBNkj#bE&^9yV21WQ5VuqJ?_0yh1qnRKbU&(1k)&xYBWK16UKP`rrJo%5h5h zmsvkV6@!AtvsW`&4Y+14|l1~B57yINN zuc_HD7H_vPxPD%c2LFu_)!m6HX9#mk3i=l-AI}(b%OBcrzRwRx;bo8S3|l@HJLvN3 zC@UZ1t^Dlvit_6$DohALv#q`C_Kx!F$yUOwc9Ru% z+bwz7?I;)ZrCp}rI~P-gOP)AW z0Q0wrAbXxgMzQ^(q{*9vzcMEI)-(!kGi|R`@c%9sX_p`O_2!x`~6@P>Oo~?A?r8ixgCIZUiYKSYINJdLmA! zH^xPlonvo^JqS^1rn+;=2XXS4=1){+s?OGg=EaCr$XUWYyd9uEcpKWGwi4nNZhxZ=STAzuyLNDICcQry`G&(;+Dyb6sp)Q}c1>R& zm=j6vyYk8-C`iW0^?w^ba{Tg8_}@FXdnKw46J9-1n>S(F#{^CmGqM?@_Xza(sN!tW zAfe=8Rm=yO^<>~eejaDV7pr=YB+-vyB~Ckt@Ce}Re8dR-=xs9mERIk_6{~RGj`UhD z<$SVrq#QLrxW=*bDMuG=Hr!{1xcvulTBB|Ra$U#qR`_{qzut~;dfR-LCXzx}LV)?M zEyzjvG!7w(HKP(1kg<*jYN^JUDd8(jG;Wr}`}}lljt4W(2VYRV9aIl z;C_V1lGt;SB;A}dGPdms|BtX!G4TfL8AC#l2=2N;*U#hU22V5ip6wwbpAH29 zzWmsX9ahFb_DXI5`T0S_F*V`M5ZhJE!S*!l(HvI zzRTrIKF!*#4Re8aJL9-Nnpj*HBC0Q}iwYF~)Fz&l^b(O{76q|4$P@w~LrU_D3afH! z;~PL#(L@ObBRVitrm;@N2D(EBHnegFvAcX0>lnn9Q%K_I?l+($$edXi=BvrHZCq2x zY}9!KCYN=^ILawN;)ka^C$I-!oKn^%&guNYYJ(D9sG$|8cjsGn(%jiV*7?p8MOJm9 zrW1pdTy}0eGeYyM&;n<;yutr!)Pw9bp!}k7R$2f3((Y?ID?E2wQsbQ_Ftf~)BjXNb zeTKsT0~9ZGC14ynjWa!je=DDw{5wxX{9H}Zq7c+a3{95B`qgcU zyGSphb}k^u+(QujUsYOG(elBHWiR!v z&V;s-jBA~;ZQN`S)Z9$X(=Vm&CFr1Vv9S;L3rnB4S`pPjl={W_V0NixgBV;Q7DT7w zDa?ngnDcnDix!&L<{}A2|1n~!^31_wuZl@O#p$?{wX>M%+{>xcioGD7DCnwz+Hid`B0v#toq?&F(k1d8OL; zmzXOu$?3no_MiHUSQ?Yui=oPehRA+RzP~hqSxS&Z7|%=;=auRP!~V^Ohyx+!h?Dr# zr;1tRPVb*xJ-eOYZCjUfK#r6r6!#PSKC;}0KmW`{5`{)nkzDWJB=}(yt~O)>19cWy zWJU097i+OL=Arycmo?P2im=Y!s1;Ph5`bFDW$5Mnf@QP10~$*XCo7zuGr!ZQ!aOc+XhST4Yh`7>|cXvpJel6;9A&9D1rdXk7+S~*{ z;}gxIwdY5~)``OKTauqqN_Z&cri!27dd>y+`?bQ(HoW1#6u$Mc7@Rx>+LGaF5#E)KBBCBBF4HsB~O@7O^?x#ta_cD|4^i9o73R zm3P|=EO7g%suX`ZxrY#>(SbKC*LF@>zG;(3g3xLuC&SU0BPgcSd~^n_ZwtZG$%g{T zn`z+jJ}~G4-&-Ygvt!2Db7jjzC+eEz8bk{c;(Lmt znmjQcGNh>VP!rF(ZTuO^5B|kE@z6I!b&NDTc`Z>8ohEeEDW77~R4CBL2oK}0I#|vM zX*(K#iO5~9Mqjq(7A>5gO5bk_Q;L3=8V_j#skT1^1E}->DQ9NDX|C`hcmFFP4oX?h ze)ZPOknI*=I8)7^no3yB%XIZKs6)N zicoj9D%?6(y`VMu8>hlK&4T5dlu%m&`V6#Yr@FOMZD|QF9PmI3%I6Cz7IrcTOE0*4 zcBqL?$y&QnP5$0>&== zOL_%2{YUgPB1tMN{I+hzK&l>wyaj1}1ro#IMQkjS;>FbPv@8dE1xEGE1=GeSSo%f-v-fDH}vH%Zwx?Qk*m0_|tz z3tBDXCcyI|UrTTKPqiRE@0H)T_v^?pupavxrOGJik1sKFA4}h)qEJ!!`zJ~LZ@K>L7_m1~ zw`7ePH&T*iFS)k<6kQ=+$wZOy$2n*HgFtEy#kfhJPLQCeD!ZLil0k1<%A)8 zu^elvU1>~-su0wz_MF9uI2^ z$rFS!?-O3I0VTrLvE(5aCk?);)oW}#tnUaHxYTPQ2HH9leJ}cUS;_;aHmi)kgAX8x zlh$(xg(toKlPx~f9pK5(Pc-&R8I0$Xv;z#6cqY0i_DwF%KS`^@ry zU;0>XFvGK?(T18tE)>HE6(_#6(=<#;mxVZQiaRnnz450-P`+tGI?p7_8(jSr1d%lo zy`mtVrMY)1e629X`3^<`Iaf2~3U+8O+NHaLfy?Jbkc(x%a{S}UFR3YjWES;(gK_Mo zMn<@o+haxULEx`iwg?qf{K1*EV{GyC!xQj!?0@&~^t}Jk_Q&T^4dXa~@c7>q$-q_V z-?KMPW$F&{E)$vRV6D7sEiSSuv=tl*}KIA2qE;KeM22flGQ( zX0?*}>=R1lcdlJIBP+wKw2SPiZsAfPe%&b`%Rsk&b6!fYR}|Wek@h20dy2r1Z7oXI zfA3z`6bMzvnXOg$g~t=avq(mhx0p3{Zpe`VEHDydw`&u~(S#~5OH4wPOM}N%$2IN3 zYd9WC%+C>qyKt(Iz;;8-QWNF$i5aF}rkMDV{}|FIf*|6U4IqC5`?pg#A|h2Yhg%I7 z$S?*M2<@a+f;8|SXZ6gT^DtsGSNAClCnO`7EAvP;8AKuDc2=jAo-Uf{l-^-Nfx2 zt+D?Vji3~b>c5_AtZ03@$)apOCsO_l(lIoMmX?Z(G+>inV7qLmtid7;Fgf@7!oueV ziFcH;j?Zacx*gcb@d_e!UFZ?`LZUrxrJke`HZ9*J-5(A+dFC-$+F;Dk5c|noknN>b z;ifV}U+tL-~U-Fuex0pSiIS-aKm>30m zrJ7i~kOhCV!)AWn7Mw1#PO9opOR$n2qqBRsU-;Bl|Lr0>_CXaMv~+_nPD;RE0ey>H zn%LI$xp3cU@WYV}|3Zl_F!9<*tyk z&L)`g(z@QhPCJ=S>8t$J! zzHY+AIqc)S_}@VZh8Bp|L=LnV{0_011Yom%`)8eY@dlMw4&|x@f&kp?BdRIXHviK{ zJEOx5kV}%r8C-6=dMyt6_hfOeXP!U+h-VUEw5n}pCcIIF`W6ui^Uz9sh>GS<$z$bU z=qm~gYs#(TLjqY}(p_uO5vZFf;C^61`!59^7v97i*mcx5a)`ro{Tj`v1B{VQfuoy< zMbqW{jSQ8QYtsDTY~7}taW;!f{c-eJY`E>sV<1Mxf^}}od?a^-Q=C;)b+%jwQENW_ zqZYdH@tFx=iHcpVzVH|`4b`SJwr^kgM0Y53I9?97vt(E~qopH0X}3JVuus;4${}Y8 zf`%422~v@hWaBP45PCVcEl0y#hr9UY^SbP05Bh+C4y4v}4{Ql7Z#!lBhkELM>?%4m z*)3L1ar3UI-`!1QHN6i1xwHhe3f-Yy=QzZO$?at< ziNK^XJNyew)wt; zMc(=K2ph4GzGU!>BjZMVzg|Eg?@T9B5H3F5-3;z!_3B9K`#wo<2baxk(z{6aq|oc z1{CP^F@4a*JsT2wLd)XBPH=i7@35}Ym3r~_e+fuE1jG}l#;o-dP6j|DHRABqtf!$~ zdzIqnWQSm1^K2@is#_-ho4F;OWQ`d^%=XycR*YvEjyx=T;?fS#O7E8>-XTe=jx>u3 z9|UuSH_hcCwSA3mnIX1TxIknQBYiQh$M>@diBv3VIO#u!*-vpspLA)JF`G90ue4{c z760XTi*^80`zC`5@7Zk@EoNNF%oEfVqZ&3}UZDejWu(~=(h{ZR78PdwqNcq0-K5}_ zete19!UdLiptJ8W{w>j^{Zq!k*NGw#!_dF%-?fY*54Rqf5PwFVP3ENXsRji)?)w<> z`b)eco9K(`-`+O#Lqs_5Jzjzx>$ZJOAwM=god>V-3Bm~q#z>4O{&?m;C;e5jNH7HVd zGmJF{j)<@I2l3Q+7e=l6-v|t#J^;<1DZ}utpDXUW!zlqGCt)icrela?S?dkKkIYQ^ z@J$jDDXy}as~3kAkEKhJit#L)+HAU6TryOQ>(QKGtAoFa@K*6N@lN-3$JQoT`*p|m>W}WJ4V^D7X}>!^%b}_K z-ra~F486Wnv42On5x0XP|-qaIreIOrJTOOw+BR$_>H3;b)FYU4)_tf+nBwYtL z;b)L4h~suN$eS3@u(*ad%ASKo&F13qIZ2%rs^w|}9hO}NRGS`6WX9>2ABx4{1(Id22;_s6)F zG0+O0^&%BoPRST$)wJ#;za-Zg9nNZH$8U%G%P))Tri#V? zDXY9+r+R~H5Va2}F^G5pHik-M*(^)ihaWHaLx{!jK9~Tz`FXGO=1L}Vc%fE;f+NfZ5|P4**V0|Vx6RdosAUs8W~Q9ZfiZZ&}C9xLwyCqsKiFzr$%vL@4 zgh!<8;u{*%eWhEfy~m6#l=1-`+-u$hj;L<)l!|N&aS(h>e{Rpw8}GmJ(DZFN5wj?w z`d!FjbHyS%P3M=p_25G90>DdR0RE5G?tj)y)fM=$pX*S(d|ahui2Ktw(tgLWP)-g8 zS&1fX!+Y^T+)IK?ew!hY5nKv1YJOq-8RqeBl?-FZnE*ib#jC(@vGbU;5Pi6OMD^Mq z-P=tYa(yJDH^XZ!zidw}c?}x7puy+vW~T?BjkOCV|50;5ebko^sU;|14#Dxh9p4I! zQ1cN6n4@);+s9kt)?a;oz&Yrs944%i_Ei;YV|VqJ&5fyw7s^DT@w-9v&_MLXR}spa ztQkdgX_lC1e9)qm+->V{*pCHG;05LInGELrQ?B^U<<{{Q>J3@1*7bMczefFd>0E3O z>Uq^o+z&6nd-=TnCsce8=e&LJkgjj>up@jsT(p(goreO^-ChZE^*5*Teh}y;-6U&+Le_I zev~d5C{v!(t8|frS-F48xX0J_T*NC^|B_p@t2ulUCME}-TgwckERaDaw2l2n+q8Pn ziFmbdTEhFiCN}#1L<=M!WQe5kOBbUtU8o^A09g2lT)a7W{c*bwO%~InXBIVWY8azO z2Cjr5!6;1N4#qwonHfozg>9TQ876B==VaXwa-oR899*Qygt$vy(xN9b#?85`O@{~D z7b!DA>`JSeDs^e6HXFvOjtBp{yOLuUjd0hW)=gM1lYX{!Q42Xj%2Y>qC8$rxN)a`k zG)kg0lgyrDAKgO-U+>g!)Ga%h#7T?+u8Fgnj(QqP^%N`Xt`4P;R#o?Tj$fT@sr5}0 zx8Lq!yfm_#B5Q`Rmb$f@9hK3z%oI&W>xo6P%1x9?5qzaEd0n2DJ`dBEYt)ild{%*z z**nsqzsUZd$Od5P+2G>C!IhFMnu)ef$;?a3ap)znKdq;&lxLqwx;sj<*%uuaxiiXg zrBo$pMb4aZ-^z)ar_>D0d#XASHrbo%7Jg69e%G)DQrLuw)i@jgimEJ65J3Gg;HDCvRw+;ov^g1rtdU^Q@YaHn}gY(vd5x zA1_4mk!x&}8?p;Do6M>dl#J~JZ|%FBQF|ijpDu3>(j;kVbHzNm^=`YgXe`p_AH3FW zO4xJVB{~UqMeyA9JLU)>>E(kQ`NlwH12Yi|#HyJNFiNR{3i|r!*v!G-(~u6E zac)Y-3T$cM^NA>aI)KxSp-IUP#6+n?$9SjnHFxTtosN9oS`gebi;tTv25aQUKGH{O z8*z4w6(AdB&cDFx*!)Wnstr!$eje+nJrK*ee6-7=>$S2jtm}(|zaLglpRF zG+Y}2cf?3Cz7u0%b~Dt`ikKTD^lV~p+^Mci?T&~jNQT~pEyN|pL7SULx<%FWJ)lqc z1M(O8?AH<0ZdcCsoa#;wK3;YNE-*1~X8+tDsmfS0$dKH^?OvF6MgMPBJ3ea9I3GE| zda8gFo1sv4dQ}VsWY{knUWFu^FlcBCq^@@PfCuKU%}KGCACABR*+2Ux1k0FsP&hbO z41b(>4s@8rQF*7{vo8%`T;*~(aNf&Q!>?zhM9!d|I}gA>6|@4Vp;sjPWH+a_rCNws z_spqCd^gT1)JQGY!7E4w_=P$N+yn|+D07MC;$ysS5=%>)6~>&z z4Lh$^&eH0;Q173CAtb>D+8iA)6-k5*?h40mED+l5^_(NM4wKxL$Ku%8CJ!h?4|Il# z|KVd5Et9yt)poD$WXvme8HzTdvD9zq2K2+Cx7LoLqvN9O*(w~R8^|j}Rq@%3enUDp zig*w1Jr{Z}gu6t85`5-4S#d+)S@f=%=hE~L@(Snn39WE-%CV)TKU6U!>A0)dk_$+B zou|Q*!=;1f7EumbZtZL5`5h3Md-+^^^KATu0-uKc*qN*0%7n0i#$>uMdSrJu#Lql| zyYh<&M;nd>#tb70hQaT8lo)%FtguoWL6qx_0V-?0 zqYhRYx9Kr)c=eX)x`^o}Q;;{tAPaI)KUnkVsp3bfo)iK2)uLs>7Nz*t)XilrQ=(s~ zVOkEB!>FdEk;QQBU03>lAD%iZHICXNODTxPU26UHy+t`n;xgyXD31=IQB&ATz8db< zM7H9MXf(=Jb?}Zszlb@AUhgZ;sx??lOZIh5tczc^@xc1#QOP~o48#XO9%j?1;y>%q z9NKvrXdHkYb&Um0YJyFoyh|v(^<7gT4nB|@6J*1v);~@ch+ad10DOcZh~Ec^@Df#s`ThVwxk+!r0c&3f1=vPdP`Ml$vbF#xEbNc-)g4}CrUkzdTET`Q| z;+r3ZesX2siMPHO5|591R}36V{oN3+BYMJZ+i!YThB#Nd3Qz*E*kLcZk;b%NI)_DM zgAH-awq1pfcTY;0pX{7bElp!kWPiO^Hq*YT|FCU`_haUK!)+i-F@uzBdR5K zPR}6-Y+pXrYHEM6kG+~k1?!YFX&WH-(aCQS!rcpOn$U8)9gwnEREQ*rHSt#j0CVd#Z+TjNJ2yfDa54v6B!{MKv|CZ-g9bOcJXPE8Y-J|n*#f}eq zqjRo8t01vc9Fi)`dGRBE*k2jG9jGdT202@EOXKonM(#5&a7O89&=fk+V zNPbGle^{Px!P_QCB`boobhNE?tVhgfQ{ajGF+RekPCoQ0(7yFGaZJAW*$$28f^N$^ zMy`6K*2k#0Af|f8zepJ=g+{#1kOTW~qEo{vP zMilw?cP@Zx=#uO|N z=kv&)VDUlpa{_rg;RqSiHOx}w840^ z%g$5yN3h`5rqga|t#@3nmxxt@zM!kGler3BM$W61g+m%vrBl2nGg?- z6bJS=WHOvha)Ih!Q)N#-}8ulbzJs7Zc4;!(){^< z;s)Q7*ni&jZ<@s)L15jAOGAthv9}I%bwrU6s#YeoN3ylOWxc+`-xoNXxPl+$lBmwG zzlvxed`huY$>v>AD;YdLf4&t4bp1Lyy#t;PE+=xX;J=Jl8~`x%6-nI;mQN|;9XX#E zdwV;+9|z2UeO*0;U>gXgco`Fj&H|DN?C)PquwsEcs34%gIq<=1>`C^FByCzt%^L#9 zg@fJa=fk6l0zrMh?)QVsY#Mgr?};@)!289DM<)dENDRBvcl_9qliMTn@$lARpV_}t z|Lf}l8V_c9niU}GTZaQg$F~!5Y|qax*+2o2y*{n*0Q3#mKX~}+-3|t@&|`P^Fbeo0_s!BVD3Vnyzgo@;ck3j z(}{+D*|PidyuA>HPHltmrz3#$LmKpX{(P-%7zf}rh-pY(Le&?a{@%w*sFhX6{>r<5 zd#H7mS5Pc+%eMYvCj+XaAd*ms=YR-NAZr4<1S8k1DSri1_E>u!-P_d5LTlpB)-YMG z{e{F2Z@86whF(B#ROQ3#X~^z@RXMZT6$D(FFOmG`syqeP zEI9qI?cnd+T1x>Eiw$4q5rX1QiXXJE*WlD7n6Xq3*DbalGu{iiuFWN9X875KOE_$LPN zk0;j;9Fh+}4D#iPPVdMv4l= zS6k`|o|tOX3b-Fih7kB4=)yS=p(0v9FXDv=Kvat7EbqMNhWGO${s|U@pP_5`y7P2e zrVwc)dHr)(%@3YKSBnkL7`cCX-?0NaRkf#9fT4fpFa8^2g~b~dtTQB(p0F3^t20IH zZ==Eu9GIFF%!vcCet$uvT7G!(0|MCa0s09baL@x4uTFj29up-;KW~=R51Z|rD&1+8 zFiF6zGL}NFk%hJ9|A?{+Xm|m=kyIV;P1g+_{cCOkYd1M1=sp*bj({B*tQbkSz#PeI zCcCNj9g6(T^0a_F;!d6TM=^Ua=p76bUxAaOp#u_g0XjifXeQ#r1jCqdR;Y%4f9nB4 z2!(B(k&npFncrnXLrPrx22`${r%1eC=(L#$C5XO8HH$e{K&!pG-_mxLyV2U-9^%a zCp%mUTP9;=A%ppBL4vvH>kf12rbL(HXeJb4SD}x?Qq9wo`b-6l9ekcXZH(k)Y4Bd0 zRDYR0^1U;pEQeQ#_o+w{6dOVKh3FrF(1<(U5sZ@Vve@xk*8>b+@BsodDQA8Ur10~J z<3AW+7w;r0+Og%lQTIRe|MXrcnVNdyjM42+{Er5?vxpj!{c$hsV|g}@lq(Pp`PDdK zhW2z;~6r&yYS}ypcwcTDErV&WN z!_?L1L(1_;Lja=Y1a*9^xDfEcBr(vR>pSWdroey9|65~Irgr%Y|6gh%hynEf*4SJf zY|QNczs7d0=i{=?+5Qhu09IyUZDms>@6nOaDo-7CZDpRrzTN53vhn=3OhM69E|o@d zU1`_mu}r+iOC9s1JFM7jz*-r0|6M9!$pm=W2i1!kCFye>wrD(Ahd!=0^1bH#~apd1y=U&z=E{=QKL11APE z$woj$tz$4jfHy@~P(V=aT|xd={lD`i@)^h|N9W#@d1Che68r-}h94rv;YNuuQ6rHw zxWSPJEx3w@38UP300M_uX$0bXx&ZRn?vf%*NKp2%i-%j-_aP6v!e2$jRKBdD!L8y- z9`g1yXgQGm;11~drMSvej`m_j^(P=(dXvIVR&xl1k^1mFiQLfyWfRPYPmG(zJnG|paWXY7fg zx9`O5xY-UfTTK4CL6S(se@YML5@8G74hzWf8EZVG~)2A+zQ!-o^(upp788N@V|!n4d68=h_>C1@yb61_7t{M2eh&=)!E+@yX&z(E~IvRUe2+tlJZ zJ#;mYsA|-q3o{o9S0ot3RZe|}etP-==$OLXDih$mRs}|HOlsQaw8r#b@e+ci=Rto` zz&2sVf2=}*IkD8y+uiJYg?=szcDjV9;Lo@+7*R+TKeZk^{}k6lQVY!H&Z0?$GvY4jrULpLVo03m|fv{g}x@5$O2pMf(k-EY9K3Al|ApI)GEK_Z}zheZ#loJvbnsg0j9FI0&?q@tLW6gMOLG3*cCC~ZIF`~s{K9bjZ`}<@4^NIf_cxteU zMj}`Y*6%KAF>Qqf*8o5N0Chku{5QqitxKFun1qZ;6Gkh$VtDmRgqCD~FVTE5f5 z>$ZNagdM$qU>w$6_V=qCp`L1}LY_qlc|UVfp95bU0fr?R==T!(3h&L1z>d~)B^_=3 zRWv;wGe(t%j3rX1_ZZ0J$g*OI`rWf!B zWeP(f5LP+p*15^BKyElCGD8zGQs6sT2;W4ZuXQ+gjy%j*SkOTM9%W0sF}HtNG(BPg zb3(%++iCMO_r?tN#ZWH@#ABXQ==BSHaS)wA7^O33Q0~Da{BuW23c@=-l{G|Zy8Ohf z$(*cYP_vWa@knXGubxCxvE_FrsUW5QVlM}zBeXHIMLduE_9TjKyIw)9o&~lkIb2Z=U2LBT49u+!F?ouub^B>6y1atc*7) z25qO&-a*ldGQzTR9HIb{1(8E#blxzT(V3tqv3x&>rMgz>z30y;WEbrO3yG(jHnF@y zWIVNWD5~Yy>{fULsxwHqp)Q;u8vs$k`P+*w;Me&lE@WNDqyCp@5-2?PIGf%#BtN(# zh=N*fMUA>n?j%3_*iP649>vR~lXsGA-aQ2duJXdDSkU=MC*TWv@!w`ODNDeWypfA8UcAm%ij0&{NB? zz<6@QW&1 zWsD?ItSK&+;t#@K^CFBCsg=hUFDPvk(V!d@l!Il1c%sQK6=35?UgyZ!I@X+w9R70j z%VAn>tmh$78r*+ZFeMj^RUK@p}in{&k zpex0?25zJ!zMSa1(-Xi(Wxl}Jh?SN22yihfwAsfaj&p+SJ-g~U+g$W82rMhPSG)1*(4*_n5IvMma;fJve{MUnk}LE zDM>RkC4{q(=5y=`A+j6a3(CI?@**5p0ryOa{~5T(R7hZA7A2!_q{^mTaD4mrG#fc{ z^WbY*3{PDAS!2<0%v1ww58%Z=vfVt~K#*>na8-~;)M1eLx5EZuCIVeWP{|c{Oh%X8 zq$JYHx=oh|1v(8mXT2G8`OfZ#NttdR15A~zLLWyw1&Fdu6?L^F&aTtz3M1~rLz}+= z{KrjpU7r&g&CJFFNCv3tRA1*dB1ROtaomFz?yAr5;Y!^zrD9FYUC0p2)PDvdj10YJ z#~@$6n3{%1IkzYNo5kupua__$&id9Q;Ytyq8C2mGDWUmv*{W_^peIQ23kZ%r8q8?l z1W~`E-wsj}dC1@?RQma{;c@m+Py^v_>5ez9E@jG3AI~E2huq-l`*-Y1cKMF4$P+Gt zU-@xkaZpOV%Q1Sq( zcaC9x2OX^??>~yPJ`+7`dK2<&Z(Hn^bN)0p^;Q65qGOFno&=B$_#Q+wjbt>e1+94_%QXhu zrY~oj!xivTN$x8xB`4(&gY|`uBnx*Hv5JqFiLuEyaD^rLxb~~o(Dg6&tlE<^IRD}M zl)wCd=R=Gn{@|dcdC7&T2l8QfH#r#4vI)_ zh!85sTIDFl2>6UTz%DF1YyQUh;*4z7-U^jGmKKt$6Y zbm&~iqIVLu70EHrBq=`30c@EseIC|TzR(4%El-F?s{R}qqp;x)=G0GWKZ3C{6z`33 zs~Q$axTzj!mm^=_RCk@0^^4xo+{mhStv$bD&aGO1fH6)Zju*MRonc`PgBrvAtEN zu^J-H6*W|6PH@GMO=YYmtmp8yLPj-{jhdRvp+cxIXYI>u_w$!e#+HfoZ!}^$99Zwb z--I!x_pOc6cmI7Kjw$!kkDy(42yCY2oI3X*I$#qHkWV+?PN}N#_NUn>7D`wor(T@U z;VW_a!J>7<`yHUovh8Bz)`N;_d>K6*(ZfQTh>^f{6gWCTb^6M#jTEBk_XQaLIQOt9 zrKT;sB5MkMed`LPf*Q*{-QG33nsZ=kGu9g`-8+}F>HXqA;hhw*t98frg zRaCZE)R<6tL-$zDK2Ch_k`(q+tE8za5T)3tCGq~5cRzK57VAOlSMCMhYx-|bB+Sa^ zXvkbjXW*#k>{_E!l5%pIMmSw4S&AgKH??f%v`+pcD_xw^(pjKv#p+)(NMA&B$`jVr zN8lCLV}K=0tQSQyL-I#2rg76`NgOPIjL%k68Zl;{QC3Cyr1bd@&Y8z@d|THkd9Q4` zwW|jH@!>_VyU57`Zh3wS;36W3!0W!LKn@m#7vUGc#-1NiAK%AnYSn6l@T6xu?h>@e z3IC0?;6Xuw+P6KEDfS0c={H0Vaa!f~PDi6DkCkiClsbm~QtNn!_b!zkr*rW2(M>{;w~4+U;dNq$+(>8GOyl zFr~YZ8n$}fbP-eSmXu~21Hl$O72S|74xUXPL`UF&oNPdG7 zpC)}8_ySc&;*Vj03BAcuubu$#;^u%p*CG5i;JptBM@W8s)d~#4Nh1~5?#CQ8YAwaV zt@Q-Ww(gpXWi4ex_`?7Am~)DmLM|ijD!Dh02`*oa%8vtLx@)LFvV1L1Wo}jyDj=Dz zBuW%#w?U0A5DxkYM2J<{Wz}8x7HE7r{5NGBEad9Wi2+h=eaIf2^Hu|P*aYl|FU6@f zn)y6>7BZ420+?&_Ds5(qHxW~=%+pXR4&0*7^ECgy=qC!vptf5N8(xcREqCG@P%2!| zNhS+*5Ah4ykEo!^O+Vu|FaJYS`E-2}76=zUyo0DEJ7%Y@@<*Y5dmxcaWD@nuVQBvJ zuZ5Medj%d3fk_b5_mW-@2|{nQRP=Z`aLnJ^K$U@R8-AG1UnxGp%>&$de`mXawj;r0 z@Q>4mozA(avHX@GeK^Vz_T0Cys++p4<&}l|OPu?qdGhi2Eo4J;OC#ytbmsq&2wWrX z{>0djgl{!!wIl(c>l_B(Gg>S@za7sRkZX8rOY;;ux*?h+)?z=e?92s?u z2(ahY178s!w)5-6)<1~}b{*6nEb9o!Bn5Iee1lq{w!%+5G(#id9 z%WtcFUw5G+1?G%6yK!228R@SYW821fs~&2EPWC9^4bU%_Ers%8L8J%e*cr3ai=toq)P4rTqxTW+RK*Z87WE{6+Q|x>M>@T{ zYInM6c70gFh?l6gg)lExd~8aI>d>Q_`tN^$GUQhM-X|nW-ta>_IDzZX{UaxZ0c-0T zHDEZl%;romj~~2?OGL!h5%f5Vas$2)0DacSazwwXMbEsi8BbLlP3o1w-wqL7&p0)v zJeZ};gRi-)ECr>-Voi#+737X6S*M$E6vXu1iE=tg8d~1#{qrw-V~?OH^)f~Zm`^BT zg*TR;%2$@j65WCQW%i=q6Gq~NG#_BdtdoPQbk~%dIhNG^pgI&J>XU*MA<&U(oBTU$ zlC=(JDH-Lv06GN%mBR~~&9eou3v~`DyX%Qd>z^{EGN1EM8?)Z_Mu<_h5dSesl zOFu%egB~UQ1a#9|lm8ACz78RQ9`eGrU0YpkDI5e38Q))Yop%^ws~^asC?fW%p!(r) z0z!`~9e|g$7L{suOt_^m_PEFJrz@PvP0!W)H#nMI0NUl)nK=y@q{NK)awB7pir(iM z2$<2m_2oQGiA(q=r_w8AMyo%4T!F5#WL~ArXQdmY+6}n^&Eah!F&(Uq4a8|{Mxfk~ z$FlBoOX0jR5|jwR$z}F0`@wr~OvMVu>9|-+R0=6Ex5b#2E;;6(<{x?$gF6{S-37To z(`uu2Iu;+8E20H4U2DZkKvG5!4G&-wEGr|cE^$VP6Kf2<<&~xxRHvwGf8Vj;Rvx?I z+%yXBAv0qiObsp$Zb`#LgGrCCyrVYJLds@|+|G$(@#DV4`R9b>>V?k|`u6zGMhVus zaf}B3pr)9Qc(VXgnKnsY+v0_Pq8&nYGMljF(-svqWn61YiWW%%50NFxG;p$%lK5 zbafw>8}%%*h_f?;MmUvU;K&*#4a?(qJ_{1cZbzw(W~GhG#(K!?aWE9&emno3@VAMzAQoVkxo-N zmT2Rk6>>Pt!5dyI|Cs$XAg{)iVRxx9Knv63N>+bD)X|(AQ2V%qp!3RdTjfV`!h3er z*?4PmjSWM=ci;u9+9Pr38~^R~Q7d=d;X5j&54&cumTf5(vD!1jjr&rTy@WkBE$aX_!CY2lrWAxFH*;s8 zwNsTdq%M2^p`R7cw)%aOZlI89#D?fdaQ}MYnx>A9+Kl0ywZPqw^&{d)vrzXJu(3Qi z8RfkO;PVd7$9N^{`ryWi4*+YinYzGQJ$YRpo(${!HnpBA@(j~9875c5t!;{u!CtL? zW}YtWW2k|VXiBW2wE(MM63bI;*0=+*@0t0R>|@GQqHv_+uBK8swoG4f6DfJy2#&hi zk+5+)uz|~ByLe4@P_b_#CE7f8XnTQ>o@kKr-EwwS0L5qDRlC1nbwgm=S&K`NQs4HC z{f|3VlBh=Jbr~9%yx;@_U_T?etmeBA4{dv_x>Cc4$YU6O7rbKB!BZdO0N0l zGE~PZ%q|u1I1}xj(pEbD&9VFv^2gPi;p+JToZVSmVG4qx?qGA!gf~L>@S& zNDoe;mxF+L>`XD|+u{12AK>EOxaN~Ec`s`)_LIN(3F$p_NQdZtdSG%mwDAqNrs)AP z*LD%N?M}L=Urf*`tqLU^z#~qQ@VR&+cGpK^1U^&N3_P(YP>xS0?80 zg088xLVnWka9EWRU$ax0eAOW8!(aWS7bhS85+o4ITT++3k$c+#qV2`tU?qj2kMoAI zIqdVO7}RO4)G}#1nc~)Zl}EThm9q_(S9T{v1pN$ERh`E_M0wcNoW3*h4YwQ7o6Qia z^ZB`bT?+!)@AC^k^eu52Soc?KyZ-KQwNe40YPc$#v?B4aIZ5jayLH8#%YaI`y@Zs) zLE}@P(J3xpSX=9i_9ieRb5oq>6$K^6*jvHMD_RU>PUi)`CVQse@H}3%-lxMi=v9Si z$ZS^jhK=mEO!s(J9pbXXiKE>4KWzw4u2NdbDS-q}gn z1Am?Gl>}v;*f+Y5yIWP-fMTDiZerCJNAa~ZZnUTiELYlW{NwK2c!}S>hARqLIgsw? znuD{igjSZ+v#An_i=k^>ejfe!ORUz{G@0P0-lnDA_D98vzE#EZTZXRHMSek0B3~7p zv=fdrh3r#bu_+tMmnY#%5*p+E;KMB|UN+@@UE%0zc{1wQQ4D*b6o%pq-uu8fx$sKr z$SGadkq9nMoN0Ze&Uk(O`vEVLn%Hg3FI!UXG39Rb0=@a56S%38@C{|Rk%|cce~%D$ zAQ;WLRGvf?)fawuFN*xYG`zAB$tzj(5E;U~nmmZUrYYpvF6i8gDncsMFfB#t$4CL| z7oLY$cC7FakS#w?^diqfpm)?^$_FG37`HovBrhS?n?Y)oAbGC4g64l1aAy&Q{`o^k zGV#|z^M#Ug#uZ=h$Ehx&52W*)l$5phqME&FxYXAjyD=HQYeq-9zJMm~U-^d}R^=hT zN-!?LE2$;fXFZ+uWS2-?_PgoXe|T`5rF zgI|HrleFgTf>&r=!TNxjf>$UgQy$=a^Y^u>z&_X9pJd%AN-UQ18sdnxJA-9gsNF}> zjw(ih(zMcS(kGZMErn*dpd*D*mM2bQRz!=a4k=_9 z?9qZVQs{&a_*o}GA&fY|6(={<8^`C~c*}Z?5854l%y65D>RI{;Ua+YJi4Z^Rm&K9C z-8fkr<#ialy%|>UjMRp?RvEX>gE#k0UgV0v8WeVN%K}Rg%Y4Zqs&_|EXRz7ms~gC? zA~Xh;zidS$8Zc?xx$%W08G zQ+jkK&i%FV(q-B3MM@lnrEXUa3%ujO6Ym0!XX%0!+Zx(6-={!Q3Z6!-A6~y~!_kZr z9j>paFu$S3u{~ZMi$)2`E4z%DI@B%;uU;SzOX>`A4XB-2Axeg(%E1%M6bg$hFWwCM z6Z<85sf%yEvH4DI=#9#vu~oY;(`*oOP})qs5SW=@oq4&#t1F8^xk9kiErG6mcSzE( zAIfPsc-0)UFW2zHC-aweX^?}@>PhfW#;%aTdarPwwR2^7g5lY`XwEPWO%7tll0IQx z@fYw|k554Khhx1}-9TSr*^jQbDejhU$cVUnO86Zl557xHOCf2D%ONYt)Yt;M+9Ooa z#aH3;!vD#9`gI=wK>vCDJ`}&>|IwG2T39=qI6Bem=~?_zp!D>9-3lTKU;Ey^cKbZQN!}%8gT>Z6LJVlEdwxMvD(#0n(Ku*_nw1I zOGaI^1{%Wgthc`&kM}v?RMl8Q7R&3hz{SDr)eEV0UWFoN0WYtZl<&;!+T+pAiRcv| zRBfQs!4U;ej1R&T-DY3~6jUJ0pieD?z5Ow5dnHw}xF&Zph%ep!jO9dXr7v zCh+$thkGkVe^xl6wad_d+xQ)N*OoFSrQ2hQF*yJ;&iHLNx&DNFa%?ld`ys$q>x0G@ zm~Qx!(r>KuBV>$|zpmDgBxV8@3|yMplagB$f!=1b|`) zJ@>hApqfwjd>i0%u`en0weF|4Q_1|4G{a>ahU&&+?4^cix{W+2J^@NK`&Uj_wK#tN z^9Pgrm3_|?(_4%mrt}yW%8*uZHs~C3b~|Y^M)}C!Rb-V zu^nG(bRDXM7)r|ZDu6CGoh3^i;w+TwIZ1}y4WV$sJbpHWiD38RZ82J4<}HgPd@n;u`L zk{NnO$2jfU*%`UCQUfP)WTYndJRFQLo%u(?fVL+m3D^vuH`*Z`_s#achKpFhm;r2= zBHhFfd$9ciif88U8^VKwqBX%`9r$I!+wEIdG!p4~T>c?i$~__C=?kA2SkORW z(>Xc)f&oftn(p$rI8pg2Fj*nuE_UGJV)0=>rc`jt*~2V8_4uE?$=&O%T>*0?@Usy~tAqDll%SaRy4_>An+Zs)A?OAAgn-l)UW z{kt|{<|_@JEZp;43x9ouvZZs97OWS?>_DeBsHR#-cGYt^@YD|mw0iy1!Y=%?Wt$^r zxRo~bkej%rLxJ4{>`}XlhUe)^tmA z4=HQ8ae+o>sho^xjJWOuuHDrq4^M~7j`fin0!jo+d_OvrbgTg_x0rEV^ zpj77(!@I1`9FXE>a4^w;1+E2_rP5jDwjDvGc1;5tb7V@(Bw{4Uy50s%F;}qRJbxA4 zIW+e~+5uk@&ROL%^;HEovt!0%S&nn=KOM8b?q+dVDPK!{cA1II)zbid>>=v+;+M`6 zB%-CQr^1c8c8RsgpJG+ugWuZ!Ts3{Ch1rQ8>g9Cr4p=sG1&p%JkC>O(s@$)RGrZX| zMAb$pFFn+0NRtwCe(d+Sqm+GXT>(+ar9V@=hw$6qpOuJ6<>TtxL^=!PU`{Vy*xn)k zx3SJA*+Gnh0RVtd{_@EGH)FN4ceb#zHL!LzF#FH>;95f}Zj%k6=eAZqJ7~p!&yYP% zI39%}@MulS5h5N8jCR3_u;DE6$@cS>n>m>#vcP&g&IS&ZKqGG79&Z;W?66qXiY=GE z)wS~2d*HCdn*-}_AR4Z<>bMwao!w6+b6emJ^Q(3BM(sa_C4c`4EbQ?@I)?bNDE z1daDOe`PP>j%p7fsVw?B~c)O=m_)*raj;=Ig_?7axr ztULuAaS-u_hD#y~skgu{4JL2+g~?_b8$%4pVBqzP+chDk=9%i0z_n@;t&@$uR~218 zkgkUXfT!@WQw?x@Gt)ul@dngY9$@FfzAO{V80AJZW?DkZ6j>b{=!acdK8^_qCubRBCJ+p z@-^(P=&)K$b9}b_Lih7VK2F)`Af=2(A;7T-s}y7cjk+(NdJ437@pkkFLWxmOjBwk8b29CG`CrxY9E zhabqT@((SFVW#}E`dz7Q`&{dUR97;8yPV1^KmYqi26#nqg{vZfeG4HPMUni{-x3ut z0(cMCH9)`<&=^P}(;>PNl4}wG5juV|Esqr91&l`P?9MclT7~|+;I?9e_;!hv#5pA~ zfpm~40bU7L=Ws0`R~imd-IO5-ypT(aEr_ob#_g)sD+)e}Gsv*A zYhgy;=M?#IcZQdVC{%!SZNTtjZ#8V_7B z#qeh|57;*5(B7oX3sT!my18b3=)N{Jtc1@;F$b~@Q@AkwlK_fNY3kgm%s>S9Ps#Cq zzN%dud3T`1WxwWQFu2Pb{ z8mjvIUa~h-is#Pz;822BT`#wDj+`5X(-L0Q4cbIf_j)4$^m~sOSmTZILTr}6NEJfE0HP~>ah9S(-2Iqh5ke7u zwqOjpL=IsR#Bk$U@OS1qBzJ}e!bd75#1=tWz&Qm9JW6PzkF>I@Sz>F#Q9nVw<%^Y~4a7hZ^CCQv;pCKw2n+5^ zwW2Llvsw=H!R%EWst~VxqAAV%KdTH!GU;+wxw#)1TDu1MhrY`$3*34ajkHVZCOB~Z zI^d=0a8jwgi9Rk93LslSF?C1WC_dd)2@mcv*wv{0aEgY~TmNfHx&9ZK1zkU~ zIGdm~!YTpZS%f#2t3PrR04&SPeV|vwDfc6-fQ<6v2v+67Ivi@gBuOjf()nlU0edC& zbK32KRP($hzv-6vxk<7DZ*xzlOm6!+1;?s2WP4~Vmcu*)4{@}VPcLgSEv+b#f7l@f z&RGk*Y^fIrylcctaa8INJ>`-ayjq>!*b~`@^g7RK#UNi_f! z>cvm!|K1WgYLD{kf44&Y-vIh|SN#757yj?ptGLKYK@Bh~XNqyHcxDatZdTfcGZr5X$rA=_ofi{=<1NbBm{ zbbg&q@CqKer1AJ4$Aza=x1%`YV;Si5ApM>lFXq%OuFU|1YXq<`A^!`{OQ5l!R!;~D zvR;2NUdq}kN_~ck7FeiiAg*#=Bd0jwkqrnnI*J1V-kJJ_mJx7^K)r?y&ZK%^htWHLd%?f4W~qLSZ7S&yq$XZl}Jz`}RE} zrF5!R=e*uZ89?i0Em>Kg)J6hqFIyZ>XF2u>k{~RL_$+wBEr;F0x&ZKR+<(FnZw-Jo z-{XscPu@Y+^`)TWCXtCA%d`#x*Z-wQVDR;VXOv;6%~WQkRI==?l`=qEYXn30IyfJiO$AiuOnJ7p`s?=+FBJ;V>&rO>ZvD+`BYUh zO_xzU(98S;d_3`G)$do633X3r>qbPF=g|6c_wbu=2WdS4R!KmgkE;j5yA~;tacsh{ z%Ce6QKJs!+#GX3wlwE*ufs*+2@w3d#lazL>?lmuKzTgcPF-SdlOnel`&qn2|A=}+a zuy23AOK}(ZMFbp@Yy8`f*Xa`lG{XJ(ANBymICzBcyDlz%2lfBkx^Oaav@o##4+rZ1 zj<=a82-*fQAas48QhNqK+yjs-DHY>w=pr?5(SWDcMb^)6*e><-fUy@T_|%VZb2E41 zt;rG`BY5j4BbjH=ddZ8Mx!h48)8&`SIU37A_RE`jC1>z7EXal%%$HSI)tU`OEtnlu zv;C9cHdf5&NvIt<9lV_M^+FYT;^-5b9G@cOqIZ-DolHq#P|r!WYY=4=Vqt_%S9&ys zO$EA{v2}Y)c73TSQyT$pve6p!Z4!L77d%sDCwfcRI+Xl#p8w7*=_2G8erFW&u1KlM z1lyaRXF+gW(MmuUxfPfGBiG!(NO!g}8i_N|xd52^m-aOMCj+r$j|T@)HEn4W!*9mF z5<>?6SZS-N>!2l1=<|P|kD&EVd33M<08I=40F3`X6#Jhn$^WJ2U%Q*e`t8rd_R#4I zDk*1Jk#Nl7_GRxoePr02)?PF|G?T?`8yX@pCN!-EDc|DR{o~u|9!>zMD7%r)ZIbwB zug9&vQ{7$z6*Hp1g!VF06mefeLpgB{TcN1gIN_U@7*fxvKgwI|B5PE1pdeXFbzWII z^-sakF^^^=4`oIB9(-!7F+5XZW}*z4>2a!rc9zJ|l5g&2b3_%JI5H5vsFTKNJx!#t zx+SXA#b22<;VDT8-O6E671R_ls&WKm+8J*=^!9j`G_50-{v^=}CNL{zM_^~nX+24e zdu(}>R1pcI7fVrUtRPdvczINE<%Lj`&q-2oD0qzy27a0r(F)Sm5}>m7Joq=YYE1+( z!^qH!F+f+Sz;}Ak*}<74i&g!zw6*#bT66$(MwWy`IrbJn?&H8Wa#0RlyB$Z0z@P<}B)w?bB z-Vy_Ij-?(2Z?&aI(ca9YqRkxbZhe;&F_>1tWup+V2jjbR(V@hJ?BJVTHx#u0>94YEzZ{D+ zP}lRja9{nq^C%s%L-`KJL~6w=Kz)Z9(Oi59lUS~NFddbtr%qFQPYt0nPW%a0{+u*= zkcZ=V#*cBl4Y30`NxRNt0PjCB&fJhPII0~+gpO{@(4k2oDUNAeYgIThCGRJu>z(n> z*)rYPt?l(M=h5htqlO2{t6gf1NSng}-#r=JNfV9WvVAAh^*bNk{3EPnE;X=hw~qfX zQ}iUCll_SQ5kjLX-XC_~Ob&)AcmpP2Vf08ZIyD1(92oc7$>+5}m$e02k5{~$@I!wd z!u?3zyn|KxSU#E3Y#GRHDOn*c@_;^PG3hqeJfB!Fhcc!Lk%C8=&cC5Mp6u9Df0Qzt z7U1&7jgd;{TH^h*dwiVwsbrPDv5!=7XZ3YLTE)w*mBwma0JUCHQHq0IrP1lNjSvS! ztTI-pL|HR+`9(nuJowjELAC16LLo7mb1G;J)FnNohRD*M@`o$O+M=I;WQYNfevx(` zIE!!gyy}lib82^JnD)uY2Nafwyv5&6MyVPuTm%HxDD*|tWfz$pWb@O?$rIsLgd0!O zM%xq3IRaNG=NnfXGaXY*bcU%VEM}k(2aZRa9W)bvizc!HCDcr=(kIS*L9ZheYpUs{ z1J>=P3)q@V;GzuXoE#X41rNDDj~y%+E^X`dhlErAtnT1Z6@CkHeKFiCoUef(@|q4E z_we&RY3hnr)i66uZ*cu(%N7Aq7Tlpgq0yNcTh-g$Uc6A{Sf_;uTn#UMF*9qOA=j$& zYnbLm39G&o%9G8%C27Th6E_~G1~d!cF{wKi9XISbqDdFJ8nVc)D-4Yvg(=05>UE2H z?^Ttq$(ucxi#!S3UymU`Gv;;?AZ!po^_YR^ODOpoexpfkJCm1+Y!j<0!Mz0CX~XD~ zG2pF=Pcj46X_NCp=I%E0N?Nn^mviA8y794wCZAB1pD0r|bSMz~Q}-h;Jl zn$+5ezh5I@D1vd_rShH)VJD}3sW???e?Jt235s!~1r&J&3{ra}b@*K9QdV$U-y$J0 zI_4P(h?s5$SKgn$8*59{rd0Y}VCIh{Nm!IbzWh2>k&;YnWMBatK7e&2v{Jt1gzSc~ z7eh6jY4+%i;0!$B9s`dJp~(ZFAwFqYU@uzsV82(j0$syRX&AZbjR3*_GBY8R3&4ZnN|5$6$FMOkmjAh$|0r7of%@r9}kCS#Pu zWPyN?;yZ_;>oRkD{?)u<{{*##MJ;ooJ4@Vu%b&S@IKZ2giD#(f0=q1qS5uI(Z{ikh z(~tg)hJA0P>=op!uyH9=&+?0H>H9Jrwi|QL*NM|jFE3W#kN=isG|r%65R^)nViem9H+ z$b?x-Kb97fHoT<7LhNfO>=_#HAc~PO9 zq<|=}p!2znr2imw=d-+BzHgR~<8IN9BKia~31fU%;$NmQVMQQMaq)U(1LeLsbB^z? zlCP3p@qfNgo~e-l;=V#9ga?@MtvMoKvtk>>9iYaB+7#`p-R(1`?bk zXJp48_uEeym~d3w2oJ^W05dt3X+yMgtt3)*}lGqh7u$?fzZg^w4p<)V8?7g6*`l<&(!yE^$nP&5!TTP+*1U z#c_I3JUcucAv}Azd_O!K%d0c1zSd)#AmIoo{B0!w>8ZIcaE5&#r1vsYZ!ktIihMe>-%tSNY!>4R?m%4cOw_H$=0PL z(pS~psdP}uwk&dxqF3r?FDON%1`P z?xrsHK5(h9SPvgcDPx-?nP+P3B%CKtejkjsIp@U|#nrdt_JSt}=}D>159&lkJjsCC zV5#QxBm?2rgs{3i;((ZDGZ!{aD}V4(+=FoY(DgMRbnnN-LhiVID=i*r>>@*3Ej}AF#ICz@9qSURpY_uR zXnGb7+?&l7NYIn_(Z7~JF`v54K@Pnm$QC!fwQblJ3+_zDpGw7_MqBGP8D4LqnG7+P zp~TuqX@%ElfToFRv>7u=Z^IcpaPUI2I6z_y#0+5S#CIH%UM>!IA~?92tn*;r;OG&A zp76(FM(0sBfI@-%GJLO5$iM#(WxM-JZ^8K|88n4Bz^NrsqoOu(a>%ttJ((kkR=i|H zS$zniD8*+g$AF2EuYIEYVB2~yr{v)n&ia)eT~k}R@p(Lf9cNwmWcfPZfdIs(Q74gA zeMYj@F`>N7*4bZNn4Wzdv`~I1-2R0_z8{9mmMYC6=wJ(2mD%0~RaR0ryxr|@gFm=B zINU#cfW8~lbLeG(SFh$GLftlb43zmU1{goZT9BI}a4MrMkF=*+ot(Xh@?0~GI?rrN zi_1-b5~I_mlP5t^E$G6aUxcQkwOi}f5`Tms8@sOQeV>L0Q%>^v?rVay8)VkvgY!t zhyq3%W5bqw=19S9G5@oJshDWO=@4{;w28&X*Yj#xHgE0>+un%wsIUFI9TihsMuAwJ z8mM4v{j~%R(Wsp_Lfz|E29?mc3$J^rQRb(=@eLR_b{Pjvrfjy4_gVrJ9BqII;uEqg zy93y_2%{ZC$<*qT~p>8e=P5CF!^`PreadJMnss*3d(VV*8))jb+*cd-eTFl5Ug=4lDyps zWKd19l~D8B}p57ZXraQX;3U(uSx?D>M!&5_G#)mSLbP7!qJ#Cs=m( zbP!b%9#CxRQQumM|A&(3;b^J0f4@cQm=l@4p>KXTsh^ursH6b$JcApD?&fen+^X%h zK+&eSE4R1E<+|2Cr)vJz5lMY9VUMWzdn{x8N|4*^lFacnfNy5?YaEY2QwpKuvtfbL zO0p9?<-A$5&n`Q!knbU^4p5>i6e*~bA;rJVB#Mte(h@tM+s89!qXC)qz!Zq|fHq65 zT@p+_5*;-fQuVb$`2(@2}cj_C_{f&vtLqCFK5{v?qGiM^3x@1pNBqV*K*~IyUm1$=J++;)5)K++& z>?722Aon5`GpD>P3_Ptb8|vK+=aRtVrZ_sY`1)-E4Xd19rKQB~x?# zi@3$18r*|Y-Re!fC-T@mKkSHbkv8&C>z(L45QQ6(8x%sEi0#tS5*PY4JE;PV7Bk1U_nMFzGO-L1g-ry_B~y+-emmgnaCFLg$9G@$q`G>gVd>dcRWxtXeiDCDE`$UVDBg%)2?f_*jsbZN zb197udIi4Jsk97m6x1z++f9|S=lNsWG>Di`r(0vv>@FORNU#B4Q#cx%2XhTtN5;C@ zv;p#`fvys5?LY+;2MTzo4)7Z}k0OJ;p~DO+k5v`qEP(suCKXkW5O)`Zi%qfc=df9x z_D=YAIs@B2kTny!$)x0hP%DpPpW9MZFp_~7vzUI%fg3-qtD#`3J0ciL_D<;^6ViF~ z_Erf!Zrl?Q6Oav-8F0djn|ck5=RP7fDnF%0oSm55^OgA9zgtl$Vit^Bb$zoYa z;Q$%T>K-}{BDC$>67RQaA7&&bm1!!Sc9e61mV+-7ndL-_q}0>$9`Y#&%&K#RrMvKp zILrtKrYD~$fZ(5csrQ8fYQ8vwDAL3a6gZpr6J|L53ruJGEFPe`=t=6e*FUwUKO!Fl zTne4Q05W{lgP8iy4*ZHBF>7V;2X!Yta#l2l$s35WTR`f5QlKEvM62%m`d*PkH?+KR zMIg-U3V&p3V; z4P359t3s9Ba%r%*`wSCM(kV=3IpV}I1f?SZpd0|rz^SdT8uODtMC`4*!em8<@#c@D zG}IjsVT@U-t5hW7GS+mxs)H-qdKB)unP1xJV8F_!CiY52da&8g$+V2?&FRB%cYLWt zX$8JYSnq;eP|Hd5SR-e|1x3qvMmr+IAE|2S6~$Qx9ymA=pY*0vsw(A?c}&0HeC6Ww z`}_I2O~;hr1GSll{x`E--r3}Js{(x74XGlx>m69vP;Pkb?(~{QYE}3%<_8yin7x+x z>HUdQYO*I!fFZ@JY&wx^$E(>(ZY@#H89^0qmcmi5tsr*1zUDgbL=s?$N(d_D=$fs`p=2_2psQszkPo={ z)?J`_uU_vr_@k?Er#7sUy_(`FfNT{soUOf8Q(AD! zKJrU8{g}D97(h>&L7JXf1mJLEh$%Wh@(MmM@jeaWuu&e#71@JCewXE2#pw3}FBaXd zlCP3N+$hEdd-?rQYSDxY8Qh$QRyw;c=L)@*QOoIU&b4c&;j2r2#&TmLI=wE>$Dgkt zV9p;t|G@#6P7qU`h(-)cpyK_IRH{4Dd} zn)m%er`FYCJ3ghO_A?q4@1o0Y;%i&|E1!;j(z#kZzOK@&{fZl_YSE6S>ABrPih88% z7yTu*wKbPX0G0tM3|d0WQS<%sACkaH(oF+;A*);$0qaczRg(!;6Bp15eQQlu zgeytiU2+L%;~)t_dcFY*1xvocPk`*3H6?Z^I3E;Txvhzzf(u|YWagDi`yGxI+s+te zZf@DS%?)z{V8sHtZVV`%*m4`gP6TFhF3BbaU*{)brU54WfxkDlhF;!$5zp!nS@BfIPu}R8 z0Pvdp8@&8SD^o1@TC0PUgA@>m(%1|u0fXoWKO;qZPrL@6RFfSkrJ#~~3cPkDiG>uU zL7x!L0F)(Q>!l7oR>XvGo8)l`%E&gBJHllSq4et;ovO@Qn(B;#Z6O$vh7+;IG>t$2 zR_o>N%ByG)%oF^R#(# zX5^;ine3lO9v2vdI|NXGJX0#6%40U0R0@xajh86p)i5{n&lMH5E6l)*+SH0ofgbc~ zZ_V5(nG8*<8CTAe&4DB8Dr+()w$BIw{;?_O>bPc|Zl%Cmoc5FJkCrzGcz(af-|RX< z%A0r1jDw-E{R>;avzZNWL@#VzeMO4;%&^y4y6pJ)QiGLU`rz_PFaixq_`Kt4hDx^40}CnrT)`}iZ!&b`JQ+3tycj8TS})wIP?70Q~o zSu??TVG-i?HvqBheGIgK7*~~6O|JEB{Y~3mDwkYOh!mpi6F50Yo+8Q58w&i!Rff7F z>X8vZ12!c@oGWnO3x({2CJprhWsEobTfGY{1T|U*S=enC@OVzSD!wd40sFmihPy0! zR2bGvuN<^SaqYT)f7E4Wc$r<0gmWPuG=gXP%8}O%*)^?0t#2H_IS+x~S0>INYSDf1 z^kJHfj^h8p*gFM@5=L3NW!tuG+qP}nwoci$ZQHhS%GN1cw|eGw#B|43-1! zTtF;o&{_(XnIf00Zrn&sk#kqrm|Yk$*g+^$n-unHgVj(r{x_DPoP8o^VsH$Zseiby z6H41sOxdEuVGHYQlSGN_375BNwF*1D&+EQO`?lLwSPeb}p3tNHELQ4E#&u^I8(wZR4fbf@?{?>U)=ktn6sBuQABc zrG*9%u9cPO>(EBO^_pPzk=u{A1)H9EzU`^7%?2q z7hia*N(_u`px?c21?PP|JMu&ig)Q3$k&(;Xi`{+cZ^`8z_ws?O^1yg`Ec~$Bgc^nw zvgny}Ttle|U;kFu+iZil@U6wYfH3&eIU8n_yT*39D1j&J=>}$5UyxC3uPDA4us2UO@qt$veBV3y0g^;8P zr2cK&SQy!He0knaA0XSBo>rY+_Byvx!hZiM{Rr$Vyn+AGSYr`GblJ8gx`KmOe0A zpxu(>+Rpz$9?l)0=??6da4E#at))1%aR2efr~i{?LQXM{G)|asvv=54A*+i@5zF3X zrk=zhrrA()0k+Srb=(y;e84GW`JBE`O-0;H-Bc_knQabR;V36wv=Bz{d%gH$})H= ztn$xusFvbE&^)c2M3>2$i6^(N$~hf*p5vm*Q`9GLmgEH3cG5{V72kCu52-7}j~>ca zHcGLL1F%qfb~FNvN1R*&GxtG~WGtmQ_;ZweXe>FhCA5WMG6BgU zwU%k7eX%pdQ*NgITatPMfw&r%9OxWHAUJ|cSWuFuuDUCuQi;k3flpU^fXX*;Av28OMKWpLv6S8qXiJy* zW#3OrNGE97fVg&f6Rok3WNof3q^=K0C++RhjN!b3^}=r7VPYZ_7Jz*_Iv~h(cCEl^ z6_l*F7=dB*m5Y2{-P?&wyxsu&6-n%(V;$!A>jzpkv9y=${8yk$1GDoKT2B;G2Z#Z^hk zuNaChR=HbvfalATz@BDM#t$@PoOrL|jB>fPZ{ATK1^NpHZ;_$ofL>?v z2pfJ;Y3_)^EF_b9={qDg4JcQ>At7S|Sg_$qxr9j_Yxb4=(l|#$5`-&La>S1TR%fmz zm8B)El5pYE#3Fs~mzJReKH#62lY~a6meZyJe4y0e@$j6OV_F-QHR*UC2xi!U)l-a2 zn?*y3Zt7$;!QrLj!CU3RcatzRBPB%)_jt4It}@qQ(L8pl$kcI5I~wOYRKVYu!H<7J zos%kqVvhSy)zi$j(d0}z^BcqC|Ii9;-~72bGnwHEh2`yoSnNH6mB>n~f!dXQ3Ql&@ zBc;ibukoxzPk-*&-agiJN^px>#vEfV7&h z8F{9NR$)YM`Sc)4;^H8VJ})KvC8jjTsPC3l&h1r}fUqD7p=JOM@{m}1=X{q#wXIm_ z15p))8k*}KzY9_a>j^$BJlUl>i+Kr$7pwzpP3Pe++t(_9*Z^9>epiyhH>49kzHDsp%OT7@Tu3G-k!na)PUeJQIXS_9eEn(3=M7+HDCHtnu~;wpbGR@1|X_gS;JuRWVn{4gx`3?X}= zBdg=o46{zX$RsooQ@MZET~Wf6=z5)qs{5ui)tQM=l8lGtE{Kw-$q;2%wT%@ z*%O2Av2Q+bd{n`Ce_PpDn|d=st@G>2b$;tOtr{9a^JcB6X;tk72vy0loKpB($E%gP zFN^~6g|%3M%htgg|5UVCKmhU0QR?pves7Q{Fops;#@MZ~Zk5YxOyv}&qX(^B_ zq)fh=RnSW)?Xk5Ua~KBIZAoufP*#L(gBc~2?{8bU8%|i(^%v4Ydz0eT5_})(i$+~3 z?E6ee8~=FNLaoM!H^(PbBq;zZ-Hqh9UEklRg5J?IqC(rhR+*ui{`qOY3!T62m4us5 zj;y}t6&u=9tK#QS#R;awol{2T9Li-07tEfKKRO!i9BQ$)>bOPnVclSQ7tX*&x5(DF z8XjLBY5zgeuU;&UweS~u5==^_(G1$1Gi9K8U(x>85sd!&1>ozn?o|9eA(iez*%JtS;pwJFxceO{BD+ ztc?#f9QK$#-0Jm5D?D7)!H3CA1~ZFK;FM-&`$Q8NsB+?6_(vA)5(d)aYr~1ZfdgD?C zF^hJM9UY&q?jN~qR>*1HYQLu$on4)rnY5{>5&F9kqmItE&GWz(C3`guWjpeDt@?JY znNN?lbfpHyCso2Kk5|2HwU@s~gw z3m+_Q%>Uj!HJI}z2l*{v%l_tR|F;?T|Dp~}|KsjI%52!b#F6nQU46!>eu$Kk4I8}R zl)xDJ(7;+_6I_DO10-WhlBN=gKpalDwzrqujs$1UVha1kG`fU!B+q|soX%l-D=T3p z8&+fPtW!*h_N}TjkUiFwMq`?#z2qht{715SDUcf}Z-rWo)#IF1mJ2d!LBnjjr5nK1 zX{tGFZ$$+|8^m+3OR2JC?{cvCq+(VEjoh0IzI8nryUP9BDBoYAs%+V*-Hh;?*kFal z*sC_@K`jK_x#-u2vMqm6uY%}2RQb>KlOW43tIe#R+ew)b5Xe}i` z^$#CcSTg0vl1Q}^SPxIxS&eVpJR3}0ee~*KsXN+TJ2oomlck+&+(Zfg&C&I%*}S_6 z?KSQN>eIKvdu!PqiPx7!rCyLbie#Cx$O`8C5z#|wwuCXEq0P|?d}+oxKzcXP)H~ss zItW9p63JvZhvDq1l)@I)0b-Z|fsi2bd*Vp}VTt&R?q?*;ElWhy8o-F!op+@faX#a@ zu`B~mN}w95a}|F3tUe}AECLpH)9D zGXf`JohjkR!xPot=k%4UIzc*ma2aRz8m}!FcdSb7nk@ zFM(T(;&ZQFEQ$U$N8Lno;GtV`X?Z|bmGuqXo5)iVY7f=8vKU}~c*!z7L0T<;at`ni z?Jy}GT`V67rqh`s?3jL?^Ybl!cO6i-Otz*!L&QQ^>`jtyY;6E@lC?xSqWQbT!O z$`}z?q+6wpD%g6Zu-K(3X#74CJy4g1M9+qR(PMM2@ zhL&7N)l4CrU#gB*Dz^h|x(F1SHHx%<_#fk5xs+k$8RlJHTe+&lEV)5tw#Y*GNw01+ z!44!!5vhD)1XO@w&@^@+Ed$hQmpmEXw=*|r-6p1h+Ce-2unZnm zjRp{0iUBkY@&I6Z{Fa*Fezy_jZ_ly*lIcWxz!i1%f_%>olQ;p2YLX=tz9?3`IF8!a zNKYC>)LnBc#U|OOelg6ATQ!P9S@JHrVHb7;h|JSOr%VpC5iaWm9#tMOAn=-4fXlkB zenff;i3p*Z=w}sn$d^Nz$eSmN4s3$2o*if>%6$_r$)I@Md*&HvrHba@9w>E6^U5)b z(9<#g?b4uGh!X8}#7Ou0_WSil#0$?d8sc7d?bdO1PVLEgNQW(>;8J-Ds2nRW+0(S^ zIKrzGG6x~OLpNdB8i&}4{1IVkFN^lOmm)*Ivlr1kBw$FS2!?nP-g+^yG87u9aVW*- zde-u-??}NvK@nR$28*`PuHjaPktwSeJi}Jh17pom`Ruo7mYLa0Tagq48$KA7EB$$ZL^7}!rh8kmX49Bb8AEV{a=??;Z2D%X^OLC>7dCn_yV@Z26B;LUI3?Z5qe z{g7Z?!?ZebCDYC59+&Zj35e6q(4WTU&DXGen|A@oV_}vc9{zxe zkJpFi|GZwlt;jy_e|=;@9J?tlJ-r-w-R-CKMZ$+Q5kPza{KTwq(%$_*wuhTzcJ(Wi2G61jl8Xy}_Qe9b97a3cMbfYDD#-$xEp z^-shd&9FF15Vtxl2jRK#J7)@ikfiQEbk<&QFqsO%R-rYcyuLgN+EzIF4v{GL@Q0w# zra7q{+d+99d;l1B&WJYew!A8y=7$d;^Zz*b&=7sTz79Ku-;d@K-v)$cQnTHzE^j0< zoy#>3OyntEik!yPFPzrTtcf2(Y6f%0W`>+4H2*!-RJryDwBHvi-%#jnN9P`X&gM#K z!=XZ+J_T!YXCcNcmuwTg3b>-n8b+9(UUb#HZk5HcBC55WQR~RoNiX_P*+#;iKXH=~ z80Rz=4h_nA`7;%TpltnjKEAwt<((O{Es*&%?~seY+w~^7#Jy@Kqmv!Mfm?%0Gmt^Y zipwngZAEA9uC615kZBz$61fieuWju&!3ZYE2ROdUoPrC@2wLkoMZzm0I$L^$6$O;z zO-7!t>)i*^!Ap6@pOg>NT_fW>-fP{n-kSrnJ+mWOhH|B%ZMv%lw4F;l(#UgM@ON$- z6i%fQV|7vj(~9NY+1^&1I(GhrQzoe&&0|v?{`DA_5+X3mf&x@)Z5xfCtsS-MQO>nf zc_&5NVV@8r(FwjVCS4Efvu*_Q-lk{R%Ev|>)%ui??Qn{PMIcmL&{pTO3?l+ymKe;beCB4VhA4+f(e#P6|N?h3>Ctz^LYaa3MA zwq|%aP`(8};M_DLojl2{tyJkB5?AFvW>Iw6ujE0K04w)O4|JF0vxIs(kDH&tk24ME zu<#4f6FHAQr?oo0knt0QTBWY{s?Z&6)FZpOkTXfDp^fH9AinNKhh=YWaMye7{0CSb zy83{Q9bFL9ge%L<*SABMHE_QMaR_h*O&gXV0NJ_rEWQcFU4(ScJjyKjEz? zo}~-*^5L#`;08Y82!itEfxBn-kf9sO(V7vmwkC$VYu~FrjR7GzuIj*yZt4I^lYW5y zYacQxkMx7|Hyt?lOHiW!ze))H4=t&0^J}aB3d$aAYx^y+-*VPSY9Jw1iYB=}+?gmK z(pCqC#3F%Xoq9W;k!UT=C`!d)qMJ+4=S$WGct@9xQey%)kgbK&4mUG5vks`>ZLdsL zc7m!V;*L$5sjB%1Y{gpikv_ZU@I~Z+ZELkfOVl_i&zzFjM5e04n51rE7_$)P2Frw( zQZ0y;;N?}V=uq2M;)6{_6KBWVh3m$0Kv=XIYR^Q#PbOI#4uTz~B$i$p_MlU%p(roq zSr}j*Yt2NX(PJu&rth4FAXPwqwj-sg)($$32(b`IJdLu%i$DUJs3!1Ws}YXnB9A>O zQ90oc^}cqhNfk|?J9oiw<@CcnUTAUtr7a+g!gfgE;8rEbU)Uc{rVbN*YoHV9Nm!_9 zMcrbU^lXY?71G-^telhyJ7}%~QVB(*We27=TUf3IqcVj6@Nz;45=rG5MflbUE1?O@ znse^>Z+0zI07l3l113#XgC-6=R#)W)4zdlfwZwT+`iD}phEH#~#Vfi)P0eXZWfRGa zMvgfvwS{bXGN@C%#pCyz$aC)A!${>~%wcH_;3pcX$)Gh9+x(r*LMo20&QSLVsXAcp z$SjWy6VFMie}(4ty)fO)DSsU_V|V}qvv~T3&7qw%S#6Y-vf7QymNXf%WR??0S*y|ep@J4Fd@#V0%LZtGton&3C{IDuS_j+1>UAjy~y&~&UKv8NK z@fKh)aD&LRMOkE_AzBoAYzNG6qcHO2wZChDP=nVgyo{t=q-`Sp(NO z>-n3hialKIRzumcR&rOc@6GE}U`GsOGtJgmq#Z!T4OLyh%)6M+n*q zr~#F{dJ3c+Kx6%Nht@qFqz6-|xC=%KQ*rB0&=_dYSNQ%j?;tV{WoIxgK2?fF`)Zh9 z;8+x>Cts>df7Lg{E&otc@kr{i8V_#YPR;QrxX_a-| zPQ12}MU=k_ zdQxMWaqD?)gy0vcokDJg3I~^K`LAu=-nT=9^QD#;iaYi5b~`R9=Md}GNpTT z?@Zso%Pq1MHPi?VbZB#63A*SPWf|EEqfmH}fAZT&Y3&+o@7h^o{ackwJ{Rn*Wquqz z$HUB>;|B8LRdvVyR0LT_W1=3ssJ&K~KK~!TOgAW^IkQrTQb=AaO>sto zio-66DUP+>({p*qy$bFci|6s$rVn>sbvXn!@1-#`as2TZn?rq8Iu3-{XupPtdG~#W zgm^hbTw5i~JbudNyM{IoUv5aVY^Fd~b|xvkZ)chkw5HPKMt4!Iy$~a_62^&DWjkVU z#?D`UFL2N#v+`7-m% z2sRX>If>(n_LDd5xcX@XA-_cEL5-mJu1oICtm25y%ig}#>73Q@j#-uHJ#2mdyCxq6wU)TILA7fizifn0jr4JpGI0<;? zS25fj)NPE{4Z9J1*Eq9Vpj?gZi02M^E=({OqnWfAkYYXy_Z);0)LzT6+Xix;&9Tpk z6No83rOGd)J$L>&XB=}e-ll=QZ0uodc)ZJM+cy2+%F$?zzI`Y_X0TnA;CZ$ z)8+Zs;5a!mZT`D)hl~oCSrlqQxv`kWE#MIg_yms7xTOfAtU1@=^_wxUH-xUH_o0L* z0LS^~B1@gwzgzDLwEW%9B>)q5`$a$3XmLGtagROd;+)8boPW2n`{A6Z@L|ZNTs;a~ zn*UdXB%zz{k2veMxDaQCa4aOkGQLd>$;aSy@mYLgq1Lw_nT}|cm4+aKv(=e%*$xte z9PjmdXQ(ex!8Vn4@TJv9%!g<7FAlafL66fa8@Yc;w#B-GPZfB2RX!|1sjR9zCLEmr z&PA0j(*vUoJipqp9Y7IR#-8gayBLEDtx(N(@2{vhoVsS7wc~WaSFROdHre7W#dfHs zxPn+Iwzp%<&0=Z1*SRiX%hWpBRVTmzgihytl)tOf_C2#IE*`iA+IOG;JX9``O72~4 zV6G?UQ|E)AT%owT%(@@7-3-asKN+sr`{>SY(@;bDmb|Djb--^_7c=HqaY}%%VF0FB z2}*)5lJ-_H6b^g=u-4f3a-9%%!+_H{uQFK3Et|_6yMy2kZ;IKR)2AWRbwJZ+S$+xb zNAA6zP+SYM#aF|9#d`zMs78)abmGcQ%}&*&Wv!#B`S?k13A;H`oMrj_!SkM|g=h_UMl=kf;;Vr_x*_7Q< z*}|z%X|Pi98CmzpMCRs+FJD~Js~0FN)n?rCs%16M$vs1$9sE_s7NuF4fG508hCm`c zHyDu@akFU%IC9a%Mj;vqwo2?`t-|0xG{bBQ*b%*0Z7D3-iE(|se(sJ`@_Vuq3wy7S zwGIp~em1F^T=^oJfjQfUhjTTW%ENjRT3sggI&n)Q)Y0yqYC)cA< zmJBKMVdD03NDEQa9hWYN$)H#73KW1Qvmj~BHVnDnE6EBg*IOt(lTeI=ipTMJ3Za}C z-(F5m_n-7j15Jp0IpVXw#{iZmvD4VV+JAJuAWaUf8W>fn!EX3_(NZwf26+e zr^ok&GR@)L_6gLno)&p&-QXOQuha`I8F63>|~Bm zza^*u98cj+E?A2{jX^>;ltU48t$C`)C>&WblQdvL``t{3<0qa>HYcuC)L}AmV`=7F z;I{CW5UQ#|K2ibc$?k0$@4v-K@QsM(&)!+Acq<$44ufXyQ#o>Lgv z20Hsc0!BCZZi)CA%br}yjehwV`6rLv$9s5;NN$O@w6(|fmVHu-js@_vq`>_ zpzZcad-fjfBjj$G0?s;!ox!&BrEjc|dGK#SFTxPI=b0)v=uF;<{OyKu@*M8-U8YD)09G6o~OZ~txC^44QRg2yj868SgZ@xO)9{fA%gZfIlu-zr%#YFn{e z95B9X>Iix;7buwi0s%ZQoxyx9pl-o#0fh`GS#r$@q;(|ZvQb|zB_v~OmI{5tspCV! z7x7YwB=QOtlno9-)bpszoi?Oe<;{Tm^A6<8fPWXxo*hDzR8X;0;N*l-QgPCmBdj^{ zFKnM6Q$Q6HGbq}NLGRbl3K&833?M(KYYduE_~+{}SdDGU3K+(5fxzQn(COqYfN6BUbyC*H-j_739~Dp|Nb>$GSg(*6TO zk!G-`!5Sc4@BwC3B0`DE^C{GYup6+F>^qqsov$HmcN+p3bPFY|* z@?1$oKH)?Fw1u#c@2?r+@vE!&G&lTnils#grE5e7+}a%N%J*!=-A!Yi6aNgRW;CLG z?(|r!$dC@Xi^h^9B;6ox{+HcYJcE9K~5IkZ+x-Se_SJnzZKnJ+Yz?WvHR)3ap`9m6C^3{nItWksL+$>Xm{vtw=gKmb{!-ys zSXxUpHUV2JEnXSQ3w1NO@9WX0%CIgcEu?ndwfd?^TGyW?2E}#7@Tb1+mVmJ4C}sG5 zIi^p)cqcr9*s)r08V>XEsL4^X`3>}MyMtyruwP5sXRH5Aajyb-tx@iZL1A+dbBHFr z{kw;;cB6D~^;$5GdKP5Myq>lMp3SoXvPS^R+?Q5vop<)iF!7C;a&Fm5Xara zec06ZUh%@0S6(p1%@+!qA>`3&?+{S_9d_vB*{jwjYg3zd@b2zzo4sGC$!T9cMA~%1 zH+S_=*9`%bl2UxW!6pm@%lAv&qd~V^k)+tmQd8YXxIvm6WsF_1=Kxo{W&^JdSNVtk zfAdUwpZT>x0RZ^0{txV||MCU@zdfOA4Q=}^HWa_LI)Y_%@28M!*7T3Wc7gg8N;Pv` zL=+(61xV}+CJL@J)VCY%?u#?4vFiZ7XnG|2Q*LxTKdxo1RP4mk%bZQg)Y1_9))JKv zJ$2ItWtx^R%!xPNIuA-S6LJr=6B^ofqeL{-=2ZmkUfD%&vU?>mRR2egNZv{nURzC+ zjs)z|M}y?V4uAR2^iZk9YLt{hAyvGS-lMld18gv3W+hw8Q91jHV$5^}(HcI0F~|Fo zBcsL43^B!I)aJ@@DW>NHGFsJeFNOu< zd@+6^8gQv>oW%HK^=KMt*WL{+e2w1t#^e@?CEYT6W~5UU#dN?9^N{w9$}-d*$NV6>bjUE@9K_1x5QUw^i^o*-4ilqqG&W>!C`TiN z4+1FBrXDXymYz)(M=zZ01XnpXfMpgEnT?l8KxP>mP;4NC%`Vy&<3cAAb2) zmr8M4gY8L@hvyy^e67fhWXuWhX0vfAOmc1{eG?ktCKZ7T$JhcSmSddecI*c<}#96`EgMS zUTm%f@cG&hQFzNI!>GW?iw)OZKK8y7maIxCk*7c}13XKaMHUQBKlM&T_En2^O zB^M^1l&e5D3h>9HyQg6keCy3ky1M8*+;ZohCPKAtDu9fjwyTqoDqG&9{(;GTj~DPK zpY%WiEBJMS&&s-h;eO2TGI)M*?{a`=!38W)xKNJ;#CG`uf~_A zHd)Q?7Ens*sXG<^F`7rSH4(YX>~dGGzi@mA2-Iv7j*7HkI~At`~n(C*Fp zCXS9)*=;OD-;{9I7Mo`IFoTpC2;MSSsP<(HV7(bX#_BCP5XFtvGgHot^~h{S~apOsMfc& zFoF*abJ6Mc@9_XP*IAdmO(&<050r7Ki8*a*Hw_&>?LFvgi+auTi40B?F51bVa41Lr zFpp8xQxP}k0^lKaXl?Uqy)B<6P>IiBkJIsimf?o7IOgukBDvrP0zo4VmK)()IOGi+ z0?@izNMv_<|F78gQ1dg8APam_X*(v8o4tCU4_uLYUm=nNyUV-4;HPoKCb`OC;#+pR z3_cNEQ=Zek1rY==Y6RFT);=%N4=Q)cqc+n$atN5B&%jatQGhHfgGNj zQ+8GkWse52ZT8%UQ5!hvk%YJG3-`RpjUPOi4~{g(Sa1>Kne{2x+ZY0^Z!AzJ&=~{I z+_&zq8G>uz->`FNg2tgWf#9&KuT(H1vEiU~&v^BBS?hjFxJ!*-H5jEFJK2-!5;%qf z(Bg}&grkcsMv^F_#f>$^TET_J3-u{~4c6QL(kpVnFzwt-BSEr}67A_KASVDXdW_Dc)w0O$8RWUg;iZ zQ!KLj@oi;95X!Rqj^FD#&Gq(iccaXNLR50AL>7QBQr&_GJrn%pJqWz>ih*)7O=Myf z)tY%K1MJHL=IeOrS#s!6+S{mUFpvsbA$uGkvyF0MnINZN_+ranoFsn*Q zY`3-XGdpiUTry2^CQY_=j}F3l*_pfok)MO38-WYWnBR43UlILO_bFxaGV5kYVQ%>@lM_F`2G7ZrO$`28V~7#v*(qug#It4ZdRkj}`)2q! zgl!`9aBG|zoi@2ivX^{M-|Jwy`Sffz6r$2@d(j6UGl!f+<;uPmL>goHh)BdIEakAr=p`eTSe>v^{Gi+vupgF%)aO_KYr@5^0manG;* z)oit}DI%Oor?4)eJzNu;7!_Lelh+_z9fVLNt*#KMg&Hre&+lLn-1AK}p#8f^V4U=i z_j;5I8&cMoL4xDBL-l>u zA0+U2N@fVj&f27ia7I-V8dC9S|B0$MZc*J416)v{Kj>A?9Bc1XY#hjiB}GBV z)bdPOvrWH!7Wu*S%z zMq~hsxRUg}^X#Y;(7KF?rn;U+X1v|7RS;pQ7oy7v1Wiin3G~aWT}Kry7zg}oTyfIO zBC;Nf9HW^A?_{_2p^$1XwIX!rNlZeJXqy#5+7Onsd;i0Ca);U2(@!|Jdvd@a!{y(} zz%4kFjzq5sVTw`u9yvObiA79i8(^i-(O;sJRFSdtMe}lkn*|9r5l3czCIMCfZglp@ z_>k@6#uSdI*n@qm=bK)gIm8EGgn&OVCBSd_#M37zKMIHE%zQ?V0Su5vhGfZTd|rTT&Hepyzftf2 zq{9Ay_lru3m0Ti~MHkiE)s~F&@3$tyh|T0QC@h{S!;HQ3_2_6ML#cfT}h% zw4c;jAU;^2Hftge`+y`f<6L;HHM3DFU6Z*fGItRM2PtSljLq8U%iRTRA+CFc9t@^` z<6er^o}m~KQqy5$k!GfZu|+25cfd9BA@ryCrTNG28o`ZS*$Z#2)|@8}ta86L6Gk<9 zXY>v=%(YqE@!6UyLLiY$E>L`)Ez9wJYFYhtl<4M00-eebiHh7>23%qnH<;`Ze7ItM zG`ISe??Lu-NW!+GkpB?|BkkHUKBPr!wr;a6r|0=rdE~N3`QPC(!e*0m5TBRCwPcYg zOCpQWQln=ZFYcb9lHQsJ{l6IaJx2dvqaI8I%z) zWN$aT8vR8*;jom8~|`m-+;L+`<}u#Dl&6M$Dzf zs9ziSouwxb006%X&;M^y@c;U^V{U5aY+>pA`^fM=Iw>itvi4gHFg>U04%>#a1|VB4 z0&tp%Ljk1MYQUEYC}CDh6$YA2G#k2%SAFu2;?>K~nHNUVMEJW!5|orGV20_*r8EpM zf#w}lF!kUyB9;s`Cw#-*2bt98!jzuHMlhi48Vm*IO(6_$6i>wZB9;AcM<2PS939@s z)qWs+HZR!tcJ8}_Usi2B9eOowd^WYK19jFP$Ts%DKfoa$Sy)BiY}A)CR2r;N*Edh< z_^aw&+iv*HHt4t#ul+1;QD}NrL&Xc*ZY3VwsObf|4}w~}T;_;c3r!LXHG~uh{!9r* z`zs1jeujRWz}!YMHbIn{hG&*2l3j9#ygrmkAkYkP5E_ao^H8}6L}Y|z06ME#e~^TD z9X$a^@6PhjH5^r~GzNEcuF51!_T@8|7Io)@n9{$|E2% z;bAU_Y-?g4kg2uLQPIE->*JnIZwQ<#;896yS+U3_A{$@fV-RRc2tQ9H`hD5HG&`TjK53UQ~TSOP+mmzP7PGipk;jgNSjZ-BlAd zoK51tnF9@7!c<#4*4S3&&sKbG+3+}S6W2ezUnz1GDTo#)k-f9e%Tg8rr&YoXeT+Cm z0qgOr(=&S}z>a68s}~G;F32&#tQzMzJ@d^jw)FH+u6x-F%%xa7H~$Ew@IufK z)SFbPBtJ)-c)P;?uX13?wVKQPcb9}X#{Ume=|83Ae6v(%m=V2b)u!OH?lAmMz|%@ZQ!Ac+#ju&JIY`i2)H?N1jyNX$* zn@K#o&6TzqxyZeBRbq&piK-h^sad;}nh)Z1o}@~PP6!y& zh6dCH=ucSGf$-79#f60i4Km;@NfT_AFXNPj)2lGD*y1&t*F*U{l?KW8Ukj)ckUOrnVc>3Ah=wjj+xoJT(7E$zI6>ngn;=oF*uAg=2Wp6ALW$3Q!B z!0}ivF!MH2KTj-@3$~r494;9_{XPM|j|*EaJR~Cm1wD5Va#g_4f{SiDU%fDayw2Od zKvPZummq>Um($nwL`d)DWcM9%HS~tL<5Wm725~6{66M8k6)77D0hgG?x?Pj)x?Nv1 z5MkjV{=E4^;1>TE&3EU(68|4M@|@QCx~096w?_6;SK&4dN0**K{xRB3TYT)98Y$er zr(nb_j_zb8%B&|T4hu!J!52T;F|aohZF1?SLT1Kq&McZz0beRU9)J0;uRy?FFIUfS zQ&cF8k&YxLs8ya-k;dJvLEBa~bTe6sdw28Xz!ne@`$r8Cqwj)=0M0!TaZWu!=o&O5 zX%TYFs!ITcga{-?FROx$oH*`4-^`~v`b!T(v5Xy-fYaL;6#S5PtskLL2_F(`w7u?0eXF9@?vtRTOPfK3UJ17&xT|t zbkzB&6VZ(E+Px=Cr;&ep72ElHX8{yNbBW~ERaWw7Jttr|LAEMGg}tq=5_zA3l5n3q z*#&%$Vau~JU8fi()u=$Hzwj;H14bt21~Mz`5mRr9-HWp!#HG>UVB`#C>xe_al)Fv- z5v#BRm(~4Z4LkJn*J9%!O{0R@XGOxlNS4x+K^ z2c-~6E+&a9!c#?x(DuFQ7YfIjcdt~do{+{QJt8d(Nt|7GaCB{x*mhc3$=2%~#(W>8 zW08?d!p|`@zPTS7xw)ycLpyI$a6^MGdNPQjZ&M$I&d3;ktYVHm-wpJn@Hs25A`c0= zV-abe1&1l`XyE-2KR0b3O?+^6KA)khYQs9OszXkl* zKA1v${dn7IdP6EgL#>;D=kEfKonjw;j=l6|0y-V}hCHj*^cB1vkcelcWq6w>2&3O(Q`PQLFRrJ;8}yhw!wben zTAb4x$G__F|30QYv@jfeN=T(0njSqc7jS^rH(h@gSSO+Rd*;9k9sLH=I#!-mnl0Xg z0LEwcrg!?W-r&g-E_D3umqa4XAt%i|0O36>C>Fl{Mjm~TmR+@5D}%;qxWD`j(+9DA zJ%yb=de(m{4(RJvsa;+BcBFofRdvOIZ(G)W5~G67VHAoTN_*)+%fHAlTH-5?f5)}E zYfDrHpwTSIq0V4|w%%56>HV=?y22c8-Ig%*n5#V0aV-A)vG%R|1@`R6^swh&=o-}i zzV2+DYB}6X;O_2jKcOxLMK!-r6XGR7#Osd5?z#;c9Xe)YAYNSF4@sh1}eZEm=;Q$br0!g*0%v9u}lqwyB z+lGAfrjIvsN{Q(M`@c>sS59$-?q31-{VU-9w`lwSRlqs8+SvS0L!?D@*LsTq!S6+% z@ZKbt@v3D$oQBmpUsgQR7G9Up%IBYm38jS7Cc|@|Jo#2bcKH-nIv$eCZ++!Q@Iz0-pybN1Yg|Mlj|E+LOOlAwis-cN4WGdH8NCEm3`2bV7oooCzbif5 z(cU~E5rCY_1*F#wUL<&&BAgH956@{}a=>|y;t_00`o1YYi$7bnxB#GNYmMtuwK zj(htQwL)Ny&rnbc0Oxr6Vh&SCwj|J}v?oxPs`Oww{o7bkK%(y6rkiB7mDAkouw=Zj z{Th#M<~Kh2y2LG6IMnU}XuzPWt4y@FQb)Hs0d>6tL5kXW4@L} zQ$r|Xg3LSvFT+8U%^^E^J61j7oygx2=5Qa7|GEjvRW{2)ezKQ^pZ9-+p#ES%P5v|4K_{94Zh#&}-N;d2b06qL-q)`qF%{xo##(R_z#@LpEy>sWW{6Jwjn zG*}D1b|O49BRj00oZa4Tr5N_V4&=cwIMMqDQjz;3Art=3>DYe^{M}ll}7*A;8rU!t%9LG;BRAsIj^3IA*>)FWB=XGNJ8SdR?ElR)bkk?RA-J z>PI+6Dp;5NSK<|-g>auSFAiIYf7sH|DebF7YIFIh5g1g0(HrE!?e~z6B3mLlQr`Me zhmr{WYm(9(gHEG;wX4=oT|{OgSNdd-1PQ_QJKQo~In6t`zg`BANrEay@>2%B$Gx_&wP%OI`l^Sy^>4K1EcCC#0Jt$5F-jxazn7Tz`clferbM#(XdQ zj;?+A2Ap-_c?MSdo)*}KarWA;{M!pfOmBXN@0Z^bT%1{1uEHzi$uQ7VUWvx>{(_sG zA)e~mWKpS^hk+ZitsR!j4S`95Z@teUrRY}CmzkSm{-n>@isLaq>2udRRalmB-wgzH zUFgG~6B9X4DrkZFQ{ifAOv3ERug?foB(7URk#S^_sVH`oP7IHkj^FN4Wj~Nw$oT#X z^0s(|V@I%R9?gb+HF}TrAhhPjs9AQ(2w7&$!P&jwZ_0LpmzHE|B5u`4-TxMBq~vU;aDGnQ z>z_Ok?|+?Ud-wlnqE{KW{W)d3&Z*FN70U3NmI0haBAyqct@!xn7N~TRiNF#hQ`@fP zp(3NQZ~O{5)KgdXrW`?9W^(u@>!DluN&KZ#9e}f)>MM}3+fKiboY6!Uu!j)K^}Gd? z8H&qBRz;_UMFMlxd|@1!T;$m4O+prY{9#W8fu~D`Z8A7{OIL z_pMFNXnpmm(cJ|R(w3?-U$lQzIxdB8b}u1N?Jjt>1nmS8-5&98(#+{hSIpAp>wX?Lw}4sc453e(=!1ENjw$H^%6<1DQL_JFj(|A~>1;y9p4 zZ$t&ECzYZ|b35y?4GE>zERHfT*gc8dR1cBCz~pYJbv^LXf3-cp7h?bB3Z==eyk6Sj z#3BM55E%Axq`6eEpT6J>Hf}7DqBI8Jrz9MF(Lp3(bD@9y3NBRNJ|Q(-L$fbR3%}f~ z83X66iAWx`l2o3^i41p;K(UN<^&L%d%WNFqx?i{vRwePrC~PC6Lt7T>r4 z=CQZ27q=c?@Dd*FkRHV(4Cx*^{a=T^x!s&WdLyKt{u9ZP(=P6{kmEy43NCtwC@5mMX}SxpvC zE^7D_d1-eYS72;5ixnU-b)R{RI?Q5nyj`MU1IQ*_@Uw;PEQB_M`o}h(%;<#`GNH! zj8owo`LH+`{e+K%`V5Rp<2>KdZH$kBm8Y=0O~gt03p9#wmf{)wm7aT&L98Qv#NBSrltvt*rX^%Fdsr z4K7K~qGsmA=pV>&;(=3rc8T%fjd5LJPX!TGg#w*-^KXYdp146ok?i-h(=8}9oYRw2 zS>2gaKZG?uZ)&&Lqc z$tbJzI$G7fsAmsREVGnm_wCIKTUx@r^cbyrsIAKqVKYv{}xZ!*vJ@( z_o;b7=Iv|NkkYV=jULzhI4nqf+`lwJ)PSZcWU>AxAbN*-JGw;yqM9tU2Y5&e`BNLnzL?`?5q?Sno4G@XLaZU(nDP z!5n2AWBn_YGFn(BR;Z$4y8?5B+HU-|S?%`c?V{N?r6k+8*C8|{`f5ovhDn1)r5VNa&Jg)-Be zgMWs!{P#=};t|Z>UH}*>V`U@REvwWSflm3W{qf|E-RpgIS>>m@O7i0EV3P~qpM}j$ zlIXtA@X6Hu&_b4`{ma&U%#A$67VNd!CH}GDDwQfXa6YLsb-tK$#xMWhYrM})=W2f) zEt8m=&vP2KlG=tt1YknaNG#V4GR26DOxTu}Q|)MLr@sc!F066_>DuhBXutlz(e=2Q zRmT7+h0%VVj6a4_s0E(BKO)c%&B2aj7Fxmb+ zcB+OS-%X0UWZY=HRcrrprv4ge{mJT7#(?N=u9aWj-er>*HZ>G$No*%ONdb?NpSh zaw9Si8PfYj5WfSkNgrgBpqTiL_Cocp?BPaJJeh%;!To@MU$;z~kS8&M!JCJ4QjY)D z#=}nE^Job+m4QN-;OiN)kd3`QyGjy2C4cQdK4*w20mKO?7$nEY{HVLnIP!?M=|Nvs zpl}>RDyT9hk-$@^3Mt7tW)PY^;L2Ff|E%AbrGFBmki8_>WJC|nro*I*e+5;PJnq=X z;zh+!^)cAb6S%ywAmc|-6>F!;M5rCj5c%+K$CB0Y1e*YaGM9sco|Yy%g$B-RIAmM=8p_4FzIPe}b`| z{nrMtay{eiwnB}BV})ZNqCn@_ah`=M%I3%tFqvY@l`e-P_xbwgn?Fa8NI&}ym&KXM z0a}`(WvAz7^sHbWw3L;R{l`2R2%AXYH>7@L{kRC_32hta<|5dDN9<_}u@J85&yTc}iH0U{& zg4Gx6fG6Q2*8Jsi02B1B@0I*P4LivlI5#FT2PAV06?DsTBf;?9)0j$aCrW^VesM293JB*fH?B=^>Y7X##(sGFgUyK*5W}B~aMKoi zJkVSPxga)pNNC&_Nt9i(&!dwnA*?bSM`Kdiy-%Yo77#dpPl5RAbIaxdLJL$3)IFuD z5wLTs;A+0vclTcV2g0NW=v)m90!61mno&~P6?1_nNveO(^XV5g3LOnNjGL?HDv{Eg zjbmeW-70p{NYXDVB(6jSM>!9-Qqv1-$d1fCM3=azF7K37F6oXu&SMptKYu9K6ZWBO zqEeg=Fn_PYtst+^3{ia_O1Wf!s4?Clx1&Nqf?D=5zzo?hoKO4)DmYmTz|5Q6P>W7` zo>)&;iI45jwy(W z4F5iEh|yk|zLXFVajwm#LPB4yiocQ?-2?Gj&l?h%H=%}<@Oz{h-q$V;jR`oAr)2aP5bF-gQV{|#$eSs`PLWTzu;Pxv9NIr8b@4@%w>l`D zrHRBry+q$NMAK^e&4E$VR5{E z>Rd;l=P)+l6qjnyc0yvQMG#~jV@{;Z2Ftl*@h|=Lbgy)m#kKIHbS@ixqlLNIhYst9bVWU!#+X>j8x<8gCsb2C(r)E2Y0b_?? zmG-Pj==fffFhN6!7lVUEEedJ+C$#b6k~Jix$cy&9l7MgYWPh8I)?S>z#Po((a|(o} zCeMok=whYd#(MFYrk*8r!SA_>+`HSE#&xownbc5LH0-;F;%eSpMAo<_fHc4ZY^!)u zCq5tq$CE6H)hW{$VVq2a1%Li>+GVyXlbi3!?*GYacE}x&_(ncXc1-u&aigESjZglP z5w3-cRb~j&7;rNg{Fe+(_ESWc?zE~?H630s zTBHrumsyNjUcaw{Mo=9bJ!z63leXR_)~_9f9lQaoufkb{72XP9!8xgLRK3FDE<4h4 zv{G7s(PxX0V0wY&SfmpYI%QKWsU9__z!fT_6Lk!%%u2;j_Ru`xqmp1%x8?ATL$3$_ zav4qbkeYjj#w!0PZz7Ce}Gr$dC$VqNOHKF_x<9}aAjzWuK{W3jzNJE zf$&-mTMHbYQ7I_1oZgf!1&V~!aS|wuTXZMPK0nOXf%-A4`bUFyl_jGZcT`n_a$>&s z`8w^8H4WQy+5L9Y>i6$!V0eF-)^~LAzJ(U5p;*ISDyo&cv;2N0OEPD%M|mYI_$M-u zo{&!C=t(()hf_QfMv&3E>wR_$D%NV?ZxAD94Q|5_BNXr&3%G3NK}+1?Gr%X&&J|TR^yEgw1z9K(=)5#+%2Il{J7hN&Xb}K4M4#%3han>5-eh z=$50BVdJ+52UZKsIsr|9?9rI1CKn%Ah^DHjn!FtcUf(%`5#__H>AltmAMH3P=Q5c9 z%-OUCKXDmzTW0GrSlbmPy;a+SQ9do4L(wAUAWE&ne*4IG3?YPw z(b^d3k&pj0uDnt&&UZ{B(e<*qVLmA{?e7-FmA=e^45&BkoO}lF2>b-9bz)%AC@tJC zGO|IOXFW0IZ| zJq?b30`%_xf#V~n`i1nYQjqa&Fz693BSsFoq#@Hxoj1k^F|F@b0gWk0n^$7pviURy zpd0ZfUzSg$GA@r;#X*aUQ+MoQ63ANM!8G-qKsYjU)oxCLc)}_@qvL>VmmEJ3jq% z15bB>7Y@7-&W*oUN)lkDkq8q)Y2{TkLj0f1MQ!wM`=(28ss9evT8 z$K{fqHU3(SXsB#qXD#e{rmhY64!Kb6P#VldhB{u({Ekv>wE$AlEyudc}@3$Y#*`5mzS6B zSiW?#>idy`9=@CJZn|wr;Ec&h6af}piNd6neX5`q~N4~Oo%K#zA`T$u(GB=97&pA3AzZAl&m9)RIbgmj0D4V*ENP2$N8 zh~><|1hSxw0!IFU@U{J;zoQ!e-Bdg^+3i?@FE;{lzDN(u@(ybxWxYyB9)yOu-~{}v z6+F~&*tRzGVeLDeRRFp3bhP&`WU)1$x@;gplJK&>JgTx-7lb3Tnnn>0bs|os4*wq7 zPkRn%E{t{*-1&DsSTZD)3*gZzjTdCfBm$zmOGqrWUgHbgtptgX)fd+;oKT>ftA!&g zc$Xz>ahR2!N&@}n2a&DliiF2`4Ef{wASY-ic4Jbb;a95e>JV>0_CmcN0BbZNJUDFH zxxNdsDAda-RqB!J;k=kso*ZNfbl)+RPpwFjfQG2BW)eAEX8h%Z#6f(=Q@9vT&xo5f z1_s86kvgP!t1@tRn!-oLq+D#%?j=>00=@EAb1DsDd>@Wg!-Zu1D5b>mQP+r&C3Ne~ zy+ApF@Yx_D`6-{aoM3YI%@PZ)#%{3x^uQ2FHm{ykV&!+C5=bStkyf~1B_Hm1iUDLKnKRkV8`J-h$V+!t2WXwxnYaKLTy#a{I9V1xuyh*F;sO-2}1}X zjM%N*4c#1F>9Q~iy84mu&T{DF8Qu|ND#!{IlvSa=R^w)Y1)0GJ72EcW-^S@C#Hn>@ zH3SNkS$5-S0H#eBzG^Jt-jWe#eZ?@P(VWV@7em2iI{Nchd*0AEJGER|y6d@rmm9ks z^F)s2I)hy-hW-Nbd;plx!IF8l!qY9dPq5)k*j|gTY&_Szhb>!)oFULfsuWe}c}$)-||7{X!7h`tCeW*@DNwJkPt3VDIa zvh`I;^D#JdL8%d$Cw8&*#Px7hJ>L5)d$r}=*Tut!Z}J=^^He`>mRzN4Yevq`Ye}`o z!Qp13KQ2&ewhr7R&d`r*;<;>T@_X(~C1AZi=kWLVQIm5A&C zb)P`{ra{YGkedh^<4^Oyc)(errL(1Uhz9y3!IT#HxR+$=KJ+F$Sqz~rGp5r+@N98=4M@g^ zYy2T}*jQF<{2_|SfF3m@Og1N|(3&a&G2kLGFH!8wuAuzP=3EiIEeKvno67>Z$(YRw z#|JEpEHI>1rFlR|krpu1oQ4#ivP0_nwq@w)PR_sj^68fFdAIrGetCRe-JLy#Mvnh# z`#sk|TXog5F4MAp35wF14mcLAii`I@EyV3hRj(l9+lU>+@0V6PW~^F;r-N$u_Cj zM`H{3SFoaIrGdT-HZKdX>BDU1Bmw$;%OyIKQjMa?Vgc?t$DB~5J|wKZpea5E^r}+4 z#i>o*i&B83P?p>P&gRcp03EO#RPJ4x*kcO zayp_3bYC1vVAzy5IXl`fRinufqlv)>DuE5!7Nhk9v>^hpA0IBKVIUyjvtm&R_|6xB z>IIbKlRc@2zXuKDNbcJfl&-`UtZiETds^_4?!@}=b2&9~ddDze@gLo$yaUq%ii~w2 z1$n!ED!~Onmd`a%GW|si`4sAgcW#@%2@fasA#mnHDL!mGOhef7`aoIuC}9jyK06 zl19M!3G&g~>>_W;Et#2NWN8xBv}2(lWv9k0C9d8- z_4Hia;V3?%yo=7CTGMm=_B5M*|9Q~r!|gdIj=ldp-*JTbJn;{3#C>z!Fm@IOPX+Ft zHmY$YSwn84f;sW4`SSSPD#WIaWQKTQfI_4Y5BAQo#i=k_fJ%!jl6o9c&^fXYpNS-2 zh%6r8H>T=wdcBPW6!MBr(M)xQ%?{Tq$y-bORgW-iI#_Al*l#$UVSC$xEM=${hN&0m zGeqP@s%T&pcpeWHU|LHA;lTCOHM}KgT~R;H&{ymFTPQq04F<*lH@sbN#LVH-_e1YmF`d48s*CYjL+X`;0^2Bst z^_T(*jc{b~<}G5nun$V)tZn1~KYZ8Yi3xjV%nX$L@alsyXYBO?TUclPwnE12D(eZW z2f};Xxl(jtF`tiP7&?J9byfHaBi?^}|D`t_09)8YZsz=}B~EK~QBpmN2UMtIL*ecsw437(Yx zWS1Bw8|I#Fw^$7r+u*F&&j~ks| zX{K+{zhDrd#^E}S8}g_)f(Kjq^t{`8ym&g>vEj{KmFBmkR6*O2SE&mSrC+hUVAnmpz(GwcX2Ga1z<+6?0z3Yb$^!+ENT=^mfxxf_pyzQYvH)v4o@4j7 zi5cCBXVLT%gkBk(!exipB9Dti1VPYP(5P42TxC&Jp1lK2?6&qn){@#XUCI9qIpfU+ z{qAepzj|PRc_^R8b>o>0;bI=VVmZZ9THoJ|)$NVYqillX93;kw%;2M2g{dL7q9qu+ zMurB#y?=tV#I|uPs67HOH)pG_fLhgOu%}?C@wnCSIUWK~Gbx(i$}rGRdRqF-M%Hj_eW> z6hAYPtUyQo6OMpSR?ylP;v#ZlIr5A7hX1dp{=B@VkF+~5V6F-D|7p|s|HX7810xd$ zCt73B$Q4{*SkFSr{%xCI_>t z3eM8X%PpJudLnFlZ1@N7b1kdayYE*+ys`E1uLYgN3lZ+()kueq7P`F4rGF|Z8+uoz zsqX}y?PkkQPYz?HdJpsJtTGP`=X)j6ao?{E6p0sZ<6qC?``2_Y+q1pB=C4u@30YIq zu~IIXsk|NC*mBRQOOf^t5QzB z92?ii|Gc((wqCDGtr#G5rurw3e8u{j*DjY#mj6YXf0SB|)9o=$)jTzKZt5)@p@>aJ zIs?0I_26>rOqW_Y(a8;`R^NZVzAMf53$=cK7T_fI2KGGHD&6YMzmi5Yn%>^=`E1>O z`w5NIn1IR>{ek%?ky?mU#Erc0=t&WyuOrq(I3*-OW9}TO2b27{q{J8e0@gd2B{W5M z>&j~r8KNySj~}WVB#HH2hZv?-x9+$91+7zb0W5`v-K{?(l0XfK)RMPBIJyf(+>T!d z1{7l&nWasCVCBm$;=67n+<$Lx>0kegRcB`fSO{GK^qpiMEP@Wn6p<-1NVf@6MU;L2zf$PY+%-}; z-u2IAmP(_^v}2U99E^M?@xdAqq`#GCI^r)i66ue*1(I4kLd1K_BxTdNA%?IyfUkATTR&5C z#4lwd9#RWcM|onH%I_#S+Wtm$o8NU;WO0)~k#wX%DLIjB3Tuo=n;AbxqHrcu@o4C* zwpPNKrEzU}y|bnZ*0Nx=mIxV0pIXmxHf5~W#S)pS@-CfrFx%SbPVN?~A$Fl#j4I{) zSS8+2lB1n;XfN^hafCUX{DZd0R>g^_28&ErOkv$fzWP|P_oQym?~NoNajm%T?0ExL z9k1nj@lbF9!s7u@`TIcYwF83}Jwcjw1y5O#(5(_umT-x_d@< zFkv^ayomKkW!|yh=C5!%-^Dn+MCZ@hK11`hvq>5DvD(5fgi`1z_4}&k7sZ0F4H4lL!MUPOr(WSNBRth)&+3PZTx*iecXYh!rA@gCIl`Wb<=P z(ACHEVg{TNvuDsUUa6Tw_krh~-fG-*liq;6nB9lSFQf|TRA|QrOgEJGP2b{={?4u? zTR?>CI9a^&BWJbiEf6t~l3XJWS|p}{ic>ii(%L%TX=K!)KdCIYp<`!=cj*Xzviyb{ z4m=dD5G*aKrnBlv&)ND1eh7q#O3+0J_mOmt|3`!vj># z`*WVIbA`p7+&VRcK8%^K9fCC0m^g-|;%c7G8ul1>6P7e1I4mu}vh|knE^J=*y}xZn zk`x$5w6fE9I1ACdCDQeh&pF|6-;4C=8RFGaPKYu!OoyO+8K=dzQ(QIpT;b|Fr$7Hf zjtE!$X+7uK4>!e*w6n9Krf%kO0gjdT>qV_q4dcE`nQFA(Q*2KScDJMCgoiug<8Fk> zZHF}0P0M{8!AU2@R1V^BPv}m4KXZYlqij{|WOraJ6kjOCRzDNy#%a=-7jI{BbdB$5 zfA*_LF{|p@&(N92G{oApNK!RFt{>yJlId@ zUO-P^=Q^!#`bQv4dm7wARsa|bplV1-qf?>wGAgFl4-HAvUT4OP#d4wg+9b|Mv$e+!l<)QJ^` z3?~cfB}mN#U{!q`TEx^%|I z_+tM6HY!mZ5yS=$mHB(a1t;5=pA2sf0Wx63IDd))hr4oxNPn9M2JQs%B^9C}5W*4J zYn)d9)*EdA*U{GlVsZl^4?R6II8`2s26qDE?+1C|D6ozGS@8k`+MI`-!E3SUdC>VB z{T))*?AH_B^2`1z<^=du$|d?-arXR)YW-vks>x!<)h6g0rgNy}s+psDLw2`}XJ@ES!c@No%(P8wi(SF*q}#O9J+IAJcy$EEXJ% z&fmc@k+AR4fadlx)I;#c12oh|Nx&Hl1%yLJ6dFrVkB+*zpJ+SHIMww2HS|D!3rdK7 z`xuN7{x003gm2k335RrC1=$l8?YbWEtGSPl*ZcQnNpQy`TJZkMXC@gHcP}bs;&o&m z8Ub;kil10%=r)^9NG=Kidp)tzGUHxJ{V0t0hWc&-CR~O=?sJw~FCckYT#Pk9s zv3E>C{{d$~_9UBO5l&W9lmZJ|d`;i;KtERfqU}7l+=l{Y%baNus_S4w^WrXq2@bkR zk2}&LHRo*TK3Xdlk(*`n9i-E*)0DRlMPqQXS{P{5`QoH7FS>iLqV*2^XQU5gt+L6? zagG^E9(awDc_JdbT-KY3;L%pk`scTj0t*7+;>W{1qob_u<4S2%#$J-}op!<~qEBUY z;L9BGk;slV>o zR?XgX?~1AJ&Hd88zxH{hI;eJn;Gsu!U#@)Eb;jTCnHoQc(0dz)o=bg&(6J@!$iofv z=D;WUXZwK?af9U}6KAH(fM|y!F+zKg^%qMqjN_>_iVjknfKGrqG}}ayX#K<`!ofrb z@a(Po<04_oLe=iX(f#!MWb(AaLKXx+qFCk87(qdjAff+>V+lP0qYMg&rtg{_#uqdiNKUmfawV71j=ra@nghsw1MUDtDy~kC9pC>%?y=$m%^@!V>*58 zf?NR35L)zJ#ien~AK7*^HG2X?blpaXUuz;;U7Kq8) zvg?cX=#^g=j$fTd@fWn=m6BdvDqPKHjyA{0wAMx$c1{mktp>1PZ&KB`ralf@xOMBs@8ih%CJ?p z9WX1lZ61%&zM`6T9SN%;qR|Q$9m!{P$0M<2?I>X$OcUyb<-q2uj^T{RPJnYdfsMoP ziZa~v+#zcw6;}a9nx?SstPK@##YLo`>cipRr_+Yksg8^X17c+|mFiCg@m^nu9V)*M zrfYx~SRCCp5c1_eHO}ONt%R%&Jg40U%h!9-K0}o_(UD1!SZk8Y@^zq!^{E||5Ad(( zR8lIC7LZufhjF!;8qoZcWaR6M)?JGh-wQjl?bfyeL1uxKQ)LTWjz+zV`B5zaNMn(j zHFGt++4Hr3Gu$&dJ4^elWonLM$M0-7hLj_nkP3X(v2n=q_`Gg67=to@sJiD>^p#N< zz5~a{o!pG?+$k1avUN0K3hV3Dm7w=2%)P2cl51A4z+B!Y7dht z;Bay9CyFyXTgP1XRWjS$mmPT2y-$Ms5~()t~HYhdeb zJ|#+;7pz|fyG8l~VC7q8A7AgP-Cm$vKYn?5k|D1w!a69XaHY+LBF*Iw>z0X@iX)&;3#u+ z`*2+1;_*adQt>6A3xA(kJZdYPm#!bK-U3I^{YS1pZu3LN*6spOH5;-4`MPO)6gB)&x=WXo}UlDIHXn7)^s0O<~N{&+2 zZlVXi9_l~5vt92ty=b&os=-gorV%^XXSo5W5xiSai$f}#A>0lYyGw;teUo`NW!gy{ zYOxKR7oWhjPK4GJt`c>y@gKGu9Rwy~!FeJ7wAGe3&2?Y}XWC z>`kER82I0t4;EuJRy=E#XVh^=hp@BsHG1m`pD=s-G~B3i*6Y{}L7v#R=DL~@Q?P9b z`JM9$D7^mrv_OHQuT8<~5 zdke!K7&PhCJoL34x=A^iw#M^VP3yJ5Ivq$q$zr!2Ed;af6h#c58>fq^X-Jp$V?IeU z)wUZcMuCmt`-srbSKYNV#YfWcwf7p}MgU4N3G2JGOCkIaE@yF-i)a9_s_|5nE z=C5VK$6hb%Z{jPt{a5f03ve@vJPvy#GWr-&jf4UE2;!f=oHY7?s3T{|KT%(VsB-<* z0;Tb>K{9iIJOZ?5MuG9|0|e0YmBMnBfk9yO{P}*}Wck-0g@xQA0lN945h#Kzy&{qT z0ze1S88TP~5&FkFy!=E5d_cY_e(1=fz=QeJK*9iKq<{Ug{s#cBzlQSje#kS}Z}seb z41bBU2-%Z}HRLgs>GBXKN$(8xcY;g^ChKqM79rsSr!Har_zDDv#3Qt#n5y+@K==T_c zxTtF0N1sKn+mPQo6jgd1r-vUNOKF?bnd&u8weTZGk>8CUd9hI}R?9Cx$3`(4(KXk3 zYiBSxJ2?;Cz@>4gh-;teiftuWLoid|&_V$r66%33O|lUxqZmb%A4s6?D%|9BZN_C{ zZ3YL;v`XlE9D7HzlOO$kzanVI(A#T?o=lst0lJ;7?`jGP{IhIV`G>oDG9`iM7Y^H% z8#eeQ58ErbUonczp9s0=;o)stMC1I{!fi6L&&P4TxmcgJ zhs-9T6hK0FA7&pMb|543WIlOt;elEg0LDqbP3Z-=5Z_p-HiZXV$=gpFfH8g;iJ?^o z^VjU@dnqC$(3O3=UAgV8KiR zgeGtlvOX96J8~bDl008_7{2c%ZGaczd}2~s2(ScAU=es3%_PC3KO7LqfONTD=(N)B z8^OR{&vI5^zE3jpDV{TmdnsM}UUV?iOPGqu_v-@wl=<}}qe6^h1dNeehBmUck5N~r zMz9N()G~SncX=^hFW3C>$5wPMnrA>CVLEFr1&<^Upu`Ui<00bOpB#a3<|QcJx|^~@ zbftu9w3S@D7G)E7=t%5BLw$%+jnJP>+K^v~!fXFG#O9u7xm#cxZ?d z8DmvR*2W=ec9}e$s_cp++Jk7VJ~mO--P}ZJuGO}s87`F>QSW{}}cwAIibK^rksPcx_n?ylGMy9r~fRHsGi zcCE3;lJqW6Ev+VV`6?yTQPHi40c6Pun||=t3SzCOdpk`WxOT!F79NoaQp5Az)CHkd zG_3`?K~}N~bk2vtdy90Uo;`@Qg4E1&JtHU)KbCP+$;eEdyxB}_wGilBH%xLj8;?Gw9YA=BxT#a_xS4Jk|NJ-=U()7SRFC0&h%uLe304p zJh%v_p}AJd^CRkc&n?QK0Wx*V=lhm;@T5wKr5ZQn<9-I_{Z4pdDqeX9X=$0l3fUo) z#zFegT@2XI78(Nzt#b=ZIuys+-tWql99HzxWT<%zKJHPkLOc$cgOb10mJ3GzrMS0n z1;v^?+diFQnwLgvE~oRy9vff;#AxuTt;+P@IDfNK!_&B9Ch40i?y7@NIUn(8ZHFrg zYw8JGE~*F7A+e*`3z+JNyFRo*j3PcNqMKJZ)MQ;wOj2bZY<$Lt^PXPIR7OOqr^Xjw z9hk|uk$YN*pvcK^Bj~QY9BS97o_o8IzHY-7dP#9@&%jFie#XatJsIxu9anE(?;KCC zWZx>i6=-CcP-GY~WW7c7up?O_;4`GbD1yp^xI-gXLZXCFit|g8PXvNl1CXs}YrQoW z2!-3i86efCK>JSO?JU2f zy~H<@Dhy7elBYM9N;3+;8EGxM$$P&(t+p$(kH>pbQ%!LNak)Pz>7}KJNN9->tULX^P!(`1y!Yprsr%k!px5)fG}4Wm){yqgaN%}B${<7hpuRbGYu!6tEisX+-j5i3W1Zjdrgj+m zs7o?`?O4Z$XPgY(mlnaSevVG-Jc1Uo_GVNEt9-*ZC~Fuu{p+0)cR0y`llDoXdtFH1 zS;e%;RYskV&AL2n!M%M_+RDh}>sv!N;21(1yV^xrN3?ROh3(9 zVh`=uYfC$_Y1^RKU>9qWA6cmwvz%OS_9S8pmy{iOK-!Lzgwu@nfc3Nv zAc_+dHS56^7LUq0J>Y7;N(gg%^Q0yv4>+x*w+L%t4Nv5>^BReY$vitJhrkaYH9*W#TjIj@lv-XVd0k zg{bsBiku^yE{L-p=}Xs!$^luUObZW{z{OQk(s`*N5AMNWX%bdaryQnqYK|A(nFvEM zXc|uu8xJofLP527;xB|Zt?f96&^DJ$>qIG+)aA{Q+Q-U`#4qWn`;!T}=*IevWDYX~ zt+JW+PN>Qj9CLv!#8S#M*p-OFT8+dyk&;^IS05{Bo3@G6q_*T>O&?>8`0}TtRwWof zb9c4Y>HF7pY}t>X#3h5JS+rj4*c}-&{%X4Ak3Y^NVr|0I&~HVOY%I)ZpJdGM+MKN}D$FeO|`hypzn+>nMt8g+_yHzP@5-WG6`7;&7u z|DKfiiR*#-NwF023Qs2gHa-uO5dNLtU(lwpuP7OydmuyzBdH&=u)j&N{|8z?rN0qP z(I2=bC5I_<7z0NLB9ch=Q4J z4G%x3UpoZj+pv=O@;%o|#ll0ZHj_6B(Uj?z`aLRQw=SCE+%pMBbI*M){*xK*P7dH%1L`wxe>l$TO(#Z}c91L8kc2UVaTpPde>zN|#o@ zE!js(q{QYpU0A`6VNO-NX9rE-qdZp+~|z2 zifih)+g@{Q<8QS87Pi3uo7m!4_xTB1;J?Eb5eHMzfO>)%Z4m@$AZuQ8#{kZzG4##B z=spdPvR~&Dz&x`EItqb6Vse-|KoFCPqo5p02pGf%&<&Uf5C#xl>9k}rhasq+umvD6 zxX_1z3XYq+e(99-0Qdk1vKWKT!H9-#L_h<8-iT@O5D7#jhvp--a!=+v9RgMGwsjS1v|B z0wm=bin$+g*Ga?BNw$LPCp1;yJ7uu_RPV>Jx;-3q#q3>C+*?<%p~u|7_8VtxF(c#< zuW8R=YOUlaTHDrO#*8lK6m{--Z54lE_IY-%so`V z^~^Z!=VJn-sv&hVj)_a^%=N!u3+X-w6aPS*)jr&N8o3p?&1~&!yGte(d2k(Ol`?h( zEo+;N%8Oe&#!udIcF0T->t?NSMVFy8+8v?=a(I$ftM$&7t0s1xYR5T-J8QjOqVz_e z>-XCQkH&qe>QwCLdPSPI+i*Lj�Aq5%K1`Z5Pr_Qc&yr$gBN(&+JdsCm>3Pac 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