server/src/tests/Models/TranscriptResourceTest.php
author ymh <ymh.work@gmail.com>
Fri, 09 Jun 2017 15:22:02 +0200
changeset 531 48f5380c26d0
parent 529 5d9eacbd5794
permissions -rw-r--r--
Replace EasyRdf http loading with guzzle to solve proxy problems
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
168
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
use CorpusParole\Models\TranscriptResource;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
use CorpusParole\Libraries\CocoonUtils;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
/**
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 */
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
class TranscriptResourceTest extends TestCase {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    const TEST_DOCS = [
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
        'http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml' => <<<EOT
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    @prefix sesame: <http://www.openrdf.org/schema/sesame#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    @prefix fn: <http://www.w3.org/2005/xpath-functions#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
    <http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml> a <http://www.europeana.eu/schemas/edm/WebResource> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
        <http://purl.org/dc/elements/1.1/format> "application/xml"^^<http://purl.org/dc/terms/IMT> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
        <http://purl.org/dc/terms/accessRights> "Freely available for non-commercial use" ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
        <http://purl.org/dc/terms/created> "2010-11-17"^^<http://purl.org/dc/terms/W3CDTF> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
        <http://purl.org/dc/terms/issued> "2013-11-04T22:20:07+01:00"^^<http://purl.org/dc/terms/W3CDTF> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
        <http://purl.org/dc/terms/license> <http://creativecommons.org/licenses/by-nc-sa/3.0/> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
        <http://purl.org/dc/terms/conformsTo> <http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_transcriber> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
EOT
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    ,'http://cocoon.huma-num.fr/data/archi/masters/372593.wav' => <<<EOT
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    @prefix sesame: <http://www.openrdf.org/schema/sesame#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    @prefix fn: <http://www.w3.org/2005/xpath-functions#> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    <http://cocoon.huma-num.fr/data/archi/masters/372593.wav> a <http://www.europeana.eu/schemas/edm/WebResource> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
        <http://purl.org/dc/elements/1.1/format> "audio/x-wav"^^<http://purl.org/dc/terms/IMT> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
        <http://purl.org/dc/terms/accessRights> "Freely available for non-commercial use" ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        <http://purl.org/dc/terms/created> "2010-11-17"^^<http://purl.org/dc/terms/W3CDTF> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        <http://purl.org/dc/terms/extent> "PT48M26S" ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        <http://purl.org/dc/terms/issued> "2013-10-12T14:35:57+02:00"^^<http://purl.org/dc/terms/W3CDTF> ;
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        <http://purl.org/dc/terms/license> <http://creativecommons.org/licenses/by-nc-sa/3.0/> .
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
EOT
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    ];
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    public function setUp() {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
        parent::setup();
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
        $this->graphs = [];
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        foreach(self::TEST_DOCS as $uri => $ttl) {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
            $this->graphs[$uri] = new EasyRdf\Graph($uri, $ttl);
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
        }
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    }
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    public function testConstructor() {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        $this->assertNotNull($this->graphs, 'Graphs shoud not be null');
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
        $transcriptResource = new TranscriptResource('http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml', $this->graphs['http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml']);
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
        $this->assertNotNull($transcriptResource);
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    }
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    public function testConformsTo() {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
        $transcriptResource = new TranscriptResource('http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml', $this->graphs['http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml']);
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
        $this->assertEquals('http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_transcriber', $transcriptResource->getConformsTo());
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    }
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    public function testJsonSerialize() {
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        $transcriptResource = new TranscriptResource('http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml', $this->graphs['http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml']);
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
        $json = $transcriptResource->jsonSerialize();
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        $this->assertTrue(is_array($json), "must be an array");
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
        $this->assertEquals(
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
            [
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
                'url' => "http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml",
529
5d9eacbd5794 correct bug #26583 click on types for notice
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    78
                'format' => "application/xml",
5d9eacbd5794 correct bug #26583 click on types for notice
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    79
                'conforms-to' => "http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-dtd_transcriber",
5d9eacbd5794 correct bug #26583 click on types for notice
ymh <ymh.work@gmail.com>
parents: 168
diff changeset
    80
                'rights' => "http://creativecommons.org/licenses/by-nc-sa/3.0/"
168
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
            ],
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
            $json
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
        );
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
    }
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
17f10b56c079 improve document model and propagate changes. This include the change of document fixtures to better reflect what the api is effectively returning
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
}
re2Q/$ˍڭ+يS7ʖδr0*$FgP3, ʐ個䪧KXU`$)אo G b=+UΆxFU wylբ[fĬ@-1-S[r|p%'1ҿ0y&Ӂm>'N qEKis>rݶq+Q35erquKA" W*nvP}Z \/i؝40݃a~{J""3Ƙ:!~Up7gUh<N&* 1?I /db̗i nXfmGA|c=(AxH&Ҡ]u3?LZOro8e CArek).Χ7 yʾY@ VdS T]_>=?㋌AoiyoYw:(y(U)Lh4wxW_ud~]" n߬6>%"Zq9qyoBq׋$_{l5 dKBez.?FJL̞3f\=|h.mg,̀MIT# Z )tbSO μ I~_ģ[d_{3'l EjIR`G])E%}ejl- v9O0cPSk6=Yd_7 &)NQ%&T%Q "NH6$/I`O!th s c+녓1N 䉩sGF)WCw/:黀*b.' xY8޿Crq6i*:UO io:X pO6+eQDrwʲLbFj#@$ny&eYNg֭;y)TgŠx'wVKg*O Kjt_0NyzQ0 &`1ɚq2wj:# ,k :P>ГJ '(x=L)ɶ?ɧQ1NxLwzDM_W" Hbl2 E4~L\]>^ +ƅ|P˲HQE(GIt*MMwSkN+VrLfXQ){KdN>)սH%y`/I~7*ԘfHOG4ߐ׵ӋG<Ɯ,'dz*.]P|J95%_e}C ˧z`pc:#_(v_˲Y)%q3 m6Ѧ@zd`]vIuhUAa3y| .xعv0BdYq쒰A_  ؆bV=Q l!) 3aE=)ݎ4x=hq7ɻU=l_đMށ˜R, H(Kl'gD{b7 ܄O 35薧٫U #8%'Q9yr#INwUJPt>m(R! y38!E >|:{g(Յ c,8`+aNp $ٔY2eؙq =]7/xNǐ)}w;SbO`n{XUs*'Z#cycՋ$l+K()\d›pk5T/u2+&eJȮUݥCț-!/l'b*)?8@jCwA2CJzvVuL"B68(lzOsQF'pȄc sD1ģfXȳBw lɏT_q Ԉ^Te8AkaNx=ߐDxH4R0B+ p5jK)F/iFAqwK-jo۫UcA/ڭxd)u4+uY+( \2)h &CQ?HN_>&4uV ZsA 4GrG\yܛZyt5I,O6|!!{͟Θӻ%wHԛU {Nwa'L,U?͹䛿kJp4@ѧaYi艌%Ѐ;z?mzp³>jFL#u7ճŔ͏+Y!2vږK4@huLB@{xĩ1i EƀPiWyPWpUk'4KGThœ8Q{$,6Ip>PM<~ enP_+ȸ{iAhRZzAL\FK4#Vt=6`W4Cgʜkeȗl,2!(R T"޴H%J:v">1pFܑɡc6PCi8sUBRQu'Zc_ʝ!d X3"(R]M Fтĥ m37Fp`+8nU.iȕI2y`\x?^3q؆5Q@G}1 vHЊ; 0B(b·/æf' hMakMsd@+W#U+Y=p  B{CvBV5Uփ&43ᔽ76\%[]3.鑞+\.) tB+pNܸ(!<OQCYY=t Y4CRuu:}LRCtmґxsZpL^Z@(j",Po z9KgQymXRN1;G&\c%Cm^fQI0LDC=\Dƒ@,K@ E4&2%-B㲩\)[I x }4lJH] C60<@$rΠkYt!_ށ kh;xT8$NNO1]A,C{^30S|p&%t eyX%◤;D1Vc]*j10aĖ4X%1f9vuH`] )8TOXs&HV]#J^*;n$]}Y@>gu|W.ZCoM+ljV0ӷ]%zM W?N<+ڥ$疼fRf_G{"&5!U h qs7 ]LHЄ0,EMwb#5.3GFґ| iA ~dͣ)W>c4H)͜{&-BmHۈ16K杈n'6A'9=R 朩[1DF; /O0 8HKPl$oY(e Ğ^^Hk75ۺ BÞI3ߔAHx.d1cs) 1dM.( * 7h䧪+I7[k݁IK=zj0l]yI` OٴE SJ ȕ!_vlK^D7\ĤrTȳwY D =v독~k+2P2uJ[z̤=mКt G@衉Qud)dZQ;b~:rB%{q=:pPI~$M*v4ޛ`r]ƺ6iYbyq8|&RK#bP>zE!PMJ SUKg_#쉤"(k RUߘ)ʀ@XX٠JKزMǻ!c1 p2ф۰7f7Irg?՜,YtRbB*[2!ED,i]69>l޶| MB5cYFDҜPlV{`1/uLWkBuQLAp%0}5yT;:#}c. sR5U}(ŒMO!g7B.Gu*@/{Z3W- HTTޛT j*=%?̎0wKWV@ټ82''6' î:#F>$VUIR돐|ؼ(Zz'.#Ae9'v߹8? tcLs #半^äW57q(ۤCWǐﲥوlLGWO] )P3}8?,x )-@@eJZ,g4A-I'h 큝%#Eq(=_lㅛN|\Jɦ58dRWy4y iy.; lHj )hTJ BٹWuI،t7VRL` 沛= ʉOaJ܁53Kod` JH9)UO{q(8=d[Q.A#7[M7|~\"u.QbxjE6T-Ԇ"<꥕X'q^ fS{*W)}Cl%54kF8llܩEq݄RGT+QlH]V2R ܑJ6T5Z8n=:l"?$LNQg'[?Ii&-&n!%\-5?GT..!BGV^РM˚ѪOtk{g~#`|~? Q]Syz|u +n-e>2-0mV6j`$4wxțe Xؚ~.bYQggZNQ?h(Ww&/YʫmPrd c#NƘq`[&P>O^xQuU0tZMFdub;R#|Np wc; L2^} +[h QC`Xaʶ(,`K 9E#3 GT=DS[L5 wMVdêchjS%|WNBq#Vfj#DXtI<d;sXyXp!+)+0v fKhm?X8tCEteO烴+4^$z] ?4#!=JloMӻewMn(~ 9RPoŮm>`=΋^=CBsN>f2e( ]ӊe _̴z~AF";&t>gM,L=bv'ܹx4PBUh]GgP{,+R=F*%Žh`Do) 9sJep7V 6C f6%8LnjӌDW`>it낢*$ήa#(n~yK,|Ű&"K el:͡$q= { 1I%P>{= 3ǫGD,!e%$2bhMGk4{{ 6֜6 ,* uk[@-,E?,hf}Ȗd {)n9`3H-yYxȿv}>މN q͞22\ōf m(,FѩrCX@R|.~"ob?aP$x+ˡ4.Sw/ݒhJLp8dF>g\<{[>ƥuw(q׳uKe{ٷQΞV2MP}3HXZ*Or' -۟˝ոl2OP9-I[yt;JˍπEoT$0 ./B!e HB.R| d y;{]A>@jƸ(N=9+@g5l֪PV@Fx*JW$Oewd#tED p|r dVRCAim؟:8>֔2o}>iy8S!=}aOP"GR[ QW΍i|bdK> wDg4Q9~-R%ÌJzt"GbkkJa/t?;/d:r bvC, /\$* Y3)pNhݯm_!lDn^:WN83RJi;HJZ[,msܬ:yQn;LJ"0za Oq*Q(e-xj:hU2f;sw ٷzSu"/pW$Ж*eй`XU[<&ApiESQj=bcCyzFxN<ņϓ9kfV_0FEMB33G>u5;N ý=iE홑)7/B*_פX+ACEO? P{sbe|L7b,>fȉrӁe-D\/);cjhR e*)pizRGEObX6BIFBj…Vnutmy-bBy4Ll)v=i$e{u4DPҀIE4o=TVsNFOg45 KH2|@,?ؐ UՕcB {7Pħ@]W(, ubp .?MuA0)F yдPDɐ ;D7ԧXFLN? P,&ctʊoYTk5+r?[̟Q8~P3Y[qsjF/@GʹDrYa $^2\ԗq#C4_wȟz.m2L-E&ԤN9[Ł-S (̯r% o#7i#Y[2՝xBjZN.yH5g =8k8^G|=)p .$UePmOI3<,EUR1`XY$:L2=ہU&OUN<Ira] 3ƂXZuݭ|"[[~#lHH͒e9,;,&,fO IW]wt?"öi$>1:4 COVrnC-J_DKF粊Clz';$p9>dGiT-Jl&N b,LP I֢K"D՞ CfȹCR~Kg tQg^<<\q9u΁{̂MS7QzָI%\spM;5Ae>eVdA  ;]5i⥩Har6zfJ,ho""y•q`*E J+.dF3' h9#q!mB%Na~TlIf !*p/g¡$'Jˮ+Ae|?)5%ida&j<'Hjʣ%L[ÀsxR~Zw|Mu7]0&xbBzlLn&:ޗTsPEyvʏt2HsU(`-LRuG ,&}8ҵr1Vs([CKWBÜX+a^2Hqy_&hh}-q)\8 6X "J Ay }P82tf,}}NRz43_S0tAM]aw˔KN;bm~Xye Z"W͚hj+b=ьtFH jTߊhǮRkl v ~r[Yp+%׸KW& !ΰTy8ݾ0+2T[+X])zw5dY N̦=BtHHZm ApέFk(])1s9Qq`KlA&/eZ_+wXg m46|.|C6; c`PImr8؈6BzWs^7~,O@Qs-zk&D8֋dVzwLk+pGp6??Ikpń@W`1~D0؄,س\ݢ }Ǫ)]2r DF$!&{'qg b.7yS\`zM"m%)pݵ,7ׄV/MDzLl۩fndQ>~t”Q+! Ť6Ec"Fp4CUРvS) RZF$0;9IyǒJ\"F2l^kxe,b6e#fOI,>iFQa! _ie>riOTmĒS rܨZbWDo͕RL%.O|߹ SfD[:?$!$Q㙱'{d_lB^;Y'"zO4NUK3mmOYb́*.ЖR~LCA@P0.őSWo{qEFە`KQΖXP1QӕAF]W~\:\łt\冁j'g.0`ϯ˹K<%jϠԌXJ}"lbjj'g9cDtCm*9<7r ^ dL-D0nХ5! EŌl`]Apc©J7YqY^@?e}B g lEInI^ϝQ_ƌk[Hh?U"ԕ۫ʗ/uBo6c{%9-PJ£H\X~WtBVwvfK"0`25pE?< :#F/bv[hMw#M7EIµ&AuY,tL,Bߪ>XUW=# AÈJV&ϗ#o~ E^*yq:Iu̠u*%2oc=tٻsRT=Y\uTHwIѴKB[c/Lc QiqD:ϝrd$%rhi(ïױR&hO5 hGoVB!M8tWA<7ȌSjJ]ȷX%"nDDy<ӊT;" A3%v7b'u3w+^05sRQD.$ ]Y+b=KT0yN Oꅑ8\-98I:A.9ckPkq7ǸZ)f@ݏպ6hK7ʫ1}h57X_D09v7Ӭiq`@Cڬc9)Z]"Xgn,KzkTJ/@ďS eZ,( OQW-I11Uq4#tZ`lի`bGJ'Af_E*u6@͙qԙ.a$}i6*'LT: 9.p+5r1_V#nY|H᢯#f[Okf+~g!M|希qtw*3*nY-/EiKkS_ ^Kq7nYY@4dӾHP5f(RDI~[x!%r*HVXA5nw_ PE\+ ŰFGi*<⊋Pk7|8Y0G[z׫DGW)Qz'xF*!"Kla>)GHHXbngS1Fn?!BKkfh>R6RQ_%0qT?,{'N\<;Ӿ(p }rg9vijؚZX;%Mš{o=4ƞ %Hs~I.ZrG2UY4Pq[!$G:RUk#K`Y}sd|&+Mg8Qm9 dтYrVaQ{tPF 爢~]*؆5\@VOZvMjMfJQ~h1ro Cxzf R'cZ|Z!PNW~NPyf2TewMΠO b\*;0&~^?5Go,BGZv -0 @Tvss *ϋvs?5P95"? (RUO7{&Ƚuv$_P^J}|,Ft]UݿT1հ> 'wF@3o^z鴥t.CN^[*,nwY92)KnXIy1͖6Z\eדtt"%{M2 GШ6;`^Dҏ!N“:KJrȒ 0I=]xR/e|?Q6$?lG,_m訕ˣz@}k1*㰿MTNID'kp3UoHd{W :@94DHILY9al3s5 )#!Ե%N̍K0עl= z'3QQHcHN8ϚduZt϶|4k!sDbFO;4AỵOQ}"sTp3vn7*S3;y'HJ݂07Prm> rwApw_Jb7S!qEF00i*9,lKپ\ڊhx. *ë6˭n% |OҺ5d`ȻuX|8֢ǹdЀqH !{,J]lXy7]Mh1']E'e]gp4eIIZ-95X$G{+{;"Ug [JE"l3sM" KrٕDwXDi8{ʏ#Ȓܯ#ZNzQ i/]y%02;ɫHݸ9 iE*Gdpalj+eB2yl{,k3#dmZoىZOܲ81SW81Q+?@0W'Ek{y|B_Ǟo駱ā{wJExƾ: Naoe@;Q=4L:T'ʱKm)I7_!g0AP3 &jڇ>r۹%lE{y01"F&um C83pۼk*VR%DnƦ^w*;=U$G3@=a͟|ٴԬV+C ,}zpM?IJpPPrK.?;~1#_I\bd+AVBVڿrس>$ ]NndqZ6 y C皇5}l`EGa r85sM Tc;J_u"_ B 6tp_帋$R:cz L6m6M{[Íԁg֙gب^q9BRU-YG_+TS[8εpsfB=i|XtFYȪI%.6{yP2`/g/3lUsIf'b [[.Z~y>+nśɎd*jcqf_/~N7PT 1<svy6B+%⁌a$ĿaŴ_x0ȿh*mZ|KҵUcl;`3Nˑ l_" l75(.oCcG-;&B{jQZI Y8%U R(8N3#{FC?B,T@MY|lFv7yd#|WJDI8jŎ!`V b s GQ%Q<|fFR^1^>WGE40|Eϖ[{Q k0g䨕Qn)qU+4_f8?_N`*nlSDׁ.eJqP5X2 gABJ I w|\Ee];NeQ4C˃8Wb2zڃ46uV͵R+GDnY$x7m0\M\ju!ٗGa {Q2ǽ جuΫ uݫ6=y-ULxltL׊4۶KϣV˹N` Bίqc7uFUoW)>1fAV&!|c1f2=&yurd$;l5ghês0WV thH4ZM' z<qި^ӠL)298:SN;4Uwf$ jF;7Dl Z?\XPȉUJ.ltzL2N&]iN>BuOm=U;pwRi/I(W.{`p%Y?eW.q+Րd0'=hHDEX8:sj+ 2zqƒz>z 0xӐ{di> $"|s5 ΌG:61qZ!D Q5G}[",iנ . *xfL/Pu q]DeLc,[~c@69!)%-9{1j[-|2zZ/e'1ɠ,:r(4',ALǨ7hܥLm^ qaUg9 ƹG (,2%'KѱqN 1Ƈ)=h,Wbj{vu捿FjnU c]K12?hղ!`@20Es3"RUz[WF9`.A'GvGrLQ'աeՋaI d:Q΃CÓb{ct;s=)ݘ7Nr,?,zs+~Ur7R1=Qծc0M3!%JccR}i?Q&CMfK {焦Dd6A&z&9+MA)e}B.DG|Blu 'W y6D=$fk(Q=>s1z{0.DX[1OmpSHq%2,1psHxլUz PlzH@c¸-ܲ.͉\\.,MnMBK{`mdfj׃=ÐRNKb])89(ShpBO`R%,Ks6_uT3=UԂ5T??1P.Z$:&A2\_qU uq1CvQ'PlR4Dz~|yBezSҭT ^Fz\n/Dt Ǭ޹.2eXݔ>os(ꊮzh*| H؋{,@H?;Kghs@=D,"Z-FMvsߦ(=`cv%_3 al`Z1\f֍wV ]x¨b7B:P5%˪dlASw >R.x JOE-NQ{ ,8csBYnl飺f,7c3+HdSf;] _/t&A }X%[{kRvFɈ>LsqN:/p(vxDkkJ7٬ۈ`\GvSE"U^ 9hQY_3ld9g e6!9_L,Zk-UQEtޱ`qg͂piS`rzSc$|B}Ga-E Vqʠ<%v!|4]٬|Ce*\ ȨhI]fQ]YOPH NBBkPO1=U[-p-*ASUGVX?=fƩ}n_fi~UHPRpr!{o(Q4bLE^SglŤ Z68jxMKЬyCO N :dPaQNNFJ~ŁQ"*BZPJGwfF6+<#?uߋؑ_wIAeA[WDK)(#;gJ,j >/ 4=VhSG7S_NE^~xgd6+8;nQ!-f>#VZI fn*/&x\o Ei8GUeG'u{4TڦFu@J:>=Rf &'<}_Ul ^x1LaFC3q^Wƪ F9.O :V2a&ɞS˶7kp>X|Nd /Wp1`n&SR\" x̱?dج"n*BV2D@'Ц4$zOA,cu9\\`LzٝA\j`@]/j ,ApPVoœ[f;b? gGU]?.{ssjX08Z{OoZN|i[)CkqPZ겜jK[Իnd"ed ꛮ3dm~dr`e~ h֤6vpW^(xLO38thlmKC$w2~>h5٣ f7" +פEPmY Lq߫^ۿUm>mJV&Pk(q [c !Bce [9S .`<Q `I 3D쐇2 ![-{UXvWK.Xޜ CV%2@%t(X-'^Xg /])|oK PKa$ )ys!2s;Cqɹ\.NQi`)8%MnƠIT.ˀ`agv΀LDJ)e7dwo;32< ZS8=_qH94746a.k?3_f]:Ħ*ИjhJQ(#u07`.'8kF`G,*c$*EDTR%J(ݰt ̏`7&T#+ͶBm Į/YHDj сf M7POW Y Fx']u&N,j)o SE&8"\y5(=4++J\Rp3<{ !UAAP.5ojBJ]FC} d"_#_I5= L 2i+è*BO@5_ S{Li[qؐ8X7+C mdTgUe7U=w ^©gI~ٶD1 STDΗ(C6@C Έ S, _ss? Az)d@V˺O4@|O|62KH\ú%h7T!A{ 6Mɸ  Ujcо`DU@é|jb[B=ZZ|Kgp_g3pߠmsځV W~NuP8Y (<7ߣ^o ]xX| H#j\ŹOdx #uC\=b~\SN<3nxT1:h=ـ(j'ؤ7&ca .tUy`(g!,cZYWBP U=J8f ҽ`dEdY7``G(lZl*R\%d<,ڱ:r'Ziӱ bd5%[zU$ăILl\o3č^G"<,> ١~3'g0,}qt :<X9[ kA ^w(`dXJ?H=,?s/)H,SqfhGi2$'# _|w%F ȾGo_u  W߸/Q֯ܟw_gA㪊 w<D>@>}иZ4pyMy5GgJrʼn4w}UV,qt^Q1`-0r0|[\qȘ8ܻݿaQ.<馌aenНFvB]AN/USl:>sJFOkHʉ=vL욎'(s#CO%{ Zylmf6 _[wN+k(& i/ '2;KqVdm"v۳Y+<@GގjTO #nvn5P҂CN?E·Hv ]l"9V"o"xu݇:XJl?o2w6x֞lF"8p vaT%>{;_O8J_BSsOUsG>h!ƒ8uܝ4|ےu1,PDh+9/E:_DZn=M q5Y&Wh91~ߪ#$ųJKiɮk_ aEJU"%jv3r ~:|!]޼ Ǒ5Qtʸxѯ i--T-ùp׳FZt9J `ޟ͂32PN*/Ê/%QjϬb+9@Ƴyչ $HHFؘjEZ.ӞQ:+ ܳusv?DS_5.{1U9L wTLDTX5>(TFVrD`YN:۱N"ƹ&j Ȉi5駱㌏)[*&Ibws2~i)>À7|t}f{(|59k[:H'Q%@Xw!x߾…`r'Ƿhezku]Tc.Ÿnq0 ԼXǚ;W;?A;O6oS${.k\+ٹMNJс&?.69Łq3MI#-0J_ ^6 Ѹj(AKäy?WTc, UCPը b^nz˘Ie|TF-w{*%f~$Zix{,`#|x!eI\7>:t:`NgW-N\ibcP3-fkpYpE}LF 蕲ʬ埼~q= `ٿI[Ȅ`ʒ%ahsvj՝4a1f by6m! JU"^Ԝx3A} :7?2+4MqM&y^@{e ȉ)#dZyZVaM]'M{"V+HuLžB9/YjbήiZZNO ,BLl}(fOAV<ώI)K澬B {JKy[H ӤzISKcn7y4YvP5z/ 0Od,Q(qYP˟%@H֐8̀K6d,C&Z"IbԜ^"端Iqt)Td]lFu%ȥs6rxI5MvO&F_Ё|n~# ,=h١«.y+J@,u5ҐcsC#)J WL 1l\v$OM0 ſ6A-kO@۳d>#@ŴJ!n<;5+LI@ExDPDzyƯۯQdĘCS LWY\>c9|yC`th ENpi)#>/@= !T5Azkf6aHNة!n*9lu֊X,K^fw,| D (F1SNvIp9\yʫhqCKNx8fٻgk;s?gc<-Z4qѴAIzD$o D~ Փ.q",&|Cw*~ 73]m9\{FqFBͰ,Rl]=*\OH+ż#D1Aם|ezl6f vQ" y=\&itί.;M!6<ı,kpޔ~X#PcHJ*}ab#~<~ ҡ4Bv SQ)'t)ѼeBRw^^nV$%XGؚ "+-v vb$ӏ9l ('."fX'଼ 4~hZ:r;Eoi Gk^k6V%D6}62!JG3 iNȮ^Ъ؝@Åu[J-E"hs] d.Aڕx|M.xT9Y`3IG_|Ս7y( Jl9U5㪤Zwz8C *hf88oqA;ɯ%b 7QMGI0o'%? Mf AjŵqG D&lH?Ƈ.ޝpQp+Aܖ˿oz#F߭ a ::L;5DE@D%dhysi(ffE"2?3݌Fz*3R:ށFa˵AeFoRX ? ȴI :^6CI7[* Ćۅ_Z?W,w5 \8F<7[h#rߖv$צRځn9o71WKH!Sz20E%8U"@!e~[N+9+}bHFiUE35q_0ug<;8E6rXܺlP?K]l:Լ@ ; \`,@`OMv\ w )7%zIB4)n4nʷ : Vdo e |٦yV~MTd:qAg,$WYp~-Ntǃ3 c?ػzG]}oWu05ԊW?6^DxTHmdFrHv;1TSHӪyfiv PD 7[ u/%磭 Cm(zF)E x+GÊR0 vպh8 еfx;vEX,!yn_1d7zgk|H6#+<4sp\8Й%lΪePي e,YF (ҙ烧rgLb(7=K+gm:ppEAh;DF9)S9+]KD/=] R&ѡ_9|NFUhve@k g^񖊺p_l/&|뷬f4[9@ .F ©F m)مj o_t\a > 4.˙E@iW1ؘBO`bjZ/Gʗ;oy+C4f]JS$X*v"Z )oZBJs,9eA+!_uN1~H(@y,e{oI@W>Cؑ1\(9/w+r{2YGѡ/lro |dVF[CK ެ*–_P."D1%C@ t$5re⎱#>Uev7Zzސ茄:2UZX`WG+6j3眽No䑺;AY#M~DJ21+#2/k;+Nji`#ol>+?o;1&=JRfh[EmAo("Wh3Ն|ăn~%]RʽoË4-踤iuږwLDQ򨩆`N8~3vCŝ5ZVB~@|[ 6DvOG57CGŢ u!:2h8'02=9%e\tre_c,w eMB*HjfNJFZAs-LfEhp@'N򁇂:M_{ *$KXK8Z\#eU||#Y -t.o|փR+g\%d"e̔h:kaDM$ʁM;% * A@1w);j!&`N +_UJAHł7g Y#Pn3 |vGnO3a30ss)Cjm(OGT@ d-{  $<+FZ'UyMI ::Ww!spEru[>EqR$'@J0}<p׺;-OׅOϻVI:RzsOH-D+I W\sz8W(x'F_ X S[D=Lr>Bܰ{x&9kX1NepBAmdz!"q֓bαk({:e*g-5Re5i"y#{)p#"&0 :dR#U"e4V;!xXf|=0DoTP qwt8K#&{Z0i:H[j$ʮ)[;Ǫ*ׯ4]vx^^ {Oh-~Ɠ"Toz n="s Gݬ2[GRX rJ8>9XFx$թЬm%qp\9K+zo3tn8\O.KG]ePchePK/.ާ.aڢ w'+z(qQ6$bæeqe*#X*glBLV@0ͤIMxξ9:5~Ya'B U ts,ro!"Y1:g'OTIS7#ZsdK%.e⭿Fv=߆(1>mܝvv8qⱣcS#\|ENҗ;YEH">3sKq4G>?j*`y@`?T3|FdiO F!QcHlu(8%87XL3aWYҎ*KLpXs6IPr;@M;dL\q&;b>iۤ`Ի^MVIP4cl/#юM.Ʊ#T& [ NEʲ(*)86Dt:њ;h&Lz3d1`:0pԯyϘwk Rt5H|1NW%];卑‰Ke@-J1R籜[z2dGu)o8:j]B(]eXA6 3m{F[YJI/sW 'kA%.H傃wS?Dz`hVZ_̦S.egA`L_QQm$voB$H``\j'-2'y:_E/o5Q}c&aIaؤvz}ѐHsmlLY"IӶ?6X?T͑b<qfUvvb4JQ"fLrp{G=Fg͈,YTu7id.Q_@[ `~ r 2'$+t7 V/`'!(vd*ZS|g9XR^ZD9:}ՉjW6Pkۿh xH@@'Q~M$>p ¿3E?DeWM/O RNتhN@}$ZRC21d(|cK圁FptrA` JC 4 vk|,# y9NFI)ȯ0DJdnXJFꌡ$\_!L`39JlªO*pX[P( 0E[RzAIб1J^S W5 yd~o`2>6njod(#Zl5 su K2Kõ\Zŷ+OEFz|[x]$¿0P W b7U7"Cj#c "3-I(}B `W^~颂*~`diO! "BF Y 0?Y2\^J nLBhC`4[*-WaSjND6_x53Hhe.iVdKe1IG^mީt,^xۤidRq]Aɏd97s V#= G2qzջ:Tz/}ASݯCQWp52moWX.7Pd|Ȼ qˡ'J8apAy)9 j+M\,l'`|PQp>&_ny3=%K8[zT>r() BDʞ}62Mv + MSaf'„G_s$ԩ沼0BlwZq<'F^#HTէ?IGUƚ(۔Բ$`"#kbT ktIrE֬dz+?S橊F H9Uf7ӝdRTJX?Nov03%0fI^jT=wqOsoDx jaLfe//AYp=}sY&S/8B ҰK3yTAGef'y%; !6Ea?c>zV/>ۉ*yyTm$XwMy^^!r2Ifz,C*Il &Mhw:(\'YS!ͽ 2L$)ɛKrڂf"?'k+L.cplC|!kO*JRZ 4Wb@/T |"bK;|LgķvQLG$1IH:?5lnq{L) Ci؛;Į[EZC|ýȁ#(z C{`{6hQL d$Ǽ]$1 ԳR+abEҢFWXHM R*\},0}\minf9褹0CPߓ#!C=*O]tO;ά1SX:בqЈpB$JbݮuyE~5Z F6g5v .}7F,=S_U@p>``=gaWԃC ~FLL'?m- Bj`SFUxgs7ivu_!|~)XL+Z~ _@*g`1'3ƌm(!1فc&L̐rj  &$]`A_k *r b݋C3XretrG0nˀLZ vŠdB9pvl6u77k$INtoIN?1/;?5@ZRBTP(9p2iǜ :@4mi;6AE] ]fF?)P)Ϊ4mX8A5#z N[1N|c̓p]M. ]`3?'i*ѼKA6usP@\$#UU/ gm3&@r?}'0nu e GFáh|~*j> X) .ۂp)Y#vH}>" B=3r?+,J-- ?!7m̱`x3]^+^\ 2b _-KUHpC7jBꆕE ~^"E|b1} 8ˌD53LkcA:[X"3,Z]$けЎ yI=6Ex62e,u3Q5\E; U'nbw+ 7-+ v-{kνfp3PT_(jpYVD:X!4ᯩėP}˽c\}HL3e>N,*M1k g< +:n:HhezUMXK`4kqPx| jg rP]:0>]WEDޥ~;S@x0*Ro NHZ¼_ iXZd<8Wb¸|d9'.:3DdEdaτڠ*Ӝ{ Ld^Mߌ "bVڵ :~GtP>ȸ֞dDuWy&jpF]ٕUGeO] YI;vHk/S3L&\yYB% irFn5p@QqȨ8OZ%vS9@ѴҜ]f @`ho¦˹"Dߟv[`"GaL< p,|f͔X ;7arՐPмT1<0j=o! \QrĝW[M?îjvq+<زy'),K^ѝލ,3w`}q.VВtJ{ /S痐ݸhỬ2ReTi: [jd ڀQ|.RrT8 aFeb+PHM1gwGQTgw;+ 5>N1d m8J&MD:" BJJ3 \~dd-$Hl e !1@d-k q<-H؄BLȖFW!o1/$)Ų^Ʒl0^% ;Xt1ð8/dd x㮏w|P#h {MP6᣶*vmX_8љe16E"7G:`O "`EY. A2U-KҠ XB,'@YBh$/>\6p(Q`Yg"Ugf YvnF4(ZZ+m׉z4csrLjGjP![O;h!XQ|04͔rĦ4 o>hmf 2*ZAc3yHU ZNUDQ#} ʁ R3M*M>k0~;?':O;:E'$#F7H^?|ci$Xnq9">bv%[.Hrd+ZnbѨ8  nBIl!e$!rQ SڱƄ0n",rJW2<ґj1uD":^$"7rnbɠrqX.kAۚU*c{Xm+w#63Gi2xČk‘yAH/Iy9{?"6`!ծ0F(P:V +#ޔ@g/ig%0myŃF$Eaoa!5E=d%ץ~]I1h1B<y"g]Z^mN3$[ %M(TWh+\*<3NQ*"(@%F (?ًw2-R!AYb$6zpb5Dj&t1լ"Y9W@5z: e Pk|y\m坅exc bUe(AHt o3c{7G[du T5^eC;\3'?ܔ+gwr !{ZcYT_:%ؙKǣnN{I$͉0݀"SO=ыJ}ǕZ:|RuDH7O8\`ʔɷЮ|Ϲ8ET"'2XQW#ő荁|!GvAcKJG*{,0z XnՌB=9k앙7?dáAz)sݏ%hʬn8`%[ 2>m쉮Nf_5RĊފ3s-3jŐZ#M3BaYװxS*UQ&dVSõ Ɋ!!>eH;&ȕd'DCDUT(qD;VUQk|'$ )`o'asdPC`pZ(!oyG3ż0C0/!{une3ZEL MƗz-Wus2xM%v ARz6T{4nkJZX%Z&EduQmB!իCl}zUx,Ɩ!3QfpW&75ZuI}?((IkxwTrz^8uwϡ} d4EǛV c 7UZ(wKftGb_? OAiES)tNhafnz'>LN^?ugBJ"G >"-Bnli\4rWFJ}ʪPTfK. s٨j=w7 *HCΟ``áa6<{%$p)]1HQ @4HW D셹AA x]zWp/B4u6SH7`)A'2Sk%l<&xMgx+UzA2 0 cH2r@]h0m[$~$nuRHpCMJCVEnĜE\gTuIjO;^ 365NchiE %KPh >dv XvqL L~19p#78ڶR李"=X4s? EQ>v#_΍@Q!HrooKP}Dq};vu 8XgqU'M!YM:"d"|2kx#C>le!qB* ! ]FҙJݎ}ϋ IL%qʤfI}G^ŗX2h`"+3w  (/YNӗxTf):n1kn 3% i 4A }>`Q3j%QO?cRFLudOH6R5sCq3pC y,\؞^"d'Fxg@5cf 8+:#$ \<3Ċ%fgEL6!(4k"kP?960J:E; 4 $lA-hWg^L!/ X4XQ~].Mi DY*Nxc)Qv-bp)s"i/TzB6Z1lÐUy$F B=yDJAj&?mS1oI:>E 0 :(d<_=X$D!<4d^œ⌿*hJ<xtykgC1,%RY:NUD]%—3hP@ps\0p؀[E9?oq-xZd <-9.irŸ-tvsƘu0P.Ʌ7U::;RTjX`'! kڢ[JO ry5XJTs84byPI f 7S,(jo&l&(PY28BP4XoRhT킝xHVN]C57kM!Ν;& adgỶQp8a9WGlHirP%>N(#z)" z:ۺ.ȠS(* jmn IE/mLɋ-Ɯ؍y<+4̴5 L`~s|%2҇*22uX|K&?TMW&]V8x"XPt}g3ƈx|2Gj:(x ^, C]ūJ4!R"eTcj@^o+"꛼2fBpgmLV*d@-9/XDU"Q""DP{bh!qaah`6J^K@,z<~{}x8rGR!FV@ B l"heIq]pk3X.qUY C͠(֨k;*ȋoHvAդOKYJlG0_PfF#ӅѨ:pJaF1+BEjWn ; ژAڅC"L57ݤNZK["QH얝a :pJHpcO/dJqlp@!LƯܶu1;ۭZsrvV?8`b[ AJi[3v2&4 '|&od% _kZ꽳:tsKn +!qeӭ:$zyGt\ hWi$u!!5c(Bd&Ӎ~ u°sm 夭Wxh^_Ie?!FQf.z6ˑUH׸qq%98.,"j+,A)*(?o]]{6wzy ڌ0=M14h&z3FOSjFz4dbd2=!OP2kސzxF(ҡiFp 9= K6]RA\o2>glcRDLgj76>A6Gah-9uZX wy纼š 8ͨ o.C9z 9[sN6#}!F1b{Fn' NDC]A%Mev;(B X7eGl Ix9U)` ob4}b.ᕮP[mM9&.:`D*XfRmPR2Hʯ{>>c<<nY?.z*T=HظςF%qr){`ƪj8OrE%R~I튭hl-:B0vUES8*@pI;_-,i`7oM#rJjRt(I6uBYP- iaQ{^q"SuFy'!:ct){#i'(M.&AnpZ2PK5|f;:yЀ_/ f5q:\ =cp̩ ukGDR&Y/0eS?ɯb尻cEo5%]',/؏•u 'i8=L^ RYϥa $™vW=T ENAR/$$-4vf|@z/cim&D_A `nQ v )8kSPv4"LZ.PISyMh\HDi\2g:\[s; 1]_&Ho$SGqo!Vv~D r .h(&Kw"0u/ [.l(Ek iƒ/YϢ!)Te\ ۉD2 Xgfo y}E66x*7'ؼFQi + <!xe Upf 1֣uXd`+9Nu!KYutx XeӪ^f~ $J4@.#CГ(#0Wr6&me njB'XX++0 څq,RSXA(|ۍk,RɽEO<+qWJ31q~ƋdA%B[2AV0Q,}cv$9UɽAD r9Vx疽~QҌ)]7ڀ8d˨CSQQܣSpQ:ߪq]-sek- Gimu:U4+:Tj&Y(@pC`jFd< PT;"CIé-md@s :xE4hp"h- Jd:(حAׁ\ȞV-8Xȯ0ۇVo|<]e\!&9˂yϙ(%[4:_q*XN(\c[Mej# ~;a CᱵMTe@_sKLeT|g!tU',TqW L"D L0(ùoH{NpKVj޸[t[m=r÷na8I֫7Q͏mY%C|H=Do 4zVv{wbw$S R