From 0528576418c5ee5387dde13332e3a6ee707c45fe Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 21 Apr 2020 15:06:01 +0200 Subject: [PATCH] First commit --- README.md | 143 ++- client.py | 213 ++++ jamidi.json | 64 ++ kick.wav | Bin 0 -> 36230 bytes main.py | 308 ++++++ midi3.py | 488 +++++++++ nozWS.py | 451 ++++++++ rules.json | 104 ++ snare.wav | Bin 0 -> 36240 bytes web/.DS_Store | Bin 0 -> 10244 bytes web/css/style.css | 1 + web/css/style2.css | 1 + web/index.html | 74 ++ web/indexaurora.html | 288 +++++ web/knobs/.DS_Store | Bin 0 -> 6148 bytes web/knobs/rebuild.png | Bin 0 -> 19865 bytes web/knobs/simplegray.png | Bin 0 -> 227718 bytes web/knobs/switch_toggle.png | Bin 0 -> 4469 bytes web/mmo3.html | 506 +++++++++ web/ocs2.html | 515 +++++++++ web/selector.min.css | 1 + web/selector.min.js | 1 + web/webaudio-controls.js | 1875 +++++++++++++++++++++++++++++++++ web/webcomponents-lite.js | 197 ++++ web/webcomponents-lite.js.map | 1 + websocket_server.py | 371 +++++++ 26 files changed, 5600 insertions(+), 2 deletions(-) create mode 100644 client.py create mode 100644 jamidi.json create mode 100755 kick.wav create mode 100644 main.py create mode 100644 midi3.py create mode 100755 nozWS.py create mode 100644 rules.json create mode 100755 snare.wav create mode 100644 web/.DS_Store create mode 100755 web/css/style.css create mode 100755 web/css/style2.css create mode 100644 web/index.html create mode 100644 web/indexaurora.html create mode 100644 web/knobs/.DS_Store create mode 100644 web/knobs/rebuild.png create mode 100755 web/knobs/simplegray.png create mode 100755 web/knobs/switch_toggle.png create mode 100644 web/mmo3.html create mode 100644 web/ocs2.html create mode 100755 web/selector.min.css create mode 100755 web/selector.min.js create mode 100755 web/webaudio-controls.js create mode 100755 web/webcomponents-lite.js create mode 100644 web/webcomponents-lite.js.map create mode 100755 websocket_server.py diff --git a/README.md b/README.md index 2c751b3..f6b3764 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,142 @@ -# jamidi -Midi exchanges over websocket for webpages, midi devices/sofware,... \ No newline at end of file +Jamidi v0.1b +By llstr, Sam Neurohack + +LICENCE : CC NC + +Midi and more exchanges over LAN/Internet + +Imagine Bob own a TR 808 at home and Alice a nozoid OCS-2. They can control each other devices in a webpage or a midi controller. +If John has a mutliple encoders midi controller at home and want to control Alice and Bob devices, all changes made by John will be displayed to everyone and played by devices. + +More you can use also a vcvrack complex patch to drive light fixtures, laser abstract generators, midi instruments, wherever they are... + + + + + +# Jamidi features + +- Jamidi vs rtpmidi ? rtpmidi is transport efficiency, but bound to midi specifications. Jamidi support midi cc and note but is more OSC style : you can add any type of "command". + +- Jamidi is websocket based, so accept anything (webpage, home made client,...). + +- Jamidi doesn't broadcast audio. Use whatever solution you like. We use icecast and VLC to listen. + +- Jamidi is experimental and nowhere safe. You need to understand safety risks with opening a network port, especially over Internet. Ask someone who knows if you don't. + + + + +# How it work : Websocket + + +Websocket transport a string like : + +/ocs2/cc/2 0 + +or + +/tr808/note/1 + +cc : is a "command". Currently cc, reset (highly specific to nozoid synthetiser). You can add any tyoe of "command". +ocs2 : is a "device", that must be described, follow examples in jamidi.json. Here the Alice OCS2 will reveive broadcasted midi informations. + +/ocs2 and /tr808 changes made by John will be displayed to everyone and played by devices. + + +Websocket default port is 8081 but one can change. + + + + +# How it work : Server + +Will receive all "commands" from all clients, forward them to local devices and broadcast them too. + + +Options : + +servername : 'local', 'llstrvpn'. Servers (IP, port,...) must be described in jamidi.json + +--broadcast : Broadcast all incomings commands to all client. Default option. +--no-broadcast : Do not broadcast all incomings commands to all client. + +--reset : Send reset values to local device a startup. Default option. +--no-reset : Do not send reset values to local device a startup. + +--current : Send all current CC values to all new client. Default option. +--no-current : Do not send all current CC values to all new client. + + + +# How it work : Clients + +Can be webpages or midi instrument/software. Multiple clients types is supported. + + +Options : + +servername : Remote server 'local', 'xrkia' ('local' by default). Servers must be described in jamidi.json +default : Network <-> default midi device (True or False) + +Some "rules" are available. Say you want all network incoming midi CC 1 channel 0 goes to a specific device on channel 3 CC 48. Rules must be described in rules.json +Each rule may happen at all time or only during a "song". + + + + +# Webpages examples + +1/ Run : + +python3 mainwip.py + +2/ In a browser open 2 instances of each of these : + +indexaurora.html is a three rotating encoders example. +mmo3.html and ocs2.html demo to control 2 real life nozoids. + +3/ Each aurora pages talk to each other. Each mmo3 to each other and so on.. + + +These pages will work with local jamidi server, but they can't guess your online configuration. You need to modify IP and port in line : + +var LJ = 'ws://127.0.0.1:8081/' + + + +# Midi instrument usage + +1/ You need to edit jamidi.json and follow ocs2 example. + +2/ Create a client/webpage that will send /ocs2/xxx + +3/ Run : + +python3 mainwip.py + +4/ + + + + +# Install + +You need python3 and pip3 + +sudo apt-get install python3-pip + +pip3 install python-rtmidi (sudo apt install libasound2-dev, sudo apt install libjack-dev) + +pip3 install mido + +pip3 install numpy + + +for Websocket client : +Download : https://files.pythonhosted.org/packages/8b/0f/52de51b9b450ed52694208ab952d5af6ebbcbce7f166a48784095d930d8c/websocket_client-0.57.0.tar.gz + +Decompress + +python3 setup.py install diff --git a/client.py b/client.py new file mode 100644 index 0000000..f02421b --- /dev/null +++ b/client.py @@ -0,0 +1,213 @@ +#!/usr/bin/python2.7 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- +''' +NozoidUI Client v0.0.1 + +Input : local midi instruments +Output : nozoidtUI server + + + +Websocket INSTALLER + + +https://files.pythonhosted.org/packages/8b/0f/52de51b9b450ed52694208ab952d5af6ebbcbce7f166a48784095d930d8c/websocket_client-0.57.0.tar.gz + + + +''' + + +print "" +print "" +print "NozoidUI Client" +print "v0.0.1" + +from multiprocessing import Process, Queue, TimeoutError + + +import subprocess +import sys +import traceback +import os +import time + +from rtmidi.midiconstants import (CHANNEL_PRESSURE, CONTROLLER_CHANGE, NOTE_ON, NOTE_OFF, + PITCH_BEND, POLY_PRESSURE, PROGRAM_CHANGE) +import midi3 + +# from websocket_server import WebsocketServer +#import socket +import types, time +import websocket + + +try: + import thread +except ImportError: + import _thread as thread +import time + +debug = 1 + +# +# webUI server +# + +serverIP = "xrkia.org" +# serverIP = "127.0.0.1" +# serverIP = "10.8.0.46" +wsPORT = 8081 + + +# +# Midi part +# + +nozmidi = "BCR2000 Port 1" +# nozmidi = "Arturia BeatStep" +# nozmidi = "Virtual Midi A" +# nozmidi = "Virtual Sequencer" +# nowmidi = "IAC Driver Sequencer Bus 1" +# nozmidi = "UM-ONE:UM-ONE MIDI 1 20:0" + +midichanOCS2 = 2 +midichanMMO3 = 1 + +# resetMMO3 = [64,64,0,32,96] # un truc comme ca pour les valeurs de reset ? +resetMMO3 = [0] * 32 +resetOCS2 = [0] * 32 + +# /cc cc number value +def cc(midichannel, ccnumber, value, mididest): + + print "NozoidUI Sending Midi channel", midichannel, "cc", ccnumber, "value", value, "to", mididest + #if mididest == "BCR2000 Port 1": + + midi3.MidiMsg([CONTROLLER_CHANGE+midichannel-1, ccnumber, value], mididest) + + +# /reset nozoids with "default" values +def reset(nozoid): + + print "" + print "reseting", nozoid + + if nozoid == "mmo3": + for ccnumber in xrange(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+midichanMMO3-1, ccnumber, resetMMO3[ccnumber]], nozmidi) + sendWSall("/mmo3/cc/"+str(ccnumber)+" "+str(resetMMO3[ccnumber])) + else: + for ccnumber in xrange(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+midichanOCS2-1, ccnumber, resetOCS2[ccnumber]], nozmidi) + sendWSall("/ocs2/cc/"+str(ccnumber)+" "+str(resetMMO3[ccnumber])) + +# +# Websocket part +# + +def on_error(ws, error): + print(error) + +def on_close(ws): + print("### closed ###") + + +def on_open(ws): + + def run(*args): + + try: + + while True: + + time.sleep(1) + + except Exception: + traceback.print_exc() + + finally: + ws.close() + print("thread terminating...") + + + thread.start_new_thread(run, ()) + +def on_message(ws, message): + # + print "" + print(message) + if len(message) > 200: + message = message[:200]+'..' + + oscpath = message.split(" ") + if debug > 0: + #print "Client got from WS", client['id'], "said :", message, "splitted in an oscpath :", oscpath + print "Client got from WS said :", message, "splitted in an oscpath :", oscpath + + wscommand = oscpath[0].split("/") + print "WS command was :",wscommand + + if len(oscpath) == 1: + args[0] = "noargs" + #print "noargs command" + + elif wscommand[2] == "cc": + if wscommand[1] == "ocs2": + print "Incoming OCS-2 WS" + cc(midichanOCS2, int(wscommand[3]), int(oscpath[1]), nozmidi) + else: + print "Incoming MMO-3 WS" + cc(midichanMMO3, int(wscommand[3]), int(oscpath[1]), nozmidi) + + + elif wscommand[2] == "reset": + if wscommand[1] == "ocs2": + reset("ocs2") + else: + reset("mmo3") + + + # if needed a loop back : WS Client -> server -> WS Client + # sendWSall(message) + + + +print "Running...." + +# Main loop do nothing. Maybe do the webui server ? +try: + + print "" + print "Connecting to NozoidUI server..." + print "at", serverIP, "port",wsPORT + + #websocket.enableTrace(True) + ws = websocket.WebSocketApp("ws://"+str(serverIP)+":"+str(wsPORT), + on_message = on_message, + on_error = on_error, + on_close = on_close) + + midi3.ws = ws + midi3.wsmode = True + + print "Midi Configuration..." + print "Midi Destination", nozmidi + + midi3.check() + + ws.on_open = on_open + ws.run_forever() + + +except KeyboardInterrupt: + pass + +# Gently stop on CTRL C + +print "Fin de NozoidUI." + + + + diff --git a/jamidi.json b/jamidi.json new file mode 100644 index 0000000..b733c2c --- /dev/null +++ b/jamidi.json @@ -0,0 +1,64 @@ +{ +"local" : +[ + { + "_comment": "Server is localhost", + "type": "serverconf", + "name": "local", + "IP": "127.0.0.1", + "port": 8081 + } +], + +"llstrvpn" : +[ + { + "_comment": "Server is llstrvpn", + "type": "serverconf", + "name": "llstrvpn", + "IP": "10.8.0.46", + "port": 8081 + } +], + +"xkkia" : +[ + { + "_comment": "Server is xrkia.org", + "type": "serverconf", + "name": "xrkia", + "IP": "xrkia.org", + "port": 8081 + } +], + +"ocs2": [ + { + "_comment": "OCS-2 parameters", + "type": "mididevice", + "mididevice": "UM-ONE:UM-ONE MIDI 1 20:0", + "midichan" : 2 + } +], + +"mmo3": [ + { + "_comment": "MMO-3 parameters", + "type": "mididevice", + "mididevice": "UM-ONE:UM-ONE MIDI 1 20:0", + "midichan" : 1 + } + ], + +"default": [ + { + "_comment": "Client : default midi device", + "type": "mididevice", + "mididevice": "BCR2000 Port 1", + "midichan" : 1 + } + +] + + +} \ No newline at end of file diff --git a/kick.wav b/kick.wav new file mode 100755 index 0000000000000000000000000000000000000000..80647fa1079c679600c4e210135e05f7bc9dabc3 GIT binary patch literal 36230 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 literal 0 HcmV?d00001 diff --git a/main.py b/main.py new file mode 100644 index 0000000..25150ab --- /dev/null +++ b/main.py @@ -0,0 +1,308 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- +''' +Jamidi Server v0.1b + +''' + +print("") +print("") +print("Jamidi Server") +print("v0.1b") + +#from multiprocessing import Process, Queue, TimeoutError +#import subprocess +import sys +import traceback +import os +import time + +from rtmidi.midiconstants import (CHANNEL_PRESSURE, CONTROLLER_CHANGE, NOTE_ON, NOTE_OFF, + PITCH_BEND, POLY_PRESSURE, PROGRAM_CHANGE) +import midi3 + +from websocket_server import WebsocketServer +#import socket +import types, time, json +import argparse + +debug = 1 + + +print ("") +print ("Arguments parsing if needed...") +argsparser = argparse.ArgumentParser(description="Jamidi Server v0.1b commands help mode") +argsparser.add_argument("-s","--servername",help="Servername: 'local', 'llstrvpn' (local by default)", type=str) +argsparser.add_argument('--current',help="Send all current CC values to all new client. Default option" , dest='current', action='store_true') +argsparser.add_argument('--no-current',help="Do not send all current CC values to all new client. ", dest='current', action='store_false') +argsparser.add_argument('--broadcast',help="Broadcast all incomings commands to all client. Default option" , dest='broadcast', action='store_true') +argsparser.add_argument('--no-broadcast',help="Do not broadcast all incomings commands to all client", dest='broadcast', action='store_false') +argsparser.add_argument('--reset',help="Send reset values to local device a startup. Default option" , dest='reset', action='store_true') +argsparser.add_argument('--no-reset',help="Do not send reset values to local device a startup.", dest='reset', action='store_false') +argsparser.set_defaults(reset=True) +argsparser.set_defaults(current=True) +argsparser.set_defaults(broadcast=True) + +args = argsparser.parse_args() + +# Mode +if args.servername: + servername = args.servername +else: + servername = "local" + +# Broadcast commands to all clients ? +if args.broadcast == False: + print("Broadcast disabled") + broadcast = False +else: + print("Broadcast enabled") + broadcast = True + +# Send current values to all new client ? +if args.current == False: + print("Do not send current values at startup disabled") + current = False +else: + print("Current values update at startup disabled") + current = True + + +# reset = [64,64,0,32,96] # un truc comme ca pour les valeurs de reset ? +resetMMO3 = [0] * 32 +resetOCS2 = [0] * 32 + +# record current values +crtvalueMMO3 = [0] * 32 +crtvalueOCS2 = [0] * 32 + +# record number of loaded pages (aka client id or players) +Players=0 + + +# +# Midi part +# + + +print("Midi Configuration...") +# print("Midi Destination", nozmidi) + +midi3.check() + +def GetTime(): + return time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) + + + +# /cc cc number value +def cc(midichannel, ccnumber, value, mididest): + + if debug>0: + print("Jamidi Sending Midi channel", midichannel, "cc", ccnumber, "value", value, "to", mididest) + + midi3.MidiMsg([CONTROLLER_CHANGE+midichannel-1, ccnumber, value], mididest) + + +# /reset nozoids with "default" values +def reset(nozoid): + + print("") + print(GetTime(),"reseting", nozoid) + + if nozoid == "mmo3": + for ccnumber in range(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+Confs["mmo3"][0]["midichan"]-1, ccnumber, resetMMO3[ccnumber]], Confs["mmo3"][0]["mididevice"]) + sendWSall("/mmo3/cc/"+str(ccnumber)+" "+str(resetMMO3[ccnumber])) + crtvalueMMO3[ccnumber]=resetMMO3[ccnumber] + else: + for ccnumber in range(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+Confs["ocs2"][0]["midichan"]-1, ccnumber, resetOCS2[ccnumber]], Confs["ocs2"][0]["mididevice"]) + sendWSall("/ocs2/cc/"+str(ccnumber)+" "+str(resetOCS2[ccnumber])) + crtvalueOCS2[ccnumber]=resetOCS2[ccnumber] + print("End of reset for", nozoid) + print("") + +# /send all current cc values +def sendallcurrentccvalues(nozoid): + + if broadcast == True: + #print "" + print(GetTime(),"sending all current cc values of", nozoid) + + if nozoid == "mmo3": + for ccnumber in range(0,32): + sendWSall("/mmo3/cc/"+str(ccnumber)+" "+str(crtvalueMMO3[ccnumber])) + else: + for ccnumber in range(0,32): + sendWSall("/ocs2/cc/"+str(ccnumber)+" "+str(crtvalueOCS2[ccnumber])) +# +# Settings from jamidi.json +# + +# Load midi routing definitions in clientconfr.json +def LoadConfs(): + global Confs, nbmidiconf + + if os.path.exists('jamidi.json'): + f=open("jamidi.json","r") + + s = f.read() + Confs = json.loads(s) + + +# return midi confname number for given type 'Specials', 'cc2cc' +def findConfs(confname,conftype): + + #print("searching", midiconfname,'...') + position = -1 + for counter in range(len(Confs[conftype])): + if confname == Confs[conftype][counter]['name']: + #print(confname, "is ", counter) + position = counter + return position + + + +# +# Websocket part +# + +# Called for every WS client connecting (after handshake) +def new_client(client, wserver): + + global Players + + print(GetTime(),"New WS client connected and was given id %d" % client['id']) + #sendWSall("/status Hello %d" % client['id']) + if current == True: + sendallcurrentccvalues("mmo3") + sendallcurrentccvalues("ocs2") + + Players+=1 + sendWSall("/status Hello %d" %(client['id'])) + sendWSall("/players %d" %(Players)) + + +# Called for every WS client disconnecting +def client_left(client, wserver): + + global Players + + try: + print(GetTime(),"WS Client(%d) disconnected" % client['id']) + Players-=1 + sendWSall("/players %d" %(Players)) + except: + print("Something weird if coming from",client,"on the wire...") + pass + + +# Called for each WS received message. +def message_received(client, wserver, message): + + print("") + if len(message) > 200: + message = message[:200]+'..' + + oscpath = message.split(" ") + if debug > 0: + print(GetTime(),"Main got from WS", client['id'], "said :", message, "splitted in an oscpath :", oscpath) + else: + print(GetTime(),"Main got WS Client", client['id'], "said :", message) + + # wscommand will be like ['', 'ocs2', 'cc', '9'] + wscommand = oscpath[0].split("/") + if debug > 0: + print("wscommand :",wscommand) + + if len(oscpath) == 1: + args[0] = "noargs" + #print "noargs command" + + # like /ocs2/cc/2 127 + elif wscommand[2] == "cc": + ccvr=int(wscommand[3]) #cc variable + ccvl=int(oscpath[1]) #cc value + if debug > 0: + print("ccvr=%d/ccvl=%d"%(ccvr,ccvl)) + if wscommand[1] == "ocs2": + #cc(Confs[wscommand[1]][0]["midichan"], ccvr, ccvl, Confs[wscommand[1]][0]["mididevice"]) + crtvalueOCS2[ccvr]=ccvl + else: + #cc(Confs[wscommand[1]][0]["midichan"], ccvr, ccvl, Confs[wscommand[1]][0]["mididevice"]) + crtvalueMMO3[ccvr]=ccvl + + cc(Confs[wscommand[1]][0]["midichan"], ccvr, ccvl, Confs[wscommand[1]][0]["mididevice"]) + + # like /ocs2/reset 1 + elif wscommand[2] == "reset": + if wscommand[1] == "ocs2": + reset("ocs2") + else: + reset("mmo3") + + #print "" + + # if needed a loop back : WS Client -> server -> WS Client + sendWSall(message) + +''' +def handle_timeout(self): + self.timed_out = True +''' + +def sendWSall(message): + + if broadcast == True: + if debug >0: + print(GetTime(),"sending to all %s" % (message)) + + wserver.send_message_to_all(message) + + +LoadConfs() + +serverIP = Confs[servername][0]["IP"] +wsPORT = Confs[servername][0]["port"] + +print("Running....") + +# Main loop do nothing. Maybe do the webui server ? +try: + #while True: + + # Websocket startup + wserver = WebsocketServer(wsPORT,host=serverIP) + + #print wserver + print("") + print(GetTime(),"Launching Jamidi Websocket server...") + print(GetTime(),"at", serverIP, "port",wsPORT) + wserver.set_fn_new_client(new_client) + wserver.set_fn_client_left(client_left) + wserver.set_fn_message_received(message_received) + + if reset == True: + reset("mmo3") + reset("ocs2") + + + #print "" + print(GetTime(),"WS server running forever...") + + wserver.run_forever() + + +except KeyboardInterrupt: + pass + +# Gently stop on CTRL C + + +print("Fin de Jamidi.") + + + + diff --git a/midi3.py b/midi3.py new file mode 100644 index 0000000..7fc77f0 --- /dev/null +++ b/midi3.py @@ -0,0 +1,488 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +""" +Midi3 light version for soundt/Jamidi/clapt +v0.7.0 + +Midi Handler : + +- Hook to the MIDI host +- Enumerate connected midi devices and spawn a process/device to handle incoming events + +by Sam Neurohack +from /team/laser + + +""" + + +import time +from threading import Thread + +import rtmidi +from rtmidi.midiutil import open_midiinput +from rtmidi.midiconstants import (CHANNEL_PRESSURE, CONTROLLER_CHANGE, NOTE_ON, NOTE_OFF, + PITCH_BEND, POLY_PRESSURE, PROGRAM_CHANGE) +import mido +from mido import MidiFile + +import traceback +import weakref +import sys +from sys import platform +import os + + +is_py2 = sys.version[0] == '2' +if is_py2: + from queue import Queue + from OSC import OSCServer, OSCClient, OSCMessage +else: + from queue import Queue + from OSC3 import OSCServer, OSCClient, OSCMessage + + +print("") + +midiname = ["Name"] * 16 +midiport = [rtmidi.MidiOut() for i in range(16) ] + +OutDevice = [] +InDevice = [] + +# max 16 midi port array + +midinputsname = ["Name"] * 16 +midinputsqueue = [Queue() for i in range(16) ] +midinputs = [] + +debug = 0 + +# False = server / True = Client +wsmode = False + +#Mser = False + +MidInsNumber = 0 + + +clock = mido.Message(type="clock") + +start = mido.Message(type ="start") +stop = mido.Message(type ="stop") +ccontinue = mido.Message(type ="continue") +reset = mido.Message(type ="reset") +songpos = mido.Message(type ="songpos") + +#mode = "maxwell" + +''' +print "clock",clock) +print "start",start) +print "continue", ccontinue) +print "reset",reset) +print "sonpos",songpos) +''' + +try: + input = raw_input +except NameError: + # Python 3 + Exception = Exception + + +STATUS_MAP = { + 'noteon': NOTE_ON, + 'noteoff': NOTE_OFF, + 'programchange': PROGRAM_CHANGE, + 'controllerchange': CONTROLLER_CHANGE, + 'pitchbend': PITCH_BEND, + 'polypressure': POLY_PRESSURE, + 'channelpressure': CHANNEL_PRESSURE +} + + + +notes = ["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"] +def midi2note(midinote): + + print("midinote",midinote, "note", notes[midinote%12]+str(round(midinote/12))) + return notes[midinote%12]+str(round(midinote/12)) + + +# +# MIDI Startup and handling +# + +mqueue = Queue() +inqueue = Queue() + +# +# Events from Generic MIDI Handling +# + +def MidinProcess(inqueue, portname): + + inqueue_get = inqueue.get + + while True: + time.sleep(0.001) + msg = inqueue_get() + print("") + print("Generic from", portname,"msg : ", msg) + + # Note On + if msg[0]==NOTE_ON: + + MidiChannel = msg[0]-144 + MidiNote = msg[1] + MidiVel = msg[2] + print("NOTE ON :", MidiNote, 'velocity :', MidiVel, "Channel", MidiChannel) + + + if MidiNote < 63 and MidiVel >0: + + if platform == 'darwin': + os.system("afplay snare.wav") + else: + os.system("aplay snare.wav") + + + if MidiNote > 62 and MidiVel >0: + + if platform == 'darwin': + os.system("afplay kick.wav") + else: + os.system("aplay kick.wav") + + + + # Note Off + if msg[0]==NOTE_OFF: + print("NOTE OFF :", MidiNote, 'velocity :', MidiVel, "Channel", MidiChannel) + + + # MMO-3 Midi CC message CHANNEL 1 + if msg[0] == CONTROLLER_CHANGE: + print("channel 1 (MMO-3) CC :", msg[1], msg[2]) + + print("Midi in process send /mmo3/cc/"+str(msg[1])+" "+str(msg[2])+" to WS") + if wsmode == True: + ws.send("/mmo3/cc/"+str(msg[1])+" "+str(msg[2])) + + # OCS-2 Midi CC message CHANNEL 2 + if msg[0] == CONTROLLER_CHANGE+1: + print("channel 2 (OCS-2) CC :", msg[1], msg[2]) + + print("Midi in process send /ocs2/cc/"+str(msg[1])+" "+str(msg[2])+" to WS") + if wsmode == True: + ws.send("/ocs2/cc/"+str(msg[1])+" "+str(msg[2])) + + + # other midi message + if msg[0] != NOTE_OFF and msg[0] != NOTE_ON and msg[0] != CONTROLLER_CHANGE: + pass + + + + +# Generic call back : new msg forwarded to queue +class AddQueue(object): + def __init__(self, portname, port): + self.portname = portname + self.port = port + #print "AddQueue", port) + self._wallclock = time.time() + + def __call__(self, event, data=None): + message, deltatime = event + self._wallclock += deltatime + #print "inqueue : [%s] @%0.6f %r" % ( self.portname, self._wallclock, message)) + message.append(deltatime) + midinputsqueue[self.port].put(message) + + +# +# MIDI OUT Handling +# + + +class OutObject(): + + _instances = set() + counter = 0 + + def __init__(self, name, kind, port): + + self.name = name + self.kind = kind + self.port = port + + self._instances.add(weakref.ref(self)) + OutObject.counter += 1 + + print("Adding OutDevice name", self.name, "kind", self.kind, "port", self.port) + + @classmethod + def getinstances(cls): + dead = set() + for ref in cls._instances: + obj = ref() + if obj is not None: + yield obj + else: + dead.add(ref) + cls._instances -= dead + + def __del__(self): + OutObject.counter -= 1 + + + +def OutConfig(): + global midiout, MidInsNumber + + # + if len(OutDevice) == 0: + print("") + print("MIDIout...") + print("List and attach to available devices on host with IN port :") + + # Display list of available midi IN devices on the host, create and start an OUT instance to talk to each of these Midi IN devices + midiout = rtmidi.MidiOut() + available_ports = midiout.get_ports() + + for port, name in enumerate(available_ports): + + midiname[port]=name + midiport[port].open_port(port) + #print ) + #print "New OutDevice [%i] %s" % (port, name)) + + OutDevice.append(OutObject(name, "generic", port)) + + #print "") + print(len(OutDevice), "Out devices") + #ListOutDevice() + MidInsNumber = len(OutDevice)+1 + +def ListOutDevice(): + + for item in OutObject.getinstances(): + + print(item.name) + +def FindOutDevice(name): + + port = -1 + for item in OutObject.getinstances(): + #print "searching", name, "in", item.name) + if name == item.name: + #print 'found port',item.port) + port = item.port + return port + + +def DelOutDevice(name): + + Outnumber = Findest(name) + print('deleting OutDevice', name) + + if Outnumber != -1: + print('found OutDevice', Outnumber) + delattr(OutObject, str(name)) + print("OutDevice", Outnumber,"was removed") + else: + print("OutDevice was not found") + + + +# +# MIDI IN Handling +# Create processing thread and queue for each device +# + +class InObject(): + + _instances = set() + counter = 0 + + def __init__(self, name, kind, port, rtmidi): + + self.name = name + self.kind = kind + self.port = port + self.rtmidi = rtmidi + self.queue = Queue() + + self._instances.add(weakref.ref(self)) + InObject.counter += 1 + + print("Adding InDevice name", self.name, "kind", self.kind, "port", self.port) + + @classmethod + def getinstances(cls): + dead = set() + for ref in cls._instances: + obj = ref() + if obj is not None: + yield obj + else: + dead.add(ref) + cls._instances -= dead + + def __del__(self): + InObject.counter -= 1 + + +def InConfig(): + + print("") + print("MIDIin...") + # client mode + if wsmode == True: + print("ws object", ws) + print("List and attach to available devices on host with OUT port :") + + if platform == 'darwin': + mido.set_backend('mido.backends.rtmidi/MACOSX_CORE') + + genericnumber = 0 + + for port, name in enumerate(mido.get_input_names()): + + + outport = FindOutDevice(name) + midinputsname[port]=name + + #print "name",name, "Port",port, "Outport", outport) + # print "midinames", midiname) + + #ListInDevice() + + try: + #print name, name.find("RtMidi output")) + if name.find("RtMidi output") > -1: + print("No thread started for device", name) + else: + portin = object + port_name = "" + portin, port_name = open_midiinput(outport) + #midinputs.append(portin) + InDevice.append(InObject(name, "generic", outport, portin)) + + thread = Thread(target=MidinProcess, args=(midinputsqueue[port],port_name)) + thread.setDaemon(True) + thread.start() + + #print "Thread launched for midi port", port, "portname", port_name, "Inname", midiname.index(port_name) + #print "counter", InObject.counter + #midinputs[port].set_callback(AddQueue(name),midinputsqueue[port]) + #midinputs[port].set_callback(AddQueue(name)) + #genericnumber += 1 + InDevice[InObject.counter-1].rtmidi.set_callback(AddQueue(name,port)) + + except Exception: + traceback.print_exc() + + #print "") + print(InObject.counter, "In devices") + #ListInDevice() + + +def ListInDevice(): + + #print "known IN devices :" + for item in InObject.getinstances(): + + print(item.name) + print("") + +def FindInDevice(name): + + port = -1 + for item in InObject.getinstances(): + #print "searching", name, "in", item.name) + if name in item.name: + #print 'found port',item.port) + port = item.port + return port + + +def DelInDevice(name): + + Innumber = Findest(name) + print('deleting InDevice', name) + + if Innumber != -1: + print('found InDevice', Innumber) + delattr(InObject, str(name)) + print("InDevice", Innumber,"was removed") + else: + print("InDevice was not found") + + + +def End(): + global midiout + + #midiin.close_port() + midiout.close_port() + + #del virtual + if launchpad.Here != -1: + del launchpad.Here + if bhoreal.Here != -1: + del bhoreal.Here + if LPD8.Here != -1: + del LPD8.Here + +# mididest : all or specifiname, won't be sent to launchpad or Bhoreal. +def MidiMsg(midimsg, mididest): + + + desterror = -1 + + print("midi3 got midimsg", midimsg, "for", mididest) + + for port in range(len(OutDevice)): + # To mididest + if midiname[port].find(mididest) != -1: + if debug>0: + print("midi 3 sending to name", midiname[port], "port", port, ":", midimsg) + midiport[port].send_message(midimsg) + desterror = 0 + + if desterror == -1: + print("mididest",mididest, ": ** This midi destination doesn't exists **") + + # send midi msg over ws. + #if wsmode == True: + # ws.send("/ocs2/cc/1 2") + + + +def NoteOn(note, velocity, mididest): + global MidInsNumber + + + for port in range(MidInsNumber): + + # To mididest + if midiname[port].find(mididest) == 0: + midiport[port].send_message([NOTE_ON, note, velocity]) + + + +def listdevice(number): + + return midiname[number] + +def check(): + + OutConfig() + InConfig() + + + diff --git a/nozWS.py b/nozWS.py new file mode 100755 index 0000000..132cac2 --- /dev/null +++ b/nozWS.py @@ -0,0 +1,451 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- +''' +NozoidUI Client v0.0.1 + +Input : local midi instruments +Output : nozoidtUI server + +Websocket INSTALLER + +https://files.pythonhosted.org/packages/8b/0f/52de51b9b450ed52694208ab952d5af6ebbcbce7f166a48784095d930d8c/websocket_client-0.57.0.tar.gz +''' + +print("") +print("") +print("NozoidUI Client") +print("v0.0.1") + +from multiprocessing import Process, Queue, TimeoutError + +import subprocess +import sys +import traceback +import os +import time + +from rtmidi.midiconstants import (CHANNEL_PRESSURE, CONTROLLER_CHANGE, NOTE_ON, NOTE_OFF, + PITCH_BEND, POLY_PRESSURE, PROGRAM_CHANGE) +import midi3 + +from websocket_server import WebsocketServer + +#import socket +import types, time +import websocket + +import socket +import struct +import argparse + +argsparser = argparse.ArgumentParser(description="Nozoid : Transform musical parameters in XXX visualisation") +argsparser.add_argument("-i","--iport",help="remserial IN port (9090 by default)",type=int) +argsparser.add_argument("-o","--oport",help="remserial OUT port (9091 by default)",type=int) +argsparser.add_argument("-t","--timeout",help="timeout connection (0.002 s by default)",type=float) +args = argsparser.parse_args() + +nozIP='127.0.0.1' +portrcv = 9090 +portwrt = 9091 +timeout=0.002 + +if args.iport: + portrcv=args.iport +if args.oport: + portwrt=args.oport +if args.timeout: + timeout=args.timeout + + +try: + import _thread +except ImportError: + import _thread as thread +import time + +debug = 0 + +# +# webUI server +# + +serverIP = "xrkia.org" +# serverIP = "127.0.0.1" +# serverIP = "10.8.0.46" +wsPORT = 8081 + + +# +# Midi part +# + +# nozmidi = "BCR2000 Port 1" +# nozmidi = "Arturia BeatStep" +# nozmidi = "Virtual Midi A" +# nozmidi = "Virtual Sequencer" +# nowmidi = "IAC Driver Sequencer Bus 1" +nozmidi = "UM-ONE:UM-ONE MIDI 1 20:0" + +midichanOCS2 = 2 +midichanMMO3 = 1 + +# resetMMO3 = [64,64,0,32,96] # un truc comme ca pour les valeurs de reset ? +resetMMO3 = [0] * 32 +resetOCS2 = [0] * 32 + +# /cc cc number value +def cc(midichannel, ccnumber, value, mididest): + + print("NozoidUI Sending Midi channel", midichannel, "cc", ccnumber, "value", value, "to", mididest) + #if mididest == "BCR2000 Port 1": + + midi3.MidiMsg([CONTROLLER_CHANGE+midichannel-1, ccnumber, value], mididest) + + +# /reset nozoids with "default" values +def reset(nozoid): + + print("") + print("reseting", nozoid) + + if nozoid == "mmo3": + for ccnumber in range(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+midichanMMO3-1, ccnumber, resetMMO3[ccnumber]], nozmidi) + sendWSall("/mmo3/cc/"+str(ccnumber)+" "+str(resetMMO3[ccnumber])) + else: + for ccnumber in range(0,32): + midi3.MidiMsg([CONTROLLER_CHANGE+midichanOCS2-1, ccnumber, resetOCS2[ccnumber]], nozmidi) + sendWSall("/ocs2/cc/"+str(ccnumber)+" "+str(resetMMO3[ccnumber])) + +# +# Websocket part +# + +def on_error(ws, error): + print(error) + +def on_close(ws): + print("### closed ###") + + +def on_open(ws): + + def run(*args): + + try: + + NozStream() + #while True: + + # time.sleep(1) + + except Exception: + traceback.print_exc() + + finally: + ws.close() + print("thread terminating...") + + + _thread.start_new_thread(run, ()) + +def on_message(ws, message): + # + print("") + print(message) + if len(message) > 200: + message = message[:200]+'..' + + oscpath = message.split(" ") + if debug > 0: + #print "Client got from WS", client['id'], "said :", message, "splitted in an oscpath :", oscpath + print("Client got from WS said :", message, "splitted in an oscpath :", oscpath) + + wscommand = oscpath[0].split("/") + print("WS command was :",wscommand) + + if len(oscpath) == 1: + args[0] = "noargs" + #print "noargs command" + + elif wscommand[2] == "cc": + if wscommand[1] == "ocs2": + print("Incoming OCS-2 WS") + cc(midichanOCS2, int(wscommand[3]), int(oscpath[1]), nozmidi) + else: + print("Incoming MMO-3 WS") + cc(midichanMMO3, int(wscommand[3]), int(oscpath[1]), nozmidi) + + + elif wscommand[2] == "reset": + if wscommand[1] == "ocs2": + reset("ocs2") + else: + reset("mmo3") + + + # if needed a loop back : WS Client -> server -> WS Client + # sendWSall(message) + +################## +#BEGIN NOZOID PART +################## + +#backup each oscillator value +osc = [0] * 512 +oscnumber = 0 +Knob = [255] * 255 + +TimeoutCompt=0 +LastNozMsg=struct.pack('>BBBB',255,255,0,0) + +def knob2cc(s): + a1, a2 = 0,65535 + b1, b2 = 0, 127 + return b1 + ((s - a1) * (b2 - b1) / (a2 - a1)) + +def lhex(h): + return ':'.join(x.encode('hex') for x in h) + +def Write(sockwrt,stuff): + # Send data + print('sending',stuff) + my_bytes = bytearray() + for count in range(len(stuff)): + my_bytes.append(stuff[count]) + sockwrt.sendall(my_bytes) + + +def Read4(): + #print "**SockRcv %s"%SockRcv + return Read(SockRcv,4) + +# Read a given number of bytes +def Read(sockrcv,length): + + # Look for the response + amount_received_t = 0 + data = "" + + data = sockrcv.recv(length) + amount_received_t = len(data) + + while amount_received_t < length: + amount_expected = length-amount_received_t + #print "**data:",lhex(data), + #print "**still needing %d byte(s) to read"%amount_expected + data_received = sockrcv.recv(amount_expected) + amount_received = len(data_received) + + data += data_received + amount_received_t = len(data) + + if ord(data[0])==0xFF: + return data + else: + while ord(data[0])!=0xFF: + #print "*datax0",lhex(data) + data=data[1:] + data_received = sockrcv.recv(1) + data+=data_received + #data+=struct.pack('>B',255) + #print "*datax1",lhex(data) + #raw_input("Hit Enter To Continue...") + print("**Shiftin'!!!",lhex(data)) + #raw_input("Hit Enter To Continue...") + return data + #return struct.pack('>BBBB',255,255,0,0) + +# Nozoids Messages decoding +def Msg(NozMsg,nozport): + + global osc + global oscnumber + + if ord(NozMsg[1]) < 160: + (val,) = struct.unpack_from('>H', NozMsg, 2) + knob=ord(NozMsg[1])+(nozport*127) + #ccknobv= cc knob value + #if knob == 30 or knob == 31: + if knob >= 30: + #return (knob, val) + #return (knob, 0) + return (knob, 0-32767) + ccknobv=knob2cc(val) + if Knob[knob] != ccknobv: + if Knob[knob] != 255: + print("knob %d has changed from %d to %d value"%(knob,Knob[knob],ccknobv)) + #raw_input("Hit Enter To Continue...") + Knob[knob]=ccknobv + #return (knob, val) + return (knob, val-32767) + + if (ord(NozMsg[1]) >= 0xA0 and ord(NozMsg[1]) < 0xF0) or (ord(NozMsg[1]) >= 0xF6 and ord(NozMsg[1]) <= 0xF8): + OrdNozMsg=ord(NozMsg[1]) + + (val,) = struct.unpack_from('>h', NozMsg, 2) + oscnumber = ord(NozMsg[1])-0x9F+(nozport*127) + oscvalue = val + osc[oscnumber]=oscvalue + return (oscnumber, oscvalue) + + # type of nozoid + if ord(NozMsg[1]) == 0xF0: + #if NozMsg[1] == 0xF0: + print("Nozoid type sent:%s"%NozMsg[-2:]) + #raw_input("Hit Enter To Continue") + noztype[nozport] = NozMsg[-2:] + #print "noztype:%s"%noztype + return (0xF0, NozMsg[-2:]) + + if ord(NozMsg[1]) >= 0xF3 and ord(NozMsg[1]) <= 0xF5: + #if NozMsg[1] >= 0xF3 and NozMsg[1] <= 0xF5:#an osc value that belong to the [0,65535] interval (CV values ? see Arduino's code of MMO-3 and OSC-2 firmware) + (val,) = struct.unpack_from('>H', NozMsg, 2) + oscnumber=ord(NozMsg[1])-0x9F+(nozport*127) + oscvalue=val-32767 + osc[oscnumber]=oscvalue + return (oscnumber,oscvalue) + + if ord(NozMsg[1]) == 0xFA: #a note/keyboard has been sent + (val,) = struct.unpack_from('>H', NozMsg, 2) + #print("set notekb to", str(val)) + return (0xFA, val) + + if ord(NozMsg[1]) == 0xFF: #an error somewhere ? + (val,) = struct.unpack_from('>H', NozMsg, 2) + return (0xFF, val) + +def NozStream(): + global osc + global oscnumber + global TimeoutCompt + + if SockWrt: + Write(SockWrt,[0xFF]) + #Write(SockWrt,[0xF6])#VCF + #Write(SockWrt,[0xA0])#VCO1 + #Write(SockWrt,[0xA1])#VCO2 + Write(SockWrt,[0xA3])#LFO2 + #SockWrt.close() + + while True: + + try: + NozMsg = Read4()#here we read ! + #print "**NozMsg:%s"%NozMsg + LastNozMsg = NozMsg#backing up last good msg + #print "NozMsg:",lhex(NozMsg) + + MsgReturn = Msg(NozMsg,0)#Go decoding Msg and assigning global vars... + print("MsgReturn:",MsgReturn) + + #y=osc[oscnumber] + + ws.send("/ocs2/OSC"+str(oscnumber)+" "+str(osc[oscnumber])) + + + except socket.timeout: + TimeoutCompt+=1 + print('**caught a timeout(%d)'%TimeoutCompt) + time.sleep(timeout) + NozMsg = struct.pack('>BBBB',255,255,0,0)#0xFFFF0000 (ie error) + #print "NozMsg:",lhex(NozMsg) + + +# Nozoid reader via remserial +# ex : remserial -p 9090 -s "2000000 raw" /dev/ttyACM0 +# +print("Nozoid Reader connecting...") +try: +# Create a TCP/IP socket + SockRcv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +# Connect the socket to the port where the server is listening + serverrcv_address = (nozIP, portrcv) + + SockRcv.connect(serverrcv_address) + + SockRcv.settimeout(timeout)#timeout 0.002s + + print('connecting to %s portrcv %s' % serverrcv_address, file=sys.stderr) +except: + print("** huh! did you launch remserial on %s:%d ?"%(nozIP,portrcv)) + SockRcv.close() + SockRcv=None + input("Hit Enter To Continue...") + +# +# Nozoid write via remserial +# ex : remserial -p 9091 -w -s "2000000 raw" /dev/ttyACM0 +# +print("Nozoid Writer connecting...") +try: +# Create a TCP/IP socket + SockWrt = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + serverwrt_address = (nozIP, portwrt) + +# Connect the socket to the port where the server is listening + SockWrt.connect(serverwrt_address) + print('connecting to %s portwrt %s' % serverwrt_address, file=sys.stderr) +except: + print("** huh! did you launch remserial on %s:%d ?"%(nozIP,portwrt)) + SockWrt.close() + SockWrt=None + input("Hit Enter To Continue...") + + +################### +#END OF NOZOID PART +################### + +print("Running....") + +def GetTime(): + return time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) + +def sendWSall(message): + if debug >0: + print(GetTime(),"sending to all %s" % (message)) + + ws.send_message_to_all(message) + +# Main loop do nothing. Maybe do the webui server ? +try: + + print("") + print("Connecting to NozoidUI server...") + print("at", serverIP, "port",wsPORT) + + #websocket.enableTrace(True) + ws = websocket.WebSocketApp("ws://"+str(serverIP)+":"+str(wsPORT), + on_message = on_message, + on_error = on_error, + on_close = on_close) + + midi3.ws = ws + midi3.wsmode = True + + print("Midi Configuration...") + print("Midi Destination", nozmidi) + + midi3.check() + + ws.on_open = on_open + ws.run_forever() + + #print "That Point Is Never Reach ?" + if SockWrt: + Write(SockWrt,[0xFF]) + print("closing nozoid connections!") + SockWrt.shutdown(socket.SHUT_RDWR) + SockWrt.close() + SockRcv.shutdown(socket.SHUT_RDWR) + SockRcv.close() + +except KeyboardInterrupt: + pass + +# Gently stop on CTRL C + +print("Fin de NozoidUI.") diff --git a/rules.json b/rules.json new file mode 100644 index 0000000..06bb259 --- /dev/null +++ b/rules.json @@ -0,0 +1,104 @@ +{ + + +"cc2cc": [ + { + "_comment": "route incoming ws CC to another local CC/midi device", + "name": "ocs2 lfo1 fq (= chan 2 cc 13) to bcr chan 2 cc 10", + "songname": "all", + "chanIN" : 2, + "ccs" : 13, + "chanOUT" : 2, + "ccOUT": 1, + "valuetype" : "linear", + "mididest" : "BCR2000 Port 1" + }, + { + "name": "bass2", + "songname": "song2", + "chanIN" : 1, + "ccs" : "all", + "chanOUT" : 1, + "ccOUT": 10, + "valuetype" : "curved", + "mididest" : "Virtual Midi A" + } +], + +"Specials": [ + { + "_comment": "Pas implementé encore dans nozoidUI", + "name": "autotempo", + "songname": "song1", + "chanIN" : 16, + "notes" : 127, + "notetype" : "on", + "code": "autotempo", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "resetCCON", + "songname": "all", + "chanIN" : 16, + "notes" : 126, + "notetype" : "on", + "code": "resetCCON", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "resetCCOFF", + "songname": "all", + "chanIN" : 16, + "notes" : 126, + "notetype" : "off", + "code": "resetCCOFF", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "BangON", + "songname": "all", + "chanIN" : 16, + "notes" : 125, + "notetype" : "on", + "code": "bangON", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "BangOFF", + "songname": "all", + "chanIN" : 16, + "notes" : 125, + "notetype" : "off", + "code": "bangOFF", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "StrobeON", + "songname": "all", + "chanIN" : 16, + "notes" : 124, + "notetype" : "on", + "code": "strobeON", + "valuetype" : 105, + "laser" : 0 + }, + { + "name": "StrobeOFF", + "songname": "all", + "chanIN" : 16, + "notes" : 124, + "notetype" : "off", + "code": "strobeOFF", + "valuetype" : 105, + "laser" : 0 + } +] + + + +} \ No newline at end of file diff --git a/snare.wav b/snare.wav new file mode 100755 index 0000000000000000000000000000000000000000..c6a11429841d8e8210366692e6c3f99f475a6c3f GIT binary patch literal 36240 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%0APbtSEg%{#qT!ocUTG|KOt19p4 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 axr>-$Kg4Xup34~4kU~57dWbytrT+^k5a2xk literal 0 HcmV?d00001 diff --git a/web/.DS_Store b/web/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9b9704aeb476bf04d73a6129242821a418625741 GIT binary patch literal 10244 zcmeHMeQX>@6`!9SCp-1JUMH!2d$yBnjN>G|5TEe}u2bi1Uz0dViRn49^Ff^Z*v6}z zZ{6EFJBgd(N+1w46(IVN6d{EO1WoB*p`}2|M=2_W7DQc@6ctefs>DA8D2RfDcr&|a z-}xf~fkK3Kq}{jk-n^Tcx4(J6ojJxBdUMGTV*$pPLYI)5O1DLdu#0O!DRDI#NsvFY z$Kxq0PPHG##}~Br6kY_p2zU|jBH%^9i@=Q#0pe^?lyXOUcP|271iT2$MnL3;09`_c zT{-PYnL6kuw*VxUky;jd7TW>g6L4kNmD7$S3l%u7Bpp|{TMRhvqz}05!mgZlq~p%u zZa(1l40neD**pDyKsILxJJP#*5%40gFalz^l(Gb~nH`@j+`p$xJKNm+I!a2Hl`UVP zC`!3fp?oMhYE4G7v24!njb#qWnwd1>?(?8!rDmUF@%^STIijuZv(nj^nKm*7%?}Tm z>7+H;Yvs~OTmH^KEIUfRoO6YbXuheb*4E}=Ak^7$IvAMhXln@u+L}8~pXN$UW9W|l zqhlveP2G3;{lv%?TqC%Nq8GR%uf_`V&@qAY)9>Y=;t7DmRuUOI0G4O5~`q z(UVF=%~OUwoHb5l#nVCC%4GXw!(o$rg>FP!Dg5`2XH6?@?>90wNzN~-x74p&e_M0g z?b{+V6*pIERVz6^ND)tG&3jBEvv1N&W=9Xi?1Yg{n(1Rh6Q*s(Q^sIAHfB_nlyN>& zUE{0J{d!&AG~Y$h8kFH&+`KnuW>3mK)~wa};UtaxE-NW|NorqHxU@8^)%8Qd(w8yl zo>Ua6ZrY&pL7Qfw#oUI$&72P&r&p}mGz2m5Pz%@hrDAa-r6sxJ*51MOp$TWI+HP0b zwUz6`^qR(Kigp!(t~%VK>qkV-dt!EW@3@hsQN2jr%h|2fcPPpMVeLsKX;cm24Gs)s z7#hOOPE8XWqq89EX4~08!hD)dvIp52_7FSAF0iNACH5Tq0s9eqh5dy6lwDzOvA5YD z*dN(D?9c2USb^23Mh$$p6`S#1Y{C0+2eu)M9_+$id=Pgdio=K_2?O`Q!X!@O6sGVI zoWZB?X?zBc;|V;8ui_~@gRkRRJdf|=W&8}ka7I{?hw)ubJ%7iW^yIG6ls(~|vXvZJ z46Od`J9b9?Ct$szItX30`j#~f8#cFeZ0(tSlk?tPA&4Y$9B4?$79LUvo?4k> zZRPEp0IV%@tew0|A)IQ<9cwoabFsuU=F}Vg5w2)h3Vlmr?>u{gJyib(g@s_vE#HNEf&Awm?+fJPE7Q^*8iA^3Z_`ZMiu6VivvK5 zJkLm%@{9b9Sw_04T&+-d_V23RtuD$N{~j-i)`^UjN)1@HDd^|GEK@Bo4KL1J3z$&@ zzj$*^-K~wAwzPJ3_st06Qdg_hOD)_2O5;`d3zutOdiiu;Z81fy)T%1$*Z9<;)F3HJ zSk|ra`3kcOafDE>Z}O>g6eTpb1yyy9qJ*Y7r1}adN~qe}RbM_INs1E6+q+cXY+`dL zN~pJmeZF~VPEwSxMQBt71f}o>df&3la#h2&t9gyfSDaEtJ!@eRwuc>M88$^!^%y%( zH1#xlhCR=I%x2gd>^GDyuChN7Nxh2_l%k9hMC0jjsTWLqLE(eRBXc*E8?s@K-W>aL=o+#9VuPtR`f>z xRm5?;JcS{f`#mfD!lW1e(~gwxRG01~uhX9a-u~a)|3{sJ>wn=S`u}qO|4*AZJ?H=c literal 0 HcmV?d00001 diff --git a/web/css/style.css b/web/css/style.css new file mode 100755 index 0000000..613dcde --- /dev/null +++ b/web/css/style.css @@ -0,0 +1 @@ +* { box-sizing: border-box; } body {margin: 0;}.row{display:table;padding:10px;width:100%;}.cell{width:8%;display:table-cell;height:75px;}body, html{background-color:#1d1c25;margin:0;padding:0;}.range{-webkit-appearance:none;-moz-appearance:none;position:absolute;left:50%;top:50%;width:200px;margin-top:10px;transform:translate(-50%, -50%);}input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none;background:linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3bade3 ', endColorstr='#ff357f ', GradientType=1 );height:2px;}input[type=range]:focus{outline:none;}input[type=range]::-moz-range-track{-moz-appearance:none;background:linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3bade3 ', endColorstr='#ff357f ', GradientType=1 );height:2px;}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid;border-radius:50%;height:25px;width:25px;max-width:80px;position:relative;bottom:11px;background-color:#1d1c25;cursor:-webkit-grab;-webkit-transition:border 1000ms ease;transition:border 1000ms ease;}input[type=range]::-moz-range-thumb{-moz-appearance:none;border:2px solid;border-radius:50%;height:25px;width:25px;max-width:80px;position:relative;bottom:11px;background-color:#1d1c25;cursor:-moz-grab;-moz-transition:border 1000ms ease;transition:border 1000ms ease;}.range.blue::-webkit-slider-thumb{border-color:rgb(59,173,227);}.range.ltpurple::-webkit-slider-thumb{border-color:rgb(87,111,230);}.range.purple::-webkit-slider-thumb{border-color:rgb(152,68,183);}.range.pink::-webkit-slider-thumb{border-color:rgb(255,53,127);}.range.blue::-moz-range-thumb{border-color:rgb(59,173,227);}.range.ltpurple::-moz-range-thumb{border-color:rgb(87,111,230);}.range.purple::-moz-range-thumb{border-color:rgb(152,68,183);}.range.pink::-moz-range-thumb{border-color:rgb(255,53,127);}input[type=range]::-webkit-slider-thumb:active{cursor:-webkit-grabbing;}input[type=range]::-moz-range-thumb:active{cursor:-moz-grabbing;}.range.blue{position:relative;background-color:rgba(31,27,27,0.09);width:75%;top:37.5px;}*{box-sizing:border-box;}body{margin:0;}#iy3nk{height:68px;}#il4ah{text-align:center;color:#ef4079;}#i7ox{font-family:Verdana, Geneva, sans-serif;color:#40acef;text-align:left;}#io5q{color:#40acef;}#iy2eh{text-align:center;}#i8a73{text-align:center;color:#4540ef;}#i3fzo{text-align:center;color:#7740ef;}#ikbjg{text-align:center;color:#b140ef;}@media (max-width: 768px){.cell{width:100%;display:block;}} \ No newline at end of file diff --git a/web/css/style2.css b/web/css/style2.css new file mode 100755 index 0000000..115c94b --- /dev/null +++ b/web/css/style2.css @@ -0,0 +1 @@ +input[type=range]::-webkit-slider-runnable-track{-webkit-appearance:none;background:linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3bade3 ', endColorstr='#ff357f ', GradientType=1 );height:2px;}input[type=range]:focus{outline:none;}input[type=range]::-moz-range-track{-moz-appearance:none;background:linear-gradient(45deg, rgba(59,173,227,1) 0%, rgba(87,111,230,1) 25%, rgba(152,68,183,1) 51%, rgba(255,53,127,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#3bade3 ', endColorstr='#ff357f ', GradientType=1 );height:2px;}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid;border-radius:50%;height:25px;width:25px;max-width:80px;position:relative;bottom:11px;background-color:#1d1c25;cursor:-webkit-grab;-webkit-transition:border 1000ms ease;transition:border 1000ms ease;}input[type=range]::-moz-range-thumb{-moz-appearance:none;border:2px solid;border-radius:50%;height:25px;width:25px;max-width:80px;position:relative;bottom:11px;background-color:#1d1c25;cursor:-moz-grab;-moz-transition:border 1000ms ease;transition:border 1000ms ease;}.range.blue::-webkit-slider-thumb{border-color:rgb(59,173,227);}.range.ltpurple::-webkit-slider-thumb{border-color:rgb(87,111,230);}.range.purple::-webkit-slider-thumb{border-color:rgb(152,68,183);}.range.pink::-webkit-slider-thumb{border-color:rgb(255,53,127);}.range.blue::-moz-range-thumb{border-color:rgb(59,173,227);}.range.ltpurple::-moz-range-thumb{border-color:rgb(87,111,230);}.range.purple::-moz-range-thumb{border-color:rgb(152,68,183);}.range.pink::-moz-range-thumb{border-color:rgb(255,53,127);}input[type=range]::-webkit-slider-thumb:active{cursor:-webkit-grabbing;}input[type=range]::-moz-range-thumb:active{cursor:-moz-grabbing;}.range.blue{position:relative;background-color:rgba(31,27,27,0.09);width:75%;top:37.5px;}body{margin:0;}#iy3nk{font-family: "Lucida Grande", Verdana, Arial, sans-serif; font-size: 10ex; height:68px;}#il4ah{text-align:center;color:#ef4079;}#i7ox{font-family:Verdana, Geneva, sans-serif;color:#40acef;text-align:left;}#io5q{color:#40acef;}#iy2eh{text-align:center;}#i8a73{text-align:center;color:#4540ef;}#i3fzo{text-align:center;color:#7740ef;}#ikbjg{text-align:center;color:#b140ef;}@media (max-width: 768px){} \ No newline at end of file diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..2a7f3d7 --- /dev/null +++ b/web/index.html @@ -0,0 +1,74 @@ + + + + Nozoids online + + + + + + + + +
+ 1 / Live sound : VLC network stream http://xrkia.org:8000/NZ + +
+
2 / Choose to play a MMO-3 or OCS-2 ? + +
+ + + + +
+ +
+ + + + + +
+ + +
+ + + + + diff --git a/web/indexaurora.html b/web/indexaurora.html new file mode 100644 index 0000000..4c59b42 --- /dev/null +++ b/web/indexaurora.html @@ -0,0 +1,288 @@ + + + + Aurora + + + + + + + + + + + + + +
+ + +
+
+

Aurora

+
+ +
not available + +
+ + +
+
+
+
+
+
2 curves mixer
+
+
+
+
+
Scale
+
+
+
+
+
Copy
+
+
+ + + + + + + + + + +
+ +
+ + + diff --git a/web/knobs/.DS_Store b/web/knobs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..16180405450bc153625ed156b678443e19471df5 GIT binary patch literal 6148 zcmeHK%}T>S5dOCIP$@{gdCUWd#Wx709tz?`dREhx7+RZ>A4E@i3?Iq|@NM*)*`-+9 zdK8rznE5u7nc3ZMLv|N{8`RTtpa-Bs6>J^S>=1b`x+SgPX%n5+$gsc^XINpm6>W~+ z$bhU}7X@ZWP~-FZrK>8rtjnrk#3{xo8B@^qxyCcDa*YYwL$*uIQ6cB5_vy>|PJB=N z1|(uh&oecne~b}5bM+-!>$~2sLhpOV$8jC8MurFWEMrPJzB~5ozrS>}$S27nPZ%ek z_bc_~U4<>+n7NP4t~knj+~^Ea){sg&E4a5W6|{^QW55_N2L2!e+_ObGU5{ps0b{@z zSTi91hlnZ|2W&j*uY*Rf07N-Ps<17GEy;-j#sM3Td_!?QmFQDlxMDb;PJa~Q;((1u zpAHu;A1?Il!VSe~@2nqbI9%+}tTA8=Y%*}*AA7R@U+lmCZzkE3F<=b*D+XM9cs(3& zN?~u^nw;#l5%rcTB5{q!bqX806*E@0;uES0{gE_?alpnSJrp|#C=F(efgfey0~=0L AU;qFB literal 0 HcmV?d00001 diff --git a/web/knobs/rebuild.png b/web/knobs/rebuild.png new file mode 100644 index 0000000000000000000000000000000000000000..60a5bf15d4b2fd783c429de33d84148939a61ee8 GIT binary patch literal 19865 zcmX7vQ($BZvxPgD*tTtJVoq#MY&#R%wr$(Cor!H@VkfuHe;*nzjorO>RjswY3RjSm zfQP|>0RRB-lD|ZifRAp#+dn7>;QeH1o*D1~+gVJ*S=r9i+10?&1R!K=XJ|qsX=7k! zqGV!V?Cvmb!V3V%{*)9IQgK_q%!W=|J?stL*4_->y+|TB%qPQQh*K`O4+X>3+6wIEdyn#c^sjpC`E&_`VlN|Ngr9p1Is? zXMOX`^?n*xQB^f*v0h8y{`fb@THEtxS)$YVC%yOk^CrFb^U5wAk^hCL@p;?ROsmB@ zeXYyg>7loE+k@6=(_z%)>n^p|c-!lKddeS?AnkQj;0w9icTrJ7?0Ki&NaA=>@5}Kx z+jToUXZl_5V;__C{i;>(waMad!ziB9l+V*tEu&sf*Aa0j-krQ>?@8xP&&KoT^Ult6 z&S$^g_uI;p!1wE{d6YKrX)lY3iOD?QpDmXaou^f!*xt1?46kda+}{mr8v zT5L8(&1Q2xkLU75T-V$94+*|+3BQrOb8o*_d_UDqpSN6Rz4l=B##GeQ#P2svQgv8- zzwUEczu$Ymai^0bpItX>TBkrD@#5TXx}OW&@3=i}A3kI=ImDW@dVRc2FP5vZJ#{HE zr^TI&yS!#b(4*U#)!j>i7%7IyKmx-X;;e-(4ZyLQ9gilSTA<{Z_SJcTKk3garz51~ z;62QI@8^3Ynceg6&5Qs3hC(r;+1IYmcQRc+jrZQ)SI?KUwOtKE7^|?5_|6K^$e;CU z)mq(%`hXd49O;+i4k;XcE^zy(zn!>wgV9!Un$4D~KX!jP{_8>Jt_&t(pgr90>>3ao z?!GePMzOr!Z128e?cQU0ch^g0&`I$+lh*U_sO^68SisO>hmDP_|G?b^WdI0Qc>{j| zJG1?}sf>&a=BGwfLwUUE$}ZmQ{F4q>`cv$KQX0fO76is-B2(rCPLkJ_iBgB#mZD%*D}T>p|pQtCceHbPE0VDc+q`{ zO!}R2Bg3=7Qm6+Tg7$U4^vx~4?k@n;Y~(O8{-h@{Cm71?2|*V>@ZSl$aLe~}kNt+W zFAq_8gR-W_XpBH)wt7J3P>R$r*M#eoF^n1po-H`+=Vckzw1tvl)Sa1c9`B zti4Gic(k8a%548~2J)D70upub%Ypd$e)rzpPdwq@KsJ~&AXO#oz?QyA%gR^pcN1bd zt*dOQT=tCJPS2+`-OVw_$V6tO6){Io74l`@>-~v<;fRzk1uWD4s{I{-3cp#1OcNJi z>B4x{#UrIBH8xMz3l`5VI@30Kd&6m#kJNs?({G5Da5Vvs*AsXF;7=uIn(Sn6l*ne* ziwDYjeJg`8iH2x!)L)K7TbB6*KGR8aYpbd*?K;{^Y&KdrTdY>DP2WFe zj_2l&ECOK_x7`k+XK*>J)AW0+8N=ctjmYJQF|@%(MTi)^FU4U>e}0uzx5!L z@FZZZL82oeo+BDT@ba(;jY#wdBAJ7FnvVxBu3C2(8i&0Dx9r;5)y>xM)W>pOhCt}9 zS#Q~%j#Bk<1kDi#hRztm0QK&<_LPwUJDRWd;eyGwXkl-9{DE}2dq(@OcZb zAI2aV%;@yLsw}{mNsXABc3*joT7$QZ?vJM@A>nbHYvxb$=OCyo{KymL6H9zcs?6m}lAD;8Tk zxJZ-0=fht_U@dZSe!kucou~x9DLNh}6N1~<>j`0F@;c-IQ$7;XnJnn@v63iHj4U(- zLf=B|G_<9+pXXdLg|Q9k2nZ@^+;GGT#G&hsck7J(J?8z9C#_l)mf;OO%NFlC#`py} zJX7T=1*`E)7WZE=$3ej#c?}KedF@E?T&4v`17MS8!pPb*sn6Nu9VX_t0__3Szgtt_ zQKqMz8nwlH)KyiNCO=N#kLBQ-Z)DB#X#-XkE2FAAMjR^xz#PdfEiFU%?#4)G{|P`4 zUbjFoJycb%LK#1#w5b7L50!SxZ^d<95-dT?%?H2hy1E6fT_@dUKaQD?85!B$sz%Ea zEv=+B`H=mP8!uLB1wQ|42vgroyu$W}Pj!qFK_IAu(kb;%3If!9$6#71%uR8pA>wmC z3KegknSKp?0IL+w$j4FflL!3zzpVn$sNybQQLjg(kVz|Ab)-_m<}wiF7-pAjQ`?-V zT;<`A%sU!=FT?T`p><~6gm%l<6)zT2MqS%sgI2d8@rf4oRRoClrX_oo`2QqE(5^P* zN|Ay88W}KFy?B&7UKbv20Z1t2r!djv!$xjO47_B4y*h)vHU}c`nE%+ZV(S|v@U#wu zn9&EI#2f9#bbWul`{u%GQv?$aN1{jmf=~c?x7b^M^IP6OqSObWiOk9U#o8N>?8mzR z(6#k&Z-$!z}Zfd@nAsv}`8(v_eOkAY;QOyl-}}=V zNxd!q9=G6n$VJ<#q8F#P7ZkTfT@44r9&fc?YhaZb=Ccb~Q6to(JuQY@c{bF4X@4rd z`vHrwNs7vk*#?)Ddp*d`8$-1{*toJ_8l4x1t3$@DM9!@ITtRgNpa zE-cJ}0U(>r^O&x#=iTg!rM^reNH^H-7dgm)S;qW!@V6@Uu~U?TNLo8|{D=Mi&zr8l z6K(CB-1^PoA;DMBXqL>ZeqxarpS!?|m!M!Po~cA;4j-2J!A_c;M0IM?EOwVeh!sxV zyeymfhV(w*2^N##gI@y;=V-#R`Op(tuco}5`?|a|=dJyN9T5vG*owJqu6=#|owF_2 zAC8nN9e^V&o!bQYnS^1C^#MxPSA=xg&|rR`%PZPRl}IVylk6WPj-Gp9&?XFrQV-YW z)402%?h|JKZVuZwhr})s_ScEUIq1m?fesD(;is)bZ3Afx7fFZ3CTyO@kL2X!)-|gp zwRl7U5}qmb$S?6JH>>u=K2^!EKLPu9^$`|+<@=yKsGIq_LZnm1{q*8q)UkAr6ctiot8{3b6={@R{@l z*)Y$8_FGsY4cy#4Lwm6)@nCfZH<`KqYA+Rbx?DU3w9EZ|;jK}_i#ci^(C3B9OQF+r z#OH((W5vsZxAnhZWt4)}RuxP8k%7%>DpMj7iZGu>==HC^Oas9X!*er2Q@WyT7Xe3^ zwiq5V+_I?Bz$vhN1U2ah<>FHT8ta+qV-+5kBZ_U_%d4#vme~yocLU{Ue{&9$?rC_n zO^)|=XsXU&kcEc9$OkwfPSff2@ZR01UZ_|z!^4{pF;kdVQRVSs9=T8F3VgdI=8@VU z%TSCErXK3aahthO6aF`pa1LuuS78uL5hV$0Ng1YxPmJkfUTiwePCs0(H8RxowQ0tA z$;B5bF~fNCFfaY&SY}lj3^e0%bNP~)o7Pw(Rck5X2WVr1@@t2!y%@B0`m_|VJ#9*k)c%Ci(%ECC;nNKyEvZ&O7w8I$MJB`uHZwO8xsmk`zoqh7biql73U?OS#0c8C4v+oO#J zeg1VYE|SHVS9rf+AgyoQEiyFE`(-05#~u~_uV8Bjak5B|8U=;kq$rW$YE_;<8W3YT z-`U|01U0AQsrI?W<7^t4TBB70J`XRlaop@?`@MnNmhfmR$(g%;&}!bUI|7n&nMG z@&9P(EP@5lX*HexQQi!FDNA-{T*ebs)lsN#TM0e=XTjKc*&qXKoP|s9_QCc!1>#bE zfr*-z;(23SgJ#Ekg3o95)7XzFTPCWN2_&08mknE=|FEL7hyREPI#Pu&Kx<*`UjG`# z)Wb7FwcK-!bjwW+bfNDqi4HQU*rX zc;pm1UwYgI&Z3l3Pm?<-t)X0rFGC{BcDb!QSAKbzC?C@kMA!^Grte1M@q~j9-P*8_ z+ku<)K1S0C_|1)4z1}JAlPu*EDY9}#;wTSCpuC~jH}_dM4i7H6OgWCzCB`&j95V4+ zTqmLL_;dA^!+b@Dg{ICy%M2S|QBff->F}Q14=TvUWTE$}J2i<}Ry@o+rK*`HLEvtD z{J!(;v-nrKMp`Rcf1l1$5}QfkC`eC#psJ(8BgwJ0aIQ2W-&zdM_V^Fx8AWdZQ3(sE zH?c-N0|hJaqfig0{Se(r>$ ztnHN@pZ4$l#PCam+2;UyM;J`>@)J|o$ zS?LBBYd{)?YJLxa$K?qXRWz3V(x5KxoNzG!SwKa#)$MX~&~Zw60~k5%B9}2`yJL{p z77xr#YpkARyXrp3kZEV^YvIv7D|n9V@nREd1Xu*oSK7ZnU7aWt6IsdZ3WNX2T;x$G zaV;mSvRViuX$$Mt8Ts{3*reQ{2Gth~X4A~pz&M^H`(JRpT0;?RxaWa)o!MmLu#QCq zlUP|&(q85;H{-4oaCTfbzt>Y5fq1d1?dF)$9S!M+A3|VO=zDY#o!&da=olo0Ri;N@ zuF^zxu`zi>NsISK;UEnb1ZSS23WuXIyu;wP@eG)>HHw;S^amA*uvos>EHfs$>e=@BvnA$+vsw}t2rlWs|84VENRpd@nvJV`3 zIU{aDhn-5P{*8o+xY}Q7zr8k%Mg#Om{rE7LtYJ zPX}f|WwIgG5=(ezXnE|o*S`lKIp6}c;+d|8LqKnwm?d)dejXAz66=n};1_xx zfu%o(J>7aQ28HD|4JnI8GK@B%N-cyxD9nO^#TR&8TEZe@Ybk|58MbgKW8f|k0x-POwcl56lgoN$w*Ndp~x?#AL= z_pDO4+rwnwK|UH9VL<0%tFu+jtlvR@M*}U!xb`_elz`-<>iWCg%j;_Rt{XTyh?=n? zbyv(*h@UTxV4maTl%V$5-X58!0N7L(1{B|Ts8ro(kY4iI{G-Q z5-)LG!GixSz*(R6kl`OzGAU>w?4vjD{f6XJ(W2UdS^+%}twy=Oij!1nBr*lMJMpH) z4!Oa*mRyA;$C81UODYT&5G|USy9^F*qDKT4j-7`&!6NO980_r_uNWfAq;5U5c6cHBnI`P-OT~4mkX-P{g=WomJNym2 zPFEKby8|q$q|D{fB~g>E{nQUig5ZSQ*FzYL{I`)Hnj~!SagTTH+q&mst0WZzq3_${ z7On$|w^|IaIz9x*B<SR6jP=hdo_P%WJ3{TZTckFNb ztbUO(Ay$#uk@Rr@?%Y*X9kc?T=#O*Z=h{a8fTgU|mRBNS23r*<<$SIkq^{MKr>hO4 z4P=iJzrmx0;v!3$k{(iCbeX3HAqcmNUm=AL~)fiR@&h&@6 ziW;ofyVMS00!1XzODD>vcds557)efgFsTCWi~JxbddZ1^a~9pLN1ylR}a<{Lo8iXD7o>HDp0R1CD+=L*Thq zLC?+a@7<2`tQWBWL$jpHk+9Z6Q9cOHf^VE)J3}yxYD(rIwAmMzwgLL}iIZ6P&C|%v zS^%tifxLqB;Nr^XSmZ?OgbSHp1x5t&9qbasZ~s?-+MiGyZ_2AqX4Smbp zwG5yN08kcR!qHopuogAvmP>bvz5+&YjHMNEPlt~UQP7wg9MAYiAm^9*rcT_+iC+)( zXvwKI!z*R&SDEd1`vi=wEG@t8f*HN`>>Own6d4%r6T67OKXZ}D+d-cbD6DA{EYe4= zWkjqYPK9RaUGBp>0e&y-9q(kCPX~yVYKS*&c+4b0iZkiRe@2BM@tY{*1i~KwuEWoV z8x++X{~Zhy9%9QXOqf1CHgwpDBNizLPGJ-R8A$w5p^Lq~E)x*w{S(qSf7%Gd<|;7h1bFHzM%tS%02TaUgG?` zQ+r?Vsft8dtm;Ci9>27xyXl@u8UqnJjkIIySsSNwOpYG46#0^+q=<}@osx`XAaPR) zV>*1jh!ZP06r03t^Cmt+L@%?hG4@G>eSde-@GneCbdl%RIm_NMHbc9kz~Xsx_Epny zZvI_AFdw_`Rb(^s@;+|*`Z7-jttP4`E;RuHQG#II(k#abiOseq?$pSXF#Djp7AJ24 zoC3!p+-BcwwCV@LZOd|Gt+^4ZvMq~6wRn!n&_8L(9TYXoDjuRKzZdYTCi;M4TT~om z*@EG=6pUazmVn>uMdCbs0f1TF&uXC}V#xo#&@NgX@#7abK)>x*_GY4UB3TX}#~#;I z^l$S>OGpNDjNF(C5HL3_tbYol%FT!-HH8*7ix7BPgmfS*qj1Zwj-;6U?dy@TyJ6y~?wXoTSvj#8;gn+M*_G#?DG$J|H z*f~)wjz1N*z24v=gRWC@vrjdz2#`*y&5*y|Bf#u5cn2GG0^5u)pt z$&RE6?~F9VO|hF^5AGXoO5LNcP#W+}mKnL_^g=J( zEOYk9$kt8yb;ahhTR?NPQ^_n)2$M0Ev?FVSq*fM2!4(!If+R)10420oM_MDsB0n?X zm>1%VK^0k6BlcXY-40JcrAQ4N3Dhv`Z3TnRIg+|wsg^%1JqCj|))K+HCt0~Cc}9L~ z#9Tj#v!>P0O?gNWvRHe1v*B~Y0iejoN9_ATg2Mid6gT@01J;X_;GF3;ayXt?$c*Rv zaq9vS>J@}J=VAu2bWWFWp(;*d_{*yji+=NH0u|(^HX@Z8aTJZyOlpsIT4Z)a^XOY@tKc;+msas1U*!Q-p2wi^IufV8Pgd6rcP4s6 zN+$lyA#2m+1!HP5B_5YT6e&O6wq+N&b#<`em%bR(CDG1ilbuPq`#BOEy4 ztwgE>xHI7dy)iPoSVmE1KKC@pQ1fqwVgGw(@g%* z^}f|s*2LT}Q;!@Jp_^Q)VYFq>lxKJUTO!NK-8-j_X`Y*ydFL%=?bSpTJ&79_6^bsW z1*b^HGra%?`<)8Tr^b&WJ`Q7`p!;lidA`!$orc;G^X=q|!4#y7(7Ge|%Ol4z)Qurh zrBm5}(9XfG*XPsp&&{?si;=qeZtNDTI;+*ICptPhXIdCfPG}HBYDb>PFGTzG$4-wB zKQ$}gHqGBIpc?&fUnjWTXZpxz3TmD5wz~;XYV+4ibIi54v9M-E>^1v7&nctX-S)%yoMl_A#J?&4MxJM-g@x&uvQ757} zOsk&wQp~Nd(kcTz>ztBOqPd}Vlxben^$?D0d8b^W-?phVW*yUCbdtgHQIk#D2 zG%b6I>R1mU+y^c<@3~GV|9&S(%R(OT3J0YZjY+U_@~-n@1iQdNaL^a5Xc=4it}!IF zX$9AeB$Kq9H7iS3TWgdBia;t6({-NO`*9SRU$!i1UPbm$AG1CGZjl|40BcUTb((GczK1Gr;r7^D_lZcVh3N75fwrF*TcYqVEx39$tsGEwPI^9` zvrA@gUo=mQE72Va6V7igs7=S4PC3K5fCcsi>+2T-92w@Ex-;%!`o%~LRSXpN3W5#Q zVS&Su|6f@)-&SJEVvMYv0+a;hOCDgLSt&A4s~G0i-)GQQB?VFIRb#k}mOPORs~vzg z$H4H7rzPTKjtBt{9d3F63TO`iZ6lbk&82du9s)C}uWW&|I<#O(z4NU+HGFJp zKWZGV*K|6Z-Oxy0LL7%`{#1?cF#-9{goGjK8pebE)T8`p!=r}1ac9JG8ZG@ zl9Q5&LSsCC?5SNZ*SH@4Sm9NNm_)^If}@l~Vb2x6%?zgvb#c3Z7~pA7ioB)br)n|> ztUu=>2;4;;M-$1VqmT9~VG24%OF4R3cq2gqlAD*E+b`399_S*|zfsQ)jxd{g!=&n8 zW`P+6vgyu;VrVEE_%70BSbG8>Et6RgrB}w75tvmIpt@dnLxHR`W+3ZTr2P~0)MK)C z)|tS&@c!L~;io9?%)D!s)$^E1ZkFSIEVt+pMYA!hvB^rbYf#y zd%WM1&}r51igeX`(8M=9WwgsVKU888F=7yzOYk4;$|etJuab#IZ=|^N`;C6}hfknE zV}>5Ptr~xm+%*HC|I5EHw zH;!2tfa6{LS59OlPeUJ;$e$cck|7S|6huuDOo}z4b5Y*~7)H(F1D#yTgeHYaBKQQY z*FIT1eLEf2GvEoCZN95*JF+qhP@3t1l<*Zn;|H7LNz(dp%6~)4+qJMmJKj~M02eCY zEme8fTz+YWfYR=uUHN13!{h1l)i+waH%M(R%CNPFi<8~2dkM}wl+fp8*7NzA@1lN` zAk!Gbc(g6RM$7>KMH259>rhYy$B-R|0@>nq|Igg-4Fyq{NQ{b6>9JFwRlP&)AmF!Z zFjakatQ9cxXsH2CA!e%|7zdiCZ1+X|vhe!8d*3)h7_nH)1@}NJ$d|`zxr(sDp5~I| zV&fip!04_G^DZ}8x5&t$Xs}6>F;C1du5-}7LVoI=zg-?lVc$z|%aJ=+bRr?51*L5#0O&A}5hjM@q zOdYNUchj9fU;Z3k+t@@Ws$&lSwvwi z8o37IEmlcGskDR))b^Rdf!=_^mUA0bV3(nRD^gym{_XmlLjU^-wO%CViJvslzi+d! zrK^MiOgLE6U^yhJQJZoyOqx%yCkOgkrMTxj`T}gpiB26j%kNw+mj4Zwz;hT<>4F#` zWIwkZs>vXWP$wq`smtXZ3ILP2a{S2naq%S)hZOcXg%B$F7IrLqf+DwB{S$|BEvf2#>Lzqh{f4&k467REs_m-zJ&hF)$ ze*Fizu(PwyZ+1XGy^C)b{*8J2lOzmwUjT-8Lc5#;*HI62C^_-%`#?C;`7dl!p6w69 zlz}dRYCermvn31lX9m{h;5K2i!@TNGL?}fHd(M5Y6mO2zF@MRlMTLvzq2rEnVw(r z-3vgrq(F{Sv{)rtK9f{Rt$i0wi#U!W$mLfhL^JG&9`D;}A!$HEtkepJ7P`YNKhU;H z{{!Rw_7MIR`_=f}y6Y|0dDs#(3O=4HR+ZtuG60A{fG+flrV+cA944Vp!6L<@#SFbA zO$o#vy4h3Pge0w;%g7-s(i;IwE>`saSj}KcWu}7|-9VKseuuG0y zcQxnqMPc+h3rD3i1u_WsmGpg=FSiG&X~>TOAi74dC(OT9ZvI+O@%$s%LlDX3MusQ0 zdJk~U<#9Q;M@=pTB4%p8jDM2SUR2)W?w17HCh)AU^G)s*P%D=_w3s~{FWS9ddI#aj zvh&*Dy%*7USZWuLxi;`W0#F|fFvr^}wx-fqXR`!+ztW1OQ+=jnVdQ0G7y2SQTRV0# z56kLK)YG_n@+D#ktYm-4HZjYu`hI_MrWhVe&VwwMw0YPpE-u390!vFXg%2d}>tUix z9!JYVG5-wBLk@xSb$CwhPgmPg_xs~5^DM8zPrgyFy^G7|)J5*y9l*wL4H6(zu5-6I zRkvgL!SMGEGlvY)7^I=bzZBa3=?l5uQate?M}NjnLEIOt0N`1(3Bdi1G^Ok^h1hH6 zs1-;FSY=>@7=_WG(*}F$BK$m+5ZD6tY5tFD*+4J6Q`i=C*5lyevkjqFR)hi1*Gm|3 z#4^;JijN~@T0a!f>u5nBgms9x2F#iXrv|>7UuV?Qhxu~aeJB7SfK!bqO4c-pjDF|u z7r?fR=;zn2)Ye$l5CyBtlm7(R5nI{!m5wcSY!N<@bKu|`RIcZ)Te+K_AVwc@&hr7WxbK?q(x0e&q)jNOsi>#B(n+*ft ziyN)ur`YvetLF7leg2g~=u<$Otq(OsV$gSZT&*{+^xlr(n!IwU!3NCke%}S$H{XFI zt=8T(f|qgp7#K!5H%AQWyQP2cekY5c)d0!L`!O3@xpW%rFl16f74GjTa6iTRIgML( z1}y#2-JZ`qYy7>9+|JGwfI+^8D~%Rw%@ZIeCs(J=*bEhQu-XBUAx_r@VJPL>pMOdC zu1$wn1+#Epd>X{V1-^L$3G21?!@l;$V0iU(bhzyoN)YYiTHRJ&(PE}ukEUtlJH-3U zKYs7GER&vxh$dw}WiYHbB4Hp+v?`fMA?CsXB#WS`0$O~qF!JT}77yB&`@+2lVn8Ckb`A8Y?6Lp=H!+I9$7 zUc1$3qE)ZSGBtFE`kqBMSg4@48Xx6Yq0!W^W|sk;I8s!+$JYSJ6UG_W7#~L z9unp-BKM(P+8V@w(InXPA1>-s2PEtYLlFu2*{YRiP=8<{Lq20GBD6g&|Nf80l0bz4 zL00gCG0;H6Vmxj38owTf8*^JKEVNY(_D`-x@XW#lnOnpH`LjvQWGP{tGZgpRw%sHi zTfZ=xT9?tn4`jT}VeBAQfM2%SW>7E~U=(nPw8z4%D4Ge$G2P-X>0d4CsyUUwH3gry zW?<-ZNm4$V+#5Pmo&mh>YT2!pt(gw2%DnA5W@3IB#b_ngHejq0I#fV{xsePPCET8}_`uzca{~L9oHro~zmM-dcCR+$m4NzvK|l+^ zP?T3eK@rucPS2DUQ%ByFE%8Y4QSF%?OA|`v4j%QEqUv9_9mM>d0%R_%!i4eYZMN0S z>xp{-Yud@wBx5fxhPH`x0}gkxjB1b!3Gc?u-^DPowN%}uQzTjQAjR@G3cbskFnl(5 zAUh|2v)+7RMNy;v!rKVpR7d>+5l(Cau?vCSM%w#WZO4}bs|^R`OwTxko>l4e$#0{b znHs5mi^C{(OodbmqJ{P2KI@|o3^59iNxu(um8YW3JnVKU;2sKx#KW1YC_FvU=Vg$P zpEMh{<@895ALZ5zjym|E$m}oIufoOQmOt$ZR%LX4BMAB7?&e<5#^#t;(8HA(lpsB3L%st>WLk>!mjy_64Dd0)7GEInaBWE4WTc(Zv)XGr@6x zWV|AkKPR{6aW_E*3jf9yKkNUG@#wEN5$t$9&dhaxJxYCV1RZP%LYW*&1W`A8WhU-r z{-@cqZ<&%$i_AB~h{9N-+W0zG9aYl({&>NuxP%w}+D}uL!Rvm9nB%q|PVBIB35Q|? zlMUO(Gb$g_-`oG`rY#6*WGNv9k~b&6Jo2LnX!niw=H3K7h@a_$?qzb=@YoK8AuCFM zE8MUs48cMEGNc}ChtdAP-TX+6Sn1vq0~ILPc<)^p_4+fBL>-90`>!umg)loca1i79 ztGEK-(|b2TYZncsUK&fB0iw3+qa+eDylXrR?p($SLfrTCRr}}cg-)X^W2iMF!ZR5N zCS4kpnw%9k-ciV9xos?#D@%m_);n+i1s#r4dV2Y$#8$S5sFaBK^A>#rkeCmXy_PIu z{Vofc-Dj%iYIX3TV?*2pn0DI3#J`sVtI@`+G@s632OEjPzHgYBd3-NI3V*S*LD6X< zO3G4`+LeM~W>|zDZC92Ty+ZR%4UlILz($S|9Xb`>a*!)DqYJlm{&(a1{r**gadKwf zyZT;1!0BaSHac~GA#C4Hl(t~0VZl-+Wz#6=EtH0saGY+IGrs9KNuLgcI)X$P&SPq+ z|GbtCbgb)zu(~+9XO%&qCRTBdY5b*-c%d;vA3giApaAS|oC{EnUaORYHzyP53jKu5gGe@gs|LC~nS`*uet?s{_X?Yx^eP{}YW6-EfmJ3F7(t`FrE8@@uv zRs4ZPX{mB{s5TDS0Bpr8Mka&X46=^f6CjU&n8W8ek}{c8C^86JAd}1g*|4JL`#Hx% z3@4mNIM*3w8h)=-pGKabX&tuv^SX^xDi=fp-M_L9FGj&dpIY^lw%~^ic||_=nZUy6 zT*l5yt=^6aP{gEWJ1(`HJIt2c`C85w*^{n=ow%wtrh(c#~nZ?t%eEOrFHK~D6LJMA1DrEtMEWE zfE}gF9%xe73}nNqQsx~3`)C;YZ?;IJD8eQGU;GbqBBb5tsOy8Lc#)azebCJ|andwJ zI)5cV1vHReUf?>Y%8C)T+ z3Uj&5;Rksnk`5!+zswkxXcsYMr8jrN$!+*G66fP&j`k8PSM@e=34FO|v;Hv3? z@#$Q?A|w$Rh9)M>r}a#ru$P%8{tm1zvYXrriw{^!;Mra{FbttCXWjsg#A8HfOO==; z&oaN8H5oHZxDPDH9M$ZO4Ixg$^YvV}T;{nBHzux%*53U*`d0NdIa z&3bpB(zpN?3aizCjJ8}=LmP?fkgj!j1wkx z>_q!JRC(U`*JI9J&DQ({ZK8LAW&ONrF+z4UQ{_@QeDW+3b?MhmAYCue1*E#9-QKV` zCFsme-i7N7b&&piyxgV>e4fd>pnq9NqBY+x-GXv%IV+>_?tTAie2dYLkBCgZD>6@J zy3I9^`ELmavo48dya8u5L#s}|KkVP8o0xQ6jrVh#;d^(*S^H^0Bunq>wB0$cUy}b`@cp!h*s$QZ;{7ov%Z#Rw|&tu{RatcvQP3!mXq9r zvKcqp0#ue*5RzN) z1dB3C1ygMc34vHdX+kFxrnteX=nhE~IpqP!*O5>UW&vb^pfGE2JQ|6vyY6Sk;P;*E zgHhIDG^fgFVOBsqfcg$T0V4XyaClagx*zlrxmGK~YsP-V9IuCLaxdvA|8o$1400*w zmv?+7t>qGuMLw?)1%mnUs2M}g%RZH0{s_GTIA%T39B^h~<=nIvIj*Rz5mps@{yR?f z+82O9=M_Mjs`E#)sg0yNHNoXd{wbv!4JYj*_BN1uHKqP7g+a%oll!i^+Y@}HL3X$z zr82JM`$8mkoBp2}75ct70Iu36*YmplmzVMb#F(WgnSDED@S3U1GJcBWIuH>YPIYy4*O*Mdf#m&d zHnB#I)A0tkhj|HBU{<9NLWTQ1m{t}`iw37)NnQD}ZdE(|@iHn(MRl@TqY9z>0lK=@L|Px3^%-ylMb>^LPNNE` z*rG%yInVEVoH947{i3F`fMP$4&*yt>)(0b;PmqetHNt_06HY(JSs@Qy0YQko=CH*DX`CCML%tUpA=nCZ$ zSFikbUiFQ{*HO(#O2d z$825o6wnE;4<0hc>c10}k`|qO5o!t!2@eZH79tq{I=qFwR-LbCbTdg25ot$cEF}7; zZrO|=bq+!>E;9!80>A};A@@SF6PSWA8zW-^^nr0771;Vsd?6P+jwJYeH>B>gws7} zzopeTnumQj%!T0O7dx;-s)T#^4Mjs*H`;YSs_nGlmJQoxWWIGU7I5nw*e&hm!R{T7 zP*hBsiEq+G6pvWFF2!$I8YrCAeTplTQuz<~ z1yBt&qBX2ntzFXNvVhUKJ4hN%Q|+Fu_{&IPYuKZrdXrzNSzdbz!xiyTuQ3I(1FA|b zlK)R>g}$i=O1-NvW*361AFr<@_lu>|Zc-Fhl^-N{F2;!!_(2h!c=8{JB$qL&8O7K$ z8hGogMW47BFe_85Du_`P$20^pgqx@_ox4a z1)N-a&+8B#>aUBwh!SnA(AR;=jNFdbBH|2HBCOH=kM0#+&ri~g3f0OV?E^MoHWtQY{TD0Po+KZC;==y6?_)!lDv~HQHB4l*`=6H=f0~`g*1DTN^`;w zSU%Q+n> zu|nh1fl0IV!G^QS!T)_dhP)wS%)rmKaM&z9Ht5jQ(iTA%*66@Nz#@t7ka`N0;>ZLR z>uxO1rs&;g?R_;!H3r?TwwS?$Lw$q7A32p&eM~xn6qYHQ`Uf$bL}{rsNJjvnyK);975&#aI@o!Bl)GdKDrV5XO+-u z-%>Uil6;chg0IRP{R(S$-;12Y3*$OpZ)8bbPiKXd3_fn@KEX`aahyE8afXMM#GHYz z;?riqvfSE_I>|f1*du;s^51IE0T)1zZzm0diS#Q_X!x2#T=9QZo2^ zsX?A(mFc-Cv-$_*Id!bpIh}^X5vP}-bb&sw=HtWN9g9JFbl<8Bo`1*_{btWGjHb19kQR0w?3r9X=nB8|b$ zG~Ce--(Qzo!wOY857&&p?g;AK?wbtg;F(67%dgy8ns8f0Q`<$SCRmUfc*LMB_)*5+wDvlmR z-rr55f%$BR+t+U}&zWk#HOv`AT}VkPS}Zpzx|sr8$n{;J&|R5Oa8R`spN_5?WV1|3 z8WjzTJ?RtT@5_zNT!O*gnWezap7ldhxUOSdRzd-(j)(SNP|x@gpj%q$?`+m1cG>w5 z2PLnFI|QlCEQ-Qxj=$V5Eip-O)*e>)bQqLBSfo6o5%Pc_W2E*%a7 zlKd;7xVHvSQ1fU>zete*fCEu)OG!+viuA=% z9098n02dyC%;#K(zK8-F|0MH&GDF+(xTu~V8i~RGjd?jH;RaG&;F4^|qDzAsD97fK zy@WnC#|IP7G8X~^`M_XwL;%VuIVc5m^8u-hS*r8Gby=RUewmOJu@*^}p^X)qE@P$n0CA=q>#Y8H5 zvY=bfg-puQNa+6p5)AG0;6ihr0|wy{v^>uY!RuCQU$-yed!KRE7Cj5*x{VNSxvYxYRWB6ODoyi zx6@^8JRkK!U>_hLJ}=%=;}b8=B#Hb>h3>U>N8R=whhEH>F(Yco#{H#(Sn@<4y9d%;7{t5@yA$6Wo1i`El|crgi8VXFtn;7YQ@^|Esl*;JjJ2vy2?xC zrVvQS?_r?uQyt+nb_fJVvdYDo+AQ}Q8VYCn!#C5In-(qO)pnKaK^>2n3>)u zPE;cb5sQd2IKiJK++3H}x!QSA6v!tHhN9XxS{0CzK(Z~;?$ar7Yg26^TSDo?aiZDW zqJ4=WOhMtTht)C6c1!B7P!zRAGkhk7n(zRm7^AlTN&NZ>l0u8 zg@tKm{MNpG`!1e6d-fTM%}UG(KsF-K&G@5=a>?*1hFC22rSPM`#h}6+LM#)^hyz!_ zmS6nh7bhDBzbH>2v=wr_qCE44v_??K641Zh-F0z8zKcG4sM8;ma~m+ zHB)`H>D$+zfByLq0O>hd-yu${u%>TZ?T={vv~sgQ;8{Tom;;rCD+Kq38LA%KJMOsS z?4yr9`ca)s?iWmbFL^f+z>U3FRRDe`F){MCH(o3IE#3jy`R%?E$5f}skbp`dCBkr4KxzM-Dr;020 zRD|$1zxmCGE?v4jiDk`&#Dggs18$uTZVCs>=?3g0jyPhC8DEQxlgGrJdoNB!WCJY3 zAbJz(W>0`p7Tum>wWqB9o9tk*0fQ)JuU7q~Lw&1O8O+%@_oRUX2To-%=qi+h-nbD=QDu>0G}5C4Vz1w!#qCq~c63pXZ7oJZ*fL3gC!EJjGG0j>=BZ%!N5A z%_fcmm8b}fZoBQa4uGqT`-aRfAGnEguvR9<1QQ!GX3UAkeV4!R!V5pcz|t0;=S1z_ zQdbK>;AD&vrRFL%MqI3|JkQxl@BW0vcXDNX0k(n`IxY_#ifCmHj8}R%ystJnnB&*J z_O<_OH2Ni<%hwRDvEZfxu(*>6Bceu*9QpIHW5>?A{PN2unFZMqy&ZPc5zzpe)ldE} z90ADaGA>o?#eppYE=>H>r1N#7^FXRxM->J7jP{hpz2aPri}3=GYPfQB3{t93zkdDJ z_3YX6i~|oma528H_S};OH#LC$g)wCo^Ws}>xux^7&p!Lpi4!OOP&GteH+!J@9~LKE zuRT(98>?Oxr#}+M_v=tVAm6bB-s<(nl6+F_=7>{Obgleo)d#7XfqTbsY^ZCQgK_L_ zr=NcM)sH^<=uW_85htm0n-yRYvNj=aXGKNDRW`7PO_WWTHf>r@6|seGgDg`3K`)`# zWxz-`1H8WHll}bRlD_gHmtOTolZeJoah1+47N{73D!%rMAnsC+4(@&O$tN#4_~3)b z(keq)nTYo^!EF`}7GMya&1?f_)%oY2Ut#{;sS6h_ynFrn_4`S@h8*piukn9?hHG^6 zEd-Jw#_u6#YLh(Q$uf!)hn&us00OZ}GNBrt)CX!9XE(R;&Axs6UTB`hR8nxE0bJWy zLs7Zmg;sPl3&1|21qT3<8Bus*%FdS9pBQ?{QOZj3A zSscv@uov3^gbq6Cq?3Mi?z!iVyX&sIE}S`Y=G8`!HYyX9hzvz+$f*KLttNadyuOZj zK3QKJq3_fOs3en&K0a??Zn8!D(@QS7tj_tY7RP3<3oWMGjrq|0Bk0~~TR zAvx1cJB=`RA9vhwcbkqKyl&mPYZonAGyuS)>+fypyja zEJR$!xk633R4Sq|pbkvMtTp{Qv8JYG!ZF7jvyt~+eDTG|E@*1UpTwA`)Z)A7L%_D5 z8wU>_e3R+2n~bBon=v-rT&GhiD=RB>B)fc85j_cRk+|1A^$d(SIOnLNj#^^U=4o4m zPa4NoW6i(%>Z^5~fs$NQpGtr|f#he}RXuFjuxfKtZZx9qVL*;DqpZE@wiD*enNwkw z?oRtoxe~#>NRzRZOaF$|h_cAZe=@%}J7B`nnluEseuIGzm~)y1lPi zuDjU+`2cI%m))o*CO)@8)Oi1j2%iog000oZd99?0{?q^fn7-paLVqK6 z2FL;c5WpLym)hQQyNfs}{(45Thgpvl1;}jiLxhW1@So#mGjm2jp5uODQC9e14#dKu z_`olk_G4Tr6oB`IlezOXwZJd!DvYncAZ!$P9`_eQV*w`*8vM$$y>D%-`M#Vs{KN>})bv z0@~eamIb0u7&#$JQh{(UMyHi00@2Gf@Tf4?IyOMd+$F6nDx#aH$B!5})eV~^11ve* zM*A`LTzY1h8QP^I{15n{GSLQ3M;9j~NOGk3164)i`X%jh^TVXkM6#)F)IPg!ORB826> z>t=?2GzfaQS1i&O>8{6U;{N9ndJ>yiHRWR%ARQj=c&6+m7@#5h0Dcy*u~=18GPY;fj4nD@Tnu(G`u8mr(kcOxL0#p|Sa&-2zAnLo+#e z=Si&VJ||LZlO8TcjHK(n3?{{bNSo8Ni$u%Oz}>@LSNV+vqmxOHiAe9O%Y{g!{k^IG z*faPTZ1OS{LG#de1$T!HdJ}IhD?xar9&Hlvd2jo`qgKNjp1|+Ij<(FCeQ3s*;3eTl z8)hwjG)#2xS7Ap-X8vw8nT&lLeVej^Z5xY7KVz9dctYP;%krgMx!C>K2{$Z^AQs^= z>jAj5==Sd9can-Ga0D{AR0u`SlOSK_Oi4S_RM5hu#=P22?oPz~yTxu1R(yW5LhY#L zHk7^Gb&i~5>-^%rXzTLbzSv!3=1t@FXU5ZC+n9`pkZtvcQ+4&AV~!v<-;?xZf8Rxv zv6t`FkjcHh$-|jR&_*clr>qCbF`v6ljJtXFY8?uWwfg$)^-%r?p@)xXn(ENeyTS4N@nN7 zq{-csNrvp&Qr4y)-{DE6?^V$4==GF!*VFa?2VupGz=-|Da9m1M&*_;NRg*tj91`6qcO+ZS#JC z%=(-`Nho-e2szyiTe&>#4RgISV-RXeOgRfPyS=8# zJHKVRKMYq7`b!;XX6*{ONzJ@UrFHRYzge{DSloW^l?G;7aSA{gs0XdR3bgc%GFUM8 ztw~>W@SRLw`gGm8eA7Bfzp(OX(%uNAKdEN8N@gN+;4|hI_8@XUw)t(-W!U>YHT~F4 z2vS1Mxg>SmIK(^8j6sH~IGF}M(&v1C(YNx@klgeq@BX5`p>+=tcp?_$ex1u9W4m)i z8tdINd`*nq!gLwTBu>zBaKC>5H9qh~qzB$K1l^q4={3)t8nmq&+3n8MoP$dOZN@cvyC-%-Xsa!yx_X`ra6FJ_VV2q`7IzBCv9X;Qndj0*A)-fr+R_w zdi7Wp`b!xH{+rwCcYoAJ!eAVYx8o#t;|ho6ZiyvtE4+KT-t&1i4!Le_hw}NGF~9G7 zd#~4hnQ+A5ECoIBx#&_B5q0iaYw#Yh>Ld4E0~NIT0S*Y0&ZBLlEv^mP&kQC_Zt6_t zsig6`Ps~@fpvOP9YoKSP+e{BfOzI}LtJGug6X-?Dc0%Uu+U#linP1avgaUi}2sp z0eGL7wFJ==3~x6ZnSa7t-icIva|A6hJ}b8Q>fS+)vPAf--0hCt@1ACn1Z;7qN3DW!2EmSjd_eeQe zKN7A}x(A$bvVN)+tJ@3yCBf(dLgaoo?00t2a`88U*r~gmJ~~vlVOaWd}gt+zmaIk2Y$7VsdDmQ-~lz|n;)%_9*c}*Y%B&P?q1Ee z-_1`3T_p#l*6m@==yueFUwBu{#h-E7K-jJE3GUmgZJrl4U}|JsdRd(PGCDU>1OIi= zL@>bD>wN~qz9oD*85T=1!`)CZD30(6OxBi8o2;g&!FHcTPf37#FmMGu=?^3DR2!&- z3^H11)c5vxa+@$hVfo?yVvKv-ri7@mj=O@kbELr)+0)%XgnZKtJDD+9z|S1&{Mh^g zOyzoSM?>N~x3@_@uS7z}feLc=W%q7Sb|X`K^<**~Kb!B)m4?PvCdGBLDfh}Q#kG$RDbi)|SUHO)X zy$fl`?WXKSV-4_Pb}Z2ITJGUQZt~$W_8}!EHelCcQr&-*d@|_aA}BL(?HN<5jPL$G z2U)=MaM?HJYb1X^Y$GdFqcOeR*eA2^TH~gY!tX_u*}ISvE9)!uSWawI8!D>*SIl+Y zb>MV}h@HQw-_yyz#H=Nd#$-7C(M99V%wFsAjQh>6@~_8cjNW9}YLg*NM={RQm}3Vg z9hfSBf2O@*b_{^23oVg<1PU7a4)Ukszsta>RC=Q_AH}AsKhH{8b=ckQJs8imn^HAgFLtgPT7fZF&lTw=?Y#7a-Z%Q!xXVLY3nuWXdQSWT&F$p z2d~}}xznq;Lx5n09naXwSEDBs96VGnbatLDRZ*F0mkjmN%L5Go=kBF-ZG61D2haAr%#-RE9O2ySqmYB0OBt7EX?ZKSQDr3WQdRKuP@LGVzT`*sy!tG zQ*VPvHO={^-q}F=cT2#ju+uG3No5y7j84<;jWvOM8j!~uqmD(l#Vp{xJ~zdeCxb+; z{E-;1fzO%QUuvrjE@Oa<^>`-iSI_aV0sa@w%QER3RSG7BFMg#Ci4J_BZ+E5%5{|z4 zwpacvsje#rerdyVzNkAk%xO74M>uuMu+s&uKPhuxMjOpN8*pY9XcqVrX2Z)!Ls@FM zj{kiVuqAL%M3w5j?aY0s$aFn^`j1CSDf2sv)ygJJ4NtSF7f12Sjxz+K!wHc)Csex) zgH3u*;N)RP5oQZ@pICW?mWWJu&Yv!t1xT+fqIZf!NkZwF(~c$kFHVZi6BA>SR`*0{&lYqHb0Ia z%_$khJe&_ZigztK7%SC}32Hh{ksqd(Ggr+YEq1(wm3uZzY_IbLU4cm|^iAUBJEBmJ zzQD{FTl1+9J|=b@qV$_Jpr_RL9XPW5cO~uDC1BC>Jd^9+$x!0IHlnvJM377dghrqr zja=bhNo^uIS#!6!h=~SA4=y-c-_3Db(SobXo@@5r^w(G}t?HQ!5kl;mCbeDi+>BgW zRcwuoGG=Sf4>eBJcG%+bx*e;7lrxf1cn~zNNEHN~+XRV9nY^2hLfb5%Ln_e9L-d&` z*??7;ePa(l-sJ{qy4wD^ZX7Dc$i}@_U6o-Y+2d?@%_vMLAYQtMVR2OwSqQ<7?%|;} zS>%UcaNrfR$uc8g)b?i*O9d(4uy;lyg7e)6X#^@i6>d`gIiM-=AzP;R#c?BW7Qx-cLkBCf={F=2y-5Je#I1QFA+HJV;go zT+SidJnO%79D{y2o$<#m6L*Y#YxpYd?oexN_BMCZ01vY8lA#n;pTuBg3`{%2o1v8N zb?4^$H3dqJrn^9Utb5dUGa3qNt>uVx_KaGLCT*d+h_#W?N-Cu@F@(yEUibVSnA~`KMc0$7O zS7zgJOSDda>YhTIbu>N4Jv53PviFzBF$@i0hJ-zK*(mcZ(bk!{|C_yNR$haGfHNUv zS6Znx3!m>qlr>%~w!Y;Y5E9>SLX7-kw%|b{xX;!X;%mm^U1eryJ}gR|t_KGUg--eD zd@`~$=8czk)KA_3QWJw3FXyt4PyT_OyJ57|7^oQWXSMO1aDLb6+WUIDK;7hSM^8QT zW?^%5bd2RDWb_lf0N%^~W{tQTHpiddc>I{SoZsBNs;ooGttI*LO}96kKhVwiX;~lq zdd^RWqNvS`cC?`^MfY`jm+Rj&TcPEc=G3anIp3$gF+j2PcYr~gUVL(OOej`YfV$*% z?(7qy_&L&73{~WZ(LqcHD4$jS1u^fsEY_wmwBNoeC8ei%B0bAo#r0H4>3%>QCKG3q%l~E0&rE?V~ z@-qUXErptd!~R4O21r4)S&YXcQhPTXg;qe4(V{>`Djfm&!5p#YMrY|*TD8c>ES1@6 z#lzp^{Z-0*(Cl0y7c09e&dVZ;7bQ0oeNgf z$J&(_xrzKm71GsRujH;LYE(jed8iMnMqu!w0;sQUNYOsyMQNS+oy_#d^QR85mjgz| z@kTA?;Yhi@bcEH4-?xSeZX+CMPTm33(w@kvVqBUZb3!&*+^(p@gOz$+$+3aUX+DAa z(89J3oEAOLE8JT*2{HA-cgb{oYO;G0y3cYRU`6vFyi|JM-2GjtqWNoTf3A_Xo1$10 z`NiDL3CO7IcrhnC`tl#-fz$6soC8lJu3e{-CXpqM<&s|Id8&@~J|pPU>+;AT)ugDH zSmOoUXRpfx*>=F_96(+k=uNZS_Q%j0y~zBL>0|Y!+hI;#7`0+zqg=G0JYM2Mi1CB9 z&#&^}-1pHXi2YCRSium@>Pl%3OD99klKpIlf$EJuxac$<(qqXo0*PQ8U8FmTYu-^M z`DJAIL_A68BBP;l-|15L`FuM4yBPz7S){p5!06jB9sGNh5!f4+Dg{XX&m&19Ej-m> zWIeZfOY4ZEQ_Vcg=62Z|nYVj$Sp{k9JiLmfi(l3XkL<`WtJXUFMh8D2MxL5U2hlXl z?@SYWb=Qbb!hCHCB{o?I#{IwZc*Iy4LsHtU-zmP_73kRTq1rrCO_aNvl*?Eg*zpu^ zNPb@7Y3tKiheTQ&dyn!5+S1sqpop>W1LQ6m$1;T9K3Wnncl+}mP@8^x(2k zT}1UtirH36it*V}y|xSoK##7>TD)r8kbRauNHatC!|x?6dydY{)BFUDXAuLWQgvNr z=iBuS4Xu5;82d$!u%MalHiZP5;Ufk;6OC2*t17BTLzRJM&us{)igO%V(4_k_c;n1G zL+Y8Z>d05SyT+k7$HxURckM_ORP+4|rYZj`LV2X}F z|JvzUMbKSo-dZ{290OGN_*XabUZJ;wDk*(bhHgLD+E%b`ZeJkQXLxuOR`O64C1_Q0 z7VGsb^`a`rYteF7-pHxN%XeK$X5PTxs$9MKaR<6-t?C|u?mu?TQAcbMS*natC;M)d zpE&&tWHl(7n>z^m9zYni(PPn(NF590N?Y%Bx!_W3P?kHYe)*i;y&)_>#X*gzFoO+< zCBF|F33y=uAEX3`IQyH?Jn%<{dA-gY?Cu$6n2D0%%%B2#JepC8eRM}W$lK!*d#wEui=yLu0khkqt@;bb z&YQL>q+4&*hLqcE`H*J0?9~H(d63fr@N}-K`)1a4uvV`l!11SH=$_i z7!RoC`Zq7M`nG?R#}}|oka>kZ=zJM^ML!8np{1oF;|^M`zN=~=N%2AW=s!8dKL)1S%&mS#im&pw~YwEcW&od&MV z_XXYGK51LWKob8##a=ARm>Np@AA74GtMy4KKA6{zdqtDqwKFn3xDD?X#B{Vf+>*Vg zLGTA!?XoUsffmmC;2k<}&c9m|T&0y6Ub|jRVGR|S9qEKfJ(4U^*Ulq_a$zSn*dk31 zqu`S6&HS@Mb^6WOF-D77Jfyoi!{P}7e(5{r3fy`HPuqWF;n}(|6W_Fu@|;&Rwfk~| z&Tz;w^GR0gO_S@uVKtIyQH-W+(=&%)DWIiyml62`MU32|k`w0jUH({GjY1C@L6dAc zlGNr?y0?MhrST2m)009JOINlon6qwZR{N(U+6&jv5$oCxd7$^?Au#mlESYvW=+9R1 zD+cYA4WQ2w#zvfl)OO*70-peTwpub;M8C@ELl}MXH<6b*_zPHg4`}V65sRfU5NjMOdh4x6C;7!dR&9^fex$JT-JW#Ix;p(42>)czF%n*UD; zC1mDIDG93*T>>aXU+_#3gVF^Rnl>B=lBY$zl1J!8D?zlK&R3zLe8u_p?RfBQGjy$Gc;x4AP_+ z2l_+VZdpmc<3ADoLByp{+{3^l>L6Dt67b`32OleC^GtD$H_zX=2s}>#C%tmwoK{v> z(j?^o3p8w;w*dftd%=Im&5UZ}31?|izFH)GzF8_~XMP%E)w__WW)XZ+bMd_8*))bF zo^q1x`HY24^Hl5DL;Z^hs(H*Dj*vcp3;xG3HH<;h=%x;fP-nmSd26i2C{}@NjxNU$ zCD4migGqU({iqtYq`ZAo%<~OYWPgYC6M4%Q`KDiusc>ARaif$#^}oqGm7g)DjSlpj zue}I@RX>pQVBbWF8L0ONzpLCd#<$1|pT!u|5PtqQ1&TvFr?HCt&pcZHre=I0s&vm1 zzB~bZE#5|PmenZun2mK`8vNF)I@On@RPnQXX#(H}T`2|WtTZVV#fPk~Hby$z=oL58&5{mJYH7wQN7WGjzE%X-1{ zN8_sQ4A##e>&{Emnl+G-k)w}QvR_sPpLpa*YGujHTFS(I|CBz@KA)C@f6U{ZsK~#v zqKiA^oF`UZzQ8H-MXV{_{YFqD5Ab$@QUR3BT2DmMeSM}x(WwOPVZe5#8L=At@w~%A zBr(zpTC1$)V~E$p_0q!1iy)<+mp?3`Q&Q-KtA7zeZQ^tRM~D)Ke#-klZ|udUqPfOz zS_iLdC7&kl!|)%k33TWP!mo`p3FHk!U|=6eZnh~kj=_ETK>k)FK%KP2zI0?Q*Fc68 zEchmylBV#7m+Q9ZGlV#JU8vYJ81Z+diy}mJu(3*EGr{Lfv_%LtNgnqc%id1(y(U$u zFUtTdv0f-Pk*_`E52tLc!@7=MZn5-bsSCb}de2oMPC#QCQNp|5LP(?Ao*uQ6qC9uwS5i~I?z4(s5~a<0d18wIUzRFa zjv^n8gjZ7-w#w&oO5<+p1%^ell4lk%F;{L~Y%#nf1V7y$L9I)4AK=@O}6}S@RF9(JU$r$`E@mOFqbqP0fD!jxMdWG2c=!n?%T zW@-!EtW|t}hwdZ7Pe=VrB8Ia=ct(s``}+a&7=6<-h3_+N$eudDpReTFB9*WP8at}4 zfDaLpud1BGdlvjEILyzVp5u)=6+}QI6y_*KxqHTRg0t{7ZQs^XE4*dOQ1I0Nd-;=JcG-nZ zERI4UXIbyz%gz$oLyqB9&aJ*IgDLzG>80tswj8z%HSz#mpr$Ek#GbE%hhdvYx2jb# zuY{9iD)Cw5)0=8pl!(FzaovyU5)N~s>|=?cY-_e_w;lPsw~nkZsjOCjeP5ZpZN_Pn>plHB%Kg>-MzTX$?mbCf*oRqD#;G(MK`j3LCgs&*n_ zBTAnwsHYnOWk{*?)IkbyaU+l7u`J=|J#~FMwWW5WIxp%tb@ioY;(At^XeJgj6Sn7h z3x9|ys`q4kICBD|g10T6W@u>7M+u3PmV@g=6Uq`iN-R}8%tSJ6(}(xI@l10M@5Wd9 z37skllg;^Q_9*spQ&)`H`zX`r>YJ!0%z+BA>ktuTP<0e^y-}{u{JsrAp2`t|xG%@G zk+2iZIlqnfD4|jFIO;do2pm7qIv{papGB@dJ1Vko9quBAJuSQE-vCvbFxzRo*OJ3C(RCb z(uHMF0OO&Ikh|fzh3S0xjdBjC_iE{=yZSG2PR0XGMcbM)CD7-l_wr(Q_KV=GvYH%& z>;Pp!MW39{Zxt|M@!wuHs+bW98!>h?HYZNSv75Lo58a~;j&}B{DNMkhFcr3|Tjgi(hOY>~{#(|aefzjgtAGAywE+%Yfb%R>K;6LL|JpJd{c z=Z(eb*f<}%v|B!=h#pD0Lh#JQKa!2XW78)@gRih$H0sZA1ZoI&`Go}B< z8Bm`?0h&sH#%L-5X#6jlV0oh(#AZf=4Yq61zvBNdwETxW*nods0nzyKUst*Sb98NB z#J`HK{RT9c=IF^3A<^C54xT9ZqbRu1cp$pvqxF!ynM6+S1%- zN)Cv4c~HTfo2VK&Q>6!GCdP`xN!N`zd7V*eeIRfWDj`oUY?^AmY?i};A)SsDjKS}R z1W=+EHJl}pZ;)X>dO_Ep@Rf+#aI)p4zdTEd__!|%FSOT+{3-LFfR4_SpOB?Wjz8wl%L4xTMt)xwfVrcnhWk`8 zhdGzr;0J-&AqHPPC^W&aM83x0{?Qe}+VLAi&3wBUhDx$&w~`|v z5%DD69~A`Jsf1vWUEa5w%{5>SCX7sz|Alstl7k=X>3ns0rORPFH{G7d4QI(9{RAi- z-F%T7P|w$wye9qS3$}p;nqR)KrB%D~VJ)sED^MHs{ZlL(e|>L=ki?8Sr7>ImQtR#SJX0yj%TAJn=2F zs(qcb5>U4DcqZ=q-em|V*ETa3qaS;BJ-vvdizSD{t($(y1#Xw?(~-Rs%re{iYL4ZU z-OR}zufCg{hL&)8TL{c9&&DMb7g3!{nO~c_OD#hx=l7n-CcTXXaZt8PVh-Pm)W(Ze z6{g>5evAkM%1DPW#-(3zzfE1@Aiv36EtRNcwb>ASj}kRe@4;TnO=Q@pHmqslMipga zn6Z%LX;CnB4N|2QxTy5eDbiA2h>qt~O16|Q(2_Q+WsgH0s-d_q2&oEBj^X5pJXcbKrEtX!7;V~j{;O!M^87Fu5xmH0>b#7X)j z!wtXNo*BP0?d&@R?D9ihMC^O&MI1?QeOL8lZQkS+7K$_qAL=bzAs z_kxF|KWuTITf6qYrqUs=aa+du(Np`KOE`lN+}iiS7fFDtVuCxKm8 zD}r3$U6fr?N_T)vreg3=HjC{vyh18wkpUNQ z4dZ1Jx?Y@k?e}4ESVV&MvwS?$`o|jje~TdFUu&^`6jN#@yf-(sIvqg?KL1BQ0teIYT+T&>%O&suoiUep=gQ~#wU&Db? zCQ6i|g+a-oAENZhRzy~r2o`|vw$MX^8OSfhiqs>5j_CghV~o1fyfXcR&1L%C>>jb-U8;3sF$de z_Sl16vsp~!TfIm&!uJ4We9=^Ms`L{9--!f#KTBb`%ExxFr!dc?YUM^N$foDbk}>Pk zQRCN$_+np{Ix*1fFshVQ_xb%m2i0z`7E!2?%TC2Bb)_qo8e8hCdZMH$(f9U5g(~(_ zx?pk7W7R<;15nvV+g00Ab#mb4Du<>4?M<h?j?qFN@CUWWxyllnIytAJPaST-*Ek zLkF{B`t#Hj5?V&)*%gxMTA$Vh)~f%pGqi*)ae^LfqYcta|`y+>6B2{EK4(H++9bh zfo$=iflpa*A~ZrtQysK0G5m)#GU>HnNoZ8* zyU*9|Bh?;@x##33l2z(Y20VD`?5^tvY^#}0mF9APd3zwgLzbYmvu_P+-=7FRDaqKr zHP&Ims7+HpAn9v^*<{Q$?y1R;ikPCZPZn^!J&LN0=!;PFb$Ii3lcc=gg+UEc-KAOw zelnz0&gsqB)_01X#;xoq6~jD_SxMCEg4qMcUTIE=)bfeg1YwGc=GvCKJPsCM(F8@) z!uzCrj;{D>8YLmt=~QnV@n1d}i1ce^^`2G<-4#fK+R*%48B#AS+|~W4zpH0oz~O@Z z3_3iQaIrSmb6gEE1~9HUm@$~G#urO?d@J(%=;8f>SefE}5M#*tKTEHcOVFhcitkt& z)P?nSxzp7+<(~RhXsv#P_zJ6;6@|6?#2}j9OlG$kgi!8~{phJ9I4eiHrVmRl0kn1sG8uI?2VbV~L8Pd>m4esn%|KqZgGx9*Xg%bHLeJ6aL> z24j|SbgjakkAo;K&M$UD6IeOpuvbB`Uv1K9h;pU-8G{Kl{=P(8Z}X{3dg5Ft?)kT^ zNDa?JLu=}OE<@O{l60-RkT1(Z8Ub=WIgjn}C(d}Bu2;$;TxW8QpRE@0cO5(CgM3-) zS8Lun+0~Q6)#~U8+$U(n9-o@}&8yybExT0tmOWs4<6#wY(_CIX3__n&QaaW{Ut^QN zxcft0-|hF4aVg(Ak$eIO3Pqi!sxoNF(i$0BP7rujIk!P0U|SM(8Fy`h`MzUG_hrPI z)Y^=P?{mH#3tR>#>DF&QaD%W~P_P_E`O0hCQ8$0#LPDzI$J;EqGUJY)CGbIJ> zsNCqNu)1fTGK~+s2wk|TD&^sXdOrFhYznZlmbd}%UE3dWAm^dO=4QDn;rgrAEf9TR zCvGKHDSv~G0(8)yRwl0Bv~n0y$iDVl{>R^p&t1ONCZ|fQ_>nKASL=CS`#Y@rv%Gx_ zEmalN1bE09>mBM*1W;aCk?wb0SpS^cQW+?U~i7Wg(As>{yF5CP~!i2%_d z_qe#8!r=t7m60(s9{f9-x|Wu5N|t`VxZ^L6-{JlpZ84+w{c(nh^fq2e!nTs5`lW4~ z&?~)hJosKBR!r_R^QjFXLihQ1#n5Cv;QCifYbWliLa7*RLKf5%`3Go(A4uv4S9NC8 zKo)C}rd;A^4cV}+NBC{4AXLxkE~#|*LGkkQ#JkQXf%eLNpWajb5JpXq1EHoP*V)!c zkF!E2dZ*H)x1vro{KfUJ^TI2RY65{!OlEVTtZwR(&hN*Ml>cCWf1PbdrX*L(E>}B0 zVbb+j#CqT?{yk`<9X6=ZiD>V0ERlbygQeEh*_hWct*(T*<3HRml11&ZU7@b7)Frs$NR5ZSqS&k2$zlNjo-%;{fk#6;gy6q)GOH>*_DOtEp>$JXh49H?4*cjNe>k*hQ5F#TqvLJ3i~(bQwqX zhGyYliz-fr8CVi$whv^oYVvgjR#Q5Qp&PYb?3qwqus%joXiP2WG5YK58`AjM?`>WcbHvB9IT;0&3);m!Ql*h^?!#~`QS}8_ z`k?ceG@e!Hsk25&0yW$zAUdgBx-)~&D|#TM5FLt5M?DulDCzu7O)q|KE7G(jSIr#W zSpo$iyy4DsG^zT5g*QT3W%XL$4Fk8&C`g^Yw|j)!S30cn>bUK=Ys2XXgr_cV##w z5hk)6p`LZC6u))UmFzR$_NkyEE9H63U8u3^lv!jt3hAb8!AeQJ&F3sXnFPz*C~J9qP10R$RTR`zhm^{4g) zlCk$;DzriE&Gf=D-aWjaKtv8l_M_PUduOke<65&0JL_VGSX8hP`&%lwT zGMXsFFH>DF>s?gK+n|va;oTJpG?w6&4iG2&<6Z0cZTFHHI^VlAXCQnz%95q73 z!*89-M8e(Zoe92_RN;-Nn!3_%2{65PU||ohgrnrr-yD?qxm2>d=*}*dpQ_~Jv`-ar z{0(kEXEW>WlA%nT=W`>MJ$m+g$3BVQ)KhuSV&>mJ{BG)N;M)g({;+bu;=0QxLu!TH zFy+LtTxhLESfcq?5W1E+vMO0lKD}_5c5%A?aoOdKQ zu1f=Bn|iQ~`}IaNG{TH7|H=9z)&Lm*xpU--8zjMYQLV6-J!>!9a28EJ;F();$O|se zY74pEDu{|%H}8=!D=>CPTn-bl2^@||S{og9Tx8rG#dYK)*x(Lw+bV5mN_F@O#pU`V zi@``ufqZ*a-;4`3@OpKNk?+=LYNl_Fbq*?#C^J|WW;|sb`9f8@aZvz`2xWWsb{eVD zr+e>O^7JrWWSkuM9EJ76&(V#fZadT454Y*f4SM45dX-58*wLED8?<~i|8WluCJwdR z|A2*h;Y{iLW3xSiTtZtf6TN&CG0Oip(u2{0);|7|Q~uLu{!>mw7}3Pi`;S;C0kdaH zqipic(AVgkjsM66m9mF!;lFqi0bu9rc>v+NOg89HK@~aIqt#RyWk_RUo9a1`L!E!S_Rg&I3h%`WJOXQEo>uOjmC2$Az z%kPSLR-MH^woKdj@^M+!S#z{eWQK~pgf9WNd(Z(T7<1C5b14DB&TukxZo0y;o$_PU zsgnOAW-!0Kt{l7WwF!Y|v{OA4w}C7Z%ZD0X=Q3P);eg7-Ny*#}TQO3m4{ae06|8&I z9zIiFyl}}asa9QOn?W1(yZ=Flk9XzUEIP82v`OmC{qn=G)dvh0v$rZ`y=D?5Z)o+- zKYsbaaeKq~>`zx7@)*{5tDZ+lfRnBAWtIr_bC*MgbRmda@aX*`or0$kA4#TFW}o`9 zBz6}5&iI1Q8HAH^@t0kxiW-|?6B+cPx{)8?;YxML=>UaBWP%wRMC8usbSHNrza)x5 zLUAgqYeP9o;=MOz9z723Ta-~{*Jk*kC~p~Q%{%W>;FN@}lSpMJy5d?eXvYh!Vl3CE zr02xU>*F-kuw5>(dbHAy?L#t1!506$lWZhMgpFb@;T?i};@yU5J_z5GdV-xWNiepo zg=}!tLeRMplZ)J??aMgpGt<-dfMBvH!B+~i`L*D7=xf#|9vVMOL0|H7t=~Ht;PrCi z*m(@8UVy=VTn~YH{RB_Tg59t&<7uMtlo0wrr=|vGs&YMbrI$QQDe<9XB;judDZrvm z21Vbw?5(UyOIa5wD+jj>@`Ss-f0M*_C)=Ua);2`wf8|S5c2dM?3Y3YPU)T^8N+#{0 zoTwYcG`7l(POQ_;OmwNz@hJRpn8+dv2=i2Bppfjb1i0BS)6GYmm7!S#E;1lSZ|d_= zmNZ&NChiBPNR+N}1*g0Qu;esz3d7(R`J=99Ph?12UnUiT0cO8{5`u;SRYtheChcWGfjnhgUJm#MLeU zapWt8xH~CI6D8AMRc37J%PR&j5Kj%hFq(2Lj!qMgFeaH#7yL@8`dne?f8>`B?%3lGKT2&Qn_`QN3ox>)|;`J1p4<@bFE(O#QCW&XAcE{c`&GqY|7FXoS<5%1$Ki z=qkaX|B#M4YY4aF9kot{p?_dGh98f2T_G_{$NCv|J!{CH4}`*tJzMs1Z!m22Z&3(x z(gz5~d8E*^6%TRVmw}%RNxWrEdSqWch)?udf{PyXKNKg~G<~h_2>})!eT97xV}M+q zp5cgTsw=q=dvia2yp2fRMY!cnDdI!$PYokHh&&7_GrorEM!m)1&`s}QCCH(|{*}vd zvZ}WTEVxHYFNJr1z^iIKnYD?#n_wK1IaIfcS2KYFe=%TlH??FWHa0U8jFxu z5$+IpIT3I>qa`{J*AzHXNYHpNWlp*E`>Raz<0ej`BjzJQWrb{Ck~kWh`x6MW|>>zT^curQ&+1M=*r)6ioW zvY}Vc6Zc6Nc1U#w=}4-BN;vs}Jxs)`0m1aGy$vj0ZDU58lY#Jh|9539Rhav9$gilXsiFRuYzoxi3g$OpbWs%`dbxMTPbZW&!pE>h%Elfw2fMPs? z>jW4sRbvjX#b-mGccN8C*3VdWvGRZFbm1-q=U=9*xbs3Zv3Dl53u$4Zmk1eS203_8YWVAzY3Rbg^BJ5t%!;3;>#2CSDgAZR(EH4TdAk7jlXWSOtb53qd*g z+6nJHUu89*wO5a)e#R%7sAXluH+Ss3uQ89t-=g$gh={ZYUY&a)lG$_wuFyI>4ETJI zNRk~R$dU06OxFP9p|3ZT74coOTH@~)a_a`)!pEL(Fxt>k;A*y1zWxO%IZt&nC>1n> z7O9H1cS>2Bo|Xkl4xMcg97^QduRd?68)w^Z6tb^oI#c=~2B~7PrrRhl617dy9e`_p z?BRCw(q#o!_HRY@bY**!k6VJxc_BHs%o6KVWQmTFg(Koy!)lnrGAgk%hKu%YPEh|C8kM zANu^4+$@%y1CDk(}NVtA)AnA=_ zPs?}-`X+eLNA$-A-MbAr`=;UXcP`>*Rem!#yEUw|D~#v9EVvBl_pWfpO35`U0?$fp zgxS^vb|Y)n2_ou)faCRiW3Lptrz^TO(b*M+uVJFh5F7`;^%mmiPiu9$TgSuJJ}$EsH|FE|>(;I-gdld)$`dyG#_%-Rv*QQyh(z4C^9rIdL6 z`QujIV?Zr;+17cx#)uS2%N>rU`j>eh-c>B_;b$(6`A&&+=%d!Fpg!fTI%~ce1^=*U z2fF99Rj-4Dv^u9nXAgW?1YJ&*{`l|?E7!2Nj=>!Ojs;JD4_d8tn#;;$n0pD!0Msppkf~Y>gS~QU z7k)r+8u4g2CGTSvPz5?~KyN%r_>Z+=GW7M}kMZDoe8NPH=DH@%CbD0cE^I6W1-jz) zhX~wfDe{m)(@oMsP4@Icj`%?6ud;jdfF@Q*5#Hyh-nrsaWtD}hCL6Z&GB+9?Wn)=B zJ7RQ#E6QfG)58bj@m<@mTyQM(b${d8zNP$rH%9S2J=Kuvd@79Ew|Ov}iJ(+~cUsRQ zSwAZYx0+d0@x65#2WE}J(c|y)hxTZC>B)|je}bB%RH+1^6B(L)7RC}SB$@R>W6=H8{;?k8GJYQ3ze-s|N&#I1>}WUt$4=HG<<-gbFcrmsNK$VIC(S^v2zf(v zD-Wixxi$BkeIx&>pyBT}CE@A+M9j~L$dk^b`Wr9j@vkB^Z6H{kp{+QDxPSUD!$?BMIkkj^$FF;zifA6JdI zcoSJC27x;8<+KUR!b|}R7VjUCBkj+6LKsG7Udxcal$0(;s}6g5d`-uB^>(5<_T~CU zWfyZzl})Y7Q;=$Yf*!fTm1J=cqoxzs8yzr$l{={=QK-vatvbjzZreXea{O|1ZNdwHfrS^s8vu zp=!FsQE{5vyRXlKX_ay9?7Irf4cEtyFD%VYv%i>8+;h8xuhpV+Q?iE`5ZH_a!c!%0 za;aKGE}OmW+4e$VGrC?yR0!9b;*IaiTCZ<3`E85Ie(*}M7A~UIs9qt2mB z?UzaV4Ff->wdSHsM-2I7I_h1@lR(|_jBJl{>-z1=cu-#sLO!^o{mrV$b9r!93U13M z6S5mkW;H>(>T?WX&Yp_;IE^<=DF4Q`a#4y(jHqtOjnQ7gP0NHcrC|{((Y*6y`XnEpoYC);_0vJGpU)+4(8p=*#hN=VLx|6-9)hV)5_Z+1K+A49>> zo_fL77%!{8jBG{6rJ{I_6-x;}XKyQ)ASamFM_VTD$=45MChAHoMcAC^fSZu|{j0Zb zH5x{*i$n6Ndh7!5fFh#0E^KTRNBfN*UTGRGyj*NR<3hE~6#3u56KzUM7l!LP`EqkD zo!KUjS&+4qhed!jS+5bh|TX#hnweR0U#{d%2A>G{)N(|lU(B0i7IG{8r zH8e;F0yA`nbax{iA|N0k0tzC(3-9%P?&mGs|Lg^8f?*i0eeC1>oX7b+LNN%SS2_v!V>P4u2w>s_WcMd1jAuiJo;Owx(il!z~5mjmMver-A?|A=H+uI zeHvj#^q|;*$Q*Z$r%-DoC)o?QyK~O-i-U$^I}e;uSH;D-Pv&s`!am*T26`{#nz{m;4#dI@n4+^u5E~L>DB5$ujw_x?rP zuN%MFCcS9ROxqlP0Lw|?(BLMgDMHYN1vBoaq$>ly3$XuJu?c!0UI2xk8orjJ*y9=h zC4gxut9k}p)T7Z&AIOsjxb~mr@=wV8htGXb7cNo&J`)%IPiFu$Os*OXuwec{y?~Bc z6j%kGK@GNa2_XYL$d!M{?msT(pInhOeK2D{{~uKI&y4x!wxGxWcFup@oqxdZe`uJV znTO}`unPu!OIQ5{KRnnDUH%>L>SVO~!^GO*{fh0W$GW{;c3c!H2@n0;LQ5I8%#US8 zhac>hPwq|bD6#3o4-9^mIre!tz}D$8!x(4Jsi+aP81?G4r!})Avg!CRY^0}8#|?6E z)9qBwC?nJHGwYGZGd1qUfdz+{O2JmDJhaQ1vuhZC(V!2)0*fVRzLGP+>xqGBGfsG{o;u^lwMQ4YXzif9W+{5q%*k zZX~Lve^K}o;>(c5UO~E!?Gaja&(rfc<0at0#AslMkI30${3?{o?ILuV} zK03OwcPZXVxK^jRe-v_r5;co2dI8%3~YejwxYKBPW+@M?dh&S=l^iJeLWdvCb zCxe#bPM568UL+t%6f5U;Y)%VSs?n4srB;a-oJOKyXisV%T^&3vC8cOz5S@=xt*m)m;tr z3)*~WQCf8AU!14c+y&EJB=b>VfccX0CVa`x4uB#Jb1(WK|2&IkHin@z5ep7^yun23 zefjuTcx4BMP{9zY{3E+Eo*4+k={8C-rtWO!ArJkw`Fp_i5g0dWeFuetZCF&TjmwUD zRgHMcQg{vHzKjNL)EPy|Z*Ce{h&SbuySsG9M#D_$!41!(iNcM~7R`4gN=+M0%Ws~* zUpyD6hL4ol*7H1irR;Fg_9hajenj;(mf&N`a4U86wl;onOw|DF+kA@Dkxs>rH{6SC zUh~8yxRv@Yi1SKZEdy;X1IG=M9)i@?-N@AV1*eN!U6it~BFhlKZq__f`O)p4-4o-`Djt zyDjQ83Z_a`pvv>4BOr<_->d3VppI%B?}^I>6;#mSbiva5$GJPB_AIN+DFDK1>!kC; zv+gD+%P%v09$f8AAcBcG?MY}@^c~k0Ss(E}OLepWS`e%~97`WBXdlkr1IUY*_!SkT zR<2jdqId<3qKu0IhI17DZ&xG-s-eh0{vadPn+g3Q(*Q+F>x)e`t+w+jGP~4qK&m?aHgov zZAmU64YNjc=Cbw zjV4{9$1?!rn(?cV8=JsKt5VX* zK_VIUNbamFy&Rf~{9sb{$`lGeGiE(;T^U@5Dn#keS7gHYKoJHaA8t39q9b zy&SW>b04TIoIDtEQ%$DYj9Kwgm9SKwt_KZ82!#=ln9T zki0-B+6Q->_(XoNCDZ}Q&r6_g5!Zz>c^`aavMHe##y`hjtYeXFe4_o_=i(=1EwSLQ zAQoxAwAiU8$V&zP_p!tC5X0l_Gqh9|jv%}h1{n-qt}i$FLhVU*Blg1$?t8vtG-G6% zSHK3#8gWT@K0P(z*0@i>y>u-9MZ}m92zNTN|ITJ+`#eM+c5C!Xr|0`K`GDTI`W@bk zb-VJq)?mig%Ebn!k0}(39BXe`f1%Bp0(I-KNsT=um8a=KrHj4%Xc`OY69Rw=xIR26 zc@yq_7oY8F#21+^@w-ErpOXn5<_$twdhX4}e zt=#=k>iK8EJjjy&_$&YI9~uN45+nsc^wy!$0}pLQcU&U*_8&v$rwwg=-v6nf|LT)} zp3XmgLe^jMaPtF1^WS38KhWm?Cw~6x)%-(&NogMLeP&n+=mI1y=<&tzBVhLd|Ab5* zEW2RYBKKvUpZAkYrS#Xhj9hR-?d`Kf*KI%ku>x#|r`3%mN4u$7`EJ8aYy?NiR%0*H zo=DA7){YRi$fP$Cxuc!cJirEZ1Da|DR%CVL1YG>1zrMVcJV6FJVxvX9XWHo{MtKBn ze`e?XQx7Cn^Wd9-;-Y1~q%V7w)1`64x<%kD);Z%;#wcC!p^g~ZRGSZhKPa41p!f5b zRQ8L*evfkVv7G}KdsmW#;$FplAr#w5L&;?(&Z0*r##}Oxo!+#6!Gv8US?JgQt_ynsQlWKvZ)NL+r}=}c|!-2%3_*^q=3W4RxLJx;?r zLcu1(%K^SHFHDNIX>8m;h}Vul#iQX4FE6ivQyjI@{X4$L!HX<#46**uY){+y!l`CB|dU`5$!b*zFXLr$B4{GQlN6YdRdD1Zpz?Wv2e;VTxqo? z7{Fn$-=b}0t>W%<%cCj|Fhr+Xi|}@qL{`(x8Z5BF6kzn#i32xCD4RR4k@$%#9S<*O z16xiN8>)<#QZ1rs&N}-eo9+Ncuf9=`HkX=-4E{&M;ZZqq(%!n4`Qd3w$3g>NFo-kI z>k~<<0C@N!Dxqv^V2?F<9ti+Frk-D?a1|W6d8&+A_&5s#xQ2CGKfslU$zJSXsM6Rr zg9Cp8Fotz-3CmYVUc>G-s?Qs>#=*LzxB(tSzk;3kBW-vt5<}?yP!S+vtZgGx;)-Zv zCS8~=A)psd+jeGT+LiANP-VDeqv6usu+BMSe6pR(QPgMBeD*XMalBx zVJAcyV9(p5n_@Y_wYuPUBiQBE6CFWSv#_WaZE=tFn>MNLlLT*2wIshcER%Cy#g1^F z9~8ga0P5v=q}_!Mx*-EMk6X8sHIXg@*A>51t<5GHM0E5c290<037HhnqQp9^{N01! zEULm3>yaf=4)-58}oyk{>QRR);VM3>`k}H9eJqH=> z0F|IOYQ}*2So!%BM3I-2F4Z(zWMKTocD284QG!e1WhFyuPaoUe%~DsGVRfB^p<_(= zDyRhz1nIPJZdLS=J~6k@;=!(Le%;3}o;GMR`bf(F=TbOX!(eBN&t3a_xBwt!-NMFE z2cG%tU?BGZTO=itcJZU<*IrT?GU$Gb+nxr}rf~y7I^|rEuMEeF%Ne>uJWIV+X5=R1 zV)ZtDk0Ik0Mtexx(0m0Tc}vA+q=*z5*57XBIwf4tSe5$^3`bQ8zC0ez-sMFlmlrcp zhu$_rkNu$=0FW}=v4bauVhJgSQ7kNQ7VYeuSB@TB@b>Ss1?f){i-nqpP1HGFnd6*=AI!NvJAGA^>Z*y^Lon9P=7SgWbEEDJ`(h15cnGxH`;f(FzZ|lmf?zOGGq|h}vEp$N zH1?}Dw#mjK*{#3g4#(!A2Kt`fW>NGJ=QW7n8V&PQjWfSp$y4D@lTzPY zGqI^f7-VKXp!nUxs2YlcKZ4jee0;v!ezBb%&3V#XS(O#!!SpK$db4O9M2c z187LUN=}QzUnd^_{9EjUlgIo6vpk~X6zbogtd)cspklXerI#Bnp#4w!bhaiI1#jcU zUt&w$<`l9q3bli3m2mnZ_b@y$DsOGq*szr;mq9VqZ=q#Ht2I?U3eq<@Msd(Fvk9*W z!SU90LAJDGMk}Dcue|GUC$-xK@%nu2AM39My>IW!tX)hO8^C8WbA z3EFC$@nlFZ8dGVa>bahoKueXinb0X25m*VO4Bv>Qmmm^aVQc+6_3P(XkAUlT23F~0 zY$ziY*i;Yg8i=vHK6b}SOfWmN1&k5^djYn4KmuS;y8%85?iEIWbh7ly{{pRx9*8~B zFZ~Arf}99FG*%CT@{wFYF|qzk%Y|?FcYuxb+;u30ug3uhJ$sk)X|j}>+M57qvQBW8 zxiYp!JJ1H%w|7c=fsjnAT?etBfAccaH)`L!alHaWOX0EQDfJe}KI7?Iw66(E3&e`1 z4GZ99CN&HRwZtFzk=XCqL?7Ijt)Sf^?(spn+8H0~5-8T2VVloB37YTXIr9f3zQ$P_ zOFd@#UP40m@@*YDuPXHryt! zFi=R&1O-dIt4?3t)EvKb$WZl`P)jSM_s*zM z-OV^g*8>Hk8_+B@=&w?FjPk&{Vc6~GT&^q)a$4wik9XWVOt|NKd=>VL*ipeZKFFCr z6zi$nPabq_hM1n#8;ly&T9x%dgXB|Cc7%M0Wh*2#`fFl=Oh1O4_|el-p%wv8q8x*C z-+M3)75K%*@UDbJnF`yj4)91%4nvTXY(C4vYXcN!b%jDP92J|fKRHB6MvmO+B@$2W z)nfR4a5OHG4z4otV>UHLU_+eKz0J|_j|jK#!L`s~KhABayJCkg9NnXVeu@3k$U_;HQ|Y6x=hhRnB4}4MRnAXn0(%{a-i(TR(<4b zz95~}*QLG>4WYP3WR80UAw`5_@6dl|GxHk*DJY|{q(@_Axe?prxEe3v_!W?be5H({ zGP3)$r&Pqib(qo7h2VfDUY1)X!pRP1tz(c_Xl&hGW@-c%68T_PDG2E#?6P_89kw?J zfN~9d1>qJz#iI8nuj?7ST;{Z+Q*MoPA<3cM{fC<6XCMN-2sn}HX#+r5-(ePoI3EV z8;8yQ`RepeC4kuEZnJi}nOVKDeQK+m{-RvUB}@0qiySw^v`phX)V*XxNV41-Ju}JI zv84)#ZLoOAT6+MS93~hs>M5WYzlf`idFMffSzIQfn+fTa&4Q+e_GheAW=Zh{(poeVlEg7T9ayHSvKD<9tkrokyIu%Xs79OGg;&@n31T*L z(#c(T$D(^mYWsZ#$}#6!QF`JzuWw5CQ7FJW)(q(H1DcIAVhm~w0&;tge7)+xB~IK-T1 zGCF^j)blB>tuhq<27I7QB;u-7<;{EF0tAii*LeRPUSgN8h7+3ZOR9T|-^?Bp7oTYJ z%pGI3R{rK!z@n>1<9Oh**)5m}cvCFhI&)71KqP1QhyW9vhTE556@#9}!{~kk1S#7& z55kPYCA;N{a@Q6;KB`6Eng0Q38?AZ+(#au9Gve5{v#|m8fb0XD9{c*ELdbYflKBWhV`}fHF%NR$e!2lVU<*{NNbck%y#wZhcjM8~^=`2>-R8eu;#8V@2tzpF*#BQcN z)4r)VWNOkCR-URcPa?pmSP-gjH;G!b9G@i%s+en7QK?d0G?*wghPo-wa}@9maE%&pZM#GXj4!Lwc-+v67Q=M{`0bdq3)Jg) zk#e6)D*Av1D__fg>IpR=5SJh8cfY7@2Qy1O&gxVaqsq*IOQ?2(@=B@G0_j^n)G2bA z^YDnb%a~(6SO^oTtGxV}6o?U1ZRVhxh*N--Jv(svX2uapFaJf#R(xV?)?q9jf5DLr2K5%UnaL73p9-BbocnY9RLrAJw2CS|mHo{-K!g0g=M=k%m0%+) z7k0OEe`j>52fW?w`o}yYq{}f?!J`6P1;8(JNq7VY?w<|UcyV@p7fq+GR!1Y44KmAKT!S&tKeSD^KppyD!1~*u^qxi^0@=~oZ9Ivh{Q2;{buypU z8|hFoKl5G(sy;hAZj+d~;1`pg>lJL?#nkJLWSccGiaLbGx;Pb{fVMT!lZAw)>w4>Z zlkduDTL7=6o!3LsM{6d`rANW!o`#)94`S8_K?Tmz^fa^Z`=$JyifAzSlRAb5Avs8+ z10Y1_fO4Tj>HJ*gTWpQ;tB>|yo_0qf7YWo~HNU1EJM|w@R(l?LySn-8HUj2eqh3NF zcHI%$ZyJn6T_Xl)mERinv^!LZkCsW6EPc>s(cU8QTc6KM4`DAU z{D>q9XxQktEl=c{vjc31OB~qwIJzgE7dPod2Y-YDBvU!UivSEwc%b6H z=Wb^Ol!dEEDrOO8F1jW*QT#@A#BF{Gpiit!-1@1b;t%9wr_zKPR#owgr^u z!R1IpAjX74IQ(tviAM!Q60X!1hxg`3mG0KpQ<;P#8{r>a6Y8*G;!Bcd##gxy zK_!I+iTN>3>GT$_yW;V)pe*J{bvS&FgV`3|+R+xW_MBTOY*6KO>nwTMw*n+lbo2Jy z3XL?;W)mwL_^i!P>%%Nr^p8)o>jQPDwtinZpAm{x2^VfWVfER^f+S)VLc%}&2ho*O zT@xy{463UFBeKZYcl43vg3u_`YGRN5YiBneX-ANj_?aXpM=)atD2A@}a_}e?djaAxXwbU1(Bg|Ft=ABYB7UrFRwjs-#)N^5Bo!{&CSpnnuq~6o39TQGeph_w zEs3IBP79EmQpB;E?D8V`noxLf!Nv;yvNl~Bg>av2Qtsk_@Pn6~iXGtG_$ou+2XP$L zTbClsYWc{sAcSYey~`jS1uV`QxSGhRhA2TR6BuGoCPsFfn^6;C6<8Mw6ft-L+L>?3?`@;1)|TVriF4{v-4v>6F2Bi z0$7yRYZ)wqbt_0?qv4~3V*3MUFOC;0f~CeD!!0vkQM76F(X12DK7?(HJ~jYcjtG&I zvC^>}+w)rt89iaJ-mDA+KO zCi2p`hJGuu-QrvnHx`LD6cQrSBc(h;-ysGXFjLDi-NMS)a?*Oafue&^4)btKF*hT9@ljf+xWEiY)i`$j4&xh^Amq0+?vIS0NR^Q-(O%hJ^=y`7B8;2|nDXxdWIX$bf# zCO0$0VUcUF@q2lHyJ15EYwT#{`+VzA4G2*T zaf^I!<&y`g0&MYe#@vEcEL%ksLv3)W8!tG91W}2#L*S1!g#iq!atI zM>YXfQ!iFIRJ!$E0gkn4!TLb`*RLv%R*0Fapi7VyCkwZHMNIsm&b{#IZog0`RfL%% z$9Ld;b^*gEPatJ%if_m7xRFfW$Z*Nbxkmf0UW*8&k!UZycP8^^fy&8PC3KZcayo?$HbLsYCYX+5w(6 z_U;J1tyAI-;7pSlIWH;S`n^MN(1$yD!22mNIgtZVACyD}(dI{5jGDVd)rrlEusdxM zr6vCt2Ga#JgH)q?2bAv??FNpSYzX?u9}OW>5lSCeT&TmeqK)EJk3~WR_C=-j(T0_+Uv@Us~gh5sOVNVD*+mD+`R&4{R|xWl}~4`Tyqw@A0! zgi8HdV{=_@);~qZ?T~1STlrI0b5|>z`r|X$s9eUp2K0TSU;VmtL8?4Ctu~!cG`zKb zV_Q@V2Po|P$4@a4F@A_``5zN3>RSC({#z(Bn%Z7k-Vfn0%Rs0WrW1X9qD-^e$Rck8 zOIXt{&syOKJ{J=!pmbOJ<b(&Cy1bMAn#DB!X^b!rm_{VGl9O4mku~4c=N5zkbpw+Uzmv(U)3J!K!vT=`K;mJ zN?QRk+LqS&^k-vdC6?)5RwmJ6!2a)mW}=wQyTsmvw#hWL!Z8i`N6$|SCSjsku2D)% zD~vp!KX1Pz13$ip76%@V$zg20;sts6TtZqJlxhhA@Xl=2Uq)0~Ti+hjLh4ofNtN*m=WGt=e8(ISp!6Z%os6#tfe=>8F zkJhkw)cP^ur}PC>A=jS2Vw!Sa-(^xiEyAev1dfVnY+*0Fu@5DfZvwcPPYwkt2&`D9%{l6LSrLvE2pBg$F%Sn>!V3w~C@-K0q@gL2*pTfIvNaSd=O0&%&k z1tC~tS}cccxt=&1cwjpie#LW5)i~Hi8HzmjwtA}jB%29Mhh~@P;S{K|I?`e~ARK?2 z>DLhH!P|oSNZ%+Sy|n|kS$}aO{aM2gB2*%I8gIdE$ZJ_CeI~<-*%4Ntp})lm`&WAC zk$A0ht1b@*q~2iiBP#XmKu77N__9;q0406<0mdC} z8ztLe6MVn;5+1C7+Q>_OvL9ru;v6tZ6Eith5Q7e6(WC>C=4x1XPN&&DkP?@OrGdPb^FkHNVii3zm zcj)FhdRbi^8+Z#MH-T-@b-P=yE%P-hQK2=r_VtHJX5w3G9%b@@`Cx{>S{R(}G%_yu zP(O&EWKV5{%8`^WED!^vv+o8NJH3>iJ8FxzUwV@xkaN}AhVrMp#`NDCYUjs>}h^XLo;1aGEO+Vpw#IDYNNqoyeTh$_EmfBTPlV{LU-Ks2ep- z0{pA3{eJ2tVCcxYb0=#&*etL5>med1ytNW_0YsnFS{+maZf-(IN*Q%GYK60U z)g9U|uGBh@vOJ#W{{Bg@hHCoWVC^)*!4FVbpkdS*8XuCc5d;lX>VKBs*6A%O+8}N8 z8Y2g4C0v}oSUQi|9##-j%U0-VKDF}~O1Ir?)1!LM#ARx4X})POSIsy~ zF>oy~w)Xp;erNhe{{73t@{f}b?u>aY*n9~H)e%6O+1ROL*xVT1NfTQ!8I2#OtKihA z#6kEiJhQ+MjOFmLI?a%R`h1?q+vHsf@VJEZlU*YraYW*#C3j5&>a{#R8)b|AJV!KQ zTLvl(9aVASOP8s}YIV;>;BGx(lUUGLEnGX$A4=Uqw}ClK#2615lOd_+@uN%&_`>% zNd1*x20T14pfw$8l85E6LS}%q#gQwJ4;X|hjo`^|z#Cs{X=61K+YUl_u^u);?NIDF zTh2(Qcvo!PK>dCfA;fAt=`I)aRM{$YhtJYKx_T{T_&IZVw-0v!JkiXD`ADKim#gE7 z6)9-^cCrDQUIDelFeK|-)nR(0c9m|58x~u2hA{M5I4Y<0qBA?si5#ZeCm@mU?Me>y zYF*FNnvqljUQ|{@@Psl+LzPd18?vG}|7|_rYx}%Gg?=dXme()sfyo(j1d>`Z>byU8 z`$v$!E8MyHPwXE%lycWc)69kAZV!CUUljS_n&x?iJk zo@)>Z;1w(i;GN{7*y;&YTX_M^M_cJ_Kse%1G`nui{ZEK#*@(1@@bbIT8isgh4+XXU zgx+HG!ulOnjXSyK!B#H0rNIobr!Pv1 zL0f1~#8(a8j;C+oVm=bqXbS#KyB|JPv(9DG`DY@m6}utu`B+-)BcOhg#phpTsK>H@)|0A6v>q?Aw%@XvPpn}^ zTm2`czl-&zOh$wZ)@SZn7wzvTls2Wy@f3&mzfJcUMrhcjiT+%PLVY~C>P2&^bUxJZ zSJyAMEdW`J$>H(SE_YAJzTIIrxm{v)@*M)sOdziD{hXLp(;N zF}|GJ{$DX%mnZu6_V%G10q+>!-oNw4jrqKq8+}%*q5D9>SM{O#DyMOIwT>d5#C?QC zK4BeqL#aPZc!OFos~Cwdj!Q&WOZjaLq@(_`zQwUr@INuTXgXK}QU(FLzyzw(rynLb z2fXa8;}M42;i^(5ud4st)D9-W0UURh_!Y`9b<@ZwP!}eS!e6(pQhW1`nt2a}52U|y z3^n^zdpHGu)5Q5ypZD%Y?0tOB*za%SXQ*3F(L7r-4|Sp-#D~Jag7w;`3SyI9d%&oS zl6eC^c}{GrD&)93PmTwCaCrZ#2$4}j z**M&5B&dk{@|p_#(*iS2P~Y z;%GV-e>!xTljPBtY@TReu1KB6j1~{^W?$Dde&U!5RQi?j2We8^q1$no?Mbpc)gcni z_%zL*=ee^T0%>WWR=Jq{*{HHHWi~h=AKP4(E_{hF#xz(~qXkewE@ZKxn)5yehqai$ zsp^eGKU9e5nn@ZOskE%3N?Itld=PM%HAo3(iezZu20geGE!F1vez;Xf5W8=OoyoEY z#*o^~Y&XPM)V3hYxYR(k@fCWYJdZK~8f+528dWqkwW_TTY&0?bg^Q{`v?Uxf4MnOS zcPxauJSDc=$=;5xst^s*IQ-PKRv!6OViy=snJ0v5ddaDfGd<6j6uSlp5`=yC9JjXM zaIoWNp$o$Mig<&KeeEY`*h&Rc83oP}jz>L8V7YWE@dj^*^LSatU-GZ;*wKU>IswOFG*`iS;wLuvtsIZt9AJOMnrRJ9G zRHp*$Hon$Dn1AiL9KM|@B(XH+wtR@MH`C!-G&C!LIuSGXEwEtGYag(E?Kkbl8q=cZ2|U-*7WX%N28sdMuFj9 zfvO-n%=8TclvILyXlms3>7XAj%P!-W!4$0%dFvdHP{mj{&QW4XFv8X}H`akI0k6QF>h z{>_%iww{q!ni5WPs8S1>SbCVx>0qS8)kHo`yt&e8Y5oMX+CmN^ou0&K6g)C4HfG8P zOge1PdY5hqzwHLMeZ3-Sm-u7a%X!y}6q$t?Wa6B}PN~y32St*CQ2+ii?m?3$0+nkR zvez4jv5x7AxP6{|TBXXG##@H{_B~|_%A-?mk`)HBNV5aZXr1@(s`#6HV%3IB!@E+U zQbs^A`eus9Q7~T;vF5B32|{f zrW@SIa~Ap?dUsIbI|FNdT zbYk>z(Qs8PnDKH?alqF^u!Zo#gb|I`Fstwz4m!-9b*8ED@Wyk2P-W?<89AjH($B=~ zC&ZrvqXDRXU&I-vAN+kr@~2FAcnd}7h^BEU<1_RMI!badzCF~sN9D*QHbcjY#6993(7Sb-2WT6^GP5?=Y{brtDtuFOu(tPH3#ia zrX)7v4pa@ICK8go%4TqGIf%`iQq|^OVCrUJ=Hb*6zNTuk(|k88{W_X4f`9oPkdLic zPtjPsHI;3vy#;+N212eYFhQ-xmAm!d?)?IKiE7VR zd|wgxq! zLjvm(M&lIilma5cRl$}DRO4e3v}6@fhUBeW5&ooCu6?1 z6Fz9&L1r-LAIwNZ*DY()+_ns66lw@*xq(Y^PhXg>sDG6?0OkW+-Q47SqZETbZDq!w z>cGBu^TNM~BZ2_dh^oulWMKHaukFslZmM&UMD``SXzegINsYK&jN2W2yMqq9okO@r zRJ}V)v?5bhS{wD3dKJF9&sSmQ{)y0Xwxa$RC`yLLaf-sf@jGbfQ&w$|McVv%Lt9XC z<&vcwDr*7Pgy2%6lgUf{jhL*m?7Pj8Fd$^UqUM<&-B^+lQIZNBcX?yeu=Sgl+#jUi z60O8=l%*pg$(_A-k+ZDZIHf+y?941eGn*yQG7O19<7R7HP%I6`Rw9`?g2 zA6wS$4}QGe*I5U+PV2exelIcnd1*LzGM7hvPMFV62s@dz#0%r$25zm^-hqmRfgL&K zbe$e_P4;}b`^Sq-xV9zp7cuy;V6^1Rv0ymQ$xyCCL9QttSOo4ds6wyPMN#yDHy$C5x7JJ$(m@Cij&35DN>*HSDxJ)*pH67 zn*T25`W|B7A7cMmVJtT zqiRQf*gpE2sz6RSeW@S!;##}sg?Z1PM6iu?Zybb7IW?Ru=Jn3GXsste2XvV@f7{TWp@A89gC8+Wv@;1SDOz2)!6p?3UWYjxKXQ^&qDqpJY`C;fOb@-jR8 zTw4;#gWl`{6$|=r|Fqa)hzV4(xVp9$qxr)7WpptiYYR7VlNd2^f%&yCPG`W{$c*$& z#Bg04va3iTKSIzY4O_CdJ{wBJ~MuX{M2+FPc7z7Sd4?PLw&5e{|SZsu^f z0wB~v1zRuNr3f2l5Lsxf6{sgv!NqoD*j%alNQLMxE;-BmGO`Qb-F!6a!m12A=O%!x8*25N>h*BSIOq&<8k>HWg5vqgrd8P;W901^#dBvfzz;vMzB6Vs zEU7+It(O^<=w#k9V#|Ms$erZlBDTS!cNP{060id%h~tb#2sFbCy`lG+FVGBs$8#zt zVahkk*d=7eeAT7nO%QLG}C&B9uO zQq*~XxY&=3&wGbAc+4q~A*^_gF*BFzYWP7?uHLDVl{rGOw2U0RDnH}P+L7LnB)hn!#3hYvX3 z8-h==V^VT;UsAKD!ugO|sLPSr6B|JN`_z_rs(ef;kXD zPK#p7)f>6Kmhq`?x3(EbVk_Flr60tCM!TpG~yOGo2Y8YfBdmt(BZlUgeff7Tp8sVL@->onL1j6xp2) zTcUTY93fOn7G{w~pL2~c&h9_Azo!kFY&={ zBg39#R+C7=9~a@O-A%v>hV*9Vz%Yn0v0}yEr@z}wWs^3W)4MyWItfzcoKV-&(z-4` zz5kf+vljCqeZI$$=ZU5kgj;ZACJRz1`#V*ztlk3=>^H7%^yN3qCj{FM>oQ-GnHfL! zI04zNB~1jP8+-ZdheoZPN2mZk^AVXKn+#~qrQhp2v~06EKSm{&W7XqJMJ7HymyrA`jZq;Ojw!8Ry|S0NYR0wOa>^qK%k&~ z0)2V2_+3~?;es^aGcA!RwKiK-=8Ud8q+XH>L9WS-YgVvVj%G=M56jqu)tOx?0@85zUlN-!P4)Owi(pDxg3ZbXHEMHkO*Yqk{90hpB ze9%-W)w@+Ur~8~d)vMX%l3m1i%g@sT>MDwYD7y$?tKW*@dc{HORa#D%33YEED z;fC9_X`5@gqHpy9IIK9?Zr^>+lRrH@adqUHg|5}P)|4cry4xj-xDY|$xowqNRAVR^uV|N!?kFnAPr)ARK1|$uNSWdROzdx^N)cT z1>JMFAx*x)I_izo>dm|I#W#Xa5AhD<1)luQ$54Fz;Zb!-gAOD8(c0XZy_S=*82zH&O+c&Jc0g*xxe;4_Ri!EBTVeYS%HqO(Z&5&2v{BAIc={sHcDtsLx?a83Vv8bw6>e^H+~z zlYIKsnNPCPeu1oQ*A`!#^Lp`GHXO13O~idvyd|^N9@M;&ot&#cg$<~mIhx9iIv}}3 zKx>c0!1w?pa!dG%BZNzQ^M?L&${AE_I_(*kfRC-597MqrJfu5?*Hjf0~|tP zdg;d_{^?80F$?j%mEoG;kj+dXd6m9WUS8FE&9|A<|O8ZU(%s@*sCd6I4^G-m7yj@ zb~|6Rv5LF2cnQphLc}em@obb4!56s%9YM#;gwsEI`qVcpOdJbvS}(+Ew-$52Zghj{ zWWV~J{5{*E9G+A!H^68IO!sassD?rdcEF5Z!inT8h1l~j7k0mdqu^?@KyH`pORYmp&0J&(Q-8W{x zKFoakmTW}p9K4S!a1FddJQ0IG5kDVjT40Wh$XgnsZ5Of)Udgj()T%YMPqdpLEuUeD zMcf+3tG(Q@aMMiYB#N^21bVRbu-;nK*hBKvqb)m)bVMfe{`5yq5#6O)To}q-Yi ztKr~~nCUyO3-ymlm<3>tQSL*Nq#r#K-R|%nj{U+gP311GpXAxbC-Fg z!_I)mMTc?{U0OunBOo*30l7Uqp+Mwe6`AvOuCt7+L@bIWSsMTOjW)50YT_cqSvFip ztm^%0Tuo&H1=qNO%rwtQ-7|7^)3DN8bAa1AP^~|~=Q1sKNJjs`+JgIH@y9pCB3s&P zXO^Xeg0}i$+ftN6bt%peyY8(|W%tm{+taRB&|Pxp{PGfCGXQEC*j=V3?Nj`Qv*~gK z%^xUI4!;I9l<*EpoIqOzo!u2b7m(5t2Gj>eN{!m8e8*edJOXm$2F91xSW3`TP<6_1 z*A^8SIX8ELq`w@M`vx$%6}tKHWD%X^WuaIjpU zM}31Ny*A+cvZbI)=^~1N{A(}W)UITy26sWeC6S*7@A7+`K0T5q!f?mn1rh2vK!?Kqtlk$ z8o|7u1u0NEh72)3_Cx!vn=_&0e=jZWFMWDe0UHTju3C&jRE#(24daM!Zuif1 zU0$uaWX40~Yr}sHzRdr?kd?>K8()+#LrW^i=#b9BGVL)R?(9Hkd#Mq z&^G-eqvEE&MQRd-@BdN+GtvdP{N4Vz`Hx^Laobc`K%@wlckUejgol0iKX_zC%w zw=zS&(4r=LQuXrVY4|O`bsr_s2sR{HP2g&T{P|v&cz5ju+^v$|@_e;GZgDR=*!>GT z8eY6%%0eWwpm}uu@Q=MWIDi5Wyo8kID|=jK1L<(L5r7(iH?;%mAfxRDxWycOZJuNq zdka`V8~?Zb`}SdJ-4*~;2Hr0473lv__ttMwMg98l44u-AbV+xELwAaFcZZ~e0#ZYl zNOvgREg~HvAp+7Z4U!51--XXP?>XkGqd-)*Il1PfGx10qF~Cv!<<-v zO!9uUtzhy%s_ZySUdQ0@zKRJJw~5P4R7Hif@5zJj9fok10MsWZ*g~bCgFfGe(>7k#)R||C{njiVWjR> zRm-xd7fWu1F|>LtGTM=6`u@syPZ^d6Ilco|9R^;sfWUr^AJ0ibcs2e?$5~$adsa(& z=i^@(FU25`r$Y!Zp$D%Ul*w+8jE--2;Hx~{b~LUIOO57Hj&0;PH`lV4#MHMdTg&IN_?QL}SROuEyNc~Iu&aByx?_P7(mWWo{j zuW2h&xMRLuRhlsOl)M#GrsW}dviU;ep?pQGlpUITFvPeKS`dM%OmN7LH_oCsvDsuH zgitsOM$P5jx}`;}YVmsD>7`O$7BPq7_Kfp3;D_J5|JAC$_fK>Br9LPlvC><{^h)w7Znm-zgwB z-y>f-l7{A}?fN>hVd6<=RHShRX4YQiME45V`ZRAeujjr9zj(Rf*hDFOVFQ$Qf)SrU zr})3N?UYtl&q4%iSqdRhjgbq{k;@6{3Tq#=rxqU`N8m<>+}E!#>%#k^uX$pg@k|iU zO2v-9!lq(1mj4V`%L~a}exV%ZoynT`iAmsPsISInVndpY58Iz;7^*xuLJebho1`#t zHT<h)+Bng*s@ACCGWeykO~y4pU=-_JGBl?qHUMtD?FQmVSL)n z>e_>!TRkxKy|v+Q2Sge1DBnOeU)mHXp~&kuOHcR(f!yg+>%l&f{t6+72og*k{uZMF zL-Iz5OgIzPr(6>4dENG1_N6LQ&IpDcgkN|geb;Vbjm9JmwWO_VV4dUX8Lk|U)<2gu zRH=sB84zOfOzAy)!Kb?}p{c^RavXgC74k8Pmc#r+aJdg$tSKZ`L0M{c~;>)P07Cm zkfR;1-?0xZ_GjHWxbH&>5lge02Ro(1^=*)bUOYUtH2o;EhRD@2M9XU;eAV{isoxOU z^w2C=lHsmTu=I>h-Am{L>8R@UE8K~{^cUZCSIs3hSC?=Zj#&UJE{{Gl8AH=8g6isXisHy#D0UPl=Secop`N(X zmd*C5?y#9tOnPaPseKKcbI+r`N%`J^}<7w zEdxs;EQzo3_}ZTiI*ug&I9;e0T&d0OL2w?z755sm-YZAQhe$$rXV<&p$ENSAM{?r( z4b$Z^{-uQTlIOCG9!0rP?Gv(_bDNAA0_I4?X{b08E*aR)BV={L;eh`IPp(`Zv&n-!y~sJUdSc!ad!G~Ld>tGDsbQ1q>&9q)LZh_Bz{R#m>^h_N5M_%#@&IY z|9;n(q)t!P9BvrD%L@IvFDLU&EnOF5jB%XB=n^FIiwi$(*^W?~@97yZavLp|#q6c2 z#~>r51%gfF4WP*Fvy3~g{`BHJ75Cy+FJh+m+b5mGNqU~sCB$4zQl{ZEo=+V2 zz3t_2E$mAGZNmNSE}T721qmJ#OvB`@s?w)Nqw?sLLYQ1o8EhuNC~H!;I(COz5A;K{ zeiR_O`cpS@9QacVHNUl#bI{6lIhAH{U>}9?>fU3P#GYBA8W?d}2+ijl;nS;pLd+>(^p27v766F6I6iI8Y;+$^?scWWH8X#O=J))Y| zOn8~Qr1<;N1xo+g!s%U1a1dh7`=4qONqKMVP?HD6XPY?#)|`#xo=bD}334%rD+UE# z@NrL;(L6`uox=3^^&D6RNcAC5e3c9FCNpF54cvFSNAIx@lb-F>_U*uhKjzkNtC(F+ zZ2&>Rtd%K7`zy^DF&n|pRE9N6n57d1o8ED;&@cQsLFyN7_asA$e`rB-5PFN1 zOMM+q1$Wx>4`M7*t%aK*yF=A#eHQ8~4bJ(y@`(X#Mv0QFJq*G`TFiBjU~4vbtFP^j($;3mOyk8%mnK3$)9cojOltrQ@((E zA*+E@=2*$Lj1VFN3{-AqNOL zMJ?1nGQJM_eNxH#MQ$w?T|*TUJJ#BI?HMv%jBSDG_;DDHK*6a3FAs*ywO=U0E3iwD z3})ln_Mj%4igaqZ29I`v1^Olh*JlE+&A z66hE%^sk90Kh6*&aZ7uUq%}7;ZzHSX!`ZIJ57#YT#}Gw+BYIAVF@;6mS}#1rrp_I5 zAfq80*?rBBUKeBU-(g#NAUx~A#km-}HAW^8UH@Aol-*J7g65G-K^U8u2Djldz$*X$DXWq!~_-zNrnky>{TyYXA4pJ_C6S2 zXdFe2QLIs z2~K-SG`3uvr1L1qx#9=EzLgTMvaPHJ!%rUn->>4hGa966!;t;QNtc7uk;`lV933H6 z>s({rf5r+nWd+}(zcZ?D9kd^VjieclPVQmytz5R@c48pT!j(Ew z)(C5^IUtrpbrXC+x>Wzi9F4f@HQG^q+b2CouPhq@Y&-LPI6s*SbCH!q111FKRb)DN z@1Zqp;dl5}YX9O~_B?%0@_E;FbQ=C29z6r-?b7k9tBE6rZ9OKsPhPB{DTM1ICguF@ zbrX>NwlMsEotrBUrcjxw6yYA1)*fEp#}arZkxkek^Nty(!8aHaMo;$j(MQI$u9=sV zI}YDh5xQ$dB1|L)e~uvit@>hK2-KP^^-Nj5k8O()-eAp>L2z1<{?Qw))@Xv3n&6L44#ZJe-{qP&A>DSdziWWNGlIZf_MGQO9I{U!)Uod;2i6~0DlzV; zAWY-K%%;e0l98L|LEN_)#+h~7CfIR23dw#(t_S!B5uf$lv*W6?LEn(}B0RsASAe;b zj@tQxa+ z!xtn58d%Y$?KnB?^Myzp0h8I+8?b`?f#8|mC~;SO`nxA)VPy0|roU9LK33-{uI$jm zH`VH8tJ!Yq!1hYrdUKF^E66aIe`Z#~<4ul(>Yn1KQ3iP^N1y&1!7mbTi0^TA6c0<_tr;|4h02*>d@JXr_sFWv4hHSG+=bjd(lQOkD%ysKnb zr$gO@Vg*TfynzwsBQFXeWvf`j%(|{XuCu#uPjA1isiUY=p-^&+*BzK>^sUyf)JB`x zg(h`2*u)$(u>?W(U$s^7tql6#1oR?y{>4X~ZK}OcrR@sZg~x{Tvo*?(Hu)O{s;V%I z@E0AqcRQ;kp|$&cOy#iOTw=5^-Tf%>Ou_XY7?pf6)f}I?mY$###_skG=5!n%Vo8K% zOa}3%ddWCSt~xwsZ0i663pEp}H+X{hg}ynwe@q`T>EUwV7O+0mUyr#On%EDj^0TrE znO~G9j{z{kVtX-V$WFaDWHL_iBc|1g%|OT=B2?}RWxz}!M(-tWvMvz}3W0qF|0yJm zxNc#Iuw%w8258lerT6boNy&GV2S} z2A771MP&!xN-{V-@NtUwW`yn!&}2OD7>c-F{~3+^l~(C;eOMtCzGu`HyTP{2=9=aF#QNs&)V$$b!NV;9k_hz$hC1@ixC=t`oN( zsyjdXRFzP;1h^ZX-8~1wiaG`Ar0m)P0_kek?V%gB=^JFR5c?aFWwL;62!>ZRcAp-I zGz%v{k#UbdUM)k}Uo+E3K90W`EP2bz{+&u>++vb}8{$lzGuSt%SHLVi`8h&*28mzS z+AVuty@0*TW6YgrZlK(c_?VmK<)e7}e1En3nApUntb(A|iV}GJ^-Jmea(%or3{nvG zdSWdrNHpp1yPIR`-)4actEgKnFbR_GTrL$A*d6uJt61ed>5ds{FpvF3t;yT)dTA56 z9ch=Y=Hppg$3@;TpH~O4%{R+)_vUX!@gBq3#}J@!u5B`H(wkYJHsR2(rW{FSyvtAE zMP6+_`?LwE{dDoVt$kKjW^euX%5tR7G1BY1y9-$)U!H`AneQz$JaawNE{V;}J8+un zl2cd#G(?C94QxOx#*i2x#A+F&dDt!TN?cv#BzmyLJTQQ=)zMIJ^^dtEjb>8PV^1~n z0`*en^;mtWxp_Ll;FuN9kjJIw34iYIP@SePcb)Y=#xyTx<)X#(Q96h{W$Qj-8cNWW zrK9iWUs8IOFY8WIDc>EN78UbZ+Mw##r9+|&0kR?qM8;Tu-4BAx_#};mvk+gnF6-4(P+U|nNch<@mw1#LxFQw{ z_izjQaihYgIL|d`H-2Sr|G*J3_}wh+h$3DS6Ch8iqtBM4=m}b0_v(GY`0w{Ai7w9? z&`(WrAt_q|G_(^`B84|1VuvdQa&q&Y{$72Pw!6DLT0VwUUCAy>a4@|HKv%YeIg#LUQ{VeG1O-~)%Hh2ZdCA?w@DCj zx+qStrMYplQh#O+Z*_(&{@sr45%%0z+joX$W70D`1nT2Alo6MSEHR1ofD@4i+wVb|_rZ^x2JNcobn~E1zUTlJvsL zy?(@i5(%~=haCRX5n>MokHwys^jDsX4N@XZE|UNVIWOmXCtI{7^>&|>GVz;l5gGe2 zJ_33}*u{sI`Ri8oM|E6|;T}z;f>cXwFHf^3>;E9#+@J`#QbM#2m8d4cw0m9QmTIu_ z_B|4RhF3)>>5fvgSfo)FM_o09rk4n^hU$b!>a<@&jvpt7nLc5ub!SI5?)f7hZS` zHoN$!C#@Jlc%BouzJp1Ytzgi*aoevA>igfCEg9-r+#9&D(?8O~6?~5^MQe`TCS&Sh z=P#unP4HGV&v_wq?}Oa3)eKs96ng{AZ8~tGFPs5KR18t;^{8Q!Z|F7L*$>k2r_iX4 zNp^85$4fAQCWeguNb0ckDhzklp~O}0(Z<+5oHTT#zPdS_$~&z*@5VIrvs$U!_9=0l za@`{O`d*_a18|Ct}CZ&+? zIgjM+bUa5S-Ur3SipAL%PZEB0*oCD5ND}L-v@3~ZuL7@bwx%1_ zUzkW@DLz|!=Gy38vh8GgtCil?6g7B|bv@}6^?E0HX^kc%UH%xjjS@11z<~KLct7iB zK9dI|^Rmu0%4_2wC(~%lwh*;A`w_nA)7)I1N#Q6lbT*uvS_DamUoSJg_UqR3Em*Z( zFy%`7t9s_AR$SnZZ{)F)#9MA`^7~6D?b|2-anmxbx6H4yDedq#pnd9^ zCdWe|V^B+vZyeEhoFK>z1$ZRFjQU6%zY;RGR^_5uba4^|9`oGV51jlt8B19qS1Ga| zegFHrfEfVdskqag<$P0!9}8C@J%LE%bMSy9l26IV<`Tu>9+%% zx1Ajf>_R8We8#@u!i0i;I}q}OD)TX`Ym>exNg2-awX#9UXr@BKVE}P@2KD}1e*N69 zic^025_kl-y+{Q3a@E?s=tG=NmIYPLIa7=VKlHklNJZ&=7!gQe+`-eThXd7K}yLqNpOpqM3R-zg?(9U17RD? zy`Jtzig)=MWMnCam#rI1Aw>N^qmqx#%KPYReK#Xj-iKB1PyTf3`5nJd6WQUWXy(}w z6%m;AEg>*)HF`FTmLt*Z2kdn3~um=|ohkVO;-;v2Ng$J!vipv@e@+KkGd&{u6 zRQ{HbHw~bI`;t)ol1GEQAvZVK+p!VE(d&zc?vBYH0Si)rP5_R;83K;W|A#yyz^TCM zXZHp)r3svvHszvioAD&YY%C1k*!|S*njeYAHc6H`C!GuhqKxG~IwW4@X3N>A>HFv_ zVWZA$Q`G$C0Ay9>WZoK^nrzj-tq5n){1XovRRo}7OgjfTMNv|H|h2Stntfgx$&}RE#(ClGN;(iW1sz^bm3XpV!1l4N~UoE86E+Sy~OPagF)iSE4&_%o(7^gewSABNk8ud=Gs z3O8gT^AF&ozw$+omjSf0AAj>^_0^cJBz|n%JZ;tA3CiiQU@DjldUUX0rLuI?L5-_8 zt)@4Kibxq<(kpj+Cw+|$;25A&7x=9I?d8C80#pU{TVhUo(N3nVM`gqj^vB}?iL%yK zIbWljr+|-x4!)+7@I-H7+y2vnlt{P}g# z-erlFFB*DigTO^}De6uq4@20^m`*8UEsXJorfF%Mk!r-%|YsSl1yd8;Q6^8O`037X)X?kW70)T_TvFFGE^px-f<& zV|=L(R+J@;zr>HZzJV}u0X`bN=)Hx9j$KT~%M1*PPd_yg2c`zDIc5ly8g0w4Sm=NF zcpkLGD;h6(GT=ijgFWlocpx?w&TbtO1n~97wp>G%r9nAkn>uEs#l_*sBqFUJ8D~j| zgHU^8H(aM=mmL}rvL(-6hV)dCq8lN`)1l-?Fe@%Ee^L4r$8G~=9%l(2=1$P>jl-^Z z6AaO^^Dvv4bvr7tw&v_+2^X~eSfSGf;nNMwe@hX zf1e7(ifCuUMmeY=<}@`^#%_%>JhPbMkQY*CiXpammGPy^4Xn;H0*bJw?79Z=jq-!s2lB>4@t166nAzVaH%YV9O@cA$&aVolbk)p%dfn8MM zPhTl2UmvYLJEt+?VjVO)zX33PdLZCA7Ec?RkPfRNivff708*vCQHQyP&Gj#0n!}l@ zEv_jcU!%w@!>9sg%Qh*qSMttXpr@$K%+kP-qq;mD#XKy%hhZXZ=zZjqr5v0Hs`_iP z%1<|-g;q7o-<@_TDk;EN7;c?<1xFq@HB5aqZ8CEF0;+GSOd`Z)@L~dSx-XyY3BH z+pp~F2bU@Oo+W#)*)5ZJf{PyeB#rbN4TN6h$20~wPENj$ZMu!<7B{+4v(=;85eq^W zQ~XM!X92enmC#NiKt3h{%@bB(2j=fw#X%Vu0(*H?dn^{lBFfJ@*gn7Gvnx5Sgi2-v zS;j=MXVBqL)i|Q1f#b?=4q9lM>Q5U4XDZ&IWM}a+VqRx&C*x<{w{@aOB<*}P;6X$} z))mqo$-mY!q~n*%<`s_n0(SZMuI~`D#b{a&RG49-^dO;}!zARY%?lSS@!5`e!8tOu zm_PjdqS=+YZr9c(>96-LycMmx@wW?n`U_7MwkJ;0hiKt|^~+d5F95s&kjZquHy}3V z>;a3wShNY8@TOjpY>FRu-5goOkc=|=TDWB&Lw_uEJKywJMKz#U4OL7N z)V(|bB#2m`+ZoNJpwUIrWmKdxsq5qRC*2LsYr%Jlmy<7nIb^sWm_vS-2U^G_^=l45 z(4>%X`-J*=uVPEl)KOL{ZW!=*@XXj|7)k&QvR;Ys_xTRIR(qzHd&Wc&X;CxO+`GFr z4-7l#LTw(K|LxEx7VIy{P5qnfxN&F!hK%C*cY#FrH6XRlpnggmOFk5T0JE)B*Q}d_{t1kSLNa+pCP(>dS{{Gt)RZQ*>%VH=oOjuL4L0$%( zF?l&te4<|6x1I|`i_5BI5NoD232$iDDX&mQ{8s0{Y;e5+ktJt^Nqni2$S<+ELw0#V zmze$xm5*Xdf1}CvV!)aD>_;Vb;b?n%;xiFjQCq|5><)yMQrJY6^`*gXy3Lxf@L`TZ z4wzlR`^(^Qf)n}CWh69x$re}B8k=L#A@}ve^lGy)WhK zRMkx9H)RbvPRc-Wa;68VUkBF0$_%w4={{Gc@&h9s-dUy5YOtW?Ps!YOnH&c7OI#Vv zjGUP`?Mfs@le9YdY9+H@(q8FO+-)*H74Zw3LzO*~k^74-`F#O=ku>sW@*Hbo-=0`B z48f%$PrdUfRMpX+8j-ce_>$So0rxV3) zqM=cH+9x^OOYwcc`&2VefQ7>bufl`}U&nN9LHm667hS{_pMj6g>+2?3T7n~CA zVa!$bVRhwUFBrG*Vc>W0&K~rcGD z{{C2LHfoT8fj%-sTB8mJwo2A4s^P^57JQ^Ni$;JDKUZCJaG58H`)BgDbR-Zjh);85 zB(cZt;ujQo6C*#}|AzC_YT_CY6{^A50*Lt)E{2s}23lYIFC8L;M~oTRe7VGPsc@dZ zr+vUF9EO`a@XF~>H{hz8;+Cax`23yyh?ML@ODhI0N5tq%v@1t$anYOMb&+n*@fdg< zzT!B07KJzilTX1?;J2mEjWddKK_)ureaVo7B-z|TMw99)X1d;XtM2S^VY5GU9c}cG zisI)yBj0jlr4d(pw5-@>f_|kJWbJmwoE&AHi4jLJrc>fZYdtF{i}HA9ve0f^f_&i+hu+^ynq%V6ZmRGwe=F zGRTph@8%14eMj*}G`^~xhHB7Ag6+%Ihg$^R5$j*$<+<=SKr6oJ0N8`cBoNO|pUyW8 z`DvN{bvRVYbIVsLnUk?ZMKr;S6WV$qVnocbDwjU}_|f`FhIJG8l51@+4(Lzo@(#Tk z(2FQ@*qZ8KdemI#{WLeem{~}~z%%&hmtHB)`!y{#BgZX{@uAKZK>32&N_R5d_aB5{ zW4PY2ZXA8tD@`vf){QGUTuj;Pp|1O$8gUooM*-4f-e76x82PC-h(XUX{sO;7bf7=e zUp6nDBr(hAX*H!LqHW{mVm`y=lccYeDsI5ZljsUWVny~`N^1=h!_O6ZtM$#3L9VmD z68*byAFtHu64LRdN^9~eCJ7l82Wo#h1fO@9wr=Ys+g+$gU#X1ZrX(e}?bo)|DWS;= z>kG5ZPz~(8k2%m~uuV)AWa_=POQX~EXi4kX@k@(c9I2LQI{I9p&O%qbo@=B!U1q1O zbEKjndq9D#Y*45akF($W=-c`Zys=xEy(;`Kf~AhTYPJbPn_RgBNFKf4jZeWgSG<&Y zrYL#Tn^gn?Rkd@%9AtgVWWat(xk`~%FN&a(rvLi>>h-<*##9EK4iM%=1bGn(zw=z7 zvkHOHpoBErzJ}avj*AjzMLd?UJvUYTMdB}eSgzQZUW#0VPg*r3@C4|c8h1eATuuF! zO$~3}y>z$>LDdL_|6`SyMMLel&BqxPLWZ<}S%P2UGftI^zdI;a&XL~FbC>m*U%N=A zi+%3X{`eb(Hf``5!P={Cei0r{zD9vtL6yesbsq0BzX02pz=;a@l7CLsp@BHThgJXo zhE-Kn14$13q_5L`WHni84WOZ1h{nu?aH2u^l9C|ae4XsGK6S=~01gnMsiS2U+cGNw zTEYahR(+x4;9UdtQNYU0GD-eRY%>?t*xabYzsH?tUoDDg>)isj4$@x>_|wtuqNsO6 z5>4Jgp5N3dZp9GDrOrhiOdjilx9>+{H`Ltb1?QvgNbufgzn@zDaYcG*Cf7)6$Hp#+ zQvJc+C)!h;M*}NWCwSjd(>31}QL~BuQB5SE6B<@jScS3mQ`j-NyIG>%(g~7`%)pun z9=}XK{vMAXhg4|%Sqe?nV15I{d03dnBEe+gwN?rhycPy1HK5+eXPYv}wK$qro}tpY zWi{Mls~|IJqBl%9DECZ#5P!pEdk+i}xK{|AB+tg{s5qaP&QCoJ6&x|4yveDthx|30 zW=((dOOGvxuAi0xI969c5m}2RM>5oRtK3oS+-vZWIbBtMOFtbtsrl@1DqR~_(!1aKd)VBcN?yn&zN!-?ZN|$=i(Asq?S=6IVNCGb((A0Gp=YETEL`^aE^(s$y8jalY&Ssp_Q=gNK6eZO^@jxK}o?ifW+I5HsPO|g{&h<>mrcKI`<$j|T5UuGt< zBT2A>$}gB|M&)dP$7hBoX*)sYn38xnAbCS~IrQa;NGdsd2@bV?@rg6jNNI-?=Vy0S zq1rKLbj?rS3TkE1Rn~jn!%Mw@Py#|U-(QF#W@yEP>z6gKu#p*zWswL}FI39aeX(tF zUhXc9ydsq(muqTeOM>W7N`BsTf8a$ZqLk6~mhF`m_fHZ1ENq?HVv;gArt`-Rh)J$I zla(Q(POL7SRIfOBe(Sy3(tA|xyi-zd?k zdCqdKD3yNLl88vaY?)D@4)UsnA)?UK!)R@QDJ3c$Rs3;C1xJ($Q;vttg8rzY0|_Lv zuKt76M!iK%Y`>ga@po#v$Pf)pi72f{iJ~O1+B22w1@em}pr@kZezUo{nRG6^`e5!q?(Cw&78#gr?7t z$f2eUDaXCDwoD;4r}#!-%k(Vd@=*w#qZm&GGAe@hqR7$8=~IujzCO;*Us(Pwf2+z- zWORFVSO2_f17~`Sr?=4~8RNhR)5*QvW3}gy3I7-HH_#V^Ru1R_$7N8R8p98W*=ep@ z5?wEWnKuqi1tOcu@<^G=2>Rv2AQk3eZC;DB^*b?+uOw2$*adJ(Ep!+)xvfvHlp&h6+F!P&LpK=KX4A$ux4s3|K= zq@lYp@aum2qP9j~YQM3@pTgN`?;U}DQay6W2WXP}eo()NCu|GbR@vjEW99Z}t!;?p z!(4i)e#ZU>)k-ePzi{uOc^Q1AR^8X2YUTwoh(Nk?M4H6KEH0nk=%6>?9_CV=g!XKzPXt0r#+7 zh}FCTN9~1I+$)2)-f%nKO5nc^_6cW%di>MOR>WaBTux}P!`p4Rc5z#=?)uCms9 zX~snlG0i%;0eTR|hap;)uSeJRbD(dL^!`iFgXhfH@a!vHE`n9IV42H4t;{G|iK@fr zZ5Fb<;g#3-x4pL_J(1Qv@&^l`FW!&EHZy+njorcWJdFwSWz^GOuEx}$vOsInc?sF3 zGbEfmRWJJqybfdq1XlHVYh_!!H7y|4-GnCrJyRu0HB*cf3cCUZb62J@tYK+mC)0*; z$W?sn%XeU@9^V3|fMc>%nA}!GJ_Ze6y8XpoE_aKgMVLMV7LSI;(KeHk%!~vrgK)?cGtVKB+RLiEn=pYkU#Xr_+r) z8gv@CK11l0g|s^AN}>9??(z$iZ}C_GN==%j6h>kxucdyYES3~D zLUz|x>j!05RG)Vh9Y$&$-g0c2y9pp2V(vr~L2yK5{aoG%R>-&>02!@p#~4NMN>S}^ zO1@jceC|vIN_0lEcHG^B5Dfx620vVoczjEKg6?6lj;v(42WJO##y_bB`~Q-86=*dl zg-__VfAGfv85w}8u-vFyR}T-dw~47g=4}S?wW)|ze|O)foG2vc3=hHa6TJr|J>5>U@>bmhS(EWrsT z_A<+tlZB%m9rm&QbfePM2rGfczpa<0G;T!*32*JWs(iG8@~(t2^d5N?KS}=yW-76(mLA#*71v^%z9>!zsCB> z+)YZtF#gKb8McEhp!BTOPZC%l@9~fKb4Vbda(DALOb)qD^XKK}eUdub5zuFTiCu?h z_YRl#(VlbH_4gVow2-ubNdoj)$(HB-kOc3rM4lNEC(Ix_HW68CnlEy+M$R*Z`X30= zE0ev~%O(jLWO?*57y`2uS;5(& zpQ>UzWpQhA)Vd*F^>?Go_soTQ0`bwgQ7`0@FpB|gq5>5lttuik?JmV|p{i1Z2#mjq zX~~c8VN^Wel0iAPoBda8(ns}qf#Mzf26v}dnv7dM`f3v6tdnW|YsO$ofy_u$I#zJ{ z7n3>QWoyL?JJtr~l56eiLN?r51K6xX4pNV$2&-V&6yIVf2R1*`TZa6Tnr%DcC^yXD z_b_Zdg95*Uk5#y-CZH&@V{^K)UAtJlI*!4tad!ca?xW<&e(m?SPxj+`A(a!PM3j=DzChdzQhFl- zho2yYtB12HA?W;1qV=*vp zbLJ-^*Y8A8Q^>Qge_#AUUq{D!=f!u~T+w2#!k0NX;!$2GQ)<5<5%UJ6s>?rtnWcQW zGdD`e`n=j4nPyZQk^EKl(4qMLxfC`3( ztbj)q7w8M74es03G0SLihQeLg5(l(6d}q9d2azhYQNq&&d2p}t1+^v6gx|~%6%GKK z#Cdy_E(e>Hv23ECnxOw_K|d{~yz%$H@%x4wTO)(%J_eDW+%h+-k-xQhF;5W>S@y#! z)0yViJv}?Bxxbiznb|SR^Uak}A~xbGDP-ipy*o1%>ffdJBI<*d*~!`**V-fSIs^KQ^|Jo-(cGNH?ApDpI_@xcbMrzkg{QqUp%Gy zY$3|Z>}E+^)e-xze*nRB=I|^)`_U2GGHI1ia1PH+Z}V1Txl@O0m!up{9z*g`I5J(8 z&7|XVvU@CpLhur#MoLuME->qG*ADJ@p&%ZIBl0S-XwEc+4-2_p7?ztNY+(;(o+Ox; zRCM6h_h)rJ58zpj5&?qHoRsWPr^Lf{fU_tQ3Yk5Xl%O~mR&7tvQl_sdV0u1hb>GC# z8j}4a+FMK_DHXN4Io--p26KsUz<)shyqVhpw&y%=s6wAubW=tms5lWav_9jsm|g5= zc3I7A={K*JiJTcc^d99sMAa7$bN{ZnWSo3X*X595>eL<{nbbECR4b`cB|U1g2OsjQ z=Ou|oeqv(?b4x|T(XVQomYGh&cH2EsTxYrj2!yU{L5}e2=*Jy6X@PI8&(>T1buGIe zx$UvPs^p9ezZam^<^&=XP9Z=2RNsFqvi&ytCtp;%8-S=b{aw}POFQ(o>w|WTARS|r z(O&jMiB1V?>Db5k0I$o`c+oQ^`*OF3ltr-~Ry1$4RpcUW%JqNq zqb^Z^T=e}PFG^P)Xzue?JK`~LowV@YFwt@q+R)t&P3pFnNSYya4PGCq>P`L75GJLN zvw)y+W%cJ&l`-oUXtIb2YT|@HbPpT#nHUke>H_)A`xjVLGkvfOst3eLFl13MA;cH_Fym11AN=Ay2_JFs2 z2^YlG=}2l( zH)#g7dBtroqn0ARGJZcV9i|<4`IMW}cb@`j{%E=1P=xzfbN_WK2o{hm&W*yJG{z_T zCiLmg*c;5zddm!aB+YIuC7)DsFSS!#<{P02Q^XuDR{{B zj_Qav2#awA4ROEvJ>gShMQbLeS>{)LkB8Ym8@-N%UVNXxbz*TY8%PSJ{?1H7P+_g1 z3mR!@WHmO^U5B0-(%qrVhE_9m3b1RFF|^@IPaG`)vkjYt_oCh|ZNx4y;b8M+OST;K z?`Fx{^KXdWyfgIETCe2ky$@h``MR8zB&vqTE3K z8-0R59ZO+$ddzzP;WnS&&6>kv(0OIy+>KDEmg@I5maov4@BHcN>1%_*qMAxM&v8rX z-^ujMIr{fD238ScB2IB`zg)9`YICMu6!#-)$=C}n5S}1PaOg+!(_MR+)JqB{ z%fjcHR)=z0+tAmTlP1uG;Q3xrl4y!W4$Bm9a5_RYCSZpkeik1EXx-z2)a0So`edcZqOf@|;(YmSqs!(v;jpACB-J5g zcD0dCX6Gn#-F1^3>yz%f#nY92kAPJVt6~X=s(9>FUpN+bqj@iKx5wrGGqX% zBwJ9018>jg{T|Db+nuNMxuo|6Mcj_Y)t9vCgIqR zh{QQL(|(2`Br#UkUYjatFsyDe*jY@+pI^*T5a7h^dUK!@q7CRPJ)>$7e$E!y6s8G@ z@fIBS8k~s2`+K``e_KGuU4W9G*~loCW(1UK@)6Q$FOH#}YxW&>M%G$hY>`S6eHLED z@5FTDcMq8_F5~(S(pdri3|p?b=;A#*JmIXZ;5E)8EoVzto=Xn?yV3Nm9r7=K;e z+=nmk@r|5MX8h$q?2-GPZF~5>^8!L(k-HgW`!U*MCHxE&=(vM+T>1@C@a!ysR=(p8 zeQHQsbb7i>0xKf3yoXj;bVTj?htf|bE2!UC$XKOM(D&a}bW3p1}=-yQEaoM}1G z(&+nbJWlomi>8@{8k2G~Uf15x}7td`g27kTPRX~1bp^Ro*Oj;w)c zJLM|ui%M8J1AX7=m@-2?*X^pZi8qp(S%0R_n5@d1h37_@n%rLLIJJR@3=)wz3|pX~ zUJ!%JH%Q3QwYdbj81jyNiJSpnfq`c_f5s{H*RirjU#mTsFfmokLRG?HNYIK}VnWJ{ z(wwGkEc9vgcl1O^&yOJ98As!Zjwu4@>U(Co8zo`lsiK|jxGh z_H2RFEk{22Qybw0*12HioSz~vRLP1n(NamvTyJvkT}*k0o9_f7K5n_8GeNu~SpC)T zx>B=Ce#F>$Y)yJvLJ7QYMEz|>AxmOody8u}h4jRqSS9f2xr%t6QAkvf+WHKZTf2D5 z_G(_IH_9`hRb%+IjJD-`?dhtvw@KRZcp!4Z4W^x3iRwbPBRoM@8bWp7s z$%bh3z#c)Z)2a*|j|34xugwI~sb8NVb9bT{ z#(_wy5AG3Gs(J?9(rm4p52zn_+(##N!lgxAqw_u=6MkE#?b5A5SH0IWU|^t;3IL{P z*Fi_fV4O#_wmBr7G{WXxNu7M%II(`f8|WjJ#~AUtoH0APyi#rK5!d&XEB9~BCp0C1 zj>OQT)|LZoBs0Y^<_5+SwvN**8c)PGVFjTS-}i3{CL+z4N?N0D9FHBh!TExusI}VVuSQ5% z?akBsv!^)I!*j1a+=4ED*hLbM%=-Cp@T59zG-w5?2uI*82L4B=3AC}`fEIt}6&7Z? zePb3whgd2MV(HUXQeO{ccb^m;TZQSZtO-`+cdGVIJJu)yOGxqRL1Z`vjD1?VZ0Yd zOwXM|a{?cev1Lhe^~F{4t+T(nl*G+@60T2&YjgZozZH<58HrmS)Qr)Bn2CqY!RH}a z3Qv*5s>})Q(rrIs;Tg1^^3Dc{B@nrv+Hasr1k)hOtDNbRFv@ zt!K9<<&*YN@U%(7>zEp_9^3Js!S_tr#MnxGM8IrivXU`xDCKRw+lkT}WMng?RJ!-5`v*jrmb3BbuPCJkH@XEi^36=yYH(F~5#+HD zn)7|4i9}21SR0gzT)W-#g-ThgyAi1|m&^ z<1xPd3GDU4Cz}Ni?H$q}DUvoah;liGPYb@c7UMbpx=mu=%GA*7f$!BQs81&CnFGTb zTn^PJJUwoxqZM`VA|;>m0&l0KA}y6y^t{DOcJd@CGXI(%!#C$YY!YTyL0peGktqMA zMpOC{QDgDbv9Q^%bc%IS8$>AbI^Av*si*G-%y9BU6GdV38f4GAZvY`E4@Dq8*NqvP zibpw(E?)GK7fUlyVTs0Qw4Q$Q?!_QNbPYez;uWU-HAuDU$L&KukOpK+7?`DcguqUDg@4(H^;mOq@AQl(C_Qa>xyP7l;6Fl>B z1Nx(kAWt9J&x!Ym)Qp0>_7T|%Myn;OBq=V;xno_gKDY)a^hPVZP9peS-qq|nOnU%T z;6lbmt`x76((8;J@QB@gH?dUQZ{XUeGlXB5P>AGwbcwV61wL7R1{WLGi^+n98sE&_ z$w`k5H??{s=o8$R&tkFkw?>Cgoj=sJbvn%!aXzzb<`j$Xk?BUB#_^@m9oNUvlU89g(ea7AE!1+xaz9(pObyZzvBlyY z)2a&W37UD#1AyKUxYwO=*3`izn9vH%EGcRIZBROLc%oZz7$D)mF%$v+W9ee!SO@a7gbReC7cv!fE5NzhHZz+7gb$i^ zpjiBaoBq=-{(bmw;OUcCphlQK@>G$6fbQXfIsq&u|6!M<_OrKSfdS?pixnOaO8y&x z_Rn-`Mb7~ouumQ-s{bsn|8l$k#E<`hI(w8={=-xKr+WkghN~muX`U~Q>Fv@y7WY#V zGy*fyVy6{Tgwt8@CWIQ38HA84s~LTBJf(48ueW+VHyCaDH9H)3)Z9=uh5d8Z+dpUV za)&?2rYvQ8jxz&O>~(%_N8?w1tHw$&-+DmstMYo*h28AvqqH4moQEyGCeJ7LBCts* za8R67gw5h^6p0H>Xn4Sn0@H>jQ>077(Qs)w^ZR4f=Jy$f7TByNn9l0-Qkk+HFb==R zgf5T6&rFwq-x*>3bm)q3Lgw&rMNYSy|GhK}{~eb-MG0;_90|dW;T1 zxDSm)R0|F2a2|64E>!TSPL79SfYDW-HLuxa#z_P2`tzG&#)Ob>EZFM{Z0v9Y2?26Q z{Dye0sCXePoKY#*WT;+AYnC4nO0P)H(8#VoN7xcnIAD{~C*xoK0-_+3H~kX=B5s1# zNwE~Ki{MO5q1^sR5oz3$5L?C>#`w-NV~HAFLJ3SS?rPhiWeL2`26rY0&=3dHFS#q5 zh5`4W%q{SnHS;v2@=vu?18#Z=7jbk!)P^MzO_|l#&hy$cY-PTnGjY0dTo?sdwS3dq zw(&2|8T0Qc9;;Y=8HDjgt>i2{s&%ke4r}hUkHZmtK#*l0oJf`JqO+p3Kcn5gfXFa%TTvCp3tcA3tvqP(Xa?m}bv$zA=MNhL4!^MS*+T`N;ctXf zr-(fo%}L(Dq>SYpko65yl~A%miMFNreT*HGF73RBiv*mp%DItuuh`cUFc8c+oy1(ogaT7weJaE(*}gx0dH6(fsOQHZspzeuP07$_X>??j8= zenDV6qY3*)+eUbjne9smHgbg6`Vdcd%f$*sqUel?DQqXGQA`C;IM}bI*^)=i76U1d z&f6H8E>@oG?-( zjt1+WGv*e+ezvw12mVP36uzU(A@<0%$5PyO2Xzif@iLwZA`P#H|b91c_;i(K5+GbKrX6ESR^ zj)h{GDu&=>tPJoEq1%HRMD;wc@wcJ+C;T}ToOuy}hC2fzW5Z5l4a^?-l690ETsW)p z_(!VCG>3*m7Tb@eAp)o&N)xp1x%XSLE8a1Qjc;p4H9f|}5Yj47Qn#bzA=_^+3>MaB zWsDXJgJKRZB6iP!E0}E`qW&ZDIuXB4L6XF@zT{Ou%#&b?${er6e%Nx<USp#ZlCf zR%tUxd+m<{L_46rtBNe6QFXtqO;BOr(yT+{>c3g0i_o{24`-`;5YU|iKF<7Hte0Kk zfpc;7$*j<=OJ5p`6rvBtx?ipBrUoJ~+B=_wrjtafB6~nd^ zgdSo_CIeeEkv<8bn>nMeWxn@^v8YPF35_N}(}3897T1#oXV^sxsBb97kW69YW;Sn2 z;Vn^g0S_1|C(R6e^wl1HmB_3EA}!R|!@2w^2N?Is^TVM+HOy2AEB~4n9wm0>nappF z?N7zxcRaeBbnTS7;cJ=r-p}&H=J&Zi1!f^5tE+A|uk96|V!*TTFQ6Am{(1!6m-zMC zAm3*o)M`V2O2~R}f{I}NP++A9DF?E~V_R+5>(O+va$+udq@wxW{{VWOjYNcpm3%4x5{}8JlCL)>aS0AOWXHlME#4Jmxxq2PpoEe`daB}& zFAi^?Xyq5%zIt`!QFgjy^>XP-PcpDe;l3ck$DjGwXIhg_Br6fxT9`>3R$`JzhHE}{ zb+0yDWTp9=c-gQ_vn-oh#*6aN+9zyMBL)kVg-^QZDfM;a@B4NqKJG=`_EE9XJ9?-2 zsXWx{KhThCvlBe350Y0}wJw9WIj|abZQ-d43&g9MRXCyP*Ot6jYfY@mc3wr_S3hTm z|8R6a{&1wje~0cIqyT>|lPTdY_qXrVN`D;xXf@#WSi0ufDGVo~pA&K#09eEnY+ZYD zN}-iNZms4z0r%eOBjmPd`OEObbLFqc=QEV=FffG)_MwKDBI7^K5VaQ07|(L&kqhsURBj=YJO{ zWV5H$-bEobUaAuO31Wi6$W-7rmP&rQp5%Y5aTtuDrxRyeIE{Dsz6f?Z;^0={AK4;( z*#(DXCO}*Bs&dQ5sNJ=bY6^}eXYyol0L&kVKCnbbz# zi@~z+c%2gRuM;l+|UdZ_Av{!NH_T1=W$I)TbXZ>{@N^s@AX6cT2V?l|Ai6mHK zREZ{P)?$l(2Bwyul7ClYR2EYUq1F&dvtTDegZ${wO$NRDqmKKdZh{5J(qv=(^i)FK zS7;x-ZXOPm9|&i0ApjK;A`7p!{Hyi{*aEGD>;?WBWJGbN@H5J9k)})yI`+H@)TiTu zgLdFsR`&mOaa!YT04!7W9!uj4rpTya)$U6;S3lGz3*2Xh0{I>CUNjVWtH0AZBD}{R zE-A7l;i?{Ikx)qg)^e=F0fEBp!W<=aGV&-%c)zBc@Ikm)ptPA>z4^-zXMRZ#wh4!_ zr_J>;+we7G0LBeR(LQtDf)n!eeZtC?ZBE~ZDFk5*=cogAn*z?v5}Ci{dvFck&YwRR zF?NyAlW?$$M^rvWW~jE2OA~0Hk2a@iS$nGfaF&46*k(5@p$dsoCEhvr3zUyVyq?5$ zo4n(+9h3w zS*_$KcVB!W^S2~6+1QhLcohU2SjdIe!U~KUbmW-0+w3IUpXyE()NKsdbIiu?ez7~V zsNYD&`eHC0k*6&AcPuNu019o}2q_%}$A~9+4f99p9$~g|v(DN1{UcQaJ65;qwubcG zLHpNhckS%ui{Cew`fazQkvNlFt?3idI~5#5p^>7x(6dPTTA&Y8I2;$89SQ2ZGIHPuzoK;%`otq=G(?(4jQ^M8T*k`C zfXJMPfj{%YP^7S1zbQQg@>0<}eEpA;{??sLFekJ)Q47!~0IZ^^fn37E) z$UUDDcEP(NA+#*x6W=s8{Rg#m;etv-5q7F?LGizu(pWQg8sSbCQe7ur&~ix29d#+a zhG~cQzvjla)Euxmc`O+wmnx8)ZCH-c~cJ7z1yTXWLjJ@v3 z=0KleYsr#6rvcm<2;mSbr@@%gzfNj=Qzr9Ky(nU>@DQ?gCdd}4YSyDgnF)!`m5;$^ z%yqRS2>&xmMPOunU0$B@1E9-TR1559O;*`7KWUB*qx=r`>q-ynw zVi9vt@N>N9!>yYsfxfe%E5l}D9 zbuHv-TMnW!d*LX}UTS*mxUFALa-a>~)3VmVj3V*i0B6da4IuD>?Ax>IxtBboe-hQj z#W^XG6)$4sIgI7odfV!xJ(!OrOB|7-yO6tk20&-Pq*3x$|1&Fy8ncu&AQfq-i4LQ< z=ydCAVw^;?zcMoS(2VW%L_~w#p$S9$7`V4VenBVgK3uB7Ld zn^z-cY|b%A9$;fm#mJT%@dvvWJt3+ZDZfb=*Lya%>NDv#BlgDyn#y)~b%(k3vGu=} z5X-GhmGhN|vL-!x;Zux&i2+W!-3j=-MF=n?=Qu6Q*-NIR5ZTA3l4o(#)x_U^4I-_I zuC_8A?Dhqik{k7u@8Lf?X(-L(od(!Y+$y0g1iFX=@=1W);dM0^0P9nhrGPz1py@#f~ zaE!Mu$r+Grb_EWhC1~7Ay>*MX<=xrd z4;_ox8)h`&Xq5v~;Lwyg6 z!57T2IElwbntVFq<*IM67_(2ayvaQx&{`ol5>`-A)EV6gDef;kTd&}v6&U;xDtdqQ z1r&KX7tNHR-`5o176c=_)Gf{6+PxAJ^x~|)Ewna>{PVHmb-c~~YjHq$O}x!G2{+Z9 zSmu2)vyA-X-VWp1B2z~~@qMo%UROWw?z>89^&Z(O``7L?YKHHslgOfCnbr*|;Um}hY1++y5N3C50&c7srOlLia<;$W91T$K;hI`pewpf8OQzV06P&lr3r&t_p(dppX`&3~I z)i$ba39WQq@$@ zWEQINy)h>AVM?vjGA8F5OsbCC)r=+;sCP3m!xfBS5zNm~F3E?4?g2k?w0t9%tSSyeaXp%t7}Ey}}RBs_VU5ZHaUe);c$<=$AiLrARIMc2%6{ zt2FZmx2V~=>Dkk&r4*5Z?oVqN!Q+q~ZmG#6N^)cSZF(SkhK&12`R(>ALn%xr@+}K< z)fu9*U-et&n}rWY^&te(dO5u~qnIgRq_th=KPjReLUx&$;0+VkjlR?iywD5lFiMLf ztJpAd1k_N%;t@Q-%phw1=mL2N;JP{{zT=&SzB~?P5UywZPd9;K&@SRdz@3~%6+{<|5vyH_)i9GaYr?xiHG=O-vCcV z23?`y_iOyc6@NN`!gB@a)P;%tw|JapX!Ca*`QXxkY_4G4B*rrm#qG4aQlQnrFsMB*j*_Im8GC+8w(4U1=8*)9uLto>tl)cw zKWwnZ^_G~uK*z!G1YU?X&@)oKzP`8Ah=NI$zsU4t7#Fr(jyDdRAes+Qe_vC#j~J|W zQON`53N)$>SwgexUSH=U1eptNZ|{yvqPDIMMtfgGUd)x?U)W60J{B0b?lR=cCF5bz z(JGOgEp7Hu+sj-U7Ur&a)%9uSE1Eh}><7xLTNM;PdQCUWtSoq*w5deMXRV*GEkzje z`ruI$tq3g&Rx;n--yu+*_*P+!8tGb1fbN#Om`HbO<@2u%Q02j{(mPJ2X`N(od-SR4CyLS2nkD zE+VHNg0}2ul_r_@xcC8J+R@gkR zYwi@GtH9&APi#)!=$(Kg{W<;V=^jN~%#xd!Ia&!hDIBAUkH3E<;Fx(Epa@H&+pd9Q zU=bqaJwxrvpJ+$f&R$bU{v7Kv-Hl>Al*=ogZ{%;#o;SAEC!3a&`^S{;Zg}4h_^)rt zpJg!{$#L&yYuPCBx^dx1@Fl4wq$)@5Tl8@XSXWAhAX&v^-Q(r=K-nhwWT4D`zO<_7^z!gaOzw-g@&N zPSr@;Y4|A>TTI5gO!^uHj^hI6gi|<9hg#cC1j0C&Nt7ROD!W#|M;O&GaX`OAgeGyR zp}~KqzSuTIf6CajJ$vrb?K3J&p6QlePR9?-aYQ_fjvD;ty|w_o1e@H>qqF)cG(tC&_kG^?#WMPHb+Q@| zpC=M6M6Zm9>9qTC^t@wFi~zonRp3u)L+vc(aA7-vs#~3;Tn^;sp!hR|{u&d1PVCTC zKNcUHF>zqojmAba-1P0lE?Dh=tB+( z(bz#2y>#W1bg|)`pLi`wyGRRzuER|{n!)+A7=IVqS&;%j3iHDoJ7{pd>aJMImUYM(OEATHaevNnJee zUm8OEF9LpJ3Ot!%lIhHY8yx*Rf>7sygQtAAG~e!xO3BFc3)}$_&s-0--btEvMF-KR zzMD>e=Z9hpdrB#EXRs0C{4@CMi^%Wa3MzAcrC@9dlvC-c?94LAy9!cuUQ7fw%tBp{ z>&C#_MuZZJSXNG6mJp;rWED*F4lLWqm9qMB6`gU3{EhYhV>0b5cNi_?Bt* zrwJ(GSH0phR7y;TqAsg^Jt6epUNzvK0`EjypeoNC*(CJC9}@%$nwoaV29YN>Jx@g@ zjR^pN?|Xw40h%WXgt;xEd>cYHf0sm$MNmPkm~C$oOn zrbdaQ52gXX>K1mNDG<5_xn6#Okj-{9eHgq-!XqBmklySgfjdl1o_g(hEXoLT9t}T$ zcQrRQ_O(3$NOv!dV8?pYTE%qfcn6H&zx@$F=r&zX3 zZfOEp;N<|@GXr7{e+u)?p-<8{%|8^?WipUOgO@VA>YF`q!Zr<{29`*kG~}pe zs#qM6UzGd4izK zfc!<>z*55Q=NAGiyO@Kb*egK`DlNmAw-N6W?bpAc)_E}^V}jG2`|o;-LB`qZ;A!^n zOt6%YjSu-hXVe7|xL9M86$++)`5RfYN*7G1k)uk$k0(%+Vbn5QHi8YK*?|tsJ_|O8 zKE*ze7wzzRm0{BPi7?xC6T&DVFBj^Ew>-{?(+tq4uQd<3SU~k|H(nl24K%R%{WUsU zq3LDtLW0EPB&Nx2i3aXqZH&2CsBqEA1mCYw_{?u1bnp@c0}gc91lLi_7vM#nXGN=V zTRN+Z!!2aH6AGEJ&@R86sII8r^DUT#?H$;*WW=YZs3nswFCV{f$Y79gw+?~ z*~sAjB4$fLoa#?>A5XLllQ_j(f1fhS0al}N6H$DPt_e z!UwA3aJEzNtlB9O1AiD+p;Y07pD;vV-FRHAaU1SFV(^ye5S0BH-1U=fFEE4T&J^h^ zJ6#+cXFuwj^SC~!&QSR#B;qJiMu`*Oo__wj_}Ty4mq29pyW?{iS9#9Q+8rJ?%Bd~S z@-Owx9GIeUB%!8mYcUzbJ1A|MMs#y!(Y)jq{^;K9yTseew-dMq;x_ClX%_{=E0o%< zMD$#Fwu!&2$u6#zUGUsuk`vmO{_+>e-K_DVwg4~)O?-g_zDJK#q^Mgrh2PB?IpKG9 zBfrWmQ}tJU!SKVlxBJkx+mlw5>KEh*scnyDG>!sgB)wNoOceF#^9#e55;=+T%BBS# z#DzROGCD$}hb{O$Pvns)4ksVWv+7j96YDK{9s*R8eP^1xn%4n+lfv4oFXr8C7FOR6 z^)-jkiG)&&cPXH^UI}@y_gdMFRk{JQkBQ4m#iy{=v(JFpfTuz0H#TF{C9Gal8u>B5 z$alsdEY9YjxlbY--yVJ^%So`~D5#EU)%y_%mL5<=%Hek0`XC4WWN+522lk5()m`}E zCr7xrz(KPODM0LGX|`PAfxruzik-aWDOZfNYiu=QuO4b*I|U(!82%HS$ie!zx#q=* z_=*sN70aw@4O0Wy^r_fv?kW(Yv3{=bwiuiz5EoMHUH$o8etTRH)yb*~N& z0rCAUwkrtoKGx*^hfwwpQ}*va|5fLH1f;QMuE(M~_(!^#AmToN#DfOj$B@hx!O9r0 zi9D9%{g2ekV=3>y)JqLc%434&|1aD9m%jOL0{nkFN&Z7O>jdR`0`K3riD5JPe&V7P zvwjP{^WM6!7_wEe{qvL+rAKgCaA*JJ->O_?9vt*%-DdZo3y;e_2N@~(t9yfQeE;=t zV8G;T@ToR~$PILQXn=}GHiyVa5RCyw;8-{m4K;%P(PKUv^M<#DAy5Za2Yt5T%cX1= z&Mb`3v+or?5b?TfR1y(_{`Z*zL^o#%VJ0c4eoaLSef;qTuG8U!*W}3s0AXhJFdSfB z3~y|59S7K@yWTKl*A~psYFI?ud(u2xDOMIE54~kh{dK>GIU^VHhJJX1HU!wIwViGR zdCyui70w9S*@-$JrHG#CGqENaSWh#}f>cZnt^M7P+VL1Ai)~g0mDZK70+Cj3km)Q} ze~@hRWEo$$=?DZ%dR$l7hr*J*^V*WUyXfOPV4jBAMXak$%(}WTUg^HLA3MDp+n~vV z=r8uRgPqL_hebaf-|L_jBuboo&2yQX>$|Z(AF@%$*g*v^=KU?Gfb9$qz|`2rwU;H7 z4P=vJIJkamQ2cx`C0hZpq(_9KjOu>Y^zSUf8@@Mvy8;xDF5d8;Pf}ElB4mtuPDM}N zcK%%)54h}ILogxer(rB|H|N$?c?{xtLk^j9;Bj(-tjg8qSYBS6KJL#FW|_6lc9Ov-^4F%%Hp0Wujb(X!trVpKhkC#N z)mJ}%A&1@;UpO$I`A1lk2QEP>1aZryy6?~DAu3)ur`)q@pzjnS_2n=L%V>w(w)`5x zbV`28-S<4o8IF@p7S8phyAVUqR4EoUb7bT@%1tviO~3P6sdr#R30En8BArZ2D>CbZ zZpe*Vk9H$0*%?G@@P>#lXN5y3omKH!YFK| zCf;XyOnJ^_j8fOo4BN?xb!uYXkG?}rn4+Hqn10H=aXf5I5+vW-JbdD(9qg-0XMJOP z8j8=dX}ybY-}Wd07_HN5v@YGew3dyqs$iuMyXeFJHqe{?Nl>Ldzd<1q&l3%Al3?6C zxFpWaJ0XMX2H4r#`XZn$4BZPx3b5NPd%I=qnBbx7ru7nz7# zNLT@m1oLjBk*2`MN%5-w6?VOjp5ex_@r~-m0Rk-{Zfy1q)o!RFUVdRTi@@kN5{#&H z1QDM*qb`MlU|mStV!ZSRL_Y zAT<&Yd*15{CPDbI@{m%LLt(gjh*xY@a z@Mg+I(Xfu{lQS(wC{bGrSA_ri;EjY~?%pF5ELkxQxN?74<581)ace*DKX)19FuGfo zSuv^M6AZkXfXt*I#PR<|x4gG;B?W%ZkR$g*i0wq&svZt8BZtY6Y+NAGR4J(KMYlRpE9H9j90zHMlF$p`HbCpFM%)Yzxcs{Y9);oz>uck(^t zQId+GK{Aw~R}s1hP2t^-2fUFyKWtMgVLhWoDr5sLp5TKe_8_DYf*A)Y!#8%GYaziD zazYp1mQ%RCAiYETr;U^_TKs&z{hdv7MDv#d6(106hr(jZUh8wASMxDFF=lNm5^~A4 zIT^mm847lQK!PBOGLkRve{nwia{c^7U051xzrmNL+;S{>HZ-+=HkddMIecJ2E}GR^ zIfaECdj>F1Yve)Ir%kwdI7r&_>W6~JZGxbK6`}?ujRU@0YeOc4Xx@1?U4AZQIfI!%NjbA%gmz&R@w>wyGBNC|uuzV&4>P@ERqg(u zonZcyJ?Lr73aS|Zb04CAABP0zhDcc z!|E$d&}^-DaJ3BX^nhzio}QqxU~{I|T>nh{!JE>TMuIQgOBuzSz|_Ec*t8C`{BiB8 zkpHFYtNVgRn#EpDg@{SK|9=Q9y)*7-|)xn z)L3!DaFlE-!Khy)A;|n%l5LP!EdHtZ^|}U-(f_Pkf~Y8m{u?>{4|9nforhpK)Z;M| zP2;l_(D_tuP^!VAo507En zf2LDspT}_q0pP_rAfSx*t#l9=PyUtgruK_EPacC`{l{p<5BmT7u>Y!KSl#S^FZFTf z@{hCnpK0Z>k++o>v&0V zX1`c()tHc_eDh@*^p*-k0XGWw9NJNfhSu3Z7&P!AO7bwcnA^nuz1yno6vL z^5b$MuCElsh?@W*A~|&|+@lBS8XdG^vY81`BBIB_k~;bE4z?ZCxVPYd@T?P-Sii-& z-SQNq$Ym|fhlo26VwTkWaK9(fFDE(-RW#JxED9JX$_Nn9hC&`tQUzGGJkIU_+RWT5 zzy+n~>F`v*QDeXnB;6_p@uv>M>v&O@Rp`%`7aoQ~ld2GU~ zQgDm9_+ubXjRt{pDtY=a$oQEI)wjz>yi_1W>FFEs_h^+*nSMT%_rxQkWAlS8wcEH_ z9|Kh^47)67xCQZVQ*q10-2I+y7};|T_$rmT-A8Yf4kred;kCkv5q#iRfEY5N-ISz==TYbpi=lr$g0 z_mzm*{pxPI#^d8RS0{%i#SVH89i##}Cg8`rw&>E@=p z|NF6sPvB|zjs3=!D?ol&>NJ@eYRj1E8M+$Hb;6Sw3vld7bgQ)gk`^R3xUNf=XAP21 zrP{WtR_REDWeUx?Xhg>CfhpD^>jncGOO3FcPy{zQg%?YqL;bz2;kJ%zA@RG6ebiz5a%HgPp9Q|^SJ+sF{$&}{u&s5ebV+0p3z0W@z_WSx<#GGw{0EaXKGQ?fn5t=K&Er-qew8MNp{0=Q_$53FD6kDhu%KqlPsC#KI zx3+8S^wEs(Y=B5pE{&I@ih<(L80!njaeXa6q@<>W{4`%o658A>J@+|oskW-T4ICJ;6*iYfmlSeHN)r^)F@0>XIgnLVQc>Z%H7>+>O^idCy!$Xk z_$CO;dsbd46SLobdb>PoUv*>v9geB`KqIO-NdS1axGfT#o}e~Gl5kyQ(+~!k|B|J- zkhIIjKix9dSZ~_RTV8$!b456dR(U_#s{RrGL?EF^DoiSZhVUR&bWejTC7& z(H&TJv2~h?Jfpqeoi+XQ^0z^dll#f;R7%M}e%e%3=Z^um&kA%PH$&rA#RQjr(VUYn z=qyQ4sI2@#AhbHb*ZMm?yzYdaQ(===r!v7MS$823jADj1jBFXJld&ZM44#ra8Amlk zgg=^rt7F#wnF-GRAt6!ohYhflNz^uDcZ1HOPnj$vYIyV zQfX3`U8Iqak3;IUQHJ;WO5lKITMZ-ggVhp`=zST;UMheo`lqTP>ajvh(03ZftuFn6 zF1CX)0pM$DzryUfqI^N-KP=Wgl zDt>(r))RWchbkB|N*OA#sunGB!stO%i8SJ(cdPo7ml5?2sVew~Obx;JYP01T4z1>sA3S9=f6-;b zZV#XXj+;?t<*Qmf=|Tuv46o=X4RJZP%EnrtZmi)?UTxZ0l;l?2lOR+Hu?1g?>v3g( zSG|nsyPKE1iL4l_oxE=eP`qfeM3=&dATwA8bPk%CkK+uY~6k-&gM7U+)W%u`4k)QDUp8?GEUun5yh~p z8Tbj_5Il{Bk)-PDp|8^=#Y7*slylCTUB=DQ4r@n6`k(xmT1mw+fm{6v9Bg$peP*@F zsmWXp{_EM|jT$)R5J@ASbJt{#f8O@@EYAofJRw9u8&G1UITIPO2lt8G__@XTk4-#O#CzV!-W zIIif&>~I9$LCr^-qXUBW5mM%U7=)>s^90lOG(XE(-~MIcv}^F^?=@|#pB!U=I(2J; zzP`jvA9ss*QCcShL4USYOkfMWQRR5{<MsCvHLZ^=}9~VTY=_KI43nkMUn#IqfES#%n%bntVncpuhwP`qDfn zTmrQ4Cv!-#*#oTXpsX@JrRB!%T;>(x@;>wjqU*Vg_rEXe1l-{)NKE#C8bn@wI|j_@ z%R~c{xXo~J`Ha7a;lP!-c2wZIW9_JSth3F3{U%aK^nbqI3dJX%(H-F#SWVJ$fSf)KZJ8D|JU>@J%7SVeh>_v;j7cjnvXeT6Zl`DEElMzuKo-itHRAa~Z` zVK%*zt{>qkPYrYd*!p6}YO}a&^w-oFg_?}-0-Mm9JIIgXv_5_^ybN7kX)z0YYL(-w z3gW>T^SB#%Y*AitqYjXobqy!Rh7Ai1u3^}+c4qgaSxRuPOeZ?reOSW4UMV@KnFWW$ z_a7E%9JEUc)D;>;$_zDL%S&n($fhq?&jWVQ<1|H>OMmX%`d!c;5m2rbWTRqSq*q8W zAdy6ROz2k8?sEqRq_BNlGncq}^?7h92+c=j2jaaM1RXyjZbR#z$IYFg{{W^AS8am5 z&cD%xcPVrn98OPQ9g^6chSnCJZN9)Tj{|QheD|I_iv^>)MnfLhd3Ay=SXKh+F_2|v zS*6bQNhzc*uMc|@Y3=LWQJ0H+{iv<*Zlnn@%Nbg-sZ@GlK7mO^nR0yt|H$PDv zyR|})`L&MyzW>iJufU)<6K*<8;Vn3x&xpg0Eo$6(7yED>`&qy8NGHB(96GVt1iB50_iX=u&f3kj^6_o~6$*w;7sqp(|_J=62EICjZti zT3LgBRZCSV4~rq2#GR730%qSR{V*>0&ls!i3aJO^es-f@=bsaYEDBbT?)qMg{h%-+g1_m|inYr!`#jP(=A%T^G#rHYSrqn2r)>6A2S8<1wx56#cM{(Rge?m;Kt*(oMLbQjBnIcYQpv(h4*SF} zj))0l1C``XA4$4tybV&mGcZO>zFLgVv=YB4?7l+S?(o7rF71Q`cFt zP?U($f(EUe>A?gTin58bH;S7qtC(>yx={N)DN@?&thUU$smbR}m}8#@^Q~9+-Ibe2 zVe}`Te$*TrOiH_$2NSm@3+l|x^geXGd5GbJxrWo<4aHUl{|KYslQF*O>~Lu#8td$p zd>^VrZwoh3BmUE7o=BPgHzMf(PgtksYZUxFlwwC#U?<{(CB9*cvgs?7;BYpw_o|}b z`FvROn=zLiQ`CY~q6SnHFKS=h*6!&KuwuSaEmMC?Io^T?)|&&II_pu7)6OUAy@kps zxq(>4X4>S9yT%Ja-QAz9@XC4%A3lIq7?l@?1_w9M{jp7-e`g;^ps06ftT^tPAuWpv4fXKdS$3Jw^^(>t!|M4l9I9G(aim$Jx$IIk z@)cyqe_)788a8MrH|@rcUfa#e*nj)lWb#|K(Oqxew~R~q$YZGQ51DmT)X7vy*XLWB zE-`W)^$@a;oOW*-I<9*;?|VW=|ID?Ne^d50IclE6eM_k0&hyS#G%)M~K7AW?<(FrK z0l+T{^fD$>eR4wc&;(RglM5L#rmMq(2@AIBA&xgK<4(cv@BWGip1;9C{k2qecQaPD zKYL&cUTdET1_`Z$SBw2L5g3sBR(KSlI`uMgtv-a4V*Z1-8QLADgbx~Qr03}dN-8-0 z2jH9q0J&Wb*kn~_2}Mx6ti$mLe{J8PVUxYrBEydpp(XY#%#j-v{}I-#30B*UQ}9GG zL65DiEw^$t3BiATzN&=9UNDs-d+#<&K3J9W_M*1&vPkkhf!d{4SjglOenEZz1g^0E z&}SDRKvwkpO!cIe#PoQ00V+;QrnwF-~m*)#90T<^4R5Ix8C_j(WD{4ic*Cy+BF zu5a8y93a>;@(Q&KB_{CXYuwn@ba(7tPE4viEnm<8Juj_OUR< zFKfwaU+F9cOwYW-Lq$E8Ov?)heJpJ?hqgs3aP8YNez5@zNSwqeJ876-gIMmtpaOr@ zdM*?7tw&}n0FE*)$Skc{jLw&45*n!xd6mkSVUI9Y&|3%*i zR$?eq?v8@~J%IN(Q2fQ@6J!U9W%tt;qUvoX8I$-X)NNM{=Q4NXjeBztZg>QZ6Mvv4 zwsr&+HSq3mQdDOI&uM^HI(kz9Pv;5VO{JU zeFa;nUJr&}a_CHQK>WCb4ZMZ{sSBa=$164Uo*ThC!yrqy`>~_dVyvhb1y5PFE3Hj4 zi{FbiP4!-$vii@j`kq`DfvA+bW*LV85fmdR+*_p*N*kC4KVsfkWRntC#5^@x z@>lQ*t+>CV3Lp9bLs)KEYi_#;?rF|431?|k8PWY|hp>%0IT}`ovM=@cV%#4g;bqbb zrR1TATDDciC4DhpAY-Os@4;0dAXZ^Tks2wC(f|Znf)@r3VnxUsXvN*5#LdcQ)?UD9 zQG8?8fmk!1;EFfNW@sB1j!7#ZgBp{|C?$y4A*tVUY%k;%Nq@h|dB3@MNJce}Jkb(A zD4``+Kt*Oaz@VSDw-7n-dRy!P$hPj@dyvB`aU%u-$`=oR#vkb3mEo$(gO=?8s%Trt ztjlJSBlB5)Kf-ybQg>-jI{}40zw9p$Aw)Pd{gKprfgwT2PK%E*Jpo|;39Vs){1M3_4GiKZ#S~ma`eh{LFtD=eBPrN3lbme*gE(8{o&!cZt(tAr)#EJ zE*<{_Lj%0PS*BBADDRjThyO+r7c2WdeRN!tg99snw~_6ybQ1Kf_*bNXIfj~UP7t?) zg6tU3s_tYh?k1mA+`OmjDaQBbh!DA=X)!5B_095N0Xx4lMa4IrI3yn>me1rHT5Dl> zqjGZXARQ<&GN#i*Za_G(2!SH(P7&&%mxGE$)Z>JrKuVTL28$?GglE=xH%yGlvwy_f zq)h)Jem?wrE|Y|g3~$I}Lylh)wfr6tzD*N9Vd-MHb@QW8tEE|O1OHD8-Uos1w~$Mc zQZZ5Ea9bVtL+PJ!^v=(cz!8c%to=8ms7k!nLdAc^v45>HPn-|ML=L!4+>o9Hu z!HZXsdS0(zp*4SvVR-sATWEl{$BdhJ>qd^I8FWn_Z81P*yy}R8YYJs`aJK4#N|xpk zHoQ}qq>W7N%1JXKO>xYF_t#bJG!kn>4bu22K!WF1?zeGYq@0$3ze5VKNn_}x3Cv!L z8)Xq{T^OLAwcvNdK7nJeagmdZ<0Fo{m9Yo<9Iy#{MXUQdCE)GEunAHVXipa2BQhsr zvnk2(6iLd|xTdg-hEVwK1kFcav&BtdBr78YZgUxbDRZC$??_Ep1b1_lW!tAG*jFU` zMx1nBua>z&-5P!W3bMbP@b_dSRSZE200w6pNHdqaD}B_@IWRoojq#ApTlM}i zAvIjvQu;_lcFwRwPKy3%`@^hjHz@9UUWP0>Yzn-e>fTXg$VSZxB0ew7MRVIhc0`V$6GxCkoElB5}_o zG35BoMk%wJycNS)oH;TYAv($qbVeBwmNz@?qTjB*PY||)`U%2h+0pw;p*d0k;dk|*R@yt7TQjaGgw1C$ms}%?JO`h`?NS-bS2q!DV zEzC>lkl*s?I~{N6)ECw7CU}b4_*cXenK8|HskUvRzy5uD1Z~RP-=+9Q8pOsO>e>HQ zm*Iy#p~j8B7?fa3w|Blr9KsT&()+~q?GSzh7Pwuw$x9qTeVjcDz6dHPa4uV`Fh-2E zRQEL0jI~$q^4GSKgx6(UG#^U~*5xw#fouIw4K3~)i{PV$cCYC~p_V4+<0k&+mHGFg zdM*2bD(1k5 zYc8Rt_fmgS!Az1@<`ERW5G3^J8h=>DV&8!l8q02s?`i~7U&9c+nv|LSKh(YDTU1fs zHas*)cS%ZjH;9ykloCUSG>8l#2%>*@ zl_W34f#v@8JJ0#58i%(%2d;mc1i$%SI~D!gwMQJ$5Va)XuY&gcuihM`-x94d%Un@ZkWzE4f00=)o7N<^{c^M zXag?x_mNduoJc^czpvT=@FMZ5 z;n^~zkNBv^y1CM5IpmD?Lht49DA$aC#uaF)W>2{?T(hngN@9?dc$>2+T_rO9NK1Rn z$ja{O7c{_tgdlNFc3Y7(R- zpf?`?=-Bvuy#D9-ZIg^C3U(n<4^^LnGk1j|urHK7kiGx|>O57ff4BvbIH+Y0j0Hg` z(}Zu<->>CB!~mwviMmGj^1^qa-tojkpD4NRzr(@h+WwGSs3;kjg;}bwvH$h&P32#S z7b@k{pG06JK2^j4Hj1G!F|!dxubSflSg7JT$8d9oDA0Ft#C{0#z(egx=L&!7xH@P6 ziB!Dt{XVQ<1@R>zM1fD!4PDi5CTzA#5Rx4*v5#B7?nM+m0wp!#s#w+d2B=CO`HI8| zez-NG><%z9kijAL%o|uQUcY$!iw1tY#b8oh+`qc+M`{5B z-mfk0f&7(y?pA+p9)c=Ec_tDz28T#%rQ`l_fhI}LOX&XXSF?F0h;N+{ zzcU0|Jbo1xxm~rFn#7Op-_09Fw4!xpU{DTRMu_X_ZzfJ|mOD9H$Py_r@w{+c+bD28 z!&=kVR4CJ~DDKGcJwbU$4H5ctl$>N$MI^jxyB}jzy&1=(w7-*XJGowhI;mixu!R;D zqF{gr=C!rMNZllCP5lj8FiVV%$OmBIvRvlnR$my7qHaY-tR2GxY4LL@huJO}qRl-d z$aZn*@$Xd}w6ZlahWx3xai(-C&0zPcV60^0Wfz9(s#VXA9_75#usSpYl1r{Hn4>Pj z)3VD?ne2-455iKYI4Lu%d3tmq^8!&rbt~HCp@HAx)E-ef)*M64Q&!T@n?7G47he|@ z4_vVPx#5B6&<&4<%n)1nZlxcD3YOXFp)_PEJ2bFFT^8FI<99Pr;yZLY1XYgrs<03? zIJheDMB?K4r5>@1HAC|zYn}}I(t+DC`E4fjB?nhe!$T!m$K~yWM=Yb96KyIF^hbRp z-j)%`ekSbcqcYTb7&J_2O^RKIGWFg&?ZF@5C&78rR9W^F8>r@QI1>gkpBSa0W0cHu zV)##M2-t1R=lRT;I#`}U>8YgqWEzF-bOUI?Rz_Q|4IH&aZ)4`;{uj_JZ6S|e9lXK zE)HTo@13P%A+wpP*t+#xG3z7Us4xD0oA~qX-MQ*Y&-M+D%{ov$lxepjvAq-y~IVl|sK9cX1)yCXy9V)%w0!*QG}i0!c}->0yVCP}NmQJSQRJdLF1ud-j4 zWI&yS%#;L=!PgYl!Xm22d!M10VD)-fFBm|)!YHoXnWTY-hP>WKv*LBAUo}E^oDs%9 zlX&9xrRKtJnW$0y-7|fnm_8jvp*7v0y3+-zzxSVZ@n0tVM(x2YL)I{e3({m~op|ng zpXpj!H&XeWgJt5XpF8!}Q!8^50u$C`60ZTJD;V(7sW2sEI!HKwJESC!;<8e@Jfd*C zYbvkwP);*y_DG%=nYc`fe*EY9VMrq1a0zFz0^m@#euno_n9V28S69iXFcI&Jm*C2> zhI%L@cG$PYHq7%xAS%@g;zCM;YJ^ncuW}CHHDY*Jj_8^_$+<}?kcbB;Z(XI`(a|a`n~O7 zL1D9KR!3%Y6khoj++kEn8;8CF)l*GOf`7AIaWe@qO&jz>*mmcOo^tvZJ)I(+3M=D( zinXbMgi+F~wUbu2Xf*dpE%nVW+Eq^qOs`;cZ_|yY!Pj*^pON-}g0B?sAHqv7Z-nHOo~efnEzB+%1{sWo&z2G@2MW6Y3U8inJ`6f zNallIe}83Xdu~wp*F2Yuxf@mQIRE%MgING^ z^!o45*V(+~RCdOnY3|9BAD^2z=hRcUu$5VsowY1KL)@@WL+IXnX%KzdLPyo;wx_#2 z{Q^QGjSyJlXNz)2-Z=1)tROkUEn*nZ z6zPZ01vjdk3HTu9KNM?FadKpBQ!yvjfX@=L;ZZGeazDr>we7i*UOzO0#`WpZeyCb zKQWVC=6blRGGq^3&PAoj(Hd$hbjykpy^4kps4|gk0E1Q>snGB~GkEPrn)OZg);75Bpm7cspuzw$)D6vFcavQ0ulzk+nNiE$thFI- zhh0&fZuZ=3Z~_{mbzqRf{T^9>gsbeiT%I6NSdOjMDh-%t($GgqLF6R)N2XdGcW|y( zpqk@>$omj%hH#wIX}q@!j>VAnABDV`t9lF{d$4If?;tCj{NcOL23L@+1wi&8O^wr! z9+p~W72a|3(bhhyDEuK?*yZ-y=!b&dIoZZ7*QTt<&&SaGf=3Kt>C{IN(YdUQ7G4UE zyFbz-;8311A(V^(8_gcRVdO#H=$POM@w$U z$22CIOjz=KUu8N;irn$BcD$Dw=rrS<0M12^jz z3TTswk@L4xMUZEfVNPkpH>i|LV9~2H?Tkn3`CMtYht8J8!|rroyjF-ieX_Ews;-ot zvh*$avwY76OIWd_!4`VNFYtoVb0)k5FaIW#u|3(o&dUf+(Ks^k(@H(gKBAvpE%gE4a;-w zW8^i+u0GZam!^N^;&r9i&+oO=+rPawZO&$8%R4DzWt=%svzGKNsjZM6VNv^u6cKTR z6q>xl*{!^$H}BlWv4}c}sB!Td#eoNt#ddEDw|_w|I=uJTu4+AM>5P|nR-Pnh@G%KN zY9H|$FyZ9&(xa%vf2mTy@EO9A>+zjUQU$|c20R~@M(ZHigj9f#h~64iYl?38vZs9} z3x3)>)Id|!1^?+NO2!W-n8a(70P%j;Fz1VjR@dCUQmJC*?57*Lj#SbPDRAC zQVNF_SNO4iH3i1E?>Dj}ZHt5HISux)`ih~wNZHz8I+zB#{hGit*2WQ*6QHj(aw98P z_{MTR?~glhvh(++sFIPsL{vp6u$wW(kWr|QB`;U}Dv%WKb$D4_E}gtH-FkDEx))ah zc@PfTV6deEKH@s;0KW>Xi`r}R`7Y0JLQ;=iVRxdF2%7tT6m{ghg@eW&OUW^q=7pWz z&cItqc$Kz&a}Pi=Lx}u#gVg5i+DyE3w^hH>UEz3fD^(pv)$!R&Btb3SN0Fiste3n` z7m);-5BnAP{02MAG$WDd>3t8JV4H825GIYU#IHRv=3b;DV2v>DRO)6g$d=VER{J`s zKPq?&x3E=dDZJ&CO0Q5?ig2DhPUZMY|6*Gh^Ej#W(&OR)N~JZkw*))PhkjE3`n>e4 zCRXeOyzkxmREW@RCr(O4j0((s_j#O^)jCzGNmK!f{cgqYR*uI^Tt9FKpLp)TpY^@% z0~V61&Y7a$zbvEt0$@H&ojtL1RnrE&cLE-!BZ)kI&3MnC`%@hZK=mQrcwWNi7IX<# zzux3|;s`}TE0r=79nDmu4DoV9P7&1NBy>ZyJd(*j*~=5YLd^`{J2Dn$fN+RN7))%^ z;(^qA=^Q<(Z^StB$CAr3`zNgDX&L&BPU29w*-tTUSZ+}d+*L8%%n6MvteeVpb3pB{<4DYTuW`&+&~Senaq6K?OcLM^JHm^MrA0i z9WX5V<235z703KuZ*Z9_S7lk)+phwB(D3SqNC*(-nF`nsJO1<5QlkV4Qi6rjN zZCV8zz=xxeJq)M*$Sywnsv`Q`JyCe%9zbO7hi2R%ngk{=t~cclnV9wK5Y1v6|9rI{ zb}gCH!emZ$oMjvD)FLu^g2y{QybNbiLDcJu_Fj0ZzHFrdcg%~29`>E9I%PAvD4r6C zz0qmJXD!%&*p>@Q`!L`@0hSZMvrIn+opDQ0aw%`d%DNQ~U_&`PESkE{2mODs$2SN- z4gcX@?jen&Gr&AA=>gb5mj%eh7Il9=Z1kTOMdXWgb0+wO_kiWUkmMhl`3FfpBJN=d z1pJQw!jykU|HV507uWowXIujSvGc~?(+!{wLwI}&xpyM?>q4?ZQ7uX1bd&X14GKwA za5z)AtgXA~-ko((LR)VIE__N^i5kqT8unGnV&zFTn=W0D#@$wU^{l5U!{$R{-~(C* zD7{y}_UxsXfI{&k6)iC9g=J@D&d-;L#ga{Rh~fn8c{bQPGPTRc$Xt&4^X8h~#NLc4 zJ}8y}16#fFa$IF2ZaL=Sa&#qHO8s`~4;is}!bvsCYK@+<;)RFFD#{-+{pxrP980>; z`Pa-6$cpC3(afrB@b6S=kHpXjWOEM^9=d2pfVZ2G7z{69M32La!|qgN>QqoXRQP4A z_YD<_eCq{fH! zsjz)zC|~1M^Tf+B{36!wOf4QH9(qG5?%LsA_$Rsi9~*fRL?gHB^@>#6CV-@6D}z3j zBn_h8jgIm2H!xnwc_#sCc?2hhU8v|2uDkHxyNrK|3l<}f;;x9e-7vA_oFaH)XcOIl z`71)rJP);VHaB4k*g}{Y&vl>qQb@-#;Y?V+B-<0lU?|2uQN`cl;3Vh-mX%$$XRjGH zE$rW}Mnzy3qZ%4=D4Tt3GJb}Zr|{?#^3NY^-i#(C%3MF;F+a;V^wrOhWzm{e- zIgfp~1W=_cM8mCbBqxwUZIzJup)NHz3|8-RvZBgZ^NMiQT@AS~7zQQnFlNjQb2-&8 z$_OILNj!0(FSRK7A##=rS!Yi-QNRO(Mm&(4+tOUMg5guljpG^D8rg$iC>7)XM*L zIdWug1TXw`klM zgYa#nA!wc}V!bcb2UnR^#)KCO>S+zK-^4u(CU)%X%oJ>rDa*oq;E5G*$*|oYLJCQw zMq;*FTCTXHe`YA5&4jLGR-lL_r_u6&tf~{>#W7!Uz2f8Tadlm9;8Y1E8(Shn@k{a- zciMw>X_4o<8RE-zthkborxn!8TG<#Uibi6VV29n(@FEJhH z?fBTIiwNa)JV_o)DcR-i4qLWF;lk)M!Q1)!JNvI2i~TbkGfs|PU|EtXsVpUGk+dLOvej;kR%y@a-6vpJ?nwH=LY=#P+MDriv7*&x%gXy( za`wB6q10J^Z^lg#DFBQPDl1UD{OiSD;w^f+mYU0U8UaB$dHzKddU-M6Eh*YnI#xBFYJ7Rpe^89eMGUl?%S)2g=q8g5(8p!!`+no6s%Ra@H z;1N;;Jk4tn?UF-hSA4_DB%gCZf5o!fqDOYk+QCU`SCBEZ9$hP=ms4d_&)S7U*4LlE zRqozsIGhHB!7~cnE>Vh zw8y`H?*5;beq@M2aRdHWAq}~Ee=a}L@W2(4_-rtr;R$yHqrtolO|N_{8pz>mRw5`DT~e5r&xVDb`YkeclHp@IZ-zn zp^f5_5(Kv{e^^?7A;652OopBy`KIH0Ba{be;&~?9vy}O9q%(Cu_3@R?l(RGnk@`@b zK_f4MjFz?8QOLBy?NpGz@X*S&j1H?ybLhr+M+78LPl~hG`8E*SkQ24uchmN=|34*9ZquJiJSr}jzq;iT zD%cFy^D?sKvZx-P5m_Co1|D`%`fzJg3}}1Ra-?oWQqXP&c78;3w|q*}#h~HcxKEWO z^|8NHH0&L8ZP{I3edYtpQocFA#Cj1bT-0`ku2 zvX74(em~AImBYw#toYr_alH-dvi7uX$a)Rv+EMgAIYPM!bzyc{X*ZwQpBPQ$vgcTS zo+1p3kmNTOqxY^@nJUZxYc!)v2qP`@Q1bk#HVucCffpJfmS##=cRzJ^rmk6m{kfq4 zo6q17fy+zO^S^UZMA*{fti@+w8|jasG-(5K5UMC`Js=9S-V{3Kl z>x7OVa~eARO}CEEO!r2-uU^2G`Kct0iY8O*4dkMbbQrIUeY1~KNV6=rLrN_+(}!TepJ)AJ*R<6>oM>a|*6H7NJ&VC` zurZ~&Wp{XG19RjhMR0pSveYu&3W^=7b z!8bL~@;VLz__#U`8#sIbIVQXNJ&jfzQY$Mhe!|^}G+FUZz)6}$9fWObSgMsS&e{oJ zM?}pEDjC?JodOkyD6mP0vL*B&I^D58n{_C(R+S0WMuI^P6QMPi9rX$1a3Ecjd+iRr zh)PD|x94qrTR9swi*{_+W# zgsf0TQZLKo!|Vu(U>j^)SGCOYXS*=9>Jg{d-7;8Zt=Gbb>Mg#sr(;iuzKcJ2zoAH9 zUl9vr28D}3VS|$q6GKfV;~NW})2K%}C!bH7Z|!Je69h7c;>8Sm>8q2_IKnV%ATek) zGMR&dJFfSEs9mf{2Ocs|rjquXWfqU1x?k6YnfY1g;CkegT36Ui3O7!LYemIni6Dl9_E;c1&T#RUPyFS=m^#)Iem!N zW9ispu_^`UtOM5{0qM(aPr@bN*nAWgzJsww{PyLPWkPq@O^_8cFfr9)nADb_F#sP` zb0nLVXX6LBjunM>%z8y^_JfSQIAf6;jA68TY-yqI+L*4%|MCiKMU<4rTY2EO{loJ+)hrRS z;cKkU4SD);N&;_Cj)W^Xod#Pg$inCJq3eLoob?~G=KWr+x_t>%Pv#{o25(S}9px(R z(N&#^zO>Nj%I%>HMAIg%}9Tz*jv{T$a~=M{3ywNP z%o0z<8aJPGa@6UD8|(EPBSh#Sl%;h8<@sJOlc(A+&RDpWbZg3e+>Ad=QMN%^!Jnec zl6(?LG+VEC^7n=F;z9W2OVN%9F>HN|geRO4my$U{HO|Yk);sO?d7QL>40JU#b$!9fvxRQo}`umbFzDUlca$g zXVoo!9|HgJ@3VIU$(;TxbL&}v4fz1RDPANi_NgS}KI^c4P3)44YwQ+VR#AMsW+ol` zjdxZBNISsaADN}hTLGx-;*8p8(IjQqcv z=wz~O17B}j!E91XZTcJWQa+?9shI@wvN}{K8G#|n*Gu4C4v~Wk1p63W1Tj+(hY|-U zrm%!fgk@p=ED+6Q^?$m4_=8Piaqg`w2|jm>jX~$nG;ad(_Qbs{BZNjivz$?{+XeX+ zy__PrY!c-<-KR-5jDOvO75)d<^S_YCx9l^}-w#-Fja<>rGpRrn1Z1f>Dyl`uSkR}5 zer-Sgv;Ezz(jXAiDpl_yMvI9;r$8=nIZoKHip>vLS}@h(g$OrefuR-cUvEU?eS6jG5^xP7E7n0ANBw0mWtio(a89xfv-NnJwebKr{CQ}y?NuNW_ zpRICsOB9MY0YV5I$;!s?3xq-gjHVAIYpQ!yr*I*CM);=YVPkuf3uY_hV)V(y; zv!611C{CI6qEj&tO_^a1%Taq#vg%Ea{{wb>KBOg(H(>H*Q9uYZx-iJpj^pCp0WM`@ z#L{nBpm1Q~_vl2%dQbUnM1)BSi_uyhhyYtjJ`R!Ze>C}M(tm?XC*MI)(Su7{on1yI zHZ~e03#7l-@^YVi9!cOd9_`P(9g*ZKuu%6U7pPWC(6WF#HjISU1Tqu9QWZ*yZ0=Q% z$Ktxt}pPk3TXa>+r8&&@YC#^XHUxbAo|oR#CV%i|bVn59)*P>4*DQ3`#vE zO28^Orf5KMg%lS6+W)%N{kB>SgYqJOrlVIL#L7#|R}1W{ylTrG-0ru#va(*6Z?z69 zbImWf_no$>`IgL&l4H1v5ZPGjtPoMKWy}X?iS{2#?4gam*|q5%T`%y(@kk(!$Qi&& zOl3}D^|A%}PxpngWeUa71FI)`^Y3nItOX5fI37Ze{3xvJDRhlY%Xsz3)m|OPYISXI zPUEI(Mf5Gp2ydd7?t%?{uQW|?+0#cVIJ44a?q^|c+&pMim$LhqA$_7kUSqtgL;0UK zdidGUErWa7b_0=P^<6Ax4*!uOKH+*V2y9a>*-Zs0&Qj!>D1D4rHT2BzgJWcC?;0Ra zX4phgT)5J)kKW)28^2%(KoU#x5|fUNT(p*$4~f)EI@y^@il;!7xUvu5n&aqGx9%;Q ziT|KhfN2pis4B+v4b5XM`5`R)?xi2)#LYUV*p;sC`9igsM$fzXEiPGD6`n%yUVo|0 zbK9?f%Jkla&JwggNreuAz2MoqpTO$ctEe-$l6(nEPU;zi)8n+STDYUDbM-vh-#~FK zew=PpFPW_N?5ibxv-Z2dn+r&a%H<~T$Cifcolh8;q8X&EAri^w7ZVEz)f_!v`!AnB zC20H8w1Y~JGjNVSAyY})%?M=!CpF`3xUX?Cn#32F#h4iOx1U_*Ou>ErRtHgzNL@Ll84^kHgf&)Ii&t+kX-PArXOINsKxX-- zq9FKj5&&8{Yj#D3{gV8pyNr@x0I~7f`blPBLbmm)@)OmEC-Ew`Z_uQF^Z!s_igAwb zrQ5~ZM8ZgOeRPO}Yf9dodd?hMS9rN@3wOB4J97E^G2(Yg5N82A3M@IHrZ4f-+*^W> ziumJY<~rRHCDlq7RPqvW;+-yTp{Bji70WF>{QASh=dvKXiIm4Ka)2${T!pGEX+G#utt24Vg3+<(%uR;n?Et=g1cAL$BYGdva-IU!Dg64kssb^SJ7S*AHP zek6?`?5(~#HL%Ar3VK&|m3_vQU3oT?=T6|RP;OY2`R{w{ z-qJM5NpJ(N``neLCX=WYfHMCQK2~4l((jQ#^9ImN3U@1jN9DQxW8hwmfd6l}_@6Q5 zJ}mst{rVqM2@E_*jRGpRJMOb4_0ESh7Ezp5>*VG>O#_1mI5=8x4a;?Oq zfYM<+bKGq`5g$>icM7u68|h#N$Z-C<;ksighY2AQLFda%I1*+jG}XhUjAZao_FM~# z*n}|Y@U@?YbC19LFu|MFsjWvB*#NT;>DTp(j$Ck?ssBP2i@@aOLk+zi;0`Ov;pp$n zG4Jo&n2O4O(!>}B6%DB*%^@>zd+iu(AbgV;0vJV-5ybqRAs4P}Bvq(OuV4r9UnVR# z=Kfq%U-e%ScTPF`P~aAHc?qNhN*d-YD5-WR=e=f+Mi@ImIV;I$+eB(2gt*)pl2RAzsNZfQ_a+N+KJtD`+4TQsSkR$sIC$+f}gwjPn( zcgoO^WO#LKQ)g3<$goCv*EsS*2W$*g9a4(UbfxR%=E*z($js|4Rh*?bpFczzF#@WP;w-2YYP!fEaC{KtvP#bSIl^$na4pdwJ1s63@2&|k1FLZpwKsy zcvveK;5b;@V|}|vD`c1iiq*WYdjqcuMbR3da~K=ndF+FQvft0pJ|%k8;b{d08tb#WEob9EgJt?uyt2huf*erazQvL zGLhGcm%PydXs*zvOZdfvhY_c)GOd#(5qU|k)o8Xg@VYI=rrsE(@=6gzX++yqSIY zPEiD7fKk z%Q*N~ZQAcqR_HHnfj`#jM4LT8pA@OWlFkbi%b3-`Lq_u{s9N`FuFAJ^X)w}ca+N&} zS79O~*gui~+53D+FS$c~GlR+{adyzBR~8J}P=Ce5O$bTTdmS^g_EeL}lB=lzxL%yO z{6ISo&K^=t5qJ6Iq@ueg6^&$iOoNKkv9dETP81i~SbK!pXEO#%t*U7%{M2P}F=?To zAWu?e9Gp(A2|+HWNxn`&kZ-iiJE}#JihOTcw{452^Ji8x`ZHULZ=@SY31q&%*%LN)rFir#CZqoxIE~vb!CfC;WD8G zQ5;oumFIt%{eF~H)(0-=aih5#ncIFn`FKo(Sz^6XrpiFtO`33aHARdiT*Q%$=I|8< zZ>xJKuDT?$L{EE)q}%b~=y%;5=AmLgbb1CK@*3j{9a*z3hkGBPTZh&gjwiE5mRd@e zuuaq(T7$lF6o-W{*e#i(z4+ifbC~sTXTL$&L}#+T@e^im@DgG3@fydPVe}W&Cd!}s zkn-bIR+Dfbln6{AsY&{%`**T6#R=ANk@n}8L zme8!)j+Bch52v$INl=FKr85T)( zX-RQh%DEzm$YYJme2%hkB(~7^24B^UbbR7Ze+5*JBkb+T1Z>Oz_Q85Z611H$W5=YL z+z90ho`_aPh(&y(|Q7>xaP{)0$TKA-Ziey z1~PwMhoel|g?aJ3_eMor#SOT`vm|@Of3om%*igkS9GD}nrj|hb8n_!*(x_ATb6EN3 zFr#`7hO{u@ZMe-}P8s2L#krAZS<6x}16l}>%`r~nAl6h@svnLW%_JMm;f01h&sQ*D8C1J+CO@Xt`?v`7aQ-GWkaB}r4|0BaB=Onl+|@)LIOaPdy)nG^Udi0 z57rb%MM&stVTiNe6$=<6Ec*+8Tdjpz#RpqRL4#x+K>smD*8FFCp_+SYhEdf`s(ffZ+6~b1v&90+2r`7w*SgPnY z^<{BKC`9L}4X2c)O3|RiFAiqc`+Fh)K$N!NbtjF#=!IUi;|cKGyf zGBXDPOaoBR93i^X_?6eb{mBw4Og}*~2@djplq{kA5JDA^3g=KNHC?9OI=}D}x;P#&(;R zE04pY-3R{0_4%>Mq;Ijk)`$k1Q`j|SWqagceQUp})1OcHvTt7L<=MQ#M$-KI5RY3n zZ>|=F*FkicTDp4C?ptBfEV4}Qjtel&JC_n9VWD|WTO;wFGz%nihNr7>Dp*^1U=wO0 zth&W1N`FYox_)>lbYmx7O+^&CwS}(I2l!&S>2kh38AGnVDrAZ32l>ouxyx0wz4s9y zLFicea;x8%7iIHA@6ef3(Cp~feBYu^FVDhfjo9Ai)rkZ4_#2p&Om$Wg?vpA0=u5uf zRQ-=9Rl|FehXatb?DUZ4CS6}=yBOccdPQqYL4Jg&BWDN2VB}uMZJsur73p#F7}mb{ zuM<$<8`6A} zifCtCtzVFcavI^$(j%(o1Ag828vn)Lw~@xT6Q?X?q&Py!p_&=u%l+w_!Io9s_4)n_ z$6(xPoYKZucDB(5o8}!}>suWphqP%7Mw@yck^SnrGprJp=f`xb~%)KDi=JLY&m|kARD|` zh9qdg!@gYJ`${n?V99UMoK^~J+#$2buQ$OI(Sq(O*#W;bs|{^`>2#ntsC`~#4%XXEWT2ziU89EEXicDL5*?swx1M5uT)6r#jg^rc;}tCB;%Ea zq1G3IB`ECF&G5dL?}}Jaf1QAaTMv|+&eJ$XY@KCPS+W#yvw$h{ORbzfW!@o3xrYUb zc?+J7LQ81S^V#BclLr%4^Y>8j`m1UR@34thC(3w^peu#6vc*8vcIi_p>4GS)x&Hm17?ysoisI*^xcpolwNevL17<$-IX*t-;7?I9UtYJu(&v4R3f@P0Ikg^h`q(qv&`8dw%duKiakDn ztbaWE`{6=V_(zkGPkY2y@FIyt0t*?yQIE*7bYHU%)SjS zL`QRw?yHGS&IDzTk~wx7RyqLgr}4!IS7D@jkvym7-*A`3e6tQ?)7GKwX*nc`!ygx4h8|?q{8qt?o;_8@w)nRUF!rpoa(6;t<%aog~ z-o7@~RA|j#Ha|}93$k2)kQK<_w~_zTC$LVBW2rpsyC7{j=qV(7u>yo6!XqyEdL^-N zyrg171A8>0$<~Dno`}NokVmHGLo#CoBduj0YiF@Tr-+ft3eEmx`E(e7y7sW$D}&F@ zjjoxJC=`|0vWO<#WC7R3&0hK2%Dd&tOgaP3_jV6wLEz1<5(aAxdJTrNU_^}2AAKnA zu1h()dVhNLzD7rQw8KG?1K*PR%E};@>@02Z>(wA_pDO&uj4d^@P85tS58U)Lj_pIj zACT#G#zJNbCG!jVNt^=zXcYh8VkJz=D~cFUKQ=LZbWQS(hdepVpx_Pu>&F&kZQuJ3r?$amH1VWLf-JXU+wkbn zwRCa;*IJ;Rdo(#~hVaSO$H8wzDaD|AHQes6yq&Ur@2+SuB&vwjlD_i+v@qK*MA7&& zLwbcmXpK;g93kna{3@a#FN~npD@ZaYu_IQFT~a0+Nr7?trFBh!$@d>1dn4ONiz>yh z8kP&-4pXoUW>}7ReYYw}Ql3lyjxFStauJRqb5!Scpa;`J&Lz=;X45Ky)c6~w$ZDzi zsr31Be1GQ33$ja?qCtTXuA8AbgNQ9+ zwXl|7&kb7=NwnX5>2ops$5E>20q{&jUZU*eV6#uOP?_ zzC*ewDhTxAKcBvP8&)7%L59rV(j`k58prl6VQhZ>_Y@N1EtFW^FDhB>Efe}t^jx~} zqL6LC%X^0XfdfnvUC2Q{TYTR}C^|ieS2w+JI_3B3`rYc^EfO3;5E4T%t?dXxCSjoT z7Zl2Ag@kV94qg7IhQ%NYI)HmwPJ}^@PuVCPj;FqRkfX2vW-Pz2C@v`drb7H@`qIL! z0o~p+ckTA{Mb-qZ8|0l}>UA*O!)utZ6*?|JM3Xe@Ad)NRynu~a%6Vj}*WQ`b6RH?I z#oZB2j}3vnN}bnoH4joSm<1*R;DvC|&c1Qu>6HS7#Tj2Y1ioCt5!=Hg3419Xp~Di)s#51 z-6^KNdkaF$p1XD8v7%6)r<1zc0^jWvD0p*Lkn`2fR2E5d4YS}5sYXWDxirMg_qW z=-pf;Njc`EJ!rR&ZxdBP#mH45Op})Mp2l_V0lJEd$u`q`i1CzAQ{S~7)s=AW&W6#h z#T@aF%KqX~HE*A|mca&V_B+>htwOV}4d`V`Mj!zV>oQtkXop0XA|6tfo4<&+VX}Q& znlfA>x)9{fDbrghsHL3boLUDdZhS-Ox8Smh%bo-90Ky3VCETc!xF<5vkcfM}Amd=P zrRIkzQAPNr$4_lzN3=cq+ciOgL{DdDa3SXd5!5i?5k$qbn z$%jhMRK2&NqG`~#hQ;{}#gjGdhgEF${HawSORx36W$;VFIw*-^os#{XelD50zt#uE>kYALK#%kYF0LN`Dj$7ApK z+m{ETW2Nh48S!z~Y1g4LskaW>IMRSY>D^&okbvekk0{dU?QdyG#3qTW4Na|FQ_|Lr zE^$P(91aSfEd!5AT*y?4mKz%PZ-BRF{kTqluzzUheN_z4mGb9ef1#(CKA(JqSPTfz zbKd{_LzOTZL48$sYrlf~i30&lF5vbeQfZI0)a4SIcCbh!=?$}nZ6~$vM=^HxslFg? zn09m=YLY!Y!ALgrPzJ+}8DoE}Lau+z1ykMVRjRBnGe4WSZq~7%TtJpO7s`B^(7M9B z*-ptkN18DYyd_A*t|5-hKNY*n$}6~eA%#y*QkE8^^Kwz8e0k4SaBX6`1hZg{1Lr`1 z%m7p=q2rsuzGo`mvM^HSsZRuohzB{!sY$8HcQ0G3rO;X*Y^th6Zi7ym)p;F-=ll-Q zmMDDSPSIO3Q6>KpJ8149Bj3Tf-E1~#t@q-bQ)mZ#K?E{W1vM?o;|G2@pg=S_Hd)d| zSQ?Zw6TuB$?R+rip^w<)(cAcZHCsr1vHlt~=leBx#qnYDF;gmvj_9D)K1+JAxF6va zxlv;z59S{`qbIA6vGujuhDW#K0kw z=S}$fcr&i7)mwR%JG8BQJY;c|hdkns7T|PrE0T#2jGv7-C9r&J1Z-nuQyu_7#8_W0bQ4JwkWt8hB>t}V(u@r^+Tl45 zBeshpBkqyq*Ewo~k~4FCG*{O&WM?%H&_yoKXbw8{Ul$<^byYs$BtaT8dWI<-Ffi07 zHYE5xmD-i?HWy~3h0jd9^x|hf=>%i)Jv)QT0hn9}ERf(ZStcxLDCB936lN%$EX+KF z1MX)oX^h7HaEkz?iGglck#>vrP?JR2Mj`OPzaTGDaxFd&$6NkP;vFRfx;2-!&lkItpwd;bu7m-VuaSS&J60aj!XIoae}HRpxk+rEmq zaxV@FZWM-(#g3xB`ZcIT@`S;`#fAznK-7`3@X!F45 z`3^UHTE-?Oncy_|iMO6Rc+809j4JxEL)8m#D2O)G*Drj5N`0d@b0t-vWT9%i#nZhR zD@9DKnrs_G%l)mttqt!jboQqCSGNTUUIZ!^r@$@O-&2GzYb8&@+TzNpO^A+W3%5!o zyOr$fjTyXHEQ$X^nbjxfMAA&b+_yKymE3Ioz0UDa1);p8?Dc8;l}~n&oDmFATG3z( zucn{W_%{o5!FmLTTiEg!u-_pPot7eik_F ztRv!=_o#AC@5boVw3U6H9fgGJ0&`p;e~ddOipXFSov+B-T$P@Gykau@8d89Ah&)}! z548+yXA`=*49;1Yrpfs-G8H`&Jn|sloWBEz#sxSss10qOZkueo6(P_e`j&HXyi}rN zv$m$U?CkGm#vd=r#MjSgJQw;%kk)VP<)wuS99JI*f?hS9@#g22HWxj=l96uNFBqCp z#n9zV0F`Wf)`EE)!cQtX zx8_%0pmx@$Z@85^9U*9JC!B;dSDIZB#7LT2^)I%rg#orLd?21IpW&@52mpz=&2JoI7PLNmWLdc^rougW~ z62D!oN2ssUc>R&Ayk%^-Ule`jvlTgeJO`efa)1ebH2w={n$mjprHve+P5I)$Y8&LYqOicyG0Fz${CvrS#iTiwvD2X`!U<~qcyt?0u?tF{yLnCJl7_a8nc!MTZ+5cv za)_z5)Mc1(a;%SH_Jup0M?FCJ)W!=u8PtI$gjwvSra!Q3Hg4d0Un39Sz$~l!o?=0U53rN4sZI476FV4b*UVERSsAwo;|-Np2BKB<`7;R}1G$GR z-+dXy7JIkG-vc|I-%~8pjcIVjb+%00X+A1=wdqXEMIqqo5*Yg=a-YChBXlr(7WjNi zfyr0qXxJ0=WewdoR(Gvo83Gn_2IRehC+PxI>%!VMm>30)*)gRYc&$xVWzuJ>YVu%E zDUH92eS&YTiOZHZA1rqX+WOiElKkKcV$PL8rQ5G6kA1SC;rYbVo0(o>yX30~cnJf( z{>PQL{)l#LO(HRF2%pS8k8XqW;De5J9D`h|j_?Bud-oG$Jv4!Lp59?GU(!QSzy`{~ z6?2B#u<&g?s-clG7f;=)K)uU6#=+pM_Pe>1*sDRgh}MULoOCB48YS$6m_hOkmsoNoczA!;`HJI$ufv?Q}1QmFL9z+K?a?nV4Qm zbg;x_t+8dJ?%5@nLgs|(S}{MUVCdPAAbkp!x+(H6{%n2bDraXm!SyQO+)G^qpg7*@ zu~Y~go}Ef}bSOMh(5~E%BTo@F`w6HAfou_ls6@D!I3p>+-wUPfKUFK$m_GGB#(1Xv z@;P#KaY{r&iqW-F%Ow!9ZFAuEbsW>Qp`|kFGJWVJJ^ZpRpIUUI#U&c8Iw!enwpyH= zk@J>?&1hrJfw#rXom^X`1ijyFkW(*B#6WDgKaHV^gI79e0T_)?jrcLcmf22f@iu_- zV5C$8Iv35`)~R*C@&`|(&*1F>Fu*^fXUm3jdZN|UOe$ENrh{6m$&xHo zS1E7XdX~hj^0x^s(LHdgznXQ>cVm?&TkCkauRHzd)&~5>Nlb&$6OgjV?tBvlnC_0IqGH87$Crhr@Y zZ#Pt>+zloS%m3>m3lkRSpcCj0qO}*DWK+qX#AkH*NZB~3}5QLm? z-IId6JGTBScU`D<5tOs;nISg;pNr-Pg8&R4S-}L!rYnxQP+3S1aOPlDfnfz&t8e0_ z&LQ7+mY*{4GcDt9mDtwnx(SUsh?X<~S^zrycRcDMFm!EB^v!!lTPxukHsXehi0iAD zc>jI?$D_}-{wQwT`98|#d=k%E2#gx}jKpv{@&XCX{a6dTE^#tFVs_AtetQ4+^!^5* z>DDK@jGJVNSQ|p^wDpzfY!f0-x*KE$bBD(ND>P(~r$+B_-j_m2Ny`l_X8Mi{h15wC z60c>|8AZOs4kTh?$PZcMfMb{kvsw@8M6_nHiq=gbzzDPh1TMzQ{pn)e$SL9J=lH>GphVk2_}dJvx#8)JI3hqnh6S0oCWr`j8e|x0 zCBs_4@+L9M;u561V!XjwFejpTw9zs$wQ=ClR$o%;MPykaBq|l*{TkSC$AaWE7FQW? zP+eZC^01$fPe|s<(8Py|pjbV2P{ICU`LifTUSe|AoxP^Lp+OO~FIUiZ;}oD#mJjH@ z_f#EV99a^7MY&bxB?;yp7z-)Do9Bx%7Z@#$Aw_n`kM4RXY7!dlPqbvBzgM(Dq9vfv z2Ebbcnn)>R1n5V6MRrHel_=n&8SRh+wNhNUVJD~GyJQY0`vw-51W4+(l5V@5`0_5i z5k!*W(`x|c!mu*aklT2o{Qg-2k%o4&pfAiex%0Ve(z8aRcs6(r-jvmCyEpQczo?Km`8(NZbA3**ixnC4r|SoUSCKYHk>Or3>-3x50z;6C)Lu zus8L6OqZbO2O|6xtr~(-!r+OZ$9V#2C+x?8De_*NFg|^f%vBq^>D>dF&$yHGnOlVk zbe=C@#(nYp-oN8eZz*~3g3GUn?yA(jf9t79rvwAgw1dEVnGL#1%19D+nH5!M%9}WT zrXEJcDnGhkLJed%MwQDy4Re5>rJl%#16OPxt@aAc7|}d^+8x`miyxR%zEcREU_Y8# zQWY7l))}ETG<>;d!`JF=5udq!3vZnu$vtA2Od9k7eLloJyi(tR-moCfYZqIlrTo)_ z;6RH>(yMzxZwZt6`UP`Va21IR=V3$e+w|o}ml9!Wr$D!Yu>AOy(q|chhI8CsJ-h+2 zl+uLl|7|h!w`>OVxSqiw1D7#0-^9Ph%olIKd6~m@G9rJ}>lcur@U3Dpq79JuSso$P z-7Rs6-8LtLOurfP?>u$Hd=tc(v44WjPkZADOvMMCVyW8q;EM%(oa$RPEG$WhlX-9$ z|F*;GRcX!OAY_ISoX9@tcD3(CRzQa=NE=kFYRrFjgW(gUUp7FqhJ$40)9=aq-;W;$7dx7KvgIboQymfIuZQ^+A2>nn`4}sg;gZA;dmo~0ipyxYG zYzV!|(u^c$Qx}_mGp#Zc546g-KVu4FZk!+YTe#$<9qTHv=b56sn!!N|I(#2=Xo5{Y z4@d7bXtFD>C1~YbX-%lV@I!`Mt2VT6hlDLT(kzY-?Xnw0oB{zVUa{;FLxcV<139*n zX{{O0J@y;5uk5d~ooSe31?Od}okVF|XUB>SU9#z@Q_u@Bd{c!^EOw89#5<%XI9khe z{%swlOY;qOLeS}%5_)ven@xvuLkX}V-qOwR3dVor>2DlYVVkC^YBV%=o zE$W!FylLWewwlK}=nWQEvkAJRA&edF4_u}R&fAc_##j-Xo@Bom{_%Hhs&7MYe2;`6 z_50-Ozn6Q2-Ut+~^_NF&2kh+`FwxSHbd%un?ft5EKNm8&D9k6Jq+6vDQV=HxiF-zRg{|!@&R@8Vwakd}UJlbN;}#yXEOF6lQoM zGW!6k1l}o_`}>1AgaR&e)r&c zC!PiE6w;CWsdI9VRzPqEJa~Uv+&?6XU`FTdOQdbTMjsJBP;o{8qD22uV@gZSfM`&$TMAb|f$@TX$M}bi`}cqUKKfr!?*Bk>L7Px5obWLl zfSuiUKK%-0n2d2h-0vwYd2J{AF{0Y)D7w50%@dsVo8rH=Q!hK#T11H$`x=Y&rP%p_ zK9u6oC>{5JlNP&|m^6c1l#XMdL2C6QopfiZxgN(aW1d-XblhMCs>}^=ctOdy0nzXN z7dACsbz74Pu?D=~@QFMf{f6O|wIk(8X7DRkvcP0u#2S+T7PXfPIdFh@uj`mW>PJu; znXxb$HH2eiRkkO78nid%=EP-c_MA&V;)LhcV-lT>z@eDBo7s*(9HpxaKG4n9NoS5t zgUp4-^}&ba^!Lf$>%V)Gr>J$(ImYZU0X0a!#}8u)BKHzj64Ql!Le`*eB7Dc?BhR{|)`%9Ymu(c&U za_oQye`}G9=nAchf4io9pM;z*0`-qA?VJF5ONjm%Nt3AZ@-{e0DZDNRNI!vBgne2a2ul{@(Q7-&4ioO;tH! zjCGOL`6i%Zl9DDZuXgXgW_?MtP^BIiv;JClN=Pg;4ip-4qTCx6agh*&r2DsgA--Uc@tR!Hm|%eGae>`onC8+` zMaR_R@Nnjh2BpcshoOAIe)&J9?w^`Z{lz2(R^4(WP&q)5fLyETdA8GRP?eN^HB9w9 z=F^TFH;3%|nJ?XsIqZM5Ov%cAMXM9XRi>m4bmh({AIT_9F3wG;VJ?b;b~P z^%GK(FFez%=G2HRJf6dH!p=pX7K~RA54QxbJFQaAlj~v7Gw~@g6^6?fCyHE z)v;$h$%GJ1J(X62i(G4-LKHY8diaVf3&@j~QpaP2oM--t z*}4U?df#l68#&Z?Ed30G6lxPmV8tJ(5}yJpn$`E@2r8JjRvB-~6kWi(oL zBEsg^6mve{EL}*$yo@==>uj5ZT)<0j5(2Hs{(M|jhC6)KUXj{aWq1={#vvLju>Nbp zdtyVVklK0|M<^aFKWuaQOYJg9&$fETRn`J#TvcoB?{9eXXT=I!Q5>_cHjP1Z%tXX zY|h{Os`@%e5xmG}m}|if5hQXv0ajN}!~BlPOr7Ox3^sVZT_1lOc+x}S)=AHDRF?hR zIJagpsCslyJr9CWg`pqNAd%l(o~Lby`_aYj+LF5Ba~cV(O5H9{x_s(ULptD=K3c=x z&D9WoF1TQq62}{f3eZf~7Vx2g}0CO6d#gYJoDYTgN`P;^OHOyzR~Az@~Mx8Kl?wM^pD zTg;W&C8`{H6&V8QAS^K&<6erunc(OVi4rnNr^2Q`fq~s3GkE6Znma-X+MkCx^UA)aaGh9;D<#RtHaUS&hVX z7M>BeW)gg4kQwUlxvDYT`nfQs6=ka^00F+f1eroQ2phO zSM<31TEMcNBkL~crgL3voen0zT4M6?2;rt0e+^TSF*G6N>0dxcrsb)b$N3f-<7?(z zr^UYOE8!J6@sjq!Ch#+hyKJG2<-6D5(4w7?z-I#b;V__D>VnUVjt@$7) zX}8n(hX+b#h$y3Nb`kRoqoT1!*c6)}ly{@q!3dWKsRWLb3vLS0B*mk*h+wk4S6@ap zBUOlLK+5A|%%8atog%OBGvMjQ>5jjvTaJ5?|M4VwWY*@J*qu$9i+?GLD)sI8P2-PRqUh5-PCM6; zyXH!55I)3p3Ud!xr`5~6LQ;$e0cpsQ*7;$X^UdgQaESf;OHCIOEepaE`cl{TDUs(l zygsByXYK48D_VPA_=Ikx4Q6zqE`Bm%$sX)ngX}`_?}A}od%jO)k?Iy+F||i&cz@h7 z33kJZLfJvdTLb;suLq7z2}VpS9+(TJ?X??+FrqKK0R@MFO!H{u6r`i;PsH#;UT}D# zLnTd{kaR#2W7>o)a~c#opXTR{95fO$frRmYrK7JwT=~uaQ7Wzva8i{%C>Q5^0H&pT zR#ky(8IIs#KShr|03%JT!UWUU%flFRus~CAEnEr2Ud zN)7~}s2qKRC@K%m=q3IIGNsiPpwP+m*F7c1xRQa`aGDrQ8fM8xXLxVYeyQ0$Z&eH4 zwp@MJ?7=a+$8NvY1*%^XxuFY9(MiwZvY3YfO+TW%wDKnz(YU4q-sx|E&JQ*2+Ww*R z*gUrJfy-$ikZ^(~`8DYqpJHLTYm9u=g6g$6{T^z%YTk^VTZOAW7SxB~ql zdHwhJ`fo**xx9*!Cto+?j!4UMrLCntQ=RVImfiLX>qzFMb4hptwpCX@1!23cm^ zB247gz>lsfq14qFYL*F6LH~M=EyT%+b!|$6N0L}}@1WIiHU?q}@1Y-D{ z1u62w_f6G6JdJ+%F;j2B)tG1WBR`Me5$5G1wp4N2bHF{U@6nLtM_y5SPnjZL>uwQ- zdYng>V@<*PkLOZJ*ZqTK`E$Y#2J9S$kfi!{WU8jOTIcfzhEcr|XD!h$fJ=2>m zwLKn`kZsRUrwrVhk`Pi_Psnj}ft>RO(cGb7WVElNV$3T^+cHH?W5O@H zzQ#r?U9YaEo)^X=(QZ+bXG20xi{pg>&)I?bM_tc;3`YM~>7up^wBZkPaet zMlA*9SZ8PG3rx~|J6Pt@gKRvn_rC#HL&vQ(Ji5UN{Fe(Rp_Nu zHfG(oMHwlbX@s3XI1a^`QC5jW*5zlR zzG>2KR7U+>aB%$$jknt?zh4Fnc#K?DO}lTTG1;+o*U=gg!Rk5V(5D*=xFqB^#CLRZ zQy!lxYf|=h!vZBE@i?DOUFD}J5&C&MScQ~drz!MM1TEOcIxwVwqX@<=3>z|UtcsfW zK!_;MQMMX+rZk$+g)OFusajQa@#`~GPpsQ|6Pd&<7WMPoq;&F}`ab4JY_PWJ4{Wwa zYRVWV7r3$K`a=YG ziijSgTM>L;3jg^@R}VBH65CBGQ%;YcET>3~che;4i?uh)S%rYg&wHO;#yKaXiG)9n zVao`6&mdV%r7bG8H;>}P3Kyg%V?olCfLwvXTT$C-e(ih05Iy8M;fGbLkcL`R!>#_G`ie!_f`iMV8H}+~k>&UrCl1SsR;bK1D~8WVG64X#6T?|koGSX6!@h+={bRk?K**d;czRGX zs>Be9>9;XrVZvtoc2`W+P0r-#Y{Qh(bZq;Pb@R2*S6tu$Ijm}+u6&9QHG`O>3NcZ$RpJ26`&dPI)Y39*JVj^`b3){z zTuU}&RJ1hJ*u`btp=-<-d?CX8aW8psssVuIpta(w|D3teRjq5prA<81+^{0JxzQIl z_(w^5*6J7rF80}5tnKI+B^;hOU8JW0$7L}oX~A^8#Uu53#_K}FS3Y`wayYVFvL_cP)%m7I@d>QBxjd9NT4j=o|~9uKA@qjIy3ZuCg%Uf&3$eEzbmzz+lF9I1lUU;($FRV zow7Cifu8*t=UzYeU?6bDkOSOwm zE2};DNT|S%hO`xiS@~m))RBTtHy;tX5X8x#`X-??1p~(7c+-O##|sR*jV&Il6o)2dq1J9Y$uo) z2Y^fbIULi6av6^H>%zi=4uNP=etM=H7sdM|u3<~7{tFIIK(sR~hu;;JQ}mTd*D%zpQk6R-Gt@oU>1%r&cjgtw5K1~NPN#)$; z?cZLj61@PlgTeD_nWDL&>gJcR7Ur&82^;a9Z_f7}#OfKKjQ&r+cseEW8#QdjWA;O;TrZ z42STf@yA9bqc0io`h!36T-2kDhFA**u@02_2RXiRA0VB$59(3MTHypzQK5e@=-*NC zaZ47fZt>sKL?1pkH2jebZ+9@@&F(JoC>NTa_oWEiKMxY~U3r{F>D;iF@XJiqVILsda5?tDZ7kBv&Pk zb=)9rZ=5k}LBEuufUbCIBIXSY^l1seHhHdOxQTpg&WPul4NVq9JejWD8@1i8#aW&* zk1sCAJ3_ftoXwEUZDln}_w%Py*t|X1x46oZW~TuNqoCtUHmU!2mNO%?=+f|ARus!h z3T=+>H&2ILSA;x#>L=P-_iVK_)+@+|WKK9fifS&c0G^m6^_juDCu2x&r$s#q9#dj5 z>jj;dpPmk+Kf<#NQN1S*st!=Anop7@o2D51y;aw+TjxjTr;plvA|17%TzO+4E095I z(*ky5>F-nC=^+DlWB7$`77Cq=gh;}kIp5h& zs#Vfek7JMy@9Vv9gfFaL&i5TXipCS{3PrpzZ`c)R}VpawPw{yVa`_5A`@~i7jLNZ|x>B z3EgIXttxF(jeWWCt<^XnUySYcJJjG)wiPD1Dv9boh#B!ChzhPY-xY3fOo`$kCyg6= zdhSI4xsDWnY+}UT>Tw@vz-gIYh-MwA@WtieP9>6riwzIzx0sU`y`;L#0LNJ2;6=Zg zmn~n|Y6uOuL}RLKcq{&xfAzD=+Uv}$RxQ?V+Wb|-Bp6o}e9vdS(fTqM2uD3+zt1YQ zFI588VZ3Mfow&8a<>6g6|6cguv>K5;(yNO2-`#Ox_S}GOS1?H=mdpp~0mqa@Qh^tc z54}be{H4k%@>SeY5|e^s?PmonxC)%O7f?k+M&ihm$AER0-bi%S#9+G;19Bn)JE(0=WY917!SG z=Z=X@h#^VO#&+xgd!=i}l=2gACo<;ipuc5&&8O#8Y{eXyXOHqnAC01V_&up*Mv_!X z3vI&v;4-h<1f;}l=5I{dO?3J%mro=geaVQx&hbsr>@o6&k4^!9vBVp)n>utcd~z~d z61Oe3;1h-!yDH7PgDiN-$~bd(hgZL3SbGpLpQ^iyvhkl;I40`mZ;w~*weQ*=V_G*f96rztMc}9{3CcNj-};q*grw-Ups|sV zWF{~wB5}eV6?9T#w?U`Zv--eYntZdY;(_q}HlW$x?2S$=ju=a_8McW;XUH8rWGud= z9;`7Mz-QU$a69E6r<1n)AXcZ^+_4 zLeHwS-A&D087*$auVhTFo6W6b(CW5QA4(NJS(L|ZT&?H35PoVqb#Z2EkJPXk#p%p(Y<+MPW86?BtNTu+D@EXxk8(LgKD95e^P2f#m7ghRQ?%qx8KY;cG zf})6^_eRV&-wmnUC-ZgrZfQ||L$=Ib;W{}{5_959DC3!ZYYujQS?TkB&ui~Pa{~L| z4K*l{)Th-mdf`PV6ha(m|5P>r*WhbTGg$cKfDXxXFZ1JU5&9M4kJkBxuuDHMB5_4H zWT4OrrXbJb1^XN660VD;F*_OYrf%1mdQ-18WLti2Yh1MJ-yq%@{ z1q{IY%2ro04}pspj7Kegz-E&jh-fvEUN!~OMte;V5O-c8T8$_WI6E9f{UREo)rcNZ zorn(_iP{kc-T!Sh>iWlxNf6r2vP=;A4>tyJ{WdnD)d+F@SIB?28VM01IvA1v=Yjsy z%LpzJLY@KvDg@Y0;J>WGjd>VK1R}!V87Yb3Z@-ajs-!BeUEPTWhU0A{F?C{-__3v?;iJ(OnEyC zKEdH6K|m?%0#PVj+CHW?o4z7X7*no8HsGge!d@kf3U_K$E zjkl;ohRVzCx&_NQzBOPjrr+}ajeRICsmQifB5mvgpL8XW}JGjwttf6=)dt^4ut zM*Iaw7K|!M5oPl=KJI9_gG(EXL6Dl5G&cgXL?FWZK#f-(8DIymLW}Q!8sE{*>ZCe<7(KCTAr#Y zUoX6_?SK*8<7dD(Jz7p^ZRwiAf7lp^wlhJ#Rt5gNer}jFgOjR2PU#Sfjz*<5RDjvq z0530#MPP##oTAw!p>Z}s!LU)F4J~*j8;Ekjqvn9sCkUfoeReJ$jL(xU&Lcy} z&T2X0(VpG+_G3yGiNgpkv6Yg!hgYq% znJMF9D+Ly?Z?HyxDEX7x6qgOfv0#nOJ!%lYr-=UBo1*yMZLtwJ*>oZcVM$+XH)71+ z8;(E6qS>mO+N`*AlV%ZFKJ1@?Z#R!OF5S`vB}x!;f{tDi+S^+ciy`m=C2HcRPn|=- z?zn(MWgCXKWw1JGu{rIW9tlV^??O~VC}UX&sW(x1YAnJu`q@mg2F$KyuBym_0;g0I z4D=uB6sX?!xLI1T9ujIj8fuXCr*s>JESh(47e;G6$`<_G_rQ}XK1Hs=eX%$%TBp2f6t`^pfw#x%lJR+%l~3o6UFPLnzN*Mec>yx$^*K9=lw0}9I)~yXmEy*6o7~r4ypT{S$yQI!oMe((-5xz2 zlF5jNOorNecDUhAbXTA1%eb!u?43Wq^I#a~S^ctG ztw^9Ov&Ir*_>$+#PD=_pOu^8{+m8-{lIMxZ4#O$<*^0Cf@T-zq;jkmYzkaDLkU;)# z*|G@kSP2JSurL$EsB{)LKN}y=UQm1vIX^BT54|)tud>%IdR2LV(s&qiweF3Rb=sMR z$tu{P5sK3P@NA;(uO{b-P zA-Y)%^aeEZzc!56(T}`ZO=U)fkx^&`%sCxfW;$D0bn{L>9)9?}B-ZltJ#8z*nS6ez zJJk3VEaisf;M5$9NE&q0Uyy-+;5e2u4xVUWyCO>ehlDyBtG1uBoh*_7(L(C??u5)Q z`nCR9%?ThDQ|esoOLJg&k`ip7-0{0s?Wk7vwnS=mx+e~~<-cK*q_AysMOD23Oui1q zz0Vy4%tVGw4DmHbM%mmMa9KCxc|`_u=7e1_Rr53T&f4KsGq6;$697vk&EXOi4g2cX_(_1vK)U5|c4<32sUFaEacXl>4B zx>kO=z%gKs>9TP|*M24+9eZSyIo&};t*S2b{m2bkfQCadlTMnQ;Xz<9kEKt(%9YW1 z7kzX>K+#n*5=syI@8G&8tr@ z39(=QBXlyLnQvBD+$4eMh~_l1wmBLSM)9L#8fM~5?#19f-ipcm^R8t30RO&6@wI&sIuYsQ&Jp5JZO#k_5}DboZr=a}Bx&OHV3BJ`htHR`QO(=hPq;+)Ln2OJTm{L5hx<5gqSY=cXaR;{r`Dn zy#G}e@qD6m|HAX>Kb1v@>)%0b|7+Bs_#cnVOGI4B0TEaF?-}I3K6;73^u9qLdF4Px z3M7@B;Dl0|FKeUT@FEJ1*ugNCA4t>U|FzU=_KhkZfc}O67BBFaox&T)s@$(+xBv=P zB0A-OwD;!_^Tt=Kr~}e(=yvIYV#_}&1OWX;+JM~U{jMD2<8{5f`h-7r0MS3i-I*NrKL zf43rvZr-KWX3DZyr&G|t-IPlf7!eFAAnM*QE+W9_6u9&iA)ULrM=?K@ZU!clonGbF z?m@$ykIv3dek2);R8a>FPY2`wNdyvfqR7)B#f{Q;O$E`Kog0#Ng$B6ii}WJ<8Z=g)&& z%#QaiY6+crDgBZl`;7gBHdIcJHKYxrN(*aWdJ{|M!lbU!{oao*`TMzuST)Q*g5BQD zQxv1mA~{C8F8~C?UuYtYe8F&LB=}DIIe#vTG`I~E$7Ph)T#B}C8wG2#EcdTt@2yb`i&+1QE+7+8|04CSf|YIrJ8R*J?H3?e^B8H0a3Sme!4upC!bP!bWc+s_b*A zP<7u5tYc%wEwI{RNU^zbJgL$sf~1y2Vj-y*F^VVN6XQK62#O5wf8j?LY(F-Db?liU zSt+c5F&?sG<*p?hW5bNwt4BBynL34Pp8mL#SlzIQf$^b|+txS2nl7-3mB_h1Ftt`B zPbnRAl;~l}=hlr(Q;C^njx=TpZ+3h${vED!0kIx6s|0@x_BS5v9FL?!GXdtIYrT}=q{N7aAF_iDVPpwk$RY^zNb!aSSC3*? zG{1Zgu;m#U9rk2QQh+@>Z=uG8loPv4-!5stGjjd9Yc{T5i%KWVDtZenfKLcJ%d4rq z5Nbuq3E~39ZL!WOzDgf|E#erD$lo(iQH!>&b+cuy%So!2HTs=6VzIGGpfo5= z8`Krs3U0sa>}Q>z7=BIV?iN!d)Ng}Q7-h8BdVGoVG5{hcora{Y=~4|%yNlTCRui=2KbQ zMza=>8o%D@Gxp5cc`ywW>O@9XcMA$olQb*fc35B&M#?7rMH@sz|RW8 z7UP3dd!Efz68;)|KVJpy3|I8~0G*HgS&>dmm}3N|$~>gZKO?Q;zNIs`K84IK>|rmwVI-UkZKIDt$gg^`_AS(&Eq`(c*5RTZNMF^!f)L<=rZS%i22YVvz-1NfYK_oc4DjuLrCgd zOu#*@d-wK9gQV*vLss77VHjV;ZpQ;37vYz!}K*k6hH#m*=R zX17#n*{({oqTW3~oM|V!W`+V4#FDjnq8J~&9!-GJ(efoYkC|ZYa5)>z*V)UtOJwX# zpeYW(dQhv`KWBiGUODPr4NKsA!iEgk;9NgPRTNgs%sA`g41kXQe0IYXO)PfO)vusxy;GG_@ z9gWTQ&$CvuCk+OVO_dzXD8v#UV)OZ%lTQ6ae^2MlBnLsa8L+=t`dM~-tI_o?@`HTV zAF7Mm-k^TooXe<7^8QVi^pi_Ra6bsS(OS@2+ZTqhFaF%DORUjaZHf8O-QgjuF9ZLI z0h|%m7rwhtFcL(xbb{%?-SiKbc_)z&ayvrB_%~Yo(@zj{!@r5e?UN-KaIira^a^AI zHj<=S^*e>FaV49-w*^? zyf$L^okHgwv<=PPgYIA&iO9nsdDge-i+S`&13XzIvE-?N%?fPti3+}R6n|wkA7=tGC3Ho-F1@T_+IQ^0~4N4`A3Akkd~_B zq({JAmYYTQ065H`@DG@r9IgpSp`@-PxaLd7dzCkt&By74cZi%a7>d1&kdVzKZ)Y-l zJes)f0_Ou+UxbGwEhCu@lRO0eic;DBr6Kv6yARhg@47CA(4?82DnIN6Ga6bIHxcf> zZ6i~#rfsf^c=26ZC5rS>0aqm1Q9m?Wq!-9T6h$G!{Lmb%NV*GBsE@0M)$|S zP=oP>0gp%MZ&nZg%0IBph#4Tp_ul;Hh5LA){yR6%op>bR_KtPEKf;c_gA;DHY|&kld*)XEePGI5@y!4V^-)uk zlO>P%HLfqyLPViQYseT25v@@o*JI6NOAZJ10Gpz#qkpet0(4sy2~6}%Vm}~@f4r8| zU~0b_wYcu{Axegx9KEa^!dM99QlS3xdIwt>-afJ$JXqt4&~Ql<2?kJ5$MDarK5P5Y z`7{T|x>l<{ytC5Y;ddpc6@!o;$^1Ajsz8mvD8;#ujSxg@9ViBMqj@{O&N$Q~uiwsF zx4$HeD|~uDc=;F5MjRY}J@65x^YwY-H*>FZ8yzMcd3Nq<+zQ4nF8WzF8f!Fh&YcI! ziob6`FP5k1IS?GQlZCmMhux${8fVt|UkCkcZfmdQ3g6_AL)1pZsU~=Vmq-k(IiYAN zC2ZtLaEt6rGVY*diZ;-YEM{iZU_1}OF=IlXRvitK<)dpjLGqNveu0?|uUK+A7*V#o zYg!yw3M!!@i|&m!-`~)w2I;B)h#7@LTZQy;NS;EF1#xS&Ki3II2%eSGq6eI5z-Le7+A0i4!#u@@+t5;Ox2P{TfrNz;n>GS-lRpL&UkjZ)BmXM1Ag;s zYISa-HPA0z1{?yF2}zyTGX2F%zk{K4a5B6OC+%QC-{a3bx%uuq!Q^82Ze)JWkk}~k z%nKW!7%Xvhmw$ct`2CloFtz~8kZHnK`YOM%>Yy?IwlHN6j&Nm-m*S6{FjvX z6!`Rij}2km+wuCYp&J(0lODK^V*5PCAVtp4B19~XzOe5e&<%1(8UIQSyW8C+sCy*Vd%;4p_jg>N=HbDl6+6y@c~?&iQ-rdl_$@m!i< zBmEj{-mRq=cU8i5YmG50lrxvA&;8<239Jw^$?+SY6_xcq(9y=j91NrMIh0tHCw%$d z=cJ_J&<3EaO`m=Glane;E(+&FGpa)`D3Q0=l2-Z&wqcrg^`bmXAxi~?&9CXBrctl# zUQvBAs(&nd^&x;zu^=I=P;0oIjoc8)^J8EcRt&`{U{1RX$9>R&z&vIe6Y!5>P(5u_ z-z;>^i0vM3*F7Nic#`X<)gW!d{@0M#Gh{kKoM!@o2PmV8t0`4HAI3|cx1MSr?jtci zF>71x;JbS3X`JumxMyX)y|RA)_vU_bZbWBKS_lEC*%v=6@M9qyr0j>F7{+f{ZyAtc z9T+S~@+Va{&z z-0)||*%l_v-^>Z3bJDC{j6vb{;cug+2sP0=viHt-u0{0GK9q?omh4b=CccSd%83+_ zILX_d>PI!jvJuVrUWuWPYVchv)$Fm7%L@?aQ8}!NZZI%Ok#W1IZ-OI@-k5aWE!SWf z+cOmG?0GzMnwe{F+Z*oYL!%^E-qgI3;n;5K%<6>BbJ|zWOog()Cm3NhJe%_sOMb;Z z*i5tF>7Kgyo?6UAz7P>eY&O@w+bWD#mf8);-XYr5->nMB1c&?qm;DUg?~1Q*1$X#&!X%h1NkmQdnYc0VnXRZ$wQi*aK-841p5UUft${~{kQ(PUl)i1`yBHr5L~7Z zSOU`k&JWbYyb&x%Z@`V&>$tVJlF36|`EPv%L3a5!)cmg)lJE(PGGt(sX@`Qgql*Lx z_`LsYf_B^FTlxO$dOir4UH%P0$bc0C0!CmAQ9%?P;ru_U%75!C|GPKB*bo5}rx#cM zvBiwUH@8!)3!r=NB6|Z(1uP9}+Hk(hHHeJrcP9SZ3MFgof3=!@OUHrVd=5URfH`y| z-db*cSpS65h;N4yNEe-;|FLPfZ*a5 zT3u8-2OhPpXPyNg-(Jb$F)!UR3T#PWBuW05hd+5e$$Omj8hmS6PsEsKmn46#o(A1u zWQ>P#q<ydMGT zhFeipq_wMN*ZVChCbR4OHVl*Ct%J!Ea9U>WKQ@RrkYjKG=scD+*1ZrUN{a^<9w^kEZL%-8#)^u zO60htvIpN@D|463O*p(+Z3VSTb1knH28FoZ8&8cb4FjE}o>#^~NGcR^S1(d0Jy}y*xb1z!G0NOtVE>ZSr2C#w>AiS3o8L%FO)jMM3VEe`AkNt8QlDT z)f*&)u^;tD`S?Y=8kL}=%V4NiRSGi}MwON#OZZ}W8AB1620I$3YK>rnVDI7$dl$M{Q1@)+PNU*&ic5|0 zh}Mgjyfk9K{O1LRlvU z`@Yw`h!%7L3Z+xv&PELX}BX=?C%UtU$FaO^q>mp8k#TsHcq1p3-}-Nb5nOB$c( z`lnMhEFRyw)J<)mJz&>Lmm)w&OE;HQxqzG3Nla83{jLUN?Z`cAD)88>Uz_SjZCO4! zx}2q+M8>EXHN32$P#FKK96TM}Rc+1*M5E2K_Ymkl}6e<5Hjz$sp-Eo){x?Pw6pX zhvutA&x~5*{xzS=XusbvU)!2{V{!|3Rixu&1Plzs69|G>5DOz`SrlmgIr8lqhSg>l zA%!8GM}qv$B(lg|pcV6*&xSFRoCRglz+g`+DEKt)qm+z*XKO=rohsKyjX>nx`K5}Ud#<0v-Cv7P_=oLp!%>v6OiR|PJ=UQOP$uifU z5~bOx-{RS)(Y14@Thtv3opUf4p|1l!Lt9I&UxaJd?;z&1y%j>( z4jm!_mH@RH29y!R5AexiOn6Ydl(vWXX=#Xo3$;oXwp&Zqx^CDoEGv6)y8wG7+Unlt z9kUace|7xC8>vwcgLX+Bv)!O=9yQ?of?kQA^(OwZ=w+1xBo^@PA! za;lvWl+r3S%0u`W>NqD4bQC4t%1^eq(vXshpn7M&;UQ}rMEa!Y8LqN7pI?-MCA3;; zI+xlq-Kuml>X?4?K}hBgCWgkRYDJvS|E>|nD&{--CH^$Z0)q#|1>7HB{lxhL$4o6^ zi8MA|EEM@y-o>W%M6_UKqv7(>Vwv4N>CY#YQyXOw6J?j}QD_3m=zW})A(a*yXK_WV z)*-79F+IHdPqvNE#`&To`8n=i+wWEp)%&khW&R33>=HZrXZhMEYO7Dzclr`FDZ@v` zv)^gjB)|z*=lmJ6M=aPt;6gcS;Ek+mUrB0SuzYo>>k00Ygn)n3L{HOUU#{TFru+YF zx?1zFoxW%~!dy-W-hdrxJ4B`TXqLetpPMQj2XUkz2K0;B;io?$e&y?P%jIE@I2UBk zBW8g^{D={DcwkAl*BnseyZRpU_0tPApV5cG;A|xP-)z7=WcgnTTuvYWH~~Lz&$_R> zRYyDB-7(>vQ{BCPMol%OKksP+18V|B@%qPYKpI*7mT_{P$DK@vy=9(11uu|;gR+NN zE`CT?E$(+_s%pZ3980f{EE<53DOqrE3~o3ud<#b+8$8z5$oZ;K6`B9gb=rs#qrLyr zQmt~cxsR;1I=qh}p3=1d=>@CC&*^L^+PWKBXhqv9V+ZR6OR8%%(^$P-RY8CTzq0< z#h8=ro3oCyDz)$3?M3X+i}vliD%m5u3l=+HAQio1e)>=a)iLu>3L6$Ck0Y_4Sl_P& zugiFqUrjk-cZ>f;X+O!V_%4~F3TOX+Qq=N&N33I2QWe-(GZ;@R>rrX6vTu9*@*8e` zbp?g+J#Od8tqQ9GRqLTkOLzG$y&7DrQS;zQO1f^wTTI%=PmxU-us9Q&3m;$`Hfy~8 z+*|zP$F6OkA|VsOtTq8Q{{M(Y4(UI;V4(MG50;GpzTZpYYerpjc7e=E((b%m{q7(A zY|}C8c?BOWMKeE%%zw&`K!A3ypi(p94>szsMl8iWBwgkZ ziit!Eq(`p!M_|PJwEi5^!{raz5l7Rm3*3n$tJQtlxz0UJTI#_VsYH8EB3)f-&J{GN z-hNcufxbtFdH<#@GZw*=InQ&Z(0OMjc-sNa0%eeyOVn6gk?y8a`(gavJ~Fm8?rLPR zu&~AO@Z920iz|_tZL=!i5-ua;V8wY7tViy8;SED+{6}UQvV#oC(~Q@3l|$>oCDe8` zMOOo$f|)hMv*Ajk7cozs>xI4J8rjTAN2HrSxq~e81*bAe5j?7dFv1_^b@ZE#MpJ$5 z0UK6_*`$0Atey0l^C-tNJ}vahykz|-IFl988~KNCLE&DLSHoQ}P}}+*B)mf%f+K_jl##Vc2#TYLFtg2#kCv%Q^aDxezdq531Jj_RjL0=YK^6 z=_s1?E%y+nURsJ3sN!{Mm(D)**k$`fe9Fsc0nvP!J}&p<-nnZrShr9Y`++95`*~Jy zIGkF?j@`iPRIIA?Tz+j-;cIk#SahpJ(CKkDWXkv>+GY>u_R;Oi5e>%)-lyNd|NHdJ zTb*YhJ>(Zd&oB19sD3wjl0T=~ZW5uhEEYy{DKqqRDXo(*eG&-mUUDE4VTe`aKHrOT z0D86sqURotF6p!v?rr~!C$;}PfMM~F-CDNc$->hEE8_sN&%S8jq7a)L-&kvF^nGSJ-IX=BofG@X(fqloP$7r*XI
    3?_%`wZQ1n1@{wRlHzvrvd?-}Qb`Rb2K5o~7itLimSN*_O+F-yELiT&Fr`51A@U1^Sr2jdthWL-ea~aL63T}v@!=_TC zH7Xh>HAJJd&<-IInN9fCZ!UMh!7s+hDjPEwrbpfI)wb9nL^mhX81pBr{Bk*DR!jpV`owKB*v_t~W z(o2cG$UeW! zr-Jd{ofyPsIg3j0)zupGTT_FsQ;LTs_bM#LeI!wqCvKIwKd@BU0KMD0{W@kpd&> zNV!-SzQ^PxE70o~d?;98_FC%ju#Eln3MgY2Qs>C&E_0L|8%{U3GX{Re-EKXo?AFXd zm*bwhH0f&e=Lf?RwIXf&V#I{<;eAbCcQ9N6TJn};7RP3!1DGY7$Okx>z=n=E!Q!01 zG2n<(ZPLqoc{mg6%R4=r7Q5YE+Q1A9KF{%c!vMDeBE~?SX_~MEvQO3jDksa2v}`Or z)+K|(MBt$X9+n=l?QgzRPWx?WpykD&m?cOBNB;dNe|%pRA;Hkte{>3L#!J~Q((~_q zV+(iz^yEx7Rh1k68J$OsZs_}BGXwac9F**`Juja4LX^?BTxHVMihVL=DQl|(>1c!d zN&bo6u(@|9L?{??4Q1~x*TP@cVClEnAJx!Lgh?3_v%cG)`XO}qp%x$BI(hOIdVJ4? zsan=wjQ;U8fnw{H&!V7LGwewf=DQK&h<@TsGDqa!K@sG`H^}(8L?hsDtK3d>U^X`m zFbPcv7h;iLH8YV9H@k~7JxF|Ykw;i1{mNl5^7irF?9IaMP@!>Qb_D)}8D(i6e!iSG zHR?~nv};5VM1Bqaeal=oi6+zb<%=qR7vw)54M@P$kooU4?cuKrlXz@@Oa-%zbD4V-ssWzw#{a{d8!awql~ z#=%9@uNs-feG;mSKh5!@`H3u)a-Njl0CMDw$5hS~X*Y)1cYy?+b9&Cb8B*a|bdMZw zScj#4M~iZ2$<*;9H_yGm*HO5rin`xfKIeWZ4-Fh zB-|!pc5;r*-u6F)i`jd#8SJVlamL847)Or6fZ*w3RRYpCxD8Lyjkfbo{SdL-G^|#? zzi{R=7Hx}@;({A)kHbbw5rg#!WD-SF9?jG&it5X?Z)|(9>eu7k&np=(>z4%!%<0!< z7dBun7HM-Y#6BLoKNpLSb8Q_ad*|zP!c$|>5gF`U?Ie%cR&?D5^%J6(9mh+Bj=GjP zTJT)ZGB5UEvnOfxcwEYayMQOzL6T6fh55=1sXErne{ixXwO+oT+*-+3wnnCNPGJ)ln;^8CU?Kd9q%hc?C6Muq4gEn&-W%g!e-fGR zU4qVK0?yMgZ28xoXrwo%?;tXk%+Tgs&x()suFM4gSx>!Hb>@VIyXXvqz{T2gwRAYA z%TH#5lbAR;D-dvSNFzc@dK-N*I=*&4>-qj6^gX9HOni|NVhq+p9+#*+yfHA4t_0Jr}!+aTJcyCWYBhc7Hbs)vtEEivhnpYPccJpqv-Z?PW5tRGuB75qMK0 zaclp93z%z7x3dLIDl{ZHgzAT-1qko1R~Ce|0><);t-Mk&5i4nwYk(4{DJb?uoc~nm zuRdgZ^wr&o==}~PbC$74wvy4Ac$Upnd}^?VfMf~qEWpdek5|F&iV}-k`p^fj69=o# zrI*cXX3|PIFcXocHm-TPByhB8r8`H|V?UueIN3!SxUiYCoVO=4J zyQsc=lYYBpaw}G@R~e4bJFY+zbb(ZUo?kRe7gbhb#G6s8_N?k@bn#EjW0sX8^-s$T zo92h9q63!PH$JDCz(3&L=$?-Ee7@^5y=}Vm0H6neST{PG&LnKIMtp65*Uk5#ZhOeO z%-5|JQ7Y~kDHQXe9;Fo58G|+yuWi;C2|<47Hzj=sFxH2R=@yX^_P;<|NQjV>QdRfH zS#~$-Lhy%+{BeIyz3SpjHl=}Nv=6x4tC=6mesSHLHZe0D+w=BzQMeXa zt#2K0Pju4jqdVc!bJ2Ug$4@e!Jar7-E}ouULO2;r@f{Z(}Q)$;xIT;C>p$wZFRRxi+0@1U$>y? zGbG8m`}-?4IEKA0=?}OQ-BeJj+PsDk=RqsTu%pe#zg2M1uSn0rp>>RLdBOHaD^iU^ z&Cc>jcP39D?3>0f4bcU`g8N`|RNg3j8sw#Iy0d{|0TGcgj=_H!8nuq9MRhOMK)a!5 z$)U#Amc)?=rT0CK7ikzbmW(zKzu9I$gddS)ewc%vwX>2T5U#e~z z8q8E}mQ?LSrRz$cQwJ<4Y7hAg*vmkNh1maSRS#1aSY{khLLNwo7=%pA$_ zi6PY*9#4K+rOO+YHlk-PF5oGg|HMEKZv;K)=hJp6kbsX6?SZRn5C02~fwy04iY7x! zBVAK8n@gkp*FrYWfdXQT$1m*67dOgp@EtOX_V?cYlES<@OeOCK*cPA&0dES>UzV(a z1R^+hzuL%Ex9kptqP<-Jc)ZA*{{OKb`}@u4|8c|Ir-?*pf&BBD?%qXvUt=eN;`UqS zzueGP>IUudw|oCB`1)@UP@?hw(ntRdNb}t{*a_S>*!}kh|I=!B|0DmOw!{!{qy#$J zz4NAA$L=+wVipov#=jwdLOoZ_fGmZ3E)(!exb<7D{!kIs3{boP$6_L5mRwpC!2xW= zz_c6TIk2#AQ1j+nkyL9^Rc{vR5y%F4sySETA`8LTFjuC7QL!R7!aIAz> z%=Nh%MOlr!6Hc+*E1^l1sGHuqw~IQLekeCC;M@OzTG8J9ws7M>YVQg_KyKq26$k`K z>;i<|98S}LLfFJC3V5C^HRre=axX07Db@|199bpuLyW=Q>RKi17r(@7!(mEo#(%7@ z9t`^*WBNO}DbxA-_6!^m>tANg&Ix|vL=&(iIQk4n5&ajY^O+^+QFh^rE6ES^De`y; zP{rDbxWb{CVj0(-L5_V~Sz+7C>eOEsB#{ehcv{hl+F+$=wGGk>_g8FQ7Fc_8ts zGyZE;FpVT(5kq)cM&h{`EobN1ql{Wz+R`Z`(t&H$IA80_3(&G?#Q{9uKai$Nv3s(r zi~)5jSS?SSIazjn&@2b-%i{q71LdV_=2Dp4cI^Nz^nl$vG5X)!H?$y99ykuH%8uAGkc>mLXSEi|;2W>rzo|MyG( z-%0F8fS|A5^GVZfW#UAd9yFAF8(aHk>m2xZ33B~za|$O)UG6J_@mSPpZjbrmh=b5bqIr(BJ|R zo-P*KUSK+i@T$ooC2#Ae;>-@F)2h7^c>SiVLf&E)PVHn?UYeu^2eBIKk4iOOXr-hI z2-uisP}wga9PNtDd}?=@uD4=MN~WOCHxxe3NEU>YLj+zJCAtb48bR=|C`#w;;SuleFDb(@B4GctWFFbLv2(TUUOH!Qs*etzp2 zJ_KstWAR%!-*qm|93IA$znL-48iuJwNwj_?+1#Y$ZHpzEW7<=Q-UMo{q%>j%>Qz*H z@9Uut%-3BG|DoX1xQl%1gbZYje4R{88&}|>p=+);WG$VxG*tYWjvw>u8&Pzp8F@sG z`dtO+AEn62@OG90tsUj-%~RF!EHxzU}zp6(C`NKYq$| zRws6;73VoddLIMrjqGjDM+Mx9`k!t%pD0FjqV`kD4ck7iZL~nE&*k*yaRbPTG*JUk zb8Xzqd~09xEX%uTY@5e-%EvF!xx;W$JHptKvLpK0AhHCgo*3m; z5MN-#`~CxKmDLzx&Ce0uAviB6;Z8X@Tv0kM5tZt*=VT1OHz_TLFA%y`vLEyo#T^FP?3pzbEAZOe*$dFIDlgdTL#;NKUuKkH`~@|7 z?{y8R8hylwH@wA)!k)0Rjs4dQbXNTFePU}e^fn2)uHIANQGUr#rzrO^ULn| zD;?w}^T%F>9VE5*7IKDEgkIj<@XQ)_PuCd!`PVx!znx#&&L0rQ;3GPqQ#`)}R#C7M zaejoq^$3{I`JLpg{-ld3qoK6|hNgbG8z}WbpxUSq*U?XO%JHJg*PDs|FTjxq16=53 zHu_+g7#8C70$cK;gOSyIioCuErL^V-Uj@4}VopQD5C}!UDpCQreB>xAC;ZGQOLz8d z`C@|`E#)J$rna08!DkAG39Bv4<2p5&M__1(&NN2YY{U3(zcDovcatvQscwPo3Yqw< z(y*>y52aw%W}XqBB<}FC=FfhR;Z6&HEGO-r*6lMxD3b>iDl4dQQ0Mv{Eo07k9hdym zTuql?%foJMv#d0sBV*M*?95@`Y>!yH7$%8-MJ>7kuZul==4}NX8MsXaC_q6 zEd8?!G#=_Z)li@@0+zm6mz?N&oJ|bwy93a>j#VU7gigv8D5EH&ifb|^Pr?kB)eIO( z!A{|bH)KWq-Q*3+p4HPOb9!F4di2lQV@sb16CSsX^sIWCE`Ml0z1V^~kskBC*FUq1%d>XKw64>B{gZx9-wRG zC?pu{<{z_un`Arpe^CoX9e^ESF#_OuAN;>6^?dp5T&61ca+lcl^M48v8W;XERgw7p z$Ny#G+a^G%A&3z{v)kPTe#j8?hEe?u`46*TrQnZMro-gMfCJ{c@OXeZKd z+rKLW0X_)I^ii9U#!2?J4&)Lbmw<0|G>u z1}1yL9ldCk2Ko9lK#*fY?8cc-weel7LQqjs@D$Sm?IInNQ&6clBk|y57-}Z@g7n*` zyWoR?r&F*VKuu=D(G{>6I4E^$5(BYR7Pc{r;6$GYbzuTFTHAS%9?XBA7+)Ko0;m#C z{Wtr(T1r=&M6DJ2ZO@_L%jrxB!Cb6MPZu_MUd(I@c^}C$VoESng~jssd4O@1kKYgA zU*H{c=2@+Iz(KKR`eKQ|3(dRu)l1xxIq5c9Tj@LU15j~@sHfSld4?+{eO2cV$nilx zXC^vU*BWoV0#XNu(jL?=jpDkT2UoBBgAWmS$;jz2&$IrQInqnMLSVgl1f}oUSXx2E zn-;W6eIP0QgsaKC(3F5Kvy_CKh*U~ihQ;DGd!XsHeNsV>fKyv(+kOT6bdr-CWKd#V z1}3WCo<>InHxlt*7kZp%gJ`J7{qlJ|3BoB|XPw_N49n5nNnzB8Xd@+Yxeo6!ozl`cJ{3T%ym z9+#4q{G^7louT4`^d!UxYao4?Q)2!3L1N$5gr?eP;UiPBRWB1KzD#AM-|bDsFU9x4 z=21Ef!Ou$*&+Q_IQocQo7U}igVkhthjhHQrgx=Q{wZ8I-fBT=7iTnOn zR=0jt{NQ>VP6yiZvq5pQ-PN!PtwghZPVT&kYgvPfv}+ZHiM?Y_6v3BV`podw8PbUt zsr4l;=IcVrh$61{ zS)L^UJQJd?CrIavHMdYpU8cH^Ym(QD%b=f)`?}diF^77+x}nKQL-5whV9t&~HunM} z*E97$gRa4Bkm>`PNxh+ncnMUaRtLU6UlP&{77LhJLN(zMp%`4)OpHs)@#HW^yf+C* zsYhe{m2q=QrG!3{U~~QH83tN_bk88nmG0+Ohf3Wh`+`Mpd3sK>zly?YY(`_nBpChS zl{QF4FJaL_n~@I~BpJi1X#-wa45I)6TbKIgH^r+A;lz?DGk7-BVF>kgYS?@)wnZ=V zy2_*t?zfvYhQIw>@0<&QXTR;phz3{<*NOmFCd%GON$Ol8YND5IJKAl1sdd;{z`9sd zO^;A+C0XiAP9-yYxSAO2&nmN3q(4SI;8vc4hpvY+Mt~61RR*PIXN7bi0k4JAfGHTo z>29gg&h~1YL6LDQ%oFQ;-~lr*(`nrHg=_)#DSEw`b1#Yx*XX;p>uL|a+S!lFAk@+1 zoSzd92CuyQVvCe5>)}M7KfX=8(JQn|-|Ec{$tkWk#pzsw-ztgg%gc4#<0)MO(c3p$eo*!kE|!&7$q(DiS5o2( zb`tcX`}f>nEkxKMEEE>Hg{}W#8}**z%0BYOR}i)C^cVTtNH>gwZ+YmL+Vzzf;EBv1 z`1Il_j>XAQ>yO*R6BW#y1DyN?;C0&Ow`ho{8T3xS8Z?FQ1r$VCyQf2DTw)Col_nQI z8aU<6>HD8s#N`bP2tGOhWN<7c?XLi9-ZD&;$C;}+X2OSy*YZPUNWUyY{o<0^Hy*Gu zuC{BktI$U|oA-QY(rbc#((*E%7d$<-7Y-cpWMqa>J6Z>M%Po67ZASaj3o$!l}&l@lb@MQh#4%T(o!?mpbBU$2tbbOyycI6;zVz`Oi& z6aITG6xK$_4Gy=U70T!VW8`bHPo$@fz^ajRYJH23gYYTRHvZFsP(;m%@15z- z=bOz1Nf*GaxLHCK%?AC^1ewK27am}Rtl)&6#ah0qL)`?btMiBbY=HF%0j@_x@!aKk zrT=Y{;!v-p)MBUo&1u_Lc$&%3SCuP4z+ ziy{Oxa2NFh?*R$7@dBgu5fuk983tYT=-C>x3=11Gn|=}-=pRhceX3X=`%T>RPFgqk z@v+t((nO%~1%C!spt2A|ZJ3mfv16!&w*4rz(3D;SGxEa{rD`5pVIMJ0+m_ZY@{+R2 z{2h3n?{H4J3R(4W-$XExc4G4OXNWuhEgR&NdcsastLDFPt6SZ2+74(6oHkH2Es4>6 zEo$XcnuwX{DCH1dMK&hhGEUua_1JcUUcgmTLx=<=39ZMrK2XTeA-vwlaM1($rUzW{ zD756L6@Q{LT=*z8Uk0JlN8*)Ep|b^un?}nhv&7;A)aM(T#>HOG$m$)FgI8hs969}}l_ggb6}z{w zd;r+c_qK<;!>JC9b41G>yQ^=jf%d7C6lrWRUT6((k*c<2Oz_AL)aLHrf>Plw81zI$ z7OoQ6rd&UAvLp5fulrc>I#sYd1KzHKcw^!l*&m`Ip_#>coKv~)!eepym@S2VS|Zl} z!vDR%LG8>#dyVP4$4B$0f~99S32rN#mW*C}0@yO_+9on`guKU;pRjz&G-DKfWj}u} zn<3iKFCW^~^L6-40b@A}?IrEV%TF zw6Fer8ZdyvD(titacxRT=HXGvVwUg~rJr_Q+w#F2`ju8v?&sKzbY=LKa77NO`KU5t zMj~wI3E7VD6svmDDmsN=vY09n&kC4g==u{!oYl6Hl>D~JirzE}FUvWqvm(cP_50uzj1xmdTOX>FTv5O%a z(v0XbFKt)Jp4#L!c3MAvmRYU3J#*g*mN^OFn9Qf*>HPjFQbfECQM{_Pc*W)_@Z7{z zk>!2=@c45YGQ(ySZsj(L*;tFnKwH_Pwft+ifpFs9J#N`W%8}_6SLxa|>&4MQgypqK zBoYEQda`?E=2^l?!79L$gp3e@%u=k8@pV%VJ~C<4-LvgH!zIIAWNH!CR7KS@C74 z`sp{NX$g2PB3L(Q&0+}IZr+}5*D(AY8>L(>A)pnLbLu(RTFY=GTZQD@5#yre3e)dx z4AaWqhJX6J3KBI56D@>xlS|$(4(zERm~moEZ|SbrhF>}5zpklh`De;BKl~Fxwf3Ot zc66PK0l8K-MH2u#?Vr4(qMC-|d*#-sqik5C`nt)c_hcqEmCwqU7nv=$-sm&EBry#n z+pN!s?~MzLm(FIjFw#~Hu{GH(hwoNp*LxZb)svzw2BoiiGG#iLh?v$9$Q#9qYobW* z7h9gE!Ck|2&+r27{ku*x0_YOc9jEkXVw_9nHHLTYTp36DdCXHMhFgqibrQy9<95kB zW^^y8HVG?{H%46!_vJMZrMIZrgjDKm4hCi>wWl??+J!dFx$hINI+okzTU_bQs-fES z%5lRjk)95DtOj@CV!Oz34H6LTI_w!Oe*@v}4Thvn7PiJB45Ho(#BmHxCJox$=;4Q> zKQc+R*3ZESC^sC!_x!Ijb{X!g^J@cYDs;u0mVFmKc zr5bB3hs5j$zs|g!V}%0UiB{8e9@!hPBCCOQH#h|ROwp(Rcr19T_i@-G>*R%D9ozLe50WDWhBkOMG0G9_DEZ^O?SD2c5j1!Ugo*7~(Sqp*V~` zzLS|+(3)lXI3qIC3bZvYh3sG7`GMfGSrK>c2+x~3d&rZEg{HAD%LEN>tTVScAPT*t z_3Hoj$?a)Z0%vaR|0<)4v65<^*mr9TK!$)S-NV(3s+)wTVV%_%Ag2u|73_MPnt^?@ znvd8Ko{#=N5+yEu-u(5A&eIqBOu)dy0w-K%5$A-Mt=97m(KaJ;qkusdJv(I0i|$nr zU0|Tk-hD-%b7Ml5B1Oc0B106Y$LoZSVMvOG7=yU;`x=TrH}|{HH|DM6UlgcF;++#m zATYIf`AZyYf37?eJTF&pSHQ?L{LpdXarw}G+A4nOF=k%V;Cd5Wn6B_WBPu zRs;O`gc~VKi>?94CCUcFYW&Bj7c$!vyJmE9v;tZ;RQwF*7)-SK&<(N*iJaF_y<6=gWj=bJe*?lMxnX&#Ppue9_{|x{yJvD#7xvJn1HzY{=h38*> z|1A@jqV6Z5_r=V$Cn4lVxi`!jswTQtY&zj>F=I{9oi!HF1X$6bKrL?-bvTcSI_bw_ zn=BGjN#f9DEa{gB|MNCs-I*wbvAwu-`iml*wPSA(2U`Cq!yo|5#pn6Y&CrNuxU}=QnoR5w$USaf*k^*(sdx0Y${1Btpt0xie z4g0udvD_$-m}c2GG&EVB?fZ;nW?n?re>q3>b}jZMtd-v2ik6e3Yp!Ye{=y;|*kRQx z5EKbe3#pUpL|KZ_-u2c=8jrtckN6E$R6b4c@cJ+QK3*g1t7d|(ZLV`rY%mMcY zqd0v4!kWxb+}uD+AhV5U-CF~d2Ac!Dxz%GPonB~!FL2QTK}x+Z;C=4Pa} z6<6ZJ+E>>161hX)>|aK@6>>B;mDE&Q@Q=I>L9 zMKU8LBng`E3<&Ry#m-Kok4fYad&uGmJ+1=b{MTByK7>mbD#He24~meKXBQk_NZ8Z~ zbrD#S)t~B6(s}%w{^iIqg0|Qmzw%L+hu!Ju={N2>lf(ML^A$HOw0PVw^sp#^G(SLAQYMCcrOOznr&-TF1oJ989$dT`$Aop5g}>IH#>>m ze~aY#y+NC*oPRI;?=A-75i|0fxm!L!a(O6zOp@DAF%nCxp>jby64lSYd{eSLF0)*E zYO0Xhq`C#FoH+779;z)Pu0_Y7GobN}c}Dn?2U*b}f&gi`z4{ z$90hnPYTX|kVGUufAJ0&Ou&`(HG!WxTMg?c~Y~?C6 z<)#H+hPCkVg)V1Z2cY><|H=ODo5si=dW!8NA42sB(~;ajcO+x9&9LLwyQ>U?I2Bl# z>O?t?)2jrMJ^J4=kU8IPWDUyZ=Dl(rt~>RYF{KR}qd1yT+UKI&{^a8C#_ZO%krXgQ zWxQXdTJ1bQOa}8U+#`xyOTl9^GX?{iG*mtWO)1i>UIEq^PweUT8!`dzG4%s|Eo;Ns zq_HRnt2ws^c1i{V1{_`FOyS!6O3PM1A8TQ9c@{||YJdurcdS+k(4 zQ)6hW8ch9kN2kIsDLhdoFSDpn`g<=Hcq&$Aw!Ct|=j+p&qn04oi=nN^=$lmFze{lL z6j78nl;h_8^d*PAMlC@0W#6pvztaydOOqMf-uLVB%~&|;o)>xk#be3-o)j zX<6}NQ8i&}-TZeuIsbMpk4195%Ik?6lZsE4aJSzF^Vv~Xf;N{Q)q1!mDUdoNKaUPG zgc&4#zoa(Kw0wxdHdB|;U*8+{@0$d8&ivxg(;cbuwRM;ko7z=5`7?a_^I#X*hU=H` zUrWp2Hqv+aeb$hc2u6izbM5eM43?#tsogOmEdQ?9$yrg@C|EDoa; zP#Nr_1$SA!+ifX5}slei*+1ejYT@79dc z`mOmhT`Ft~-P{+dGV=KWDcnu`Tl|g(?NktXlvhR1j#ck|tHwGfX_a!dr$D+%SH&u_ zu{J5m2D~#FabKY^$kn0J2&)Qx(tjmGy`R_^K8JqN7+_vs!%uhXPn&z-0|+(a+g+Vl z!*Ilx^~|ToPSmRsSP1$uL&8mEm2{t9?h21)s0CwT@9*~VFO97lz8r#!PQFSe=|n}A zB-gB0YucmXRIu0UOxZ`xFZWwOTgJ#%LHnEU!y;9ICQ-e)LpA5a3XB{%@2=K<%VaX@ z#2^AkCnJptF}UO7%P|e(H#*PUrmHhI_$wEu_csI&5ywGO&1Y1 zKXU8-=4M^=OZufW@}Wy>gLuUw<#=XVTzz#c3&W7i;zwMfA!}c4ol_9Zhm>8;R(Zgr zM5B2BbR1%w*I`)=fj)U(t{_0a>_|JkHB6Xh7F9gBKI-&frHh-U|F&Il_d#{+`N)!~ zp8tO>a`|Mh5?Lb+o!yve&H@G$r1s|ZVC>~L=@L^3%8wV4@=V`GS*&j*X!hj1dHaO< zP*0VyrlD9;eH|%jTMv1H5vl9o%uZuO%DF3bjix)TusR3tT3hBlT>lb5;rITDUvqJp z3jhkcqRwMIaedwAjHvENa<*0_H|*^ ztS<55pqhX-9)aGl-W9MdH=;evt?xof1NAs4qasNJFURlIGDlGL5I=Z%I~j zqUhiKBi&pmdYF(RO6QqKrz>Ol@Acy{Yvlk7+3Oz)n2%?bus{B; zikM1Sm^y`a+N^^G1MG=zs(2{A*ys8LKKnO-lkLVHyl%>>ZeexZW0j|avdF_s>eRF( zj0OjzwZdOJcxYg5w_K{z1lC)tGx<+PccI2*n7|NOlhCH8bcnT$PffGs*M=eeSNXl zmo+&Xoh>)eUV%<^yrqlJ!7D6JW}Qk0xDc%WDQ7Xuae)SO=xHfpsO*tJK7O3vHQ?YR zl4#}Je^$9+zVh*5CrnNvE|O(?j42)$9oq<)jjv#bP|oV2L^()wVOhQgO|PCglOrv9 z`1@GrTdguK+#`$zk_fHmG$gofagVNm1Z2J%dn7MxDFmsRQp)V_%5;iS<(JzF$i>~~ z=lpW57tVU}{RVX$MN~!GZZNFWDx?@pgu=WK*rdhHQQ{O%OG1WnAGn-f4;30VCL1j- zq=$Fb%Rc+F`KI1wJ?DitpW<})!==glbku=<*U2g;oLHw0_9#y536|OtN0)u+Jb4f6`! zfZ}aOq&#r=@4;(EvI&#|=XuTw{alNzuZ(NI&zdQ`p1VJujo}V_0Uz4O`L+WXpJG%I zlc?urMJ@2}>wO&BbGuKM2`fLAH+-ugZ)b@|(Vgv*Bs_G)+N0BP**gM`8Et`;1e%X? zkU@+R7S?u&y2w}kxB8=cW2IZJQONp7Of$)=KoDbWEY!s?VJ(}G?kuq!X&);a8WR)T zXPgYEd3Ka%NP6a?n!l--w{iUFTt?Jtxi11cj`_>eRS3O)trA35k#Q!4o_(AV$72um z{d6%p$IykRvgYS5Ag)yeeUFfYj8kFny{1uqieOY^(T zFq%nM86tw%VwQEU8QYf8Ajmqcjj`BZFjany=9ws=U@EF|W^M72I8~ZAF`uWNa&v%ebScj_#l6U)K|Mr{K zt*#vkj(mnBPdG=OzqFNU6G)F-v-KyhIK*6&VcM4zAzA>0_$eM|AAB8$9U~A+$yuAz&1()>$d#wOC`=B0Bh_(K}?X^Jo>S9GN@JHnih9;R}a9SiY5K=+VBSBG(zt6;T(&Ar?m!>Msp4(|A;~0sz5q z#Y7W8QX+I38M>ZD3g%-(araP()@BHGOt1!eN<()TSm3DPCr^6d6zkmRtq{2<<5*5M zq*N)DOuiIi#GnUQFnuyIEoED^z35y<>f7>9(>zbx8V89THkX>~P3Cg+j_`|w5JdSH z@k7j%;upV#vm?T90Ito2eDg!e?uL+$bRQs8pB(ncOlh9H!<3tER@I(ZhIfpz(|ln_ zVh!l+rW>J>HPN$bzqid|Ev=<(iJQeH68+Q{k64z?8fEqw0-HDx=^PLw^muA^NoBf7O)?HR zo(rNfb8?=4tO~M|jd{X%1P=ONUVu8rKJmwTZNv1)kPx23mV~jeYrd|sggC5$M{VYN z21!qZJt=OY+KUUDI@EP!bl-xQ(luOUxb6DY;ezkA^H`G;$%}z{6*vdBjZ)66;0qU8 zWd*T6knRmArB!rX|u1Y-Ye>=g{YCU@?4(fLoc zjEhO>dw-+d4XrZm3#xr5@rE!AOVFx{X%oMP&kV2 zYW79{Hl4W+u<8FG=7GbMIppe;5ZzOSSKdvaMCd~6HTL*YKc+jFQicUSJ-Su6TQOfi zIwu6=eMZbZQ~1=R%^({WP9dinLXsNS>kvO_yW=YcDsI7U&asjn;;{#kI!rn$nN)-c zHjTH*p*j6^Yq|WXyho1&R{N`@0TgHA)35-RK#GP#1=YT#(Ga1iXS`0hH6bB44PsugGA_w4Mt#CxU5A5GjcUuyo=zJ{t~@M1fPEke)VfnAri-Dyg*n=#d`|4& z-4Z}7mdx5lanEyMX1hC7TFtI&7=?@R)BTrc7MJ*S3rjB0@q;ig2a)^(5N66BKF$l0m4ySW52tGb-=9SYYU!O zHWl`sqUST1cBuWP|A)D^{)#$myS|4MLAq1AK|ldX>68{2x~01X6p#)@x=TS~NQoh( z8)=Z1mJaEBPq^-TUF&_Gf8hCrHB0=`Gv9sgV;`U0UvRm|25AH-XKd@oBa-EBgWr0? zR4EH$9K-|OayZ7AN~Wp<4(`qKL2%|2h|)oT{hg zz^D47%Xs~!F;duzeP#&v>*yV8GlxfAjCKzKc;3-_B9_aPenqvt*n?Zux+4^nus}SC z_Ov)4weYOfrA%>8o^sI&-IoGjoiNN=)>Zh*P@ayevoBUk7qwt*tLH|*=GEQRK-=Xl2>S3TJT2Yn>IuWF8aNXq`HNT|tgm~*MNA(@Y|3u6ifK?H z+W;rt>e&VLjWkVN6b|MQbV8{FNO29}Iwfyh6+FTBXvo%UON$U5xp>1rX`^4xw!B~l zGSjSYh+mvDcE*!Iv8Z*-Cwc0pl<=(oxO{k##DKuL-U~+&b==4>^{hlFQ_H5`dVbwC)K>%Py}yYawsN)cL9I&*44cF>W5 zUZh5--rT-A{Y$fuaY+O7T!2TgIxx2Wqd&k51eM(W{_X#RY}?4~@N812P*EIvX8_`5 zYh774x?U#!9M5=)GHc5Nc6vaW4`RSC&e>*RyN-$zk7KF6BVinY8FIW397rzd!Mij9 za;d}%aBHG}A|x;pT=}LUZs*PAecs$iEorq$waIm{{LM_OdG~eN7>L_$#7xgPhv#{Y z7{%_A1fJ!uc(RkqJV&0K@f+r=T-{B&ATe6xYhuEO$7(tLzK2ZhZ{cn{y%(DOwCog% zfERPN$mgCw>F`jzh&zj)tLrpZo+?K zD&E-cUS|*PyM)j<|8r#53-H8)2I3zlOyoT7tmxduQGxEiM4@VPz+ScZ8@CzJ)8cpZ z`<06^+fgRkFuZP`fi^2|{`Q_s(1IVi!}%!FL83NW>)&%RWe~ce(lk7l%4KOAJ#H4T zW{8{$F$D=3Pz%b`Rzf%(Dm#vU_(O`uBV1>$(fb66!lA^e5)GVU;zLpTEttgYEv5xfCw~HN;o4D&Kmo&FqzgiMZOyKg#B)kn}3|^jwQj ze@R0a_Bn!3M^wN3#_iB|s&=>#|F?9RgU#--KlhQ89R`AAibxcXkg`NnSyyB4`ct#R3i1PiV}-y4$o!J!vu+>a_M3=z&Bplu@^)!EO(7+SSr%=+X*CAQ~6^_ry%I<6cmD2r+jy?)1 zL2fz(lz1z;L9DPulg$&6QkZCKneQ6gT^5Dv$7HS+M8X-!>Jj4$&H`F0f6JGe_ncJd zdVK_RT19ekubAZa#oL9BGV?M2qMxGdf$W1{X976~#sAVma9HSEo>wGS$-IyT21whb zxxwW3Q=X)iU&SYRJJ7<<+VYX`a&>y9u6L<|ZWg>?d5w$at(0kgc8xM^P64(j;F1jz zeXsh|9`0h4n`6L*#6_lnYalPYZ9ZI4G0UH!^l|>Ur(zxc^9-Akr(QUV)QX2o@eR?g zx=M#s(3K1Bzs7Mtg`@p|eYPRrTXsPuU)ES!ywwCcXo|r(28CxJyG@u!O^G(3VHW8wyr84(B5D{g!D~l_jjEySc9UoG`b*5_e?06g?$C(`C&f z;<#t#{dykA4#FpFWG5_eI~)B5;b&WYb8y>Ax%`Q^bH42P%y{tsQPD;*CAipJ??3$)4ls z&Ss3qHurnop~mKGtf4VPJ-90CZ5&34ucuSsC(Bxg%>;`n!?1UXwmTijurQ)K00uT{ z{qYVYhYvd+5hC5d&MboalJ~@PJ5Se>^m?JLn%4^J_Ic3Pn|pJW2j+i#a!4j_ zPNeY6pfnIAdp8>MmN=F&#%-Zlss=s4Bi<<{TtR0T`{L;<|k#>EHPpN(((}A zYUM|*7|k$nACJ~MP4-_rlt;pZXiAjzM9t}g3#h~9se|HJ%0vt z80mX}lG)WK?&TP+v~j9u#(OlS`I6ixMH-#Xl4$Y_{F(TtjY5g#+ZX>ebkrNFZUxvj zSVf+%?IUK65FV80=s6tJmD2AlfT{uc0p0RSDGac(Em9;~B{hkwX}Jtt{l01c)=ql5 zl{QxIb%%)jUPPq@IO%=Qr&LC(79xFO#%L^f@#2nh77>t*W_6|(-(jz??xtQjMh(Y9 zvBAvJK5G>J3j@lPRRlx=G3>VjvTprEWIE2D(G7KPr?@;H*Vp>v`JgQby!a}kIPs=T z=MX7Y^anz0Zjh5rQxf>O<4l#B&xBi||8@%Ulh>t;H3iAowe=D{Ua0`aOoxJJa=o7B z5b&3+!c?0O5<@qly65m<&8|!^@+5W#miQsqNi(4EV>>wJ?rP!kCv2P=5p5Nx4b&Aj z95%_M<11pK{bJVq$svNvt--@H?W_^oT5@G)?&v9uW3L7`DkS88N4qbV_5XC}fM?whWJuY2929>qJ9TOUp$K$Jx$w}3;}O}c9+TfzBo2TJcR|t!yoMK) zpF)P8WJlJ{K8MT*ZFo9rffev8xPhGM*Ij)NR&V2la=mbrSz^niSPoM#z;~sM0Dg+n zX87;mpims+n!jU@#2xL5iASZd^%`+xAq4obQ`PHX(GfkJ&{d#mmS$l6s1nrjXz=_d z8E-S6B%GG&n;o{uliGzeX+Z7wgEo*I5_pvq|h*B4w@^$3x& z`fDzk(0Y!?J601Y6Lkf_#iEVm_u^rNjFN^8RDtLXyJsfEy4Lc?h|U8Wct zy4(K6{dTxj9v(pr{hh`ct=(U%U#d?5f?7&lbxfW}Mj6(&J=|J5u|#M`)pDR1I$waI z3w^`%`8u<@(u)2w^QnIylDTc(r_r8`n3SxZ9$=h|ycIyursAfnwLpNu);^@$6&xVy z>KP=z7r8UKJ2Cp{-o~lwYS}qYH!OkB4awzDOMH(8e5(R3J`uItmyg9owKgIu8;9FM z*|^gE2h|CP=%Oh7D$zV8`rt0bA?1(kBfinzN*5?dcn6l7K7B`vinN@W`}@r|_xR-+ z$_)uu;v_roNGA({!*piVwx2Wlx=MtEjINn~5HHCI{VU&20n3%j^F*8h6SR|#{^>1% zA%_i;|GpkpdK3ZJE9zzQM5$BK=wJJGdGiq?l50|F=7 zF88%eJ_aE{Tuc-*Wo(F&p@uJ{f5r0vk<;d`lhvjfC7%4-2CGC2pGy~Xm9IEd+Q%jD zsq3bdvMlM5N>GLo{s8op0q?gm_lei#r++$#on=~NGD#pxuP2Y_TdHZ73flxZGp1^; zr9EkGJgFul7;uoQW2v@<%)G&`ko!>8(s`bFrixh;<4es62*?Ou*+$ust$xZYK2qwI zY%B)&c;k_kMv0g|4?8{z#16}?cmdbelyX1*bt%ox=#qVXgoSB?f#>#GDWG(<;;o&C z4gyu?U3=z<6g!=+I&yB{1g+XC7mxK`&&|3loLJw}PLgS##aF6<9jG91dUJ zcQx-kn>!(@wlEDYr`4tGL7cS_yzz_562)j~-Ob=Z84_xZ+I=5yy$Pvn9pAO>T#rhN8Q zs9qw-F$;(<;XEc&yf!=z0dV@VMH;{6Or=R-{r*Fa2JKbth0t^_Pb~Q=bCng;9LATXxiAYH-Gboh|gF@)X6b&Mxy}!MXGCi3Y7fl zf@#QqDh&myCu~8UYX<``*NA8K0EA@7{RE8jg)!j&TjKKoOnD&f-_uPVNc)tZ!FCNd z;On~}-J??|5x{l#eTJYo$oaDau#Ncc|Nnn$3Lom1QK`YEa|-;Pq;lU<`0#-qNGcDH z{@XD0(CCa1<~f1in>Y*jEg_&e`kzo)#V+tp0AwG5Dxcm*amS%jWZ(`sE}vU}9HMSN z!r8?}pf+r)5tjNqy}Ma_<7&E+Hje*=YiE@Je^;*W6GQql57rSv@xOy7P0Bo9-Z=e` ziARZn+=oQaC@c*0Y9R?XPBq(RB9)<^a3UW~V~EB6%4RYhN{T zFZBCO69Tf>?WepDOy~tIBRWza<@g>uQC%%`ixwf(-IM_9X1sV3-}%VUjE+VNb22nl zc_)sY{_){p=1Yt4(6(u$=lS*6|=6bo^YNTispARK%6!yri?Pk@fNtB9tU zwoEk;60sJZrk@z;Vyo4)1>p!kKGjkuVV}6uHbTe9^g(O{Fhi3s`dWc8$iN14!-Z>& zj7>X57t{!RSE2NP@#Dk>OU!f{2ekPQQJWc+6MEdeqjeL(!^d_1p4G|waivA;)-}8O z=p%fp;bo^Hu>>MQ>S!pT4Yt9z=R%@ju@0{`fx^F_W<^)7cie+#gT;(_#e!nV-zJgo>Ee{E>y-!X-t}=HqAKODV31Ug=_TiN-28h^IlTPO6s;}} z*(y%V+QrlBKaYO8AN8eB#M3s`O6az=&av^$RB<#@QOT=xkSKV>o9JZH2dL_8qZEij z2@R9;&+WXU)@Q)x-D=&>$bh$`{(y_J_Jqd?pPah>Ve=Ra`kiQ)Rsp1fz_2wzMG$5; z=(2fszb*1%`s9Ntfq>nf;*O5@S($cRPu`>0&=d^lqI;PQlYZkieqb3qb3H&ts0Kbp%1 z_$iUFGg9c7e2qE*G2tBFtr-;$%%ndoQ)glsfgNph5}Lo)J;0`+H@3E3p=s5)c@;vL z^?odu-~w+7tV}RTR7cvwN-}Mbr)B#yH;ue83=1q(3joGj8B<`TR7v+y2Q`6mxOZP{ z&sk7TN#TLSzwy`2kQ|&ZapU>b>pgw)$xhjSZl{Odd)PhdH0H=WLsp3lg%P<{_&V)3aYO?IOlMR^@38zYW+&hBOdchmq~c!ML4&9rxX4^de;cAd>)O#6DO$B9k%c3F%T+#<5!)XO%36k7bstj? z(Z>RLQX!hNHRTL%)0auyTOC=GU)CIZ?=hG}Kk8y-x>a6+!tC-VisyFwHC`@Ze zHQ>ZT_kSs~2vpnnmb9U`7*P~5+kRDy`id8BETbuW847IPYa5M5c=1_>RSKq%_`1%f z*F_b!V9p~I1up83&9!#9Gz2~pCdiR8`SW6Ash3*Q{M?fOCkdjkGQ!zBQ3@}uP5(0~ z{-e9!4QWK1lMU~#uiRe}`C_6gqcA-hc9IL&x)`G}JsJ(25-q&|liI*X zCTvs+xm@HCPZ})be_R)98h5aNMs=`;;$qK?(s{oR{B}hR^+okI6K5AQQ@Z!N>E)K< zLJ@q)jIKRhg9;0!M45ln=YzjBZ{so8@L}Fw`Wj(vsUla)7^8n6I+xR3-I&6+7AN`> z&N~lKZ1LRT9}#G^eot2kgWe>^|v`Q}mV(IGGF(zXKHRW-!PI<5(zg)O!ZI3M&ff*P6AzuDCv@c zwPJ{PNI`E`MUhsMb=SW}hx6}h%wrm+ey9z?%jkwv;05BZ7@k=?`kch?=32F=G3En*PgCA<>*IrB8 zGL?*_K;I&x3$l=!0JPqujtyZk5Llr3xS(M?1kn0fs^zTxd;N-~9NuG{*F7UjdP2#o zU7E&5&G`h=Fa*?+{nlW_=O)x^RdgnaIH~!1X6gaU2re2-{|T+@GqgU`ing z815w~Y>F>Bak1$Fmh5!)p(YLXldtPHqEX(Z2esNKu!BG~+&n`!*eS259XKPV;fw<8 zYDqZGMBgtAI44BDKPApas=SISCg_i+?s-M#Cr`E>s}j@U1-4XDy*2Ct45R;=i$GA! zUr5$7^t0-%2EEqNpV{_CMd^Br7sA#UudRZ^^fDimD84*1f#$p8E5?1}gr&>#nEQ=8 zvd6n4CNv1$aCRZgtuUaAIFz>5v@lS;l14W12?yN9f>gCQN1Lyf36Q_x$%|`e`@S1O z-@_{x1J+}Wos|>aCz9~O`wgM=@4$u-Wc_wr+rSH%Li=m|-?>f8-Q@ldgU}UqLq(KH zbNF_!BJToNg-+3>RnMMni>W5o&d?oms{Y8Pwn$)93lxQiNgxn6|IN1OKS1M#{sWEM z+L{IO=kdM#c?>!Xckbnn$Gw~px|cs0_x(Wshy0=Yzo2ms7jfQ0;~p-e`~%vC9;6P& zJv7ea9vb)Xjt6Mm!y}CQLLy}ds8D3`f5^7{$FI>;q1SV$I|U2QIZSv5PLt>APC7oB z(Vs!H(bdln5#GPJ=rWL0)GLgB-3t0_?zFlt>J>6Azo*70EH_vr;)0R$;m@=Z6nT>u ze#t2%hjyqImwrCTOScCcSN^L*j;cWrmL>H_rF z3JoX#(G!M^Wt@!yQ~7W?#)N188KdH>h?_$Oj36x!GX(mjV|=IN$MnqJ;Ag)bvoZif zF3Cs~wG)$6`cCy`Hr%MDZP`rBJg3XGuUvu9t&56|F(T>wC_&=(nPN>D*5erz1-i_AcBSN#P!xA{_v) z20oPNyElkgm&z$|h#~yB`y@1dBL|7RJ`RPS1S$zFH^^varjeNbhgMT#wjEy1vzJb$ z%C1qHqj;E8$Mrs_`)}BBj*m4pl)gVcAwm2x@%x`GgkJif*IFKZrUnf^%n{unK8GY^ z!A;f6DHkg`KTMB8|D1pfxh!%IdJzbbgjGcvB=Sdrs*q=zDnb4Aiy$Q^jrTD!c!Fbc zjou<)6L0XbR&M&zbldx&mI2}ki0|Fi;wzCwGe0#k^Q92X$~t`B{?k~naO4&#d7iIB zegIt%5Wywr74>BkdeQF)IToUgxIHMC?^G%aXTa)Fpty08(xGSQRj{mVq8GvaE~q>k ztR3S1P!kra#YF0))*{eOI#%V$!2@~2V{_B`MHN&4jU_EbN}?4Kv_W92xT1!j$M$?f z31gXE#rKG2*1nVXELe(twSoo@W5ff@5p{p~TD@RW8pUVxFqMuC{>o&k%Jy%?bN*8) z6Q0f!$C=PK`G2)%k8bbb!^jH){PwYxPB27lV&f0S!Cu>;^oAi?*eH!&%zNlGb2@?E z{$oqGKumB^U)H$e&oM`>3$(Fd!qzqIHABm*PxcLM*|h#8G_sHPAj}oc9YPu6mS?0k zhC$-V#ywd+e1Hix+}Y_X!z9E~>?6 z)#9&G>m#X9 zVJE_Ne+BxT)P`LQR_G1H<*Y#FF9OToB&DJ);d!|MG=CSn(8n5a?}TqB`S<*R)5yO! zZPznpH#5C#=>VAX#d*SqkpZ##&#oOqnR)M|xi@18%TM$( zuw)c{^-Z&vkUZap6Wg?b`)bAe96t%KXn|2VN;raQPFgb2l!3GkB5JmzH&fhcsD^7k zpT5qBS%Bg5c1;3rw1Gx`SBX;gDt#Pt@ArTP)UR&p*KALzfaPb`vW=aIJ^SXsgyB)h z$){Tz$~KsR)X$+UApzu_VkY)#K`p84m)0QDK>UBz6djI!B$|vQ+}++`2hL zfuU+U;cU88#DrI@I6WE+XCFYUD{rRoVm{+4Ve0{OpV(X-UtFMnMyieUpZhud{cI-A z(SbJ-faAV#Hi>2ZX){qKQZaOb_-RhytFP}NlVrVM!J|s4GL3Pe4$&&2vWU1V!sSi? zbrF&bC*|DAk9O2dbApAaWKnea>^FICwbwZjCD$0a5Ie|%pQ*6#*e`hbY027fDt~=| zl}?rU8r;ot9sYrxbI6f9vEUucSJ?3(S)yfzmrzk=n2k}oe0Em>d4+{*GZe};v$_HI z>~4Y1q!#L_eABDdq*22xz^^#^E@>L@nZBS2ObUtRYv^#NbzZjhQ*LP0?!JHN+WOjD zu);0lcLmSqiN4+zxb~O%cb|FogAZ@PG{v`_hY}*9eDtTSKBmf z$=lzP6gdBcd8uWLF%I)z76lRm=IP@R1t@G7J`ZW7)+EJO-&ICdI?KeOd)|gxhcAPn zWl=e{vwj>u{sGNyknP@S*$Rh-&cE-~#gamLw8w_=qbrm1dz6l59a(lweX~8kVYf+T z8H0Mo5FuXk4x3dhsD3ten!z`F)juE_Bcc0b=duLpeS-s=Psx#(Ehgy9T7hO!k(^br zwjjo1M3)-hH2ut!+hRK*VtY|%qLk8c9J*&JSaC4tmOrI1BiQiB!v#z-QQhl8u{IT? zL%~-=qE&LdD&3>XOj$=$c*%5UR+7zM>=4FDUB@okT zbuu=JxRM5%Ksr}>m(Ug&Ig+5=Ts6D}C*F38QCDTP?C!Em1!K$KRXQ2>XFwO-clI(B zkl=&=w8u<@9G8}Qd(=xzuyBVtRu=bvWO%&7QnA-&b-N3gOV0@x6sT5sCN~Aik@WGM zq$_4LU`@GY00wLSKNwqw^8cdwGp!r8ffkvVxEC#W_ZVAzFqN4`SomLAa$oBFARqn@ zjIAv4-@oDi@ng8VMd~yD=OTTG6;K}!7qx)i!3Xt0ygYjU(EvQ};T`-C=l^*`3;}hB z4|3;TmVn_A5I&emB8PdtT={rB) zZTf*h(2Fd3Q>&nYEGwFU!#(0aKU+7P@VhYRl=7p+X=m>M41Zs={|9%sVZEH`?2{+_!+BHr|`W=T3eadK{Gkc&hg8e zLbT)rg7c}QynKysu2_zu;;FNVg~CUFSexyo5i^wFH%#U9{g-#N3WR$*o|GsD!(Y*k zii<<0OXNw?ezExKny~1G*WDNq^_l7voUMN7T^1xZX(#pyki16(gw@Y)ME8fW5ACyg z!C17WUdIns5FTZy3bR;Vwws+9r_5z^gp6IaSQb2+L>%R9b-tkmw+%}xIWB0?Hk^QV z2hIU$V&R--Z!)onTni@Wn$vMe5W8vZoCiz;dfQV5l4cpIuzqrd;~+-)&cgm+O=1gQm3=bpjgyaHT{D>Ti+kVmis67U?y zCzy^wVRpP!-R`tW)esabog1d1)y`1?7!CJ1MmM03*w>^T#QympLV z+vL&(Nr5ddB7UVV`y|Xw64e7+UfCzAPcT#KYBx`C(sDvC7tWeJ5kIfJdj{;%78<{& zBDm97UZ&AJZE0Ge4A$9_pF-5*!gxyztoCPEGb%klsQNj^Dzn#I)C{0RSC@BQsDHVF zsPq1b^vi}f15a0!&`aS_Mu`8-N8qD@19PgK&zgcg)n@u$l0`$7=2&nj?~voI^%(+A z4k;%mKDoJw*s=aTCd-)zP>Xa-HzgJIjyjKNjBB+RX^P&?*{cP{jG)FRN{Ut_8bffB6PBp+?R2E8jbQTJ`YCzGoxp zI>N(8pd38Dbt;JdH^+FOJTO2^kSTs0ba(#w&Wp9oA61O$Q|TkT-haU8_G{6&C~oqd zUH3MqUu_RI=R28KxTxbfR*l|KZwiPM^8{;XDHa1EGg}0=5vRdxSgC3~Ut> zzi-`bUs?48M**0RD1WQ1E^=dHbUD-cM$7MSCG!W*{FoZ{K3n)M-GycrfcqeZ$6`Ws zOlqBC<%owjxt23~`*tfuh+h}td)i|tTUovH`izqO#126*z%geNm+ltKVy=%;(o+eA;#Py$2Dh8HGR74<^** z?We_sXngM!(O$SNy)$)|r{G8#86~mzv);WP4AQ-R?#s(fY*?Bt+gz3zrcsWXE5WDR zwruRSs@|Qq`j?FJm8S`X>eapglHD9&OmDpsaaBle2U9-oxTSb>eVuO863M3&Iz4Wb z9IExYMv(+n3r?`wtVO(rln&->!g(3vb${()`ln!9cUbEU8&jBi^{N>LcUciuxL@HT zp}i8)+KUs{r`uz9m7*tE3ug$tQ)ZjtRo6j!)L^YN>)Hu%KDG6xb)~DgUI|taET?x{ zVbs1tIK(K1*1)k`Oro1pS1j5kTSr-c!JvSu>T* zv`nkOnTVe}LST)t&8&lPw}*xGdIgooY*?Avgn zlZlY}lOeveaQqqRI5%EB#{P@2ur$g^Cp^^W>CTEAmbB|#)o{! zJsz4ZWIDp#yobZ_y}RF|aX10e0OKKyn^MyNbb*F}AJ7v_2>tUu}#w8W4rw;`%190 zQ@e!esQbfp_tPRFNT2e*`$!>E5nhMI-j8RWP*#?(WA#cSsocTtggxer^ zIN1n-wP(|JZ;@zJq3M23=Y;B4EM`Ie={Axd;;Nf!?r=qL6R&ReKio+|GW2hNKrwDU zPG+8TlK-HM9pN4ubmO#~24iiOK18TMQH+zaE0TGIqMD1;ve9;m?PK4&0j|hCTKxpW zbmGHD#N5VR5GQ@(67xES-$j$ih8#wjE{4a(fE83J)~Q@t^`(LV#|SHz(#RkA2#A|G zrngJ)KfOc%TVNs!Z*7E&$H`JTn?IcLj~|Xxz$@wT@=y~aB6Ql85nva%Z#=ufj+Du` zKYNh-&9D9IU*U`>n#{!#3N;bs$Z*9=TCo`$CgI5AHL3Su4Mx9ry@B2r;TSg8IqQ$m z$G|1Yc&Yz*Lkz>3BN&xwl1}*gef}hlac4tGO?$|-#KrOn11&xACSqwGZGmZZ}#11X=Q`3=Zevrk>+xCr(QH;m;U-bq0%{VreDLQ!`sOmXZ_^97)T+*4Ou)oY4RCNi;Dt zOmA9MuPYd5tgo#@`|`kN>|;ne>;hSGl0-f8e%h`r+9&;KW>k4gD> zop8&RGduXzS$_JStm(q6J#%!h^@C{d_pypez8!1hx~e-_{b}e_Q^y(|`8RyEh2(*P zr|xX9gM)Xp^(ZG9zs=qaM8B3jXkI;tc9~|xkF@3MHC5CP3X>K2{WR4Fkk1=b$VOxu$3jD+EmRd&huF^Yn<5Z_@u#A~jY;R?fi>?J zGdU~VSGQxYZpI3$aIw9SFjjGi6;gq3Zk}j)z8PI9+O#jglI>JbQz`kI)y$rwypj>i zNV&VqpCWJuCoZSsd3?)uXTl-nR>e~}#`~}YvgSUi9cyA8R$w`hYR33%d~}Yc&<2N= zFF}_d$-GN?^8|DH`yXg97D{8}Z6-!jVj;TQ~un|~3@A5FMDK?{ZR&l?=cvBX#GHgA5*Al;e0oH#F zD~9UXi4T=(DMCu=i13TIPfPH-6ox7Pq=|}t#<1GdKgtWj%4}F+e8XFC2Q@s$d=}3$ z1R}P*BVro)X2AK0l(L>RUnC+3OXE}YwjA@=EkE~28KZquvO3ITZJJF}@{ETl%yh_V z8`q@{{CH@8vk^o7^2Lhrl&2VW!xA5D*^y~Gv<9NqTYMBe?7&O2)FqPXyScsE&q|cg zp~jk$b;1_?3D(iI!*Q0Ff{V4v%(B@j+ID}n*>X&|FKum=n2sIy?Do}7d|+$gHrYy9 zl!|Jg1l2GFa@n%IEVmV6@{HT$BV%?tJy65qcNrR`o4NJdU2yl70o(i-zC*t1nlKB} zr9hJVnq%4?Q^Emq&4N@hMXD6OGIzZx2aXmB)ftABTX|;hXwAQ@pCuF618}-r@;)B8 z+)O~KFVXW^eL!`%ms7xLtp;^5ZBFRO6+FTIX?|Hc}O;DC(`FYWt` zH`3$Bd^nww8fnZbmPd2%s7uu0tRgVyii;DUzxDOyh`Ja|SGqRUe50M`9&bc&-Hpfa zTuCd2AH@ahX%tpJpIWFDil|#HVn0BEM!F8>DbI!?z zk4;z+?p-`vlG}$Vqc@Xk{_AE(Ai{F0=lUK$&vJ_Ux=B6$4>%ev2(!Jwl}ChX!h9$e zKiJ-U)B30sFn>6{_%)B^UwucrZnU`vO7szMpCIsN>r&Y9lI~`JYiTZ<^Uxm8XfDH- zV>$L5vAM`kjO(srwqpluK?R?{@)`!2MP+i`S8vHdLZ_nE5q6TfP zr)j%#{k3TTM9$d`1nvsMYYi3aS_=$v6sr-!QkEFJ-CV3`#-6B%Ec}C>csBpb&=^3< zWTPQC*Y0Wp<0?5SaPQfccqwdo5K zvmguoKpdg!6hpqjtWREV{D~S>0tafAm;h9#&tM6p_zk8`$&j46V?ricxdGQ>xs)-M zPdDwauGdw&=|z2I)!O4ve*pl(IG;~PHrT z>jeH&7X+8B1z8fIdtc?hvz$j>|2xZ(& zA~k9C!_>nEgxfTJDuDIDQAo|uRH@>tS@+FDs&-oYef4!G+r2?``00guVo6 z2kY+Y6aSh{mmBS`pvY;C)d(7cjs2qfssFIADG4oe3-2L!m_@iVIEcJvgFFBGVS3kZ zi^q2m3>kWBH+xriT0Dwhp)}#4skPOvh+|4x9#6d`khsCyA*xHOEcCKdT}+W0e&|k* zZe3!m%j-W|Om@Qp2ZeS)F*7bS!t6M^9 zyEfER$^)^E6o$yJHtXy6+66b#pLrqNwZ}Sbnm>^#UwWD*-UGodPwX)zfvUFVqZ7Kw zllSyE(`gt;YMx__hO;9eM-0PPO+!$bj3=E!7N16Sf>_`FWsJu(Q+wV3>UjMpu}5m@ zSC4-}g%sbA$#eF7eUu#aDUYe`Xy6c#LY|7b0K)xa1}iT$?Y7Rh)#Y&+Ebl> zoj;9WE~S*Wf+CwhIh7xZ z-fK_tnMYOi8(V#XDsfc;z|h8eXJY4t5uQB}@QWeJj@a%}((|&(JA1;Ac{Ngh7D_nu z+Mta)c?!+zoe9CWK1N9`=>{GJId6ZR)%Re_srq)@O)4i!Q87>l?9xS*R|o%cAT$Z@ z46Ytr8TXjYU7bj!^A`1dL@g?wBl$8s776E>s?2s(n!XI0-a}A6{7}`k|vq_;ak4t_5uEb;5_?4`F|0hCjy@>63y(7b&N* z6t=V=kBJz?i#Da&;3(N=jj@ih2RnQ;Q;jPl}XP$;; zPciJ45@KwaOprS|cw5T1ZvFGeIAn%DJBn()@n#mUNVytSYn7c|52Wq~e#l>Yi{>Xy= zM5OL9r#R9Wg+fv_gRNrJ6$<=Qr0$QfLK1HVzS1KSn(vq*%rZuML&3om`|^*GIxx5o zK;9Xq;;Y8v^#g3Y`DrU(yOAnM%<8-pTjL&l-n8IxNNLNLfaM=c^(Wm6t3uz9*&-7} z)nn-n;?V=ENk||T#vEGPAuq((GJKG5`|W<+?1kea&iJ{0K-R(GCo4wSPqOUPRkJ*!lM+{3*5WUF@5la7SL~+$9oJnc zvH4wcly_?8XY*>(GEdd6IZ*qq87ybjY`Amo091Lg{Wh8{N4ZaWf?ZlS%rrkE=-Li7 zjCB5lkMsEmjRB2}JMe^4RJ_d^nh1D@fMU% zzKKLiuSXI3l$z=kep__6NJL?0m?UI1e5R<lqK6#_gVI`sKcFK15W3v64-)vij;^jz&A67a`6XRW^fL<%YdB1 zPXQ5Gb(f5sYCPg+q!l_J-+%L1zxPSz0vxz(4_MDP-n3W1<|?)PdrMJ~wuFdZ)TRH@ z#C>;!5!ipvgIj?&ACic<(A2T1>l6_3))I{yWT(t4F#~{*76~JtKxnFCPA6Vb6_ZQZ)*G}d2+8R z{yU2K)C~j(2@oK42q1!cg!_M`ZyzrD@BHT8i22X_Cip&mD|DZ}efVe(k(7r=|FvE2 zCrtmbU663@$3Eb5?I7>3gY&1XD-O;surb^!SP_f?2a`@+jtK2*ignP^Ew_z8jzUqoa& zf*E3ehCw6ma$v3V##gYCikkkJHI}!{=pwi+@RL@Zdm)lm9uR~u7OLd?!;g@Tf_SaS zG{dFS49Yj$1Qem17MC8P- zJo|c?@pHzD$n~6>vH3f(s=+oWjBn`bKo{MO=n}0j4kWnCg*m$>ph-|d8loX_15>-Z zn9QEEJz1$GMU1BKSd@(-s#IxKpPK$z+E0L_K^7xUE%s(H+z}Sy{(JO}QSoY1&q&`U?X7t&sV%2Jghm%%H7K#wSn;5$Fnw(yS7|5@ArZhn|9RR4P& z1WDH_D>Z#~B|#K3@J{}Brz%>p2XlO8s_28AmLc9?FBk0~PaurR`-LB*LO~UKYDg2ACuP(o0U+I1Q9+f<9VehTa zCrG>0ZS!_9p_N%{b7TMgS;O5%`&XIACS(F(Ld+4#$ zza@7D%5+_)!#NP+EPQY77`8kNyRJRn9eH*HR(jS8jr6$kEHDP7=@P?=1)Z7{i}W zvN>U(FSBPGB%SbH>6+^KM-aM?qV)hCi3vi0V{vaU9x62JXG-4zT3+3``~=JR zV-oTds7Sc4zOcLW)EDjx&hn{pD0E`B6I)pgKOG(azPXZS`D&;g?NJMW&i%YnRiQ_k z!Wc-rpA@i?;5gwQzt*kQ;&|?^_~`C z+FW*Gh%Y#1q5SAF7#UFNplJUHFB7d1w^{OsDsMCKmbqCPP&*A)cl7pN`XYR3AKvoY z5Ly)I6rY~Daxqk`ssp!h9`T`GB^>VDLR*n9L`$}}WAFpr8Dz1z^n*X-8;`2q9vE1! z(aBJI| z=}(n8ny-xDXUB5lfglB>CR}`jY*~RC#>fR34lCT=tz$c@1kjP8ddX zSy`4H{OS`3ea3%Lk~wZ2Nz~)8ok+!C_I~ZZWghEA(tJZtQFT;VhQM}Ex$2Fwy$>v( z@eeGj^L@S%zpc=_C&*%|DXfWilS%$GEbey0RnBrw@vqpwZv_}tWuj?MHg3!6;cup= zYU{1Dde1s@_oo}!)y6Jq1LD+Jr&3$!sxwN$5qPPC`pYW?q52NX8PhwjdT8EkIanAV z{v8-NI@lox79UR_*Vpaeh95K0ieCs_k9>ZAoCEi_mIo!$cINuRWV9K^TD;JD`q+@v zp@Z?6AJQjmtwPP2Vc$$i#ljKfYD19go|IrLT{kjD$3N$>M=pq0xOC8#D;J(0A*6i+ zM67ebnSeFAmdTgdpdhbG{ABjgV|sr?7D{PbRHW!m9Y)?FQ+H0wA1#iz1yy*SwP3n* zlwTNn)!6~inF7!+$dCajlNbV_67HF+CjQ%SiOBU>L1OFFnC+NMX7z(3Fc|lRO`P~D zV6`s(?&T zzvLrKVjfQcxz_8uQjSd4VGi})8KO}GPE$mO>6XQ)^`~%Q;B3@v;4^}anujFHx7v5W zc?f=JBz!$<0F*#sX*2kjIRF2ZA`j!8dxPUYp_Kcq?A#%^oE!<<5cwfs&?8DK2J)<* z{$r5rjqC!$pCkrL_d78cz|cbAKj25CuYiA6UkARW@( zA&rD0A&9;w-g`gKyT8G`|6wqOgRyXNt?N3@dHm*_|0{VskSza^Jn%BWC5QGu%c2Jb z8LY6Vgkr~88g7#0#ZhePceWM_L|eWX{y9QsRZ4~4rs=k>3Q*M3^A=Zm!n9dTW}Yy~Rb=5WV(H&1$o_isDB^_O3Vh$0%NX?beqlW6>8qQ_ntWq1pN8E^ zw}2Ga75jSiaXj@xQ`*J`1Aa788QC*yJB+A~TdChPjp_oC=*gkxA#0*B{*zj!rGIlpJw|{XuXaOC4 zNY~FLwy+b$Z}giYHqUjQ2;p#ZYN9Y%BU5{=+iqO?;yED0D=l$uP^HJm=<(faBsLc@ zC(Lfnd*dgjU0uK`K8?ssH1hbG+FHE9xfhj$E36W~C8LmWiZj9rAslb}ZAtte6<;`5S- zL9d>-EIo{5KWc01s<3z2*IpxZtDLNOMb$yM4+}E*m!HvSa$1dX9us|IEqYWA zYJTwHm*qxscxdjAnv9i_i5sD&+h!>o%^&-px-g*%PMGCQAZl(8Pp@Yqu;I;^f>8wd z`J)kY8Xco)_oggW7{-}hY@O$7EU`d9$&X@jc+ba@nPkr#g)b2BS!8(*NqS|LypmAL zj3|;h*(Y=5F>2glg@NM!YSreelg&md&*`i0D}~$rBUy>UrfQwE5PG&}<3A!Evp^f#@B|6KRr-7{1HLpwO0%0S|fD zQ^Zuw^$f0SL>QQ2rdpLB>kiBs3Mb74W$(5A(wx9|LsR+YxKe2HZm?w1gf+FOJp3)m zYlm%GytaDHzev$LK;PI(PQTRUL7XS$2@O2&t4SY#661)@|Hi|u^uoziM|z#WB$gh( zOTbJQ^jsRnbBN^{N|W9OI1yJe=E5;{9Dh@@6hKswh9lXZo zs{-H2SWJQy1iKgF8J%1B7lrJ;TN{9+wC}J7s@R{k{)HH6p9K^Yu+DF zh89SpSYeKq#H+MZ{I6B}AQ$^D?A11%MiFAu-W1BuWliLFP=o7_nL~YP+F!k{oKb4A zNiBfaNrLpL4d#pP4q6mXQ?S5ze?zdv{H&*y8=^r~J_Kzitz>M+pzI3AR+X_P z9RDxFGwlMb+a8b(gpmJOwfSpLj9$0wTSkPgfYqjr%K&6lEe*kZU5{{(s4@-l#2eVDr^Z+Ayv5MXERXnE_7UfgZ{cr@H`4w0eS|N0P zV9KXUe?;D#EIDWqSQ0li&q&w;F(vIm@ZxChcxhlen)>Jm+jaz z>G~BDFsz5sEQK$|A)04)F^GM(qgDJHPrIj!?$cww4K_2@(AJBsp`Ck5w-=HEuY{_H zHD})s|EV%Uxv;m33tEX)Y%R?&QP;W7!`BhdfR8;9J*CQI0rtgE3S zl5c%=>xaH}t#=P=BZ%SQrhcL3J6wlZ=aTWa-DZtVp$k225fv6q`1xAwGnxz4ZH|w8 z+l#OW_rW2Pg<`xd@r$E?d;!AS)kp6DsifM*&XGYGbsg;VjhKh_}6`aWbp&}hoD^Y!(GU4(%0WfKLmL; zdo3v_pdxuGE>50kA+o1`X#p^65PW7pQb)77YI!?N)NN@GMZ*kLC)JmT@|>)G9GHPR z)^R;nDc2+h$5XTmkZ#{K}H0w>`{!%I_N~v5*YN7kb!Yk;6v(Z>X)oxGkLR0F+`24 zGCcD4BI4$~1>2u@j?>K(i*f@eB}dV%XAf=d<)}M_yzE-vTsd#fn@=roahwjaf67cM znD0w`=uu+C*JUF?R3keV6G7#G1f!mv;Ox8r)XA2`HWh(Por-8AQ$%(hpRW6_mO%2P>Hb65KJ`GOGlVaQuckSd_c7uHH6A<|_1U z$omO|*g&cHG9$^$M+!(7XOf?M&Hp}}9k5ZYbT@~iqWt?f6F-+UQA@asrx)!lxdh=8 z{ZM09I4J(82YXVpNRmYyA(&<3{E5KVMSg)Wi56Nc)L#M(5gz-hM{2DvREj{DpS4yM z-7Nij8b)8Nam>#WjFuIxDpbvd_m&C-B!rJ3a#75P;{K`7YM@H1NU!Ny{hQk#lvJq^a2@TksC*o#xfy)Sa ztivC;E3&{+v-TTf6n$*!-!yS@ZyF?sglFHuLB!y{*#z$Lp7;RUO1>n9c0=<0ajwVQ zPZox*;n9mmFv0`U3p&_C?pSEVE;1)T;1zbF znKtarX~VE}He37iCRl655<0#@OEz&r#E(Zs98F9P#Dq zW^A4+jK=I2t}ne6D1UamTcI&HY)RxVwmx%O~iy*t@Z1-2r*^Av4E#7 zms1ojaZ;Q+QXupQ=I{k8cTFjA6{COF`o6o^Gn<~Tx;h9ck6`cuVyo55))@Tol84b` zZI!>U1yLM1S3;5N8q?D1qsa(yvzduCj?ws;9XSuvsEO<{TUjz)H%P3X0}fUo{XSz>RIluTHy4HC>Hri7=ggN8+?1Yp zBGX>SlZ|@wfi9n5lE!|r77mQQ2t(J3=Rc5aVMjgBms*WGyP{Gh{8Snckj~M>Z$8^8 zN>HZx{Xb#}ByM-uwUUMSWn|#w{EQ05^oaphLt{4DPH95o+|}l1kA8`W#+z4}IzCqM zt%^Ml9Pv9;4^tl0C`5t$G#=q3sM!qV;12`KXHTk9d7RSjuft(;mq?{*$o=)45zNr} zz~Zd2ARzKBtBA$T^pn$qzQG@?mfP-bYa|E9>w?ZJn*%*sx1JPa+`U{>rJj7l;VPKYC7@=}CI&nb*v6aJljog8`W7@j3R z@Zk8d-ST$|MX^6T_>92qPKLndWx^ccv8J#Px9^!QO#W-h{yk5+Y~b44icL(#IB-<3 z+OCAY6ebHIFRb`wVUEB#zt{`ov~Hh2{`RpVs3cCa-Avf$Q+$c;4BeJh0INT}{bz5| zg(4O+FllnE2#=^cpyoIONwC^%-zPDa2yekFXq;K>d$cxhht%8_8CdgGkD?&2F!2}r zH|n+7l+0CGW*Rd$SNm_98#;5Lu^7T}isF1QqWu`pTIt=u=}LyQ{^@hblyD4rF1Df` z1Fg6Gv~VVClp$u-i{wV1PBO)>53y3iKj3qd&pWj+55Vj~Fw}mFA`^ywUrxV(_A1^f zi6dZsscm<{y+3U~Q`li)2%_ojDjG*{ti+fNXcP3+{VZ?UW=8e-?XU()H>`Yk3ft3A zZ8Bz)=1uBND}#xWpPRfw-Q;9t$~7$d0DkF-@MKycM?v!{Zo=GsW07saPm3cF(p$gk z?j@ehX}D24u>E|8*T`?g+W4cDRIqv7ffsm{Q}~>%N{iVJ(HhtN0ZIb zi_@bK^vdAd@1W9Z0i@MfHN7E(Y$Y_xz?St6IwZ8bU#`f09>AXdy8?DAe_x1BD16!J ztDP@QiyhG~$99GloDzA|e5w7vSd;Mw+l+hIf4`!lqK+(!!TZc;W*mr&onUm401tl) zdeWBMQO**eqjWuATh@!jS#$8q2}e{R|5XJP3@=8)6<{T9q8axNTKVL7S3id3YsIx1 zDHC}WHQ3--)6ct6%$yvbSOan&g04E3L~IurYfpfSeXtxUjjJHj{aDP4?uR@{JP0}{ zqRJkjt;2sM9X1%R`MOZl?>oTGU(itF+Q-)B%OQ{$Skkg6azjQd*p=g??L&$X=ISgA zr0BA@M$fzOc;$RyY)FZ+x4ceC_oqHx0n1@6pTHUYb&G16a*VaN(MUb!b}DUhm=(RD zhbfW&YSs&2Ykn`LnXt{8YWIECOhrl*Q;3&LLPzguEh7y@V?*y6(^&*;dlxXv51Xzw zidZu@7!oobl!R0U1!h{R|9WEBa+AJ~`QYzR51i<-OiNyBd%ZjL?KkJd`uO-|TeM~% zV)QtzeL(HoV@faIZ7tT84;9(2lb86yp(S5a>6jF4ZBu=sd=cEr`4r*BMpOK&<}GSa z#AfZr_F^=MJDtAFgG&mra!4uR;n2jqg*ZR(^zTEdnrAyr+U%_eG6}oJs&pvR`tXnS zl)fhkViIVsDxe^DBpx(Y_SNOJS>$aFER4=2=fD%)crQhK+b*M)P5t59v>J2r3BQu>KVw6PvL znEmFIv@R^FT{i(CuI{q*Q(3H{u>ET=qhbosE!gpdaAym?uomYG3|$n{J=Z{EDQl}v zmgk6;|4SJ=1fCp8EF^{Ox(#kLv+AogAdA4u+)`SNB-VkX2rspXEwWB^&*XE80<`!q zxhTGh+;+8^^#h3VM|UB=KbaiGt54X;Z##!<0o!Q|y5vu9?&Pq{JdZBI(&u3vleLr+1LrECX6%ZQyP>Batb)nGDmVOur_TsYq zmC98^!d&ME8=xOVvdU;GdFq6l!`zNTVs0l!v&N3&?JAAnBYdarC+E7VcvRSIXJqA3 zx~|8rfk_g4m=~*946A^Bb#o`ahi~i3Pd4SoEm4-K=C!&X`AA`?cWUiY`ns+BL4+Lb z;G@Eg^!Iz7J*s5>G5+E#r_(w-uAVluPPZY6C2N2)2S&A@9AsGjIjFS(I@Nr@f?!vo zd)0o^46PJ1z<5#+HGF$2eH?w0j^fiI9GwuPy0N51c8X}Tpljl#HX3AIA#XByi)+t3t?fVq`#&FW-$NKZh|AGXK>{0y<-?17UJY~$Q^ieTf9MAbly zMybwnuNv?=bremSdpY67J=|jiC5Ej|$qcolkG?3*L+9;dS*jIdjN?z7*EzakKQgK7 zA+g60Vzm}7FV<1~H6v1)8|6utj0@qwnj}mTq8_ff1@8s{`Y~ZK!hvq(0*a@h`b<}i z$gP9w0*1}Y=SE9kvOk!@WgyPG>K|=FUdi1KPJ(5Rhp`KH7CoG=SFJZpL5k@>kSmy- zn}2)6WWAn@W4*qj=Z#z@%2SU6R(<6w6vOfWvm7r#ipW;n&@0?E&pEf_x|3z{wv_2~ zN6E_OjQt?N=tTKOD zWLJr0#z8y_<2&3m;x>Zpk zJ<0CdS|+DTR$gt+fCCkuWGW@&<+uegB~&v0m^rhNTJcCR!_9TACit@Q16!v`Ts4v9 zgP^QO^2~am^;HK5ysoNQ7j?$U%FAx|#XfIz8X?gO($~1otKOLx2Ssg_v!Bbx8lh@+ zN&eCfPrOuAG*>fQnHSvbW^5m43Edc5SS(idwNHB`0!q$nevXS&*g*NaIf{Q6g6^=t zflD=Ud;2=p&~RfXq-N^}e^5)@u`s#*bw9X5S3GEXpd%)=h#x>c0 zqP!Dqe>cPE!L(!XofuJv%TOJ;7OrXJ8O;?!j3I&Q#pXZ}-p>Moc|ViMv;mBV-McZRPH&-{9@T(Upj#2GlO27K)e=Rj@XNbAV>^ zSYGi_j5kbt_p;@msPga22bce!C@VHV|8RgfWyw_n!x1iw*?hAFkyja|-B{V1-8vv6 zR|xou$%9U1XCF?-myA<#stz|!Z@!m6>W6qi#?bUE*n zo-kevFwFz|Qv4NY9F*x#K{Oh$?9!vG2ssc6o-8*K-j9ODO1u5i1=->Qo>k&0l+Hl? z<@*@7t?nvhBnid6FkCUAljqHCD;W)+fWt$vkJ>byK$A67XKk++ap8>vJ<>z?*#=9b zxo|wnu(QwK-is$Y^x7UCf5izT*AtCTTN`U5YNt;a52GP$KrX@VZJU;!-#NO$GsxLg zB_OY?jv{2S;9P%965ac9mFOu0nIg+3f_n+!S^}Jze)G<_Hp6Mom%SgY-`7t0Z}y{b zYg_3lxjLa)&0zTwpGRgOkrjU{hD1FAy#TQaf{7qv0uKtn0DrP45ub$%nd#?$!HjAm zFf23`MruDk?-e`|5aBf!`(Xt04;)29$l9g**qw%=(2J>WJgo_J0Z2+8*~olg`iCM& zUiZXfLxLwXlr_4x$=SD}a5=U^HL`dSw0CsB=8v43kW463w}{urj+?+F(|6Y08)3GC zEJD&2%4|n#gUzKv$ogizVVG3!%?6aQ6t`reSpz*PUZVf3#={R5{tcW_VvJo3h6~zA zFI*MDZPvG>S85gv9925Q2ruTN=8z8ckqRl2G>GPnmT0AnbO@b+2!xRD-t!Z*IHHs6 z+(rFVSGM3YwU=-lho_OuP8?|I7E+O$jG;kctRB803{O&x@aS7>@}jPk1@l{9Qr zn{XBBzc}Kkb(GZ?8Mhk?rOR7-pnT34$bB-v?6`@W`fDoH{+b%NY8D8iE5dLKKkrL* z57VKdrk-0zY};9%8tZc+wcdHL9!F*zCS^tlV}8!$lyM+s>>H|g!hO~X_|`s3^CnCtij<&Tbmf>#FX|z#1I@1p_<6(RMf~x6mbcf8o743&+QD98gvaC*G#eVZ(gRj^}GK z3O`49c)h;*qQzG-jDHkqIJ8ZYZEl>zq2&AJFxTkgmnxREFwZsQdhS5>kfnz0UqFm8a|D z?ALc7tRL^P?hySU4#g})P9O8odnUbO@^_1l9Dxj$4p6*|ulQE{l*qm(UdpQPJnUk? z#M#YR@OG=vz6jYoM3}(I$cQsU-1AIS!wF|gw=$aI`eNZ-rZ#@OiT)=t$%_B6>--YX zyDF{HWGU1)Q{HYKa`&OkEf1*0Gc(XD{&n+0t={J2?0ky;dkqgs`BNZZ_;0{pY(`%- zRLf}7Nbb#gRnoqEwP5o10705fA}2*{bR)_8Sd6{NAfs*4ixQ+;|4J4lG_limn8%kr zrl!w9;^xdL_skH-351=57yFXj5v|X|80)c8GAx0IT?**J)b<6bgl?bbaTP-k;#Rwx z?H%l;IG4ZPGvGx$D+mMaCTD!l_g zt~b^8b8I8&KoU`)by%V$bZ4U>c`J-!Cj8_t8MxQxA~?LV&i_R)WbrRu%D8_wR9R6v zn(@k+OJ7}P?zNh_j0zv>Oi|Wcw7$`b7w;6I9k*c<|2zp@x&ovPdy$~h>+$3F>Tmmm zs`G~0w&x-?NOFxzD;N0-Eo2c=OQTXE5S47a*an7c^9b#*hqu>!Hbgm`qy6;kSv~;< zpc`@3Ot;4V$k870ooy^6-9j~3FRL|pxj&sC0xKg`0rj!E>(W92bK&Ov6}cMTl!qwI z=xiv0z=s_O-@`zZ_el-SWW80=PB&Le30eC;xoM zpiSq+HA-UM(0{362Ou=wp+3(<@%x$(G**k4L&NxgJ_VW&stBL|4e_^&rsL@Z#uusI zKL_L*)C@Nsy$Dgina{F zQuZ#rKEh!|1YHCi!|LzuMLDUmSa+J$x<{9jx*^>8`W^Lejyvr|@mn-&&8>s?+ASDw zHFzFr!t28WD!yCkiL>SRi}g1OfFuXuZH(&pfdJ+Z_ho!R0`+`S7q< zCWRq$H#P-^Z6?9p@#fEnhGS*t1KLB@qU#gM*rBpU74XG72p?E0-Pk@8I9@d=1e1*B zK&{aAaIJk?ZICaV>Of(Hn@W@+J|qmaE@3~MCwwj@f<5^%fX0NzC6tTxH@5dk!@)@j z*r7X+Fs!`UGP;^gT3p^Rt7>sUoGGKhfppi}+|t8J*9b{+jEtwFOVRV}IJU2}KqydJ zE4qyCpjIICGS}&zi;AoLoOC1L%@!g~eqsuD{z95jcIMK+6{ENxzy^ z(%}1IH7VaM;5TM_>d65JLBS_E^qDVpIR7k?$Jq1&k#ifFjs;6x1w8Xlm}&1HDZuCj zv4%6~2{Zhz zjitpnWGZcF78SoI>Ob0ug)V8x(n4h60qu~WFPw9J=1aBSOPBVCq5|eC;+CFeG4`{Bl00ZGcZ*|w29-MGXH8-fl5A z*hULIiQJ0iw}M#ky}(<#E<{RfCA?t^#gW!B-g!zg+Tj@O z!;fW=S-NdG$I|O`6&=KNQV5r8#Y4IA@Y{OXs}wuKezwg%%k@KNS`v@`Dyx#f@Pb5a>FBuYaa&^g5^@a(|YSFP#>sY z*&3{&DCtwDRARTZ8WVv^L=e+Nq*Gj00zHqAaR-l5at&>+KM|Pg-)G+c`6<2IW5YLb zQo%OOm(TKj9&z!nQ_q0ad3x_#nL_45u1CGXc=&l#pb(Io&qLU4Ae$(_;1ADy#x#TO zyvU8JL^ibi&9`^EvBO`pyPHjWCm`60MKK69O*6G~e&EfwEK+&fPYx;ERXK@N?qU^1 zn$B`EM17Ke@CxZ=As5pUjuv~EPCj)#36K_uT!PW@IX7=Ua}V zWya`878n{hJ|@c~e_PRQZV!MrF)~`tZPQ{AJxLO_7rg8@pI-$?j|C#Vn~e8hixV-2 zyeHqvk9GxT>nvSQThXNS30t<4o{kbGM*OUv#h@yPfh}*mA9C(GkYN;PLG$%=I}+YZ zk1Tzs8@X@f^t+RlXr77zF(oKXcZLAvg*VUITi2 zo;JQ?DI3+RMHQuyXScO4KTor@pfEidEFqo(xKEFt>B`p|Ti_d`7wUKn!=k8CraqKv ze}9rtY}jh^^bB7wRxkJK)>-`!X<|RR40;(74P7Bs8{g`&!i`e?1Cg6Ui%oi1v7v)AsTNDYbE-Hm7 zxgK6=v0)6DiPwQM;5bimV;osz)i&*vSjkME`B70lJhsg-Ljauv-#W5zduqS6ny;gtck251cF4OYdY&wVS!b7rcL$#T>znW*KVml|iI6iR4 z_vi%3b?1-!3`qDn8yw$`${Jy8*`rat6}k%-y7oSbUNy-6A07oPNNzhf!PnB0YA~?q z=xu?aA6C{Cyq4Ozb2W45 zq{^x^8%npJK7ek2BZ?T^oc8iR5m?T(`j9-6Cj>mium7fq|4K34+I;PBDT61}J~1CC zvBdUj#h!uJ@yz1WKj;;4vYCrPSS?YSC4}SMG7jDb@Z)Z_;T|*C;838Sgk5}82dO>G zSVdGlxw$ifNjW*yn@Gc`%50?GK3mvY9av^*TvwWc?gp^M4<^gB`bZ6Ul$-++XsIA3aAnHv!^G?C)={!~@*5uMx&0bvo(YV^&IxPFk2UEqb$lEr~|Y4}WARsFN9#gr`n1W}K89MB9!=)mgo2n^%3_W^@g7`XpD1lj2Agnit5|K||Ifzh@J;CTrs zQCSghRY;D14SEPc)2v|e4;d_hqBy_QU9Nb9uZ5t{rzho+{JuAlcsa!t(?UFk8|(OI zuzuBFy1jBVMsnIhLJ1wo%g-|V*dM+CPfp-5oNklV-Fk4&TK_REY@yFGsRzAETU(re z!A#)`ltx*$;R81=H&kRcGC4>8$u}|x55ZFlN@(5-N;{{=H2#r zbEqrP&or3UNk$+SQm5<}4I?K*phSm(0{dN_0+|>LcL77HjbJmYpzJWNw_w>ZW6W%} z*qSVCVya`b*`iQ51?6$Km;{Cwz!P2v?C1KZU9OGTQX99DP}xSumZIbIYhS1`Gc~`6 z{k%esiYJZEvuHJtf&LN1a1!jk>{V^je`Un;H0QR8hCtAmgS)Oa0`rGYNi?Sw%IEfB zpRT(#?XgIF#mFZivKX2QZ4y1;UZ3>VBYW-8IOsy?x0Zd`7SuF~Oz%^%ZoQpf++>iq z(M~;Cm>%S3zd6q!9FF951DuA^Fq=n@y2#8XB*sQZlZnr_ns`~x6cy*eq5`F{p*yv-FI*z^fTd5D z>~gy^WqUWrAD1>FytzwC{?kL&u&bj9vV{au1*QIW~Emy{SrQE)7f4B%XfOfdonKRWMET;6wno16`B!90?F zpkL?rD?-?h-ud?hWy`m(Wn^DPI9hw^bWtHzWG!vM%!eW6u-#)4vdb!U&a4? zwF()cy4;0W4JYRB1pu4U_leNvn^27@JK`#YZ^%Urky7w+kQX5 z)iKVom+-TszIZTI;9nCpBJ$Iw@fgd<5Az$#B9R=Az|7+#+;(BJvc9)R9}@t&59#Z$ z4_dl=vC!ry59rEfULlAXfUV$0f)ys39`Tjcx(zWz@bo$7Whb+Gw@T4>5^UxSyvIB} zqYE?>`Q0x(oB$fAZW#MQJU71=%F4h+Bm zoOPLQ8B6>0%l1RISj%P8H~rXJ2GlE9(*)FnO|+N~)2;=D&0z$t{?1S0@oynulWyJf z(Di7WkddJxvtCGB|1_HTa;o5&6X^m6^X$cEc>7kKfK2Toqd*Pf_=@JG4Bt0a!q)mf za|di}jvQi>^R4sV#tXUH5=Lp*meEOJd@5d<(T~b^pErYh8yWpiialXr!Y?~(A&oY! zVRaR&KilPPqRMgg6o;ac+>P}VW#U{q5~R++|MR#^Va2L1k@+<-xvl=n_#_8k(|k;o zbj~2T&_SZ+a0li1bm_HsN!A!Z)yD0}+^mtH-xc4)A-{RkWz4aCh;a(97cJ7dI7 z(U*K23l!C<<5&5R53&Z(Ov9$!??kakIm#i%Ue@t_FRKRZ)OEal{ru@U+sx{i`k6+z z7w*owUMnGX7tmNJYKiX8-&23Bo5eJa2k?nDNjk8Rn2>VzA6>+oM!$enIX@riaizJF*hgf#%IzFYyeIV# z?31_igj?I72imjDcdtJ0Vg-0)n8i>{VK@tUA6S?Z5xRk;sE1ddGRv3fdopbEFIJ2A zT4XgtYJrPz5AwG<6H}(EKo~+Y%I(H_m|B15&dJs>Jh2LFovxRT*?JKTL_ZwtWUqL^D<*pvC$!hXAul>0oogdCF?wux)yKRlvcnNz>7E}+Hc;L5F}2Rzc@L%?)lSTS1Fkcu)}s?!P#y&#38LY=<<6Sc`c*h*0>D1^p zHo*}mJfFYN&<{3s0CZ#p`nSifG<6CP(w#erNK$1i@p&bj#~H@a_DKF^`BGYM0#Gw9 zF|oz;=wz;Tad2IER>3A>Qupai^Cvq5W50%WC)?aCasIw~gpxzi35*8h)l}YniKN!^ zHj4!vwhA18qtKg;wjS|Rv&}a;=X_i0Gp}ncMQ~bsn^wg;ft3%9OO<28yEU&neV`_X zBl^u!DEeR2EK=LJf|BE?O(*YHYWu3n46MOvl)TIkDW@E4tXc2TRwrLw%MzS=*74_f zA2ZI~%K4k#MA4~M_WImF-X8%#k$%8pk(^hKLr)nYI$%sLPvtRnH*`KrCrgfcF#VC` z{kf1~e1`~)BDs_tyW1(&Aio}o!P|T%d64+zPH=7Y!cBhL6|2$nQLwZ766Z@@;fY!Q zv81!$C$%0l%K;L)^F|f3l-zxE?3O`$;p|fZ9o?)CvlR3_eyZS8>QZfu9==$Y22Fuy zzmyaxlJ$E^gkvvzvszhVvLl5ZyNwnvYI}c8_se1+Z~R4(Ob5=`I-Aj|p9QOZR#5rL zHMzkS*TOyNNLVw!q`}_yD%#cSGkPE@tBob=q;qC#sYQo?~Z{!5$1E7!vaz#GAkPg^-_u z8KeEtD+|?*TI#0VaYP$<{hCnvLNaMx>-ZwMM-%lc7;-*Y)aZsiO^xQBNV4fA_<><( zL_WL#Ph!RVmzkxPDF)>QmIkDgxkiX486r5P2q4liaBF?#iC+ouNfR`|@uuA`T3us* z@Y@>Kx2kK|Etp)US)_3kOr5UB2t+v^vf3Sfe5L(PK3RAj;GAz;qMr2rYQD@VM^a7H z-uFVZGfq;&+`s+Wly;oOqnq0mL1IEF(4Zq?`kCWF5Fz)yW2|#z*Q7#~Az?}SX~e|{ z0(Oz6G3e^5(7U5NS^}cPNEYG?DFV>q}{r9XYL{9A{ z4#zK;+o$K#kdp^JMad<_uQfespOD-8W&|5ajt7Z9daQAa&+G+aob))*IrgD*El-Z36&T9T+v0lW6xiC`5mUC?Ql|e>L{bt?x(Edn!w>0?~ z0U?(1fSn#eC|K;sXz}!am&~>C(sY5Mlo|xur{S5dEjsveY?lA}f@K_D+}AGEf9wmM zOV0OKYp;?C`%z2eU@E_{@}pBKN4$(o;1?n_=EgD|Oke9o^skl9!41{@RGOte{xi&W z^=y98c+c~xB!m=Xuz7Hf;_btn$9gYV#mg>@vMsGj1U_knA1(UR?{ji}9mjOFezRj? z!t9Zi6P04$%CcU|jU}z-jOpq?zd9$Il?1u%V-|C(K&5tjzH&TC=!Upf55rKL*5Tmccqk>(Tk=YwcRAb$AMe|o4P zkJ}C>(*tCyok_J%#K0-wK~sjIs6{8gwm6krz`Ey8X7wh2VDBoQ}=S5wC~iP60$L3IY*CxtV(#6VfE1~ zm5(uYin1T$zPv%+#ljgnnT55hsVg8;WVG;HXw$__mBJ zpxj7~Pnfj-0KLWpFa6Dcuig@H6F+3EX_0Ne+a@Q+-GruKkF-PCM=ZX{F-`6lbN&A2 z5)~+-dreP>w9bKrDi-_mZyJW?mjNwqeH*7v5S^gdm+vG+IN%1^jcLS0pF$scIQ{i}*r9h5~6omeZJ=8 z53z6jQS!Wnw<=Y8(pPkLkU|hs`;4r#(8d|-yISxgy3B>>m+n5B$TF97$~tiQDb#*U zjfeYGlxQ%?1y}=QSaVQ)<-T+8V6uv9m!4r9#57zpXLSB{_nSt`9@Cx?TUaaoAok^B zx+8>ha;E>d9&(5?JVrSRT*OHdYD`PeGj7+K?ve?y7S~^a+^6|ZsIcgH0 zN(b=~Zf)BdKo{=2V-pDW1bE!%2+bK4G1*ux{{}xQhT6>1NQHcG8PI7%w0vCDr-`7z zPHMY(27*TOKD>UJ=r?2k2?)Zip@FIGSy!Sv7SR!7te>WXyaRs_d|7t%JXE zoJA5?lqt0o9Y)Kf!fYj!NHCakWsL-#$)@{ltQ}&pIc(W$?8Me0<&}f{9-%ws1yiKd zT)%2eyHdZtkZ^mr&2Kb+VHzI_uBR1)@6F(*SZjY0q%lk37HDuu@kYWEa-rAbqfT*} z`nI*Ty?k)^iAD;8{X622SG)B zAuiPOsCY<}9I9@3uIy7MAYImz63%7mHM0$73c_6MWxn@{cm)d1_8K)yG+IfIav0K? zPRB1=x#?YhhbNOm6cJc0Q(u57CdqFuD9d|(!JRCjjI7yL0t>hAa=x1WI{Q1uZ@6K` z)U7)Q9XVFI4AC4q)ptC9vFoOxaM=sQmM!p>G&&}u9ba(7DnIY*oDEW>Ha~ZA3*AdJ zxs-uTGl0+R()Pi&A)WH{`w=fY~~$qLb7j0$)t-$?|U&9*2BCj$E6;<&nmx}#ve_rXX6-2O&$ zNBk%2#$3&Xq&|Y(-CZ$iIu5LVM3alJz^?^i@pHw8)JrhNKc`ZC{;ZwE?DS9btd9 zQ;Qe*sAjKILNwW9d-u|MMuPZ0Ss*(u~^t#nS&Kad!8tNfuC~k2=$!dzz=TAwF*6x(qtyC_8*f*W6Z2Y;h z!{5-Vs6UcDjQ&Z%dv6`#wh?!(J>Z#q5I)JM7<X1@C6!NF1 zs?{$j{@P0(Y7@eum4KrWJBhZVP}1+UV)5i>&S!-4)@s>c({IF^RDdOox_z~jGz6h7 znw*@;G&zHIr0Vj0*-*6bRVA?PgBnR$lxPI`|EC;~?^KE6xL*w3SFdEoz}f7tic8$? z@ZHxm)Iz`Ou7oS-(DQQ%3j6#YWW~4)fOjPMl)x}BG6bC6jg`AS`z2OIs;PtUTax}< zp+GsK+zZ0ZgZg%ztL4@n5?E@-o7CXasHBxYD^T;M2cmOcW|B$0p3Mv{HFKUGd$?K^gBy&$a0q1DvkO7Hch-Us$kCYs@tX0)askWh8Y#n#zAkOCSi9 z#YuQr39XL-1Z-dCB>|{KO1uO)Z6Ko-1sKS2rX_63C0ZcTg)hM|Dbef?~&o0r>Kl(=ILzRj1N#zCfH5$ugn%IBDljhRpJ5=twudpX# z^ca@r&EEH0G=H`tDUB^G?WJpW>#oq`%OaZC99mC7{joXE6rp6|ha5NY{K=HXGYU>r z-3TSVEc#Q@Yk+{NRgkAi*@{o`R#KUQXp72TyCWX>;dSuYwOE|B#k+9Y?;r0@J3ici zd>p$4rpgp65#8_DI-W#aaPZ^*>e_`_lOuWK9}Aj z#2gZWGb8Z22AorBB6{DVU?K@qFit%2uAu=R0qCl}isv!Xtr`2+@U-Jsai1I{*H5^N zu!U~psDg}u!KP27j1v)SMPQY))x4c@H|qr-iuo0&d@ zSvXjTCc%d#b6?l~{o&saMK#9Tx|h90M3c}pfFhg?DK$l*_UYgARwL=XKak2z`iO3c zHvfc@SIx-CS3e|jm7OTyPm7w&c2e5hJD5xyD*GkC3-FfC?i<>mbsjmp_ zZ6$g!JKULqUG_6fHF5jhGIfKz2pBqNvZ5@*u67u5f<@{BpI|kp7m>AEjT%5YL7-Ir z+H8c5L9XohoTi52W#qYXq;h4nPY)GY&*`K*ip)fOp2A}2CtOB@RBnRb{T!PSr>t;U4yjtirBok|&FSLCs;DsO*h>UCs0DK)_3EK5jv(Y%u3tIuTTwr{lwAw&_vYZ~rxde9-@9e-8KXa8;BCp6bIjWj zUoLjeqJc`}56lE=K~8BdD^|t8ip!St-EL&U71Erg#|}R{&051D&m{ZJWUp>o`kl<; znI(_2a=#>1S%z3~Ueu!HD(BU&=8&>5g>TvxwcTpeC(XGsi1z5@+MSR^M?C5CHe9Zi z?Jdj$2`&=9 z4ZGN@KO>AI`^}jd-#OE4_=@MYt}{Mc(}!Q(%%j2jcS9v*bv|DhmeJy*zq=B|2oNC1 zn+3m}+!qA$346a>>iN}9jIG@fF6qNK<3g%-NWwig%=&h}6WMEO@PTR%KdF3f@h!dl z$Ghz>Xq6Gbs#^Z(8hBL;J?s_?3z@{7c^#1_Fqo7IdoG7bdYW{@?L3Z`j(N}@U37dx zJH|M1kQ6@w(8x;oH2h+pr>ESD`g%GUx0Q7%z;2wT=_e}5(Bs>ah`R{Kjv1;}M=3^3 z1ZWC=ov!8DvE{uSmk07m@X=nb`PEryKg=&Ga(;Q(v6FD5zmTWH*_+Tk_0B+r{tdEM zt{AO9ot@HSsj*jJ9hmtdgdrAUh&A^}5p!2xgMI4f8jbGUnvc!Vb@lJx;#}MBjAUl- zlLL!UIoJaMjk3+1^HLqN@Se`M3lrCDO{n1j2gJNaD2h6D5Oh^4$RDuMH<8#^%8;Omj zu3tnFeZITBDUMDBj+BPa(hB>&faxfDbif@{AFTUwhz|N*&>6(s-7X@(X)b@#>8KeR z8Js2ch9H_~;*#P*cF7f6UU;xvExZ2$W*^+ghHRHA=&t?R)}6P_3aH`p!$=*Do?fzg ztv_lmWJgDqmRz6DR!ezIR5@ISuwqn?W}zY7-5%cs8-9ZbR~t~R8SflgfO**xlpGL! z4}N3F|fx1Gs+1bofZm_h5pU@`);IR`%F^qWv$oMd{dWC-ZfpQ^vbi*5_Wil zj}bx=$N7wq4dK4c)943}@WrTkm`j4w5I{Eh7x&|$6=z~}ylZ$)q_15BQ`yFfGMfhRyhW{^RHJ}C`RP-UJzZci^0Zyq$}2FYN6?w*NYeT_f+rbYIgF@X zV3z*)4!ijFekO7n93&ZeI8WC-BDJAa%k}92dS4Jl5-zuh|T3(bQHZS)D|F;R|)yvRR@Wxc$g*N(^PwkIACnSMCn`r7gQ6+}K1!S7A`iGxM_^ zj_>UzWZyWr>y<%XZt*(Z2@AS825=y9v%G7vn)JE!aw z8g^Tu40WSnt9_#J=3Z0S;C|G}ToE|lE07wj*!=WOqm5!TUKsr|E+@>tMYtT5Z}iy3f`AvI_}X|Wldd*~*gvdX8Vs-LE)skAK3l`0qO0>-Dw#2D z#ZbP4{0Y8jtszx7W&k7BT9(BcGSy3PhKHJ#tH=DFO#Skc{q)H~T}64aqpsSYo!HA~ z=g`rZ?LV#X2(5+)q##469=uz>s<;Q15GChE=<#sV9F{BxPC}pNS^&=QoFv zv|V^ruv)M>HbZ)EIH!)ikbx=SsK7LkD2j8KjzrvTiFE5Hwrju zr#q^MPJ?Yi2qGDw=6#~4^sLfgdI$x^`(zEpktPG*#%spo{c>fYqA9V9u6X=(*pKUq zXOk{ei1?X2d^yTbbk*{I6qSF0ogVT&T3?F@xy7%|ZS40(iiu)Vj$-)}$+zo&vc5Id z%Wsq)b$4eD8M#z1zLFX^{Nhh%<6OjrmJ;>>7FjA3EnDkWHc{V$l19Q}w|K<@yC`5P zRK8mg=Y=rh4ajT$XuroRw2qBTUwa5NDIM1hCyIK|7o%FADzT?_R3I30cCgS9!F>Xp zA&R00GG#D=e&VQy;6t7$utmjAY<8uBb3kykL(&S~AJNe?yts^Ud(m+8;VE_FWpzmD zL)kO4AnE5=3{JrM&BJscoWH`WC8Rn7xAIzLR4lK#Soe5MozGz3lkwtVew}+l#E}fG zYud-408kR=fQac|W;1>6QfrpP>Sa5ea%+I9ryD*8TXe~sJ84CLDYZgfK$a-A-XoA$ z$5-ovQH~4MA%?_Mvu9SxUFh?irmOy5)K4z$m#gzUO$g~{5XAMvU;^9RJ4igLeAqB( zelN1XNS|@ikdlwxh4r)cV3B{lg7u`Zw4zZ`qBn0OZ2l*Yz-i;+GKMa_&I1 zO5=acX3JVwq>3MIXkC5o)m0`@7My)*Y*rxA4kAu|foN%#A;_#HR4EG;bOyqoUimA| z#p2j>>nE{K(^wg&&a_DM$;sVI*0>1pcp>RGQfqaXTHBni_vv)*pOX zB9wNVY!*AZz}J4n2D?pX1riNy{&U4wKo|I0)LK^7RyG@a_xiFf<-?)-KD>knSl^Cw zY{F+tmg5m;l{&R8fP{t1L5~DY2DWcj?{1YoqS9=TamQ|k5SOA-yZ|}tKB9#7SQk>K8X%dv~PdA3-0;D7qH*kTt{`d0l z%lpfBU+`*>NPBVLIyg<}rvg(GkM|q4q&`pU6T95=Daz?bI{_C=No{p2dKkDM`+}Ar zG#c>VlAHN2WCbC@;DQ7$z<@hVxPZPkO=tkM`|mC9?*RgAfh>oN2fig7Akfv~f6hFB z3p;;tmj}P~;LUK>l*n>O34bUe`Tvytt}DH7FT{j(*_MDobI*N9V^Uq4MpN~ryx?ct z;&D26c!Uq}=Ym}?%F7rS8P{6^a}^vi=E*Pny}3SQ+_d@CYS5L==&#@ZTrC^9c(Ba( zj-KvRzd4MAAv9(tEMx1({-BWpB}x#xmSz^!X$cJx&(Q^gM~4KkWf-Jlm+74HDKVf5 zNx~nQDe93xsoyNg9Ke0!o_aj58I5>B6>a?sCy54@XGXsdNmqFa!mCV`sZH7a%oL(> z&{% z%FXP%c1)`BI|wMbdXh=b$@CJ!S17)R@E9#poE={XAu((oLsqsPGiYnh)bp?f<1>iP<2#VI9fUN9QS$yrjBM;W-2O~1%!Xrn)hyfY zk^%otC86_^%SL{k6vPYKZ3*%wpNsWX=;z=T*j-B9oU9wDp|^g;B_zpr!+g8XDJ#yY zk7ruh+~E1$!k@69iNR9h7b1+kl=n~=Agd~Cn^R^G+3T*e>%dhJ|Fk-NG2>Y_1lq>6BT^|6v3U-$;_4Vi$Vz z%Yh|Syv1pA-yPjYnw|7VGs6U37Lic@2Aw-=zCT%!Uy+=m7=m0ohe@cpe4$cOm))#F zBYf5TwmZJ{d1;q-=3_Uja_l~{x*TSBeM5Lj`GCW7PyMA#UQUM{)kF>_qZ8A* zhl*85{%`)oCnPiNpeO@pIEc!5{kry6C8+XNKO$^N)!kWbFYh2scbe)FfQIr~IcV9@ zdEk;>9|Y0t#P_@LL^6_00XTvAG9E`+roueU_(A!10NP19PQ+&%|owvE*E@$Bm~DNHvzcqL7JwFeDoM7liB$ zV?Dtp2lv%%L?2IxxQGNi#BWPjFibknxY&d3H;~AY|?$wN3S{X6m^aNK7Vv%lJ zJL*pAi1<7Co}?we6|c=LMMO`3$JA7vA(R6`RAMbQl;9jvK|HA(&dEFOVP7-6qxoaD zvMo{bO&r#tETlxjs;kI&kA7F(ELX>uFD@zDe_^8+uZ}U7lYuqNptQ*y$AX!(>ij8JD3(RZ z$CX6)*zro8Q&Eu5QVkMlZC1!sqqpC%`;2@aKGjd479_N@)g9+uJZopgT0?(l_#)A{ zA@)d7!&Dsk^UWloCVdp#kYmb%@d2=9@ojLF^BK}nCo>VC9KOi%)RW^a0{~Fgrx1Jm zFW9$CYio)&a%?H+u60QmEdx-9+`Ng@Fha{R&h)3pVpWWNtYbI9ZUV9Y<)8#(bXRzl zpK%j(QT9^YfE=+j!zRU|zBFtlr;#@gS=t1?cE6hG#VGTNn;UG`iq7V-UK3LX^`IYo zCKuiZ@Xw4v31EBw2S<2aE;9V-*l$9?rjOQpr8MH`S<0& z%O(%N5!e8TfaV^63^<{p7qUA%@BRUj`TTDH&QKyU!TUl0@`;5241%);{syLbKm*{$ zB!C|f06+d=5Kz(cU&Mm?@xQmczsLUo5y>ndUI_zaBmY0MKf_-!>^AFT1^xk&fz}+E z^---KI<+#alcYY}w4^uS)a2#=XoVsvhxhEhHqZnsAMLQdV#rhkyDidVd?~)wtQ~<| zaz1wVXH5MWa%Jq>Y1$JXco0Z*LxCWWsGaex8gi~OxXhacc4$v0f-Ma)Ukq(rjxSv7 zAA7nR3*6^$jn+*igvR2!yvhB5tdOM=7@eXhi^ctQq3him&mfLPK}P(yZ(-;f2+!S! zX+lj7PnBA-@+1K{5*fOaPU7B1L@Q+DF(-b&8zXhu?=ok5uL3z`*!%y!_Mp5K;*!DG z$_46I-*vS;14cE+!u0WcNStNs4266r(zCBRamgchkb*?(!FfnZb!6S1PL8Cg`(v=h zlwl9PFfji4?9Z^^tCA(Z$cMIZEGOvS-OKgMj@b)OXkom zN||M>)(SM-gwp&mR7(jjq$eO>n)TEd(@=ExHfzj@ocr}s*tk?!!_n+?un;ew^QwRu zNyj^5o?#UFF7w?3EM&}TF+pbC`QS|3hToPN(R8n3u5na|N&Y-ZH?~h)K4Sj~>6;={ z>ccbi9n0-HGEOz)6Gd7JTbmiD+d~$bhDd-($O&CN!#G? zMgiN$0`54_oWw#WHf6}+YC4IxMR;Oh$^grV;ZRM^efF@>9ht;tHC~VVb#dv1MiEW# z%!ZQb$~(Gj0lM?fj4gqKv27NAx{mXw9iD^1qNoe%Coa5;MY0dq=S6Z5p2jy7NIb1R zzX~>Q6-Sd4j2Eoll0qiL@Ex`4=vwB7;=uyPZakN44K-$auwG)vA^@pK^isREU^sF? zYl4vG%xK7(%Mh53mkNj2J?}x#t%)$EZ=?IuQQVCM9eLjUOC)ARMpEC1+{Wk)4dl~( zYg|)$jHFoW5=lBXK`mrnv3ugW?+X!N!VKg~i1Njjr84%v3ZeD_%k?A3TpO&+#Q&80jN+E3bhFBg!dfSbZ~w!6z&no#^NNqxzfR7pGfdExop+tvLoi zu*|Q4$gsS6%!VH~O^J$YHWLIY<3G#kEW%D^fRs4#3`1zvvIzRZMb-fnal@}(Z%*$MewV>=-*TuS&hBep$mU_oBvKibmRejZ>UM4@A;tD zj`fAC&Tku!ga|Tv{lr{5kr)yzG6R3>rCAM!g}Nl3a>ZTxA^|&`K)y`+7Gl2V^?#{{ zhS-*CM|W;&K_VpAn!5=QfxxoT`4|;l-ui12OMdlWrd{HgCfz#^GNN{4MZ@pBt|bSl zz;9J@VfTTGPxUH(mqD5bY-g6!EqWB*=PLZTwa;dPd~*NoyB5 z4FivrG@pZG+&MzuxUX$=Pm<{7_Fne)0{Za+%u=rBWZs|dNS#Mt;}4SyBQ(ZDiPr&F zZ;bVoH*Jo6{cgC$V|@b>mh^kW?JMHk06Lz)OBB%Rs{aEhjMY;&1fMB2RmosK0%@&-)xID5>N z&IGxVrL08cL^e-V(sL1x`=-*rSZ`#YeRGk zHzn$83B0NIatr^yUch08}Fcv*nB3{TvtlE!(Pz;9*elBh^bNXzRf?gQjPnfqouYq-f#5pR$lXQ7AI{A2e94-}w0@Q5kZwurgV( z2BOE{Q%8@MlG!gxwWRYwiX{PDP^5Puw!vrS+^rK?O{1J7*4@Hw#-?JZ(oHX~s`?oa zbWjpofhL<+4g*EASP-He8ak@`;)sQ-mOreT02!uHu*dJjpX8+orG5DIuB*a8@FPYo z1Y@G-zT?nh$1MBy!*zl{D>^Qi>QQcH#lmru_{=3O)XC`FD9?{SyPEP99an&aLDj9_ zxko)^P+FYrRdX}ewwHMhV%8@RIHfsEp-RS^MI36g_1~!OIx}4QGk?m1B1%flW=(pB zt3NLpmJWJ}F=61z*mG~m$=-H&dO?{ZH5L zsm)KSVA3H*wCA%d6D-5dvn2oM5&Q@kx|l9h%mC2&ZM1mZ4da{PX3SfnwBInkx$Yf- zwy#|DQT>Xl_Q%EKyt&8i`+IPWq;-o&O^XK^4~DMD;B=pPF$uzqxI;Nc zg7;rT2p`0vbY;)HdyC)S<;^-|eKZY5TJ=9R)1$%Vco|kwsR*F*Lrh8H3QXU^qIUV^ zGlt7W43KyJP5tW8d36&o5;;Fg5kZ{AZ0ofkgXGrEieoGHjhq!7)q`PjiJ5WHaLoGO zNSn3K6-k)#nXH{~5>DJ|Gz#O7{T@^kEn~Wcw?;>m^&VCa;$ZKCQ=b(B<54cxX;HfY z#LJJ)COo8q^GBA7AnTO~+E9_QTCEg*_}VZWp`g<5J=Fpc07hxj%f!8!CIcvgZj{CPp)t8&!c+WgQA^ND~^j|kidY&xf zyGz$QpQxFk72pt{H^1z0f+uC(4AzTCmyktAW6K*E5V{Fz`x(8|X3Y1Wv%KkG7e5{t z?3P)Ms_8)KQc0l)UW|a|ax0M=_N{?@Od0b`m9FYT2@digmn;QC;PX=2D+e zi_IE#)a=|`)LJZ$Z2tT?C$gMf(kS08-1_D7;EfMo1lMAe1)lSM^QUumR?|H`u7ont zo?vSq-J3s(RS*ACoJPNqMA-r01p7g4J((ub)K1FRJ>j`*`3(yrOV844@#Rs*@ovE? zsq9p&!Zi8mNcpi)@iMIE;y&wGkT2kV_O%u-rYhYYZF6^b74fRgO?(QcCx2C!RCj&) z#sMFPU0=UUs=!FI_ajA*c!`5q2u!9)&yfKL1^Bk*aTuc$BE|JH36iCE8@(eT&y@2D z#V`;hQaI)fRw+mjzS^vaVL@_A7}*m8#zTHp?gJsKpf2A-0BWqHT)NM!K&FdguulDc zMpfxr=Ad|b>kPSJ{U_G#kYZzN=fXTAZrL_ z+piWsZDeqM=4D$6gSI;kDN1B$y}tRjDnUHQbpoPQI0TUJ1Z*YwLv+RJB;TmLWG=ID zTU25&XpTOBtz2j3`>Lc(1f@Z}rZy{6y4NOGyje z)^s-xa^)%PM{{|L62UsJcDynhWJV@7{8!632ff>o7MjdJswwjS) zX-_zZoyNH%X5-!wy`QxQ1S7(}cv^L}yn_w0QsIZYd>z3EmjMbUS`>fGDIT-2*wBa4Q6*(*JeJcb7UNY zB6=E!QdqxXiGZ-Bl(S}q7a3OUMPV{>7K*jiHnoh4%5zP)K!5NmSQp@ZpdTfsvtIwF zB>xRm8!2)e)2+5PB`m=k+mfwH&(g4!!StiP4|CY!Pxy8ERT=Y!p8&(FI)|dQWD$Ye z@+oX}+Va%c0@?63k=9#=2huzmg^l6N0ydp$aU1)~vCwZ&bR2oa-rR#R>l5FG-*;9Hi@)Uv`TIf&kQCJi+LQ_zvxc2Kg7GCWkb51^c+v@M0Ynkug4FY4D z(RrJ17lSy8#*ab-5du)5WzBjOeW8SYFR<4Hl$@r7*8 z;Q{zpKN7e9(ir!`%RlwyKRV1mF{aNF$SY+1_pAmDz&%DtUI+015pQ;C6q@*eGy@X? z+z14aF_ch1dHkbKK=8={yu7>co`1P#V*ZyFk%xeH`CqN){vQ9)dj3%?E+92MK6Y(c zRh^-{ZGDU2>btzOHhB9LNKQF>NZ@JoOR*N=@qPF_+S`D~4?41y(MSHc^p9F?=~Xa? z#^a|osy_$cx>8w3$NlW^wp3O?z4Q0#2>^7o*gn%Io-x47S6=r_*^3aN&X zisKvUPBgKbCkaaEARtp3cZ@j1#xmEV_dFp& zHUz2^xS8QTCKmN-khrHl4PA%yE0g2hT#h-St{3no@EN#02TLtkE!!+EY7GOFY#}3a zvG<+W@X_;>Sbd%zK3!#ZjVrph*Ec0Q1~t(qfD$h69wQ!`=l3GslZJ-;{pz?6UrQlx zkiEXaOJDdAH~qj-kwxE&nPdF!0h3A)nK*vRt}TZmmb`4Z3Y+VDC9z$}qgXUp!(i7^ zmK@s~V}@fX#b0vdp5PG+-qAGKMP?KF{-Ck&?l}?%dYh*Fy6Ht)mBCtx)W$`<(sbOO zLW{7YS4|j(YU+^a@&F*nxBe z!u5Lnb=A61Oo|yvRv_=!@HNjMCvYR@l|?4RrbK`9k8||Fj_!%&S6_cm{=v0!|D+$1 z^rBX>xT=MVf-RjQGM>H_4;L6p2q44=Wg-It>k`~K-9G=Wveh;I9&H$9>1t*S^RTNa z<<(`wnY^kMyhvCq#G30qmE|2&LnL=T**P}NZT1SEt8-jLpu?-Vt}B;JUFm9jQ&;8LKVSJ=}ZsUbDPygJ* zw<*JRoHfK8311o*19MgFVS6GkajnDw9Fa|ve6$nmQ0hgtRKZt~Hs@a6iSfX}vtY+| z#D{#b&F65|^i1HIrCjkq=JY)~W%%!vfQMtB#xzi`z}mV&t#@iu%BaYoSqIOP0r_^1 zz1~m^Zs}{!`(>WK+DdQ{R9Rc!kX9=iv#}qfRFX69T_A3JS)9I6+XS-H)Yo+XmbIyd zHyHnD9f687Me$7SI28@0450sYS9Bz##7~M}xS;O&+|10&j}g10^d=(J5l_U|4>+E8 zV_RAsBo@YA#6n(%om&LK{oF@1)fpB9NM`-%I5SgzMc}CQfuN{q@5qR2+nx?JbeM8Y z2$$>Qdxj-N%OVa*w~sc&u1Cw1ALEsz1J_J^XYKyxxgiqD_2GwC(&|NRiNdO-?Lq@1 zs5ZH_=&kprk(}W&CvM`0#DQC|466W!NwxJQ<%ii+f8u!3x|Yga{WdCnXzaIt_KM=a zncahPq?WF|1c#IO0|#a5CB4olzls?ud55dG@DbW&B_@N^260qw?_$hO#H=s&D$SK{ zm6j)jM$3gO0Hn6L^VEqP(T3=+_Tyvp&uUPR`zx5Vpb+@$h*tyKsHp^ErPL#aCI~7WP?BjDpv(UJ5@i zG0@`>A!PUDk5OAem$ z!~^?Sg~Y{5j^e}n`sZuq3Pwrfag+?BjN*N1qDl94l4ZwKs;BWOHyCN|3%U*aVT8`l zP4FfShqBq;us0WiAJi!m1|It43WtzXgoGp*c)9~UMhXm$%xYEcgZ07BYRQ0q zB%V20;N8#t%VlPE)b>Z*Fgc{Egs*k@wWL|_9KGjRu9fI(f4T2dFBweGKt zq=deG^&$a+22 z4-b{hQjmYAghcO8cl)4At^-%6O(f*FYk^>>@PnkF50Gt^qRW26B*-#|bTlPct}lzJ zpYQ!}^n#QpXL_2DhC8+?uDl5ius*yuZ!@4~7KkgzbU)}8Ev;&Z?T{iTrp8P8yZicf zcOO4Qr~z&41Map?yUi5QXN2~N) z*;8+RIl7P#wNKtkf4G`#7SNk8eq(U*HbplsCFVq$>@1N-MwyO$S>7`pi&|Wij;E@? zgZVjmQ`7+12!mJDL&Y#_RCM-fKqf4{aXKPz|`vZh!UIjXVBt5u-EX3-0)w$HS zi|STr?!H8(6*J1ybpopWJUV%Z@N0Ib&J`@>N&UPlTI#%ABM{J%V3B&mq5|s+&zuqS zr=ulx6p7I{Y_`Z);bX8`PqxqNRea#rEt4;U&+8VrpWkD$Wj8c&AQKXH{Y|hUa z*j$^T(xGIPDI`Eb`nKthDe~j%5=fk&oMW*NfpUF)%Std`^Bd3m0|^9y0pz4ISqC&@Tj!c^jF*M)&5lrq zpO#m$`3OW0?LjdLT`4#0-k9>5Fwww@N%!2a%iL@uDd%( z=oSA^&U}_9b+It?`f%HbYj@O_=Z5Lw$T;MSuQgbLgeQbF&h`kayWB6A`QF?Mlb~7a zCUu=1G#oOox0A%u?m3Y5&JteW?-!W}6`bEKm`3`1w)L+v&_Hs&Mh*Kjb69992xPjc z5nGeDlWL!(O0vZo0#^%)WpM>*IWosnOoY>sz96h27d$xGXI@U$$HD`*>mSjy!O zt243Yd&ixTLn{(BqqY39sr6NgV`@$5r%$4`sej65j2R41#P12<5YP<c;2~;*gVj~V%xgtUinJwAP6c2>rt9^OtfkQyRMs0(v&uXSu1aL#o^?P(`Rku zIZT%9CW^T&tMcFZ4BNV{FG2A01EbJT_Cw{EIU_#b@18~zxtw)9s%^bP$Bk$_DhiBa z-pg)Qrls|UtQkPX&O`fdK^!^w$p5hfgGqec>wE@ZBa6PS#(K@_ciVDkBY%aA^#Wdn zA5!b7Gn|ea!ZB);YH*#lISlF|ij}CynYy1Fjfi#>8=p4m=folVx{$he9vP~mn6+Q` z(1|PLX}-0JC2u)22*KBopC~0M8N7m_=BzU7ul1^~k>{p!J$vElD*~qX+$UNZ;V;PQ zgLj{nB&l%9r)LrPBn$Qs*5#o)cB_G@X z(oGQ5@Zs4@E+gF^$>#zmCuR$zwq>M}LC1bNObd3AYOsI~QE_~tQ&=aP6*4UbPRFh{ zFvx8L-kyJW*3wXw&63g%&cXPO@dGoFv=RaO;`mft62fy5ay$SY6z4hSep{ZAYGsNXaUJF zlfCKkl>sfRounVr9+97ZcK0XeZvXfAl6V*hlC?_b2#;1q5;Upf((OTYE;5}W#DF&~ zAKgZ9$^Ll2t-GJ6sDD3ROxSq48j*uO1k6buC~kwez%|nq^8-J5Ta4LnqLy5(;|+o2 z4q9HvfM~LKGdZOEdy69=Qa(DLn=_z1#=|F@3j*jtArJM}CH^aV*O(l|oX0O*PPj_Q zzh)mhB4d!g_pXHb8Uv`C`-SkN<)B#NqIBxeFzqAUq2_b07+g#qedw%VH+%0Vgd%0F zx$$lviM1MsvRmFgvFr)(l7O(2?4YWAGgM5Is>de8ZnXOkEj7<&BRW~S#YP0s`MYg6 zlD+-6FcwAR8gmx-BjhT_86Jb44EwG#SZaBxT^w0-BE@sNQ|ThUGl%eW=RbbhFeLK# z<&&$HJu6ra5SoKrKbX_&keBO#FyzhsRorw@6k;2<`)2#3C~)une%Li1O0>BHR;Rvp zf5fHzRzX}QeUNO(17TX37E6sG%uFh05l|&?qW=*RC#6^`6BPTvmp|WN0UKmT74g6isJkg+QWH;AMIw~T}@i2ue@RCnfLa( z-S6xvnqaKQ`QdKMPHC?P!{@zNZ(b&0f+1y&B{1z+N_S*GP_I)C>Id_dh{vV5NeVLn zUohbCwQBXVp?Q-k2ex(6?)!uu%w(YhSyARMFKO5BV>PM9zQ?Lt3?BfBo9t`EIfA_LG`OTZq`#hG2sj&=L1 z@7ZmEaXhUh&+l>f5jRw(Bh+dL-z38;s^M@uQH|LMM=adb2~sE$hO9UXSLR~mDj1b{ z`!>ZDoV6<1HP~%fpSsOK`md#5&dGjLLc%ee`q~$i$ep3hjfwv|n`z4?NO4dH3-Wbq zh`n3p4NkcmzKc1^Jzl7->`IRI{fdSrG9CDH(@>${cbshbN8B@&Fk8v)31TS{$%BDZagZ2WgDFg zaF@^QlMz9zS}anZrU)VH9aDaL0!h|Cn6`Emk6-;WvMM%mVI?N@)B@$9_hV9*FViVs z6fq`K$mLbW@_z-Qv2RzQ*M77|6QyB%`W!a=`8$ZpWkhypgqTi;t?v%%?e8=B# zBeFQQlPV|^$fn4Z$Nd$#K12TYEw;r+IVN^*_V2F1cS?7QDn>pQm8RtJ@aS8EX>{Dq zA<7-v6G+*vp(-q#GA-kVd`p?+?$^7!Un(RVf^SLE3u`1^Z(?wy-oN;!_YBte9OZxk zFX%+%=uhRj){Q`Q1tZ-&GVk|}YdX26yMyM0Uwqy&qcvk+^q z=KWD+-tYWx4o01{x`(^GLPC9dobgHwZ(A7ez|aH!as-6)D_j6c+}|?MqSg-KM0(ga z5h{;5H!(9s_znpb-?vjK7CJv!(#dt$7MkJpS{%PHR5tGqcLSG1d8ml)bfzvuY%%<7M(H3o?A#6r`_A{H}^-?|xkWgf~5o9a(47r38=jBIUPB%du|tQOq~;wmJ`p zQ+O2!8v>CPEp&e00UV2UI<-1LlVnGN_ekiBydA}M@RodVT)H$eoghpTMyNc>uR zqg`v}&9r3_!Br)t-o4f-TASIwPpbr(Ab@^KEX+Vex|(jLm|+So@-?BfnRFYf9xiZJ zDXF6%B#W8PRsxQ*UD#|5B)#=MSg=`sa@M4&}u5no&deX0P+8s zQ~x($5|KAAB{nXCC5t>?p zRPY_3-Agq8bQ+v{59>cw=YRdM|L*Z0vF3gpr=^nze5awWw8i7I_FjCKt#!ZV`|x|% zU0|mLkQP=6A3ru!mklZ&1vx-FeY!8kK)gB@O{DWLvSwRZEGzxuT}FH>+k>wq zLccmTIM!yufgvSyjAjsbX&y~l2`an+WRVQfiC~LiN8`+=mg!cpru0+t?NXXJig!bf z`uRvVNWNF4%oamzO_uOhOwjlD_P2}&qW-PXP8OAXnfO|6k$4`&wh;E9Ky?Jkgrzv9 zy^GK{5ZI`oPkQQbW|wq!>c1{|risqRd48n0p#O9tWQ_ir(2grEdPn@%Eud=y#~xj@ zI*3+=kEMTG7xztUpykLPUUO8|4YzcEMLXx4wmB$|bEs^#_-bGVu|~yHDiRL*k&x3eUGJ zaHP;p`36rpd1vNTHP>T_Evpfo=`5c0D7d1Eq&H8$Q!}J|re_)+`EDyhgFgWG-rzb( zc)AzxgUsh;)-?f^=(vygRy~v+q>L26d*!Jss=tI!XEt0LO)#H!{8gukYN-`!g<-Yr zzsqGt`ix%d_Sn_Xgoz2vTs1|1S5I3se992hLAy43D2+v&kVE1Ej}G8ueDGB-8@`Ai zX;HvsEdmOM6~b#miVdHq<3m5e`erih%2}5(DIFP%u+wO19VxbV=FY@j$WJvU6BJcF zlhjB{PQcNMN7FrzC!W7v*J6@|dS+3n<|FrMFK6Z%Uy866Lmz>WJd2K2THI%$`r+I| zPffk~F)+da|Aai(!(K7)K>iTkebzNT`{$Zo?nbDVrxaP=ZPo)|n)^W)5 zc~Y+msjcH%X_HZ&PXSJe| zdnkHpiACy|vu(m=m3*T+(w&^~w8Ct_zHdQd%QARf`;kxt8-tS~`@yFzKuAo~Bad~d%`(vS=S9Y0TfKU0Qsni=k?q%?xPhN7 z5-D<}LVsWLh#2+?qhqYlyLi!7G+1RbV5zb%dOQJRt6uA^2<_ixmlfsP8ldE1!g#`j z=AE)o1!Jh?OxokA!ZXG6$H(4*Wo|IjsfiuTH@NJi?~7NRU{Cu8EZS8#& z2bF#^MUi2tkibEW>Nq$bQZxwlNy&_% zPbDh~mgBD0e|LPeNcYDCr0uR7wyF+%EY~cNH~#YbEP!92(JNcbkh+A}MB#$6BLa09 z1?{T7Q1_5mY#mcG6u1(6r;HaWC?|*neOze_pPXmeC^BcM_-Fo3*LpzTI$w;5S5{>u z^eiO@J+(;SYCYod?c@U&`{P-3m)~_q8m)iqVTm*Ob~s{9q4gQ-#96a_K#@h0(y&IE z+Zg3#(mT}Dh5g`Sr2nJF&)GfMN{`@co%CxC4?AqF*25&E0-g|Y;gv)>>H`sPTwVq! zv00<88*^HByCzPJZE$=asKUumUz!>%#jEsM-aLet;O@iw-@6=sTtay0Tc!%&XjRpE z3y$us_^KE&@3hEt@s^c;Bi!8vrgunL#iRwfe=9wE!vCZ0tiPgw-mO1Fr*wBW64D_e z-5?;{Dczj{(j_G&4N7;4bR*pj(p`dtz6ZbezW4qM_ZM8az?mg8oaa1y@6RS+*?)06J*Bf%mE*u{|Jzj^Q`ew2 z8;O$jcF%bk%`Dy2(aRYFG1r;@UVQ)`Yj*R5#gj&3cm~Fd+~W!`W;9o{ zgT;s?^l21%ir@Y-di>|ZzfYe&xC?`UAtnfn349Rer+|(am>q=wD^TO(D)irmlK)A_ zJcV-plaP_qd-9Ax{(Hpu=Nb7IBQAqH#eV<)WBiN#{!82ZMCgAC->fQva-39wAjT6} z_5ruq4j-`Ju)3m+d+vW8#UO%pzZZWL|Gmlw86)+3==jKCd=~UV<1k|W<&gk*3(vK? zFQQsDHkX&m;AmG&owx)p-hr7yG0gv&RqLcS!(H)P(9$eyjv5#gx{HyVHKGtfb>ujK zJ(!=^?{6CLLGqr$e~eu4JA;&HUAD|XvmN2jba(y87 zFH_ZfWQ+iZArYoc;h_rHc!)f%h!e#oq{Iz6(N+6cKzmEPES!@K3_E*d%m+a%Ck$nD zj$;)9>BpBsqK^(^@{~Y&-rTL`U*KWgLssxb;o^Q9#}UOf@K@@0!HRCK zuONuL@Wu#v_Ye*qoS`wtpOd%A`obF%4KcEIC|!A3NqphW#Ib&be)a^-FQ(S}Zo@DU1tN zk6l%(Z3a&|iB|A#5-}@=XRyB>2W1$3h1iSDCqbHS)Ip`{lMe&^g)_Dmt6li?)ivAsu{J z4U~?amsBBiUork8&0yD=YhRP$KigKM2(%dn8y1`x9%Su6+aHfjK2s6AbD}9U+X=`X z5=eo?D?(-2;r3z#8|sJ67m%x0OBXN(5UZ*{zOMo=Y|Lvl!lX-O$ucZaJBcRA&-r8} zosRFfO8}&VN5p8BAv`KhwKl=7wV$!}8UDEOow$hCko3Zc`IxCXtki z10>UcIG&|O45SqXnqcaKAgQn7^S6g`Ee=^pCVQv7WhozP6Ykhw-Uv|{jEto(pa+)x z!aeLWTE@pR)A^34Gy@J-V{k$!#JIs!G%!UbQX}3db~qFbacITw?QG&~Nervh<8L7;Devn6BAld@5WA?zY#-=$yYA)sZ_U%T_|6y%%R*gEE3 z-qf?o|LB6-eUc?2&SP$aWb40ReA3g8N40e?`770LsbtkD>l8=C?i=(#c)3b-4V&Md`y50t>YMRFzBY6G?hEDF zg4hNxuqR3n+xivOxej4(`3=K_)y}>NWIi!&f4JR>Q}!*>kvg9^HA0ml02PHMxP2q+ zhSR~zztMINKQH>%84%X6XI)m*L7TtFygXe?bvu0 zab1#xA$79}zt;xTMEjZ`0?$-^s6PTWJrxj5X!pcuF`^#CL2{+>GXU4>HV({j)oLa6 z=2;E9wH;2HPZP>UAEi6FZo9j!9kM1dgdxpJPZt1`+9??D!heV`uD-ymm#uD3`7Kba zvhpSs4M}hqp)I@ZYRrvwh=`9xyK;g`-`Eet_Re?kX0Bp%jJ{s4>&ym+HYiA?GG~>4 z9OPCA@5$ef8ews2f;EwR^O)vMosWcK43mZO)`HGtny^)nx347-JN0ET=dxz$4!5vd zRHje^E1##~e_2z1k*zhs%#KR*9qqX4#q>r8v*!Q2nV+qvm0}miMFXHgco&aZ=Sr}$ zJ@XWTpG!$*8k6|)su?<CkvpXc9SiX?0ka1qX`E7(z+9~Q8Q%fnR_ z^|iYXRh%T??`SD6;mF{!Lg>$Irw_BReg7UcPpJWMX$ zXWC%b5i*>yNw@;=bwMM?t_&f0T8L(5zk0q5ffdBRb;tfIu-RCs`oA@P&<#TH!z+Qp=1Dl)mLi2@K`nvxt9#+Z+=pNi zgdof2e?8AJVS!=Id1O0zJh+lLV}u}9qWZ%c4Ud#$jlZaumzM9j(V8=}Gs6x)l?E(HV~^JVOLJp%s7y}gK#0T?f3a-2)sWXTdnC1*<`wZ?Og<5JTnwIxprfp{({ z#*GNYG%%#8i)M&1;C<_2#E*Kc7+DGIsL^l(RE5wwxNdRnBGkTG@e?xrA1YT$N zsZSzNITNR^U65*^*I^TR{*Oi=za6q<_yT{+>tVK!$A< zvBq`m-woKhy?di?0ZGL z_HreGNGf75+2(()ieHLom#Hx_KdY(#rDD>;0_f-Y1{Zy*&sf-m`GN_eY$mHQS$3M^ zk01$jycllbUYHrs=X#IWAi_~MvYAKQnD^5WSe`y%ddi``df4r~X4-LTj@50)pjsF> zAep7641G?I|7ka!xjj@nGyCn^1EnOPWuo0KaE+=G>sE2liRikMf--9o7?jZ$qwm{J z3B}0qjzX3@cnjO+ayqt#psK_DBCXgZj)o#wk6%0)JW)3d=ES{&{cy&3 z34i<38ruHYSM{ZnduG?!E~O9_g*r&o3C-?EJ||;#VjtfGF~_{wHyzG6+=6e(KH8_U z4AwbrkJJXw1WFU@$v8D`gND8P1)Hh=tN?9CWd-d)~j2IiJF=}M=;&+Sq(~%s480V+de4x zpb==1R=HA{e6AF6z^+*CRNUj9nce}rgR4v~hgA;L7Zq`Ew2-Ckz81DD8L?=USFA() zw#~q#DO-O-zNi`(PS!hM{#*p>5bHn`A~ll>uZ@N}`N~ys?rRv77k`m1$~;&XlGaPN zAr*}lh(xJ+$_6HksN%AXX zYHVt=8})PuwzIxzCkGwheE<9SrVO@heh#jFS=-4^irJY02pCa9&^Fa`2~{!(-ozK! zt)X4@_Vj&UTm$PIA%mix{oo86le@xSy*RX_A?qK2Eqh-VzP12KVmo@iIMjx0LqWCA znVy(R@qATZPS>(F&4U2DG`Svcq6|a3JYiAp<|(y%^4ixa`J1*l9AgyJ>Rl$5CMpXb zCEM?*H+%NS7kd7cAIgu17(e2Tmn6n4(}uHn>OUdV{?hjixSQmX&@1Lb3C|WyxOQ!b za?liXUlzQIY~>rb^P}f1JAMB5;<<8TNQo-&q5_#w0-E85SP1iWXBMV~Glg(|GWOGp ze!Hnx1@yT6-W`HUrTz6dmDk^s7;cMK($W*CdNwrm3TApOrbg_+yV}|AXvu9p z4owyBsECz^K}5_7%5$>gD(a~FMr_|~ve(%L<;L{=hxdk)RcWWeBB~*${(wZ8Jd0DU z)=$mE3o+57eK&KE4NGraa*aC-m$s6&zeDFCLTD@eI&)nV_zx|&m7>f$cXwwV8Po`B zidB8N96B~nI$$b3v%IOZ_W$gjsT+tltRtP`A=&BcE0W-{{hs#nhtO%}2_77TLov4e zbIF<(!*HH^w_wn=jhIi?X6D1#Q}6{pf<@rlzP5V+l3}gVra{Gi2-&8&l zZmpLP1wDGoR}!q)PICa86v>Okw+3DXyu-E=D}{-HBqKrZ^3Yk~o$UF?j%n?6xd%MM zT16|e!=rLsIExzj9mw9>w2Y0}Dy!Na__4oY0~?8dKr;q39k8khi{X6=p#0yUh=308 zxNw|fA#Xg&#fCT{d-S%qAaPXpYEe@|X!JP$_1j?OwK*jetXwj9W=gv@FR&ItBIV4i zRr03()s@TSw79xm$H1OWE!NYuvD?rHLmWpnhp=7>R{ErK&y0TcEVvQ9n{eM(5oEHl zy^kzhw7q2rxL{z&Ip;D$-)R9_NnU$YwhS+>vqL>a;8EyS%DdK{h916(1Dh9p4MWUL zy)smRy0s>MNzl3fgaH$(v75WW-FWtE$}m(FIHv9C#C-qj5j>I1hqahMCS_UM?TT-CUA_M3>>-vwe|Dkk>z(alf|6&w58CwU&g(+Vl+t;&{pO?JB%kgvE!N zx|?&L2;G46METpMdgZP1rjkikPaPZ`iGwX-#?WT+qP( zSh3hni)bL+)CXEj0$WV+8-aI`FDl=aaUAVX(V^;Fu@bc=?1p0ZG|7>&+eZ3@x&Gn@ z9%t@IwF*M}A%9VsXL?_MR~dgL9kj?`VZj$*7O87_9X?=^g=O~2IqWT}=LAkf`;?sQ zQxf+Yl`Kd{0Tc0JuVplp7(R?%8x3k_xr$F>wfbQ3>NF~78k}}NJVWRElY zD9?%+y6&cRr4&s*vz+W&w}$UHt?djuh@b4piAX;R)cg)(udA0$)WX() zFZuI2k0(pR;gEBgQW=)ZxMRb;RC1AilR%+RcS9)9r0!g3ca?;XLf$W6zsz-(5<+|t zrMODsyo_pE0X8u4VG*3mb0j=$N}pNod9!@vq4g3{Vtf3A<0Ek90q1;g9R9wJrXjI+ z4;RI7TaEL-%Abn(Jbo$u3>A*Ff!~HMZH=1Jr6}j0?Q@o{CqwmF{)+3girlYbwIb{I z@(-*e5lmW{R5lXYBhP!~HJN{-7mfgLYRN@&1rY@S7A)Jt&+(sedK3BL#_}eBP{wNC z3~l{@T#wy%0Ton*2x`BhO94+)D_fEb;+!f2Q+TR4I$O3qn)>o{#G{ z!N1a%g;RQvUgfi;+Ls8Ni}uWFq&`J-xY zz0YE`fkN{~u42?P@{T*dtHI?3fVfCgeP#t*RN>^@KbI;RyoWoWo(COGPVYfhTtmvX zaDS~;-zF-G!+KcK`x|fUwcnxcnjl-Df$YaN@Y>HcpC#)d_K^C5s{I;6g{Eh6lZCBj z(ta@_KeW_2((U+Hdulb4n-l1K&~OaBJ}zaLyuevrNN#MJcCsghi@sRM~bZFj($iZlzXJmfVH{E3Q1`?<;0d{66AiddXO1fKO?x0L{}@dC{^ z0G*llC$XB%--UC_UAyMx17pufVScB-QhcH0V~?;TXEIVEq0S3U2iXl{Kt4=3$H(;3 z$}h5typm~Oan_q8-JVW-fu@8v8HQl5SEE#}`EAk-T*;`vtatFyAr$VrgRjP z0NgAw^gOv$vsd_LgRwGuf?*BlD?NEG=bd=1^nFQ9%d16?C^==rMBtZb>=i~7&F{TG z)*gP^20T=JNr4w|iNrfDS|ND_+z-S5oxC0TzcpjPv}KCn-kh~nwFAy8!kJ^GH@Pv9Jba73 zoI4v;Y)67QA3Zr?hC`sucYXJv?>Zt_(ZmL*wD&)ceivS?7f=P0_OC&+E5ET9?;gwb zFPZm0fB~bL2ageH$gwpfYR#rwaUiQ#!aQ1f45~ki|LkbGu5)p%Q5#bjzkchtQEShtL{cB2f`N6RRCRLsDdiCz8;vbkDWT75j` zrut!USO6H=vuL)r3z4EU&L}0z=txOAGjh@nAwaR#UW8YPme>4KNekNnaQ)|`e3Gl> zOI0K|#`$m^HEra`ga(fQcBVx7!r<_c(LHkO9C#IXfhYY*i}X!w z)r*S0$ul~=Nwj9yTm6*%(`u8H5B=$GQOPn+sn>Q`ptdGKeLQ{~XQN^n!@R`qVYluT zSOc9>mbzjScfb+6dQX}bJONiiWNu<#e#RTGa#8i86(A_HP4u;T{Nm(G>m`I?5XOw= zf8r{whcRd}H&&qt&ZIv}(jmfzY5U}34{;qvg$*a4#3GJ9$%(hHXi4PHx*VtHbr zCu)>}tRWAA|0nGXH7tNd!Xj{MhZTnf`|$F+zL+Gh@^~RDh}|N~HcC6_Kv}JkF33)` zMr2mJPB^cWpqyg>IQqLTeSctVyl5{jE9@CzOp*wJT!ty&EA{Hxy(MRA@))G zK8r2I=&1T_r)gqYVOxVvOm5!2+;Ednq8cd=dpeqb%VCZ8k`u3(rmnLnDKv+)lsd4x zb&`!~^T|FfFX}JJiF}Y($@*RS_pXwmQf$0C`P*~&8v%pLr{g1(^-PTwR%JN(J!v|G zqVXt=R}Mn=WBU-qPa6e;v(|1JgTnDK@Jf(lFY=L_H67bvzz% zlR+BJlf}WUmtZ}{nGnP#R{1G-S0rrc;HTY9H(?x{1wyL{E!zih^o$;xsXk0Gj{590 z;D18X!P-jKyiDO1bOBP8C$|z$YN=hi@Igf8R+Lhg6-0W{Zo_C{;Hc9)C`=nCywA2o zD&ggU3IgOwD{@50Oqb8xu-E_Vc0W@n!|*YQ^$P~hP17mSOlav?ol~L#l4B6#ves*Z zCliZTGc3ehm~EL5R$8($)<>Uzw_enUs}$$*`Gt-q4ZcpY&&`U5GW&s_^_*u%#@!0- zv*RMQ{`~+XKFN#+FlumdpeC%0te6QO(pHOca%4#jMVoE0Yv|C}+m803j(>m2>|4!j zR*zqV=Ho^&T2(Rnu$LdF6!5luApc2wxk`g+W;vCsk&rA^^`#A3)CgL@##e-0b3GsY zx{I>cGnx`PvK9{t@oLqE(N~8D*w`i{QQsN;T>)M}k_~Dxv!G2X5DHF*PoIhTxhP9t zei8q})OG*Ft<~LDb@FOnPyY)|1JP|u&Ie$N`MaZ7BTn~Tk_?BCrfe^wM{#Q?U;H(} zxas-w*Q(z{e578tGXZiGrJ>@Za;H9EzE>0+zp(JNdsa+?K+Wd>+D zjHqWx^o*M;f+pXj%G$wtwcg0kj-5>_-`7Fu0kR;Qhi5PNES4)#B+xDhW}S$fQFi&W z=^o3o=OBJd2Hf3eiLG0`$}2OGyb%%AeSu3YRG;+XLOo5G&PpV5K6*q&+@pE*g?8@y z?MLj1#C+c)W8yR$#03QgYX@a^x#cw2IhVdg>?hA%w-TF*#hcV-HozTe1dEB6u-*qP z=bP;UCrADla&}tSR-`he&Li?}MjpD$G}U*jg>zq)s3jtx(Wb2f5~P>{SNwmHQ_N zuMuXr&i<>JoBcJOQUznmDNuU`b;_UDQg%Z*M@%JBW}L~jKmDX^g&Bne^;%D$$u%G0 zb@{{r%^z2Yt>^pAs?TRe%_%%kc^MRVYr%h@X)r}V7ArdY)AB#yk6ZofX|si<5y7y+ zH@cK)j@N4`=pj)ob(=s~(Vb)f?$Q4YAzPZ2!0J)++!Hu7#@*+@xvuxt5PVH-AedAB zhuZNE-SMAKpGY1;;OhIcPYf_nNgx2wB@31jjkBXmo59@uE2^X0k8q9v73>ZKwo`Z4x>KSw%2rXPJB^l<|=$gDWBCQm_+; z0XvQ-)<-q35Vsw5l5sDW7}ZGvE$)xRXYrgJ0)C?h4gY`0wy2bU%;LuSZ*=nbkYgcXJ+CK*sV#Iz)4v zU)x!d{1u?W52*(WAgwjb)Qwf~{3FtU54|QQ9n@$&@%hGtQt(D`=R<$Cw*UZ1mK;jY z9^qmDn|2N%EE+~aF*@wHz)ygVNcEr!dy^SK6_sgeTJh@4@RuMy18)x5gUlg|H8+FCIMEP2#*5O?fGVHT5A`X z9}o|>Bi{&fIZu90Z-JCzPzWayLYd7LX*?9(tcD&V?NzI2B8!cAQT!=Z8<=O=*aA}s zXeabPRsXziGvg{6e%qs#H?kd$8P)Hiex^7+|8oflN!YdY7I5@j6xv!I*i2~0YyTvd z_fU#J_36kw?}(E)@MDC(uw`KN4LMqGdvswl1m*sekH{|*sLMt&x~|mWaw9i* zMe!nqVJhr-%Yt`z7k(<~7ZDta*MDCGFO=CsDYmd!lG?5Y5T3EBocjkMn;D8E$e8S5 zwpo8_!pM?xSwqAf>qXb4DQGUrDDx?hwpW^Ud<~1KpOi8Y2#rVa+zmCWsmw-F^7~fa zGHiw1spTU3p^%HB<$D~Xe1DggkqpUFR`<>rv{t+>N zI0ESazVuf_M$_ahm*Afm7+9wC%Vbck+z-U;Hu&N+cTZ za$`g=80Z0WLpb+xYLw^4gl?7gfp(gg{&T)i*J)*x`CHhGPuM;ge;E|4=;$IH0EmkL zyWeaVsU|$=YZ$(%7mmQsC$-})@=)jF43{zX>4iD&kHcT3zYF?3_tY_;zr|GB6Q!Py zE||DC4=RyW{L<}FQX=|h@`O=oEK(}uYd zQQJ<&&SY09J?~CE95;Y|1f^V`*2SXcXr~C3$v|jFU5BJ6(ux(U{1V>OuFFZ`J(mDh z&Ku&Q3$2WT$zWE!Hr6NK?^W9JT(Smr&Q5_t68U_|7rKBxd)iMgjAE*}7Cet+E?SG0 z78_VaWgRR8S+9W#z#pLKbzinBn= zY}&QnMUgP(asJWqXjrCXzrpS6CBT2c(ALMP0;!+8KRAYg11RRgvl`SB!42NJBH*0fApWp~Pp3z8Y7LrV4 zbQoT@#OvT6cP&kSsik9(I@kA(=Cb>)iT+S$-w)WrO*|L9sViEXgQFzgUS>+kyq_V? zpy~I=z;4+-eD&2c%!ItUaZ#lxMt#EB0dRO;h~c%EZ1C$Vg~eP)`&|e;dsHo}vyn?F z_T+`Cy>H2oFKZW%HV*(k>plN&J#E?i2P@HsA9-7F-boMSrg|)Eb&O1}EV87pByh(a z7?Z%gt_F?y8FuU{E{^Ijs)5d2$2OX<`F`L&TH3On=CSIx zQ|-!zA0=NwPhLPiyPqeRxk`!EJ{fCDQ%H28W736x424PYftgzjTV(g{?9*N3z1fyn zc_r*0mN@DMsO;o>FHbp@8*gEH9wz`WHMx_?T-@k!W$kfg-v@c~@n-F>1o`WiEK|f* zw`*g#Y)#-|^W8GZtij5Ai(Y}U`EkzrLfjP2s09U|;YUQF_O4b#^T%WdB)a z*1);D895#rYUUgD)Cm1yYq}m@)s+Zcy z(!k8~R2PGdBubbf_cG*XXqFr=j)hNZ8q=T*JyOGeKp#f;*Q8v!ORcur^%Otc{W_qd z))n4QaT7Sz5t#GYwKh1Hm7o=`kkv`*4V?7*DH~e6^-aI??_IkX zo+l6S-qgGjQ#ik;UOrB}DKk~%V)ZtG2tX}ea=&AJqO7pnrLTe>Uq@P=W3W`7gx1#> zoNMZT=|EWT1{K}Z4L<{Z4;zXyu`;TThr+~!?n{g(hcF*Z2FVeXzSlVaLiF7bVsX0;BK&oRn zay}_-8}=?|@6z^|V#X#9qiaY;KPRTEH57eb_HJ|eGzV#%Ww`I%>)cK;nD}Kc?P4K; z>};gBij{}mvJlZ6@6*gun9<9$)iYb;BQXNJlUEGP<}dquLy2zxff}k6fSnc&ul6EL z9(Gbv_XNOnvJlmszJ{olh7-q);Cd3WP=4!MoyKc`mM&WGwPqq)wzS$Yif5Qf&o)xtbb*HWxwka-+1 zgmi6uQ+sPp?^W5!Me5!(_mti6dztzlS`5GO}Yjp(~)w~Zk< zxNr16X^qH{E`uMo1Av|+q0aJcwzPzWSJ#b;eH@Do znD?OwBi(qYI!Jo%Y`wqTzYl0e8Ci3#KjtO}GI#n9z04U-%l6{OBT zMeoKVAe^X51dLxnoCm8QnH}G?C)<@Qa?iaLUmsaa)K&f^!bpSoooo5SOicnC!!$UV zwFaO@NL_DD*1>UyrSvSr{3pj`O`(>3eV8hC`C<2uDkS23x$t7cwi)=}6pWH@SPhR>?kMamUy69uzwXleANY3a_JAXz3306C~h7ZQkH6U3+#@ll|sqoJmu&lQu5 zMyNCTXxmFshbM(ycF$$bYOS`zjD7#+(eV8zyNL^;2g`;R{kHZO0 zu8k_3#57LZaXGx}N|8EjHbTWL2tT1FO)Haw9xEXrOFY=T}8oBqci20CUE%u zslYW+0t@Q4X4l8~5{%Iy(YIC*8P4UYG}V1Ur)tTsI--1AnR6_ci-K&V!g`G zFgYzg5;XR2|KOPEN?yJLncIya1WZ-Cv!E|r5atWZT{D^`W*`4F{PEK}pN`t_q0YxFf{UvBFS-_vTEk z5NZXEKrxuF(v&{WtXNMR{_Hp?-C)!RdW2TnCU+#;`v4xL(s4Eqo?U9fN4T8ci+btx zp;hu;zL&)!FrFS=FiJ%;{qDupZS-I+f?YwEu~!=s8MBA-(w^1(U?>_3PeyWYJ5kh2 zR6BQ%A5P%7k(k&)AYSmY60g)FepLpQ@$d9GM`;E+>r8RXx!Ck2XZ8NK$@E{4)(X%{ z?W_JzY(Xr*CgQchA@1c7#w)hoJFu%E>Gw3Mv++|T< z2})z;%y`XAI!rND4f_##nyWw%m)N#^VoTDl!0n1e&5F7Rc5%fK^(Y;9~mqQ(^PE$>TP$K4n6aJ0nPRQJ7Ov7!tB*_0Z%*uitnm~k>4YsoSEsTOghCz@vc~2 zn)Y7k7}EX}GG@mhGbo$*^gY5*N)w+;i`ql;Bn0^h<0C^q*z~*2nucBiJJ@$w^AomU zo5~VTsaF$(q@&60qi5Xm-KhIdfvbK9=)5uuh+`3l10pgcc3VhGXB6xd@zVJhe1oxQ953K1$}%?4BY)w2O?m_!^FrFnr(gd}vJvwA?x+^! zRB3ys^x&Ao%WaM`{**$kd7cNb3h4MWrFsuEpqaNw!K>(*S)Md-1N<6s5j9Z|y#OCJO=a)}bb(v=^rcXRwYYwKDkHiy9k^7Z8mQAh}{ zG;Sk|jvg;H%W>GQCrk!Ro%LqMZ$5=iC0rk1^ZV<3@Lkc0Ha^f3yl5**2l+JLwhu&7 zZT)g{DQ?&sVhqJ9Jy>)oka_mO=#YhHMmU8}_74{s6cZnR(*Z-2yYi4tcjx#0fcnC|w^7<4BA!Ec0#h*IZ4)>-Wg6mw&`%%I$ zS+K|y_8NZe+R%o!zFlv)h$qx4@Pu0UtHCWYXGg^Qjaxq3dIM)@2N=@0bkuH|Cucd; zTEYW%&HV3dn{%3MaUA$0eff*tNbdyK(Pt5ce>`&lRC(p?6wTOeC&St?5K<(0CvNc2#&AgdC`FS z-ZY+6H{LZc)l|=;3wJmfa!UOk_jdjQrFrCzRB+Rao>i;)s?oF^VN1RmwNc*7tdPcD zP<076w*of)^D^!q_cMd*Cp3nQ%{CLYW(ws>Tfo{t5Vf*?nkk4$HiczRwa!V9x?+ju z531M`S^gsQIzp8ye|rZ3aX&zsGsuP0Nxdl|!y^pd0`4a1O$tIbj2Uc^bgI_XkR|&7 zNX%GG&-hnVF;j$lt1P@l-{UkbX3u#uRlhFx-b=}*qWFc^w3AkRqs7P~J9IGFsV>Z3 zJDRjl5A2r)I&vY&=S|hgydOjC9OY+ zjLP!m?Cu|3F0nl%B(Mj{CL>n?2~Xyru24cb4@h~32A6x!3PSHDr+$@HvX%2hd2iuN}=7g?rl95{I{wO`2PhB6>52BU|+g*pJ?aXvx2yH!U@QwO%K#N>R5Ny=J62 z5N)cAF6VW%(R-2nBg;~vEVhur#J8fVFN=aw=k=GUz3Lk>-R9`_#c$k3@n}s2`%x{* z#hdN|y_b02u3*@h_~N+Tl#4++-eN8veK;Z%`&Wops({jjmH$_-h7*NUP(y#6&Mr_tMHtxyyLCbvX@6;qgJ1NN88Lo$9V#r?He}YUBp?qTF`hH!9vA$ z2d6tN-JK70GJ5fGFaO-C!?wKcI;N{RNfwm5$p`Q#?PeNls0{RF4FN>f8td>VSzvZ| z7aBXm6zoQe#WYSQ@)~=q9UN~CUK4HcDdBLY$8eO1ffX=f2zh}#>5cpaez1aHmN8yF zoT(3Qw_6`_Z=Q2YqMQJmuLT^J4IG?&9?j+iT(4|7LKFQ^yL)~ia@1fnu~N)#1(HZJ zVQZU|2$q<$U!#8$@|4|oNKCejJ(p#%7M+?*72 zS~BM*)|r)OC?54I+=T()4FA^`0|*~pJ5m`S1^eEw6Koqo8(M)(vfFa^l){By{@+^4 zKSAX`(#k)5=!8z(0cb&qx+P%J(@TMY2AM;5WGO}SpNVX|C)9G zQ9M|jte>iRpGtcFe`D@{TJru!zIl3#|H|1uweOOU0=y66r~!On!wC3m zz#VQ)wk54I9kegJSqu2y||mwkA@Qj{0~9H)DkXPDk>@$J{;4p|N5{*Q--FYOi@ z8GigRG+I2tQ+XuK2}BT_>qCATMI5!E{X4IGHhmwTpedXAix~Q39y>#uc`7+Sp@Q_7 z;&4`qjIVF?1C)Jx7S6^2_J7guOy&_X>hkW}w7Ut(T#ro12n@yh%3h&ulsWWf-m2zr zaJ|(37^qLu%!1cGPmek+a!(B8O)z7$_EPI>bG3%);-AbR8@(K}{hN>v?2(~RMFx{8o`%bvg_~=}prD=+B@eL(KWwDoX@td@ z!EalW%JYGKz*IUGD*L_==`Q@8YEc!T?!%aMgx)0H;MfFA37cu>vhMHhmY}`+I37WX<+HT4pM6F$OQ0CvV9qbNg)&)-X>TT^=|MaO{cVnzRRvR9XkuHUN4o z<(Y(J&|Efk591ecjHsyB9$0q+LlF_} zQW8bu2C-!f!Iadv=gZQpYH(Y7B=QMb>Va1DjR{|Bm_A=D(pT8oB~+2+Dq!7biX-v5 zTyMZ9S3ZIyV=+m`_0f>&FO5~&aTi0U15!g*PuR;x0YDp94xn9oc51YD*2b65c8=+} zcktF~{bmLS>yj4zoc`?^;vkg^LWsYDFlxV1hfPJNBNDHTF5_!mgzkuCv`ef>^7ZEU zcgp9t;MG<`_IAQJoG;kR1Ba`Ke+IXI11{PoHX^@Xe6z;149#<6Lb~!pIEh=*jioqE z0@JEu1;||`ZZI68X3)`}yXZ}h$_QNS^L@LQky{FE2pJ#vHgo_D{~(XLphlRuh@vqK z76@GB&pI?x9(zb4UMDarWV^QU$i6Prk>Uy z0Qq+4#TEc3Dlr>$YzE(@&PiaLG7g33xCLD&&?+j8aEs#DN)h zp@~P5T}AyHIBuzvAM)q>C3TbwplFQcKk-W6rChq7(#FMp9Ni@Gz_7NHv4#$WLQ7ao zf|R;vi);+QC`SF~6DjKCCK?1?TpD>GaGc03sb}vNpQD%CrYoFe6nDa(SHwB0_9r!? zDW)Kd%3$w7-X0~YVbzmAR5b@i`5WCI>n#N1Dqq zy|G~zQln=v7RUK&dcgS?=chBk!uMS99aekhXEiDMSjF>}38=R6ko>+3N{ooEur#mn zB|g^WGIH~egJ;g?FeI*WUSi<7e;Oxpp^b%fFv8V+AISBaOf_7j;_j$dvI|vsUDV-T zLIbA`(O#6%=_1s(^uvsCq&{_y*lwz=(uT=?`hg_-SR7&;^l95o06XeXki*F?sVzKN z2gBI<$+rF(uBeypH0GXNc`M%wq>|~-Zt78Xm}|u}jY1@`6XD&-(i%!@ZTR!v^t*9c zi;V81&tB&F@8+4DUckM=KUWT5#d;^S@{Oa--4KL$Yt?Y6j$x6Kbo{?~IF%8&(C4SH1Hw z68nxx17y>!$!)eg8UxsCtmtiwOqG4`!dSRO3Suwaymkl zMujw9hW#AvVZa(wwpz<77{-1DGYETgxMGK6uWoLsZY?K% z>>+h(o%H0rv$UGn$rvZ6n$9=tkTEXA=4jv%V6<~(b|Mjn-8b~fS;Qt-IgRZOW)Er; z?SA9;T+pljGx0Rsom|%maFQ_=^hZ4BRf}gYMU`UEew5vah*UK8haO$= z8{crP+Fo$^p5-dAl2$f1yn^E+q2u66JVhR644tqai)7QkBU$8G-_Dkxn@wI{iOWX9 z#H$L+l#3ZK#56bl)BzXE4S`9`km3{JBJy9$5$kev$bt9oeZ*O+2VoY~I{&+=&!Wjh ziBYyCRWaG&R93DMT3@GPWL`-12&}{YuZ7hlr{#iBc2#kI^lNxjw5pU#_N002SY; z0S-$r0ue$1!O06xKX2+3az!5n=Vhx3yxI_>Ym5OD51Lxbp636B{ou9zKgAfsTKB3m zCJrB<(pn?-1O;_HMZ{yU0w7L$d8|bpvtct1hpO$<$)M1?U`@*ymwdhdiPm`cB%V{h4R^dsVkV0F}( z{FM&A_&&kmbNu=s;-Qn`p%eKggLeqyJYW>2J7v7{#l_U+ziW#mEjF5uHC`n4g zsH{ZoKE9ki4VK}8_=5Qze}8uwHzRC>IU`a(oWwd1ROxQ)Wghj)Y}&c-=7?XF$7`O< z&oH6M=mh$MFDJrnG9ik3of_;g?$U5kxgXZHFVGh9Ck(Z7+o|c@%_KRsWGkSZuECCd z*r?D`YTkIg*hdj|dEU_&T9?rS4~3<*xRTh5rsO8UsDm(OHMv`@q0_cu{JlH@DglG8 zw?Wv?nq`F)IC`VLEz6hp3k;;XX#&)&m_%qt(#B$WihSxYLxy3JmFFWVRFtS}>hlrlzbd>M#N!AYX-2wcf`;$#W@>!EdSM6k z0R>RWHo6dC6F6`_`*zSmk~~WiUcbP%7^b%vAzJN3sQR+j%}E$3%pPkgRbIld^8@@S zfID>#w3b6oU>#|K^y5#Dm}Ys--EXVYf;&=|o{6U_GFE^Jm`NnBOdWaqHKM*6Ha zDF7W^uS~KS#^6#Ou|tXaxJ8j+Z8q(@^cy&@I7}D`Ln~LM6qEo^XqUSjM_;-x1s;d+!v|<+i{AUQ{;I#Xalf`vq=CxXv zQVL2%h<|D+$R*LnYMDR|3b1T!7V7*B#9=M?gZ<{?XmKB8T8L_EpYk*{>Er{$!?S%G{_r|s37oe0HQl7AB5-_1T5zSpY(~4lZrIgulK1-+(b3Ea{hO%yc$ zA9Y{ZRaMw%yXo%k?nVKnyQQVOyFt29QbI~Plm_YU?oI`yr3C~*5V+6wz31L@e!}^( z#$YJTUTZ!xhgy6UiE<=83i#a|KR7klD6-cmWvQRmScTkOKfM2dUBAba7vN56KGLSb{xi~QJ=O>E;$Q054zI+j^*FLfpQlwO4!NTAbl69(+bSTxlvUTS&>PovHpw&mpDzH|%uobl>Q! ztC{8dC_7)cW`g^~=lWIOn5~R;fHKnaK^WeF=e+&qp;hu@pJp|BTS*qi{skoPT=`|U+f>MdIZ!@D*rjbCRv3L*q@WGo zs?{GTVVAWtrBo9 zIxl_0nx|^2P|PW6(mlCu9~(u;Ko@A*%`^ohI-$X(Op+)0SF!7XfU9-hl#_ht2P;RZE40 zn2hhl3~#b6)y(q@Wb@D8wAUHC`-|Y9eN7>^6w};BSDhDW7;J2B>KSA1o73+vLiJ{1 z^2$>ZjY#36ZmqwY85ytXy*K%Y(gmst1Z(!ZTIvSfDI`!2TimAq;LpI+{RptT8A=MW zIY~>sGQ4=Us#7@tdlIWWYL2=im}MI+uYym^#=ik_<0yDKTclv6NCR$>x=O+1%1_Qf z7gzllQ{btKhw#ngQgfGA+d{uapYC&mZcHENcesbTz^Njv(Am_fZZ54+qP9?$iG00*by3qv+@|E`B6 znVDl+@uWKnS~_XT@0^{FSPbkQ$vORJ`e*l|7@+PRjR(YgpfY1x-&6> zv$vgN?Pv+iZ}-OkE?(*e2%I9D<)2cxmdN{X?Fx za%yFQv~m0g{tXx8Cm>z|#ElkEBLq;{>msf&C1 zQZg4x(%5PKpx;5lsKOj$m2cYGyE@^0wY)?0?Z@0G_$_x+uWY3#7#p?nA~jA97j@Nv zot91oGyzYE*5hKm63L9TsMmbUREpS~SWRlv+vxb^@Ic)`b>Yi={Ms;Fn7S8!5N)|C z-m%`Y0eVf@|K)uvF`!}J_y2-8sQ<#gY))?gdBWv&Z3R5B$SnX8;X#M$;DF=wKbL=R zLND(90CXCXKqv4JpslJx|9t|_E!NrQDEb82py~*1E%W|YiUw_Ot%kOvu0|<=&yNH~ z?kt(0OLwSHUL^-=i^YI)G%C=h)qfWPXw#|=bT!X#3y?fQz3rfDAFmM=+bPrA7m{1BMJyIy?zb*h27x(faYCf8_h7LP_SgmY}^wLypDwL31?Ep+Rm z?PoZa=!*x6{NLjb&@QYWmd!4pODOR7Ak4(Z3qqS;`NRHkg4_%fI^B1RcmizBa9%XB zn5$&xA%hg*rte~RPW=Eoew|~mhqi2KlpNDtfpi+F6rjmY=WeM7N>$76v4vTS8GzoA zg&RQ}D}Xq1AV&pWF_JL3f{6^Q?_t7vV0CffxIr{P(#hkx{+^xy6(hz5qUj=DLMnx`~0Da zNkQdz1*)%^Jt$C$5m5SUDHB74Sa~8$+3hhfJi`glfDU8Kc9H@n8mCp^ZQkNSt|Ap# zCC5l4zkUM}SVy9}2MJ6T0=--5g{bo#W$jPSbNBY*Z34gDzYk?<*beZteY~R)i_wwnNlJ9l zP~xQTE(KM5+;!e>2*@{AgGI-P8EWDD1}@8yPPIkkh?~M`1cjqJFk+7v393~T5T42+ z`gO?pHQ4PbFQ%%T7MKY1q98$Z{hm0pFV!UUK5nnb%X^gfXrhW>o$}oW>=4_eP8&tc zB?ZXKxfIUkB|IK-NG>&puWmw5+tO#HZ6l)o$*qI%?Euf_OPOfuaTyV|dxCUou!h_EkCdEp&*AGNO7cJ67N)^MU%NeqedLN(xVc|b`ohzc!%&a zb7DD3a-(wH9&$^;n2^zlJM^2>(AjAHV7Ju1$lb)|Sv-`4F32RRkvolVjd*jFb_TB{ zzL8z(lCDEK`;kyL+13;EpjOtdJEazLS4i-X{4LU+zj+=n3Dl;=*GXz(m7~5bWmltG zJN>q@BP(SW7g_Y%@C{>7dS%mYSng=6pO8pWz<8}B91`9Af&EaMzAG2uYW3IAe5B%{ zA?smf^7)vX5>M&7t00cKFP`+E%@n4v@awyjNQ2eJYpKk~Kzy15UIx4a2npMnSw%P9 zPks&}v~&VoR|meRu1L6w=x~Sc;LggZlD|KNy8Qi5&i6kZo+N`h`m=0l3+Dbs`|^y_ zqfUkt5I-Yo9gZ0s%DLry^Y6nRrO1D!@Mh(?9Xm90{J=JI=7z9c>!>vTuz zh)UevSx#*kkdF3pw#^J3cGm(Q{S#M-DL5pijU{TH;EXhyLQL%rlMH+qsH+=&NHQ{S zSgZ^?c2RZKXCpbjxqsn?93PFr{Yn|q? zwlossd`pjDKU&dz?-_(NRHr*?m9$U&rXOEk*Y~))2j}~;zhNlaV%6bPdQ|2QERgR7 zmRV-ExX&(keOc#edeJAPiGHHkG*$nWR(`o&q5fSGf|E>2i9zmuKzK+4s9#CtB{-CfO70A3FfO zDU`VOqc)^&eoZ^@k~pZjbKFjo7FWi9_aJHo)w-yl%0zz9a#!FpQ`nzmue!RQ0Y8M8 zYNDzm2r?MT;gW>h?X2QfqBfV7xDs$MyB@E<vOzXHqRj6D)0idlt&-6_iIc+z z!UgrvrODsQCZyJ><;%=K@+qey33gW`7SfLtl{0ZifI+rKJ^-;YVNm^xL@GKw3Z%um zhVFnTRFnzqQI1+L6cf6mB%YN}_GWUebOr(0hbk%-2jv`Q(cSR5A8iW`X+z1C)Y6$8 z%qE}ZW}*{YFg?r9P%kBF=-#3$o7>a_U^Tjf3Jv-=`eB`Z2BVe&R{u%(qI&ki|7*zA9>pm>55Oe&!&$+@&T}P#v9#?04!2OX!rRrr zmCX*>25Isas1IBpb(IIpS^SmMqGr>8@N+TgVRJKh2_NL#Rm=pN5i;+%Um%Q@x0vOHXO@xlx$ z7KY*Xrbl`48{rg<4YJ=a6r`hzA_N=2oaj#6F)Pc0eGW_iXVS|-?N5g-M3`09%r5VH zbzP%~`zr_(&^rvp?q(Anx&9h=NRV45ks4q!r za=a|~=wK{jwfOejhy$}`-75(`)be!0V26I>T95cz#!5Uw1inUC_DvR|6wJ4oh!q^N zgQQu8?N(E5T?U$0s1)vXE@--gFdQj>J-OqqahllBrM0_Br=` zS&Xil|I|$8d?lrGTfcDR{c5?DriwOi^@ewAjwt-1yj+KFB-!p7ppllS&1@@~#&o{- zoY`4j^@j=VS;V1^m(G7fqlk8;1$LsP)yA07C-F+VO)% zt+57P4Uj@eJ-m?S%wb1MVR!;&M1+xB)@F~^HK~X#zVMLbE?Pegwz9$j|M=hb#Fh(w za8Jy=#l2v1$-F)kcRdt9^YxG#CKy(svr=56pe`2MUe=`AAdZc}m?4;L(K(FPjS{@+ z*aH@E!xe!E+7RY4%N3NK1LOn-MVlR6RaHxU)s=_j@Xwl0KUuJ^b_lmxzw9Ai{E@ur z%z<{Exu&hBpy)Gs9y3mj_Em+i!i7zJa{E?&de^GJ>&)?n^t%|s+wKQwSHjZsJ3tEv zCJqo+qf7T@IW`kB<0W*u);XdbH5Qr$IajroexvnoXjQ@@ZIPGL+PI6tL#OxCQqUX-XdL;@d)8|7XQEO3mND|r8*jobirraK^g&HyMAQ+{P?4=fd-^qQ8d=8|p5HLs({5-7{fE(|NXwwX z*lodm44Ww(E#GaNa&`D}h(;2Eg>5`O6SAK@C0%uZW>9fIU`g#^W^Cr(MGmGl5h?E{ zqw0uxWEu-1^+IOhmL|{)Fqs+9&&w$6ms1pH)!ZX1aF4U!8jin7DOm$^V-;$<_#0Ffxu^k@|m~tKe>-_x6A}`#BG|>7%^MBNB#jfHGQ4elM9nJbZt8u-jud zRfL7aAH{oN+{ta1e1D|_@)`J?a|=nXde0O|elvibUJ)oR5#ER)LBma-I0Zc~dW5dQ z=iyY@mac==>nylzg^Jk{M#?aBuL4|OG5(lRV>Z-fL5aE52@X-IJ3RVAWV>LAUR|fz2Um5)8 ze`WAQ&@%Y{&vAG|iH`rg3FSSU!Rk>G8yv_AS3`Dz%SA2(03P27i+`D6=YRebicM%P z`2TSqnCE~6`Nw^bLH#KwP=Cq^)SqGqGw@%O3=A}0i~@}pLocncQUArGutEJPOg=i` zo4!B{G0*)qZt{2;P2!B!Ay5Sf1)ikOUkf5`eojB0Osn`G)pd?L6!7;hB8-544VxOR zcDHP5@}e1$pftmyfs~10bJk3bPp`rvE`YxR#vn~U+L0c|_l#Yz*ka=olnH$z49aWz z%&vKDGu0mVN0t|*Qa*tfIR0}|$I&f~c8Lac%(Y1b=6(3b11~P(9n5n)-PKEc-j%=% zmVPo9%L(*+Ojw3zPPEzvnPHmjzBzgV@_Vpz`6jdl)<@iQkbRy%=$j$TnU`LP(;c%? z3I}tJrCm;}pGKTkip36epVvUk$-v4jX!vxye>^|Nl#22vjC(GhNK!GbjI~2^+fz87 zG^~UGmb`K*WOv)}4z{iq%o;#c3(pH$%H8SD4qcjV=$O9=_Pssi7xS;?nslg@M`%*p zd_u(#U&FR~34FE91VroQ$GSOjW!3(Qs`RK>vpCVkQTMV8QRFYc>z%n!Z_oc{=bO7a zWJ6HU3d9{4Mf9%<>@Ys4CbhA#1!1IE0hrDYRlo^X@`@r|_E=8=<*rPXV{!ueHw7FvOEOyBf}Se zJ~DAi?22q4v0WL5Fn@GPc@FT&?3EJfoz^K~@pBL$zOci`)SXASTTj|2IvJR){84q8 z-y&=OmLJt1`)0orq9Qg)I*q^F46I!5rTB)jp6lC-;H=hOi)9kNgm@j!edHgAtL;JL zNh8YbRXd_#fy*aM{zh5{tL_^<@A@)17x@^BD%Q!!L8Nn}hr62E76KJ0DduIjQrDJO zUupyP19A`qQ8XMGJ9l-nDCduHR5*17&pDl?R~3w|_wD=N3oJIfz}PBUZG++~CD_JB z_fz`pYBD(2E_4)WmLj8p-?GIc*@*C3<8@5F>tbqWrC?a>a40ED8BdoIaUX&O)5n-Pe2k_Fq^>tr{= z^Q;-uNHI5sD>~ujpg5#(TJvP*50WAC9cXg{1@8VUi!I2czh_}Th|4}C%mxbmVr-4b z2SysZJ%bbKHg|Jsh%X%fuNnvEn(of7Tx48n5>9h=_H!14Jc*j9n+8F02o9W^ZL6xyxs(Cd&rrwfOu1zRJ$b; zQi4FG(S1!Z+mKzIv)C|-Aqu<`v&+Q>|3bA3__pBKumZ+6O5=t#^zt+q%|BtNEC>B* zedgd`eU~-J@C0<}`)+MGO`^8F{SkX#Sgh5N4gjrT@;AxV2}$%W96RXbnAe3LFOdD0?eiEEP;%%=ka)mrlIDh#Zw_D zs-DN=USedE6OaD6WU;Rq?Z%hH6DO2oqw1s+?Je96e}l>7p-YZfKJf<5LL_Y@#)>9> z*Kwg@!jnUf<{%F1nX|JwEW##4S?f@;&Yu9CR9;xGOO$QeIOXJ~u*HU-rhy)MZ_JU8 z(h00JIkg5gkrj0fCCQVKkPTziPv0vGUt8C{Tn%~& zsJ2$zsg|m{gNQIF+9eHVvEsqvpa6ZhIRJ6$Dq+(r@twlvO%gZANg#VIN;_ZN7<)mI@= zs*|7d9BuSDX`0URICQ0^r;5P?M4n&Y>w zCQqjuk1r>!O@a18OQ}TYxKC^O%4hOf6qalOP9uLIP|Y!%46*oYxfRX)*kr|-N zg7Z~5O5PlUVcoyMsBX`oEDK$?-v4DyN|k|Ag;$!k|2HR?&K>m4ar{%rXWmV&=JX(G z-^=?w8{C2;9pEsTTZ~Uq>*v>Y93^+>Btu#bY`%5svXkPaq4q#dg5|m8U4RAy@8diu zrH$`}RET0KUk-tO|EnqL~{ z!;f3FrAOyS0Wy&o}EUrq)x))4WLV$^m=~v7BcmH&CazD zdLp$=C%?tAv?e?m7Y{2A!Y4c*z74c+IH`rEcC?3S2P<72qu(H#=fQFY7^vHWK{B3j zzCkii2s`!zGdB-m^IjGCk-mh* zD^;gZ81ColX3t{AFu2{uZ}U(c&MHR;--Nc28>zw%eyCq;ckR9E)t7Y(P2_rivj0k} zopEOFc>#^f)iZZ01({f;$IM;kH&eP>r`OVRVbL#9jh2=z8{X?0SMWR+(2gRN3SIj< zS0pT(LS;Tkb1aJysTlL-ApUwxTx%&~j$IB|i}{&LdHx<@Tdo20t1!pDPeT}Mz;9!J z3unMtTE(BOZx*H$cHtpE)%Eo7Gp|b;MR~nUN?n!%yemwuw$h1Npdr#oQLa21QbVDX zc+_iz7Bz+hl;W2~-wI(cw1nr7Nqo`RQbszsOpZQc?g7{nqt{vGLKdQ5-PD!BRGV*I zg#N|;aS6iM8fVUlVcITGAs73O4jZQmC0;$jg(-`C%tCG{^N(X`GLk~2A+_CLQ+rdv}MPnt`LrB2)15PSt0_X@KY3xL;Nl{VG(>vIZBB3Tkc}gnXUE_a zdccGxDEbLxr!X(R;7MX(w&kmIrb~ZlnsB&zmvTxlIyp=gd;RPNkgv>P@Ex+-E6gU& zpydDehxHWHEzMVGHm>;*3US+hMt}L`u3khcOn`igXk}Tf&s%z!kfv<&-L z2>5YVw&P*dHAZRGL5zfA%X@L4cB+`-SQs<*%XZ*txIy-IHO(q!_mx1`MZBhY`%ECf zJ?5VHl#4ZY+kX7z>C%NvbB=pP+|94w+w&KBVr!c`d0;?9TDSjvP!)a2KpwsxKeYpX zeu(KbH_fFSnEFMK{68j3FZ8Quyv*9&&>B8@91<^wYgL4*Dg=|AxI4MsIfGLKiW1Aq z8pUf};3Ba^-KUSKJ{;O^v)E!*OY~DM=s-js_b{#z4L}DbCet)*gf~kChz@1-16|n` zA{jm_v2s=CiwtTN8wW4w8?C6&)|{@T(Ydn5Df7DS7aTb{*2>Y1hU52?9m*5@1~}MI zR*=>8QvL0ZDhZz-1e!bTz5sPz)Z*0E`tk_`40z4YEd`^r+Z8BQ=>GCBT1U8ees*+= zj`p(OnE4sr{C5*c?8U`ZQ6^RFuRUhal-sI4+8Zf~h#g~$P|ZI+Qy;0<#&E2>R%Zvp zNy}cTg08hOGQs)b8G;7Il|MFI)z)rs8y`Mp8XvfCZC}=1xT7k_C=J5u(xoC&ZM+-( zDA}IQYvBdM8UDH|lPiKY;u!r995$o(o)S1wdk8Hq{L93k#~OBiV_ z=eeW7ML2qgA|}Z<1KHERiVP3hqzM_cYJNA~me4|)c)ATZJJ*0DOTRPOuB}$f#yN|u z?pd$Qk%4s>H{L#t@?x4Mr}wDgji2)~#af>V!z~WMG6~TgU~9={UxF2;MhGU-6y%6P zyKF;Ya<~?naqn&Y9oJs|bhS&C{5=75rKfOk476*{ye`WO=FqKPSayOadwZppqaVY1 z!J!|M3mta>VGifnpe90_14^TLGG>i(PgQ%VQ0sU703(12{#Ck?g)aea!lGyr0F1t_ zO%TLU{AL7<97;xkz=*;H>-^sV#XnT>kJ9*eSv$`FJ`ZSw#}Eb@;d%exBRp$`-@peD z>VcNB{Xd}bk1_cNH2AmY0A7LlA56%901sULe~~5s3@ZrO;H&wMqXaB7ji{VgS2Mwi zyJ3aAK!IsN*vJB77Tn+=tnsv~`ndbcNGYhvVf3N<>ApMIugek^%8$Sb->i1YNJSh# zL~t&Ny-mO3**tMwz-pho3BLc`+#UG!*$0ZhKqbDH)dk^oruXUI)0M64*cOEpIa^g2?)P7#-CNp^0mR8iC=!Jg_oO$ ze-zL7=s}nC>Bi96ED$)=JQKCns3ahSMN{>G!KbEHl?jq?;8ux{kw6=~^|L6Fwr+-s ztx%6)PVbEK@E~14To^2m!HI?yj$qqvK2>)N6ds`puv>!6ua+(^9c25+UL@tg|`peZ?|l@YpRlpDrJB8b<(?Nt-$BT#eGcBE7-u&g>FN@s9Q~tBh-mKf-u5 zvTnKdD(@YPLKSn_$X}DYxpbAtn=MedAX0t&ZP~AEF%!4TPCN@utb3RikTR&47|sL8 znNr+5yw68;144hqYB9;`Ifh5v1D0NWn)mN6FK@x{u9`dYRc+~1L$t*! zE;)vmZ8(;_^$ec38aP)F9zWUwRwLl|D1@6)VM$}agdwLfAJ60KHLt(%2KPVnllsqG zxNt&AHOiZ{;t*1OQ@QOi!hBD0vg~re%0#1j!J}A;)mAS$(!Xyxl5e9xBM)_`UUWqr z@)PoB8jX+>BpiwFq&hibTs)e^h;IcpOZ8Gv4xbQGo3dQMw>nQh?NK@>y<^&V{QS|n zD!+Lvm5edG`=wH;2Trg!^w8uk>ttVm5~AlS2wtuiDRJX>1Ee3!j)@%v-QAk$!)Gys zUdGirTi!Z(Wm_IvT0^$!qzg*Sxj$R`mS#43y_?6IC+vSkM>bbH-(~VgfK$Pt4##)50;yU40@Xx+U|I6Nfx7y}mT1Qx&kN3yUR%1rP3ZF; ze%ntX)Evet=fL|uG)ttk-=!ONQLoS22-y>%0I`90Nxp&oFltK6ewj(l2Pn!+;VDcU z;W%i6SK~*^qBYTP9JnL1Ob~}A?Qvq?RjNPZ0@ln~-`lt9)Bt=^ljOGXh1wnFapqbi zef;TVc)Tm|*)^U{9|2Ms*J5dElo;tZUb_8D^J?VZuZf7dPP`V|q@KPI=?q1=A=Qs~ zhC;6AxKL2MP=+5v|NdNmVnh;`3Hx3An$OV3#~T1ktb=_&a2_OGd$Lz@^#vF)H;WNU+hqa;ib5Oj?z5`8)B+dm;jqXE^2;h7@Bn>i~g7VOe7z zOR;&f%+`#BC>%1f+1ECC`%)QeGkq{q>#-tOPSZ6)F)OXruG5{m%8shNZGBq~g3fxH z>Ij7lvQ*hVbxG}IwMt6|v@)k}D}E5#2K^?Ei44)CuNSN$kAJn(P@>PbN<3mbp3YC7 z1p+)55?*YCn*^O#iOR3mGO6dWlUhR^OgBY&rugPQ@fu2=WRmO15ZgB7u4^)V86kD^ z9S#Hyrg67r&E8u{4!K6pPLH&hT&v1kUucGn?9tQnqVw@D@o#{Yao#@;gn+I{jUlfNQfb8-gUx^#EdTn*(U-g<@JJ{9pEvw)H6o^dEfAJRo;KaYn z|EDp?phd4^P?m)4U(qYhe=mA9@Pv-|{v%iZKg@vIWZnP43|Z)iuMl*^_a8y>&%*i- z>HIf4EL0o%4@>eN@dhw6t0)^n^LVvl((bib&Xbn_rIc*0UPcD~eG`21M)i{*C_*zB z<=8{I-)`xmhcgtnF8K?Lt_1_8Pe4?M(qDEJ>ECmjf_y0qIITNzyoe5{MOCC zy1*J(_!_5T*$>NcKUB*^eAx3X&EjZ)2+KlpXzvrkwI60wG`x(L6xzzii!4&DJ2-jO zAeaQS9zLG5#(OnLjq)jZHK$1omt5t-)uK8EmyNqwX_ zLcfv*j+4h@&%#7~I9w!HMbW=T+m@BHPY6dwN6~5?*vII|5JsNckjj*RK_3XK*61vj z-K(S#lNTbG`5P7eRrh~YbC8d%58o1?dKQ?s%8B4?viMnP2OvNwI51`0;dT2c<}EG2 zbd^1GejC9vk@N|~<0~OmHLS5sL*hS$X|D17E}(EEYED{vSDTmC*luYn{5Ot5Tq4KY z4LkZ(=Z(tq;Q>Jp_cst&URrqZ=f7cT-ygTn;PrY?Ke9v&Qo$Ijj%(cY91zB$Mtj@l zXR--S$Q0QsfrouV+P8O@#zxV-hJ6|W8cVHcAbKx_0nrUPVIFxC2C>E);s4`Znv>bc z96arj3Hx%|?)aK`fdzt(mnwui{EZ*DQQb)3$m^2`E~uD%sA+ z-neY^7LSbo>bE?5FoWf>#a2}I05xmo<+z}Uu@aUj3){Vh+{TzZQ=; z96M3>%N@A*G|dQa?c!>qlccB>oCtl&m4BO8mopIBuR6YHILH2ZXOTIUhu3ib#=6Dv zA@R{aIq`=gEwt<|XnSkUKWnB&a>a&P^lxPENQQ=CAvZ`Zj9nC;5x1CQx1u*2cNzc+|!}@~4YHB;o zNv3Grd*7-2cHi*TDxCOPEC!}d{>>2G1PTNHfDQENhCk60`?qMq#%IP{izA#+$q}Qq zse!Thbhz1B{tRn#@)k{8Ap#-ja+IkgP38CAn6q5w+};x4f3)ZrM3~NXO@Uhwce@V8 zTA48?S`+<=7L^v)p?))KT>&fVu zO5G&B?RX@S<@y$wJ(Dc!_LwS;8HO#uCFp#M0Y*>FC$;zE=@E6Jsg>}Z1edIAAv3y5 znVC91h1Y9c)K==eZaovfhB*;KY-PJ|I)CN}GA_NLVfYIO3tdV?lg&THRlf9aa5YuT zHtlAH9{7$p(}E6Tml+)QUYQAECW-8E`U`yoU)0+S<;McaL~z``z22yUk#=Kz@+5~;E{n1#y9AN5QRndLdK z@Tsk^uCoz+njR1>jndQ$~Ij2s>dVY zOnZ)S7DlLYx)Uyw1ktuE{`R~rLAIB(8ySJo6VfJeEF}Q}u7Ohdx4*3QXsc~9Gmm;g z7I#Wj5INxRu?^Tbt>PCu8?l^^KEM}7X+P;TEc1x~L{Y(%ObjOt{A3M{XlcX}X_njY zPuk8tid%vxj69lewu0YNW_EHC72U9I=p25IX_yYl%qaiAD0C~&?(fDM&Nw3w*e}S z3$RMoW+O;6l3w=JJ9-W{u=+QD06Av2Z3Zxqf1o9q1o?-8^=rO)~q1JpQjrXpS&4Y#Ye z7ISdR)P3OlFqeNuz0)Qt$5PZnRknS7%D(XA#X-wO0ucu1rzX2ssu2uFlnb^YS|_j? z#fZgCRm0j<3#1aj5!dG~aV71(*S#I2Op5CN#HLT%(Q_5h(y)`^N9*8F6S9cO>aJjP zpp(PMWSI0?=97%r@l|^_iE7y|(Z}1J`Rn=WJNMTaD>ewOr%JzaACJB~9(h1=(kRpX zf!7{bQB5WEdGu*jc9`yHVysrlM%X8PCQ_@8gqB~o^Gc@o9_ddz>m{wtG|OFl<%{XC z_Js!p7F&;R@z_TPcNTO#l3INbxKFc=t9QzAaW}QiS3i_s7p;-vPV9h{hWA*9ikv$o zhPs>;nIW+TkBoXo3bZ>H*U}qFX@DU4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 Hu0mjfKr*L? literal 0 HcmV?d00001 diff --git a/web/mmo3.html b/web/mmo3.html new file mode 100644 index 0000000..bece34b --- /dev/null +++ b/web/mmo3.html @@ -0,0 +1,506 @@ + + + + MMO-3 + + + + + + + + + + + + + + + + +
    not available + +
    + + + + +
    + + +
    +
    + OSC 1 +
    +
    +
    +
    +
    FQ -0
    +
    +
    +
    +
    +
    Mod 1 -1
    +
    +
    +
    +
    +
    Mod 2 -2
    +
    +
    +
    +
    +
    Mod 3 -3
    +
    +
    + + + +
    +
    + OCS 2 +
    +
    +
    +
    +
    FQ -5
    +
    +
    +
    +
    +
    Mod 1 -6
    +
    +
    +
    +
    +
    Mod 2 -7
    +
    +
    +
    +
    +
    Mod 3 -8
    +
    +
    + + + +
    +
    + OSC 3 +
    +
    +
    +
    +
    FQ -9
    +
    +
    +
    +
    +
    Mod 1 -10
    +
    +
    +
    +
    +
    Mod 2 -11
    +
    +
    +
    +
    +
    Mod 3 -12
    +
    +
    + +
    +
    + LFO 1 +
    +
    +
    +
    +
    FQ -13
    +
    +
    +
    +
    +
    WF -14
    +
    +
    +
    +
    +
    SYM -15
    +
    +
    +
    +
    +
    ATTACK -16
    +
    +
    + + +
    +
    + LFO 2 +
    +
    +
    +
    +
    FQ 1 -17
    +
    +
    +
    +
    +
    FQ 2 -18
    +
    +
    +
    +
    +
    MOD -19
    +
    +
    +
    +
    +
    DECAY -20
    +
    +
    + + +
    +
    + LFO 3 +
    +
    +
    +
    +
    FQ -21
    +
    +
    +
    +
    +
    Param 1 -22
    +
    +
    +
    +
    +
    Param 2 -23
    +
    +
    +
    +
    +
    SUSTAIN -24
    +
    +
    + + +
    +
    + MIX +
    +
    +
    +
    +
    OSC 1 -25
    +
    +
    +
    +
    +
    OSC 2 -26
    +
    +
    +
    +
    +
    OSC 3 -27
    +
    +
    +
    +
    +
    RELEASE -28
    +
    +
    + + +
    +
    + AUDIO +
    +
    +
    +
    +
    VOL -29
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + + + +
    +
+ +
+ + + + + + + + + + + + + + + + + diff --git a/web/ocs2.html b/web/ocs2.html new file mode 100644 index 0000000..e2b82b0 --- /dev/null +++ b/web/ocs2.html @@ -0,0 +1,515 @@ + + + + OCS-2 + + + + + + + + + + + + + + + + +
not available + +
+ + + + +
+ + +
+
+ VCO 1 +
+
+
+
+
FQ -0
+
+
+
+
+
WF -1
+
+
+
+
+
Mod 1 -2
+
+
+
+
+
Mod 2 -3
+
+
+ + + +
+
+ VCO 2 +
+
+
+
+
FQ -5
+
+
+
+
+
WF -6
+
+
+
+
+
Mod 1 -7
+
+
+
+
+
Mod 2 -8
+
+
+ + + +
+
+ VCF +
+
+
+
+
FQ -9
+
+
+
+
+
Q -10
+
+
+
+
+
Mod 1 -11
+
+
+
+
+
Mod 2 -12
+
+
+ +
+
+ LFO 1 +
+
+
+
+
FQ -13
+
+
+
+
+
WF -14
+
+
+
+
+
SYM -15
+
+
+
+
+
ATTACK -16
+
+
+ + +
+
+ LFO 2 +
+
+
+
+
FQ -17
+
+
+
+
+
WF -18
+
+
+
+
+
SYM -19
+
+
+
+
+
DECAY -20
+
+
+ + +
+
+ LFO 3 +
+
+
+
+
FQ -21
+
+
+
+
+
MOD -22
+
+
+
+
+
WET EFFECT -23
+
+
+
+
+
SUSTAIN -24
+
+
+ + +
+
+ CV GEN +
+
+
+
+
PARAM 1 -25
+
+
+
+
+
PARAM 2 -26
+
+
+
+
+
MOD EFFECT -27
+
+
+
+
+
RELEASE -28
+
+
+ + +
+
+ VCA +
+
+
+
+
MIX 1/2 -29
+
+
+
+
+
MOD -30
+
+
+
+
+
VOL -31
+
+
+ +
+
+ + + +
+ + + + + + + + + + + + + + + + + +
+ MMO-3 + +
+ + + diff --git a/web/selector.min.css b/web/selector.min.css new file mode 100755 index 0000000..061a532 --- /dev/null +++ b/web/selector.min.css @@ -0,0 +1 @@ +div.selector-element{font-size: 0.75em; display:inline-block;position:relative;width:100%;max-width: 85px;height: 24px;font-family:sans-serif;color: #fbfff5;background-color: #111111}div.selector-element div.selector-selected{display:inline-block;width:100%;height:100%;position:relative;cursor:pointer;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;line-height:30px;padding:0 12px;transition:.15s ease-in-out;border:1px solid gray}div.selector-element div.selector-selected:hover{background-color: #060606}div.selector-element div.selector-selected:after{content:'';position:absolute;top:50%;right:22px;transform:translateY(-50%);height:0;width:0;border-top:5px solid silver;border-left:5px solid transparent;border-right:5px solid transparent}div.selector-element div.selector-selected p.selected-text{display:inline-block;margin:0;width:100%;height:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-right:30px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}div.selector-element div.selector-options{color: #dbdbdb; display:none;position:absolute;background-color: #111111;top:100%;width:100%;height:auto;max-height:156px;overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid grey;border-top:0;box-shadow:0 2px 3px rgba(0,0,0,0.2);z-index:1;transition:.2s ease-in-out}div.selector-element div.selector-options.options-search{max-height:220px}div.selector-element.open div.selector-options{display:block}div.selector-element div.selector-options div.selector-option{display:block;position:relative;width:100%;height:32px;border-bottom:1px solid silver;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 12px;line-height:31px;cursor:pointer;overflow:hidden;transition:.15s ease-in-out}div.selector-element div.selector-options div.selector-option.hide{height:0;border-bottom:0;transition:.1s ease-in-out}div.selector-element div.selector-options div.selector-option.option-selected{background-color: #111111}div.selector-element div.selector-options div.selector-option:hover{color: #fbfff5; background-color: #111111}div.selector-element div.selector-options div.selector-option:last-of-type{border-bottom:0}div.selector-element div.selector-options div.selector-option.option-disabled{opacity:.6}div.selector-element div.selector-options div.option-search{display:block;height:32px;line-height:33px;position:relative;width:100%;border-bottom:1px solid grey}div.selector-element div.selector-options div.option-search span{position:absolute;top:50%;transform:translateY(-48%) !important;height:14px;width:14px;cursor:pointer;z-index:1;background:url("../knobs/close.svg") center no-repeat;background-size:11px;right:12px}div.selector-element div.selector-options div.option-search input{display:inline-block;width:100%;height:100%;padding:0 36px 0 36px;font-family:sans-serif;font-size:1em;color: white;outline:0;border:0;background:url("../knobs/search.svg") left 13px center no-repeat;background-size:13px} \ No newline at end of file diff --git a/web/selector.min.js b/web/selector.min.js new file mode 100755 index 0000000..263e77d --- /dev/null +++ b/web/selector.min.js @@ -0,0 +1 @@ +function Selector(a){this.elements={};this.currentElement={};this.currentInstance={};this.config={selector:"select.selector-instance"};this.parameters=a;this.applyParameters();this.core()}Selector.prototype.applyParameters=function(){let allowedParameters=["selector"];for(let i in this.parameters){if(allowedParameters.indexOf(i)===-1){continue}this.config[i]=this.parameters[i]}};Selector.prototype.core=function(){this.getElements();for(let i=0;iMIDI Learn +
  • Learn
  • +
  • Clear
  • +
  • Close
  • +`; + let opt={ + useMidi:0, + midilearn:0, + mididump:0, + outline:0, + knobSrc:null, + knobSprites:0, + knobWidth:0, + knobHeight:0, + knobDiameter:64, + knobColors:"#e00;#000;#000", + sliderSrc:null, + sliderKnobsrc:null, + sliderWidth:0, + sliderHeight:0, + sliderKnobwidth:0, + sliderKnobheight:0, + sliderDitchlength:0, + sliderColors:"#e00;#000;#fcc", + switchWidth:0, + switchHeight:0, + switchDiameter:24, + switchColors:"#e00;#000;#fcc", + paramWidth:32, + paramHeight:16, + paramColors:"#fff;#000", + xypadColors:"#e00;#000;#fcc", + }; + if(window.WebAudioControlsOptions) + Object.assign(opt,window.WebAudioControlsOptions); + class WebAudioControlsWidget extends HTMLElement{ + constructor(){ + super(); + this.addEventListener("keydown",this.keydown); + this.addEventListener("mousedown",this.pointerdown,{passive:false}); + this.addEventListener("touchstart",this.pointerdown,{passive:false}); + this.addEventListener("wheel",this.wheel); + this.addEventListener("mouseover",this.pointerover); + this.addEventListener("mouseout",this.pointerout); + this.addEventListener("contextmenu",this.contextMenu); + this.hover=this.drag=0; + document.body.appendChild(midimenu); + this.basestyle=` +.webaudioctrl-tooltip{ + display:inline-block; + position:absolute; + margin:0 -1000px; + z-index: 999; + background:#eee; + color:#000; + border:1px solid #666; + border-radius:4px; + padding:5px 10px; + text-align:center; + left:0; top:0; + font-size:11px; + opacity:0; + visibility:hidden; +} +.webaudioctrl-tooltip:before{ + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -8px; + border: 8px solid transparent; + border-top: 8px solid #666; +} +.webaudioctrl-tooltip:after{ + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -6px; + border: 6px solid transparent; + border-top: 6px solid #eee; +} +`; + } + sendEvent(ev){ + let event; + event=document.createEvent("HTMLEvents"); + event.initEvent(ev,false,true); + this.dispatchEvent(event); + } + getAttr(n,def){ + let v=this.getAttribute(n); + if(v==""||v==null) return def; + switch(typeof(def)){ + case "number": + if(v=="true") return 1; + v=+v; + if(isNaN(v)) return 0; + return v; + } + return v; + } + showtip(d){ + function valstr(x,c,type){ + switch(type){ + case "x": return (x|0).toString(16); + case "X": return (x|0).toString(16).toUpperCase(); + case "d": return (x|0).toString(); + case "f": return x.toFixed(c); + case "s": return x.toString(); + } + return ""; + } + function numformat(s,x){ + if(typeof(x)=="undefined") + return; + let i=s.indexOf("%"); + let c=[0,0],type=0,m=0,r="",j=i+1; + for(;j=0){ + type=s[j]; + break; + } + if(s[j]==".") + m=1; + else + c[m]=c[m]*10+parseInt(s[j]); + } + if(typeof(x)=="number") + r=valstr(x,c[1],type); + else + r=valstr(x.x,c[1],type)+","+valstr(x.y,c[1],type); + if(c[0]>0) + r=(" "+r).slice(-c[0]); + r=s.replace(/%.*[xXdfs]/,r); + return r; + } + let s=this.tooltip; + if(this.drag||this.hover){ + if(this.valuetip){ + if(s==null) + s=`%.${this.digits}f`; + else if(s.indexOf("%")<0) + s+=` : %.${this.digits}f`; + } + if(s){ + this.ttframe.innerHTML=numformat(s,this.convValue); + this.ttframe.style.display="inline-block"; + this.ttframe.style.width="auto"; + this.ttframe.style.height="auto"; + this.ttframe.style.transition="opacity 0.5s "+d+"s,visibility 0.5s "+d+"s"; + this.ttframe.style.opacity=0.9; + this.ttframe.style.visibility="visible"; + let rc=this.getBoundingClientRect(),rc2=this.ttframe.getBoundingClientRect(),rc3=document.documentElement.getBoundingClientRect(); + this.ttframe.style.left=((rc.width-rc2.width)*0.5+1000)+"px"; + this.ttframe.style.top=(-rc2.height-8)+"px"; + return; + } + } + this.ttframe.style.transition="opacity 0.1s "+d+"s,visibility 0.1s "+d+"s"; + this.ttframe.style.opacity=0; + this.ttframe.style.visibility="hidden"; + } + pointerover(e) { + this.hover=1; + this.showtip(0.6); + } + pointerout(e) { + this.hover=0; + this.showtip(0); + } + contextMenu(e){ + if(window.webAudioControlsMidiManager && this.midilearn) + webAudioControlsMidiManager.contextMenuOpen(e,this); + e.preventDefault(); + e.stopPropagation(); + } + setMidiController(channel, cc) { + if (this.listeningToThisMidiController(channel, cc)) return; + this.midiController={ 'channel': channel, 'cc': cc}; + console.log("Added mapping for channel=" + channel + " cc=" + cc + " tooltip=" + this.tooltip); + } + listeningToThisMidiController(channel, cc) { + const c = this.midiController; + if((c.channel === channel || c.channel < 0) && c.cc === cc) + return true; + return false; + } + processMidiEvent(event){ + const channel = event.data[0] & 0xf; + const controlNumber = event.data[1]; + if(this.midiMode == 'learn') { + this.setMidiController(channel, controlNumber); + webAudioControlsMidiManager.contextMenuClose(); + this.midiMode = 'normal'; + } + if(this.listeningToThisMidiController(channel, controlNumber)) { + if(this.tagName=="WEBAUDIO-SWITCH"){ + switch(this.type){ + case "toggle": + if(event.data[2]>=64) + this.setValue(1-this.value,true); + break; + case "kick": + this.setValue(event.data[2]>=64?1:0); + break; + case "radio": + let els=document.querySelectorAll("webaudio-switch[type='radio'][group='"+this.group+"']"); + for(let i=0;i +${this.basestyle} +webaudio-knob{ + display:inline-block; + position:relative; + margin:0; + padding:0; + cursor:pointer; + font-family: sans-serif; + font-size: 11px; +} +.webaudio-knob-body{ + display:inline-block; + position:relative; + margin:0; + padding:0; + vertical-align:bottom; +} + +
    +`; + this.elem=root.childNodes[2]; + this.ttframe=root.childNodes[3]; + this.enable=this.getAttr("enable",1); + this._src=this.getAttr("src",opt.knobSrc); Object.defineProperty(this,"src",{get:()=>{return this._src},set:(v)=>{this._src=v;this.setupImage()}}); + this._value=this.getAttr("value",0); Object.defineProperty(this,"value",{get:()=>{return this._value},set:(v)=>{this._value=v;this.redraw()}}); + this.defvalue=this.getAttr("defvalue",0); + this._min=this.getAttr("min",0); Object.defineProperty(this,"min",{get:()=>{return this._min},set:(v)=>{this._min=+v;this.redraw()}}); + this._max=this.getAttr("max",100); Object.defineProperty(this,"max",{get:()=>{return this._max},set:(v)=>{this._max=+v;this.redraw()}}); + this._step=this.getAttr("step",1); Object.defineProperty(this,"step",{get:()=>{return this._step},set:(v)=>{this._step=+v;this.redraw()}}); + this._sprites=this.getAttr("sprites",opt.knobSprites); Object.defineProperty(this,"sprites",{get:()=>{return this._sprites},set:(v)=>{this._sprites=v;this.setupImage()}}); + this._width=this.getAttr("width",opt.knobWidth); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",opt.knobHeight); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + this._diameter=this.getAttr("diameter",opt.knobDiameter); Object.defineProperty(this,"diameter",{get:()=>{return this._diameter},set:(v)=>{this._diameter=v;this.setupImage()}}); + this._colors=this.getAttr("colors",opt.knobColors); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.sensitivity=this.getAttr("sensitivity",1); + this.valuetip=this.getAttr("valuetip",1); + this.tooltip=this.getAttr("tooltip",null); + this.conv=this.getAttr("conv",null); + if(this.conv) + this.convValue=eval(this.conv)(this._value); + else + this.convValue=this._value; + this.midilearn=this.getAttr("midilearn",opt.midilearn); + this.midicc=this.getAttr("midicc",null); + + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + this.digits=0; + this.coltab=["#e00","#000","#000"]; + if(window.webAudioControlsMidiManager) +// window.webAudioControlsMidiManager.updateWidgets(); + window.webAudioControlsMidiManager.addWidget(this); + } + disconnectedCallback(){} + setupImage(){ + this.kw=this.width||this.diameter; + this.kh=this.height||this.diameter; + if(!this.src){ + if(this.colors) + this.coltab = this.colors.split(";"); + if(!this.coltab) + this.coltab=["#e00","#000","#000"]; + let svg= +` + + +`; + for(let i=0;i<101;++i){ + svg += ``; + svg += ``; + } + svg += ""; + this.elem.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svg)+")"; +// this.elem.style.backgroundSize = "100% 10100%"; + this.elem.style.backgroundSize = `${this.kw}px ${this.kh*101}px`; + } + else{ + this.elem.style.backgroundImage = "url("+(this.src)+")"; + if(!this.sprites) + this.elem.style.backgroundSize = "100% 100%"; + else{ +// this.elem.style.backgroundSize = `100% ${(this.sprites+1)*100}%`; + this.elem.style.backgroundSize = `${this.kw}px ${this.kh*(this.sprites+1)}px`; + } + } + this.elem.style.outline=this.outline?"":"none"; + this.elem.style.width=this.kw+"px"; + this.elem.style.height=this.kh+"px"; + this.style.height=this.kh+"px"; + this.redraw(); + } + redraw() { + this.digits=0; + if(this.step && this.step < 1) { + for(let n = this.step ; n < 1; n *= 10) + ++this.digits; + } + if(this.valuethis.max){ + this.value=this.max; + return; + } + let range = this.max - this.min; + let style = this.elem.style; + let sp = this.src?this.sprites:100; + if(sp>=1){ + let offset = ((sp * (this.value - this.min) / range) | 0); + style.backgroundPosition = "0px " + (-offset*this.kh) + "px"; + style.transform = 'rotate(0deg)'; + } else { + let deg = 270 * ((this.value - this.min) / range - 0.5); + style.backgroundPosition="0px 0px"; + style.transform = 'rotate(' + deg + 'deg)'; + } + } + _setValue(v){ + if(this.step) + v=(Math.round((v-this.min)/this.step))*this.step+this.min; + this._value=Math.min(this.max,Math.max(this.min,v)); + if(this._value!=this.oldvalue){ + this.oldvalue=this._value; + if(this.conv) + this.convValue=eval(this.conv)(this._value); + else + this.convValue=this._value; + this.redraw(); + this.showtip(0); + return 1; + } + return 0; + } + setValue(v,f){ + if(this._setValue(v) && f) + this.sendEvent("input"),this.sendEvent("change"); + } + wheel(e) { + let delta=(this.max-this.min)*0.01; + delta=e.deltaY>0?-delta:delta; + if(!e.shiftKey) + delta*=5; + if(Math.abs(delta) < this.step) + delta = (delta > 0) ? +this.step : -this.step; + this.setValue(+this.value+delta,true); + e.preventDefault(); + e.stopPropagation(); + } + pointerdown(ev){ + if(!this.enable) + return; + let e=ev; + if(ev.touches){ + e = ev.changedTouches[0]; + this.identifier=e.identifier; + } + else { + if(e.buttons!=1 && e.button!=0) + return; + } + this.elem.focus(); + this.drag=1; + this.showtip(0); + let pointermove=(ev)=>{ + let e=ev; + if(ev.touches){ + for(let i=0;i{ + let e=ev; + if(ev.touches){ + for(let i=0;;){ + if(ev.changedTouches[i].identifier==this.identifier){ + break; + } + if(++i>=ev.changedTouches.length) + return; + } + } + this.drag=0; + this.showtip(0); + this.startPosX = this.startPosY = null; + window.removeEventListener('mousemove', pointermove); + window.removeEventListener('touchmove', pointermove, {passive:false}); + window.removeEventListener('mouseup', pointerup); + window.removeEventListener('touchend', pointerup); + window.removeEventListener('touchcancel', pointerup); + document.body.removeEventListener('touchstart', preventScroll,{passive:false}); + this.sendEvent("change"); + } + let preventScroll=(e)=>{ + e.preventDefault(); + } + if(e.ctrlKey || e.metaKey) + this.setValue(this.defvalue,true); + else { + this.startPosX = e.pageX; + this.startPosY = e.pageY; + this.startVal = this.value; + window.addEventListener('mousemove', pointermove); + window.addEventListener('touchmove', pointermove, {passive:false}); + } + window.addEventListener('mouseup', pointerup); + window.addEventListener('touchend', pointerup); + window.addEventListener('touchcancel', pointerup); + document.body.addEventListener('touchstart', preventScroll,{passive:false}); + ev.preventDefault(); + ev.stopPropagation(); + return false; + } + }); +} catch(error){ + console.log("webaudio-knob already defined"); +} + +try{ + customElements.define("webaudio-slider", class WebAudioSlider extends WebAudioControlsWidget { + constructor(){ + super(); + } + connectedCallback(){ + let root; +// if(this.attachShadow) +// root=this.attachShadow({mode: 'open'}); +// else + root=this; + root.innerHTML= +` +
    +`; + this.elem=root.childNodes[2]; + this.knob=this.elem.childNodes[0]; + this.ttframe=root.childNodes[3]; + this.enable=this.getAttr("enable",1); + this._src=this.getAttr("src",opt.sliderSrc); Object.defineProperty(this,"src",{get:()=>{return this._src},set:(v)=>{this._src=v;this.setupImage()}}); + this._knobsrc=this.getAttr("knobsrc",opt.sliderKnobsrc); Object.defineProperty(this,"knobsrc",{get:()=>{return this._knobsrc},set:(v)=>{this._knobsrc=v;this.setupImage()}}); + this._value=this.getAttr("value",0); Object.defineProperty(this,"value",{get:()=>{return this._value},set:(v)=>{this._value=v;this.redraw()}}); + this.defvalue=this.getAttr("defvalue",0); + this._min=this.getAttr("min",0); Object.defineProperty(this,"min",{get:()=>{return this._min},set:(v)=>{this._min=v;this.redraw()}}); + this._max=this.getAttr("max",100); Object.defineProperty(this,"max",{get:()=>{return this._max},set:(v)=>{this._max=v;this.redraw()}}); + this._step=this.getAttr("step",1); Object.defineProperty(this,"step",{get:()=>{return this._step},set:(v)=>{this._step=v;this.redraw()}}); + this._sprites=this.getAttr("sprites",0); Object.defineProperty(this,"sprites",{get:()=>{return this._sprites},set:(v)=>{this._sprites=v;this.setupImage()}}); + this._direction=this.getAttr("direction",null); Object.defineProperty(this,"direction",{get:()=>{return this._direction},set:(v)=>{this._direction=v;this.setupImage()}}); + this._width=this.getAttr("width",opt.sliderWidth); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",opt.sliderHeight); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + if(this._direction=="horz"){ + if(this._width==0) this._width=128; + if(this._height==0) this._height=24; + } + else{ + if(this._width==0) this._width=24; + if(this._height==0) this._height=128; + } + this._knobwidth=this.getAttr("knobwidth",opt.sliderKnobwidth); Object.defineProperty(this,"knobwidth",{get:()=>{return this._knobwidth},set:(v)=>{this._knobwidth=v;this.setupImage()}}); + this._knobheight=this.getAttr("knbheight",opt.sliderKnobheight); Object.defineProperty(this,"knobheight",{get:()=>{return this._knobheight},set:(v)=>{this._knobheight=v;this.setupImage()}}); + this._ditchlength=this.getAttr("ditchlength",opt.sliderDitchlength); Object.defineProperty(this,"ditchlength",{get:()=>{return this._ditchlength},set:(v)=>{this._ditchlength=v;this.setupImage()}}); + this._colors=this.getAttr("colors",opt.sliderColors); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.sensitivity=this.getAttr("sensitivity",1); + this.valuetip=this.getAttr("valuetip",1); + this.tooltip=this.getAttr("tooltip",null); + this.conv=this.getAttr("conv",null); + if(this.conv) + this.convValue=eval(this.conv)(this._value); + else + this.convValue=this._value; + this.midilearn=this.getAttr("midilearn",opt.midilearn); + this.midicc=this.getAttr("midicc",null); + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + this.digits=0; + if(window.webAudioControlsMidiManager) +// window.webAudioControlsMidiManager.updateWidgets(); + window.webAudioControlsMidiManager.addWidget(this); + this.elem.onclick=(e)=>{e.stopPropagation()}; + } + disconnectedCallback(){} + setupImage(){ + this.coltab = this.colors.split(";"); + this.dr=this.direction; + this.dlen=this.ditchlength; + if(!this.width){ + if(this.dr=="horz") + this.width=128; + else + this.width=24; + } + if(!this.height){ + if(this.dr=="horz") + this.height=24; + else + this.height=128; + } + if(!this.dr) + this.dr=(this.width<=this.height)?"vert":"horz"; + if(this.dr=="vert"){ + if(!this.dlen) + this.dlen=this.height-this.width; + } + else{ + if(!this.dlen) + this.dlen=this.width-this.height; + } + this.knob.style.backgroundSize = "100% 100%"; + this.elem.style.backgroundSize = "100% 100%"; + this.elem.style.width=this.width+"px"; + this.elem.style.height=this.height+"px"; + this.style.height=this.height+"px"; + this.kwidth=this.knobwidth||(this.dr=="horz"?this.height:this.width); + this.kheight=this.knobheight||(this.dr=="horz"?this.height:this.width); + this.knob.style.width = this.kwidth+"px"; + this.knob.style.height = this.kheight+"px"; + if(!this.src){ + let r=Math.min(this.width,this.height)*0.5; + let svgbody= +` +`; + this.elem.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svgbody)+")"; + } + else{ + this.elem.style.backgroundImage = "url("+(this.src)+")"; + } + if(!this.knobsrc){ + let svgthumb= +` + +`; + this.knob.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svgthumb)+")"; + } + else{ + this.knob.style.backgroundImage = "url("+(this.knobsrc)+")"; + } + this.elem.style.outline=this.outline?"":"none"; + this.redraw(); + } + redraw() { + this.digits=0; + if(this.step && this.step < 1) { + for(let n = this.step ; n < 1; n *= 10) + ++this.digits; + } + if(this.valuethis.max){ + this.value=this.max; + return; + } + let range = this.max - this.min; + let style = this.knob.style; + if(this.dr=="vert"){ + style.left=(this.width-this.kwidth)*0.5+"px"; + style.top=(1-(this.value-this.min)/range)*this.dlen+"px"; + this.sensex=0; this.sensey=1; + } + else{ + style.top=(this.height-this.kheight)*0.5+"px"; + style.left=(this.value-this.min)/range*this.dlen+"px"; + this.sensex=1; this.sensey=0; + } + } + _setValue(v){ + v=(Math.round((v-this.min)/this.step))*this.step+this.min; + this._value=Math.min(this.max,Math.max(this.min,v)); + if(this._value!=this.oldvalue){ + this.oldvalue=this._value; + if(this.conv) + this.convValue=eval(this.conv)(this._value); + else + this.convValue=this._value; + this.redraw(); + this.showtip(0); + return 1; + } + return 0; + } + setValue(v,f){ + if(this._setValue(v)&&f) + this.sendEvent("input"),this.sendEvent("change"); + } + wheel(e) { + let delta=(this.max-this.min)*0.01; + delta=e.deltaY>0?-delta:delta; + if(!e.shiftKey) + delta*=5; + if(Math.abs(delta) < this.step) + delta = (delta > 0) ? +this.step : -this.step; + this.setValue(+this.value+delta,true); + e.preventDefault(); + e.stopPropagation(); + this.redraw(); + } + pointerdown(ev){ + if(!this.enable) + return; + let e=ev; + if(ev.touches){ + e = ev.changedTouches[0]; + this.identifier=e.identifier; + } + else { + if(e.buttons!=1 && e.button!=0) + return; + } + this.elem.focus(); + this.drag=1; + this.showtip(0); + let pointermove=(ev)=>{ + let e=ev; + if(ev.touches){ + for(let i=0;i{ + let e=ev; + if(ev.touches){ + for(let i=0;;){ + if(ev.changedTouches[i].identifier==this.identifier){ + break; + } + if(++i>=ev.changedTouches.length) + return; + } + } + this.drag=0; + this.showtip(0); + this.startPosX = this.startPosY = null; + window.removeEventListener('mousemove', pointermove); + window.removeEventListener('touchmove', pointermove, {passive:false}); + window.removeEventListener('mouseup', pointerup); + window.removeEventListener('touchend', pointerup); + window.removeEventListener('touchcancel', pointerup); + document.body.removeEventListener('touchstart', preventScroll,{passive:false}); + this.sendEvent("change"); + } + let preventScroll=(e)=>{ + e.preventDefault(); + } + if(e.touches) + e = e.touches[0]; + if(e.ctrlKey || e.metaKey) + this.setValue(this.defvalue,true); + else { + this.startPosX = e.pageX; + this.startPosY = e.pageY; + this.startVal = this.value; + window.addEventListener('mousemove', pointermove); + window.addEventListener('touchmove', pointermove, {passive:false}); + } + window.addEventListener('mouseup', pointerup); + window.addEventListener('touchend', pointerup); + window.addEventListener('touchcancel', pointerup); + document.body.addEventListener('touchstart', preventScroll,{passive:false}); + e.preventDefault(); + e.stopPropagation(); + return false; + } + }); +} catch(error){ + console.log("webaudio-slider already defined"); +} + +try{ + customElements.define("webaudio-switch", class WebAudioSwitch extends WebAudioControlsWidget { + constructor(){ + super(); + } + connectedCallback(){ + let root; +// if(this.attachShadow) +// root=this.attachShadow({mode: 'open'}); +// else + root=this; + root.innerHTML= +` +
    +`; + this.elem=root.childNodes[2]; + this.ttframe=this.elem.childNodes[0]; + + this.enable=this.getAttr("enable",1); + this._src=this.getAttr("src",null); Object.defineProperty(this,"src",{get:()=>{return this._src},set:(v)=>{this._src=v;this.setupImage()}}); + this._value=this.getAttr("value",0); Object.defineProperty(this,"value",{get:()=>{return this._value},set:(v)=>{this._value=v;this.redraw()}}); + this.defvalue=this.getAttr("defvalue",0); + this.type=this.getAttr("type","toggle"); + this.group=this.getAttr("group",""); + this._width=this.getAttr("width",0); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",0); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + this._diameter=this.getAttr("diameter",0); Object.defineProperty(this,"diameter",{get:()=>{return this._diameter},set:(v)=>{this._diameter=v;this.setupImage()}}); + this.invert=this.getAttr("invert",0); + this._colors=this.getAttr("colors",opt.switchColors); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.valuetip=0; + this.tooltip=this.getAttr("tooltip",null); + this.midilearn=this.getAttr("midilearn",opt.midilearn); + this.midicc=this.getAttr("midicc",null); + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + this.digits=0; + if(window.webAudioControlsMidiManager) +// window.webAudioControlsMidiManager.updateWidgets(); + window.webAudioControlsMidiManager.addWidget(this); + this.elem.onclick=(e)=>{e.stopPropagation()}; + } + disconnectedCallback(){} + setupImage(){ + let w=this.width||this.diameter||opt.switchWidth||opt.switchDiameter; + let h=this.height||this.diameter||opt.switchHeight||opt.switchDiameter; + if(!this.src){ + this.coltab = this.colors.split(";"); + let mm=Math.min(w,h); + let svg= +` + + + + +`; + this.elem.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svg)+")"; + this.elem.style.backgroundSize = "100% 200%"; + } + else{ + this.elem.style.backgroundImage = "url("+(this.src)+")"; + if(!this.sprites) + this.elem.style.backgroundSize = "100% 200%"; + else + this.elem.style.backgroundSize = `100% ${(this.sprites+1)*100}%`; + } + this.elem.style.width=w+"px"; + this.elem.style.height=h+"px"; + this.style.height=h+"px"; + this.elem.style.outline=this.outline?"":"none"; + this.redraw(); + } + redraw() { + let style = this.elem.style; + if(this.value^this.invert) + style.backgroundPosition = "0px -100%"; + else + style.backgroundPosition = "0px 0px"; + } + setValue(v,f){ + this.value=v; + this.checked=(!!v); + if(this.value!=this.oldvalue){ + this.redraw(); + this.showtip(0); + if(f){ + this.sendEvent("input"); + this.sendEvent("change"); + } + this.oldvalue=this.value; + } + } + pointerdown(ev){ + if(!this.enable) + return; + let e=ev; + if(ev.touches){ + e = ev.changedTouches[0]; + this.identifier=e.identifier; + } + else { + if(e.buttons!=1 && e.button!=0) + return; + } + this.elem.focus(); + this.drag=1; + this.showtip(0); + let pointermove=(e)=>{ + e.preventDefault(); + e.stopPropagation(); + return false; + } + let pointerup=(e)=>{ + this.drag=0; + this.showtip(0); + window.removeEventListener('mousemove', pointermove); + window.removeEventListener('touchmove', pointermove, {passive:false}); + window.removeEventListener('mouseup', pointerup); + window.removeEventListener('touchend', pointerup); + window.removeEventListener('touchcancel', pointerup); + document.body.removeEventListener('touchstart', preventScroll,{passive:false}); + if(this.type=="kick"){ + this.value=0; + this.checked=false; + this.redraw(); + this.sendEvent("change"); + } + this.sendEvent("click"); + e.preventDefault(); + e.stopPropagation(); + } + let preventScroll=(e)=>{ + e.preventDefault(); + } + switch(this.type){ + case "kick": + this.setValue(1); + this.sendEvent("change"); + break; + case "toggle": + if(e.ctrlKey || e.metaKey) + this.value=defvalue; + else + this.value=1-this.value; + this.checked=!!this.value; + this.sendEvent("change"); + break; + case "radio": + let els=document.querySelectorAll("webaudio-switch[type='radio'][group='"+this.group+"']"); + for(let i=0;i +${this.basestyle} +webaudio-param{ + display:inline-block; + user-select:none; + margin:0; + padding:0; + font-family: sans-serif; + font-size: 8px; + cursor:pointer; + position:relative; + vertical-align:baseline; +} +.webaudio-param-body{ + display:inline-block; + position:relative; + text-align:center; + border:1px solid #888; + background:none; + border-radius:4px; + margin:0; + padding:0; + font-family:sans-serif; + font-size:11px; + vertical-align:bottom; +} + +
    +`; + this.elem=root.childNodes[2]; + this.ttframe=root.childNodes[3]; + this.enable=this.getAttr("enable",1); + this._value=this.getAttr("value",0); Object.defineProperty(this,"value",{get:()=>{return this._value},set:(v)=>{this._value=v;this.redraw()}}); + this.defvalue=this.getAttr("defvalue",0); + this._fontsize=this.getAttr("fontsize",9); Object.defineProperty(this,"fontsize",{get:()=>{return this._fontsize},set:(v)=>{this._fontsize=v;this.setupImage()}}); + this._src=this.getAttr("src",null); Object.defineProperty(this,"src",{get:()=>{return this._src},set:(v)=>{this._src=v;this.setupImage()}}); + this.link=this.getAttr("link",""); + this._width=this.getAttr("width",32); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",20); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + this._colors=this.getAttr("colors","#fff;#000"); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + if(window.webAudioControlsMidiManager) +// window.webAudioControlsMidiManager.updateWidgets(); + window.webAudioControlsMidiManager.addWidget(this); + this.fromLink=((e)=>{ + this.setValue(e.target.convValue.toFixed(e.target.digits)); + }).bind(this); + this.elem.onchange=()=>{ + this.value=this.elem.value; + let le=document.getElementById(this.link); + if(le) + le.setValue(+this.elem.value); + } + } + disconnectedCallback(){} + setupImage(){ + this.coltab = this.colors.split(";"); + this.elem.style.color=this.coltab[0]; + if(!this.src){ + this.elem.style.backgroundColor=this.coltab[1]; + } + else{ + this.elem.style.backgroundImage = "url("+(this.src)+")"; + this.elem.style.backgroundSize = "100% 100%"; + } + this.elem.style.width=this.width+"px"; + this.elem.style.height=this.height+"px"; + this.elem.style.fontSize=this.fontsize+"px"; + this.elem.style.outline=this.outline?"":"none"; + let l=document.getElementById(this.link); + if(l&&typeof(l.value)!="undefined"){ + this.setValue(l.value.toFixed(l.digits)); + l.addEventListener("input",(e)=>{this.setValue(l.value.toFixed(l.digits))}); + } + this.redraw(); + } + redraw() { + this.elem.value=this.value; + } + setValue(v,f){ + this.value=v; + if(this.value!=this.oldvalue){ + this.redraw(); + this.showtip(0); + if(f){ + let event=document.createEvent("HTMLEvents"); + event.initEvent("change",false,true); + this.dispatchEvent(event); + } + this.oldvalue=this.value; + } + } + pointerdown(ev){ + if(!this.enable) + return; + let e=ev; + if(ev.touches) + e = ev.touches[0]; + else { + if(e.buttons!=1 && e.button!=0) + return; + } + this.elem.focus(); + this.redraw(); + } + }); +} catch(error){ + console.log("webaudio-param already defined"); +} + +try{ + customElements.define("webaudio-keyboard", class WebAudioKeyboard extends WebAudioControlsWidget { + constructor(){ + super(); + } + connectedCallback(){ + let root; +// if(this.attachShadow) +// root=this.attachShadow({mode: 'open'}); +// else + root=this; + root.innerHTML= +` +
    +`; + this.cv=root.childNodes[2]; + this.ttframe=root.childNodes[3]; + this.ctx=this.cv.getContext("2d"); + this._values=[]; + this.enable=this.getAttr("enable",1); + this._width=this.getAttr("width",480); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",128); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + this._min=this.getAttr("min",0); Object.defineProperty(this,"min",{get:()=>{return this._min},set:(v)=>{this._min=+v;this.redraw()}}); + this._keys=this.getAttr("keys",25); Object.defineProperty(this,"keys",{get:()=>{return this._keys},set:(v)=>{this._keys=+v;this.setupImage()}}); + this._colors=this.getAttr("colors","#222;#eee;#ccc;#333;#000;#e88;#c44;#c33;#800"); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.midilearn=this.getAttr("midilearn",0); + this.midicc=this.getAttr("midicc",null); + this.press=0; + this.keycodes1=[90,83,88,68,67,86,71,66,72,78,74,77,188,76,190,187,191,226]; + this.keycodes2=[81,50,87,51,69,82,53,84,54,89,55,85,73,57,79,48,80,192,222,219]; + this.addEventListener("keyup",this.keyup); + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + this.digits=0; + if(window.webAudioControlsMidiManager) + window.webAudioControlsMidiManager.addWidget(this); + } + disconnectedCallback(){} + setupImage(){ + this.cv.style.width=this.width+"px"; + this.cv.style.height=this.height+"px"; + this.bheight = this.height * 0.55; + this.kp=[0,7/12,1,3*7/12,2,3,6*7/12,4,8*7/12,5,10*7/12,6]; + this.kf=[0,1,0,1,0,0,1,0,1,0,1,0]; + this.ko=[0,0,(7*2)/12-1,0,(7*4)/12-2,(7*5)/12-3,0,(7*7)/12-4,0,(7*9)/12-5,0,(7*11)/12-6]; + this.kn=[0,2,4,5,7,9,11]; + this.coltab=this.colors.split(";"); + this.cv.width = this.width; + this.cv.height = this.height; + this.cv.style.width = this.width+'px'; + this.cv.style.height = this.height+'px'; + this.style.height = this.height+'px'; + this.cv.style.outline=this.outline?"":"none"; + this.bheight = this.height * 0.55; + this.max=this.min+this.keys-1; + this.dispvalues=[]; + this.valuesold=[]; + if(this.kf[this.min%12]) + --this.min; + if(this.kf[this.max%12]) + ++this.max; + this.redraw(); + } + redraw(){ + function rrect(ctx, x, y, w, h, r, c1, c2) { + if(c2) { + let g=ctx.createLinearGradient(x,y,x+w,y); + g.addColorStop(0,c1); + g.addColorStop(1,c2); + ctx.fillStyle=g; + } + else + ctx.fillStyle=c1; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x+w, y); + ctx.lineTo(x+w, y+h-r); + ctx.quadraticCurveTo(x+w, y+h, x+w-r, y+h); + ctx.lineTo(x+r, y+h); + ctx.quadraticCurveTo(x, y+h, x, y+h-r); + ctx.lineTo(x, y); + ctx.fill(); + } + this.ctx.fillStyle = this.coltab[0]; + this.ctx.fillRect(0,0,this.width,this.height); + let x0=7*((this.min/12)|0)+this.kp[this.min%12]; + let x1=7*((this.max/12)|0)+this.kp[this.max%12]; + let n=x1-x0; + this.wwidth=(this.width-1)/(n+1); + this.bwidth=this.wwidth*7/12; + let h2=this.bheight; + let r=Math.min(8,this.wwidth*0.2); + for(let i=this.min,j=0;i<=this.max;++i) { + if(this.kf[i%12]==0) { + let x=this.wwidth*(j++)+1; + if(this.dispvalues.indexOf(i)>=0) + rrect(this.ctx,x,1,this.wwidth-1,this.height-2,r,this.coltab[5],this.coltab[6]); + else + rrect(this.ctx,x,1,this.wwidth-1,this.height-2,r,this.coltab[1],this.coltab[2]); + } + } + r=Math.min(8,this.bwidth*0.3); + for(let i=this.min;i=0) + rrect(this.ctx,x,1,this.bwidth,h2,r,this.coltab[7],this.coltab[8]); + else + rrect(this.ctx,x,1,this.bwidth,h2,r,this.coltab[3],this.coltab[4]); + this.ctx.strokeStyle=this.coltab[0]; + this.ctx.stroke(); + } + } + } + _setValue(v){ + if(this.step) + v=(Math.round((v-this.min)/this.step))*this.step+this.min; + this._value=Math.min(this.max,Math.max(this.min,v)); + if(this._value!=this.oldvalue){ + this.oldvalue=this._value; + this.redraw(); + this.showtip(0); + return 1; + } + return 0; + } + setValue(v,f){ + if(this._setValue(v) && f) + this.sendEvent("input"),this.sendEvent("change"); + } + wheel(e){} + keydown(e){ + let m=Math.floor((this.min+11)/12)*12; + let k=this.keycodes1.indexOf(e.keyCode); + if(k<0) { + k=this.keycodes2.indexOf(e.keyCode); + if(k>=0) k+=12; + } + if(k>=0){ + k+=m; + if(this.currentKey!=k){ + this.currentKey=k; + this.sendEventFromKey(1,k); + this.setNote(1,k); + } + } + } + keyup(e){ + let m=Math.floor((this.min+11)/12)*12; + let k=this.keycodes1.indexOf(e.keyCode); + if(k<0) { + k=this.keycodes2.indexOf(e.keyCode); + if(k>=0) k+=12; + } + if(k>=0){ + k+=m; + this.currentKey=-1; + this.sendEventFromKey(0,k); + this.setNote(0,k); + } + } + pointerdown(ev){ + this.cv.focus(); + if(this.enable) { + ++this.press; + } + let pointermove=(ev)=>{ + if(!this.enable) + return; + let r=this.getBoundingClientRect(); + let v=[],p; + if(ev.touches) + p=ev.targetTouches; + else if(this.press) + p=[ev]; + else + p=[]; + if(p.length>0) + this.drag=1; + for(let i=0;i=0&&py=this.min&&k<=this.max) + v.push(k); + } + } + v.sort(); + this.values=v; + this.sendevent(); + this.redraw(); + } + + let pointerup=(ev)=>{ + if(this.enable) { + if(ev.touches) + this.press=ev.touches.length; + else + this.press=0; + pointermove(ev); + this.sendevent(); + if(this.press==0){ + window.removeEventListener('mousemove', pointermove); + window.removeEventListener('touchmove', pointermove, {passive:false}); + window.removeEventListener('mouseup', pointerup); + window.removeEventListener('touchend', pointerup); + window.removeEventListener('touchcancel', pointerup); + document.body.removeEventListener('touchstart', preventScroll,{passive:false}); + } + this.redraw(); + } + this.drag=0; + ev.preventDefault(); + } + let preventScroll=(ev)=>{ + ev.preventDefault(); + } + window.addEventListener('mousemove', pointermove); + window.addEventListener('touchmove', pointermove, {passive:false}); + window.addEventListener('mouseup', pointerup); + window.addEventListener('touchend', pointerup); + window.addEventListener('touchcancel', pointerup); + document.body.addEventListener('touchstart', preventScroll,{passive:false}); + pointermove(ev); + ev.preventDefault(); + ev.stopPropagation(); + } + sendEventFromKey(s,k){ + let ev=document.createEvent('HTMLEvents'); + ev.initEvent('change',true,true); + ev.note=[s,k]; + this.dispatchEvent(ev); + } + sendevent(){ + let notes=[]; + for(let i=0,j=this.valuesold.length;i=0) this.dispvalues.splice(n,1); + } + } + setNote(state,note) { + this.setdispvalues(state,note); + this.redraw(); + } + }); +} catch(error){ + console.log("webaudio-keyboard already defined"); +} + +try{ + customElements.define("webaudio-xypad", class WebAudioXYPad extends WebAudioControlsWidget { + constructor(){ + super(); + } + connectedCallback(){ + let root; +// if(this.attachShadow) +// root=this.attachShadow({mode: 'open'}); +// else + root=this; + root.innerHTML= +` +
    +`; + this.elem=root.childNodes[2]; + this.knob=this.elem.childNodes[0]; + this.ttframe=root.childNodes[3]; + + this.enable=this.getAttr("enable",1); + this._src=this.getAttr("src",opt.sliderSrc); Object.defineProperty(this,"src",{get:()=>{return this._src},set:(v)=>{this._src=v;this.setupImage()}}); + this._knobsrc=this.getAttr("knobsrc",opt.sliderKnobsrc); Object.defineProperty(this,"knobsrc",{get:()=>{return this._knobsrc},set:(v)=>{this._knobsrc=v;this.setupImage()}}); + this._x=this.getAttr("x",50); Object.defineProperty(this,"x",{get:()=>{return this._x},set:(v)=>{this._x=v;this.redraw()}}); + this._y=this.getAttr("y",50); Object.defineProperty(this,"y",{get:()=>{return this._y},set:(v)=>{this._y=v;this.redraw()}}); + this.defx=this.getAttr("defx",50); + this.defy=this.getAttr("defy",50); + this._min=this.getAttr("min",0); Object.defineProperty(this,"min",{get:()=>{return this._min},set:(v)=>{this._min=v;this.redraw()}}); + this._max=this.getAttr("max",100); Object.defineProperty(this,"max",{get:()=>{return this._max},set:(v)=>{this._max=v;this.redraw()}}); + this._step=this.getAttr("step",1); Object.defineProperty(this,"step",{get:()=>{return this._step},set:(v)=>{this._step=v;this.redraw()}}); + this._sprites=this.getAttr("sprites",0); Object.defineProperty(this,"sprites",{get:()=>{return this._sprites},set:(v)=>{this._sprites=v;this.setupImage()}}); + this._width=this.getAttr("width",128); Object.defineProperty(this,"width",{get:()=>{return this._width},set:(v)=>{this._width=v;this.setupImage()}}); + this._height=this.getAttr("height",128); Object.defineProperty(this,"height",{get:()=>{return this._height},set:(v)=>{this._height=v;this.setupImage()}}); + this._knobwidth=this.getAttr("knobwidth",28); Object.defineProperty(this,"knobwidth",{get:()=>{return this._knobwidth},set:(v)=>{this._knobwidth=v;this.setupImage()}}); + this._knobheight=this.getAttr("knbheight",28); Object.defineProperty(this,"knobheight",{get:()=>{return this._knobheight},set:(v)=>{this._knobheight=v;this.setupImage()}}); + this._colors=this.getAttr("colors",opt.sliderColors); Object.defineProperty(this,"colors",{get:()=>{return this._colors},set:(v)=>{this._colors=v;this.setupImage()}}); + this.outline=this.getAttr("outline",opt.outline); + this.valuetip=this.getAttr("valuetip",1); + this.tooltip=this.getAttr("tooltip",null); + this.conv=this.getAttr("conv",null); + if(this.conv){ + this.convValue={x:eval(this.conv)(this._x),y:eval(this.conv)(this._y)}; + } + else + this.convValue={x:this._x,y:this._y}; + this.midilearn=this.getAttr("midilearn",opt.midilearn); + this.midicc=this.getAttr("midicc",null); + this.midiController={}; + this.midiMode="normal"; + if(this.midicc) { + let ch = parseInt(this.midicc.substring(0, this.midicc.lastIndexOf("."))) - 1; + let cc = parseInt(this.midicc.substring(this.midicc.lastIndexOf(".") + 1)); + this.setMidiController(ch, cc); + } + this.setupImage(); + this.digits=0; + if(window.webAudioControlsMidiManager) +// window.webAudioControlsMidiManager.updateWidgets(); + window.webAudioControlsMidiManager.addWidget(this); + this.elem.onclick=(e)=>{e.stopPropagation()}; + } + disconnectedCallback(){} + setupImage(){ + this.coltab = this.colors.split(";"); + this.dr=this.direction; + this.dlen=this.ditchlength; + if(!this.width) + this.width=256; + if(!this.height) + this.height=256; + this.knob.style.backgroundSize = "100% 100%"; + this.elem.style.backgroundSize = "100% 100%"; + this.elem.style.width=this.width+"px"; + this.elem.style.height=this.height+"px"; + this.kwidth=this.knobwidth||(this.width*0.15|0); + this.kheight=this.knobheight||(this.height*0.15|0); + this.knob.style.width = this.kwidth+"px"; + this.knob.style.height = this.kheight+"px"; + if(!this.src){ + let r=Math.min(this.width,this.height)*0.02; + let svgbody= +` +`; + this.elem.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svgbody)+")"; + } + else{ + this.elem.style.backgroundImage = "url("+(this.src)+")"; + } + if(!this.knobsrc){ + let svgthumb= +` + +`; + this.knob.style.backgroundImage = "url(data:image/svg+xml;base64,"+btoa(svgthumb)+")"; + } + else{ + this.knob.style.backgroundImage = "url("+(this.knobsrc)+")"; + } + this.elem.style.outline=this.outline?"":"none"; + this.redraw(); + } + redraw() { + this.digits=0; + if(this.step && this.step < 1) { + for(let n = this.step ; n < 1; n *= 10) + ++this.digits; + } + if(this.valuethis.max){ + this.value=this.max; + return; + } + let range = this.max - this.min; + let style = this.knob.style; + style.left=(this.width-this.kwidth)*(this._x-this.min)/(this.max-this.min)+"px"; style.top=(this.height-this.kheight)*(1-(this._y-this.min)/(this.max-this.min))+"px"; + this.sensex=0; this.sensey=1; + } + _setX(v){ + v=(Math.round((v-this.min)/this.step))*this.step+this.min; + this._x=Math.min(this.max,Math.max(this.min,v)); + if(this._x!=this.oldx){ + this.oldx=this._x; + if(this.conv){ + this.convValue={x:eval(this.conv)(this._x),y:eval(this.conv)(this._y)}; + } + else + this.convValue={x:this._x,y:this._y}; + this.redraw(); + this.showtip(0); + return 1; + } + return 0; + } + _setY(v){ + v=(Math.round((v-this.min)/this.step))*this.step+this.min; + this._y=Math.min(this.max,Math.max(this.min,v)); + if(this._y!=this.oldy){ + this.oldy=this._y; + if(this.conv){ + this.convValue={x:eval(this.conv)(this._x),y:eval(this.conv)(this._y)}; + } + else + this.convValue={x:this._x,y:this._y}; + this.redraw(); + this.showtip(0); + return 1; + } + return 0; + } + setX(v,f){ + if(this._setX(v)&&f) + this.sendEvent("input"),this.sendEvent("change"); + } + setY(v,f){ + if(this._setY(v)&&f) + this.sendEvent("input"),this.sendEvent("change"); + } + wheel(e) { + let delta=(this.max-this.min)*0.01; + delta=e.deltaY>0?-delta:delta; + if(!e.shiftKey) + delta*=5; + if(Math.abs(delta) < this.step) + delta = (delta > 0) ? +this.step : -this.step; + this.setValue(+this.value+delta,true); + e.preventDefault(); + e.stopPropagation(); + this.redraw(); + } + pointerdown(ev){ + if(!this.enable) + return; + let e=ev; + if(ev.touches){ + e = ev.changedTouches[0]; + this.identifier=e.identifier; + } + else { + if(e.buttons!=1 && e.button!=0) + return; + } + this.elem.focus(); + this.drag=1; + this.showtip(0); + let pointermove=(ev)=>{ + let e=ev; + if(ev.touches){ + for(let i=0;i{ + let e=ev; + if(ev.touches){ + for(let i=0;;){ + if(ev.changedTouches[i].identifier==this.identifier){ + break; + } + if(++i>=ev.changedTouches.length) + return; + } + } + this.drag=0; + this.showtip(0); + this.startPosX = this.startPosY = null; + window.removeEventListener('mousemove', pointermove); + window.removeEventListener('touchmove', pointermove, {passive:false}); + window.removeEventListener('mouseup', pointerup); + window.removeEventListener('touchend', pointerup); + window.removeEventListener('touchcancel', pointerup); + document.body.removeEventListener('touchstart', preventScroll,{passive:false}); + this.sendEvent("change"); + } + pointermove(ev); + let preventScroll=(e)=>{ + e.preventDefault(); + } + if(e.touches) + e = e.touches[0]; + if(e.ctrlKey || e.metaKey) + this.setValue(this.defvalue,true); + else { + this.startPosX = e.pageX; + this.startPosY = e.pageY; + this.startVal = this.value; + window.addEventListener('mousemove', pointermove); + window.addEventListener('touchmove', pointermove, {passive:false}); + } + window.addEventListener('mouseup', pointerup); + window.addEventListener('touchend', pointerup); + window.addEventListener('touchcancel', pointerup); + document.body.addEventListener('touchstart', preventScroll,{passive:false}); + e.preventDefault(); + e.stopPropagation(); + return false; + } + }); +} catch(error){ + console.log("webaudio-xypad already defined"); +} + + + + // FOR MIDI LEARN + class WebAudioControlsMidiManager { + constructor(){ + this.midiAccess = null; + this.listOfWidgets = []; + this.listOfExternalMidiListeners = []; + this.updateWidgets(); + this.initWebAudioControls(); + } + addWidget(w){ + this.listOfWidgets.push(w); + } + updateWidgets(){ +// this.listOfWidgets = document.querySelectorAll("webaudio-knob,webaudio-slider,webaudio-switch"); + } + initWebAudioControls() { + if(navigator.requestMIDIAccess) { + navigator.requestMIDIAccess().then( + (ma)=>{this.midiAccess = ma,this.enableInputs()}, + (err)=>{ console.log("MIDI not initialized - error encountered:" + err.code)} + ); + } + } + enableInputs() { + let inputs = this.midiAccess.inputs.values(); + console.log("Found " + this.midiAccess.inputs.size + " MIDI input(s)"); + for(let input = inputs.next(); input && !input.done; input = inputs.next()) { + console.log("Connected input: " + input.value.name); + input.value.onmidimessage = this.handleMIDIMessage.bind(this); + } + } + midiConnectionStateChange(e) { + console.log("connection: " + e.port.name + " " + e.port.connection + " " + e.port.state); + enableInputs(); + } + + onMIDIStarted(midi) { + this.midiAccess = midi; + midi.onstatechange = this.midiConnectionStateChange; + enableInputs(midi); + } + // Add hooks for external midi listeners support + addMidiListener(callback) { + this.listOfExternalMidiListeners.push(callback); + } + getCurrentConfigAsJSON() { + return currentConfig.stringify(); + } + handleMIDIMessage(event) { + this.listOfExternalMidiListeners.forEach(function (externalListener) { + externalListener(event); + }); + if(((event.data[0] & 0xf0) == 0xf0) || ((event.data[0] & 0xf0) == 0xb0 && event.data[1] >= 120)) + return; + for(let w of this.listOfWidgets) { + if(w.processMidiEvent) + w.processMidiEvent(event); + } + if(opt.mididump) + console.log(event.data); + } + contextMenuOpen(e,knob){ + if(!this.midiAccess) + return; + let menu=document.getElementById("webaudioctrl-context-menu"); + menu.style.left=e.pageX+"px"; + menu.style.top=e.pageY+"px"; + menu.knob=knob; + menu.classList.add("active"); + menu.knob.focus(); +// document.activeElement.onblur=this.contextMenuClose; + menu.knob.addEventListener("keydown",this.contextMenuCloseByKey.bind(this)); + } + contextMenuCloseByKey(e){ + if(e.keyCode==27) + this.contextMenuClose(); + } + contextMenuClose(){ + let menu=document.getElementById("webaudioctrl-context-menu"); + menu.knob.removeEventListener("keydown",this.contextMenuCloseByKey); + menu.classList.remove("active"); + let menuItemLearn=document.getElementById("webaudioctrl-context-menu-learn"); + menuItemLearn.innerHTML = 'Learn'; + menu.knob.midiMode = 'normal'; + } + contextMenuLearn(){ + let menu=document.getElementById("webaudioctrl-context-menu"); + let menuItemLearn=document.getElementById("webaudioctrl-context-menu-learn"); + menuItemLearn.innerHTML = 'Listening...'; + menu.knob.midiMode = 'learn'; + } + contextMenuClear(e){ + let menu=document.getElementById("webaudioctrl-context-menu"); + menu.knob.midiController={}; + this.contextMenuClose(); + } + } + if(window.UseWebAudioControlsMidi||opt.useMidi) + window.webAudioControlsMidiManager = new WebAudioControlsMidiManager(); +} diff --git a/web/webcomponents-lite.js b/web/webcomponents-lite.js new file mode 100755 index 0000000..d3e7beb --- /dev/null +++ b/web/webcomponents-lite.js @@ -0,0 +1,197 @@ +(function(){/* + + Copyright (c) 2016 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ +'use strict';var p,q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ca(){ca=function(){};q.Symbol||(q.Symbol=da)}var da=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}(); +function ea(){ca();var a=q.Symbol.iterator;a||(a=q.Symbol.iterator=q.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&ba(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ha(function(){return b"+this.innerHTML+""},set:function(a){if(this.parentNode){J.body.innerHTML=a;for(a=this.ownerDocument.createDocumentFragment();J.body.firstChild;)l.call(a, +J.body.firstChild);m.call(this.parentNode,a,this)}else throw Error("Failed to set the 'outerHTML' property on 'Element': This element has no parent node.");},configurable:!0})};na(a.prototype);aa(a.prototype);a.J=function(c){c=b(c,"template");for(var d=0,e=c.length,f;d]/g, +U=function(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case "\u00a0":return" "}}}if(c||eb){a.ca=function(a,b){var c=f.call(a,!1);this.D&&this.D(c);b&&(l.call(c.content,f.call(a.content,!0)),fb(c.content,a.content));return c};var fb=function(c,d){if(d.querySelectorAll&&(d=b(d,"template"),0!==d.length)){c=b(c,"template");for(var e=0,f=c.length,h,g;e]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,x={La:function(a,b){a.href&&a.setAttribute("href",x.Y(a.getAttribute("href"),b));a.src&&a.setAttribute("src",x.Y(a.getAttribute("src"),b));if("style"===a.localName){var c=x.ta(a.textContent,b,Ca);a.textContent=x.ta(c,b,Da)}},ta:function(a,b,c){return a.replace(c, +function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a=x.Y(a,b));return c+"'"+a+"'"+e})},Y:function(a,b){if(void 0===x.ba){x.ba=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";x.ba="http://a/c%20d"===c.href}catch(Lg){}}if(x.ba)return(new URL(a,b)).href;c=x.Ba;c||(c=document.implementation.createHTMLDocument("temp"),x.Ba=c,c.ma=c.createElement("base"),c.head.appendChild(c.ma),c.la=c.createElement("a"));c.ma.href=b;c.la.href=a;return c.la.href||a}},na={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a= +a.split(",");var d=a[1];d=-1e.status?b(d,a):c(d)};e.send()}else c("error: href must be specified")}},aa=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent); +k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]");n(a,function(a){return b.s(a)})};k.prototype.s=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.h(a))}else this.b++,this.a[c]="pending",na.load(c,function(a,d){a=b.Sa(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.L()},function(){b.a[c]=null;b.b--;b.L()})};k.prototype.Sa=function(a,b){if(!a)return document.createDocumentFragment();aa&&(a=a.replace(Ea,function(a,b,c){return-1=== +a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=x.Y(c.getAttribute("href"),b),c.removeAttribute("href");c=m(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'); +var d=0;n(c,function(a){h(a);x.La(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n"))),a.textContent="",d++)});return a};k.prototype.L=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&&b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}), +a.Pa()))};this.Ua(function(){c=!0;d()});this.Ta(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;a=m(a,"link[rel=import]");n(a,function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.Ta=function(a){function b(e){if(e]/g;function hc(a){switch(a){case "&":return"&";case "<":return"<";case ">":return">";case '"':return""";case "\u00a0":return" "}}function ic(a){for(var b={},c=0;c";break a;case Node.TEXT_NODE:g=g.data;g=k&&kc[k.localName]?g:g.replace(gc,hc);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g), +Error("not implemented");}}c+=g}return c};var B={},D=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),E=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function mc(a){var b=[];D.currentNode=a;for(a=D.firstChild();a;)b.push(a),a=D.nextSibling();return b}B.parentNode=function(a){D.currentNode=a;return D.parentNode()};B.firstChild=function(a){D.currentNode=a;return D.firstChild()};B.lastChild=function(a){D.currentNode=a;return D.lastChild()};B.previousSibling=function(a){D.currentNode=a;return D.previousSibling()}; +B.nextSibling=function(a){D.currentNode=a;return D.nextSibling()};B.childNodes=mc;B.parentElement=function(a){E.currentNode=a;return E.parentNode()};B.firstElementChild=function(a){E.currentNode=a;return E.firstChild()};B.lastElementChild=function(a){E.currentNode=a;return E.lastChild()};B.previousElementSibling=function(a){E.currentNode=a;return E.previousSibling()};B.nextElementSibling=function(a){E.currentNode=a;return E.nextSibling()}; +B.children=function(a){var b=[];E.currentNode=a;for(a=E.firstChild();a;)b.push(a),a=E.nextSibling();return b};B.innerHTML=function(a){return lc(a,function(a){return mc(a)})};B.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var nc=Object.getOwnPropertyDescriptor(Element.prototype,"innerHTML")||Object.getOwnPropertyDescriptor(HTMLElement.prototype,"innerHTML"),oc=document.implementation.createHTMLDocument("inert"),pc=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),qc={parentElement:{get:function(){var a=this.__shady&&this.__shady.parentNode;a&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:B.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=this.__shady&&this.__shady.parentNode; +return void 0!==a?a:B.parentNode(this)},configurable:!0},nextSibling:{get:function(){var a=this.__shady&&this.__shady.nextSibling;return void 0!==a?a:B.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=this.__shady&&this.__shady.previousSibling;return void 0!==a?a:B.previousSibling(this)},configurable:!0},className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0},nextElementSibling:{get:function(){if(this.__shady&& +void 0!==this.__shady.nextSibling){for(var a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return B.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){if(this.__shady&&void 0!==this.__shady.previousSibling){for(var a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return B.previousElementSibling(this)},configurable:!0}},rc={childNodes:{get:function(){if(vb(this)){if(!this.__shady.childNodes){this.__shady.childNodes= +[];for(var a=this.firstChild;a;a=a.nextSibling)this.__shady.childNodes.push(a)}var b=this.__shady.childNodes}else b=B.childNodes(this);b.item=function(a){return b[a]};return b},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=this.__shady&&this.__shady.firstChild;return void 0!==a?a:B.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=this.__shady&&this.__shady.lastChild;return void 0!==a?a:B.lastChild(this)}, +configurable:!0},textContent:{get:function(){if(vb(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&a.push(d.textContent);return a.join("")}return B.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:for(;this.firstChild;)this.removeChild(this.firstChild);(0b.__shady.assignedNodes.length&&(b.__shady.ia=!0)}b.__shady.ia&&(b.__shady.ia=!1,od(this,b))}a=this.o;b=[];for(c=0;cb.indexOf(d))||b.push(d);for(a=0;a "+b}))}a=a.replace(Df,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Ka:b,stop:f}}function Bf(a,b){a=a.split(Ef);a[0]+=b;return a.join(Ef)} +function Af(a,b){var c=a.match(Ff);return(c=c&&c[2].trim()||"")?c[0].match(Gf)?a.replace(Ff,function(a,c,f){return b+f}):c.split(Gf)[0]===b?c:Hf:a.replace(wf,b)}function If(a){a.selector===Jf&&(a.selector="html")}hf.prototype.c=function(a){return a.match(zf)?this.b(a,Kf):Bf(a.trim(),Kf)};q.Object.defineProperties(hf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}}); +var uf=/:(nth[-\w]+)\(([^)]+)\)/,Kf=":not(.style-scope)",sf=",",xf=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,Gf=/[[.:#*]/,wf=":host",Jf=":root",zf="::slotted",vf=new RegExp("^("+zf+")"),Ff=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Cf=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Df=/(.*):dir\((?:(ltr|rtl))\)/,qf=".",Ef=":",mf="class",Hf="should_not_match",W=new hf;function Lf(a,b,c,d){this.w=a||null;this.b=b||null;this.ja=c||[];this.G=null;this.P=d||"";this.a=this.u=this.B=null}function X(a){return a?a.__styleInfo:null}function Mf(a,b){return a.__styleInfo=b}Lf.prototype.c=function(){return this.w};Lf.prototype._getStyleRules=Lf.prototype.c;var Nf,Of=window.Element.prototype;Nf=Of.matches||Of.matchesSelector||Of.mozMatchesSelector||Of.msMatchesSelector||Of.oMatchesSelector||Of.webkitMatchesSelector;var Pf=navigator.userAgent.match("Trident");function Qf(){}function Rf(a){var b={},c=[],d=0;af(a,function(a){Sf(a);a.index=d++;a=a.i.cssText;for(var c;c=Ve.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a} +function Sf(a){if(!a.i){var b={},c={};Tf(a,c)&&(b.v=c,a.rules=null);b.cssText=a.parsedCssText.replace(Ye,"").replace(Te,"");a.i=b}}function Tf(a,b){var c=a.i;if(c){if(c.v)return Object.assign(b,c.v),!0}else{c=a.parsedCssText;for(var d;a=Te.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}} +function Uf(a,b,c){b&&(b=0<=b.indexOf(";")?Vf(a,b,c):ff(b,function(b,e,f,h){if(!e)return b+h;(e=Uf(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=Uf(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""} +function Vf(a,b,c){b=b.split(";");for(var d=0,e,f;d *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));"shadow"===c&&(h=":host > *"===f||"html"===f,g=g&&!h);if(h||g)c=e,g&&(R&&!b.m&&(b.m=rf(W,b,W.b,a?qf+a:"",e)),c=b.m||e),d({Xa:c,Qa:g,hb:h})}} +function Yf(a,b){var c={},d={},e=b&&b.__cssBuild;af(b,function(b){Xf(a,b,e,function(e){Nf.call(a.b||a,e.Xa)&&(e.Qa?Tf(b,c):Tf(b,d))})},null,!0);return{Wa:d,Oa:c}} +function Zf(a,b,c,d){var e=V(b),f=pf(e.is,e.P),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=X(b).w;var g=$f(e,d);return nf(b,e,function(b){var e="";b.i||Sf(b);b.i.cssText&&(e=Vf(a,b.i.cssText,c));b.cssText=e;if(!R&&!cf(b)&&b.cssText){var k=e=b.cssText;null==b.ra&&(b.ra=We.test(e));if(b.ra)if(null==b.W){b.W=[];for(var n in g)k=g[n],k=k(e),e!==k&&(e=k,b.W.push(n))}else{for(n=0;n=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));R?f.a?(f.a.textContent=e,d=f.a):e&&(d=df(e,g,a.shadowRoot,f.b)):d?d.parentNode|| +(Pf&&-1.\n var capturedCloneNode = Node.prototype.cloneNode;\n var capturedCreateElement = Document.prototype.createElement;\n var capturedImportNode = Document.prototype.importNode;\n var capturedRemoveChild = Node.prototype.removeChild;\n var capturedAppendChild = Node.prototype.appendChild;\n var capturedReplaceChild = Node.prototype.replaceChild;\n var capturedParseFromString = DOMParser.prototype.parseFromString;\n var capturedHTMLElementInnerHTML = Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML');\n var capturedChildNodes = Object.getOwnPropertyDescriptor(window.Node.prototype, 'childNodes');\n\n var elementQuerySelectorAll = Element.prototype.querySelectorAll;\n var docQuerySelectorAll = Document.prototype.querySelectorAll;\n var fragQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\n\n var scriptSelector = 'script:not([type]),script[type=\"application/javascript\"],script[type=\"text/javascript\"]';\n\n function QSA(node, selector) {\n // IE 11 throws a SyntaxError with `scriptSelector` if the node has no children due to the `:not([type])` syntax\n if (!node.childNodes.length) {\n return [];\n }\n switch (node.nodeType) {\n case Node.DOCUMENT_NODE:\n return docQuerySelectorAll.call(node, selector);\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragQuerySelectorAll.call(node, selector);\n default:\n return elementQuerySelectorAll.call(node, selector);\n }\n }\n\n // returns true if nested templates cannot be cloned (they cannot be on\n // some impl's like Safari 8 and Edge)\n // OR if cloning a document fragment does not result in a document fragment\n var needsCloning = (function() {\n if (!needsTemplate) {\n var t = document.createElement('template');\n var t2 = document.createElement('template');\n t2.content.appendChild(document.createElement('div'));\n t.content.appendChild(t2);\n var clone = t.cloneNode(true);\n return (clone.content.childNodes.length === 0 || clone.content.firstChild.content.childNodes.length === 0\n || brokenDocFragment);\n }\n })();\n\n var TEMPLATE_TAG = 'template';\n var PolyfilledHTMLTemplateElement = function() {};\n\n if (needsTemplate) {\n\n var contentDoc = document.implementation.createHTMLDocument('template');\n var canDecorate = true;\n\n var templateStyle = document.createElement('style');\n templateStyle.textContent = TEMPLATE_TAG + '{display:none;}';\n\n var head = document.head;\n head.insertBefore(templateStyle, head.firstElementChild);\n\n /**\n Provides a minimal shim for the