Skip to main content

Retrieval-Augmented Generation (RAG)

warning

For the following tutorial, we use DINUM instance of OpenGateLLM, called Albert API. If your are not a user of this instance, please refer to the OpenGateLLM readme to install and configure your own instance. You need to have a text-generation or image-text-to-text model, a text-embeddings-inference model and vector database to run this tutorial.

%pip install -qU wget openai

import os
from urllib.parse import urljoin

from openai import OpenAI
import requests

First, setup your API key in the environment variable ALBERT_API_KEY for OpenAI client.

base_url = "https://albert.api.etalab.gouv.fr/v1"
api_key = os.getenv("ALBERT_API_KEY")
client = OpenAI(base_url=base_url, api_key=api_key)

headers = {"Authorization": f"Bearer {api_key}"} # for requests

Retrieve the list of available models with /v1/models endpoint for performe RAG with chat completions. Theses models have the type text-generation or image-text-to-text.

models = client.models.list().data

model = [model for model in models if model.type in ["text-generation", "image-text-to-text"]][0].id
print(f"Chat model found: {model}")
Chat model found: albert-small

Create a collection named tutorial. A collection is a group of documents that will be used to perform a RAG. To create a collection, we call the /v1/collections endpoint with the name of the collection.

response = requests.post(urljoin(base_url, "/v1/collections"), json={"name": "tutorial"}, headers=headers)
response.raise_for_status()

response = response.json()

collection_id = response["id"]
print(f"Collection ID: {collection_id}")
Collection ID: 2386

Retrieve a PDF file from internet to import into the collection.

response = requests.get(url="https://pdfobject.com/pdf/sample.pdf")
response.raise_for_status()

pdf_bytes = response.content
print(f"PDF content (base64 encoded): {pdf_bytes}")
PDF content (base64 encoded): b'%PDF-1.3\n%\xc4\xe5\xf2\xe5\xeb\xa7\xf3\xa0\xd0\xc4\xc6\n4 0 obj\n<< /Length 5 0 R /Filter /FlateDecode >>\nstream\nx\x01\x9dZ\xcb\x92\xdbF\x12\xbc\xe3+\xfa\xc8\x89\xf0\x8c\xd9\r>\x8f^\xd9\x8a\xf0\xc6\xda!\x87\xc7\xbb\x87\r\x1f0$4j\x07\x08R\x040\x9f\xbb\xdf\xb2\x99\xd5U\rP\xa4d\x8d\xf6\x11\xe2\x80\x8dFuVV\xd6\x03\xfc\xe8~s\x1f\xdd\x1c\xff]\xf9\xe0\xd6\xdb\xe0\xce\xb5\xfb\x8fk\xdd\xf7o:\xefv\x9d\xf3\xae\xdb}\xfa\xfd{7\x7fX\xcd\xe5?.N\xbf,p3\xbf,\xe7~\xbb\x9ao\xd2\xad\x11\x0f\xf0\xb2\xea\x9e\xff\xf0\x19\xbb\x83\xfb\xc7\xa3+W\xe9*\xfe]\x07\xe7\xe7+\xf7xp\xdf\xbf\xf5\x0fs\xe7\x8b\xc7\xf7n\xf6{u85\xb5{\xf7\xe3\xdb;\xf7\xf8\x97\xfb\xe9\x11\xc6\xce\xb9\xe9g6\xf4\x1b}\xccF6,C\xda0<\xcc\x0b\xef\xb8\xe1\xe3\x87\xd89\xfc\xafr]\xb4\xad\xdd\xff\x9a\xfa\xc1\xbd\x1dZ\xf7>\xfd\xffa|\xd8\x8d\xe7\x140\x1cH\x11\xb1{"\x06\xc3WezNI\xc3\xf9\x9c\xff\xba\xd9\xbf\x8e\xe7;\xe7\xd7nV\x1f\xee\xdc\xfd\xd6\xbb\x99\xc3\xbf\xe5\xd2\xcd\xe2\xa9\x1bxm\xbd.\xe4\xdab\xebf\xfbc#\xebCZ\xe6K\\\xebb\xcf;6\xe9\xd2\x06W\xaaC\xdd\x7fw\x07G\xe9\xaa\r\xbe\xdb\x1d\xdb\xae\xde\xf5u?\xd4\xe7\xbb\xe2\x1e\xfb\xf39>`\xa7j\x1fO\xb1\xdb\xc5\xf6Y\x9f\xccohI\xdd\xc4\x1e\x87\x847t1\xeez\xf7\xa1\xea\xea\xa6\x19:\\\x0f%\xbf(\xee\xfd\x1c\x1f\xdeW\xbb\xd8\xc4.\xf2\x8b\x12\xe7\xe1&4\xe6\xb8\x8fG\xeea&\xfb\x05L\xae\xf7\\\x85O\xf2(\xdc}\x88\x0f\xd8\xe9O\xf7\xf8\xcf\xe4\xbd\x1b\x80\x92\t\x9f\x00\xba\xde\\\x03\xfaf8WO\xb1\x1fxJ\xf8Y\x9e\xb0\xc0\t\xba\x01G<\xc9\x81\x82\x1eh\x03\x9b~\x1d\x9a\xa6\x12\xe8\x9354\xea\xa5n`\xde*\xdd\xbb\x84u-\xce\xf5\x80\xfd\xe4\xbc\xee~\x89\xe3\xfd\xd4G\xb9m\x9d\xae\xf1x]}8\x01\\\xa7\xd8\xae&>\\( \x1e\xab\x87\x1e;-t+\x8f\xa74\xf0\xcb\xd0\x01\xe8\xa0wnp\xf1\x9d\xd2\xe2\x18[xR\xcf\xe1\x03>TM\xfc8T\x078\x98,!\xfe[\xac\xaf\xcf\x15i >\xaf\x9f\xeb\x1e\xc0\xbe\x16\xcdmYH\\M\xe9y\xfaP\x19?\xfbs\x85\x07\x18C=m\xda\x1d\x0f\x87\xe3\xfeH\xae\xe9\x01\xcb \xb6\xdc\x15\xa4\xf4\x91\\\xb0\x93\x06\x1e\xf5\x10AvE?\xac\xf1\x01\xb4\xdc\xc7C\xdd\xf6Bu?\x07aH\t\xbf\x9c\xbbY:%"R.\x05\x1eM\x88C\x10\xb8($^\x8b\t\xf8S-\x08K\xb8\xe2\xaf\xa1\xeb\x8f\xb2f\xa5\x1ba\xc1&\xa4@\xf2kX\x02/\xc06|\x90U\xf4\x0b\xbc\x0ev\xe0\xcfW\xe2\x16\xe6\x9bk\xdc~n{x\x01\xd0\xddC\xb4\xe4\x19\xe5\x1a\xcc"\x82k=cY\xc24\xba\r\x9e\xb7PX,\x96\xc5\xec\xcd\xb9"pz\xca\xc5\x1c\xe7i\xaa,\x135\r\xa7\xbd4\xbc\xdc\xe2\xd4M|\x1e\x1a\xd9Y\xf9S\x92\x18\xbb\xe1\x0c\xca3\x08\xcc5[\xdcT\xb7\xf1@\xa6aO\xde\xbf\x80\xf4\xcd~\xa8\xdb\xba\x02\xcb\x96\x1a\x8f\x8b\x15>t\xbb\xba\xa9\xcf\xb1\xfb8\xd4X\'[\x80\xb5\x0ct\xc1\t\xd7\xf4a\x8b9>\x88Q\xb6\'\xf4|\xd6\x8bF|\x19\xcd"\xa9\xfbeL\x07\x88\xca\x15\x0b\xff\x9d\x8c\xab\xbb>>\r\x8dP\x85\xd1\xc5\x13x>~\x1f\x11A\x07F\x02 \xe5\xd5\r\xfe\x958\x11\xc3\xd6\x8a\x00\x12\n\x83\x14\xe7\xe7\t\xb9.\x10x\x91\x00\xfe\xa1\x17=\x9d`r\x86\xc5$\x94,&j\x7fgJ\xb5\xdb\r\x87\x8ep&\xc5\xa3\x08\x01\xb4\n|\xa0\xb5j4\x83\xe7%\xf6\x15\xaeY8\xf8\r\xbeT\xc5\xb5\xb3\xad\xf1A\xac\xc3\xe3\xff,^\xa5\x8d\x01\t\xe1\nG\x15\t\xbfI\x81\x10\xa8\x8f\x9aR\x18\xd7\x94\x14\x03f\r\x04\x9f\x9a\n\xd1\t\xbe\xa9\xd9\x81\xba\x1e[,\xa3\x88\x0b$K_\xcc\xceC\x7f\x16\x9f,\xcdn\x1e\xe5\xe3\x10;\xaeT\xa6\x06\xa6/SH\xa3d \xe5NC\xf3\x12[\xc8La6\x18\xdeDI\tk\x0eC\xc10\xd1lo\x8a\xe9=\xcc}\xa9\xce1\xe5%;\xdf\x1c\xf6Ba\x9e\xc9\xe1\x85\xed\x8a\xa41\x03\xb1\xa1\xb8D\xf5u\x19\',oh$(\xc1d\x11_\xaa\x83<\x9e\xda%\xe0\xacp\xb5;6M\xdc!\x1f\xed\x058K!%\x11D\x9af\x84*;K\xf2Od\xc9\xb8\x1d\x968l\x04sT\x82\xf7I$yV\xd9\x1f\x85\x10\x18S\xc7\xf7u\xbb\x07\xd4K=vI\xda0e\xe1\xd0\xba\xb4d\xcaJ1\x89\x8b\xe9\xf6\x92i\xf0\x848\x85\xfa\xd6)\xceM\xab\xcb\xd5\xbc\x10.\xd2\x81f\x1e\xa9\xd1\x03\xb8\x1e\xe9\xa7\xfe\x06\xe8V7dr\x8c\x96,\xc5\x12\x06\x96\xfc$\x81\xe8i)\x97L\t\x0c#_\xaa\x943$%\xc6S.\xc4W[\xf0,\xb9\x17l\xb6[\xe1\xf2\xdf\x87\xee\x04\x9cb\xd7\x81\x0c\xa5}C\x8a5\xf1\x895\x91d,l\x9eYL\xa1f\xf5\x02\x10L/\x03q<T}/eN\xbe*\xd9_\xca\xb0\x05\xf6\x93\x92h\x83\x85Z\x87\xe5\xcc\x14x\x8d\xd9\xfbB\xc3\x03\xfd\xc0\x94\xfd\xdd\x17A\xbd\xad\x96\xd0\x96\xab(\xff\x80cZ\xd2>\x8bU\xa6\xec\x9a\xe6\xbe\xbb+xnr\xc83=\xb5\xac\x81 t\xc05]]\xe2\xe2\xefR\xa3\xd1d\xaec\x05\xa5\x82e\xf4\xf6T\x8fj@p\xa14\xd2e\xcc\xac?\xa4\xfa\x84\xdb\xcd\x13\xfd\x98dTzR\xc9\x88\xfd@\xd1\x97c3\xf4\'\xc9\x7f\xac\x1a\xf8\x98\xed\xa2\x98\xdc\xcf\xfa\x0cW\x19*\xef\xeb\xe19J\x85\xc3\xcd\xb8\x94\x0e\x7f\x19\x9a\xd3\xd0WIZ\'\xb6\x83\xfc\xcd7\xd4\x93a{C3\xa7\xbc\x11\x8e\xf0\xe1K\x1c\x9d\x02\xc7\x8f)\x9ch\xa4\xe0\x88K9\x91\xe0T\'\xf3D\x1f%z\x13A\x1cB5\xa5\x04B-\'\xbf\xb1\x96\xe1\xcf\xf3\xe3\x9f\x03e\x845\xa2%#\xe6\xb2T#\x163\xa9\x11Y^p#\xef\t\x0c\x13\t\xfe\xd0\x80\xc6\xdaT$P%\x14?V\x03]\xf5\x1c\x95\xcb\xa9B-`E\xc5\xde!h\x91\xc24\x00nv\xbd\x94$\xa5bL\xc7\x7f\x99\xad\xe8\xdc\xae\x1b\xa0\x12\xfc\xbbdk\x16\x7f\'\xe9\xc2\x89\xe3>\xdfV\xdd\x8c\x81\x12\x87\xbc\xdc\x15m\xd5\xbb\x89\xae\x11\x95\xb0\xc2\xb1\xa5S\xd2#\xe0\x02\\\x00\x05\x1eQ\xba\x97|\x98\xabqV\x8e\xbc\xb5d\x98\xbf;Wu\x07\xa1\xc4\xdfy\x03|\x7f\x9d\xbb4\xae\x02e\xa8\x1d\xda\x1d\xb4F\xa1\x94\xd4\xa5\xa4\xb1\xd6,0Bb\xb5\x1b\xe0\\\xb8\x86\x0f,`+\xbc`\xae\x81/r\xef$9TJ[\\T7\x86%\xb6\xa7,\xc2\xd4\xcf\'\xb3\xdb\xc0\x81\xc5W\xc05\xc7\xa7\xe39\xc9\x9bW\xc3\xa5I\xecq\x955\xe8\x16\t\x9f\xfcP\xb2\x91`\xa9\x9b\x13\xe3a\xab\xc4\xe5E\xa5\xa68\xb2&\xdb\x0fHJ\xb9zE;Sh\x12\x1c\x0f)=\xce\x0bJ\xd2\xb6JfXg+]&6F\x10X\x7f\xe9\x99\xcb\x7f\x15\x94\xad\xb6\xa7AZ\xfa\x82\xfej&\xe2Z\x03@T\xce\x8cg#a\xc5\x9fuh\x0c\x8b\\\xfb\xbd\xbe%-\xd1\x0f^a:\xf6\xcc\xa8P\x158\xd8 \x9d\xe7\xeex\x96\xa6\xd1\xea$\xea\xf1E\xaf\xee\x8c>\xb8\x83\x92\x81\x13P\x8cI\x14\x16E?&\x15\n\n2\x16\xf5\xb1\xdd\xc5\xfd\xd02\x8cM]\x98\xca\xd0\x11\x03e\x1c\xb9e\xaf\xa0*N}\x8f\xfb\xbb\x02\x97\x85\xeb\xd8\xe6\xb2%#\x8f\xf1\r\x85\xbd\x19\xd8\xa7bW\xcb\x9e\xdc\xbd\x8dO\x1f\xa6\xd4+\xbe\xaas/\xd1\xba]\xc1\x94\x04\xd1|\x1b<\xe6\x1e\x13\x817y\xdb\x80h]u\x8a5\xebP\xcb\xd5\x81\xac\xc39\x9c\xb5\xf6\x81]\x93\xc5\x10\xa3\x05\xb4\xe5\x01=\xc3\xe5Pu\x1d1\xc0<&]\x94\xd4\xafB\xbd\x03Cs\x15L-\x95\x92L\xf1\xf1\x18\xe3hIZ\xa8:\xa3\x87\xc0\xb5\xa9\xde@\xb1\xd5\x1b\x9e\x15\xed\xcb4\x18\xd8\xb2\xd2\x0e\xca7\x80~\xa9(\xeb\xaf\xa7\x19\x1b\xb1+\xfc\xa4\xb5),c{VT\xc6n\x93s\x0ed\x84]P\x0c\xd12\x98!\xb0\xb0R\xd6\xe2j\x95<\x0e\x86\x14Z\x8e\x1aJX\xac\x02m\xb8\xfb\xdc\xa1\xb0,\xdb\xa8\x8f\x08_\nTK6~\r\xfc\xc7\xc9L\xee\x1f<\xa9\x94\tK\x97L\x9e\xb5\x87\x97\x9f\x06\xa0\x03\xb7Q\x8b\xd2\xe8\x0b\x86\xb2\x85+\xac#\xf0|\xeadZ\x82\xe5\x9f\xd7A\x1d(^\xb6\x9c\x0b\xf4CW`Z\x06\xcd"\xc8&\x12S%L\xca\x18\x01jg\xa0\xfd\x17\xad\xb2W\xa2\x05"\x9aFs\x9c \xc9!(GZ\x13Z&\r\x12\x80\x96\x00,*\xef\xd1\x82\x02\xebz\x87J\xcdZ\x9c\xc04t\xfeplw\xd2d\xd8h\xcb\xd3\xae\n\x0b]\x96\x00\x0eZdxH\xa9P\xbe\x05\xf6\xb4\xa3\x0eis\x8a\xb8\xe0\xc4e\x02,\xb1\xb6\x1a\x8d\\\xb7\xe9\xcfn\x98\xe4\xfb\x82\xa3\xe0\x9b\x93\xdaO\x80\x05:W\xc0\x8e\x95\\*\xf9\x91\xef\x98!\xeb\x01G\xc8\xbd\x06\xe7\x0c\xcf\xe7\xea%\xee\x19\xa7\x96\x01\x02EZ\x16\x1a(%k\xa3\x91\xd0\x9cP$\xacq^)\x9a\x18{5vN\x92\xc9d\x8e-\x0c\x9c\\\x98\xa74\xa2\x83\xc0D,\x98E-\x01\r\x08\x89nJ\xaaaG\\a\x01H\x9f\x8a\xffD!l\xac\x13\xd8\x95\xe5\xd9- \x94\x94.\x95\xb7\xd6\xbb\xdf\xc0P\xb8\xd1\x80\xd4\t\xb5\xc2\xf8\xe0\xd2\xf4\xc6M\x1b9\xf8\xdd\xa6\xe0_\xe7\xa7\xf5\x8d\x00\xf8\xb9\xbds\xa6z,h\x0f\xd5\x80\xb6\x8a\x94R}\xf0\x04\xeaR\xf7R\x19\x8f\x91\x07\xe1\x96\\o\xfc\xe3\xec[zR\x12\xd5\xe2\x81~\xcf\xc5\xcf\xbd\xe5**\xb48Y\x96a3\x86\xe0H|#\x03y/-\xb5\xf1^Z\x99\x8b\xc2A\xb9\xc0\x8c\xc1\x08)\xac\xbd\xf1$\x81\xe6\xd2\x1c\x9c\xec\x88\xfe\xa0ku\xa2+\xc5\x83\x0e\xafi\x12\xbdM\x13\xa5\xfeB0\xbcvX\xbd@ea>\xcc\xd3\xff\x89t\x90&,>\xc08`d#\x00O\xa2Y=\x82\x12\xd1"D\x06\x1e\xed\x919\x90L\x17y!2:\x91\xc5,E/2\x0fVX5\xfd\xfbT\xefYF\xe4,\xc5h\xd3\xa1\xa3\xed/#\x84\x1a\xd5\xabG\x16\x90\xdd\xb9\xc8\x12\xa7\xc9\x1f\xf1\xd0\xd7\x0f@T\x10"\xd6\xa8\xaa\xf9\x999\xce\xcaF\x1d\xb5"@q\x8b5~X\xf4J\xa9^b\xb6h \xa6@@\xad\x9f\xe6>8PN}<\xc5\x8fG\xe8\'\xd0\x11\x16!\x84\xa9\xd4\r\xdeQ\xb4\x91p\x80\xbab"\xfemk\xce8\x0bv\xf6\xbc\xe4)2R!\xc1R^\x90\x1b\xa5\xf4!\x03T\n\x88\xb5\xb6\xf2\xd8\xcd\x84\x84\r+\xc1\xbd+F\xa7P\x87\xb4\xde\xb0\xe4\x8f=\xf0V)Oub\x1aR\x8aT\xe0\xf9|<\xea<l\x9b\xc3\x89\x8a.\xf9\xdad\x8ca\x95\xc7]j8\x1f>Q\xf2/\x82{\xb3\x1fX\xde\x1a\xbd\xcaq\\\xce6DI\xea}\x18\x90\xd0Z\x15Z\x8e\x91Q\n\x99gS\xfc\x16/\\0j\x19\x9ba8@\xa7\x006\x90e\x8b\xc5\x02\x12gMm=\xa7\xd5\xb86\x0eI\xf8\x17\x9f\xc3\xf7\x0bi\xf2\xa8\x0e\xf0\x94!\x1b~a\x81M\x10<\x83\\\xa6)p\xa9\x99\xb3\x859\x16\x19\ta\xb1\x9d\xca\x91\x96\xe6x\x0b\xa4\xb9\x0e\xe5m\x02\xef\xc3\xb6H\xa7\xf9"\xa67k\x8b%\x88b\x84\x95\xa8/@XIX\xf6.\x0e\x1d\x95\x9bQV\rQ\xbe\x16\xd1h\xb4Y\x07\xc7\xda2\xd3"\x03\x15\x915:\x1e\x8b.\x1b\x9c\xday\xa9W\'4l}\x94\x9e\xcd\xe8)\xa3\x01\xa9*\xd0\x1a\xa9\xff\xe8\xd9<\xd5\xbb+Hv\xc1FB\xbb\xe6X1O\xd6(E\xb9f\x85%\x99\x14slf\xa3]5\xc5f\x91i\xaa\xad\xa5\xf5\x91\xe9\xc3ldI*\x14\xf9\nP\x8b\xcb\xbab\t\xd1\xbe\x00\x95/R\'\xad\x82!\xc9GX&fO\xcd\x83-1a\x92\xda_U\x93\x95lNm\xb9!\x90\x9ar\xf2\xa6\xd3\xbaC\xe6\x86q\x14cCH\x8e^\xa6\xc5\xad\x1d\x91\xadLj\x8es\xe6a\xb95i\xc4\x80\x87F\xaf\xf4\xc2\xe3\xe8\xcc\xd8\xc0\x1aLtlz\xa6\xd4\xfe\xa0\xfb1\'\x8aZ\x1f\xdb\x11\xc9\xaf\xad\xd0\x96\xc8zWHjK\x87\xda\x10\xfb\x8f\x13\x8e\xfc&K_\xfdi\xf3\x82#X\x06\x0e\x0c\xc2O\xa7\xe16\xd8\x95\xcek\xccd\x85\xb1\x87/|\xd2\x18\x11\x1b%\x1fI\xed\x9c&%\x06\x1c\xba\xc1\xd4\xa0\x90A\x8aE \xee\xa8\xfc\xd3\xe4V\xde\x93\xea\xfd\xbc+\x0f\x01.\x85}\x1c\xbfj\x1c\xf9-\x19\xc0I\xfc7L\x0c\x97\xb7\xe6\xaf7\'\x86\x92\xb05\xff\xf0\x0c\xe6:Zg]\x9ag\xb2\x86\x13\xc1\x91j\xcc\xa0\xf2&\x8d\xe1\xa6\x9d\x05\x07\xe4\x152\x1bF\xdd\xe9\xb8$e\xeaLdU\xba\xc8i\xcbD\x1e\rG\xde<):\xd0G\xe5\x02\x88\x8e\xfa\xa5\xaaw\x18\xbc\xc8\xd8]\x89\xc9L\xc6\x80\xc9\xf3E\\OI\xe1\xc2\x00\x19\x0e\xbf\xbe*Z\xde\x1a\xb9\xf2\x9d\x8fS\xbdv\xe9\xfd\x87\xf8\x18\xef?\x1e\x9c\xe4u\xc7\xc2\xec\xc1aF\xed\xa6/X\x1cjN\x97,\x912\r@\x7f\xbe\xc0\xb8\x99\x03W\x98\t]\x05\xc4/\xc7\xf3\x13_\xa6\xa8dHA\xaa\x03VqXqO\xcd\xe6\xb4\x0fr\xa9\xc1O\xfcG\xb6#\x81\x19\xddp\x07\x0b\x10\xd5Y\xceU\x92\xa0\x00bj\x135\x8a\x8e\x9d\xd4l|\x7f\x885\xd2\xca\x8c\x15 \x85VF\xb5\x0b\xa3\x12C$O/\x17&N\xcc\xc9SFf\xe9g\x181\xfb\xf1\x81\xbaE\x1a\x8e\xb0\xce\xc7E\xab\x9c\x98\xfd\xea\x01\xc1\xa9t\x13\x96\xa6wI\xa3\xe0\xc8\xaf\x83\xbe\xa2%\\\xc1\xae+|\xc7\xc3\xd9x,\x8c\x11\x0c\x1f\x1aE%\xe0u\xe0\x95\xf0D\xbd\xc0Qjzk\xa6\xea\xa1#\x9eg\x19s\xe9\xf8\nM\xad\xc0\x85cY\xed\xea\xd9\x16\xd80u\x85*F\x90g:\xd8\xc7g\x8c9\xf0\xc3\x1f\xac\xb6l+e\t\x92\x9f\xfdXa*C\x1c\xaa\xbcI\xaf\xe6\xd2\xef\x17\xd8\xb3\xc0\x98\xee\xb8\x8b\x82\xe4\xf8H\xe0\x8c\xb1\xe6\xf1\x9b^\xa0\xad\x90S\xaf\xa0\xc3+-\x8cI1%\x81\xad\xf6\xbb\x08\xc2%n5]&D\x87\x8a\x87\xca\'\xc2oYp\x11o\xc3\x88\x88z\x9fI\xeeT\x9d!%\x18\xae\x89\xfe$\xe6\xf1\xf5 \x18\x9b+,\x1e\x12\x1a\xb1\x83fr\xa4\xb8\xd4\xdf\'\xb1\xd0;G\xbc\x8a\xc7\x1bznk\x13M\xf2\x0c/F\xe9G\x95\x14\xcf.\xfd*O\x08\xbd`\x17\x90\xcb\x15\xbdZ\xc6\x1f\xc4\xa4\xde\x0cF\x8b\x9f\xb0\x01\x1a\x8f/\xf2\xefv|C,\xaf@\xb4\x86E\xec\xda\xa7\xdf\xf5Xn\xe5\xa3;\xfd\xe9\x10:4\xd3\x00\xfe\xe4&\x95\r8)>\x8bQ\x04\x923r\x9d\xb2j\xd5\x83\x1a\xd8\x84\x83\x12+\xb5m\xc5\t\x96\xd1\xda\xb3<\x85\x94\x01b\x03\x883\xb8\x0cB\x86\x8dcl\xa5\xbf\xdd+\xaf\x195\x05\xee\x06`l\xa1\xec\xc9d\xfb\x91\x92\xed@\x7f\x8e\xc5\x1e\xec4\xc3\xf18iR^/\xe0\xab[\x93\\\x91\x15LP\xf48|s\x0be\x86uVGy\x96\x16\x93qT\x16\x1b\x92\x06a&/\x15\xf3+\xfb-\x14\xe8\xd3\x1f\xa9\xa4:_f1\xda+S\xce\xf0k\x1a2U\xa8\x84y$\xe0\x9e\x0e\x17\x93O\xe5g\\Z\xf6\xdb\x18\x8e\x9d\xd9dt\xa0\xfe\xe2;#y/\x05U7\xa8X\xb6X+\xc18O\x08\x8ac\xff\xe6\x05\xee\xcd\xfe`\x8d~\xc3\xf8\xa8\x93\x1d\x8ea\x01\x95Mp~\xfb?\xa7zo\xd1\nendstream\nendobj\n5 0 obj\n3866\nendobj\n2 0 obj\n<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]\n>>\nendobj\n6 0 obj\n<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R >> /Font << /F1.0 8 0 R\n/F3.0 10 0 R /F2.0 9 0 R >> >>\nendobj\n11 0 obj\n<< /Length 12 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>\nstream\nx\x01\x85ROH\x14Q\x1c\xfe\xcd6\x12\x84\x88A\x85x\x88w\n\t\x95)\xac\xac\xa0\xdavuY\x95m[\x95\xd2\xa2\x18g\xdf\xba\xa3\xb33\xd3\x9b\xd95\xc5\x93\x04]\xa2<u\x0f\xa2ct\xec\xd0\xa1\x9b\x97\xa2\xc0\xacK\xd7 \xa9 \x08<u\xe8\xfb\xcd\xec\xea(\x84oy;\xdf\xfb\xfd\xfd~\xdf{Dm\x9d\xa6\xef;)ATsC\x95+\xa5\xa7nNM\x8b\x83\x1f)E\x1d\xd4NX\xa6\x15\xf8\xe9bq\x8c\xb1\xeb\xb9\x92\xbf\xbb\xd7\xd6g\xd2\xd8\xb2\xde\xc7\xb5v\xfb\xf6=\xb5\x95e`!\xea-\xb6\xb7\x10\xfa!\x91f\x00\x1f\x99\x9f(e\x80\xb3\xc0\x1d\x96\xaf\xd8>\x01<X\x0e\xac\x1a\xf0#\xa2\x03\x0f\x9a\xb90\xd3\xd1\x9ct\xa5\xb2-\x91S\xe6\xa2(*\xafb;I\xae\xfb\xf9\xb9\xc6\xbe\x8b\xb5\x89\x83\xfe\\\x8ff\xd6\x8e\xbd\xb3\xea\xaa\xd1L\xd4\xb4\xf7D\xa1\xbc\x0f\xaeD\x19\xcf_T\xf6l5\x14\xa7\r\xe3\x9cHC\x1a)\xf2\xae\xd5\xdf+L\xc7\x11\x91+\x10J\x06R5d\xb9\x9fjN\x9du\xe0u\x18\xbb]\xba\x93\xe3\xf8\xf6\x10\xa5>\xc9`\xa8\x89\xb5\xe9\xb2\x99\x1d\x85}\x00v*\xcb\xec\x10\xf0\x05\xe8\xf1\xb2b\x0f\xe7\x81{a\xff[Q\xc3\x93\xc0\'a?d\x87y\xd6\xad\x1f\xf6\x17\xaeS\xe0{\x84=5\xe0\xce\x14\xae\xc5\xf1\xda\x8a\x1f^-\x01C\xf7T#h\x8csM\xc4\xd3\xd79s\xa4\x88\xef1\xd4\x19\x98\xf7F9\xa6\x0b1w\x96\xaa\x137\x80;a\x1fY\xaaf\n\xb1]\xfb\xae\xea%\xee{\x02w\xd3\xe3;\xd1\x9b9\x0b\\\xa0\x1cIr\xb1\x15\xd9\x14\xd0<\tX\x14}\x8b\xb0I\x0e<>\xce\x1eU\xe0w\xa8\x98\xc0\x1c\xb9\x89\xdc\xcd(\xf7\x1e\xd5\x11\x1bg\xa3R\x81Vz\x8dW\xc6O\xe3\xb9\xf1\xc5\xf8el\x18\xcf\x80~\xacv\xd7{|\xff\xe9\xe3\x15u\xd7\xb6><\xf9\x8dz\xdc9\xae\xbd\x9d\x1bUaVqe\x0b\xdd\xff\xc72\x84\x8f\xd9\'9\xa6\xc1\xd3\xa1YXk\xd8v\xe4\x0f\x9a\xccL\xb0\x0c(\xc4\x7f\x05>\x97\xfa\x92\x13U\xdc\xd5\xee\xed\xb8E\x12\xccP>,l%\xbaKTn)\xd4\xea=\x83J\xac\x1c+\xd8\x00vp\x92\xc4,Z\x1c\xb8Sk\xba9xw\xd8"zm\xf9MW\xb2\xeb\x86\xfe\xfa\xf6z\xfb\xda\xf2\x1em\xca\xa8)(\x13\xcd\xb3Df\x94\xb1[\xa3\xe4\xddx\xdb\xfdf\x91\x11\x9f8:\xbe\xe7\xbd\x8aZ\xc9\xfeIE\x10?\x859Z*\xf2\x14U\xf4VP\xd6\xc4og\x0e~\x1b\xb6~\\?\xa5\xe7\xf5A\xfd<\t=\xad\x9f\xd1\xaf\xe8\xa3\x11\xbe\x0ctI\xcf\xc2sQ\x1f\xa3I\xf0\xb0i!\xe2\x12\xa0\x8a\x833\xd4NTc\x8d\x03\xe2)\xf1\xf2\xb4[d\x91\xfd\x0f@\x19\xfdf\nendstream\nendobj\n12 0 obj\n704\nendobj\n7 0 obj\n[ /ICCBased 11 0 R ]\nendobj\n3 0 obj\n<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>\nendobj\n13 0 obj\n<< /Type /Catalog /Pages 3 0 R >>\nendobj\n14 0 obj\n<< /Length 15 0 R /Length1 3432 /Filter /FlateDecode >>\nstream\nx\x01\xadVmh[\xd7\x19>\xe7\\Y\x92\xa5H\x96\xe4+)\x96lY\xd7\xb2ndI\xd6\xa7%\xd9\xa9?d\xc7\xb2\xe58s\xfcQ;\xba\x86$v\xfc\x9d\xd9\xab\x97\xba!\x81n\xf5\xc262\xfd\xe8\xf2\xab\xa5\xb0\x1f%\x1d\x85B\xe9\xb4A\x83j\xf6#\x8c}\xd0\xb2\x1f\x86u?\xb6d,\x85\x15\xc6\x18\xa3?\x92\r\xc6l\xed9W\xb2Y\x87)\x85M\xe2\xd1y\xdf\xf7\x9c\xf3\xde\xf7<\xe7}\xdf+B\t!\xa7\xc8.\x11Hvikq\x9b\xbcH\x9e\xc1\xf2k\xa0\xbcts\xc7KD|\t\xfd6t\xcd\xea\xf6\xdaV\xc82\xfa\x0b\xe8w\ta\xef\xafm\xde^\x8d\xben\xa9`*K\x88\xee\xe9\xfa\xca\xe2\xf2_;}\x17\xe1\xb0\x0b\xeb\xd3\xeb0h\x7f\xc5\xfe\x01}\x13z\xfb\xfa\xd6\xce-\xfb\xab\xf4C\xe8\xf7\xa0\x877_XZ\xd4\xc7\x0c\xab\xd0\x7f\n\xfd\xf4\xd6\xe2\xadm\xe6\x17F\xa0\x7f\x0c\xdd\xfb\xb5\xc5\xad\x95\x7f\xfd\xe4c+\xf4\xa7\xd0\xe3\xdb/\xbc\xb8C\xde\xa27\x081\x05\xa0wo\xdfX\xd9\xde&\x869\xe8\x0b\xd0\xf5\x00\xc5\x97\x7fN\x11-y\x17\xa3\x97L\xd5,\xaa\xf9\x7f\xfaa\xd8-\x9c\xe0A\xa3\xda\xeaN\x9892ik\x82\xee\xc8\xa0\x8ezR\xaf\x8e\x06\xceq\x19|\x8c\x97I\xfdd\xe1\xc7\x94\xbe\xaa\x94i\xe5;e2\xdc\xf2\x01\xd6\x08W\xaft\x96\t\r{\xbd\xb9\x8d\xe1\x12]\x80\xc2\xc20\x04%HB\xd8;R\x12\xfc#\xd3\x05\x9f\xe2-z\x8bc\xcbE\xef\x88w}q\xb9\xa4\xf1\xab#&V\x8aJ\xd4["3\x85\r\xfc>_\x90JY\xc5},\xae(\xcaY\xf8\xd1p?\xd8\x82\xe5E\x05\x1e\xae\xd7<`TM\xd1\x03,\xaa\x0b\x8f{K\x82<Y\x98*\x94v\x87\xdd\xa5\xec\xb0\xe2\x96$o\xae\xf4p\xb2Pz8\xec\x96\x14\x05\xab\xb4\xc7\x91"\xe2ol\x9c\xae\xc5\xacC\xcc\xda \xe6\xf5U/3\xf0\x01\x17J\xb1\xc8}Bc\xb2TzX,\xba\x8b8\x89j\xf1IeJj\x06\x9c\x94\xaf\x11\xfc\xb92\xcdN\x16\xf8T\xd6\'\xb9\xb9\xc1\'\xf9$\xc4\xa1\x0c\xc3w}x|\xa6\x90C$\x12\x8f\xc4\xf0\xc5\x94\x1a\x8f\x03\xc5\xdaS\x08\xcf\xa8Rj\xfa?Qj\xfe2\x946|)J-\xc7\x91~\x8eR+b\xb6pJm\'S\xea\xfb\x02B\x8f\x19\xce\x9e\xc0\xf0n\x95\xe1\xdd\x13\x18n\xfc\x0f\x86y\xfa2\x92@\xd9\xfd\x0c\xc5!\x10\x1d1\x12dI\x14\xe9\x14\x8d\xc5\xfd\x92U\xf2[%+\xdd;\xdc\xa5\xbb\x87\xb7\xe8==\xfdL\x7f\x88\x1d\xd5}il^`\x1f\xa1V\x9b\xc8V\x99\xb8\xa3{(U\x13\x11B\xc8m\x0bt@|\\&\xba\xc7\x83u\xe4\xf7\xf0\xfd\x17\x80]\x1et\xa3$t\xd8\xa2#\x1d@\x0f0\x06(\xc0\x06p\x1b\xf8\x1e\xf0\x06\xf0\x0e\xf0\x01\xf0!`\xba\x8c\xc8\xcc\x88\x8c"\xb2\x8c5\x99\xf00\xbbhf>\x01b?KuE\x98\xef\xfc\'\xe9\xb5\xe9D|\xf6\xeb\x03O\x1e\r\xde\xba\xd2\x9d\xb9\xb4\x95\x12\xd9}\xcfW\xee,\xcf\xbd2\xd3\xc1\x1e\x1c\xa4\x03\xb3w\x176\x8aS\x12\x0e@\t\xe2\xa7\x7fC\xfc\xf5\xa4\x95G\xae9\x8e\\\xbb_c\x81\xe2y:<\xaf\xd1*\xa5$k\x12\xbf\xe7\xe9\x0f\x0f\xf3"}\x99~\x93v\x8b\x07iz\x1d\xcd\x95s\xc8\xb9\x88\xa9\\8\xc9Ke\xd2\x04.\xcc \x93sa\x06\x0fd\x1f6\x8c:\xf0a\xab\xf2a\x03\x1f\xb6#>l\xe0\xc3\x06>l\xe0\xc3\x06>l\xe0\xc3\x06>l\xe0\xc3\x06>l\xe0\xc3\x06>l\xe0\xc3\x06>lU>\x08\xe2;\xe2\x04\xd1\xa9D\xc8>\xc9\x8ax\x13\x0e\x95\x9e\xf3TH\xcc\xf4\xb6\xddX;\xfc\xa3HM\xcb\x8b\x9eT>HsM\xf1\xb1\xe8\xe25\x84\xaf\xd0\xcb\xf3\xb3\xc1l\xa7\x93\xf3!U>c)\xf6\x88\xf4\x91\x99=\xd2\x8a\xd6\xcb\xa3o\xb5pn\x90\x1c\xb5[m\xc5)\x8c8\x8d\x91_\x05d;d{M\x0e\xe2t|\xbe\x0b#\x9f\x1bx\x0c\x1e\xfd\x98\xec\x01\x874\x19\x11|mf\xdc\x9a\x879=\x82\x1a][\x84\xa5|Z\x0f;\xba\xc23\x11!\xd5\xd5\x0f\xd5\xc3X\xa3(\x04\xce)\xa9\xd0\xa5\x91p07\x17\xeaP\xc6\xa2\x1dC3\xc1\x9e\xab9Y\xa4\x1d\xe3k}\x91\xf9|\xf8\xcc\x90\x92\x88\x14r\xa1\xe0\xe0\xa4?\xf6|\x9f\x9f\xb1\xde\x99\xa4\xd3\x16\x1cMu\r\x9eq\x18\x0c\x8d\xfe\x81td(\xd8\xd8\xd4\xadd\x87\x17\xfa\x9a\xed\xd1|\xb2{(p\xdad\x14\xdb\xcf\xc6b\x03r\x83\x18\x1d\xe7\xf7\xe7\xa8<\xa3\x9f23\x89\x93\x11\xf2\xfa\x1e(hTO\xdc\xf7\xb9\xd3\xef\x91\x00o\xe7`"\x80\xd3\xd5\x03\xcd\xfb\xd51\xb1\x8f\xb4\xd6b\x9b\x03\x90\x8140\x02\xcc\x01\xab\xc0M\xe0\xbb\xc0k\xc0\xdb\xc0\x03\xe0\x97\x80\xe92\x8a\xe3\xb7\x10>\x05\xd8\xe5\xaa\xe7<\xe7\xcd\x01\xde4H\xa3f\xf8\xd4Xm=\xc8\xc2d?=\xca{\x9d\x19\x0c:8o\x99$\x84\xe7h\xcaL#4e\xadr\\w\xccnW\xbf6\x93\x16\xeb\xe6\xa7\x92\xbd\xadzg\xfcB\xca\x9bM\xb4^\x99\x08\x0c\xa7|z&9<\x06\xa7x\x8a6G\xfa\xdab\xa3q\x17-\xb8S\x13\x89`O{\x83+\xdc\xd3;\x90\x0e\x1a\xe8R\xfe\xa2;\x98p\xb6\xb46\xd4\t\xcc$\x9d\x8d\xe5r\xf6\xf6H\xd3\xb9\x16\xbbHi\x9d\xb9\x81\x8e\x06\xbb}fWd@\xb9*\xe73mv)\xe4\xe8H\xb6\x185L\xdf`\xe6\xbc6U\x9e\xd2?\x80W7X\x19\xd8C\x1e\xf1\x9a\xe0\x19\xd5|\x9cQ\x8d\xe0\xb0\x11\x87m\x06\x9f"d\x112\x81\xdc\xc2\xab\xb0\x8d+\x80\x91W\xbd\x94F\x95\xd7R(\x93Hg|f\xeaC\n\xf9\xa5~\x81\xf3\xd2I\xdfcM\x99K\xbd\xa1\xe9~\xd9\x95\x9e\xed-\xdc2\x8a\xa6\xafNe.\xc4\x9c\xf4\x8d\xc3U\xa1-3\x16L\\H\xba\x0eR\xd7.D\xdas\xcb\xd9\x9e\xa5\xb1\x00]\x9a\x9f\x9d\x95\x87\x94|z\xae\xcf\xeb\xcf\xce"\xb4\x0c\xc2\x1cG-\x0b\xc4\xb9\xa7\xfea\xe07.X\x10\r\xef\x07D\xed\x07IkFd\x1f\x1d\xa4\xb1\x0c\x1fu\x0f\xfb\r\xb3\x90\x18\xa9\xec\xe1\xa7Z/1\x9c\x82\xe1D|4\xf1\xaa\xdfG{|\x02\xa0\x0b\xd6\x917!\x94\xaaJ#6\x98\x88\x05\xf0\x021 \x0bL\x02\x0b\xc06\xb0\x0b\xd4#=,(-\x17w\xf5&qa\xb7\xab\xeaj\x1f\xc2\x93\xaa\xc2]\xb9\xe0\xca\x05W.\xb8r\xc1\x95\x0b\xae\\p\xe5\x82+\x17\\\xb9TW-peAd~D\xe8G\xa2\xc9x\x84\x05\x89V\x8d7\x02k\x04\xc7m\xc1\x8a\x04\xcfG~v\xdek\xdc\x80\x1e\xb0\xab[(\xd1c\xcb\x1e\x89\x82\x03.\xf1^\x99\xb4\xd6j\xd8\xfe_"\xbf=\xad\xce\x17\xa1:\\\xa2\xce\x97\xca\x88\xceP\xbf\x1cJ{\x8c\xa2#\xd8\xeb\x0ff$\x93h\x91\xfb\xa3\xbd\x85\x06f\x9a\xea\xf5\xa4\xc2\x1e\x1dc\xec\xe0\x90\xfaB\x13\xcf\xf9\x9ac\xd9\xf6\xc3\x07t\xa4}0\xd1r:\xdc/\x1f\xbeG\xa7\x83\xb9x\xf3P\xbag\x90\xd9\xe5\x84\xe7\x15\x9c\x1d9\x97\xa9L\xd2\xbf#\xe7N\x93 y\xa7L\xc2\x08\xd4A\x9cj\xbe9p\x1a\xde\x8b\xf9\xc8o\x86\xe1 a\xc8\x06p\xc1mG\xf9\xc7e^\xdb\x06\x8cr\xb5_\xcb\xe8\xd7\xf2Q\xbf\x96\xd1\xafe\xf4k\x19\xfdZF\xbf\x96\xd1\xafe\xf4k\x19\xfdZF\xbf\x96\xd1\xafe\xf4k\x19\xfdZF\xbf\x06\xb7\xfc\xfd\xc53YB8\xfc\r*\xa9\xbc\xd9kR,\xee\xb4&=(\xef\xda\xbb\xacJ\x90\xcf\x9ai\x93\x8f:"\xaf\xe9qf\xbb>\x9d\x9a\xce\xb4xz\xa6\x92g\xceu\xc9\x06&\xfe\xe9\xca\x8d\xe6\xd4D<1\x1eor\xc6\xc6K4;2\x1b:\x7f-}\xf6Z>\xe0\x0c\xf6\xb4\xdd;\x98(\x7f\xebvb~8\x10\xc8)\x89Ne\xb4\x93\xe7\xab\n\xe1w\x83\xaf]m\xe8}F\xad\xc2\x9fa!?\xff\xfev\xeb\xf1\xe8\xa8L"\xa3\x1fA\xafW\xe3\xe5\x13\xd8\'\xbcU\t\x11\xb7f\xf5\xf0G\x95y\xcd%\xd5\x13\x9f9\xfa\x18\xe9S\x92\xa0\x0e\\\xc3]\x92\xa6\x9f\x904\xeb\x07\x96\x88\x04\xd9\x81\xb9&r\x87d\x04\x03\xc9\xb0&\xb5\xce\x9a\xd1\x08^&\xf7\xa9\x86\xdea\x11v\x97\xdd\x17\xd6\x85\x7f\xaa^\x8dd\x13\xcfm\x03\xaa\xff7\xf0\xa2\x85\xf8>\xe6\xaa\xd1\xdbj\xcf\xd6\xe2UE&\x86f\xf3ss\xa1\xfc\xca\xe6\xcd\x95\x9d\x8d\xa5\xc5\x89\x95\x97V:g7wn,^\xd8X[\xdf\xe1\xd1U\xbd\x90\xca\x0f\xf8\xff\x9d\x13>F\xd8\x04r\x06\x97\x9aD\xf7\x1e&yr\x11e3\x83\x1c@\xf5\x93\xd0\xbf\x01\xeb\x00\xad\xfa\nendstream\nendobj\n15 0 obj\n2176\nendobj\n16 0 obj\n<< /Type /FontDescriptor /Ascent 931 /CapHeight 723 /Descent -213 /Flags 32\n/FontBBox [-337 -219 1111 931] /FontName /NBUHVV+HelveticaNeue-UltraLight\n/ItalicAngle 0 /StemV 20 /Leading 27 /MaxWidth 1126 /StemH 20 /XHeight 520\n/FontFile2 14 0 R >>\nendobj\n17 0 obj\n[ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 648 0 481 0 0 0 0 0 0 0 0 0 574 0 0 611 0 0 0 0 0 0 0 0 0 0 0 0 0 481 0\n0 0 500 0 0 0 0 0 0 130 778 0 0 537 ]\nendobj\n8 0 obj\n<< /Type /Font /Subtype /TrueType /BaseFont /NBUHVV+HelveticaNeue-UltraLight\n/FontDescriptor 16 0 R /Widths 17 0 R /FirstChar 32 /LastChar 112 /Encoding\n/MacRomanEncoding >>\nendobj\n18 0 obj\n<< /Length 19 0 R /Length1 8332 /Filter /FlateDecode >>\nstream\nx\x01\xadY{l[\xd7y?\xe7\\\x92\x92H\xf1%\x8a\x14\xa9\xcb\xa7(\x92\xe2C\x12%\x8a\x0f\x89\x12)\xda\x94,K\xb2-?b\x89\x8e_\xb2"\xc7r\xedDy\xccH\x80\x16u\x81.C\x85-i\x8b\xee\xd5nK\x96&[\x93"\x8d\x9b\xc2\x85"\x0c\x89\x97uM\x1bl\xabW\xac\xc5\x1a\x18F\x8b\xa2C\xd0\x0eh\x16\xb4\x0b\x96\xc4\xd4~\xdf\xbd\xbc\xb2\x9c8A\xfe\x08\x89\x8f\xf7\x9cs\xef=\xe7\xfb\xbe\xf3\xfb^\x87\x8c3\xc6Z\xd9E&\xb1\xf1\xa5\xf3\x8b\xab\xfc\x1b\xe2\x08F\xfe\x05\xf4\xbd\xa5\x0b\x0f\x06Y;\xbe\x8c\x7f\x11}\xdd\xe9\xd5\xbb\xcf\'m\xbb\xfe\x19\xfd\xaf0&.\xdf}\xee\xe1\xd3\xce7\xdeM\xe1\xd6,c\x9d\x853\xcb\x8bw\xfdw*\x9cf\xcc\xffy<\x9f;\x83\x01\xc3O$3\xfa\xff\x80~\xf7\x99\xf3\x0f>4\xfdU\xc3\xbf\xa1\xffs\xf4\xff\xe2\xdc\xbdK\x8b\xf7\xfd\xf4So0\x16x\x08\xfd\xbd\xe7\x17\x1fZ\x15\xe3\xd2!\xf4\x7f\x80~\xf0\x9e\xc5\xf3\xcbC;\xf7<\x8b>\x9ea\xa9\xd5{\x1fxP\xb7G\xf7\xa7\xb8\x05\x9e\xd8=\xab\xf7/\xaf\xae2\xe3a\xf4i\xbdf\x10\xc7\x97>\xad\xcc\xc0\xd6q\r\xb2\xf9\xc6\x882|\xcb\x8f@O\xbae\xe4\xc3::\xdc\xd0c\xc6&e\r\xc6Z\x94\x07\x8d\xcc\x84u\x18\x83|\xf8X@VfS\xda\xef\xff\xb1\xb36\xe6\x80\x1e\x9d\xcc\xc5:\x98\x9byX\'\x1e\x91\x99\x97\xf9\x98\x9f\x05\xc0e\x88u\xb10\xebf\x11\xd27\x18O\xcd\xac\xb3\x96\xb9\x85os\xfehm\x9do\xfe\xe1:\xab\xfa^\xc4\xba\xd2\x89\xe3\xbd\xeb\x8c\xa7\x82\xc1\x89\x95\xea%~\x12\x1d\x91\xc2@"\x84\x96\x94\nN^\x92"\x93\x07\x16\xc2\xb5\xe0Zpm\xf7]k\xc1\xc9\xe0\x99\xc5\xbb.\xe9"\xca\x157\x96\xd7j\xfd\xc1K\xec\xe0\xc2\n~\x0f-\x84.\x8d\xd7\xe4\xad\xe6r\xad6\x82yt4\x0f^\xc1\xe3k5\xccp\xb61\x03\xae\xcaP\xff\r<\xa4O\xcd\x04/I\xd1\xb9\x85\xfd\x0b\x97.V\xe5K\xe3\xd5\x9a\x1c\n\x05\'.]\x99[\xb8t\xa5*\x87j5<e\xd8\xe2\x14\x1c\x7ff\xc5\xdd\xe0\xb9\t<\x1b\x12\xb8\xdf\xac\xcer\x10s`\x8a\xda\xda\x1a\xcd\x89\x9e\x88\x86.]Y[\x93\xd7 \x892\x12\x0e\xads\xd6\x18\x80\xa4\xf4\x8c\x14\x99X\xe7\xe3s\x0btk<\x1c\x92i \x1c\n\x87\xc0G\xad\x8a\xb9[R3\x07\x17&\xc0I\x8881~\xb4JM[\x8c\xe2\xd9V\xb0gRTj\xfe\x84Tj\xf98*\xb5~,\x95\xda\xb68\xbdE\xa5v\xf0l#\x95\xb6\xdd^\xa5\xe1\x8fP\xe8\x96\x86\xc7o\xa3\xe1\x8b\xaa\x86/\xdeF\xc3\x8em\x1a&\xcc\x0b6\x08\x13|\x05\x86%\xc1VL\xb0@}?\xe0\xd4\x9f\x1e\x88\x84\xec\xa1\x88=d\xe7\x1b\xf5\x8b\xfcb\xfd!\xfe\xc5f\xfefs\x1do\xd0\x87\xb3c\x9b\x0f\xb1\xcb\xec,\xac(\xb0\xa1\x0cHI\xa0\xda\x06\x80\\\x05\xf5c\xa6\x16\xcc\xc40S>\xec\xcc\xb8,\xa2\xc9Y\x92\xb2\x97\x0f%\xb8\xbe\xb5\xad\xd5\x15r\x99\xce\x9e5\xf9d\x97.i\xf0F\x92.e\x8aE\xfc\xd2\x9c\x12\x937\x14\'\xa0\xce\xc96\x14\xab\xa7\x8edK\x0f\x14y6\xbcx\xe8\xd0Y<\xcc\xc4\xe6;\xf8\xf9\x8cx\r|\x19a\x9fxB\xe1\x9fX \xb6\x0c\x8c\xdebxK\x16\x12\xcf\xe4C\x1d\x19\xfe\xdcck\xcf\xd5\x7f1u\x98O\xcc\xef\xae\xbf\xc1\xdd\xfc\x9e\xfa\x97\xf9\x0b7r\xd7\xafc\x1a|8\x8bn\xbe%\x9e\x10?cqv~\x03\xa6nR&\t\xda*2\xe6\x0b\xc2#\x04Y\x14\x94\x03M\x82\x0e\x83N\x83.\x80\x1e\x01\xfd\x19\xe8\xef@\xdf\x05}\x1fd>V\xd1\xb3\x9f\xa0\xf1+\x908\x06idx\x1d\xe2K\xb6m`\xc6\x88\xd26\x80G\x9e\xe9\x93\xc2]\x16\xe1l\xf7\x8b\xcc`I\xe4\xc3\x16\xf4\xfbDv\xa8\x84\xbe_\x88\x03\xd5\xa6\xec\xbe\xc5\xcc\xa1\xcf\x1eJ$\xf0S\xbe{6\xddT\xd5w\x8f\xcc\r\xee:]\t\x04*\xa7w\xc5v\x15\xe3\xfc\xad\xc2\xe1\xa2\x7f\xec\xeeG\xa6\xa7\x1f9=\xd63}vG\xfa`\xa9;W\xbbo\xa4\xb8Z\xcbu\xa4*\xb4\xefS\xf8\xf9#\x08\xdc\x0c\x1f\xf7\x99u\xd6\x01u\x19!<\xb1e\xc4.v\x80\xf4\xd7\x00\xd0k`\xfeu\xf0\xfbk\x908\x06\x15\xb4\xa0\xe1\x01\xc5A\xc3\xa0\xdd\xa0\x1ah\x05\xf40\xe8\x0b\xa0\xbf\x04=\x03z\x11\xf4C\x90\x99\xa4n\x81fi\xfa\x16H\xcd\xb0\x98\xb63\x0e{\xa6\xc4\xb3C\xd1\x98d\'!\x9d\xed\x16\x11\x9ez\xfb\xebO?\xfd\xf5\xef|i\xcf\xbdS]]S\xf7\xee\x11\xaf\xdd\xc8\xe9\x9e\x7f\xe1\x85\xe7u7V\xc5\xe1\xd0\xd4\xfdss\xf7O\x85h\xafH\x8e\x11\xc8ab\x19ZB\x95\xa0\x05\xdc\xeb\xaebM\x9d\xb2&\xad\x07O\xac a\x03\x12\xeb\x95v34\xee\xb0\x87\xb2\x00\xbaBS\xfc\xad\xfa\x01\xfeh\xfd~\xfe\x0c-7\xc2;G\xb8\x18\xd1\xd60c\x8d\x16\x06-55\xd6h\xc2\x1a\xe2*\x10\xc7\x15\xa45m\xcd\x0f\xcc)m\xdaQ\xc8\xa6\xcd^\xe5\x87\xeb\xcf\xf2\xcf\xd1\xd4\xfc\x90:3\xcd\xbd\x07\xd3}\tsK\xacc;\xcc\x95yU\xfb\xa19\xf6T\xe9=<\x86\x8f*\xb3\x17\x1d=\xd9\x9e\xbe\xc1\x8f\xde\x86w\x88AUf(`K\xbe)\xfe\x1f\xf5UE&\x81\xb4\x80\x03\xb5L\xbc\x8b\xf7-l~\xfb\x9a\x1bPb\xb3\xc2\xba\t[DA\xd2do\x1bnpB~A\xb5hx\xda\xc6*\x0c\xb7I\x9f\x9c\xa9-s\xa3\xa5\xca\x9dq\xe0\x0b\xde\xc3&>Y\x15\xbf\x1f\xff\x9d\xa8\xde\xf5\xbfo+r\xac\xdc\xf8sA\xf4\xda\x8dG\xc5\xfd\xaaL\xbb\xc0\xd3\xc3\xe0\xc9\xc4fn\xe5\x89B8m\x1d\xe9\xbb\x19d\xbc\n"\xff\xc2\xc1\x11q\xc5@M\xb7pd\xbc\x95\x0f\x0e\x1e\xeca\xbe\xab*\xf8\x13\xb3UQ?\xa9\xf0p\xf4\xc6S\xb8>%\x8e\xd2\xfa\xaa=\xd4\xb0~3\xe2\xfd\x17\xd6\x99\x07\x13\xf2\x06h\xc8\xaby@m\xb0\x07\xbdj\x0fz\xd8\x83^\xb3\x07=\xecA\x0f{\xd0\xc3\x1e\xf4\xb0\x07=\xecA\x0f{\xd0\xc3\x1e\xf4\xb0\x07=\xecA\x0f{\xd0\xc3\x1e\xf4\xb0\x07=\xecA\xf5\x95&\xc2\x8f\x11K\xddj\x1b\xad\r,)z\x1ct9\xdb\ra\x0eE\x92K\xc8\x0e\xf5\x89\xf0\x1f\xffz\xd7\xc2\xc2\xae\xfa\x8f\xab\xff\x97\xde[\xf0\xfb\x0b{\xd3\xfc\x1c\xef\x9e\x9a\x9e\x9e\xe2\xc7\x81\xaeA9;\x9bN\xcffe\xda\xeb\x10|\xd9\x01\xf8\xb2\n\xfb[2\x032\xc1\r$.]\xca\x12a\xecs\x81\x12\x19l\xe4:+\xf4+\xb6^\x80l\x05M\xb6\x02d+@\xb6\x02d+@\xb6\x02d+@\xb6\x02d+@\xb6\x02d+@\xb6\x02d+@\xb6\x82"\x9b\xf9\xda\x06\xebml\xc2:\xeb\xc5\x06\xb9\xa1;3t\xb8\xf3\x1a\xacr\xac\xe1\x97\xc7\xb0|\x0f2*\xda\xde\x1e\xa05\x1f6(\x8eOGR\xf6\xf3>Is|\x1d\x19\x12\xbb\xe1\x19\x03\xdc/)N\x02\x9e\xf1LU\x8a\xcf\x9e+\x97\x8f\x8c\x85\x1dz_fg\xf4[\xae\x98\xdf\xee\x1f\xa8\x84\xa3\x13\xd9\x90\xa8&\xa7NfgN\xe6\xdb\xe5T1\xf0\xb8g()G\x87wx\x07\x0e\x97\xbb\x7f\xb3\xe3\xf8\xa8\xaf#\xd2\xd7\xdb\xd3\x9a*%}\xc6\xa4\xde\xd6\x19\xf1\xf4\xe4BVg|,\x9e?X\xf0&K\x93\x9d\x89\x91\x1ews\xcc\xe0\xf0\xa7\xfc\xb1|\xd8\xe6HM+*\xac@\xa7\xe7\x80\x15\x0f\x99\x9b\x07C$\x80\x07\xc2\xb4\xc2j\xa8\xdd\xaa\xda"\x1ax\xc0\xd1\x90\xd6\xa1\xd8c\xc3\xb5g\x01Irt\xe4\xdd\xed\x95\xc0\xce\x95\xe9\x99\x95\x9d\x81\xaa7\xb7wp`o\x0e\xc6]\xcf\xe7\x97\xa6\x93\xc9\xe9\xa5<\xffa}\xb24\x9f\xf7x\xf2\xf3%\x8e=\xe4J\xcc;\x82\xf5\x9b\xb0\xb8j\x07d\x03\x12\xd624\x94\x9e\x1e@\xb4\xe3a),\x19x\xf3>\xde2\xf5_\xe2\r\x05\xf5\xaf\xdd\xf8\x9c\xf8,\xe1=\xb8\xf9\x16\xaf\x0b\x07\xcbbS\xff~\x03\xf0p(\x9cW E\xaa\x81\xfb\x94\x1a\xf1*\x88x\x15D\xbc\n"^\x05\xbe\xa3\x82\x88WA\xc4\xab \xe2U\x10\xf1*\x88x\x15D\xbc\n"^\x05\x11\xaf\xa2E\xbc\n"^\x05@"\xdc9XE\xc1\x181\xca\x81\x05\xf2\xd0\xfe\xab \xf4\xa9\x9dC;\x85\xeb\x0c\xe1c\x14\x197\xa9q\x14\xcc\x0c\xc0\x9fQ{\x80\xb4\x87@\xa1\x85\x88&\x0b@\xd0\x08\x93\x19\xa5\x91\xcbg\r\xe1\xae\xac\xbd\x01\x15\xbd\x86\x11\x02Q\xbe\xc4\xf3\xb9\xb2\x98\x1d\xf5\x0eD\x9c\xa6v\x7f{fi_Z\xee/wG\xf3\xc9\xb0]\xe8m>\xb7\xd9nj1E\xbar\xd5\xae\xde\xe9|\x90\xef\xf1\r\xec\xe8v%\x82\x8e\xde\xc9;z\xcc]\x06~\xba<\xdc\xe2\x8e\x07\x9d\x9dV\x830\x98\x83c\xb9\xd8p\xc4n\xe9\x8cy\xdaCn\xb3\x10Y]\x94\xb7\rU\xba\xcd\xed\x89\x1d\x0f\x1f\x88\x8e&\\\x169\xe2\x8e\xc6]\xa6&a4A\x03\xd0\xf9(p\xe3\xc6\xbe\xb9\xa1\xe2\xe7\xd6Y\x1f6\xcc\xdd@\x8f\x1b\xb2\x0b\xe8@\x90\xad\xa0\xadC[\x87v\x1f\xda\xad\xd0\x17\x8d\xb90\xe6\xc2X+\xda\x1e\xd5\x0fy`\xab\x1e\xcdV=hz`\xab\x1e\xd8\xaa\x07\xdb\xea\x81\xadz`\xab\x1e\xd8\xaa\x07\xb6\xea\x81\xadz`\xab\x1e\xd8\xaa\x07\xb6\xeaQl\x95f\x0e\x93\x1f"0\xfb\x81)\xd2\xb6\x1f\x9a\xb7\xc36\xa9mWp\x9b\xc9f\xfcP~\xc3\x03\xc1\x14\x9b\xc2v\xae!\xb8\x91\x9f\x8c\x8e\x08\xd7R\xb98?\xe2\xf5\x8e\xcc\x17\xbd\x85t\xc4(\xf8qG|\xbcwp"\xe9p$\'\x06{\xc7\xe3\x0e\xc2\xe1\xa9\xdcHrf\t\x10\x9fIY|\t/\xef\xa9\x17z\xf6\x95b\xb1\xd2\xbe\x9e\xc6\x95\\U\x170\xfa\x1b`4Ly\x98\xb7\x81J\xaf\x8aJ/P\xe9\x05*\xbd@\xa5\x17\xa8\xf4\x02\x95^\xa0\xd2\x0bTz\x81J/P\xe9\x05*\xbd@\xa5\x17\xa8\xf4j\xa8\xf4\x02\x95^\xa8\x0c8\xeb@\x04$\t; \xad\x0e\x15\x1d\xb5)j"\x0f\xe3\x9a\xb7\xc9\x0c\xe6nM\xc3\\\xfc\x1be\xd3\x03\x07\x8bw\x96\x82\xc1\xd2\x9d\xc5\x85UsY\xea\xec\x19\xf2\xf5V{;:\xf0S\x9e\xe4\xa7j\x0b\xa9\xe9\xa5B\x01\x06\xbcr<\x98\x8b\xb9\xa2\xa5}\xf1\xf8\xbeRt\x87\x8a\x03\xca/\x05p\xd0\xc9\xfa\xd8\xcb\xeb\xac\x1f\x8a\xe7\x80\x07-O\xb1F\x80\xb4\xfd\xefG\xdbr\x15\x84}\xa7q7\xdan<\x8fMg\\\xb1(\x1a\xed\xc4h\'\x9e\xb0\xa0-_S\xf2T\x19\xfa\x91\xa1\x1f\x19\xfa\x91\xa1\x1f\x19\xfa\x91\xa1\x1f\x19\xfa\x91\xa1\x1f\x19\xfa\x91\xa1\x1f\x19\xfa\x91\xa1\x1fY\xd3\x8f\x0c\xfd\xc8\xd0\x8f\xba^\x84\x90A\x19N\xa2\xe1 \x12\xd0U\x0b\x12Yb\xb6\x05\xba\nQl}_\xda\x9aq\xf2\x06"4\x1b\x14\xa2,\x8c\x91t\xde\xb7\x05\x8e\xe1\xc1\x98Q\xd4\xff\xfa\x83\xe0\xa8\xff\xa77\xe1\xb3\xa4Tt$m\xbe\x84\xe7\x14\x17\xef\x07\x87P\xb0\xf1&\xb0a\x84\x8c\'(sq),Q\xe6B%>\xb1Gvb\x02qh\x87\xda~\\\xc9\xdf0\xb4\x03h\x07\xfa\x81\x81.\x08K\x0fw)\x88W\xeb\x05;\xda\x1cS\xaa\x1b\x02<\x84J\x12\xf9\x1d}(w3\x0c\xa9\xc0\x00N\xfa\x04\x7f\xbe\xfe\x82\xce\x93\x18\x8d\xc1\xec;\xea\xdf\xe1\x7f"\xdc\xf9\x85\xd2X\xad \xcb\x85\xda\xd8\xa9O\xb5\x97\xad{\'z\xc7\x13\x0e\x1e\r\xef\xcc\x04\x02\x99\x1d\xb5\xdc\xca\xfe\xc1\xfe=\xa72\xb0\x80\xe4\xc9\x85\xd1\xa9\xe8\xc8n\xc2\x06\x87\x07\x07\x06\x80\rY\xcd\xcd\xda\x15&$p\xdc\x0e\xa2\xdd\xa7v\'\xed\n\xa5(\xd6FrdU8V\xc5V\x8a0<d\xc2\xc3&\x88K}\'\xda$v\xc7UH\x93\r\xabq\xd5\xd5\x91Uq\xee\xe3(\xd1\x90`p\xe9\xb40{;M.\xb3\xd5m\x89\x0ex\x8d\x0b\x0be\xfe\xa3l\xaf\xb3[\xb6I"\'\x84\xab\xa7\x10\xea\xcf\xd6\x07\xf8\x8f\xc0+\xedA\x86\xd3\x1e$X\x89\xfd\xd3:+\x7f\x04\x8e\xcbX|;\x8eU_\xa6\x9a\xe0M\x1c\x93|\x84\xe1\xb4\x8a\xe1465\x8d\xfdM\x03\xc3i`8\r\x0c\xa7\x81\xe140\x9c\x06\x86\xd3\xc0p\x1a\x18N\x03\xc3i`8\xada8\r\x0c\xa7\xb70<B\x95\x00\xd9\x02\xed\'\xd5\\-\x88z\xd4\xa6J$\xd9\xc0u\x12X\x8e\xd8\xc3\xce[\xb0\x9c\xcbg(\xf9\xc2\x16\xc7\xc2~@\xa0$b\x14\xb0\xb7\x81\x9b\xbfY\x16-\xa1D\xc6W\x98/\x06:\x87\x17J\xc3w\xb8\xc4\xde\x85\xce\xc1\xb8O_\x96b\xc5\xe9Xy>\xe7\xf9Uj<\xd1\xeeH\x8c\xf7\xf6\x96{\xda\x9c\x89R\x82\xbf^sF}\xb6\xf8\xae\x13\xd9\xfc\xe2T|$=y\xfc.\x93;\xe6\x8b\x17\xa3m]\xe3G\xa7\xc3\xc3\xd3\xb1\x9e=\xa3\x91hi6\x1a\x9b\x1e\x0e\xab\xd8(\x02\x1bT\xa4v\xb2\xfd\x1b\xca\x81\x14\t\xd1\t!Pa)\x02\xd9\xa0\xbbN\x10E\x12\xba\xaa\xdeB\xf1\xedd\xc5\xe4F6P\xef\xa9\t\xb5\x13/z\x808\xca\xdd\xd5\x8c]E\xb9\x13HPb\xa8\x01.\xbeX\xe6\x1d`*\x9a\xf1\xb7\x96\xdbR\xbbs\xf9\xa3m\xf0\\H2{\xa3\x95~\xd9\x9d\x18\x0e\xd5_\xe2\xb3}\xd3\x19\xefp?\x0f\x00\x13c`\xf5\xd3\xe0\x91\xce\x13b\xdb3y\x15\x80\xe4\xd7\x08\xc1\x06B\xb0\x9a\xbdcmg&\xdb\x84U\xc7\xca\xe5\xb2xmy\xf9\xfb7\xde\x13:\xd4\xf6\xbf\xdc\xdc\xd1\x98\xcb\xc9v~\xf8\\\xedZ\xf4j\x86=\x90J\xa8L\xd0\xd0oE\xbb\x15\x8b\xb6\xe2$B]\x07\x1bj\x88\xc6\x9c\x83.%\x9a\xd1\xa2\xed\x91\xa6\xb6f\x93\xd3\x14JzZ\xd4\xf5_\n&9\xe7C\xa2#6\xe4\x13\x19\xb2\xcb\x9br}T\x9d6\x06\xfeo\xd6i\xa30H=\xec\xa3\x87\xfd\xfb\xad\xdc\x9b\xafU$\xf626\x8d\x1fC\xe31\xad\xf1[\xb5\xa1W\xf6\x13\x07\x07\x14\xd8%6\xa7\x8cR)\x8e\r\xa5\x17\x7f\x8b\xac\xa1\xf1b\xa3\xf1\xb2:B/\xba\xe1\x9b\xdd\xda\x8bt\x9b"\x02\x9db\x98\x99M\x89\x17\xa4\xfd(\x14\x12\x05\x14b\xd8,I\x19\x951\x9a\xb8\xa6\xf8zB\x89\xea]\xc2\r\xa4\x84q\x93tJ^\x84\xda>x\x11\xaaJ5;\xd0\x9a.\x05:\xe1.C\x13\xf9\x15\xc0\';Zn\x8b\x14{\xfc\t\x8f\xa9l\x0e\xe6\xe2\xd5\\\xf9\x9b\x99#\x1d\x96\x83\x99\xf2~\x8f$t7\xde\xe3\xc1\xf8D\xc6\xd7\x1e\xee\xef\xac?\xc9\xbb\xbbw\x0e\x05v\x8e\xd7\x9f\xe6\xc7/\x0ff\xe0`\xd3\xf3`\x903\x15\xf7\x0e@\x1e(\xe8$\x9e?.\xee?\x88\xf9\x0fCz\xf6\xb6H\'\x0eo\x83\xf4\x1axP\xfc\xdf[\xc2\x88\xfdu@\x91\xaf\xa2\x84\x81\xda\xe2\xa006\xea\x93\xab\x13{\xa0p\x0f\x14\xef\xc1\xccV\xd5/Z\xe1\x17\xad\xf0gV\xf8E+\xfc\xa2\x15~\xd1\n\xbfh\x85_\xb4\xc2/Z\xe1\x17\xad\xf0\x8bV\xf8E+\xfc\xa2U\xf3\x8bV\xf8E+\xc0\x01\x7fhD\xaeGj4\xc2\x0b\xd0\xd9<\xb5\xdb\xe1\x03\xb9v\x04\xd3pt\xf9m\xe7QT\x96q\x97\x96\xe8hW-\x13j\\\xf9u-\xdb\xd1\xaeY-\x19B5CI\x11\xfe~\xa0\\x\x07ra\x07\xb0\x9ab\xdfTsa\xf2r\xc4\x06A\x8c<\x18]\xb5<\x88\xf2`\x0b\xf4Jc7c\x07kT\xae\x143>\xa9\x8cX\xb1\x01\xaa\xda\xd4\xec\xd7\x01\xfd\xf8\x1b\xa9\xa7\x1f\xfa!\xdcg\xd4X\xa0\xd4\xe2\n\xcc?\x90\x08+\xd9N\xc1\xabe;\xe5%\x97\xe0KZ\xaecOL\x0e)\x89\xb0\xeeF\x89\x07\xbd\t\xafE\xcb\x85\x8b\xb9S\xf5\xba\x96\xeb\xa4\xe6F\xbb\x91\x10CWQ\xe8J@W\x94/^V\xf3E\xfc{\xa3\xe8\x8a\x82\xba\xe6\xf1\xa9v\xa0\xb6\xa6\xb3\xed\xb9\xe3\xcdh\xa0F\xd8O.K\xa4\x99\x95,\x91\xea\x87\x9b\x99\xe1\xf6\x8c1=\xa0\x7f\x7fdEI\x86|Cs \x8d:B\xe0$\xcf\x18\x1b\x1c\xde\xd2\x9b/O%D\xfdIMsZ\t\xf1\x92x\xe5Tg\xdco\xd3\xb2D\x0b\x94X\xff9\xbf\xa2\xa9n[\r\x01\x1f\xcc\x8b\xc2\x82L\x1f\xec\xd1\x9fG\x840\t<\x9b\xaf\x82\xd4s$\xe2[\x8d\x89T\x8a2\xdc\xa0s\xeb\x86\x87\xeb\xc8FUO\xe6\xcdL&\'\x97\xddBq[\x8e\xf8\xc4\xa0,\xcaR\xb5\xfc0\xe6\x84\x8f\n\xa0Vy\x05{Td\xcf\x10`\x02\xca:TF!\xc0*m\x8e\xb6\t\xe3~\xc5\xdf\xd2\x11\x9ar\xe8\xad\xf4\\\xea\xc9\x8b\x0b\xd5\x9c\x8b|7\x9d\xb2\xba\x10\x9c]\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\\xa8\xe6\\0\xf2u\x16\x83\x8dP\xce;\x88k\x0c\xd71\xaa\xa7\xe5\xc6q\x8fz\xde\x9cW\xd8y\xffy\xf3\xcdS\x95(r\x9d\xadJo\xfb)\x0c\xbf\xaf,\xfc\x99\x9d\xb1\xae\x89B\xd8\x15\x1b\n\xecw\xc6\x83\x0e91\xd0Q\xbeCWn\xbe\xef\xce\xee\xe9b\xb43\x9e\x95\x0f\xd9\xa2A\xa7\xab;\xe9\x94\xd3\x11\x17?\x8ft\xa7\xdd\xd6U\x88\x85z\x03\xce\xe66\xbd\xc5\x19\xe8@el\xac\x8c\x9f8l\x8b\x14\x13]\x83]N\x9dCgn\xf79=]\xce\x16\xb37\xa9\xe8\xb3i\xf3]\xde"\x1e\x87X\x0f|\xb0:2`\x8bh\x0f\x9bp\xa5\xfa\xc7\x05ii?)\xd5uh\x15\x8b\xadq\xc6l\x83\xe2u8t\xa3\x8d\xd7\xe1\x01\xda_:\xe2V\x01\x80\xb8\x8a\xb6\x96\x9a\xea\xd1n\xa7\xe8\x96E&\x88\x9c\xd8\x80$!\x97\xc1\xb9B\x1f\xcf\xda3\xd9\'\xcaG\x8e\xf0\xc1\xb2\xc5k\x91\xe5.\xfb\x8a\xd0}\xedk\xd9\xfa\xe3;\x06DV\x12\xe1\x00?\x9aU\xb1P\x04\x16\xae#\x83qS\x9ev\xf3L\xe8\x83r\xdc\xf4d\xdb\xab\xb9\xad\xac\x8d\xa2\x17\x9d 57rT:\xb1\xa6zK1\x97h\x8cZt\x02BY*\xbf^n\x8b\x8e\xc4g\xc6D\xb9=910r\xc2\x03\x9c\xd6\xff\'63\x12\x9e\x9a\xe4s\xf5o\xf7M\r\xca\xf9\xa1c\x8an\xf1\x1f\x0e\xffW\xf0\xf7Q\xe7G2\xcf8\xe8\xfcH\xbc\xba\xf3\x1f+O\x88\'\t\xf5\x98\xb1\xc8\xf1g2\xe1]\xa1\x8bO\xbc\xf3\xf6\t\xeb\xe8\xef\xb9]\xa2\xff{\xd9\xf7\x1e[\rhWdo\x19d??C\xbf\x05>L\xfd\xe0=\xe9\xd5\xcd$\xf3\xe9N\xd5\x9f\xd9\xac\xe9&\x94\x99\x1a7\x95K\x94\xff\x8e\rr\x98\x06\xe8\x18hQ\\\xd8|G\\aQ\xf1\x1c\x9b\x12\xfbA\x1e\x9c\xf9_g{\xe8*\xe1<\n\xf7v\x89\x0b\x18\xbf\xc0Bx\xa6"\xf6\xe3\xf9&\x16\x14%6\x8ak\x17\xaeQ\xbar\x89\x19D\n}\x0fl\xf4E\xe4s/n\xfe\x92\xae\x98c\x94\xc6\x94{\xf4\x0e\x9e\xe7E6\xca\x7f\xc1\x02\xbc\x875\xd1=\xd4;$\x81\x17\xdfIv\x92\xad\xb1\xf7\xf8I\xfee~\x85\xbf\xce\xdf\x11U\xf1y\xf1\xa6\xf4U\xe9u\xe9=\xddw\xf5{\xf5\x1b\x86\xa3\x86\x1f4\xf9\x9b~\xda\xdc\xd3\xbc\xb7\xf9+\xcd\xdfj9\xd0\xf27\xc6Q\xe3\x8fM\xab\xa6\xa7Zg[\x9fm}\xc7\xec\xc5l\xa4\xc3(\xfb4f\x0e\x82T\r!\x12\xa3y\x19\xf7T\r\xb75\xf4c\xa0\xb4g\xef\xdc\xdc\xbe\n\x8e4\x97\xcf]X~peiq\xef\xf2\x1f,\xf7\xce\xae\xdc}\xe6\xc1\xc6\xdbl\xf3\xaf\xe8\xff\xbc\xdb|\xa2\x18\x93\x10\xfa\xed\xf8\xc7:\x8al\xa5\x07\x8e%\xc5\xfaQ$\r\xb0\x0c\xcb\xe1\xd8v\x98U\xd9\x04\xa4\xdb\x05\xed\xeef\xd3l\x86\xcd\xe2\xbf\x89}\xc8>\xf7\xb3\x03\xec ;\xc4\xee@\x961\xcf\x16\x18\x92\x1f\x18\x10\x8c\x89%\xff\x1fM\x0bWZ\nendstream\nendobj\n19 0 obj\n4910\nendobj\n20 0 obj\n<< /Type /FontDescriptor /Ascent 967 /CapHeight 722 /Descent -213 /Flags 32\n/FontBBox [-343 -214 1093 967] /FontName /NPPOAD+HelveticaNeue-Light /ItalicAngle\n0 /StemV 68 /Leading 29 /MaxWidth 1122 /StemH 58 /XHeight 524 /FontFile2 18 0 R\n>>\nendobj\n21 0 obj\n[ 278 0 0 0 0 0 0 0 0 0 0 0 278 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n630 0 704 685 593 537 0 0 222 0 0 537 833 704 0 630 0 0 630 0 685 593 0 0\n0 0 0 0 0 0 0 0 519 574 519 574 519 259 556 537 185 185 0 185 833 537 556\n574 574 315 481 296 537 463 ]\nendobj\n10 0 obj\n<< /Type /Font /Subtype /TrueType /BaseFont /NPPOAD+HelveticaNeue-Light /FontDescriptor\n20 0 R /Widths 21 0 R /FirstChar 32 /LastChar 118 /Encoding /MacRomanEncoding\n>>\nendobj\n22 0 obj\n<< /Length 23 0 R /Length1 5056 /Filter /FlateDecode >>\nstream\nx\x01\xb5Xkl[\xd5\x1d?\xe7^\xdb\xd77\xd7\xd7\xf1#~\xc5\x8f\xf8\xc6\x8f[\'v\x1e\xbe\x8d\x9d\x84`;\x91\xd3\xa6I\x80\xd0\xa6\xad\xcdHi\xd6\xe6UZ\x9am\xa1<&D\x05c\xd22iE\x08\xb1\x15\xd0\x84\xc44\xe0\xc3X\xa6\xa9[\xc8\xf6\xa1\x9a6\xb4u\x13\x14!\x06\xda\xfaa\x9b6iChB\x88\xd7\x04\xb5\xf7;\xf7\xda\x81n\x85\xf1a\xd8\xfa\xdf{\xce\xb9\xe7\x9e\xf3\xff\xff~\xff\xc7\xb1\t%\x84\xd8\xc8i\xc2\x93\xd2\x91\x13\xf3\xab\xbd\xce\x81)\x8c\xfc\x8e\x10\xea:rj-J\xda\xf0%\xf4O\x183-\xae.\x9d\xe8v\xec\xfe\x15\xfa\x7f%\x84;\xb7t\xfc\xae\xc5\xf9\x81\xf7bx\xf48!\xf2\xc6\xf2\xc2\xfc\xd17"\xb1>B\\\xd3\x98\x9f[\xc6\x800gy\r\xfd\xaf\xa1\x1f_>\xb1vg\xecnr7\xfaO\xa3?}\xfc\xe4\x91\xf9\xe0Z\xe4a\xf4\xdfF\x7f\xc7\x89\xf9;W\xb9\x1e~?!\xee\x10\xfa\xd1\xdb\xe6O,\xbc\xe6\xfbu\x04\xfd\x11\xf4\xb3\xab\'\xbf\xb2F\x7f\xcf\xbd\x81\xfe*\xfa\x13\xab_^X]%-\x07\xd0\xdfD\xdf\n\xa1\xf8\xb2\x8f\rM\x8b\xde\xfa\xd4\x8b1\xb99\x85k6\xae\xb8\xf3\xc4\xb4\xdd7\xa3u\xc5\xb2\x02\x06\xac"i\x91\xb0\xa5l\'\xad\x848\x88s{\xfa\xe7\xdcp}\x96\xf5\xc1\x1f\xc0IOm\x12q\xa6\xf2#J\xbfU\xdd\xa4\xf5\x076I9\xfc\x1c\x11\t\x7f\xcb\xa1\xcc&\xa1\xe9ht|\xa5\xbcA\x0f\xa3\xc3\xa51\xd0\xa5\xa0\xc5\xa7\xa3\xbb6\xf8\xc4\xae\xbd\x95X5\xba\x1e]\xdfst=\xba+\xba<\x7ft\xc3\x94\xd0\xefx\xb0\xb0^\xed\x8dn\x90}\x95\x15\\g+\xcaF\xa9\x1a\xdcn.T\xab\xc3X\xc7\xc4\xd6\xc1+\x98\xbe^\xc5\n\xc7\x1a+\xe0\xae\x0f\xf5^\xc6$sz*\xba\xc1\'g*7V6N\x97\x83\x1b\xa5r5\xa8(\xd1\xf1\x8d\xf33\x95\x8d\xf3\xe5\xa0R\xadb\x96e[Sh|\xcf\x8a\xbf\xa1\xb3\x00\x9d-]xn5V\xd9\x875\xb0Du}\x9d\xad\x89\x1e\x97T6\xce\xaf\xaf\x07\xd7a\x89>\x12S6)i\x0c\xc0R6\x87O\x8co\xd2\xd2L\x85=*\xc5\x94 \x1b\x88)1\x05zT\xcbX[LO\xed\xab\x8cC\x13\x85i\xd2\xf2\xe9\x90J\xdb\x8ab\xae\r\xeaI:\xa4\xf2\xff\tR\xfbg\x81\xb4\xf53A\xea\xd8\xd6\xf4\nH\x9d\xd0\xd9\xc1 u]\x1d\xd2\xd8\xa7\x00\xba\x8dp\xe9*\x08\x9f6\x10>}\x15\x84\xdd\x1fC\x98\xf96G\xb2\x88\xe3_ .y"\x10\x89\xc0Kz\xe1N\xbd}\xfd\t\xc5\xa9$\x9c\x8a\x93n\xd5N\xd3\xd3\xb5;\xe9\x83V\xfa\xa6\xb5\x867\xd8\x87\x12\x1f\xae\xf7\x93cx\xaf\x95l\xe1\x8a\x15\xbaA\xb3\xa3\xaf\xff\x1a\x9a\x8f\xf9f\xfd\xfb\x8fa\x8c#\x08h\xee\x11\xee\x02\xf2\x85\x97|i\x0b\x9b8\xf5\x89\x82c\xd4L\xfe\x80\xce\xeb\x10nn4\x88Pq\x92\x00$\x05\x19\x82\xec\x81T!+\x90\xbb \xdf\x80\x9c\x85<\x03y\x0e\xf2\x1b\x88<\xb7I\xfc\x97\xb0\xbf\x0c\x8d\xd8\xfe\xb2c\x0b\xbb\xda\xf56\x81.n^\xc9\x16\xb8\x81\x9d=\\\x8c\xba\xb5\xac\xa7\xcd\xce\xa9O<F[\x0e?t$\x1b,-_W\xbbx\xdf\x93\xaf&\xf7\xde[\xe5.\\\xce\xed\xba\xe3\xb1\xd9\xd1\x95\xa9\xd4\xe5U\xee\xc0\xab\x93\xdf\xbc\xb5\xc4r\x1d\xd3\x7f\t\xfa\x8b\xa4\x03\xe8\xd0^\xb6\xbe\xd0X\x7f\x0b\xa9\x8a\xd7\xdb\x16}/\xcd\xad\xe4\x15\xc8w\xcf\x96\xf7\xd0/H\xb5\xa7\xf2\xf4\x01\x1b[\x99\xce\x0eSnx\x1b\x8f{t<\x82\xe4\xf6-\x80b,\xe65\xf0\x10\x80\x87\xd0\xc4C\x00\x1e\x02\xf0\x10\x80\x87\x00<\x04\xe0!\x00\x0f\x01x\x08\xc0C\x00\x1e\x02\xf0\x10\x80\x87\x00<\x04\x1d\x8f\xf0%\xe8i\x87\x9eWb\xe2\xd8\xc6$H\xb5l\x84cP\xc4$\xaa\x01\x95\x06@\xdf)\xbe\xa4\x0c$=\xc1\xbeR\xe2\xf5G\xcbc\x1f\xe6n\x1aM\x84\xb5\xf1\x14=N\xe3r\xa4?\xae^\xdb\xe5\xa5\x87`L\xb6\xe3\x9a\x83\xf9\xd4X\xc6\xcf\xfc`\x1c\xf8\xdc\x0b{\x04\x12\xc4\xbe\xbc\x8e\x8f\xc1\x05q\x00/\x88\xf9"x\x104\x1e[\xe5o\xb4\xbds\xa6|\xe6\x1d\x802\x0c\x94\x1fd\x90\x10\xae\xfe~\xfd-\xfa[\xceMJd\x96\xbc\xb7I\xf6\xc3\x05\x0f@\xf2\x97\x10\xd4\x97t?\x91\x80\x8b\xd4\xc4E\x02.\x12p\x91\x80\x8b\x04\\$\xe0"\x01\x17\t\xb8H\xc0E\x02.\x12p\x91\x80\x8b\x04\\$\x1d\x97\xfdP\xc5{\x11\x02\x15;\x80{\xde\xe9\x1a\xc2\xfa\x18\x8dc4\x8eQ\x95\xe4\x89\xb4=\x9a\xc1h\x06Zx1c\xf2\x12\x1c\xd4B&\xf1\xda$IBr\x90]\x90\x03\x90E\xc8)\xc8\xd7!\x8f@\xbe\x0f\xf9\t\xe4y\x88<\x07\xf5_A\xe3o\x10n\x0e\x9e:\x0e\x9c\x98\xa7\x8e\xc3SG\x98\xff\xa0=\xc2\xbcG+\xf0\x06/\x16\xc1\x92\x14\xec\xbc\xa7-\xc2i\xd9\\\xdeg\xa7\x1e\xaf\x96-R;\x8du&\x07v\x16\xb8|\x81\xd7=\xba\xd3\xce\x99\x056\xda\x03\x0f\xd7\x87\xf3\x85\xa29\x9c\xceE\\j\x87\xa7\xa3#\xb2O\x8b\x95\xb2\xe1@\xf7H<\xf7\xc5 G)7\x10\x0c\x88\x82$H^\x93U\x16MR\x8b\x10\xcf\x15\xdbS\x93\xc3*\xcd\xb6\xb5\x1e\x9a\xf6vE\xdd]\x85\xdda\x9b\x12\r[\xe9\xb1h&h\xb38\xc2>\xad\xcbj\xa5V\x8b\'>\x98J\xe6:\x1d\xfd\x19N\xb0\x0bys?\xa5\x82\xdd\xe6O\x0eu;3\xbd=\xeeX\xba\xbd\xa5-U\xba\xef\xe0\xf8\xde\x16_,\x90\xca\xf8\x04\x8er\x16I\xd49&vp\xfc\x0fp,\x91.\xf2\xafM\xd2\rd\xd3\x10\x078\x16\r\x8eEp,69\x16\xc1\xb1\x08\x8eEp,\x82c\x11\x1c\x8b\xe0X\x04\xc7"8\x16\xc1\xb1\x08\x8eEp,\x82cQ\xe7\x98\x803\x82U\xbb\xc1Y;\xda\xedh\xa7\x0c\xeeR\xe0.\x05\xeeR\xe0.\x05\xeeR\xe0.\x05\xeeR\xe0.\x05\xeeR\xe0.\x05\xeeR\xe0.\x05\xeeRM\xeeR\xe0.\x05\xb5Pd\xb0\xa2\x8d\xe9\x8c\xd5e\xb4e\xf8L\x14\xc7\x11\x11>\x03f\xe3$\xac\xb3\x19\x07\xb3\x9e\x06\xb3\x1e\xb4)r\x1fc\x99\x82e\xaa0\x96\xbd\x9e6\x8bY)\xd0&\x8b\x9e6\x10\x9c\xcb\xc7\x9a\\\xd2gj?\xb4vj\xa3\xea\xd8\x14\xad=E\x1f\xe6\xb9vm\xa2wly"q\xeb\xd2\xdcZ{\xd1U)&\x87\x12.\x9a\x8c\x8fi\x1d\xd7\x8f\xb5\xb8K\xbe\xb4739\x10\x1e\xbc\xf9\xf6\xc2\xe2\xda\xcd\x95\xa1\xdd =\xe6e\xf1\x89#\x0c=\x84\xf8\xf4\x91n\xc4\xa7\x07*\xcb\r\xddX\xaed\xc73C\xb7M\xe2\x84I,f\xdd\x88W\xa4\xf0|\x01y\xc2\xeb\xcb\xf7\xc0\xc1,\xad4\xa6G0\r\xd9\x16[\xc5d\xba\xc5\xdd"9\xa2\xceR\xc1\xe6\xa8\xdanZ,.\xd2\x17\x07&\x921\x13\xb7\xd3\xcc\x8d\rM\r\xd4\xfa\xe9\x8b\x8cwZ\x7f\x17\x97\xbf`\xff\x0e\xf2U\x06\x8b\xaco\xe71\xb2\x9d\x0c\xc6\xe5&\xe32\x18\x97\x19\xec`\\\x06\xe32\x18\x97\xc1\xb8\x0c\xc6e0.\x83q\x19\x8c\xcb`\\\x06\xe3\xb2\xce\xb8\xc2\xb2\x1d\xa3\x9cB\x9c\xb0\xae\x1d\xa7TfQ;\xac\x8b0\xfb@\x0e\xab\x03\x9a\xfb\xa3\xf8B\'g`o\x11b\xee3g\x0bC-;r\xa5N\x8f\x1aq\x99\xf8\x89\xe2n\xab\xafk\xa8s\xf8p\x90+\xea\xc9[\xec\xbf!\x1fi\xf1\xc6\xda\xe5\xa0\xad\xf6c:\xb5\xc3\x93\x18P\x1c\xc5\x1e\x1aG\xee\x82}\xe4\x05\xd8\xf7\xf1\xfaIP?\x91\xf1\xf2\x026:\xe3-z\x8f\xddV8\xc9]XXx\xfe\xf2\x87\x9c\xc9\xc0\xa4\xf1\x0e\xab\xb8Ls\xfd\r6\xfbl\xe1Q\xb6\'\x164\xe6\xf1f\xc4L/\xf9`\x93\xf4aZ?\xa4\x0f\x14I\xa0JB\xdb\xf0B\x8cc,\x8aH\xf2\x1b\x91\xe4\x07\xae\xfe&\xae~\xe0\xea\x07\xae~\xe0\xea\x07\xae~\xe0\xea\x07\xae~\xe0\xea\x07\xae~\xe0\xea\x07\xae~\xe0\xea\x07\xae~\x1d\xd7f\xf4D\xb1r\x18\xbb\x85\xb1\x9b\x84\xb6jD\x93\x8ahR\x11M*\xa2IE4\xa9\x88&\x15\xd1\xa4"\x9aTD\x93\x8ahR\x11M*\xa2IE4\xa9\xcdhR\x11M*Tk\xd8m\xc7\xb2A\xb0\xd6\xd5`\xad\x0b[X!\x1el\xc9\xda1V;\x1a\xdc!j\x00(\x92\x9f\x1e@\x0c[\x16AIx\xa7\x10\xd3\x9dTP\xf3Go+\x0c\xb6$\xb2\x85\xce\x9e\x94e\xa2\xa8I\x91\xcc\xb5)\xad\xd7\xb2\xa78\xc1\x9b\xcaS\xc3s\x11\xce<\x96\x1b>\x1c\xe2\xda8\xd3\xe5\x0f\xa9%s\xc3pg.\xe9o\xafm\xfc3{p4\x99M\x06\x82\xb5g\xe9\x8c#l\x1f\x99.\xf4\xe5\xf3\x85\x0cw\xd3\xc7\xfd\xd8\r?>\xf1\xb9\xf9\xf1\x7f\xfb\xf0G\xd6\xb3\x8amaF\x7f\xe4\xb9\xcc\xda\xabz\xee|\x98s\xe9\xf6}\x92\xe7\x1eb6q\xf5\x97\xebc\x9c\x13\xfe\xe5\';\xd8Y\xc4NBz\xe8\xd8\x8d\xe8\x0c\xc1\x8bBM/\n\xc1\x8bB\xf0\xa2\x10\xbc(\x04/\n\xc1\x8bB\xf0\xa2\x10\xbc(\x04/\n\xc1\x8bB\xf0\xa2\x10\xbc(\x04/\n\xe9^\xd4\xc5\xa2\x93\x9d\x99\xdcx\x9dE\xa5\x1bQ\xa9 Y\xb3\xb6\xc2\xaa\x1e\x0c\xd2"`\xb4q\x06a\\\xe6},A\xe2tbT\xbbc\xdf.\x149s$=\x18\x19]\x9eT\xfd\xfd{\xb2\xe5\x83\n\xd7\xf6\xbd\xdd\xe5P~_n|*24\x0b[\x0b4\xd1\x91\t\xc9#\xb7\xdc1\xd2{}\xbecH\x9bKV\xc6z\x17fs3\xe3}K\xfb\xf3\x06\x875\xd4\xa0s\xb0w\x84<\xc9\x8eq\xec\x98\xb2\x85\x82\xa4\xe9\xea0\xeff\xe9\xcfc\xc4\x90\x06\xeb\xb5\xa6\xf5\x1a\xd4\xd7`\xbd\x06\xeb5X\xaf\xc1z\r\xd6k\xb0^\x83\xf5\x1a\xac\xd7`\xbd\x06\xeb5X\xaf\xc1zv\xca\xd0\x1a\xe7\x89\x0e\xb89\x8bO\xb6~\xd7E\x08\xeb\xa3]`g\xd7\xc1F>\x1e\x046\t\xe4/\x86M\x02\xd8\xe4c\x16v\x020\x90Q{P\xf3\x0b\xe8F8A\xcb\xe18\x8b\xe2\x8f\x13\x82\xc5\x00\xaa\x87+\x14\xb8hnw219\x92P\xfa\xaf\tz\x91\xca\x02\x89\x8c\xa7\xbdGqqE\x1a\xec/\xa7:\xca\x83q\xbf\x9a\xcdf\xd5@ \xd9\xe3\t\x0e\xa4\x02O\xf7\x8f\xa7\xdb\x1c\x89\x91t\xbc\xaf\xd3\'\x89.o\xc8\x15\xect[\xe5PW$S\xdc\xe1rt\x0e$\xa3\x19\xc5\xd7\xe6\x0et\xb6\x07\xe2>\xc9\x16\xc1\xaf\x05\xc0\xd6V\x7f\x0b\xa5\xdd\x04\x03WX9\xf1\xe8*\xcb\x0e\xfd\x8c$#3\xc8\xc8\x0c22\x83\x8c\xcc #3\xc8\xc8\x0c22\x83\x8c\xcc #3\xc8\xc8\x0c22\x83\x8c\xcc\xc0\xd2\xb8~F\x92\x91\x19X1hd\x06\x96\xcb\xad\r4\xac@Cq\xc7x;o\x9curyt`\xbaq@\xd2\x04\xfa\xd0\xc9\xe2\x90\xb4c\xa0\x18\xfb\x8f\x14n\x04B\xed=#\x81\xc7\x03H\xe0\xf4\xba\xda9=\x81\xb7\x16z\x0e!k\xb3\xfa\xf8\x92^\x1f\x83\xb0\xa7\x88\xdd= \'\x8c\xdd\xffw\x9dD\x02\x06\x89~\x10\xca\xce\xb9!\xe4\xaaO\xaa\x9b\xf9F5\xf8\xc4\xfa\xf9GV&N\x16O^\xa5\x8e~\xd0,\x1c:\xf6\x0c\x7f\xb2\xeb\xd9\x9f\x05ni\x1dy\x87:\xf9\xbf3\xd7\xfe\xe5\x99\xd5\x8e\xe6\x9dE5\xaa\xc6\x05\xfc\xf6\xc2i\x8a\x8d\xe2\x83w\xf8\x9f\xd6\xbbI\xc8t\xb8\xb6T\xdfk\x9a\xc2{\xaf\x18\x8f\x1aW7}\x9bd);2x\x89\x8f\xfb\x011s\x01\xc8)H\x9a\x8csB\xfd}N v\n\xbc\xb8\x00j\xdes\x86\xf0\xa3\xf5wY\x9f+\xd4_\xa6\x7f\xae\xd7\xf0N\x1b\xfd9\xc3\x14\t D\xfa\xc8\x83d\x93F\xe9\x18\xb7\x93{\x93\xef\xe3\x9f\xe0\xb7\xf8\x17L\x0f\x9bj\xe6S\x96v\xcbi\xcbkL/\xe4\x86\xbb\xc0\x03jiC[\xfc\x1b\x86\xe69<cO\xd9\t\x86\xdd\xd9\xdfBQBf\xf6\x8fNWF\xbb\'\x16\x8e\x9fZX[92\x7f\xfd\xc2\xed\x0b\x99\xe9\x95\xa5\xe5\xb5=k\xf3\xc7W\x8e`\x1el\xae\xe3\xdf\xae\xfa\xe3\xec\xb7\xedU>n\x8c\xf1\xf8\xf1\xa8\xea\x01\x9d\'e2\x81\x90\x9e"\xd3\xe4\x062Cn$\xfb\xe0\xb1\x15r\x1e\x7f@ \x10I\xf7\xbf\x01\xe8\x81\xc8\x07\nendstream\nendobj\n23 0 obj\n3049\nendobj\n24 0 obj\n<< /Type /FontDescriptor /Ascent 951 /CapHeight 722 /Descent -213 /Flags 96\n/FontBBox [-409 -214 1099 951] /FontName /PUALXA+HelveticaNeue-LightItalic\n/ItalicAngle -12 /StemV 67 /Leading 28 /MaxWidth 1120 /StemH 58 /XHeight 524\n/FontFile2 22 0 R >>\nendobj\n25 0 obj\n[ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 685 0 537 0 0 0 0 0 0 0 0 0 630 0 0 0 556 0 0 0 0 0 0 0 0 0 0 0 0 519\n0 0 0 519 259 0 537 185 0 0 185 833 537 0 574 0 0 481 0 537 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 ]\nendobj\n9 0 obj\n<< /Type /Font /Subtype /TrueType /BaseFont /PUALXA+HelveticaNeue-LightItalic\n/FontDescriptor 24 0 R /Widths 25 0 R /FirstChar 32 /LastChar 222 /Encoding\n/MacRomanEncoding >>\nendobj\n1 0 obj\n<< /Title (sample) /Author (Philip Hutchison) /Creator (Pages) /Producer (Mac OS X 10.5.4 Quartz PDFContext)\n/CreationDate (D:20080701052447Z00\'00\') /ModDate (D:20080701052447Z00\'00\')\n>>\nendobj\nxref\n0 26\n0000000000 65535 f \n0000017930 00000 n \n0000003982 00000 n \n0000005073 00000 n \n0000000022 00000 n \n0000003962 00000 n \n0000004086 00000 n \n0000005037 00000 n \n0000007957 00000 n \n0000017740 00000 n \n0000013692 00000 n \n0000004209 00000 n \n0000005017 00000 n \n0000005156 00000 n \n0000005206 00000 n \n0000007472 00000 n \n0000007493 00000 n \n0000007755 00000 n \n0000008146 00000 n \n0000013146 00000 n \n0000013167 00000 n \n0000013424 00000 n \n0000013877 00000 n \n0000017016 00000 n \n0000017037 00000 n \n0000017302 00000 n \ntrailer\n<< /Size 26 /Root 13 0 R /Info 1 0 R /ID [ <4e949515aaf132498f650e7bde6cdc2f>\n<4e949515aaf132498f650e7bde6cdc2f> ] >>\nstartxref\n18132\n%%EOF\n'

We import a document into the collection of our vector database using the /v1/documents endpoint. This endpoint support PDF, HTML and TXT files.

files = {"file": ("sample.pdf", pdf_bytes, "application/pdf")}
response = requests.post(url=urljoin(base=base_url, url="/v1/documents"), data={"collection": collection_id}, files=files, headers=headers)
response.raise_for_status()
document_id = response.json()["id"]

print(f"Document ID: {document_id}")
Document ID: 971726

We can see that the file we imported is indeed in the collection using the /v1/collections endpoint.

response = requests.get(url=urljoin(base=base_url, url=f"/v1/collections/{collection_id}"), headers=headers)
response.raise_for_status()

response = response.json()
print("Documents in collection:", response["documents"])
Documents in collection: 2

Semantic search (default method)

Now that we have our collection and our file, we can perform a vector search using the /v1/search endpoint. These vector search results will be used to generate a response using the language model.

The semantic method is based on vector similarity (cosine similarity) between the question and the vector representation of the documents. More method are available, see the API reference for more information.

prompt = "What it the title of the document ?"
data = {"collections": [collection_id], "k": 6, "prompt": prompt, "method": "semantic"}
response = requests.post(url=f"{base_url}/search", json=data, headers=headers)
response.raise_for_status()
results = response.json()["data"]

print("Chunk returned by the semantic search:")

for result in results:
print("Content:", result["chunk"]["content"], end="\n\n")
print("Metadata:", result["chunk"]["metadata"])
print("\n")
Chunk returned by the semantic search:
Content: ## Sample PDF

## *This is a simple PDF file. Fun fun fun.*

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus facilisis odio sed mi. Curabitur suscipit. Nullam vel nisi. Etiam semper ipsum ut lectus. Proin aliquam, erat eget pharetra commodo, eros mi condimentum quam, sed commodo justo quam ut velit. Integer a erat. Cras laoreet ligula cursus enim. Aenean scelerisque velit et tellus. Vestibulum dictum aliquet sem. Nulla facilisi. Vestibulum accumsan ante vitae elit. Nulla erat dolor, blandit in, rutrum quis, semper pulvinar, enim. Nullam varius congue risus. Vivamus sollicitudin, metus ut interdum eleifend, nisi tellus pellentesque elit, tristique accumsan eros quam et risus. Suspendisse libero odio, mattis sit amet, aliquet eget, hendrerit vel, nulla. Sed vitae augue. Aliquam erat volutpat. Aliquam feugiat vulputate nisl. Suspendisse quis nulla pretium ante pretium mollis. Proin velit ligula, sagittis at, egestas a, pulvinar quis, nisl.

Pellentesque sit amet lectus. Praesent pulvinar, nunc quis iaculis sagittis, justo quam lobortis tortor, sed vestibulum dui metus venenatis est. Nunc cursus ligula. Nulla facilisi. Phasellus ullamcorper consectetuer ante. Duis tincidunt, urna id condimentum luctus, nibh ante vulputate sapien, id sagittis massa orci ut enim. Pellentesque vestibulum convallis sem. Nulla consequat quam ut nisl. Nullam est. Curabitur tincidunt dapibus lorem. Proin velit turpis, scelerisque sit amet, iaculis nec, rhoncus ac, ipsum. Phasellus lorem arcu, feugiat eu, gravida eu, consequat molestie, ipsum. Nullam vel est ut ipsum volutpat feugiat. Aenean pellentesque.

Metadata: {'document_name': 'sample.pdf', 'page': 0, 'collection_id': 2386, 'document_id': 971725, 'document_created': 1758295630}


Content: ## Sample PDF

## *This is a simple PDF file. Fun fun fun.*

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus facilisis odio sed mi. Curabitur suscipit. Nullam vel nisi. Etiam semper ipsum ut lectus. Proin aliquam, erat eget pharetra commodo, eros mi condimentum quam, sed commodo justo quam ut velit. Integer a erat. Cras laoreet ligula cursus enim. Aenean scelerisque velit et tellus. Vestibulum dictum aliquet sem. Nulla facilisi. Vestibulum accumsan ante vitae elit. Nulla erat dolor, blandit in, rutrum quis, semper pulvinar, enim. Nullam varius congue risus. Vivamus sollicitudin, metus ut interdum eleifend, nisi tellus pellentesque elit, tristique accumsan eros quam et risus. Suspendisse libero odio, mattis sit amet, aliquet eget, hendrerit vel, nulla. Sed vitae augue. Aliquam erat volutpat. Aliquam feugiat vulputate nisl. Suspendisse quis nulla pretium ante pretium mollis. Proin velit ligula, sagittis at, egestas a, pulvinar quis, nisl.

Pellentesque sit amet lectus. Praesent pulvinar, nunc quis iaculis sagittis, justo quam lobortis tortor, sed vestibulum dui metus venenatis est. Nunc cursus ligula. Nulla facilisi. Phasellus ullamcorper consectetuer ante. Duis tincidunt, urna id condimentum luctus, nibh ante vulputate sapien, id sagittis massa orci ut enim. Pellentesque vestibulum convallis sem. Nulla consequat quam ut nisl. Nullam est. Curabitur tincidunt dapibus lorem. Proin velit turpis, scelerisque sit amet, iaculis nec, rhoncus ac, ipsum. Phasellus lorem arcu, feugiat eu, gravida eu, consequat molestie, ipsum. Nullam vel est ut ipsum volutpat feugiat. Aenean pellentesque.

Metadata: {'document_name': 'sample.pdf', 'page': 0, 'collection_id': 2386, 'document_id': 971726, 'document_created': 1758295658}


Content: In mauris. Pellentesque dui nisi, iaculis eu, rhoncus in, venenatis ac, ante. Ut odio justo, scelerisque vel, facilisis non, commodo a, pede. Cras nec massa sit amet tortor volutpat varius. Donec lacinia, neque a luctus aliquet, pede massa imperdiet ante, at varius lorem pede sed sapien. Fusce erat nibh, aliquet in, eleifend eget, commodo eget, erat. Fusce consectetuer. Cras risus tortor, porttitor nec, tristique sed, convallis semper, eros. Fusce vulputate ipsum a mauris. Phasellus mollis. Curabitur sed urna. Aliquam nec sapien non nibh pulvinar convallis. Vivamus facilisis augue quis quam. Proin cursus aliquet metus. Suspendisse lacinia. Nulla at tellus ac turpis eleifend scelerisque. Maecenas a pede vitae enim commodo interdum. Donec odio. Sed sollicitudin dui vitae justo.

Morbi elit nunc, facilisis a, mollis a, molestie at, lectus. Suspendisse eget mauris eu tellus molestie cursus. Duis ut magna at justo dignissim condimentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus varius. Ut sit amet diam suscipit mauris ornare aliquam. Sed varius. Duis arcu. Etiam tristique massa eget dui. Phasellus congue. Aenean est erat, tincidunt eget, venenatis quis, commodo at, quam.

Metadata: {'document_name': 'sample.pdf', 'page': 0, 'collection_id': 2386, 'document_id': 971725, 'document_created': 1758295630}


Content: In mauris. Pellentesque dui nisi, iaculis eu, rhoncus in, venenatis ac, ante. Ut odio justo, scelerisque vel, facilisis non, commodo a, pede. Cras nec massa sit amet tortor volutpat varius. Donec lacinia, neque a luctus aliquet, pede massa imperdiet ante, at varius lorem pede sed sapien. Fusce erat nibh, aliquet in, eleifend eget, commodo eget, erat. Fusce consectetuer. Cras risus tortor, porttitor nec, tristique sed, convallis semper, eros. Fusce vulputate ipsum a mauris. Phasellus mollis. Curabitur sed urna. Aliquam nec sapien non nibh pulvinar convallis. Vivamus facilisis augue quis quam. Proin cursus aliquet metus. Suspendisse lacinia. Nulla at tellus ac turpis eleifend scelerisque. Maecenas a pede vitae enim commodo interdum. Donec odio. Sed sollicitudin dui vitae justo.

Morbi elit nunc, facilisis a, mollis a, molestie at, lectus. Suspendisse eget mauris eu tellus molestie cursus. Duis ut magna at justo dignissim condimentum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus varius. Ut sit amet diam suscipit mauris ornare aliquam. Sed varius. Duis arcu. Etiam tristique massa eget dui. Phasellus congue. Aenean est erat, tincidunt eget, venenatis quis, commodo at, quam.

Metadata: {'document_name': 'sample.pdf', 'page': 0, 'collection_id': 2386, 'document_id': 971726, 'document_created': 1758295658}

RAG with chat completions

Perform a RAG with chat completions using the /v1/chat/completions endpoint. Start to build the prompt with the question and the chunks returned by the semantic search.

prompt_template = "Answer following question using available documents: {prompt}\n\nDocuments :\n\n{chunks}"

chunks = "\n\n\n".join([result["chunk"]["content"] for result in results])
prompt = prompt_template.format(prompt=prompt, chunks=chunks)

response = client.chat.completions.create(
messages=[{"role": "user", "content": prompt}],
model=model,
stream=False,
n=1,
)
print(f"RAG response: {response.choices[0].message.content}")
RAG response: The title of the document is not explicitly mentioned. The document appears to be a sample PDF file, but it does not have a title. The text at the beginning of the document is a comment indicating that it's a simple PDF file, but it does not provide a title.