web/lib/Zend/Serializer/Adapter/PythonPickle.php
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Mon, 18 Jul 2011 10:42:35 +0200
changeset 220 42aeb2bfc58e
parent 207 621fa6caec0c
child 807 877f952ae2bd
permissions -rw-r--r--
publish chi07 and fens Fablab

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Serializer
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: PythonPickle.php 21187 2010-02-24 01:22:01Z stas $
 */

/** @see Zend_Serializer_Adapter_AdapterAbstract */
require_once 'Zend/Serializer/Adapter/AdapterAbstract.php';

/**
 * @link       http://www.python.org
 * @see        Phython3.1/Lib/pickle.py
 * @see        Phython3.1/Modules/_pickle.c
 * @link       http://pickle-js.googlecode.com
 * @category   Zend
 * @package    Zend_Serializer
 * @subpackage Adapter
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Serializer_Adapter_PythonPickle extends Zend_Serializer_Adapter_AdapterAbstract
{
    /* Pickle opcodes. See pickletools.py for extensive docs.  The listing
       here is in kind-of alphabetical order of 1-character pickle code.
       pickletools groups them by purpose. */
    const OP_MARK            = '(';     // push special markobject on stack
    const OP_STOP            = '.';     // every pickle ends with STOP
    const OP_POP             = '0';     // discard topmost stack item
    const OP_POP_MARK        = '1';     // discard stack top through topmost markobject
    const OP_DUP             = '2';     // duplicate top stack item
    const OP_FLOAT           = 'F';     // push float object; decimal string argument
    const OP_INT             = 'I';     // push integer or bool; decimal string argument
    const OP_BININT          = 'J';     // push four-byte signed int
    const OP_BININT1         = 'K';     // push 1-byte unsigned int
    const OP_LONG            = 'L';     // push long; decimal string argument
    const OP_BININT2         = 'M';     // push 2-byte unsigned int
    const OP_NONE            = 'N';     // push None
    const OP_PERSID          = 'P';     // push persistent object; id is taken from string arg
    const OP_BINPERSID       = 'Q';     //  "       "         "  ;  "  "   "     "  stack
    const OP_REDUCE          = 'R';     // apply callable to argtuple, both on stack
    const OP_STRING          = 'S';     // push string; NL-terminated string argument
    const OP_BINSTRING       = 'T';     // push string; counted binary string argument
    const OP_SHORT_BINSTRING = 'U';     //  "     "   ;    "      "       "      " < 256 bytes
    const OP_UNICODE         = 'V';     // push Unicode string; raw-unicode-escaped'd argument
    const OP_BINUNICODE      = 'X';     //   "     "       "  ; counted UTF-8 string argument
    const OP_APPEND          = 'a';     // append stack top to list below it
    const OP_BUILD           = 'b';     // call __setstate__ or __dict__.update()
    const OP_GLOBAL          = 'c';     // push self.find_class(modname, name); 2 string args
    const OP_DICT            = 'd';     // build a dict from stack items
    const OP_EMPTY_DICT      = '}';     // push empty dict
    const OP_APPENDS         = 'e';     // extend list on stack by topmost stack slice
    const OP_GET             = 'g';     // push item from memo on stack; index is string arg
    const OP_BINGET          = 'h';     //   "    "    "    "   "   "  ;   "    " 1-byte arg
    const OP_INST            = 'i';     // build & push class instance
    const OP_LONG_BINGET     = 'j';     // push item from memo on stack; index is 4-byte arg
    const OP_LIST            = 'l';     // build list from topmost stack items
    const OP_EMPTY_LIST      = ']';     // push empty list
    const OP_OBJ             = 'o';     // build & push class instance
    const OP_PUT             = 'p';     // store stack top in memo; index is string arg
    const OP_BINPUT          = 'q';     //   "     "    "   "   " ;   "    " 1-byte arg
    const OP_LONG_BINPUT     = 'r';     //   "     "    "   "   " ;   "    " 4-byte arg
    const OP_SETITEM         = 's';     // add key+value pair to dict
    const OP_TUPLE           = 't';     // build tuple from topmost stack items
    const OP_EMPTY_TUPLE     = ')';     // push empty tuple
    const OP_SETITEMS        = 'u';     // modify dict by adding topmost key+value pairs
    const OP_BINFLOAT        = 'G';     // push float; arg is 8-byte float encoding

    /* Protocol 2 */
    const OP_PROTO           = "\x80";  // identify pickle protocol
    const OP_NEWOBJ          = "\x81";  // build object by applying cls.__new__ to argtuple
    const OP_EXT1            = "\x82";  // push object from extension registry; 1-byte index
    const OP_EXT2            = "\x83";  // ditto, but 2-byte index
    const OP_EXT4            = "\x84";  // ditto, but 4-byte index
    const OP_TUPLE1          = "\x85";  // build 1-tuple from stack top
    const OP_TUPLE2          = "\x86";  // build 2-tuple from two topmost stack items
    const OP_TUPLE3          = "\x87";  // build 3-tuple from three topmost stack items
    const OP_NEWTRUE         = "\x88";  // push True
    const OP_NEWFALSE        = "\x89";  // push False
    const OP_LONG1           = "\x8a";  // push long from < 256 bytes
    const OP_LONG4           = "\x8b";  // push really big long

    /* Protocol 3 (Python 3.x) */
    const OP_BINBYTES        = 'B';     // push bytes; counted binary string argument
    const OP_SHORT_BINBYTES  = 'C';     //  "     "   ;    "      "       "      " < 256 bytes

    /**
     * @var bool Whether or not this is a PHP 6 binary
     */
    protected static $_isPhp6 = null;

    /**
     * @var bool Whether or not the system is little-endian
     */
    protected static $_isLittleEndian = null;

    /**
     * @var array Strings representing quotes
     */
    protected static $_quoteString = array(
        '\\' => '\\\\',
        "\x00" => '\\x00', "\x01" => '\\x01', "\x02" => '\\x02', "\x03" => '\\x03',
        "\x04" => '\\x04', "\x05" => '\\x05', "\x06" => '\\x06', "\x07" => '\\x07',
        "\x08" => '\\x08', "\x09" => '\\t',   "\x0a" => '\\n',   "\x0b" => '\\x0b',
        "\x0c" => '\\x0c', "\x0d" => '\\r',   "\x0e" => '\\x0e', "\x0f" => '\\x0f',
        "\x10" => '\\x10', "\x11" => '\\x11', "\x12" => '\\x12', "\x13" => '\\x13',
        "\x14" => '\\x14', "\x15" => '\\x15', "\x16" => '\\x16', "\x17" => '\\x17',
        "\x18" => '\\x18', "\x19" => '\\x19', "\x1a" => '\\x1a', "\x1b" => '\\x1b',
        "\x1c" => '\\x1c', "\x1d" => '\\x1d', "\x1e" => '\\x1e', "\x1f" => '\\x1f',
        "\xff" => '\\xff'
    );

    /**
     * @var array Default options
     */
    protected $_options = array(
        'protocol'           => 0,
    );

    // process vars
    protected $_protocol           = 0;
    protected $_binary             = false;
    protected $_memo               = array();
    protected $_pickle             = '';
    protected $_pickleLen          = 0;
    protected $_pos                = 0;
    protected $_stack              = array();
    protected $_marker             = null;

    /**
     * Constructor
     *
     * @link Zend_Serializer_Adapter_AdapterAbstract::__construct()
     */
    public function __construct($opts=array())
    {
        parent::__construct($opts);

        // init
        if (self::$_isLittleEndian === null) {
            self::$_isLittleEndian = (pack('l', 1) === "\x01\x00\x00\x00");
        }
        if (self::$_isPhp6 === null) {
            self::$_isPhp6 = !version_compare(PHP_VERSION, '6.0.0', '<');
        }

        $this->_marker = new stdClass();
    }

    /**
     * Set an option
     *
     * @link   Zend_Serializer_Adapter_AdapterAbstract::setOption()
     * @param  string $name
     * @param  mixed $value
     * @return Zend_Serializer_Adapter_PythonPickle
     */
    public function setOption($name, $value)
    {
        switch ($name) {
            case 'protocol':
                $value = $this->_checkProtocolNumber($value);
                break;
        }

        return parent::setOption($name, $value);
    }

    /**
     * Check and normalize pickle protocol number
     *
     * @param  int $number
     * @return int
     * @throws Zend_Serializer_Exception
     */
    protected function _checkProtocolNumber($number)
    {
        $int = (int) $number;
        if ($int < 0 || $int > 3) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Invalid or unknown protocol version "'.$number.'"');
        }
        return $int;
    }

    /* serialize */

    /**
     * Serialize PHP to PythonPickle format
     *
     * @param  mixed $value
     * @param  array $opts
     * @return string
     */
    public function serialize($value, array $opts = array())
    {
        $opts = $opts + $this->_options;

        $this->_protocol = $this->_checkProtocolNumber($opts['protocol']);
        $this->_binary   = $this->_protocol != 0;

        // clear process vars before serializing
        $this->_memo   = array();
        $this->_pickle = '';

        // write
        if ($this->_protocol >= 2) {
            $this->_writeProto($this->_protocol);
        }
        $this->_write($value);
        $this->_writeStop();

        // clear process vars after serializing
        $this->_memo = array();
        $pickle = $this->_pickle;
        $this->_pickle = '';

        return $pickle;
    }

    /**
     * Write a value
     *
     * @param  mixed $value
     * @return void
     * @throws Zend_Serializer_Exception on invalid or unrecognized value type
     */
    protected function _write($value)
    {
        if ($value === null) {
            $this->_writeNull();
        } elseif ($value === true) {
            $this->_writeTrue();
        } elseif ($value === false) {
            $this->_writeFalse();
        } elseif (is_int($value)) {
            $this->_writeInt($value);
        } elseif (is_float($value)) {
            $this->_writeFloat($value);
        } elseif (is_string($value)) {
            // TODO: write unicode / binary
            $this->_writeString($value);
        } elseif (is_array($value)) {
            if ($this->_isArrayAssoc($value)) {
                $this->_writeArrayDict($value);
            } else {
                $this->_writeArrayList($value);
            }
        } elseif (is_object($value)) {
            $this->_writeObject($value);
        } else {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception(
                'PHP-Type "'.gettype($value).'" isn\'t serializable with '.get_class($this)
            );
        }
    }

    /**
     * Write pickle protocol
     *
     * @param  int $protocol
     * @return void
     */
    protected function _writeProto($protocol)
    {
        $this->_pickle .= self::OP_PROTO . $protocol;
    }

    /**
     * Write a get
     *
     * @param  int $id Id of memo
     * @return void
     */
    protected function _writeGet($id)
    {
        if ($this->_binary) {
            if ($id <= 0xff) {
                // BINGET + chr(i)
                $this->_pickle .= self::OP_BINGET . chr($id);
            } else {
                // LONG_BINGET + pack("<i", i)
                $idBin = pack('l', $id);
                if (self::$_isLittleEndian === false) {
                    $idBin = strrev($bin);
                }
                $this->_pickle .= self::OP_LONG_BINGET . $idBin;
            }
        } else {
            $this->_pickle .= self::OP_GET . $id . "\r\n";
        }
    }

    /**
     * Write a put
     *
     * @param  int $id Id of memo
     * @return void
     */
    protected function _writePut($id)
    {
        if ($this->_binary) {
            if ($id <= 0xff) {
                // BINPUT + chr(i)
                $this->_pickle .= self::OP_BINPUT . chr($id);
            } else {
                // LONG_BINPUT + pack("<i", i)
                $idBin = pack('l', $id);
                if (self::$_isLittleEndian === false) {
                    $idBin = strrev($bin);
                }
                $this->_pickle .= self::OP_LONG_BINPUT . $idBin;
            }
        } else {
            $this->_pickle .= self::OP_PUT . $id . "\r\n";
        }
    }

    /**
     * Write a null as None
     *
     * @return void
     */
    protected function _writeNull()
    {
        $this->_pickle .= self::OP_NONE;
    }

    /**
     * Write a boolean true
     *
     * @return void
     */
    protected function _writeTrue()
    {
        if ($this->_protocol >= 2) {
            $this->_pickle .= self::OP_NEWTRUE;
        } else {
            $this->_pickle .= self::OP_INT . "01\r\n";
        }
    }

    /**
     * Write a boolean false
     *
     * @return void
     */
    protected function _writeFalse()
    {
        if ($this->_protocol >= 2) {
            $this->_pickle .= self::OP_NEWFALSE;
        } else {
            $this->_pickle .= self::OP_INT . "00\r\n";
        }
    }

    /**
     * Write an integer value
     *
     * @param  int $value
     * @return void
     */
    protected function _writeInt($value)
    {
        if ($this->_binary) {
            if ($value >= 0) {
                if ($value <= 0xff) {
                    // self.write(BININT1 + chr(obj))
                    $this->_pickle .= self::OP_BININT1 . chr($value);
                } elseif ($value <= 0xffff) {
                    // self.write("%c%c%c" % (BININT2, obj&0xff, obj>>8))
                    $this->_pickle .= self::OP_BININT2 . pack('v', $value);
                }
                return;
            }

            // Next check for 4-byte signed ints:
            $highBits = $value >> 31;  // note that Python shift sign-extends
            if ($highBits == 0 || $highBits == -1) {
                // All high bits are copies of bit 2**31, so the value
                // fits in a 4-byte signed int.
                // self.write(BININT + pack("<i", obj))
                $bin = pack('l', $value);
                if (self::$_isLittleEndian === false) {
                    $bin = strrev($bin);
                }
                $this->_pickle .= self::OP_BININT . $bin;
                return;
            }
        }

        $this->_pickle .= self::OP_INT . $value . "\r\n";
    }

    /**
     * Write a float value
     *
     * @param  float $value
     * @return void
     */
    protected function _writeFloat($value)
    {
        if ($this->_binary) {
            // self.write(BINFLOAT + pack('>d', obj))
            $bin = pack('d', $value);
            if (self::$_isLittleEndian === true) {
                $bin = strrev($bin);
            }
            $this->_pickle .= self::OP_BINFLOAT . $bin;
        } else {
            $this->_pickle .= self::OP_FLOAT . $value . "\r\n";
        }
    }

    /**
     * Write a string value
     *
     * @param  string $value
     * @return void
     */
    protected function _writeString($value)
    {
        if ( ($id=$this->_searchMomo($value)) !== false ) {
            $this->_writeGet($id);
            return;
        }

        if ($this->_binary) {
            $n = strlen($value);
            if ($n <= 0xff) {
                // self.write(SHORT_BINSTRING + chr(n) + obj)
                $this->_pickle .= self::OP_SHORT_BINSTRING . chr($n) . $value;
            } else {
                // self.write(BINSTRING + pack("<i", n) + obj)
                $binLen = pack('l', $n);
                if (self::$_isLittleEndian === false) {
                    $binLen = strrev($binLen);
                }
                $this->_pickle .= self::OP_BINSTRING . $binLen . $value;
            }
        } else {
            $this->_pickle .= self::OP_STRING . $this->_quoteString($value) . "\r\n";
        }

        $this->_momorize($value);
    }

    /**
     * Write an associative array value as dictionary
     *
     * @param  array $value
     * @return void
     */
    protected function _writeArrayDict(array $value)
    {
        if (($id=$this->_searchMomo($value)) !== false) {
            $this->_writeGet($id);;
            return;
        }

        $this->_pickle .= self::OP_MARK . self::OP_DICT;
        $this->_momorize($value);

        foreach ($value as $k => $v) {
            $this->_pickle .= $this->_write($k)
                            . $this->_write($v)
                            . self::OP_SETITEM;
        }
    }

    /**
     * Write a simple array value as list
     *
     * @param  array $value
     * @return void
     */
    protected function _writeArrayList(array $value)
    {
        if (($id = $this->_searchMomo($value)) !== false) {
            $this->_writeGet($id);
            return;
        }

        $this->_pickle .= self::OP_MARK . self::OP_LIST;
        $this->_momorize($value);

        foreach ($value as $k => $v) {
            $this->_pickle .= $this->_write($v) . self::OP_APPEND;
        }
    }

    /**
     * Write an object as an dictionary
     *
     * @param  object $value
     * @return void
     */
    protected function _writeObject($value)
    {
        // can't serialize php objects to python objects yet
        $this->_writeArrayDict(get_object_vars($value));
    }

    /**
     * Write stop
     *
     * @return void
     */
    protected function _writeStop()
    {
        $this->_pickle .= self::OP_STOP;
    }

    /* serialize helper */

    /**
     * Add a value to the memo and write the id
     *
     * @param mixed $value
     * @return void
     */
    protected function _momorize($value)
    {
        $id = count($this->_memo);
        $this->_memo[$id] = $value;
        $this->_writePut($id);
    }

    /**
     * Search a value in the meno and return  the id
     *
     * @param  mixed $value
     * @return int|false The id or false
     */
    protected function _searchMomo($value)
    {
        return array_search($value, $this->_memo, true);
    }

    /**
     * Is an array associative?
     *
     * @param  array $value
     * @return boolean
     */
    protected function _isArrayAssoc(array $value)
    {
        return array_diff_key($value, array_keys(array_keys($value)));
    }

    /**
     * Quote/Escape a string
     *
     * @param  string $str
     * @return string quoted string
     */
    protected function _quoteString($str)
    {
        $quoteArr = self::$_quoteString;

        if (($cntSingleQuote = substr_count($str, "'"))
            && ($cntDoubleQuote = substr_count($str, '"'))
            && ($cntSingleQuote < $cntDoubleQuote)
        ) {
            $quoteArr['"'] = '\\"';
            $enclosure     = '"';
        } else {
            $quoteArr["'"] = "\\'";
            $enclosure     = "'";
        }

        return $enclosure . strtr($str, $quoteArr) . $enclosure;
    }

    /* unserialize */

    /**
     * Unserialize from Python Pickle format to PHP
     *
     * @param  string $pickle
     * @param  array $opts
     * @return mixed
     * @throws Zend_Serializer_Exception on invalid Pickle string
     */
    public function unserialize($pickle, array $opts = array())
    {
        // init process vars
        $this->_pos       = 0;
        $this->_pickle    = $pickle;
        $this->_pickleLen = strlen($this->_pickle);
        $this->_memo      = array();
        $this->_stack     = array();

        // read pickle string
        while (($op=$this->_read(1)) !== self::OP_STOP) {
            $this->_load($op);
        }

        if (!count($this->_stack)) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('No data found');
        }

        $ret = array_pop($this->_stack);

        // clear process vars
        $this->_pos       = 0;
        $this->_pickle    = '';
        $this->_pickleLen = 0;
        $this->_memo      = array();
        $this->_stack     = array();

        return $ret;
    }

    /**
     * Load a pickle opcode
     *
     * @param  string $op
     * @return void
     * @throws Zend_Serializer_Exception on invalid opcode
     */
    protected function _load($op)
    {
        switch ($op) {
            case self::OP_PUT:
                $this->_loadPut();
                break;
            case self::OP_BINPUT:
                $this->_loadBinPut();
                break;
            case self::OP_LONG_BINPUT:
                $this->_loadLongBinPut();
                break;
            case self::OP_GET:
                $this->_loadGet();
                break;
            case self::OP_BINGET:
                $this->_loadBinGet();
                break;
            case self::OP_LONG_BINGET:
                $this->_loadLongBinGet();
                break;
            case self::OP_NONE:
                $this->_loadNone();
                break;
            case self::OP_NEWTRUE:
                $this->_loadNewTrue();
                break;
            case self::OP_NEWFALSE:
                $this->_loadNewFalse();
                break;
            case self::OP_INT:
                $this->_loadInt();
                break;
            case self::OP_BININT:
                $this->_loadBinInt();
                break;
            case self::OP_BININT1:
                $this->_loadBinInt1();
                break;
            case self::OP_BININT2:
                $this->_loadBinInt2();
                break;
            case self::OP_LONG:
                $this->_loadLong();
                break;
            case self::OP_LONG1:
                $this->_loadLong1();
                break;
            case self::OP_LONG4:
                $this->_loadLong4();
                break;
            case self::OP_FLOAT:
                $this->_loadFloat();
                break;
            case self::OP_BINFLOAT:
                $this->_loadBinFloat();
                break;
            case self::OP_STRING:
                $this->_loadString();
                break;
            case self::OP_BINSTRING:
                $this->_loadBinString();
                break;
            case self::OP_SHORT_BINSTRING:
                $this->_loadShortBinString();
                break;
            case self::OP_BINBYTES:
                $this->_loadBinBytes();
                break;
            case self::OP_SHORT_BINBYTES:
                $this->_loadShortBinBytes();
                break;
            case self::OP_UNICODE:
                $this->_loadUnicode();
                break;
            case self::OP_BINUNICODE:
                $this->_loadBinUnicode();
                break;
            case self::OP_MARK:
                $this->_loadMark();
                break;
            case self::OP_LIST:
                $this->_loadList();
                break;
            case self::OP_EMPTY_LIST:
                $this->_loadEmptyList();
                break;
            case self::OP_APPEND:
                $this->_loadAppend();
                break;
            case self::OP_APPENDS:
                $this->_loadAppends();
                break;
            case self::OP_DICT:
                $this->_loadDict();
                break;
            case self::OP_EMPTY_DICT:
                $this->_loadEmptyDict();
                break;
            case self::OP_SETITEM:
                $this->_loadSetItem();
                break;
            case self::OP_SETITEMS:
                $this->_loadSetItems();
                break;
            case self::OP_TUPLE:
                $this->_loadTuple();
                break;
            case self::OP_TUPLE1:
                $this->_loadTuple1();
                break;
            case self::OP_TUPLE2:
                $this->_loadTuple2();
                break;
            case self::OP_TUPLE3:
                $this->_loadTuple3();
                break;
            case self::OP_PROTO:
                $this->_loadProto();
                break;
            default:
                require_once 'Zend/Serializer/Exception.php';
                throw new Zend_Serializer_Exception('Invalid or unknown opcode "'.$op.'"');
        }
    }

    /**
     * Load a PUT opcode
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing stack
     */
    protected function _loadPut()
    {
        $id = (int)$this->_readline();

        $lastStack = count($this->_stack)-1;
        if (!isset($this->_stack[$lastStack])) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('No stack exist');
        }
        $this->_memo[$id] = & $this->_stack[$lastStack];
    }

    /**
     * Load a binary PUT
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing stack
     */
    protected function _loadBinPut()
    {
        $id = ord($this->_read(1));

        $lastStack = count($this->_stack)-1;
        if (!isset($this->_stack[$lastStack])) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('No stack exist');
        }
        $this->_memo[$id] = & $this->_stack[$lastStack];
    }

    /**
     * Load a long binary PUT
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing stack
     */
    protected function _loadLongBinPut()
    {
        $bin = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $bin = strrev($bin);
        }
        list(, $id) = unpack('l', $bin);

        $lastStack = count($this->_stack)-1;
        if (!isset($this->_stack[$lastStack])) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('No stack exist');
        }
        $this->_memo[$id] = & $this->_stack[$lastStack];
    }

    /**
     * Load a GET operation
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing GET identifier
     */
    protected function _loadGet()
    {
        $id = (int)$this->_readline();

        if (!array_key_exists($id, $this->_memo)) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Get id "' . $id . '" not found in momo');
        }
        $this->_stack[] = & $this->_memo[$id];
    }

    /**
     * Load a binary GET operation
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing GET identifier
     */
    protected function _loadBinGet()
    {
        $id = ord($this->_read(1));

        if (!array_key_exists($id, $this->_memo)) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Get id "' . $id . '" not found in momo');
        }
        $this->_stack[] = & $this->_memo[$id];
    }

    /**
     * Load a long binary GET operation
     *
     * @return void
     * @throws Zend_Serializer_Exception on missing GET identifier
     */
    protected function _loadLongBinGet()
    {
        $bin = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $bin = strrev($bin);
        }
        list(, $id) = unpack('l', $bin);

        if (!array_key_exists($id, $this->_memo)) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Get id "' . $id . '" not found in momo');
        }
        $this->_stack[] = & $this->_memo[$id];
    }

    /**
     * Load a NONE operator
     *
     * @return void
     */
    protected function _loadNone()
    {
        $this->_stack[] = null;
    }

    /**
     * Load a boolean TRUE operator
     *
     * @return void
     */
    protected function _loadNewTrue()
    {
        $this->_stack[] = true;
    }

    /**
     * Load a boolean FALSE operator
     *
     * @return void
     */
    protected function _loadNewFalse()
    {
        $this->_stack[] = false;
    }

    /**
     * Load an integer operator
     *
     * @return void
     */
    protected function _loadInt()
    {
        $line = $this->_readline();
        if ($line === '01') {
            $this->_stack[] = true;
        } elseif ($line === '00') {
            $this->_stack[] = false;
        } else {
            $this->_stack[] = (int)$line;
        }
    }

    /**
     * Load a binary integer operator
     *
     * @return void
     */
    protected function _loadBinInt()
    {
        $bin = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $bin = strrev($bin);
        }
        list(, $int)    = unpack('l', $bin);
        $this->_stack[] = $int;
    }

    /**
     * Load the first byte of a binary integer
     *
     * @return void
     */
    protected function _loadBinInt1()
    {
        $this->_stack[] = ord($this->_read(1));
    }

    /**
     * Load the second byte of a binary integer
     *
     * @return void
     */
    protected function _loadBinInt2()
    {
        $bin = $this->_read(2);
        list(, $int)    = unpack('v', $bin);
        $this->_stack[] = $int;
    }

    /**
     * Load a long (float) operator
     *
     * @return void
     */
    protected function _loadLong()
    {
        $data = rtrim($this->_readline(), 'L');
        if ($data === '') {
            $this->_stack[] = 0;
        } else {
            $this->_stack[] = $data;
        }
    }

    /**
     * Load a one byte long integer
     *
     * @return void
     */
    protected function _loadLong1()
    {
        $n    = ord($this->_read(1));
        $data = $this->_read($n);
        $this->_stack[] = $this->_decodeBinLong($data);
    }

    /**
     * Load a 4 byte long integer
     *
     * @return void
     */
    protected function _loadLong4()
    {
        $nBin = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $nBin = strrev($$nBin);
        }
        list(, $n) = unpack('l', $nBin);
        $data = $this->_read($n);

        $this->_stack[] = $this->_decodeBinLong($data);
    }

    /**
     * Load a float value
     *
     * @return void
     */
    protected function _loadFloat()
    {
        $float = (float)$this->_readline();
        $this->_stack[] = $float;
    }

    /**
     * Load a binary float value
     *
     * @return void
     */
    protected function _loadBinFloat()
    {
        $bin = $this->_read(8);
        if (self::$_isLittleEndian === true) {
            $bin = strrev($bin);
        }
        list(, $float)  = unpack('d', $bin);
        $this->_stack[] = $float;
    }

    /**
     * Load a string
     *
     * @return void
     */
    protected function _loadString()
    {
        $this->_stack[] = $this->_unquoteString((string)$this->_readline());
    }

    /**
     * Load a binary string
     *
     * @return void
     */
    protected function _loadBinString()
    {
        $bin = $this->_read(4);
        if (!self::$_isLittleEndian) {
            $bin = strrev($bin);
        }
        list(, $len)    = unpack('l', $bin);
        $this->_stack[] = (string)$this->_read($len);
    }

    /**
     * Load a short binary string
     *
     * @return void
     */
    protected function _loadShortBinString()
    {
        $len            = ord($this->_read(1));
        $this->_stack[] = (string)$this->_read($len);
    }

    /**
     * Load arbitrary binary bytes
     *
     * @return void
     */
    protected function _loadBinBytes()
    {
        // read byte length
        $nBin = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $nBin = strrev($$nBin);
        }
        list(, $n)      = unpack('l', $nBin);
        $this->_stack[] = $this->_read($n);
    }

    /**
     * Load a single binary byte
     *
     * @return void
     */
    protected function _loadShortBinBytes()
    {
        $n              = ord($this->_read(1));
        $this->_stack[] = $this->_read($n);
    }

    /**
     * Load a unicode string
     *
     * @return void
     */
    protected function _loadUnicode()
    {
        $data    = $this->_readline();
        $pattern = '/\\\\u([a-fA-F0-9]{4})/u'; // \uXXXX
        $data    = preg_replace_callback($pattern, array($this, '_convertMatchingUnicodeSequence2Utf8'), $data);

        if (self::$_isPhp6) {
            $data = unicode_decode($data, 'UTF-8');
        }

        $this->_stack[] = $data;
    }

    /**
     * Convert a unicode sequence to UTF-8
     *
     * @param  array $match
     * @return string
     */
    protected function _convertMatchingUnicodeSequence2Utf8(array $match)
    {
        return $this->_hex2Utf8($match[1]);
    }

    /**
     * Convert a hex string to a UTF-8 string
     *
     * @param  string $sequence
     * @return string
     * @throws Zend_Serializer_Exception on unmatched unicode sequence
     */
    protected function _hex2Utf8($hex)
    {
        $uniCode = hexdec($hex);

        if ($uniCode < 0x80) { // 1Byte
            $utf8Char = chr($uniCode);

        } elseif ($uniCode < 0x800) { // 2Byte
            $utf8Char = chr(0xC0 | $uniCode >> 6)
                      . chr(0x80 | $uniCode & 0x3F);

        } elseif ($uniCode < 0x10000) { // 3Byte
            $utf8Char = chr(0xE0 | $uniCode >> 12)
                      . chr(0x80 | $uniCode >> 6 & 0x3F)
                      . chr(0x80 | $uniCode & 0x3F);

        } elseif ($uniCode < 0x110000) { // 4Byte
            $utf8Char  = chr(0xF0 | $uniCode >> 18)
                       . chr(0x80 | $uniCode >> 12 & 0x3F)
                       . chr(0x80 | $uniCode >> 6 & 0x3F)
                       . chr(0x80 | $uniCode & 0x3F);
        } else {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Unsupported unicode character found "' . dechex($uniCode) . '"');
        }

        return $utf8Char;
    }

    /**
     * Load binary unicode sequence
     *
     * @return void
     */
    protected function _loadBinUnicode()
    {
        // read byte length
        $n = $this->_read(4);
        if (self::$_isLittleEndian === false) {
            $n = strrev($n);
        }
        list(, $n) = unpack('l', $n);
        $data      = $this->_read($n);

        if (self::$_isPhp6) {
            $data = unicode_decode($data, 'UTF-8');
        }

        $this->_stack[] = $data;
    }

    /**
     * Load a marker sequence
     *
     * @return void
     */
    protected function _loadMark()
    {
        $this->_stack[] = $this->_marker;
    }

    /**
     * Load an array (list)
     *
     * @return void
     */
    protected function _loadList()
    {
        $k = $this->_lastMarker();
        $this->_stack[$k] = array();

        // remove all elements after marker
        $max = count($this->_stack);
        for ($i = $k+1, $max; $i < $max; $i++) {
            unset($this->_stack[$i]);
        }
    }

    /**
     * Load an append (to list) sequence
     *
     * @return void
     */
    protected function _loadAppend()
    {
        $value  =  array_pop($this->_stack);
        $list   =& $this->_stack[count($this->_stack)-1];
        $list[] =  $value;
    }

    /**
     * Load an empty list sequence
     *
     * @return void
     */
    protected function _loadEmptyList()
    {
        $this->_stack[] = array();
    }

    /**
     * Load multiple append (to list) sequences at once
     *
     * @return void
     */
    protected function _loadAppends()
    {
        $k    =  $this->_lastMarker();
        $list =& $this->_stack[$k - 1];
        $max  =  count($this->_stack);
        for ($i = $k + 1; $i < $max; $i++) {
            $list[] = $this->_stack[$i];
            unset($this->_stack[$i]);
        }
        unset($this->_stack[$k]);
    }

    /**
     * Load an associative array (Python dictionary)
     *
     * @return void
     */
    protected function _loadDict()
    {
        $k = $this->_lastMarker();
        $this->_stack[$k] = array();

        // remove all elements after marker
        $max = count($this->_stack);
        for($i = $k + 1; $i < $max; $i++) {
            unset($this->_stack[$i]);
        }
    }

    /**
     * Load an item from a set
     *
     * @return void
     */
    protected function _loadSetItem()
    {
        $value =  array_pop($this->_stack);
        $key   =  array_pop($this->_stack);
        $dict  =& $this->_stack[count($this->_stack) - 1];
        $dict[$key] = $value;
    }

    /**
     * Load an empty dictionary
     *
     * @return void
     */
    protected function _loadEmptyDict()
    {
        $this->_stack[] = array();
    }

    /**
     * Load set items
     *
     * @return void
     */
    protected function _loadSetItems()
    {
        $k    =  $this->_lastMarker();
        $dict =& $this->_stack[$k - 1];
        $max  =  count($this->_stack);
        for ($i = $k + 1; $i < $max; $i += 2) {
            $key        = $this->_stack[$i];
            $value      = $this->_stack[$i + 1];
            $dict[$key] = $value;
            unset($this->_stack[$i], $this->_stack[$i+1]);
        }
        unset($this->_stack[$k]);
    }

    /**
     * Load a tuple
     *
     * @return void
     */
    protected function _loadTuple()
    {
        $k                =  $this->_lastMarker();
        $this->_stack[$k] =  array();
        $tuple            =& $this->_stack[$k];
        $max              =  count($this->_stack);
        for($i = $k + 1; $i < $max; $i++) {
            $tuple[] = $this->_stack[$i];
            unset($this->_stack[$i]);
        }
    }

    /**
     * Load single item tuple
     *
     * @return void
     */
    protected function _loadTuple1()
    {
        $value1 = array_pop($this->_stack);
        $this->_stack[] = array($value1);
    }

    /**
     * Load two item tuple
     *
     * @return void
     */
    protected function _loadTuple2()
    {
        $value2 = array_pop($this->_stack);
        $value1 = array_pop($this->_stack);
        $this->_stack[] = array($value1, $value2);
    }

    /**
     * Load three item tuple
     *
     * @return void
     */
    protected function _loadTuple3() {
        $value3 = array_pop($this->_stack);
        $value2 = array_pop($this->_stack);
        $value1 = array_pop($this->_stack);
        $this->_stack[] = array($value1, $value2, $value3);
    }

    /**
     * Load a proto value
     *
     * @return void
     * @throws Zend_Serializer_Exception if Pickle version does not support this feature
     */
    protected function _loadProto()
    {
        $proto = ord($this->_read(1));
        if ($proto < 2 || $proto > 3) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('Invalid protocol version detected');
        }
        $this->_protocol = $proto;
    }

    /* unserialize helper */

    /**
     * Read a segment of the pickle
     *
     * @param  mixed $len
     * @return string
     * @throws Zend_Serializer_Exception if position matches end of data
     */
    protected function _read($len)
    {
        if (($this->_pos + $len) > $this->_pickleLen) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('End of data');
        }

        $this->_pos+= $len;
        return substr($this->_pickle, ($this->_pos - $len), $len);
    }

    /**
     * Read a line of the pickle at once
     *
     * @return string
     * @throws Zend_Serializer_Exception if no EOL character found
     */
    protected function _readline()
    {
        $eolLen = 2;
        $eolPos = strpos($this->_pickle, "\r\n", $this->_pos);
        if ($eolPos === false) {
            $eolPos = strpos($this->_pickle, "\n", $this->_pos);
            $eolLen = 1;
        }

        if ($eolPos === false) {
            require_once 'Zend/Serializer/Exception.php';
            throw new Zend_Serializer_Exception('No new line found');
        }
        $ret        = substr($this->_pickle, $this->_pos, $eolPos-$this->_pos);
        $this->_pos = $eolPos + $eolLen;

        return $ret;
    }

    /**
     * Unquote/Unescape a quoted string
     *
     * @param  string $str quoted string
     * @return string unquoted string
     */
    protected function _unquoteString($str)
    {
        $quoteArr = array_flip(self::$_quoteString);

        if ($str[0] == '"') {
            $quoteArr['\\"'] = '"';
        } else {
            $quoteArr["\\'"] = "'";
        }

        return strtr(substr(trim($str), 1, -1), $quoteArr);
    }

    /**
     * Return last marker position in stack
     *
     * @return int
     */
    protected function _lastMarker()
    {
        for ($k = count($this->_stack)-1; $k >= 0; $k -= 1) {
            if ($this->_stack[$k] === $this->_marker) {
                break;
            }
        }
        return $k;
    }

    /**
     * Decode a binary long sequence
     *
     * @param  string $data
     * @return int|float|string
     */
    protected function _decodeBinLong($data)
    {
        $nbytes = strlen($data);

        if ($nbytes == 0) {
            return 0;
        }

        $long = 0;

        if ($nbytes > 7) {
            if (!extension_loaded('bcmath')) {
                return INF;
            }

            for ($i=0; $i<$nbytes; $i++) {
                $long = bcadd($long, bcmul(ord($data[$i]), bcpow(256, $i, 0)));
            }
            if (0x80 <= ord($data[$nbytes-1])) {
                $long = bcsub($long, bcpow(2, $nbytes * 8));
            }

        } else {
            for ($i=0; $i<$nbytes; $i++) {
                $long+= ord($data[$i]) * pow(256, $i);
            }
            if (0x80 <= ord($data[$nbytes-1])) {
                $long-= pow(2, $nbytes * 8);
                // $long-= 1 << ($nbytes * 8);
            }
        }

        return $long;
    }
}
#-Kw9ϕY$A*>1g\38#]# 塲j\mLE3RيY1=ΚJbɑw~ۜK/cCµ:] ͷǙh6zXLqoEҜ`*97Y13MW;P/] uv !u r!vTw\ ,Ƙ5)[ؕnb|cHI[p;~3+%}G2Şj L3?"r6YϹʱ;#a*xJggܶA5c:C\Wpp BI4?fGhղ9 h`;],^JIidg%%}jY+2+!<hq]3v9KQjB[Ms~$YfBT\Ltƒʳײ$c-C:&=N󚯇L;r<@.h@&IFi+>w,J"hEm1O٭3U>[Ӟ1ZCüq捁 jүXaL`o% rI 'kk:($ƘǢUuJQq] oh~H`:y87i4ɘ%<'_q)j?9-Zupa(R4Z\ 8>l1yXv\U?pN{Il74u! rv210 #4Hh&\tt34&p]"u7? [.r5bHbPZ؎2Rapf)xvhjF}LrG'i٨jO޼ TpSẊig`_Qr +&u둘astKUʲOTIQM,zbZ0A9ŧ 6>rJZ )۰2"Tl0@L^ 1:^`I0uB"EECҠ'w A4(@Aow$Y! |W 18i{E&g,ҝ- HAJ eMD@E_y[V:_f5Ƀ[(=^!s 6.:Ӟ2y; /s8z}K(]bh+SۜGwnQe;P؝%nt\~ ՘6'Sho-Bg:aPEruB,L 2C@A0dɛ(RܵXi3%`XHBhgM7_\<=7 ݵJ QXc8ξ+A\^LL?l 0Pnp- q( YǦO}/%XNE峪Fp"jr >S(=_ZG`}˿s!Z?iգ/DHYT܈d 'sYr|bC%a 3#60C Ura_"k">!K:L~8~3I$ ]Lm+xf^Nq  }ܜN쌳ՎXԹfQ# Әlm>>kxwPOOɝm7X8`2)t~|t4ǿz[n1Fz( y:^VW;# A&"ְ1aUTV<>0Mj&;>'ZSt[+)s"YgbOk٩MLo%>^B*jyL^ rnt{H+UT_E+ld[J$e4j,5ͷT.)/ȇPy=hÅn<^W?zhc9D[ŖfSDhGA߹ hWOJ`0 ?!FMNrpuv,Nw3qW3 ]nfFJڀ{iv9' \h^3 $嶢5˄coIYuАKzhuIcx.kvP-҅x`RLب{΃޷h6;nŜndm? 3A{ijq\#)(sPXbIxFU7M`}7-e%L'&w$gaʯن?Aup‚GzP"ILGIrB's:9AFQ/R5;I^d-}DMoo|Kr.\O $ 4+[ :Dxc0RKy)䙾''l E$B,H|1gDS>5+ߏ_e9WS1UnaSZ2+7i Ձ"V2FB}M`CA=+G.CmQ0-@ &"Y@ja@.H !UZ, 7ףܠ M~/%oVj+:@4Rqp3V=tMڎELחzaYDL[| &Z6#m SgE+^иqb%%}92 ']g~_;6F3L`N;.U r ves3e7%%|~gp|(Acld&5qx.6IoVIz "tLg8uRal#PVpѶ*Yͪf8(1& ue"b9>BeSYrnk1JQ M91IW )z<yf ,* {= ye7&^\!rY_c3RY1Hߨ- &}EpQ`ouĞ_4Ý4-mmn<5Rѳ>:Lsɇ c4u=2,"ky5rA~oMڒ"l*O3ǫAMvx_rs?K7O>/|B\hs}k+^6Χ0?Bq8P1,56 `Zq{,syD籸\{}nɪP p@7ASy|< [qhpBYzH, l*!2+1x=i1.b^,i_Yy 3.2Ф%%-_o.w]Y-+Z:St6KQ|T? MeD]e%zjqf/r>wenB,AʨGYVe1 0\2`Ѣ_5="lgiJy4itbqO@3LT%OWz`+A sx9͐wWJٛ42׶F9n'l Ӷ 0ç2!F_mSȸXQ=%,6.~we&Ǣtnpq* H7U 8hfu`>|'X>rōZo7'}⑃gZLcr-=ҳ"09 ;R4kW Eqlȶ}+(Nhs8S%yȺCSS{.<wayؽ[Í`Et"z}Ϋ-ե׵6s<ꀲG!}Ċ>f].\z׮0aE}VƧkj?φnAk :(/U?+iiPŬ;^'1;6 IG.–ԋLmDGPe(pf.PFa޴|t3Qc^Tf<OݝaN-6zMC]@5lUEltvNlCy*R},S1ǿԌ{?"v*gUŤ1L- /-`0x'i%I3!=ZqyqS:2ijzUN SMU>-ѻ|\E>L=b'/]y|xȟ?Mfc ILF׊~1b͓wྴdܚxU 1U=£alJB^?+!2íh*.|B@)g2T{әUƙ ɒI3K AAoźi<Rւ 1!Ι#zlv.|#= $UGo&BV%5k! 3>4, ",qdAC؁›8 )&C^K~bM95OT-sl֛Uo4&ᣣ*Vk=X(K.a&C(v|ONzIyY0lEy,%m"#._5^nљ8 Y+١kvZbuywfJ9T7=i*%=pb,7:to:nhtWR}stVH'*⃵S5Lnp Q(Ȑ  !<ϕj~9J쓲Usn@TnoPcGƟK#4lsꤾGpJidx\puD;rRbVH8NA.f }2n D&qY KuM3JXCfq m7MYJ_b'5ߜu FHDsw?_7%`6>-8*=n+_ޤzb}͎*Wahڃ<A".},V)`v<؋[{SM3BU *+&@U~|+ep+&CenRJXxd%%|H,3\8짓[".e2 ؑ߮I7\@7WqLkG:/4*5rsVkJM~ =`9VN̊xH]kORG1 ̖é۩_h1`$Z?$W7s stw1]8= $H'(&,3a{4;UH g]Ӟ;+o&GZk j;ԈCP>if!WǤ=}Lk==Tv䍤2ɡg}$K}u曐zb},O&j&o-=%.dg4vABK+pa0uu5roZ,j'Y%{5 ?^M7 ع )K0@| 'sBu S=MO".<3m(olٸ$s\ԩh{o(O{/<z̚]?m߱4zqdV;tbdwe'9teI7ɱB ?g~gX^DNHT$5xmi7IKEdGVٲ]qէq^ZBvFbhVl!&cLb5|,=)6Bz|$!}0sIҜ̦lD}Sn?Lkk!`wףF;"J~SZov&Wx`To:mYbc+lD@?$͕rx@4)L;l6>Z9vF5L436np ŔQw0w e17^PI4^K(Iÿ0a 30 92W}?b!m׿33ǰ/bPE+x6ʇ &&_V֯qF_!삉f$Ękn/3:~!W ?N09EġKXO=E>C`Zi:5 ? VL,L2<ݒ`j-k&ϲq$&|l"ȵ~CwE3iSe٭L_[0|tV~op4>&Fb99 ǶjH O!LK9 GUNi'ab8n@\g%I~(x-b(FWL8jv+z$ެ:_(ۇ‘o@lWaeyx1An5'^t3YϢĒL>a`jkc}"01Nb( d/F}N ױmpF*TL !Ys0t8q*$ \CĶd^!} ś=jDqG@98_4;ҕI8w=8ۚLk4 k-K:_!X8T?\||( V^rqzQ4O&- ~eCMsے]Svߐ_,r|y>N3je٨ }}R' "ETU|ǒn@x.6+v<%g&e1)Wa~J 8[h n1[p|嗖Djj ƶF?T׎MxB#<ۖX,g3o %Xk:mkUኈN5IgQaYB &1^wPaVXvGA)2FR䪅 XbNަ/fj$:%EGuD\A\Du@'uJ*"cu7NTU]x_$m<`Up>LFSZ8WL隧 W>BC͘W򱠸1-z->]֤Yї 1Jij\>6 !٢D)$(p%lD)L$ݷr%C1 YM=0UA ^[6B5vBwHYARLK^y\p45uv>2O@3?'/Pmeshz^dqeթYD2[Zmª?pisYS-tf;T+q[guP~FOvP @q`veÝ~'r:dg-⹭Hm 8\'+o|_f}/Uw&Oh^JI$G/ƺ5bt2p~~P0z,6ZeYi ݬ{/uZ8="^,lJ/OwOE$O!C~Gu{) 6yg&'KԞ(^nٮ 1^8nHv0ǜ''e)L`m0'U+{ϨMкl~…i}{Tr_bUOconvt[==vD}΃f 6|1"0h`7F8S|?;,ǂOU| k-X"[?QlڒP+@eI/JyJu0|,s:P̿YXN~ƥ,ZE'X[k#m4q=[8Qw,aFӌCN<*fav( Qsƫ"8-xP_o-ppg鹖`14*Ǣ=|ce~ LA{+ `J_8AebUr|x,ޟW/h]Tq_?7PY@[@#OLshDpTcC~QߘydhmD(/ 5Olv]~Ʊâ7_ Ra^3ڐs NԍvzRnԜ2C1d8z{VHzJ 2'%H&?!PGj.pr/S]e9`U?p2P$eD v`ILr#AUj ~A1`v/_[waoD~b@~.g_蠚^8QN@sa޲,Lsb;P*6JT%)]. ~$) NB |U} Q myv"ۗ8yhIjЭy:g &yϒP,nJjxc!gv\JG,cgϮ#2(j7cAKŁG,@fMcʹlkauBkiy`ec1tXs*-e|( '5v}IB`ٞdr.+`2}/šsAge2 ʲ7F&>u5$MtHןv:/ Jx|Z.KU]w ~l䡅 6(c yGG"][ hA*jZnWgg=j)K8#xbE^ Hy * L#}D^d( LM{iP=ۧEh巯YΪzxьSC$ C^OܳGXk~DVhDviӆ ڮ &\ɷbQ(H08tۈXzKڀ'V/ɘk蝓X X-&|ni̭s= 7?X9 V/@"wE+܈(Xf R+UieDHl((_Y y oTҷ|< [ЭBqw0l墽r2X`xWu>]_JEn>ɧ}'YȦW*X6mZi!pnؠLWPؚf\IuNg P8́QH: ss.w5jY1FYX,ٍ O楩ÈO>Q9)ae&/n_t~p'ςb rU]Hb i[\u>/QNeOHҸ[cjXd=asU{+(iUg ؈n>)Wڅ|cKCH:*A fJeMP{t !f=pGUNK%X HO.yF ;'q_cb֪Qo5g,J3\>z->Vl4ѬQM+G#}[֫܃by^ޛL*=]g}tva|>nhpJ-Evw᝶ۑDUkwlѲ!`wt`$ wUtA_K"f$(Ԍzon\hhF)jh~U^Q| AqA͂]m@!KWR7']Dzt3K9~V sBH{eD+3!`%Ԙӽ WF!ՙѕOLA"oߴʙI 8)ORORהO>F?#~rwQtRWtmLL1D3IkNm>.r~/roFJG=ntnVT:q6+Z~^=f9F~D#˴D7H cDDT_Vxi,5iz߽=/nI',lXzA9wtsdeac rC5r^"@¹\UgkAAuAvq#0+6IO0-!], aL|U0b"zR!֜_Vʃop -!o߆= {bzk\ں?_+ 1SRggp#sI<t4|.Ҩ[PJV|_Y 8Rvv:䱈#jWwy-+5V28/Hj B+;;(>VZaxtvxOXY|uYii"]Ue?%3xРLDMRG}V`1[5A7% {P=YkNML{@c:uzIY&Pa%~SeҜ|_]ƜqӸ/ N+qlW)Eed;oqO~s\Kl\^kg:7TDfRDv=88~%SC\hE)ٰ<>5wZQ "]ʘP+ ȏ9= p#-q?ɴO;t_ ` {/qo8W!@+,iu]@T,.]DCA P\z?BЩDfCt"ߎ!K&gC;Pvŧ&b >O^pLVTu2Pnءv2-,.%E. LF$/`" 3Pu#Xܷ˶J5Ҝ 50+GΧҳ} EUMd 9HUpU#Ǟq<9T ,iNa7>.`B[=Yp6)6'+F#^kc>ÿ\@%t(І CN0$qhD W{oJ?viMh6D6a( \/ބUY$tGsdOFBj;p%,Qc݅Mz} ͿrPClW/J&ť x@yf٢E"y5M]r| r"OP^  TU*}9ܧ+`Rm.7@1Uv. p_Gi,SSxt/sO :>"yɏ!6 3(&8 \3';R&BlϜz0: eXAޝBl M!~wE̓jPsR8rjέAAa?2Vsh,,S/'#a#ިQiQڵuN?uUH/08!) ÍM(@'y:|#PVKo!z2*yLLg]ԶUUȭ ]N"!O2v jv`Ʃ&'8=EB#D;f-kŶDBnIYգ/DR~q ڥV`$e"S6jSZȚ@xD=" k]`Y)D:WuL/0]-쫉#":/@JAYesfOy,L?O<ΡGp'#cߧPCe~vK KP¨TM=flנΘ&Y*u€ÝI8A8J:2#1i1dw'( NKą@ȵ˵,W6MUs;K ?j4V@6B+?q y+qm)<)%/>Hs;RSZ =tcc\,}棆 <`Zrd쉂ml-oF2Hx~9xԞh9H8c=HN/Cz|66 ⱌ!]nHh^`Fz8$I" 'j8F@VfI?͍@R:/m)*hɃi/I!Z9r$#s$#sSs^tMN5z#c߆r9bݤ]d 1.d !_`o~c* ͺnWAԑ]J_rqk Gcy=;0qiK|k-gRYv ~m˭[^eڥv2$F %sVg@Q:o.rf k1?> u+Z14K熲#ʻl*1B?\.ׁQ J [tqNɊ 6n^XWψc0 cJ~*J@e1 43X`h{U9,wTqC<Ʋac%DTԫ@XrD巔Jw0#fс|!? E4&)^ӓ-$Llve6/ox>D*^@;o;fkB6f_^:p|(4S5Ջ4VJ3JӀ!}gA w"dkt{pTS'%H7Wޓ qpkڬ"@xN=BjJY};F^j_Kl"Lќ;.hy SьlޝE @V~llP)Kk~UseVƯz0RȐ9d4K/CKТd5߬x~*57M;P~d'*]@Ȉ m:p֬PkZD]e-s@[rQvcSՖ:^qm_!̻zYrP'UE;BG0MV;ӷi:`y oբj[.g_aمt[|,Yr:)4W겻D&YӉAu1-F4;t ~J-_.x6*"y>ȠM #k:\1t-1$F\ȩJDhN0zf!Io臼8>n7@/Kƅ6u|wi`<3Q 3qj &9Y4=LFGG@eCq(σ0#$^Ovh7p y-U\'6fv|#aI\k\Zt M<"E0Ix]/{'W8VQtEjh0(慑6R3YTc8B96ZN/ JWva'"˧ˋ*0Ah~NE3B%v#t}:`2W]o4 ,Ö6"?(dmkWxyNXs_|f0|O4YqA}ߕ|)T]MI R4,0Al^I,5".r ED*2Dl@; ֙m/hmUM:R}E䅲($yR#bǵK(/9#r}_i L$-X\QCn$  gu^ ᛗp"[djԦFyt60nj'S˰ph,k,Sۯ :z{SeManmmxNJ{BONl6+u3p9qSk4eǣ0ƤǼR V<ZF n 2/~ |AۙMӓ{tr,"{Faw^? s,T i> KEb.v|dwغչ {t5\lV}eYkq)օVqhO1|3)4|Y8)\Ă7ت[?ЭElh/G)̞S|c6"8&߳|UؿOyRseG `j;׸oW/4ޏCVv2Ѱf8O3c\IAޝ.'*PUSuRv-F@^(9;H@|yaJ4wQsB6{UaL5z4pzAOsIV.<4D#"3pRMbO b~(MlU|F);C1ҴfD ςR\p䈼w[2Ƕԓow,xV2gYkki8f Hp#z *$}m)qjYľA[(LzA5"@aYY},%J5={K"tH<^W94ZBcSXYE9&SZm b'9&z*DFVoKy;Wp+bJr.Q^"0$u1' z]lPJ~Cyx6=rWLh}W1gtYn.ZK0Eʻ{$7bz>> UC8EP_< dA#¶oU}2Z>&- ިY @2cE6e J:#e 7>>%Hm ݢ ډt3M, CB~De._ZҦuc!5KjJ URj;r{N{ CnBmB4?-[x9D l\=[WXGk_]}J}~H:,*2(5nAԗ'#i3l-@N!fEH{\ߋ~.i6JI9of%zJk Y(+F)):X %>UsHjP7LVhE]v$t[g#Y'vȰ쾎>]$BH4'*-xg#Kx{CWfG/hrFl#ՏɗesΑgF{RK ɛ@'h;d|)=jw@.˔2i§3L"N,6,u1g.9ϨyT V}RYW{$$܏f1kOQ~K%1 0_EЕGjj: SYu'-6D]UJNձ- MLr5\zu{^? <,rR~Z_̟zQXwf:]'?O ʥ˳$]x2bfຠ;>OFKqWYWovېɺ<(ߓ肝l!©ͫY-Ƴ/|=td`Nq4ﱮ3",0/ߪ?s'%h <= q2jX)!AAQV? kub_pH_l1f?"j$0{WqL~L0dUnhA8PO9W( ΩzJ*1yVeLøA['F< 2_ #uT +]=9*oxBZc|;i軪g|E{*Bi{ WA=iT\ą7MijtP"guc߁`rL#E$N*Lv4b0"2-ҳ 8pClS*}dɸB g/ dJ%gCqO+@[o(w ҩ{ ˟`wX_y@IjXC~Tm1u!np: (0(RdX}ӿgz0ꊴr^t3lD~ "{8LVXS9XD}̜X* Yfh|1jÖ EoCVxǁmD)Mўd~L<޿nﵵXLz7ϻzb׾+Sf$sg&XJ<@{*bȼ^J|Z)~=9۩ #)n,E\G*\ʯlKenjhorD+['NBj1|,-}݄ 8A/ dXk7r6k߆.amSc_VxM=tݤ%"MMgtkP+ʁh]%/$GgҔȑU[ Y{f*l* lg 6O)=eH $x &t}/,$^CA<Cx-#3qdf}b\_ےL)ٽv1AO= I8 Ɂ :3hҶL!xoq/L'[B@Dr_ֹD^$exPoSBJAE > % ~z*WVW;kAD0X1|c9|@ ^ Ӈj98先Ǩ+|ب7 ūNO a18hD =!u@a7 麨iTS[BrȑF^V0"bյCu7Cr /X X#,a=M1)%x\'iΉmKE1FSecZfC3SHZ:a ^(.jV}^à1Md^Bɽ]L4_i` ~SOKP`z-H+y׵.[#&"ʡ@f*2Nx]dNԓlG#U A&U޸@0>r2!.ܺdsks\J5qPBv7Ztg0X M~!ԇĹjXr\w0hb$C#$QዡyueHiU!U𶛡jViDk *%L.+0 <+[t Ooʜ^Đ$"6K׮ cB,ױQlZd_gK2²Ċh)_JcK/0qӺFmc dQ[XIAXV Ub*@l%K=f1둫>?L(%ے"qߺ9|m?IgNrqGF7&>}Htk06ΎfcNY6W@t^>1);UKdnjwR ѕPV#u8U; |.&ʬVXTo&x{'LE>cLMC36oqu qԼ?p5i&.8F^PyZ`HHŁy.pMqBw'Y;-]iB5@ t+U<2k_<'@h'j $SBi3]dNz-) jx/$I6y5m$^+19$jaAe5Z |+jp+ )3[6;OH&| l_S9!eZ!Pjhd5P^~U| .C`,~9(dqNWl(pqdiޏ kjb:)\u@,jU~H% h`N35A=]=Hޝ!г{ԔV^8ai>Vm@gh`ɞF @5UW]$8e0&` ؒ9;@@K{IАu8פǎ[y<9YBKZQZr~Ş4բZs9^)vfL2=i[Քs5k8~Pm_Q٣&a~ 5}yC?WioED%Zd1jܞ:\祋 @a7[yV0tAJIG56(c-MBDe|Į[?DO)៎>t,. ꬷ891gy&oO:7Y”~CjZīY=yc\+vpd OZHEu0՘,^ WϊRp 6mrJuuԐz},.x-sü~U~I Ӿ@'թXl.RRvu^vKb3ͨ/oxY62o&{ŝ},Z&JPUr'pq>b+|]6.Pi,X5 e-tDr k+3(q9֒{4K2cgF|'>>g)W>ɯe-ZQ5,y>Z  zYeB>627w_IHCn'OߺF0;e0nQ>{3zqKˉ)׿Q(S5XNiR?_j>doej `LEejไtdg45B錒UΗCRE)(4:1e$,3[K u)n|x-p |"ھD5hzB/) {%IJD-rz ͚y@n G-VI==4<,95nDN(_H!OLM/ zŃ/0+u&ݮyPKmM'KPt0(̲u.eC@ކӼ0\HdYn QѫKN# ΌS 05;׏r:џJI`ſ".]kF'IPMoL8O9沌 G1*4E@EAL4GP3[kQMuo([x-.Z벷lvo˯}RU;/MT<|9@b0#.Juz_<|GC>dZU[V`<=6+,v % >9FZ|wu&l&Y,d]<.%͕X!*ɖ QӦ54%`zzĶgp.-4i=}/߄A_HGvf5t81$tj6jtAYtVL" |k s<*U$dN B:І)8  ˆqi(s#ϐ1H }0Ҧ<7_Lq?2 &j2׺uBDF 1l?tZXZad( n8TFVsot>׽eĝx՞h:JO6!nN %!]t3F2y;`׮+Shi [Fz`V+xƼF(KXzGlLRXDDWQ ̓Cۈ?yt`xqXx^YSJ1ذvOq,N*7^@)KִT ĝ Va,Awh?fUeXd WqYjj܁'Aim!R0=-IM7\1Co H*pp|@ޅs]p9hߨ5mo6%,>Cۢk q%dr=?>|e)8^w :yj' ^Hi5VA`aMSMM$x*Mߞ'dN?|P=ߊ؏-18rOȟtH*pɊ-F7J핂r y"GMbKfF9HϮ˥Ăd5_d@w=Sz!b7QuuG{9I:UcAk@,L4HI-(N9]yj. e,a Y']^e\9=; iC%=^ˠh)C'5Mv%ф<Mqb;]8;Pc\hwO'0;:ж؄SK6K> ܐLQ)p/4S{WГ,BAvI0IֿRKl*EN'Ǵz=E1 hnYWUM#}3PvZg ܛ^١l jVGoH֦_xg*l}].lD1qڶ.56-._Įox[hIrÌi2re4딌# =&ZE6 m8.!nFZm#* +DU!̰2:vX [m6Φ#"e7bL),Qo6#9g"z)H*-h~ )ɉLj]?1n)T"I7g}sGj qr'~.tIW+SP3&55Qr~\taBwntvEu?Q*_b[S|D4Q!l ܅$wń)(.b$ȶK-qA:8!C[d1m[5#46ӢYhՕ7 Yjoj{9# ;΄y;W7&-߇,('|X1qcm$KG1 dK.;*ytEyÃ:;nS{gm=9o2B5xu!f1 uYCXu(Zq."pxڞvvM/hy9פƬu@ H& >.VGsBzS9{CtKrZԐ#Чf凪t8_ J{)ei,bx{M@NKO58[ha%v:Iƫ,44*xj(pR$ jbyd#rEA\- KQdˆ?!LG1u"p[V&x@~'^"]$$O;u)CS]YSaLK soab@}buX#cW zYS-Sq[֋ yFH)Ajǟ@(oaNC@IwDKRgx>!PW+ۂ(~a`!G˰ CT3tшʔaҝ?ROPf^ivX"h>m8~y:_oA>tњ@ a6̭k]/2 F.4N'#,NYeR9H6ӰF4h8,Ya vyg_}^E5!GMtSW& )G= w^ֲF~?0b/-zc^*ZNQퟵ5SHGj/`g !>]w(ip*Ƌ(]A CF^:vQMF_⿒@PlZ+CHFP"*ͦyS7E,X߯ոeGzZPVdQd.h:4;Hvj[0=`܆X rN{xzv1ijCUX #20'y@s? tefߓ^3RDjB',1{;F0@D`փ[5t ze9Bp7d vuIr8I p(HTǐoëbi T $%{;FJ @oΓ7.N?7c~wh I?7B{SӴ$SY,@NvKFb,>-lo [NT݋u8 Vx"o[Fx}Z2 ~MGKϖ>YO?̥9 (*=4'^OD_ٛ<(S2P4BxM2h Mo@0L%M*6]ޓG}wH~,pHLqY:04C/vYw*3ۓr0(.Qu%&'8,QD&n[7!âǯXf.PtZn0b+?ۍY0"賓pBIJqBo8\{E&u~^D*~| V)d=XGUP} ?S`4ࢗEѝrS|:VM SrDZ>wOy:20կW:S1C\_Grj!)PPR`b N3i8#ql6H8qqɵm`DfX0M\̓; -H-8W"Z.uTvCPs oogԟ1 bVNUp!ewC_ ֔KR<qIdA f-zɾR Â46da)/ et¸ f3ƶTg"#/̍0'# F3"j'4 /ކfG@~޵Q;&>Dϴ]݋wu / j`~_ew"Q#u |pO;̈́ox?;kMhR({\ޛswT[Onہ8G1oO' ] sACh€ڗN }\A8ᨧ#(`@h7G90Y~q?Mw&i~ d_C] P̞g3Bi%6sn [eg$[9$/85T ?Ԇ@{8OpRiBIS!1t|bAƩm5];8*SO`"^f- '|q4,Q_uBf~:RyEjO=26_/O%Dˬ$㻪 x䂯qj sc?'-İ;O9߃Xk$ϲ;z̨gso/~RY( KyˌA+~VkjL7EL$/RГ]ޭcC93 &x 0D|OehޒSdtNG15TR.zTceڷ2YKeFCMXG Y έ WR |Α"-Ͽ1/=v ˎTy욭]@"BfwZLh9'6Uad+im#†sMnb N=8l>ڪn(Qmi̗N,mYM.RH>TؤXUƍ7&[w]=`(f nI".Eg =zªVCs=ld^hJ2Rq1ߎ #`ǴK)@I# i?jEc yd'TLl_:}6 bjy j%@Wp07H(1n :!n/ǘ >tN}c0|'"*H>ϿIdn|}aNe雎F9;-xhnq?SN棧Bs$>.,yKI:hd$yg.ޡ:q Z[xv"X|#`h @ȃ Xah~ci0Q-Y#|JM*MQ̻sCE)bAa *aZ ޠ198EQ4;d P@\{|a۶6M;nHttFU GwЕʈ}- vʪ+[}.⒥(?M_ \OpRU_? |՛'Y,KP1HIYp6l̪f*63igxI@#I>nAdRr*$q_djJo iO9Eẹ̑N'b87QG]uCjtycnUcy"besX&ISpȍSj+m9rda̟"2ʥw {5%>6J0OJZqvS5IQō&T`U$́IT W+.=pToe!>N( HjqT]Nn˩39쳗==R0":9Fj,671uQM?@r!*\6%ek~Znu0%S7UrbYgӏ1[L"ɁY'oHV%ɹ'[@ś^BrVjd/+!20 ^]"gD9: qeJmwUC?Gc8 :=4:@|;8MEԉ$Lمp뮬F}h"j{lq юę-i6XkR;mJfmڣ`A0$0N`@_wk%"C%tAȍLa1 SCN<+U±v4t}_;UhF%ſP f SOY4<*"sJ)X}iwtqZ\wc3-J_kP d} -p+s z׆O Y֯m`pArkO 6l>&-zج@;Hi02 b{d|5*,#>j5(>B|nm!9Wg3dQLd4_&㇀`zAw/6`-bto3xl4.md)ae JB'@x塝eq.)3= E3>R}n^T \@ zKs&R&C_=zgH8a|&}_8LU OyChf Kb8j6Z3o? T: ƨS XpCdF:Ck?uc+oꗈ5c=HQSTɡp%C~iIգǗtXSoT.0"Gwʙ )f2 Ef(kjOˋ bPÍ蝪LҬp?WmeHQ|_ l zD^֤ / *Yc_, SڴurXxj|-+*_iA ʹ&% سRcޔ1`D$] Y iB)'`t 7TK08CB}Kmv`gtqGV{.DUHbw.HD>/k&ޮJ.0a cIs$4&9D,jO % ~mΑ ,1ljcP\p(gц,sι5H@@[ ~>{U$3 `EֲI.N<ϔq =[4<.'>nMxsק{ߵ,|O%P)Ë TWkK뮎οxOR(O8ߝ77H)T'zƽlvtv+5#52WAvDcM[Q3\)NP&HۃT'T>Vۂ-0"U[Em l⪚MD.HUǠKǕ;cPL<:3IHN@ՆSL; թHY)غexPdkσhQH-D*sP8KQlZ,p( nS*UÎkGd̪IT-,.~HT^ 08:.ʳt8uٸ硉le'[q^N 0}of]{"^JC@9 ^)s ֓pq-kE*RpZbV|?J&_4y\^#5<4F:8ΐΥi3bMNvFl5^$@VBO@O96"? ev-'7!,mcړ{;`'[We^ jN%OԸOn]ȿ$?×d26r4\9]E1q454 $A썯 ̚J"IĬ ]Rn$keyQux]"?̷a`S6 .B6G80}֒1PB ]LZ/xZtU,.S^b lAh 9x=KAyE﹣xA-1OQFK̽2}0^Q&k+NF @}g'zo"?JQp|1/KnrX5/=*HNR!l+VÝH'4Q"m] FB`~N4(_&vd %o6D_#2h?EnUyS23p h >Mbvm(];"gjH*)A9$N]TX)/yZGv9[y~zi/^uZ7FF3S,WVyyQ)lx=p/jOJJلEL?u:С}_^{3qH`=ʘTs & >CAśj$jPU+ERMy<>=Jo^1*ug=<R8v`ln.fXc'y ,al%ȱS%_Ckg=;#5s?4pJSzJ|RԳ,ߧ#pz+. bLW%xRTڙd~+T 6u)m:(6I6_ZDܦJCdf d/)r:5nGD#A@CbGAR"F4d OU|&O .I`"B6)*#iR8:8^}1_FG۰ϠZv#l_q&5Cq1WJ˵cC Mڨq_R=2x(\Mi ޜx)m m.U!LeR¿&*` c8\Litv^V٨$`"]0u"d^KN'o:W:1fCscb/B 8'@yүDB0$7*5`H~u:]}T1{q~Þ}BVEm6nTHGѐ^20bOeEglYlFwՊ4zVNXAvO~ȋ(Q6 h^3lP]؂{?Z'fYOR}aNBC$8 @. 1U)lOE|'*( /ɞN!mi*4Ff˄sglh]ˆHMiO*ƾJX6fMG7-Ni3 ?P jްq b⎡ W;CZT`J Ĵy7 ʭG-?vŲ6`55PL[~#߳3}\U|qdfkBcf7~KޗOVՂ/+ab I!"' ĶpƄL wdǃK? .axk^ d-.xZb ޗA!Nי&wJCnL쬚t\8l B m1Y AH]ɠ9b@~fU4~.V#nj*cRKl8,u]!%`i?D  Ty+l636 Ϭ2reپ5;?gq)`LC$qOLfi'~J_jDM>J{Ww12 09NuG%jK7ѷkf(4Vq=mybk^m={l u]f1LbϜ hHh1{@jsl*\?ٲŚ.:vތy8w} mD *sɰmwqdsrPUO{iF ߊ{Rfmu<繙Oax{BC‹S^YYCTuV>u:ɥ _Ts)b0NeIS6:&XI<0sH `_PfQ8dU> N~5 {j2f#`]c3R t0N6 &a{$L#0( 0Jp-ԁFf`(;0QgawGΔ{om9vLOP0?/*紳L쑃NExȆ\Vا7 A~_tUޢ6X>FdiQP*g*-m(Arۛ\{Q(܄ϗϙRmPճ`rȂF'C$5 ga׍OfGcG|Vheˋל]Ѳ\C /\?{ɐ?v$6XgR)4)ȪBÒvf;z=`4ml!ZqqoB$6 ?D;sM$ 62/uI"aD<9eu jDXƞ t742?$j3鎦HMîzlUj4{#.b{b?Y-1JSh5ި۵L9CĽ7ؚ 9)qmŵ9Η9X.s?lxQP3ZxR%Nqy*5m{P!=NBBjX8C$Su':E.N6!J+.*[¼^FKCHH;=h!s JEjE [rjʧK/-EtI »50mP],T:$9Sg,ؘdODXvRAƿ $ȋa-xYfPNF8{UƖvT֯1eM,m_UG=g=KU&܋=a2Zȶ@L,I*Lƴ(߲XwK(45,ɑKWZ0>mSCZ"_YgߊXU^-ɿ!iL '"6IWɅ}nwsJ"/܃jBaοikNwiGuBDSϢx,m;4w+Etr$&U$9*Q-pGu} O41wJuD-nh^u俖q`Lee֊̘ a=n+5j%w(C2q0/AG's,aP)zH:(Ie ?>1dBN>/:9> ";HKH%#W"</ˍPCI U4te.Jj[:Hs#`2?B}$D0G+z^~4yc3d^$ '2^s$Q6% ;5q1Nki!C+1|?%Ы&ɸ<_)w}2ۃAB :R|#k=,n}U`Nj2}[dze;!Zݗlo2&[y'&* ;ͱW5~P.EО0Md\bm ,d]i}zje܍{K$a.|hS-~vn^DpTKϐ4􍺓~I D "E j즆  !c e-D\eeyCj` ![Hr<+֯ Īǐ۟p(mbl9ouj 4mHtBN^GQ+Kiʚ_,(d#S_*zlЙ8` Q/b| JKӟSqXN9PnQT~VpRMkKnšSu؁b 41Vc$ՏF^0\xYH6 ($7: iOf _-=7 4#3 гuÅ wřG"1q.&m/p\MBs9Nq c~dTRhmWqg)?NaFH%;b=HLg%Eq0,\r~WpxFXRBM 3 h=SApP ~~͒Âcxq9aduU@ߙ`یJm;m@Dwtn`:@ܫ Iʩ'TwuNƒFg`AXO`jt[JQڌu[UW߭$ͽe{HHxc.s\+a{Py(+-0utXrf8~?84les)$Lww; : _nl#3D^?6tR0j9,(6=7DS$O){IԢ,X`C>P6\G& MLKp8c\+s=Mk~ c U4T]LFdĒx//9q>sG/@EMq5C[$@ TOEJƦ5iP#y/\HWo}dkءL˼:{̗Gbkb䩁YG=Uk]LGF6ۼ'1ﮙA{:L!*DŽ dCd%p+]5V, 4 T+ e@W/߀''zo1!q|%=34P]k^ [s[]|m@7i#[3{  ƻaDvmn7`rQ#>") HAr6J33"^Y'K{uD:&ЃzcfPVt쉅"*fh*j^HQYدy ͗$ısr(˔c6QHZ Ju%߄ـbޒ?]S:S+JHA鍪fŗ26PVVN>k9c&5B ל%$(ScWxIY~3l#59ma@$"()Qw3K))Jbv R aH>=o[ȅŹtfL{;}Rq6w>^Ad`7+:-cAwheɗܚG^MKm[Ss$Q XuP ZKaiNM:siUr7O*S3VQY4FCw0[\!M/<Rih!~Kv fmƀ)5vޟT`K,O+~ՠ+TrN(9N-0&;J*9'-G ᯜYc4×{j`p<ͰgCJ/zOSZ5/w+oϓWw"^.7V?ޠ1~\Oݢyc빢 Mb^$Wmc2}Myy.Y}A?N$$mK- u' 32LG =K:+h7G:o* fG 8qh'ޒs@huJm,(9'<<Ķg'֌@i$r.U{n9^$f[aqXVj]7":r81y;ݩ^JrnaWЋPhYG!v) 7GhPaQz.6:ƅܴ`tUBU퍁zl,;G0,naux+ȯlD0CטM20l%AI%O)X3V0=WcD6lB`G o̖f XSv+oN+٭+<.;ITgIiօt wk”i7{ Mèr#ws:9:EqX?dC; "~wk\%ˣ@:l{rokd%cA7oi&@E%׃vVێqq` yD282VQF$52 +MmrE);M䮭^U|nx{"V8޾sAd%a:kwYXfB<2p/i;GL*ıVIM[D?SLO$Mjm8jxU˓].C䳫jwMDRt5 b3 zqdg_w2w CIGilPyҀaPN%"!^^RUZ)Tܔ J.fУ,EM Xw+K^z%ޑʑ2i? .s;c%QQ6srspf,ұ& (g(k:Y؊T/g 9Zd )1nyݸǟx $J9ӱ]V6#^)ҥS2 HLү^̿ 3?"8o'8 HTUKRV06)sR 1zCwcY䰕7aװ(bOBoz6No$ΩH8(3EsHR0lIХ-z0Q&0nfdV?$DêX1'aIK"_/jR&@ S+@S!E $ r"#udHM2E7%t-Z.Q?Q~<&UqNNƨ'fOUۄ+LI_-, T(< 7H;g$ Tx)+/EYotF`T )1=^Spmtcv4ee ~ '/;vtј\W$#<ءglb5sPӨD=Bls Q*mׄFҧf9 te%qH~71Y[19T>a$;2'عnMiٜ\)/M A p.IoaL?[P.`*e6mzd0:h7pH7!`A-DXk> ,iT#I 2.o(c8b;bTF-|> *pXxFE{V󊾖#iN]MT6ЗJJcbϊƢ8ǝkn"d*74&'׃j,gM(~Pp^4Auj/a=NS?[ͷ%v(CS5+F@TCbϨ 33}Ap77{!ĉ%av"] ]c;^%݅Z >SԯĤvau-wR˚/h)1,Z:ָk.è3RM9/zX]Vy{^+[lo^? -\E.gqNKje&GGJkVoოGt$ Y8&G9&AV8[%7OӖL:kw0Q[H%Vef28d.DCV vhD t\"-ku.awjAV#eXZlXp߰'rP?4(BgGr|愞#o@ÉQ,9 ŗUN$,,o;5(dS1\&)N&J1+54\&Ω`Q61!s E^}sCV7DKFV+R `qv?Bۏ]9#/t G$@\X;c< 틏6 2 GVzLn|IѿyE%~@%h=$>\=>͛/֝--؎w/?^,+JjIA5 PF(E Tڿ`>٢}񅯌1%kV/$ʗ`K΍uEhG77uuv"eLt=+>ӧ}0_Ѐ tFsnz$;ll߳0)r/V>cиAʽGyln3pn*/ 1mQHi^}*}NO$u@c{6 s?aЈzO<(} ~JS"ImٕvEnbv x9%켒R,3iyiyH2υ<>$tA M%VTyʩE<(5%⽼l=?f@]"O3Ul0yC"Fb'c-"b]Et8 {H⥜z P?Z#wo7?Ő aFp}uD!E]'}`w!S6)ONұa馋87 ,^kD)*}u-YP"p0Il)!8$484r&Lf7bE/!/Ycj7iC]֌džՀ~O\?3߾m~#|=XJpvDmUOtd8WƢ(`{[T =LZ0qV}:8dʳd؞,k= OʦXX3T/5,^LᮊCC/d.aTpB,&~v׼ib5KP(trPR9@ zSme>c|_Py> ✖#=J3i{!0򚷧z1Q ^,5]x,Y @[KQ.гpCf|r\zXuEC<"i1`C(7X̔Oo/ 95L1W$Z!/'vnP.Y琄u[f&;r۪$3KJyHb!02f% /4Yy# ߎig* ,8*!`G\Eq%P\=cb | )}Bׯ+PI3+s=*]𭊒uF/7WD@3Jt|rb,Exs=v%(q-;kAtPU$BK6 wEq짤kMG?U?v8wia, U"/dd=E5ՋC8K+F`z]Y@l&3 1E+w,RTB/<iuF#H 3RL8E ݐ/ #b?y)-P &|hqܼ\KZ,f)HB`W atU1yMTexWaPL65]G{/O2)džӳ%0Qٕc4, zHv,Ţ ;8AK_vՕ9X[_[ٚMF! %uWҁ ]JXH,$ .h핑 ׷U7phP+][Qi"U8r}eRkDucFCefq$r&eVRhs]R `{ *|n$5`WvzJLo/`sw,2v8LKAYt~/g&K͊q}P뮎@+9  ZP X`.тJ6Vseew ޷euԜ;ktjͻYO9?'I.e5@2g[9DA9-Oϵ=pla`,DE `Qǝ,iL/l%~I3y2~1EEFtUꈯWLMʒ}/l{u{\JmxkǾ;B2!7uFc]XNdn_5I/_L{ʁGuՕ!|SZ*[ƿ:pپ!R) )DVfxxl૏@si`GBhsi $\e(/vq-8 'sv)E]sw*HRY̋jY=9FT4]`;>?Gĩi@󠷙6-{ysl# { MbDX@;'*XCAx(qb҄8(Vxe( s^f"皖*ԮںA Qbp3)Cm8l!֋0gOx01@@槟9:)urݭ#U(Tiz%!CI_"|4adɩ(ڻ]ょgJz+b#/UWz3rL XفVLxoX&B?W enS.9`Dip!}^Ng Ղ_o_'{G]Vq9uBXZvLK-x9{2h͟uL$h=* a˱RI9e߾;UC``{D T_>ژh>3f ]mleFaZz5zg) i_n?(@s-ddH m2.i,\=Jٿš-|NJƢ "+Q 0'{VJ p(cBW bڷ,Y>#c_I\wņ)߶~hL%fl'*r{[U`-ynBUX|]d+pwG1''w H1Zp]cmf+$NL˸yjhWyl>m &ll CGθ Z%Q~6!! :ZzF#|@W<ޓgL!wnX?[~oquɐs?Yqe>)rZ)_{x-Hp!-1ƕ̬ ;݂C3چ.8TBZ8-(ch Q?i2Wtf&_h\Vfd< =u_k&xeb̳. im6? Ce avҷ&Sh`kU+nۓϮO%݋&$T'yzmZD";t9-'S{~|M<]()3 օRDA M,7Լ͔6,)nJ8uvLnlg6 QhynFm җFu: lZ=at#P_ݓc$r,9[ i`:JcYInOi{,uv-\R j g`ȳü1t1B=Xl<#R9:.rWUPz.=ʊri]~'FbKM8cڄ6nX.2ȸ),e(>@-wYGX]PIL4-0}Ek;XnW!T5ÜwLy\+@;tkoe!eܴbacDZܑjT5;]f#'2ȈAԶ/Mmϋuʇ}i 5C)3W6 ]1O!ЏMP!]Kia/һ_PgMpkQwznWQ,U <Ƅ K*lXyfck`bGZXM؁톟 pCK`a!t)`oC??"C x8SDwSTQWh1'"IVIKM:b_xL%En *sGvl[9t!^q3"\a >K'؂l}7:`MB~5HIu=BLGĵ\õϗF:8Hf*J,AGWQ9ȷb[ᩙCW_.Ir%xKg@sC_ۤ`m^=bA62]j=WY8N~Bم2>F#E eSfoPMOVzXxu/'.hf'KKf6ѷlta(Cm'Dh rR~G4p:rRjTcVg'_\P;]wP384)|+oOsy@Zk{NQ_S`w&BTJO Y."2wC #66Hz+=x.[\g=xUΣЁdvԪ-ud֟gzK n}FZ7"}&-D [-h쳫lAq0 t Hi [C_?$ #d1AC[1908q*~^Ä5O?5 /MfGRB%#3ςi^Isz_y8z9Agel" Y(N=!%8KrD>b. v&?jo\!nK;0(㴜HRᔷθ| v!|cLS̀Ql7;gqP?NBf !0!Ca$!3RA_k(Z*%Sz>r]LY$wA_$\̪.~[CB[fZYtG>8}b8^/l&|!ud1蜁.pJס`Äżrm$PO͇Z*X a^V%khOOPW&]a'^7P5c_> 3G>E5+T"9ebVt r/dtE(F y'6q r2R4x V3Jaq\YZ`07Q%eħ I}ɿ!䱣<7B V"kY3aNo<5N3@z&'_6F<AtJ3[-r+; y1BzV99ҽ&:螘/lg-Yٙ:R>ZNgFpbHвB* AIž0 0V}r͘'V XL^d~ UN*Fg1\޻ l-PyF~A/>QxNwm-6-f"ګ9%܇&AYc% Rݦ V' gf}_b*Cy8(K9/zd *} oKʃr(EA29\Z~|Ln.~Xd6.,ˁњ"8^\5Ja;U@IBfu lQW_yWHiVyO67A7Ǒ/<170^z/ie>:d F|Ӗ|%J1".# s/am='io?չC\IG~*_ ~˂ShD(u6,$ҁ+8M}!).a_}{T ,H-v(_Snwl$wmtjXPv[ѩ.Г) (yޔd4s1b1 veBT1,jLe8C,>HWI?h>C4lF boByj5%O1N&RعjvNϥ6 :h hߑwtTSb5GLDb:]mN}{8%Ÿc2M4Aos/|!8./,[}zʶ $%(,Tw\niԭB#I[F7aCB@WBv6ʘhԻ|3 eC؄|=^ьˈK *[N")X{q|lfJZ_m$I¶g`+s֐SxJRpl{op>mJ2G揂r(6c׏; -m*E,oh7} \uxDЦ&Z[sܓ xТ83wx(dPp6 tI"Suk(gaҀ-/͑K|cPzc?PÝqv0ܦ_.5BSO 냆YV.g zI|rʄyj{ Q*[G֨#9L$߷uNY RÔM%``ȟ pd~.E+Ԟ$ ScweT=g()GR&"3oCEѨIsHږeZXbV zIV}ju30]pj?@\8y+dm*V)!qgm8Wuܜ8y$xw(Q]=ѱWB' >dK%ArΰbЮ 6CSe.XI;&﷎i3H(uΝa}hug@E$;UA}\IBp#)ٗ\NpNCpxf"4}t{Bn _59,( u%~<`g2P EjM[:~?ރi <,KLDpxǢ|0nCpi_IB;s!fsAX-r؞95{$RfXDgLcrj%G ߨg)=E:MBTt݉ maS׽ȾiM'c-9]G%ORs Wf1‚}.f2='=ZiipͨmvvlyPz25.f*M*]M^$Dq:;Ôδ<\O6topM_0.;a5<:Y}+Oj^3 ItY|,:8DWiԌB,eG?]4[Iy2 OX;uH.*:.NetZOɫ y}g-g״'@)(L*|LMp KFy+/sa xU*<|&S)pxLQ?)e3nSL!E&fA%ǟ`gЉW;w#;tSu>õR +1ʆ ;XWZcuN{/&&vНDuCURy}Aj8|0s:§d ث?}WJ YiٞLpt=E&'?OAK\f'!y4,AlP6G-)JA]@fUe+fJȻY%o˓Npm'6lXXb0r駖EittX߽lj[`ԗ!$FȐ4j=inҙ,z]ҾWyއ#&K}J' ]zK$ݬY}_s${n "3u7Y܊wp(SGpPZ*z_Â|(?+AпH+,#gWt+Ljjmj'-(x @Xꍘx;Nl<а4_jУCI!|!;p׋ ?ےU0,W> ?gZ.ZK3AkD1dNV'O![?ýN8Ip_ ԧ!sR}y\A#7 Nڈ7wFׯnX ot~m S9/ Jeo-s.aΔJ>āooAĸC);W^t^K`b>TP?,=^Gb WMPAe9*MV|oRJDۋgsqkP]=7DM|~44gHL$)vA -{2IZd< D Y<߆&g_Bk5A:#lWWN[@%21lehtY٤"-u#Exȡ{1첀?|)^sյ͋C;O(}Sͩ+7@g^Ft3*$Tr5Tx${2w>˳o OG`@z=eM(xKF gё+u iJ'npxݘ_2rT n.aPcWCZ%x'1z_z㍫e;PukNQX9~Z t"B02"{ZsFm<}i+<. -kɹl"4Zw7$6捪ƙۮj#9D)R3W:eQ˿ENl٭MPFM40]nB. raQkq{VVĪ3SЉdeov>!)[̖Qld! 3# 1p2r/ڸN\vT)^wwPթ%/{I@hpM'ە;gG PVxG\/L˝I#N9,pP9Wj[ +Rj8!Ҕ[{cx@D``T:1`Y0_\"tD74ZŁP[؉(= C-! NeM>R"$fjds_ m# oi*ˎzW:eWb?_  /S#[91Yj_,ʻsݙ~b|5#J; fr*Ši2 Hv9.,z{QTps@ 6"T.J*&A%`  VG'xpGI֊TRc|-> A Gk0?;5ppۮ!)+>kR߾Te--GB g`jB} 4W3dy8e@?~/ 1:qNAR=PY|^iԺ"L=1DN-`o#W\"aSZ+bx9umt)ϱ#ͻH:`DMd$Rf4)^AL*GrM׆(O40ePr BcՌ/]V8YhKL.#$8iTsˢRpCeQ;V .Wdtv_Vpz穋O[qzdLl!pzU{!~XQS)ҞsuقUqTN'(+jҹ~M] ZWr`uIZLgavQAI`uÁ)煩Ի]sq;}ఙ öE!P藜qy33 _xF1UT&.~rCo&MRDt\bܲmގ`H’I*A֌h;W?QF؉B'{s0aS@hSC:@@)t!;F) ôܢ,hCr&h7S=#//Ey`,e|Gl:zthe T=1@gRx ]0sqC{zt#T0x)C ki֋c*ͫ ) rLj#Z2W_7. :MTzKL1k ]6i4ۅ:W1T.i)1JcB `Z?.9B4}!PAZB{%I)v.pY8'&5^i&!rT{_(Mgv-C_3feaAۆAō:DF5珻ژ>o&Odu~Axo$l|cR7J ueuQYUkx;*|Bft/DBx <k+ fHFBc`/U fS|p {AZJoEtp=}z T08 47_e8uH|ĊmX,Cvζ6cLd)uY7 :c bsJ ,`'U?u9R,e*Mxk?%1Km@H|49,@C|ڎMQ(K̿(W6?fSZm;I{XȞ}H˳6%j䴱yJ*T!/PʘIF5 S~aG8~M jHeaFN2sc1X?2 AQB8 QTYQwvh`Zw|}2N29- '>H%+- /~5tKh87c}Cxv=d)NKuB},!Sc9;+tW[Z䃄{ĵ P~J#pPvb))g.h8:e AsB*%| 1ė)6783 Dk}wmDچi\):pLY Yf7p O 纃3~>˦h~Kj>81Z  Z?!`,gMpZAN"•tԢBcjf p SB;X9 P8Vy[X_s 0A9b`_M)9yWu@ kS Q 5?aG`y_Afᰈ9A}"3w A L$@ٖn^KۅDq v`Y8c.r;&r7k7Qdⰵ*Q=T0AXPFcJ u&¯\?}&^aip,ݽK36k9:ĺݰfS9'δbm$·g}Kf ̍ZVZż y$YX?ArWyEC/֋K>.Zsp+FH/8i\ ZRGH!Jmqeƙi%+M! j iY_s-ԳB}4P,(<@.;K' 5JۢM+|kKʄDg H7o~F^[/u@ꚕ'f\]V{u1Rk̶ x _Mj*^g'1\\[^?/,gbcevY|69<%kTw|\׿LBCghj:86%p=ǮI]R.kqa.Ǹ+jM1j&SO)&c2&Zd9fjV}X3>#Re! (j'I 4;rVVA0`B"JsY o228DT(>`\H^_+Fnc"(e>>)1llrUY2SQ }FM۞>4@) Lc Uxh+N1(Ce[Z$.@15FË<:X5N'EqdUK9[0OXoem.޲0/~ VR0T~ ׇDmƔ4hO>xrT;{922@+hr?$$es#FPA}ۘ8ܿN?Cq]vIM1%m>| %H-ܾnƆBY/ pyYE=(xF=se |uE1/Gشqhέ г ;[O9)!9W\}0F4AX %Hj6{,E0R#3 WŒΑVV6 =k3 h`8R(9\4>Xѿ>9!ꥵTy29H N-nǺ:Rd'{/>qAv;Dڽ0 qĢTc3em!i_`/ODGMA``|SxFYׂ&7aKVVy:=dhk,(}*yq50jr&s\"{τzzJLU.!`1+6[+lYpaB~$=@CWpLtZl*3]L:ןmqP{.?O~CMtXOEZʙ{WnNYR+[`!#{rSEj_lj֯R|V}ui`W+ѷצr崒x?L:jA\ B(hL /~xpEwYPp3䌅>42I2!2-{rɮ=γc`&ՇwUct.Mؐs]jPp0OCM|IfC~ Ʀ8UA Or"(`Mzztw*qwK=;r*2n5j+g|QwΧ^KQ\5q pO`*8-ˆXZbXHKL0.LUx@`H)%X^Z03qM˦qh̸K3~)g{Lf'F|xPu=Lѵ"G0_m1ҋmP<$ D?XA8-JB[ȳVv矝 )Q*-.5&ç.NIZ8.htɭcd3A`:rۭS(Q꟨w)}?\kkބ=!"DWKV2௛W|MEV,*|2g?^X~+1nKuq6q8 Kw9 ߚuc{rZd_LQIm ]?8GHzql.' _5њX1`Go0yib#v7w\hOf$-ϝ!.8kX.m_#0b iR4-_c/ٚ X斷HNJ&rM}]N Bax\{;Za;o~_t 2on[ x|hE9M9e@0QSuY5鹒B ţyz $P& wW@ ^;uQ&zA@@B@  H  A A f즴n :M>K2nc5^ib^7+e3?C Bxs4hJ>e$(X7[\ް_ :Tg[PV$.|LM[lr׾@-\h՟;)vź"LX8Q3_֡ow;ZfT9^Jxkqq~&ΕOJ#‰?6lX@xktEdEPWpᖱAȍ]La`UiAr\l 肐LQ;6eTIVetO!7tFXlV΃B_[5#O1ZN~?K6z<6ߡE0񚥪T!$y ƿ_̪ һ&h)K[8`&x!sVcgQo_=2tzCحED#"6{"pp^'fY Cgp[KtROԸlW}9?wd[ +|4ltP4k?8i.kTȏF*كܨ'#x}-Be^QObyH"іW6*Ȅd=1\<"I& +F N`KuW-9QcCtF)дtk #}=%"eGkZST.~׈`A0J3ë~mSCW'B bCnq֕qqViuolwIsF!c$p0'lra辜 NZnm*Ǣ)bѥH # KޢgMBӺW+%%+y#=-E v6_S6PJ?E !.}~K?Ϝ),NNCĞ֖sFݪ! ób9NQvqH@v)w`Ms<e\Km|<މ WT1=h,o@Oq=-{̦ʺ8/ؼ 'hmn)&?*{=qf21^3q?4|q]Z42B.bMdl$M 6ʼ+q}sd{qF'ؖM o%Nk~H³-c?ACC/.ǹD2]l+Xξ%!Q-Jݍv"> AIʼfBPkh+rKtr>}p8 -˚ZwҎ͢ӿSM900KMfrOλpJ\q| (EUtauM~*M],+_d ׳/?RCO=MzF6ojKsk]x`{-#eБWj%I\3FJ+ҢP,~O㚬_)vPd4B)VUlg!Oo(S6hw ȵL,Yy7 I!8 .0 )ͬT8!}]3$ͥxhDrHMgŇlVc_GW\Ν`09<5DnoWMWPߡɦds!##R%Տ ⚷+zNFǟda #L`@4h=T=Tsae.׆0&lH* Q Ĺ)eGF9!溦(%S@*qZvJh@F`>vfl~a>^^JP<*!GTQJh8co!Xĉ!#ݎ"E7PtyOM1DTFÚ=A(pG h$qMdLF%{,ʞB My(Riڠ羰P3M$Y [EQXpyh'xRCu [ R e>1jh$%nD4$ .g&g͟ϴvY0R-Xj7ߵ]7klÄ`bE'EZK ʛB|CoL[oS'd$X>{UMCǴnH8`꜒ˍ~=cC2V$ 3y/m3%e1zNtWn<b`2yRխW:WD_\ g2 1**2Cl5|&}'.feMju}աFZ2;t0\dͯ܎$aϵix?wuцg~;Ghwz2WJ,C74Kdz66n:=n1ݤԹ2z2eCj_ֱx7Gԓ(̥ͲF6Jk1>s! &?|QZHPʊ)ѳi+DUHˍq!tX& Dgf`pӹ#qYHn _o̺]<#YEE"@B͟fIvF3\So[l!Q9= D\N2lb K~2A+Gk:tpp}Ke-ȥOD KFGq3{0 F8tm\qV\9,F'd2SYA"r.`u:Fd21ID 1c~3偀Wl;TT41RV7=n9]j@lş_<0VE5VlwpgvVp5ؑx o EdOF `N#>p :wT}O6"r1jdw| puF  m`":I*AUo?x+b EFLQ59Sm}/TTzsU&]oQVFY_eGnP9֭o߁nMYBba/ObYB][NFp'^ɫ^Ė hN>x4^>(Rlf#Mjҙ_aC( 4dw*Au Yt|7)uhSno;Q#LA*|?}xPhOL ܮ>/;H=8w8#cһGx(˧->q6K1Dg(yӻ+]^.KBP\{fzSҞ#զ9~=ßV˩9ꤻk~ 86J#S OXH95:> n.S~*F5dmsE^c;wF( 4x3ٸj `NbX 76ؖ.G{gUܜFwx#sr,8s߿4{.ol(AAlOc,'2 u38Sk’a6%1.7f{+| ) 7>sR9]5J^32힚 kK\ |>~8oɍ*ǾmPrpUq^bvo3@,dʼnsb^>_\A>8rIq)SvH/OH#װ== _ttMĤ]\9( zMsV%wEX( „ -s:Ufo׳3Pnrgp5MO%lsM"?'w]ۍ_t8.6Vdj7nD*T%$GܷѐO A^aVȈ)A]ď) F܈fwrDá5qɚ*N]^*`̆}Ms+; "Oky/FLy֨%xeʚ+f7)~U_L͑چ,gj__eI@γ=AC#Yщ: Lz,bb34/ר"sk QK+ (+^#":6ǨxK"DB]I4|b=Sh֣ob]  xԩw^Q(6œyOq3 ϞjW10Tk>?}>#Vo>[@9;t'UQډczEa$Dg[*;Z}Jg35_|r1s}S?F/wUj-[qN *#D‚](fgak Jŧ~T\?m|?%j9!TLO1H5,:hRh>;cLʰ6vqwUPC{<“-U-en~Cwgv ]t6g#ĪS"}d! F˖bk?nLzS7e)~@C0TqΒ36~uղ-su$LbI! SфŔTH0˄6JvIn)Aa,% Z,8Q&FTTD W]2< .wA@^1z ~QF3ZÌj0F珓",X=(eQeWd/olK\y匳k_ߨX-k׭a\{7H}KVlީܺm=g;))zFDoXs& >efC= $*Z}-MntCu]B&>m%Y3k4A1RK2xKs&A"(*WDҢ(ݤht-X+t甗J:7=-{h"6)h s˸,( 䋻e; ѼB1m{jh¡iJyϽH7 ĂRG (UVo8*k`t+ߛ5d?H'4 q)qjgB--9UV62BJ i]rl6O/S~N롏R,5 ^|\ Kz-gVH{0^IRH[EkBoB1gp+ߩp'Og<&C[$f`-ֈZW`YjֳN#& nIOe13:o0׆2Q֦jKUռ4BFV2=&9),7GhbںE4XhAe{IRR?%D̜˔D H_PE szkeQ~`^'CԭY>b"K^M_a=k A g|$pVgPb~x#_azShunXitUE?cVքI.awc,C-~yd1ېׂUW ͡ |Ĕ컨3Ǽu"Mvz7_3['>经ZQa6`4Mď?a65HHhg _4Z΅xlg(QבY51h"~K70 0D{"!A' kX=Bǁ sfZOX>%30y~RZ/Q~XK3S1~Z|UAO3f#Cc!4Bn{M.%O3sO&L;3pt&r|FYhh޾h0p.c尙(A2߫RX B!4]s%:+SVۨ]InK&oaQzR2]Y$B䷣3)EǩRYPZsaoλ?!Qks<7#sߤa4?3Iu0k*%?^E;PaU&ck@ "RL7XAdCzw9 W^*zWN@6-;Lc1εvN"X-L~jm%kp^. mesex|b\:gӧG8!1'tjmp0Y*QMCX0IË1Sw:^]큈3E_j([ߡ(z.@ZxUqz&m{Z߾K~In.wםO,,:K"fjf}wBQ$䠾qP-+ovzlFߓ ݚdsa묖y N7]Σnht9UN՗F\,.)spG̈ Lq gkmރ5{ H 3]%?P$' Wr{HYjZMo cΤMMr (TOƱi-Ӹ*kWCd K a=pqŀ80dJMBe#3P~S4.O5+#2P C?Y@ nzL9 w*$͟x|Z8LX /{ό d8,](C3y14& DddAYH Àg ~'n s^=q7DG]wd2;Ⱥ]xQh\E,F 7 LmhWJɂ; V~1ɠT' 5 O 3U3)"ayE:B3Cw } 㕲zCr:9oqꎭg M-ϗDckFGL.=P8+%]1%[풝o"D8֖2BA!ovl|y]89e4?@P`T6^Y]CFBPl~918{n%Z`$5+M.PIN]/f}mBk: OsT:˞΂k~P$/DLw8h=房-@K!! Apw#a>, 0* Zh֮WB#Ր{U3ؿ7gfyfcPĎU0mv|O3.پ.rXCYux30kxzSJ$8OT@;WqL =˟^N$-#8PT7(e!" jKU}xx%V dn2gc46,$0]y=d#D^H,m Ϣd'2a[rՎONkÕgA/sK7lA.7[Ft%;Mvxh96 !f(ul|XшA#uc%?\9֞vcc&D1.:fP:Ң+]4Ra x ֐'|>W ΃X`ਗ਼;e52GyQ0:W~H3C`wO+ ~E:|䘯#'s,Jۓ77;B/SRkb/_=&[]=no!c`5ё"j؍cvG<XgPͥA3Pti m} do-X9z+8wvݤel^-}1! o] ͒2A$ˉb?OiGψ5z'ڗT k[Ov<[g H.qctWOIvh+5/g6,ũ B*gZݾ>ۃ`XHf[z% rv\v`o4դ""}$~SQ!+YmAzG45:Gtf]6u?;%m6]@~^JV1̐wn>P$wFJ5 x$ a /PKD&cY T.gV`@2 xn(_ .Aк5}Z^ ]Y$wPme~VgˋsKѵHw%,7{ vKG?Xq1~-+Njlk4/ C,]犠~LAl ֆ]yȜ&Tq%iKl(ڲ'2s^XuKs{!uIQ`rdkjLOPēK!qj-an8 (G'>Jo@miBszEX6uh0AZښ6Mj?ſE;ⓩq,+<#X \,ः p% v-[ثerVBSr[[`gf- .@l:I\mi9[ꯈ!,rE*0Òm iiA&ߞ v왇0QrAFG$V-FlB潔k"UN.Z·! h1k9k9V? i_T8K z?B%'- DA)hT!,8 .KwTd3Jc-& cmzi?d݄0T5JB OS7򕻸X3cN 噈eWa:tXƩpO%x$;Tv)A~`yHeI6ZC'(`w?QlsZM7iHdr g(00*L~mw#V' {gOϦy|ク$$Ң\>sǎT'O> w.lfL\h 6M}/OE >h$YIv DIDיt@kkRХ._NFBLH:,@`" gφ *믌,@{spzkYrXd~c0 }S`뜓HbII>OKif@#C{gPvIrÄ~]sg}vkY7@%!e6 3w5r6G|>qs@HRb2vyϗrB8 'Guud9V{i 2( o},~$F[P[4xlۦTxVޢ w^J=@wzH[\y6/7W4Ș;vaN!Hӊ-IltHA=l7`3QȆxZѧǻNmƯYK6)a   &?ykI-:2W/T̪$AYQx;1۱M-o$ͬ8U_rG|M ,x&sڴ ;jJN.6vF qg6h 1g7x'f8Ҿ"lT%Nzf'b(ʢf ݙ#U\G,ѫBP1t>Ľ8=>}31K~* -FX4^(-qs5*]69D9gQh@z厐 ` ԰+{f]U͑ xe#adq"|e\s dxV`d(QƸcj]z?#m۽fo"HW~d&҆D nӉ==C A Ы)E{=nq3LJK UA`#C^q {ĩ%%*`)>mfZ.L3ѓU}aFDxS8_dѠu`t>R652a/UfgjVNsC0g'!.gN^`5qNO: Ƭ,| > pM Bծg10 W Quiٱ"Eݡe6vg?mQp֘f3-(@4a0 y$Ұgl)W2tQ$ȗA w$H5=4fpX}s r2W pv 7GD[AevlcNzɚk( J }uQ= yҮڝ'kVQcy~N.O߄& AٵBHp\:jR𒯈6PTNv#/=f:M9,%z1mޅw!=M ?Б5.ӄX6W]{Y09rp)O/{lxZVui8 @1! /P5ҍ}7vFgv?*?RP5Z_y1?[ɕ(c*vNxp=Pٞmdk~P'DPK!kt%.I/ŀn옍EűʥIegJ TIKJ5w_%Wvhi}xĀ 0% WƘ3XN,_Kjhb4"U܍%;3"]r*oLS.Hi Z+<2@!Ψ$\|2+٦>P;"1j$ 3n٣#N$0us8lCɰVu"ѡ]eAD,cHBty:@},]$:\kpo쥔؟wBW/ ].Z !J gW dBCDPj,ҁ?p1$ eC;$ gF XArq 󤌔2Nq0&1e~/L@ O΍4(VnQҜ1P?F@faND\H'FŦ#;(" E#HW9V¨y6+$iJB@2œ ͕–x`U3% !<RV:;:-Rd~m gr§d JP.K%ǐ_E/f/返RoN&UALnP p@^iP%R8CX > :YB_Cҷ~5Cod H Y`f6# ANCC:h-AY ؇8bG p]nTi1%ްgIva WQ?9#Z$tWN 1{;P?[.$.7b^?`'õT!Ч~IDydAʓǯ;!÷|)hy c yaX 0 }HgNN#~'8)R6?11 t,0nY.HnbkVTm\]3Q3[_?pu8H\կͿ#Bk=Km <|cWC_3 | RP|X tbǽ 8\لgw6a*&"\[Q!ĹNwq:Lf%\!?|@UD^Ns_|s HM=JWfLKc6%a~Xp+qәT<%Q:l7;8 + 0zmic*]u8k呥*ĹƵtuL\Bm# މ,=f ۣ7@՟Hnь%p@n_FChW2j_BUSBlLO@;M۱D@} (=d0Xi 0-X@;[딝Zu6SO'7){T@ fB( Q)C+RzڧYEȈ+]| ܼ+@[X 0s9 |.:BHE :Rr.vJA[1Cƒ' Ÿ&|Ŝ _3q;D8[ùTsap[ãɧdBP hA(4at[o%hA cb2J̞(o6s[ˏMA؀+gD81@Ia9#-t$6xvE<%ࢲ8;ad3@+>P- pp  fHQ:[KiJ[MqcH Vc j/MMĜ$p{=-X#!@WI{ȱ!ϵ̓ 3DD{؁5@|@sP$0[t p#ŋV$6YtEP@2P@ZW BQ'AZ(D8U?̌8ZN0]w܉ErlKF2Dx)ƻp^vYWErrxpIPH$h+$! 5cz0% @/[sIQU""cW%0k5;kHf>V *֍)%feD|*0$-ogj-;`! s,C[PdOC/2ɧ7d95C l060Cjq8QXŹ91 q&AP$Uys2@J@3Q9iČȊ$e Rp~DHB!nD9 i" Hܽ ndd( ͷw~e[Lk&Px:"<'(-x%|CD7eS+L"DPBS$*N/q(qq(Zud7}I2A!$Ŭ2'eڌ|=G8t bp%@[j:  sIf\K6f3D)BEk~Q8F$/X`Y &Q5`Y0@/PYB R $Rnvt0</ dێ'f}RW!$(|*"ʂ vV+yg{8 ׁB- g Cϕ! W8XȲ{dh,`IX,^Y (tʃIЦ@ "v1G&h=@x\2,cկ R$<\)LCRV03a  be\1R]UpD ńiP((@(.jJ!T^Y-(4R0#[6>bM'v;gR 4xҋ " à(9gNvc]N2"6a_wuY> !DhZVNbE@` ~$,a[2F$Fp7,F0%gar05b; EE䠀@eG"]*+;g2B|KL"Ԉ : !eHP7JcЈPB },] l >@W+|A,(I"%، ͈U+Ni'!4Ҫr$ A3k@4C@` kdT9T &꾶h]6)D@xЩL ,D(O)Я] /Dߟ8P\dNC7#JcH y/+ޒ"]DQ&B1T$v,͆F0Zy^1 H:hNԐzV689qZ%mKѨ ->2=҈:hNZj93 "#?x5I }[YSNJѬpxz-P}KH((n@8Z3y 0x)5ܕrED9s-wGVvVz62r6){y,&Ctu~NwVl$cIȰf8pl0O(,_Zx8Xm\#d^+KTiSWK ,팉L]/}Yh'Tޔ*bjEJde\BwN.Z [;1/Ibch,X<~/$rj4+Ll{xx:JN #g-{+ln+$76<^KP3mbhC ÆB=kY!9#v(`E\)`xe'>R2Ҍ|kٽœIJ`"vֳjq b|}7)P'wQj/? !Y= O 'rO]3x{O{׷͗Q  B/`q IS<(Wo .ca=Ĉ=r&*1",H ,2rS<hm?G>;[`|9LQ8;g*QA4+WJ c JI1VrL ƎoY"D'p!zdswo;FŗqƳRKӄR`|l *fk*7LI0d3@Bg8(3F5KoSx< E}gaΞ(m_s+Zk+>9+҂3kVLc8e yiu ikFJzdt=Z-/4))-HFjG=Va?,IOַC!F*LiccXe0#Nr:6ؔYR袈e4ApX.\ÎMؓor3Kr$YȧӝRLy:MVY@v  ṙ= 'q_Y!"756OP#8:kxPqvMNNM8CocS#U*؂Fo@tc7eGwU$V=y~rW~kS ~+ <| :P܂Fk;Tq9vb:vB !SRȕ a> $0@/cT &$`h xFEf(JE)BAБd%-GHF"}siZYu:KzC>a9>.0:2P"IbP(M!j ?tnCf4J 5J{KvJ:q9(Zd\}@Ii%F)d0x;Fq >>`q2rD*f)RD(PJ Ą {<&'K XR_@Ȅ"`(0g6ly („#q$>т#0=KĀy1$M@(?P`@ 08Kc"$ =KOı  K$Y>mUAaJ@ue}'D'X@O.{Iޫ\5hG[4-b$Рo(ih$[i?M(9գea3`(0d(9mJ`C &SA@B0 :g7)( ! 2㍤ VDS9o%.~eR2[HA P^`9{qDMťk Ybv`Y0H@l*qkD@ $NK.? ȣP"(G ]"!RNaWEޘF/0I CbrdWh,Opd>}ĔXFanM|6P! ŰN%#Eq\E^A$98#ud5ly' t&U]GpƄ!|'0VDt~Tjk4& "\(yDJOHU_߂ S5)|JP&'!-[Q)&UtɖD]zD@=;௻:肀pA_=iDO'S }aY߉3;8pUAA66O0sbe@XC-HB8p .z=+VM1&|\_`TM7GqIk<|¾N å(Bhj M)bJa ]VŴ 9  (, ,`z_@ X:fRFZX "DLZie ($'n 栈F? ƚIYc)o)B d/0moa XJvX .x Bmm4~E.uK/6) `qoA ꄿx93a|LJI 8I˃ʥDYbgr?9=k~/t-P1Nso%daO"Ll4D}z1䩼NE8)e AcRӖ`qW #s+4 @@'b{/($lFyp,Nb_ nWjg^AᔭmX8%3hio uL\4àk į!`jMY$j o: ꢷT$HÉN (b"F e`w$}"@DMK@̓,ձ5\J ̦o)ǀlޘY+gs^F$=-:@\*;>`Z )LY4" ;d2K@/Ca"(Bw/tr}y1݂1 GCcHp2#@$nZ#I2(nƢ`f07%2&<Kl âݸ&NPDil/H.?QOmeǤtsѷ|ŃZª yl)9匟k0+uPg P|JY@L.KFkK1drD|Ԥ 'e~O%X90 .盋-nAq"@bsB7AވM93"uM!^l#vK f aXb@h2!cU9a2;:O< EJ;-AG"5(w!3 D7 _(A׽?~/Bc u @0X]YN1*dG]vg;wWs9$i'?0f0p3uftQB :ܞܠ+̎=!NGa&[10 OBtFOI1`~ 㢎7OdH!:nǜYRtj >BT0 H` , t0ϙ.e Ο[1B7МpE%B (=Nr6AګuR%BÞ>Q8 w ۖ2'5ΊP$l,B,HC!`C(l"_&`; HD ŗ_D ǥ$! #Ӝ .FS%8$Q?}>'8A]&* -![&YFJ 56x@~A u,s-C{ aELxYC,(4bﻚ02q *eLNP$.K3.RzÃm$q_SA-?\‘/,+6xTV+,lbGd6!iرugs <!ף|)yDD FY?H7\*Ǫ!E38-X>lzᐂ@jEAlgUXQ |{gTO\jϓ, BRCi Hr!8]'P8櫁fLQfvOx] #$p,DFnr$)o_= lVbxbr,bgؠZP Սw2𻣌"B0%9D(6QH2{Tf!M2_Yh\Cx\]Jw #'=i:.™Xg yObz@T(W2HA/Bc5@J%d`˒k!2? 0!O>LFC>/.IIrpR!!8 Ƀ8N[ t Q6«`$F$] GBu:Lx{A$'z!”o vw\{j~O7@P+CgG,u\1 31n ~A#W6]!'(V TAB#B.gԝ5CMm,eka9v?l+hF4aOe|]Rt.O^Q BnEy$br-pWiW2̈WVMXг0=V(jƒ:fޥAWSΤkֿMBZ DzZNp>&(%*og7-)F!E \B"j.p 4C֚wUVjSAXj]U1ƟGLB}L)=!v=uzRʌ_=czhƷ-\c;);+p_4D- Hvͱ/ND{[SpڡHxAPc1@%ogsNJ&:;mVNo2/",1~ʱ Tf;O8{ⓗ,e'y@3:&ꆕwytji [߸}NxX賮XAaCsӜζٍz6D(1M 뚖!LI^[֝Zϔ7$I/0.y |s "6 786mdGIT3NIDF?k{5KxZ֋bMg }>H.vV(8iG:|XMֳ}ZgXFI>f*4[KR35w0f(1ylqΣFH 0NiC/[hMN<ʚT}'ou7HqP4*A_bfZSI61.fA^ KZ9ffVr'QV_3X ;(|2IP!LAc*z 29ĨZFmKAq>L4€ZSVȡkfMiИT*F6jao*@8rgB`3e'WJ`O[n1c[-\~ C^7Wַf8΢E /3:yx&uqLN͛)B5uzYQT20=18kFJ(yUBf'XcB#|a1p7\rt&h7GX>;a$1e ~b,! A{?ꅊYrB%`Krăa6*^ׅ4TOXrጂxID5850{ zOTeȐv.HOZF d}̲y؁ !y,f[!=F4d9rs2BVÖbX C[I쉦 B̛,R6e(W=e + T1-EZ9d*yC|8IDp6_Jsv(a5X&ArB; K"?8=(H}U,J`ȋՑA+[aN*?EyZʓo&aL0ǒ% 80e~Y~ eSٓVHa sbTpZY֤g&8/ϨMYDuYi@u"3OV7fFV)bТgD$IJ5q1ŝ-vxs"[Pqщaܑ⑝{ic,ARk-JOS:'gJ !<6tJ+3ʀT%Kλ?Ӻq/cַ'!o'*ڴP&Or\iFZT.t,d2&B}pq++["鵙_U@VqՆ pwB8͙<Mݪٙ@ 2`_G{|%;wu˺}ョ{wvu^zwzo}Ͼz}ݺo}[_v{}羣 x m&m`&h&   <a2`zL# Fjiz*)}>!fُSif{B~w* \QHTcZV$)i*/}(y_xWڵ^ӣe.}mm\sVAff~5+_a$&c;~Zb5ߞmh M*%aTY," nn6>r8v|ruC뇋>bC^5bTSՃ'&r5%QDz^ +1]%7JrB-iJhq'S ©B\H~*>"DNpisL8ɗ ztv\m;,=Td$*7zj3 W(O- j$ԟi8} 4[}ls MU'm Ing!XUg>k{m|_@w1)izsQQTF*ap L%èe5SD&C/m9[8.ǁHHĢɱkӖWg==_շ qJ8`T4>JKnY3 [7nWD3?;5tSIzL@^?] +ŝ[4ΚqwU,'7MTjKd2@4U-A3$*Q <4a)k{Xۘyh\?4{ ˯1wLGrSAĘ)#7FsՄ1/}P+ʘ}dTU͏cWkyI7j= !^ : a0ktFoFZnn1>-+*_<Ҳqݫ1MfYHHZsw[kθr?ɾ0 ~8V;8UP_ fzij0sZ)Ɖ<(n =7 ܔ - 7!!ikO^(瘽k˵2)y"m4Mz%2`M_2Yk[ 50+RlM3ZcCQ/Ҏ!9g-3"ÁMTR+gG.crG@+D|KSK%g,Jhl'5 U? Tێy~dl"^x"nޏOl؍>Q`XgGAF(r"gFsRIǹ;hy,qwfk1gGњ +͏5 Q#Pj>O 4&Ⱥ~ókY\ee}6NwgXߦ[ڇ}>ˀI]#$SF,\gO߆ddBHk`, \u0IFŗDOhOK8Q|#3ėoG (Gt^­mRjϠfK)'ۃ`{S 5!XgRN[mTˆA6Uv[ô++8[&Mԇ -$8|ryJA,F{g#2<2Ef;G8Ɔg#FYH+ֈsp戆gjRPڟ/E9ve}9|7;(˄ז,;wjk2q!_hژcy9Ҿj),j0b2Dɩ rl7nWVUcoiZcۼ61W=Cf" V=4V Pٿz֒.1e4J/Q>qqO۝}L$lI^(=[y~4eRNJVoy器zzpH5\Jߤe'` ,\0PߡF4HZ4*E5w@K%KȨ)xgځ6\՜._ M:ŎYԉX<$0~c2JwCvd!xwC%âr k豽}8ЫUZ.r+JqDp)e(V{p%$d>3Yoisw aQ N`Y(j8%ؾGnޱNJm4A~L|5? w _) n)pSND0OfF }+<-X;D&,WCN.*n"m6&A;EcMAtyejڮ@-s0Tҥ=#Kτp Ž Ņe8m%#<:]t_i=dQgO-hY8{Sv2z + cC3¦(q/bH_=n1W{%EQ+Ro;?G g͐a|Mx#MBlYhzzK[#o!BI^܊&h.sYIˤ8Ky28Sɱ+ mܹx# 7G*0X({i䖕!vo;Y:!-&N_|q 6?%o۰b Wlqr [F`rq6KKs~&^Ne\}9e}q#Aڼ6 5iYcbڳYQS)ܧ(Yڭ0V0:ĶY%[Sp @lă;[q,j[U)#56j5M"3e Am_|:cBy@\Μ?/c%܆~"_eZ+;Z|9zRɍ}* Vr|tuhQeI05y(A|oYf+UWo^o=̤QEopv۫bWx)Gqop'[M;jg'kK("rz vT:Y'\rSu NdʲDA.xbM nұgi#ԤdӴ@4m ZV$RAdNLaiי©Z (] 5=JΊET t} 6:6#f"BPv+/_%X/cW g}) zԙ|q^wL}$JĘkOwmͭpDxEgmi$nI4uuDh<[ϛU4w'5/np*1)X"*ևc^QqiB%])'-¸J(:BPb p7P'jjAhGCrf%qA̢xΟظ OOΏ#imr8ͼ"񇘂T+J@pmBKt }('N̓FU yW9AӍ갂.=Džod;6_ 9݋Dׇr MfM]Lؒm:pW] !ɲчb a`JVE AA۱ؽBNutCK@Vo,)ŲM99u/?3wphKYjsrE\(>Ƥ rPK3$,#Ѣpen-ewW-p-m4'IY:Ʌ{lW?R̋[=9xVb*mf4q;=hkΒtrXbl;FI@Pm G;XhL`~I rH09>XDh鞮{ăZ%v\X gR ۦ%}NʺOQ2 ^C,m*G8@&^.jeܹ}ў7R'ΕYA͐.i:WԺcoP)>|qY彯BZy)82mgѤTS:T>r7ˤ9F}"$mО&tŮ~>fkL dSESebZ~':.9Z:ͣ=Y d۴DýT?ޖ؃ }H:\.Yw*d1 "u޲u-0Mȅud `,}A||tv`(msvE]x NQ$ߣ^)3 R>~8l-p; ,YroiX8lz]8!sglqɚ|Ǯ3%9yN^Pƃ`̹qeV\kxlS; 1]vɾ=ZYn~B5} V{C˥)9UYOA{Fj|ka@Yѣ%kp1'MOl]Ëq.;|ZߦF^zhvNv䮉x}X7!;5~b\Njzl)/`eiiثRc'TLQkJ9o.~U 9dNZ(1ܟ2T5S_k20<Տ97?2Jni6 *J Ev0#t><gRb-eF:x{B`t bw'6s]t!^qAӯ轤8]Z?M_3Ofܲq( .-4@OZZDf8K_jpbox`jwG]glhJr-pꨉhA>z)nIÉ kXdWG(5SR[n e`XlY a]?#N-]u2ųp&}YXZ벨G51|v&[tEHcfLk|T,Psk/T5Kux昘۫9XmDtIU}(UflJUaDE+-|)5YKlș]E3a;yOIR?4gP?Na:h:*k\)ù4ˀpʣ\(*kUYxA|6<,iİ7KVdzߛ::do|uڳcؚ-sڻf,Kr;tFd`&fO&͛lGm=(ޮf*up7"bp԰TW𝃇_?Ɏ{ إ?jC֮lҵYM^O'e17'lp 4*NF>ñv=Jױp]tjj5B0nʠ^}'avWLt UyEޗ%ORF{G_0I'"jGi*ٍnJ\=g9KTl/S{E!lН//YF=`1um,Ѡ:+/]'pm08.Bf^n͓3rWJKT/95|$ &5m F `ao#5FCg:T`cit$c vO[qag8.O3^}L2?/@['oC8If-'~ Œ"شp8[h܋ϯk=佭NEq^yƖUVr䭴eKH@R$' :z5E3oB8| c~ٳ)ABd^u1]ȲCI,^Wl_׮ z4e %ś/,pIVߍe]@.wF8~wd. Gլo6ZvgM\GE.6Ⱦ -BlU!~B%Y )߼cU7[皱ec9PCM)9v_OX=5nGŢ^9mS=e^5s bx3oʾĬMvo0tv<^Ԡ`‹i3[ I 5j&m{$󽫓> M''7ǐdx:b]ٌ '> Sb8_ d]S,@_I.7g2z1ۧxhop)?U"*\"@I Jt'z4sUck ^eviZv+ءظ;-Žϥ ?Eŗ`P;β46uG݈t#|]G7^w(^}8,gqm]l js D}iMk;2DUe~C"v!{W\cVm S<8(R@j9w2RBmu*n|j:Jnl"ϼ!ޡLwJƇfU_+|GnuF^jhHňwrY2vbWYO|"ڒ>g+&90Uc֠ \2Pa-nhuv*wPCYQ]6c7 =${ZCA+I dиNjQ͑5FV5K *cE#P *5ۥ1olZrCQٽN|phx4^vzSDS"-i oKQJBkqu M~\ /@ @Y=暑֍'} &j%ὪnmjA?ĕVց( 3LUxs7$%#Sy曍»of7z;)dK7tB,x+BNCn-#^ݡ3`HfqէEHQzz/^j+r1d!MӸMajGvSCHzk  _qǦÎa1 ?,7_`4 s=ٟ)Olr{#ͮNJRt|%Y LZ/ =DA(?(@\eװ^,4&2^dZ*b,ˍ=DȳԅACxw/k &;rکb.Wm 8Dߊlb_!r#k. jM9&Њ~tÜZipw^@5YEl!?S|#T>͆5%G ^}@b5,j%D xkl h Zh{V0gT)|y_T :n ԱVlD#PPCd=^ ĔNE_ fo;A()J,߀%뀣zWm en+܀wqB&cZWܑߪX$NW;ʓrqKsB@Lɔ ( M )~%Zj s2W5˖/G:L.X0繆XN$#7--PVf}e L5)P04w